CN102136151B - 一种光栅图像的矢量化方法 - Google Patents
一种光栅图像的矢量化方法 Download PDFInfo
- Publication number
- CN102136151B CN102136151B CN201110058581A CN201110058581A CN102136151B CN 102136151 B CN102136151 B CN 102136151B CN 201110058581 A CN201110058581 A CN 201110058581A CN 201110058581 A CN201110058581 A CN 201110058581A CN 102136151 B CN102136151 B CN 102136151B
- Authority
- CN
- China
- Prior art keywords
- color
- image
- pixel
- vector
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开了一种光栅图像的矢量化方法:首先,用数码相机拍摄实物的图像,把图像存储为bmp格式;然后,由Graph cuts分割算法通过人工交互消除图像的背景,把得到的图像存储为bmp格式;最后,用我们设计的改进的基于八叉树颜色量化的矢量化算法加上人工交互的方式对上一步输出的图像进行矢量化,把输出文件存储为svg格式。本发明的输出文件格式基于SVG,决定了由其设计的矢量图具有可移植性;矢量化的过程改进了基于八叉树颜色量化的矢量化算法,并且介入了人工交互,用该方法设计的矢量图比其它矢量化软件效果好。
Description
技术领域
本发明涉及一种光栅图像的矢量化方法。
背景技术
矢量图使用基本图元描述图形,这些基本图元可以是点、线、矩形、多边形、圆和弧线等,通过这些基本图元由数学计算得到图形,利用基本图元的颜色、形状、位置等信息控制矢量图的显示效果。光栅图像是像素的集合,由许多小方块一样的像素组成图像,像素的位置与颜色表现出图像颜色的阴影变化。在放大栅格图像时,像素间会出现明显的锯齿现象,而矢量图则不受分辨率的影响,可以任意放大而不失真。另外,矢量图还具有图形文件小、基本图元可以单独编辑、分辨率不依赖于输出设备等优点。现实中人们通过图像采集设备得到了大量的光栅图像,把光栅图像转化为矢量图是一项非常有意义的工作。
已经有一些相关的设计矢量图的算法和软件,主要的算法和应用分为以下几类:(1)基于梯度网格的方法。该方法用梯度网格作为基本图元,把图形划分为若干梯度网格,通过差值计算出网格间的颜色。Adobe公司的矢量图设计软件Illustrator采用了这种方法表示矢量图。用梯度网格来矢量化光栅图像的方法对表面光滑、纹理细节少的图像(如西红柿、玉佩等)有较好的效果,但对于自然界中的大量的纹理细节多的图像矢量化效果不佳,该方法对这些图像划分的网格过密,执行速度慢,输出文件大。(2)基于图像分割的方法。该方法先把图像分割为若干小区域,然后用曲线追踪出每个小区域的边界,同时给追踪出的每个小区域填充一种颜色。软件Adobe FlashCS4采用了这种方法矢量化光栅图像。该方法在对图像的分割中容易出现过分细分问题,对光栅图像的矢量化效果有待进一步提高。(3)基于八叉树颜色量化算法的方法。该方法先用八叉树颜色量化算法减少图像的颜色数,然后用曲线追踪出每一种颜色组成的区域。软件Inkscape采用了这种方法,对栅格图像矢量化的效果比较好。该方法中如果把图像量化成较多的颜色,可以得到比较好的矢量化效果,但文件输出比较大;如果把图像量化成较少的颜色,可以得到比较小的输出文件,但矢量化的效果又不能让人满意。
发明内容
本发明改进了基于八叉树颜色量化的矢量化算法,并且加了人工交互选色的过程,解决了在减少颜色数的基础下,达到比较好的矢量化效果的问题。同时,该方法在预处理中提取了图像中的前景,去除了与图像无关的信息,使得到的矢量图可以方便地应用于其它软件系统。
为实现上述目的,本发明采用如下技术方案:
一种光栅图像的矢量化方法,该方法的实现步骤如下:
(1)图像采集:用数码照像机采集实物的外观图像;
(2)图像分割:对采集的图像构造加权图,对加权图进行分割,得到图像的前景;
(3)优化分割结果:用户判断图像的前景是否得到完全提取,如果没有完全提取出来,则返回步骤(2)继续分割,反之继续执行步骤(4);
(4)颜色量化:对步骤(3)中得到的前景图像进行颜色量化;
(5)图像矢量化:分层追踪颜色量化后的图像中的每一种颜色的轮廓;
(6)优化矢量化结果:用户判断当前的结果是否能满足要求,如果颜色单调,不满足要求,则用鼠标交互增减颜色,执行(5);反之继续执行步骤(7);
(7)完成矢量图的设计,把结果输出为SVG矢量图文件。
步骤(2)中,所述图像分割的方法如下:
a)用鼠标大体标记图像中的前景和背景,对标记好前景和背景的图像构造一个加权图;
b)对加权图利用最大流最小割原理求出加权图的最小割,这个最小割就是分割出的前景的边界;
c)得到了去除了背景的图像。
步骤(3)中,所述优化分割结果的方法如下:
a)用鼠标人工标记希望标记为前景或希望标记为背景的图像区域;
b)根据增加的标记,重新用最大流最小割算法求出新的图像前景的边界;
c)重复该步骤,直到得到满意的分割图像。
步骤(4)中,所述颜色量化的方法如下:
a)把图像前景中的所有像素构成一个八叉树,八叉树叶子节点记录像素的数目;
b)每个叶子节点对应一种颜色,得到一个颜色表;
c)根据颜色间的距离,把前景图像中的像素颜色值映射为颜色表里的颜色值;
d)同时为颜色表建立一个计数器,用它记录颜色表中每种颜色的区域数;
e)得到了颜色量化后的图像。
步骤(5)中,所述图像矢量化的方法如下:
a)对于规定好追踪方向的某一种颜色,追踪得出一条闭合路径;
b)接着把闭合路径转化为多边形;
c)然后把得到的多边形用Bezier曲线表示,确定每一个闭合区域的颜色值;
d)输出矢量化结果。
所述步骤a)中追踪得出一组闭合路径的步骤如下:
a)给每个闭合路径设置一个填充值并取闭合路径的起点坐标;
b)计算出起点方向的左边的像素值,并把该像素作为初始像素p(i,j);
c)在像素p的八邻域内搜索p(i-1,j-1),p(i,j-1),p(i+1,j-1),p(i-1,j),p (i+1,j),p (i-1,j+1),p (i,j+1),p (i+1,j+1);
d)若在八邻域内搜索到某一像素的值等于p(i,j)处的像素值,则把原图中该点的颜色加入容器Vector<RGB>,该点加入到队列Queue<p>中;判断完毕后,p(i,j)标记为已经搜索;
e)Queue<p>出队列,赋值给q,继续(3)中的步骤;直到队列为空;
f)计算出Vector<RGB>的中值赋给该区域。
步骤(6)中,所述用鼠标交互增减颜色的过程如下:加色时,把鼠标选取的颜色添加到颜色表中;减色时,删除颜色板中与鼠标选取的颜色距离最近的颜色。颜色表是一个数组,数组的每个元素存储一个颜色值。
本发明提供了一种设计效果好、输出文件可移植性强的栅格图像矢量化方法。该方法首先用数码照像机获取图像;然后用分割算法得到图像的前景;再用我们改进的基于八叉树颜色量化的矢量化算法,加上人工交互选色的方法矢量化图像;最后把矢量化结果输出为SVG格式。
本发明的有益效果:本发明考虑了图像的采集,图像背景的消除,图像的矢量化,输出结果表示为SVG格式。图像的背景消除介入了人工交互,在简单的交互下可以得到准确的分割结果。图像矢量化算法中改进了现有的追踪方法,可以人工添加或删除颜色,这样可以在提高矢量化效果的同时控制输出文件的大小。输出的矢量图遵循基于XML的SVG标准,具有数据独立性,输出结果可以用于不同的软件系统。
附图说明
图1为本发明的实现矢量图的流程图;
图2a为万用表原图;
图2b为图2a分割出的前景图;
图3a为万用表前景图初次矢量化结果;
图3b为图3a的局部放大图;
图4a为万用表前景图人工交互后的矢量化结果;
图4b为图4a的局部放大图。
具体实施方式
下面结合实例和附图对本发明作进一步的说明:
可缩放矢量图形SVG(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。SVG由国际互联网联盟(W3C)制定,目前的成熟版本是SVG1.1。它是一个开放的标准,可用于描述静态或动态的矢量图形。在计算机可视化的应用领域,SVG有着独特的优势:(1)SVG是一种矢量图形文件格式标准,它表示的图形可以任意缩放而不破坏图形的清晰度和细节;(2)SVG有强大的作图能力,用矩形、椭圆、直线、折线、多边形及路径等元素描述矢量图像;(3)SVG是基于XML标准设计的,可以建立与其它技术间的联系。由于SVG有以上优点,我们把设计的矢量图表示为SVG格式。
图1为本发明的优选实施例,如图所示,本发明的实现过程如下:
Step1:图像采集。
用数码照像机采集实物的外观图像,把图像存储为BMP格式,记为x1.bmp;
Step2:图像分割。
通过人工交互大体标记图像中的前景和背景,把图像的每个像素作为顶点,相邻像素间的连线作为边,再增加一个源节点和一个汇节点,以上两个节点和图像上的每个像素间建立一条边,这样就构建了一个加权图。对于一幅图像A,按如下方式构建加权图:把图像的每个像素作为一个顶点,得到顶点的集合P,再增加源点S和汇点T,得到顶点的集合V=P∪{S,T};每个像素与四邻域内的像素相连构成边,得到边的集合N,源点S和汇点T分别与图像上的每个像素对应的顶点相连构成边,得到边的集合这样就得到一个加权图G=(V,E)。根据人工标记的图像前景与背景之间的关系给图中的每条边赋一个权值。
在以上加权图中根据最大流最小割原理求出图的最小割,这个最小割就是分割出的前景的边界。设网络G=(V,E,C)的顶点集V是两个不交的部分S,S′的并集,使得源点在S中,汇点在S′中。若E′是E的最小子集,使得G中去掉E′后成为两个不相交的子图G1(S,E1),G2(S′,E2),分别以S,S′为顶点集,则称E′是关于(S,S′)的割集。割集E′中所有始点在S,终点在S′的边的容量之和称为割集(S,S′)的容量。对于不同的S和S′就有不同的割集,其中割集容量最小的割集称为网络的最小割集(简称最小割)。根据定理网络的最大流等于最小割的割集容量,可知得到了网络的最大流就得到了对应的最小割的容量。最小割可以把一副图像分成两部分。
该步骤中得到了去除了背景的图像x2.bmp。
Step3:人工交互优化分割结果。
评估去除背景的效果,如不满意继续分割。用鼠标人工标记希望标记为前景或希望标记为背景的图像区域。根据增加的标记,重新给有向图赋权值,用最大流最小割算法求出新的图像前景边界。重复该步骤直到得到满意的效果;
Step4:颜色量化。
把上一步中得到的图像用八叉树颜色量化算法进行量化。把图像中每个像素的R、G、B值的最高位二进制数分别取出来构成一个大于等于0小于等于7的数x7,那么根节点的第x7个孩子节点c就标记为1;R、G、B值的次高位二进制数构成的数x6,c的孩子节点的第x6个孩子就标记为1;用同样的方法处理该像素的其它二进制位构成八叉树,八叉树叶子节点记录像素的数目。原图像中可能有成百上千种颜色,最后取出计数最多的256个叶子节点(或根据用户的需要指定量化颜色数),每个叶子节点对应一种颜色,得到一个颜色表ColorTable。根据颜色间的距离,把原图像中的每个像素的值和颜色表ColorTable中的每个颜色值做比较,把原图像当前像素的值替换为与颜色表ColorTable中的某一颜色距离差最小的颜色值。同时为颜色表ColorTable建立一个相应的计数器count。计数器中的第i个值count[i]记录颜色表ColorTable中第i种颜色的区域数。计数器count用于提高下面的矢量化效果。该步骤中得到了颜色量化后的图像。
Step5:图像矢量化。
分层追踪颜色量化后的图像中的每一种颜色的轮廓。按照Step4中count[i]中的值,由大到小追踪每一种颜色的轮廓。首先追踪count中值最大的颜色;然后追踪count中值次大的颜色,此时的追踪面积要包括上一步中面积;然后追踪count中排第三的颜色,同样追踪时加上上一步的追踪面积;如此一直追踪完ColorTable中的所有颜色。对于某一种颜色的追踪,首先规定好追踪方向,例如该颜色一直位于追踪方向的左侧,这样对该颜色可以追踪出一组闭合路径的集合;给每个闭合路径设置一个填充值:
(1)取闭合路径的起点坐标。设置容器Vector<RGB>,它是一个数组,它的每个元素可以记录一个像素的颜色值;Queue<p>是一个队列,它的每个元素记录了一个像素的位置和这个像素的颜色值。
(2)计算出该点方向的左边的像素值,把该像素作为初始像素p(i,j)。
(3)在像素p的八邻域内搜索p(i-1,j-1),p(i,j-1),p(i+1,j-1),p(i-1,j),p(i+1,j),p(i-1,j+1),p(i,j+1),p(i+1,j+1)。在颜色量化结果图中若以上某一像素的值等于p(i,j)处的像素值,把进行颜色量化之前的图像中该点的颜色加入容器Vector<RGB>,该点加入到队列Queue<p>中。判断完当前像素的八邻域内的每一个像素后,p(i,j)标记为已经搜索;
(4)Queue<p>出队列,赋值给q,继续(3)中的步骤;直到队列为空。
(5)计算出Vector<RGB>的中值赋给该区域。接着把闭合路径转化为多边形;然后,把得到的多边形用Bezier曲线表示;输出矢量化结果。
Step6:人工交互优化矢量化结果。
评估矢量化效果,如不满意用鼠标交互添加颜色。加色时,把鼠标选取的颜色添加到Step4中的颜色表ColorTable中;减色时,删除Step4中的颜色表ColorTable中与鼠标选取的颜色距离最近的颜色。然后重新执行step5。重复该步骤直到得到满意的结果。
Step7:完成矢量图的设计,把输出文件保存为SVG格式,记为x3.svg。
Claims (7)
1.一种光栅图像的矢量化方法,其特征在于,该方法的实现步骤如下:
(1)图像采集:用数码照像机采集实物的外观图像;
(2)图像分割:对采集的图像构造加权图,对加权图进行分割,得到图像的前景;
(3)优化分割结果:用户判断图像的前景是否得到完全提取,如果没有完全提取出来,则返回步骤(2)继续分割,反之继续执行步骤(4);
(4)颜色量化:对步骤(3)中得到的前景图像进行颜色量化;
(5)图像矢量化:分层追踪颜色量化后的图像中的每一种颜色的轮廓;
(6)优化矢量化结果:用户判断当前的结果是否能满足要求,如果颜色单调,不满足要求,则用鼠标交互增减颜色,执行(5);反之继续执行步骤(7);
(7)完成矢量图的设计,把结果输出为SVG矢量图文件。
2.如权利要求1所述的一种光栅图像的矢量化方法,其特征在于,步骤(2)中,所述图像分割的方法如下:
a)用鼠标大体标记图像中的前景和背景,对标记好前景和背景的图像构造一个加权图;
b)对加权图利用最大流最小割原理求出加权图的最小割,这个最小割就是分割出的前景的边界;
c)得到了去除了背景的图像。
3.如权利要求1所述的一种光栅图像的矢量化方法,其特征在于,步骤(3)中,所述优化分割结果的方法如下:
a)用鼠标人工标记希望标记为前景或希望标记为背景的图像区域;
b)根据增加的标记,重新用最大流最小割算法求出新的图像前景的边界;
c)重复该步骤,直到得到满意的分割图像。
4.如权利要求1所述的一种光栅图像的矢量化方法,其特征在于,步骤(4)中,所述颜色量化的方法如下:
a)把图像前景中的所有像素构成一个八叉树,八叉树叶子节点记录像素的数目;
b)每个叶子节点对应一种颜色,得到一个颜色表;
c)根据颜色间的距离,把前景图像中的像素颜色值映射为颜色表里的颜色值;
d)同时为颜色表建立一个计数器,用它记录颜色表中每种颜色的区域数;
e)得到了颜色量化后的图像。
5.如权利要求1所述的一种光栅图像的矢量化方法,其特征在于,步骤(5)中,所述图像矢量化的方法如下:
a)对于规定好追踪方向的某一种颜色,追踪得出一条闭合路径;
b)接着把闭合路径转化为多边形;
c)然后把得到的多边形用Bezier曲线表示,确定每一个闭合区域的颜色值;
d)输出矢量化结果。
6.如权利要求1所述的一种光栅图像的矢量化方法,其特征在于,步骤(6)中,所述用鼠标交互增减颜色的过程如下:加色时,把鼠标选取的颜色添加到颜色表中;减色时,删除颜色表中与鼠标选取的颜色距离最近的颜色;颜色表是一个数组,数组的每个元素存储一个颜色值。
7.如权利要求5所述的一种光栅图像的矢量化方法,其特征在于,所述步骤a)中追踪得出一组闭合路径的步骤如下:
1)给每个闭合路径设置一个填充值并取闭合路径的起点坐标;
2)计算出起点方向的左边的像素值,并把该像素作为初始像素p(i,j);
3)在像素p的八邻域内搜索p(i-1,j-1),p(i,j-1),p(i+1,j-1), p(i-1,j),p(i+1,j),p(i-1,j+1),p(i,j+1),p(i+1,j+1);
4)若在八邻域内搜索到某一像素的值等于p(i,j)处的像素值,则把原图中该点的颜色加入容器Vector<RGB>,该点加入到队列Queue <p>中;判断完毕后,p(i,j)标记为已经搜索;其中:容器Vector<RGB>,它是一个数组, 它的每个元素可以记录一个像素的颜色值;Queue <p>是一个队列,它的每个元素记录了一个像素的位置和这个像素的颜色值;
5)Queue <p>出队列,赋值给p,继续3)中的步骤;直到队列为空;
6)计算出Vector<RGB>的中值赋给该区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110058581A CN102136151B (zh) | 2011-03-11 | 2011-03-11 | 一种光栅图像的矢量化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110058581A CN102136151B (zh) | 2011-03-11 | 2011-03-11 | 一种光栅图像的矢量化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102136151A CN102136151A (zh) | 2011-07-27 |
CN102136151B true CN102136151B (zh) | 2012-10-24 |
Family
ID=44295924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110058581A Expired - Fee Related CN102136151B (zh) | 2011-03-11 | 2011-03-11 | 一种光栅图像的矢量化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102136151B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105321161B (zh) * | 2014-07-18 | 2019-06-14 | 腾讯科技(深圳)有限公司 | 一种图像处理方法和装置 |
CN105550363B (zh) * | 2016-01-06 | 2019-03-22 | 北京联合大学 | 基于xgml的图像半结构化表示方法 |
CN105741273A (zh) * | 2016-01-25 | 2016-07-06 | 天津天大求实电力新技术股份有限公司 | 一种基于色彩分割的控规图纸自动矢量化方法及系统 |
CN109671039B (zh) * | 2018-12-27 | 2023-05-30 | 北京邮电大学世纪学院 | 基于分层特征的图像矢量化方法 |
CN113112570B (zh) * | 2021-05-12 | 2022-05-20 | 北京邮电大学 | 一种基于感知驱动的矢量化效果评价方法 |
CN114092606A (zh) * | 2021-11-30 | 2022-02-25 | 北京字节跳动网络技术有限公司 | 一种图像处理方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1333511A (zh) * | 2000-07-14 | 2002-01-30 | 纬衡知识产权有限公司 | 光栅图像矢量化的计算机自动处理 |
CN101246592A (zh) * | 2008-03-18 | 2008-08-20 | 清华大学 | 彩色光栅图像或视频的矢量化方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8312049B2 (en) * | 2003-06-24 | 2012-11-13 | Microsoft Corporation | News group clustering based on cross-post graph |
US20070133031A1 (en) * | 2005-12-08 | 2007-06-14 | Canon Kabushiki Kaisha | Image processing apparatus and image processing method |
-
2011
- 2011-03-11 CN CN201110058581A patent/CN102136151B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1333511A (zh) * | 2000-07-14 | 2002-01-30 | 纬衡知识产权有限公司 | 光栅图像矢量化的计算机自动处理 |
CN101246592A (zh) * | 2008-03-18 | 2008-08-20 | 清华大学 | 彩色光栅图像或视频的矢量化方法 |
Non-Patent Citations (2)
Title |
---|
李小斌等.基于加权割的图像分割.《电子学报》.2007,第36卷(第1期),全文. * |
杨云,朱长青,孙群.彩色扫描地图中线目标的矢量化方法.《计算机辅助设计与图形学学报》.2009,第21卷(第4期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN102136151A (zh) | 2011-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102136151B (zh) | 一种光栅图像的矢量化方法 | |
CN107025685B (zh) | 拓扑感知下的机载建筑屋顶点云建模方法 | |
CN101510310B (zh) | 基于纹理聚类约束的高分辨率遥感图像分割方法 | |
CN102938161B (zh) | 一种基于Mean Shift的三维形状自动分割方法 | |
CN101751449A (zh) | 一种用于地理信息系统中的空间叠加分析方法和系统 | |
CN106097252B (zh) | 基于图Graph模型的高光谱图像超像素分割方法 | |
Chen et al. | Optimal segmentation of a high-resolution remote-sensing image guided by area and boundary | |
Shen et al. | A new approach to simplifying polygonal and linear features using superpixel segmentation | |
CN109272467A (zh) | 一种基于多尺度边缘线索的层次化图像分割方法 | |
Stanislawski et al. | Generalisation operators | |
CN103955909A (zh) | 一种基于MapGISK9图像融合制作专题图的方法及系统 | |
Dyken et al. | Simultaneous curve simplification | |
CN112066997A (zh) | 高清航线地图的导出方法及系统 | |
CN104036294A (zh) | 基于光谱标记的多光谱遥感图像自适应分类方法 | |
Wallinger et al. | Edge-path bundling: A less ambiguous edge bundling approach | |
CN105913451B (zh) | 一种基于图模型的自然图像超像素分割方法 | |
CN103871089A (zh) | 一种基于融合的图像超像素网格化方法 | |
Beilschmidt et al. | A linear-time algorithm for the aggregation and visualization of big spatial point data | |
CN112097776A (zh) | 用于提高航线地图渲染效率的方法及系统 | |
CN108875760A (zh) | 聚类方法和装置 | |
Danovaro et al. | Multiresolution morse triangulations | |
Gunpinar et al. | Generation of bi-monotone patches from quadrilateral mesh for reverse engineering | |
CN116310666A (zh) | 一种遥感图像自监督训练方法、装置和电子设备 | |
Shen et al. | Raster-based method for building selection in the multi-scale representation of two-dimensional maps | |
Song et al. | Data reduction for point cloud using octree coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121024 Termination date: 20130311 |