1.一种基于改进漫水填充算法的栅格图像矢量化方法,其特征在于:包括以下步骤,步骤S10:取原始图像,对其进行图像锐化,得到包含边缘信息的图像;步骤S20:点击原始图像,以步骤S10得到的图像作为掩模,通过漫水填充算法,对相应图块进行填充;步骤S30:利用空洞填充算法对步骤S20得到的图块进行修补;步骤S40:根据步骤S30得到的图像,利用Freeman链码轮廓跟踪算法,找到图块轮廓的坐标点集合;步骤S50:根据步骤S40得到的坐标点集合,利用多边形拟合算法,对坐标点数目抽稀,得到关键坐标点集合,并将其之间的连线有序绘制出来,形成轮廓,得到最终的矢量化图像。本发明具有良好的栅格图像矢量化的效果,且相比于人工多处描点的栅格矢量化过程,结合了改进的漫水填充方法与其他多种图像处理算法,实现了自动的栅格图像矢量化。
其总体模型的算法步骤为:
第(1)步:读取原始图像记作origin.并且读出图像高度记作h,图像宽度记作w.第(2)步:将origin转为灰度图像gray.计算公式为gray(y,x)=w1·origin(y,x,0)+w2·origin(y,x,1)+w3·origin(y,x,2),第(3)步:对gray进行高斯模糊,得到的图像记作guass.计算公式为第(4)步:利用索贝尔算子,对guass进行运算,获取边缘信息,得到的图像记作sobel.计算公式为第(5)步:将sobel作为掩模,对origin进行漫水填充,得到的图像记作rawBlock;
第(6)步:对rawBlock进行空洞填充,得到的图像记作processedBlock;
第(7)步:利用Freeman链码轮廓跟踪算法,找到processedBlock轮廓的坐标点集合,记作rawCoords;
第(8)步:利用多边形拟合算法,对rawCoords数目抽稀,得到关键坐标点集合,记作processedCoords,并将其之间的连线有序绘制出来,形成轮廓,得到最终的矢量化图像。
以上表达式中各参数和算符的意义为:
gray(y,x)表示灰度图像gray第y行第x列的像素值。
origin(y,x,0)表示真彩图像origin第y行第x列第0通道像素值。origin(y,x,1)、origin(y,x,2)以此类推。
w1、w2、w3是利用大量图片计算出得出的经验值。
表示图像的卷积运算。
2.根据权利要求1所述的一种基于改进漫水填充算法的栅格图像矢量化方法,其特征在于:第(5)步与第(6)步相结合构成了一种改进的漫水填充算法。该算法利用空洞填充的办法,能够对漫水填充后不理想的结果,进行二次填充,达到图像修补的作用。
该算法漫水填充部分的详细步骤为:
第(1)步:设值val等于15;
第(2)步:将sobel作为掩模图像,并获取点击原始图像origin后的起始坐标点,记作(seedX,seedY);
第(3)步:建立一张空白图像rawBlock;
第(4)步:建立空栈stack,并将(seedX,seedY)压入栈中;
第(5)步:如果stack为空栈,则转到第(13)步;否则,转到第(6)步;
第(6)步:从stack栈顶弹出一个坐标点,记作(x,y);
第(7)步:rawBlock(y,x)填色;
第(8)步:如果origin(seedY,seedX)与origin(y,x-1)像素值差小于val,将(x-1,y)压入stack;
第(9)步:如果origin(seedY,seedX)与origin(y,x+1)像素值差小于val,将(x+1,y)压入stack;
第(10)步:如果origin(seedY,seedX)与origin(y-1,x)像素值差小于val,将(x,y-1)压入stack;
第(11)步:如果origin(seedY,seedX)与origin(y+1,x)像素值差小于val,将(x,y+1)压入stack;
第(12)步:返回第(5)步;
第(13)步:结束。
该算法空洞填充部分的详细步骤为:
第(1)步:设计数值i等于0,设值ratio为0.2;
第(2)步:用最小的矩形去裁剪rawBlock中的图块,得到的图像记作block,图像高记作blockH;
第(3)步:如果i小于blockH,则转到第(4)步;否则,转到第(8)步;
第(4)步:找到图像第i行里,第一个白色像素索引记作start,最后一个白色像素索引记作end;
第(5)步:取出start和之end间这一段,记作line,表达式为line=block(i,j),j∈[start,end]ΙZ第(6)步:找出line中的所有一段段的黑色像素集合,记作blackSet,对于blackSet中每一个元素blackElement,若其长度与line长度比值小于ratio,则将其填充为白色;否则不做操作。
第(7)步:计数值i增加1,并返回第(3)步;
第(8)步:结束。