发明名称 采用模糊聚类与随机游走的计算机辅助乱针绣制作方法
摘要 本发明公开了采用模糊聚类与随机游走的计算机辅助乱针绣制作方法,包括以下步骤:步骤1,定义了适合乱针绣针迹特点的参数化交叉针模型,并且通过枚举实验的方法确定了交叉针参数与图像特征的映射关系;步骤2,以输入的彩色图像作为参考图片,针对给定图像生成交叉针集合,对交叉针集合包含的交叉针采用基于模糊聚类与随机游走算法进行聚类,并且根据步骤1得到的映射关系调整交叉针参数得到针迹序列;步骤3,将针迹坐标转换为电脑刺绣机所需坐标,并将其输入电脑刺绣机,得到相应乱针绣绣品。本发明对乱针绣的机械化标准化生产具有重要意义。
申请公布号 CN103793549B 申请公布日期 2016.06.22
申请号 CN201310539428.9 申请日期 2013.11.04
申请人 南京大学 发明人 孙正兴;杨克微;周杰;胡佳高
分类号 G06F17/50(2006.01)I;G06T7/00(2006.01)I;G06K9/62(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 江苏圣典律师事务所 32237 代理人 胡建华
主权项 采用模糊聚类与随机游走的计算机辅助乱针绣制作方法,其特征在于,包括以下步骤:步骤一:确定交叉针参数与图像特征映射关系:包括定义交叉针参数,以及确定交叉针参数与图像特征之间的映射关系;步骤二:交叉针聚类及针迹序列生成:针对给定图像生成交叉针集合,对交叉针集合包含的交叉针采用基于模糊聚类与随机游走算法进行聚类,依据步骤一得到的映射关系设定每一个类别的交叉针参数,得到乱针绣绣品的针迹序列;步骤三:将步骤二中得到的乱针绣绣品针迹序列转换为电脑刺绣机使用的以毫米为单位的坐标格式,将其输入电脑刺绣机,从而得到给定图像对应的乱针绣绣品;步骤一包括:步骤11:定义交叉针参数;步骤12:采用枚举实验方法确定映射关系:确定交叉针参数与图像特征之间的映射关系;步骤11中,所述定义交叉针参数具体为:将两根相交的绣线定义为一个交叉针,每个交叉针包含参数p<sub>i</sub>、θ<sub>i</sub>、β<sub>i</sub>、ξ<sub>i</sub>以及γ<sub>i</sub>:p<sub>i</sub>表示两条绣线的交叉点,p<sub>i</sub>控制交叉针的位置,下标i表示第i个交叉针;θ<sub>i</sub>为交叉针针迹方向即相交绣线的角平分线方向,θ<sub>i</sub>控制交叉针的朝向,θ<sub>i</sub>的取值范围在0°~180°之间;β<sub>i</sub>为交叉针夹角即两条绣线与角平分线的夹角,β<sub>i</sub>控制两根绣线之间的交叉角度,取值范围在0°~45°之间;ξ<sub>i</sub>表示交叉针长度,ξ<sub>i</sub>控制相互交叉的两根等长度绣线的长度,取值范围在10~40个像素之间;γ<sub>i</sub>为交叉针混乱度,用来控制交叉针随机变动的混乱程度;每根绣线的朝向在[‑45.0,45.0]*γ<sub>i</sub>的范围内随机变动,γ<sub>i</sub>的取值范围在0~1之间;步骤12中,从训练图像库中随机选取一组图像,对于每幅图像选择位于图像左上角100×100大小的区域作为实验所用图像区域,采用枚举实验方法确定映射关系具体为:步骤121:确定交叉针长度ξ<sub>i</sub>与图像显著性特征映射关系;步骤122:确定交叉针夹角β<sub>i</sub>与图像颜色分布特征映射关系;步骤123:确定交叉针混乱度γ<sub>i</sub>与图像矢量场混乱度映射关系;步骤121中,确定交叉针长度ξ<sub>i</sub>与图像显著性特征映射关系具体为:步骤121a:任意选择一个图像区域,提取其中每个像素点所对应的图像显著性特征,并求取图像区域中所有像素点的图像显著性特征的平均值;步骤121b:令计数参数length=0;步骤121c:如果计数参数length≤100,采用Sobel算子计算图像区域在水平轴x和垂直轴y方向上的图像梯度,否则转步骤121m;步骤121d:计算每个图像区域的交叉针针迹总体方向θ<sup>a</sup>;步骤121e:计算每个图像区域的交叉针整体夹角β<sup>a</sup>;步骤121f:在图像区域范围内生成方向为θ<sup>a</sup>+β<sup>a</sup>和θ<sup>a</sup>‑β<sup>a</sup>相互交叉的两组平行线段,两组平行线段内相互平行的平行线段之间的间隔为d=12*(1‑ρ)/(1+ρ),其中ρ为平行线段之间的疏密程度的控制参数;步骤121g:计算图像区域的周长,以周长的十分之一为单位长度将两组平行线段内的每条平行线段各自分为一组线段;步骤121h:将得到的线段中两两之间存在交叉的组合成为一个交叉针<img file="FDA0000954805840000021.GIF" wi="94" he="64" />得到交叉针集合Λ<sup>a</sup>,其中交叉针<img file="FDA0000954805840000022.GIF" wi="60" he="71" />的中心点p<sub>i</sub>为两条线段的交叉点,组成交叉针的两条绣线方向分别为θ<sup>a</sup>+β<sup>a</sup>与θ<sup>a</sup>‑β<sup>a</sup>,即交叉针<img file="FDA0000954805840000023.GIF" wi="55" he="63" />的朝向θ<sub>i</sub>=θ<sup>a</sup>,交叉针<img file="FDA0000954805840000024.GIF" wi="60" he="63" />的夹角β<sub>i</sub>=β<sup>a</sup>,每根交叉针的绣线颜色设定为其中心点所对应的图像区域中的颜色;步骤121i:将每个交叉针<img file="FDA0000954805840000025.GIF" wi="61" he="68" />的参数调整为ξ<sub>i</sub>=30*length/100+10,β<sub>i</sub>=10,γ<sub>i</sub>=0.1;步骤121j:将交叉针集合Λ<sup>a</sup>绘制在白色画布上,得到交叉针集合Λ<sup>a</sup>所对应的绘制结果图像,并计算图像区域和绘制结果图像所对应的图像细节特征图像;步骤121k:计算图像区域和绘制结果图像所对应的图像细节特征图像之间的差异值<img file="FDA0000954805840000031.GIF" wi="143" he="79" />步骤121l:对计数参数进行累加赋值length=length+1,转步骤121c;步骤121m:求取所有差异值<img file="FDA0000954805840000032.GIF" wi="116" he="78" />中最小的差异值所对应的交叉针长度ξ<sub>i</sub>,转步骤121a直到所有实验所用图像区域都处理完;步骤121n:得到每个实验所用图像区域所对应的最优交叉针长度,采用指数函数模型对结果进行函数拟合,得到函数拟合结果;步骤122中,确定交叉针夹角β<sub>i</sub>与图像颜色分布特征映射关系具体为:步骤122a:任意选择一个图像区域,采用Sobel算子计算图像区域在水平轴x和垂直轴y方向上的图像梯度,根据图像梯度计算图像区域内所有像素的图像颜色分布特征,并对所有像素的图像颜色分布特征求平均值得到图像区域的颜色分布特征;步骤122b:令计数参数beta=0;步骤122c:如果计数参数beta≤100,计算每个图像区域的交叉针针迹总体方向θ<sup>b</sup>,否则转步骤122l;步骤122d:计算每个图像区域的交叉针整体夹角β<sup>b</sup>;步骤122e:在图像区域范围内生成方向为θ<sup>b</sup>+β<sup>b</sup>和θ<sup>b</sup>‑β<sup>b</sup>相互交叉的两组平行线段,两组平行线段内相互平行的平行线段之间的间隔为d=12*(1‑ρ)/(1+ρ);步骤122f:计算图像区域的周长,以周长的十分之一为单位长度将两组平行线段内的每条平行线段各自分为一组线段;步骤122g:将得到的线段中两两之间存在交叉的组合成为一个交叉针<img file="FDA0000954805840000033.GIF" wi="87" he="74" />得到交叉针集合Λ<sup>b</sup>,其中交叉针<img file="FDA0000954805840000034.GIF" wi="60" he="76" />的中心点p<sub>i</sub>为两条线段的交叉点,组成交叉针的两条绣线方向分别为θ<sup>b</sup>+β<sup>b</sup>与θ<sup>b</sup>‑β<sup>b</sup>,即交叉针<img file="FDA0000954805840000035.GIF" wi="62" he="70" />的朝向θ<sub>i</sub>=θ<sup>b</sup>,交叉针<img file="FDA0000954805840000036.GIF" wi="58" he="71" />的夹角β<sub>i</sub>=β<sup>b</sup>,每根交叉针的绣线颜色设定为其中心点所对应的图像区域中的颜色;步骤122h:将每个交叉针<img file="FDA0000954805840000037.GIF" wi="56" he="70" />的参数调整为ξ<sub>i</sub>=20,β<sub>i</sub>=45*beta/100,γ<sub>i</sub>=0.1;步骤122i:将交叉针集合Λ<sup>b</sup>绘制在白色画布上,得到交叉针集合Λ<sup>b</sup>所对应的绘制结果图像,并分别计算图像区域和绘制结果图像所对应的图像颜色直方图;步骤122j:计算图像区域和绘制结果图像所对应的图像颜色直方图之间的卡方差<img file="FDA0000954805840000041.GIF" wi="123" he="71" />步骤122k:对计数参数进行累加赋值beta=beta+1,转步骤122c;步骤122l:求取所有卡方差<img file="FDA0000954805840000042.GIF" wi="95" he="71" />中最小的差异值所对应的交叉针夹角,转步骤122a直到所有实验所用图像区域都处理完;步骤122m:得到每个实验所用图像区域所对应的最优交叉针夹角β<sub>i</sub>,采用指数函数模型对结果进行函数拟合,得到函数拟合结果;步骤123中,确定交叉针混乱度γ<sub>i</sub>与图像矢量场混乱度映射关系具体为:步骤123a:任意选择一个图像区域,提取图像区域的矢量场,对图像区域内所有像素的矢量场混乱度求平均值得到图像区域的矢量场混乱度;步骤123b:令计数参数gama=0;步骤123c:如果gama≤100,采用Sobel算子计算图像区域在水平轴x和垂直轴y方向上的图像梯度,否则转步骤123m;步骤123d:计算每个图像区域的交叉针针迹总体方向θ<sup>c</sup>;步骤123e:计算每个图像区域的交叉针整体夹角β<sup>c</sup>;步骤123f:在图像区域范围内生成方向为θ<sup>c</sup>+β<sup>c</sup>和θ<sup>c</sup>‑β<sup>c</sup>相互交叉的两组平行线段,两组平行线段内相互平行的平行线段之间的间隔为d=12*(1‑ρ)/(1+ρ);步骤123g:计算图像区域的周长,以周长的十分之一为单位长度将两组平行线段内的每条平行线段各自分为一组线段;步骤123h:将得到的线段中两两之间存在交叉的组合成为一个交叉针<img file="FDA0000954805840000043.GIF" wi="87" he="63" />得到交叉针集合Λ<sup>c</sup>,其中交叉针<img file="FDA0000954805840000044.GIF" wi="62" he="68" />的中心点p<sub>i</sub>为两条线段的交叉点,组成交叉针的两条绣线方向分别为θ<sup>c</sup>+β<sup>c</sup>与θ<sup>c</sup>‑β<sup>c</sup>,即交叉针<img file="FDA0000954805840000045.GIF" wi="62" he="63" />的朝向θ<sub>i</sub>=θ<sup>c</sup>,交叉针<img file="FDA0000954805840000046.GIF" wi="68" he="71" />夹角β<sub>i</sub>=β<sup>c</sup>,每根交叉针的绣线颜色设定为其中心点所对应的图像区域中的颜色;步骤123i:将每个交叉针<img file="FDA0000954805840000053.GIF" wi="60" he="67" />的参数调整为ξ<sub>i</sub>=20,β<sub>i</sub>=20,γ<sub>i</sub>=gama/100;步骤123j:将交叉针集合Λ<sup>c</sup>绘制在白色画布之上,得到交叉针集合Λ<sup>c</sup>所对应的绘制结果图像;步骤123k:计算图像区域与绘制结果图像之间的色差<img file="FDA0000954805840000051.GIF" wi="134" he="78" />步骤123l:对计数参数进行累加赋值gama=gama+1,转步骤123c;步骤123m:求取所有色差<img file="FDA0000954805840000052.GIF" wi="108" he="79" />中最小的差异值所对应的交叉针混乱度γ<sub>i</sub>,转步骤123a直到所有实验所用图像区域都处理完;步骤123n:得到每个实验所用图像区域对应的最优交叉针混乱度γ<sub>i</sub>,采用指数函数模型对结果进行函数拟合,得到函数拟合结果;步骤二中,交叉针聚类及针迹序列生成具体包括:步骤21:将给定图像分割成为不同的对象区域,每个对象区域为一组像素点集合,集合中任意像素点至少与该集合中另一像素点相邻;步骤22:提取每个对象区域的矢量场和显著性特征图像;步骤23:对于每一个对象区域,采用Sobel算子计算对象区域在水平轴x和垂直轴y方向上的图像梯度;步骤24:计算每个对象区域的交叉针针迹总体方向θ;步骤25:计算每个对象区域的交叉针整体夹角β;步骤26:在对象区域范围内生成方向为θ+β和θ‑β相互交叉的两组平行线段,两组平行线段内相互平行的平行线段之间的间隔为d=12*(1‑ρ)/(1+ρ),其中ρ为平行线段之间的疏密程度的控制参数;步骤27:计算对象区域的周长,以周长的十分之一为单位长度将两组平行线段内的每条平行线段各自分为一组线段;步骤28:将得到的线段中两两之间存在交叉的组合成为一个交叉针Λ<sub>i</sub>,得到交叉针集合Λ,其中交叉针的中心点p<sub>i</sub>为两条线段的交叉点,组成交叉针的两条绣线方向分别为θ+β与θ‑β,即交叉针针迹总体方向θ<sub>i</sub>=θ,交叉针夹角β<sub>i</sub>=β;步骤29:建立交叉针集合Λ的空间拓扑关系,得到交叉针集合Λ的邻接矩阵A;步骤210:对交叉针集合中每一个交叉针Λ<sub>i</sub>,分别提取其中心点所对应的图像特征,包括图像显著性特征、图像颜色分布特征以及图像矢量场混乱度,得到每个交叉针所对应的特征向量x<sub>i</sub>,i=1,2,...,N,N为交叉针集合Λ中总的交叉针数目,每个特征向量x<sub>i</sub>的维度h=3分别为x<sub>i</sub>={x<sub>i1</sub>,x<sub>i2</sub>,x<sub>i3</sub>},其中x<sub>i1</sub>表示交叉针Λ<sub>i</sub>中心点所对应的图像显著性特征,x<sub>i2</sub>表示交叉针Λ<sub>i</sub>中心点所对应的图像颜色分布特征,x<sub>i3</sub>表示交叉针Λ<sub>i</sub>中心点所对应的矢量场混乱度;步骤211:采用基于模糊聚类与随机游走算法对交叉针进行聚类,得到每个交叉针Λ<sub>i</sub>对应的类别L<sub>i</sub>,L<sub>i</sub>∈1~K,其中K为聚类数目;步骤212:根据每个交叉针对应的类别,按照步骤一得到的映射关系重新调整每个交叉针的针法参数,得到调整后的交叉针集合Λ′;步骤213:根据交叉针集合Λ′得到每根绣线的起始点和终止点,创建未排序的针迹序列,从而获取对象区域的未排序的针迹序列stitches;步骤214:对未排序针迹序列stitches按照其绣线覆盖面积的图像显著性大小进行排序,得到重新排列的针迹序列;步骤29中,建立交叉针集合Λ的空间拓扑关系具体包括:步骤29a:对于交叉针集合中的每一个交叉针Λ<sub>i</sub>,计算其中心点与交叉针集合中所有其他交叉针中心点之间的欧式距离,公式为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>Dis</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>=</mo><msqrt><mrow><msup><mrow><mo>(</mo><msub><mi>p</mi><mi>i</mi></msub><mo>.</mo><mi>x</mi><mo>-</mo><msub><mi>p</mi><mi>j</mi></msub><mo>.</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>p</mi><mi>i</mi></msub><mo>.</mo><mi>y</mi><mo>-</mo><msub><mi>p</mi><mi>j</mi></msub><mo>.</mo><mi>y</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow></msqrt><mo>,</mo></mrow>]]></math><img file="FDA0000954805840000061.GIF" wi="797" he="95" /></maths>其中p<sub>i</sub>.x,p<sub>i</sub>.y和p<sub>j</sub>.x,p<sub>j</sub>.y分别表示交叉针中心点p<sub>i</sub>与p<sub>j</sub>的坐标,i=1,...,N,j=1,2,...,i‑1,i+1,...,N;步骤29b:对得到的距离按照由小到大的顺序进行升序排列,得到与交叉针Λ<sub>i</sub>距离最近的前4个交叉针Λ<sub>a</sub>,Λ<sub>b</sub>,Λ<sub>c</sub>,Λ<sub>d</sub>;步骤29c:将与交叉针相邻的交叉针序号分别设定为步骤29b中所得到的4个交叉针的下标a,b,c,d;步骤211中,采用模糊聚类与随机游走算法对交叉针进行聚类具体包括:步骤211a:初始化聚类中心:如果聚类数K为指定值,则随机生成K个h维向量作为K个聚类中心c<sub>j</sub>,j=1,...,K;否则,采用均值漂移算法,自动计算聚类数K,并产生K个聚类中心c<sub>j</sub>,j=1,...,K;步骤211b:计算交叉针Λ<sub>i</sub>的特征向量x<sub>i</sub>与聚类中心c<sub>j</sub>的距离d<sub>ij</sub>,i=1,...N,j=1,...,K;步骤211c:计算交叉针Λ<sub>i</sub>从属于聚类j的隶属度u<sub>ij</sub>,即交叉针Λ<sub>i</sub>从属于聚类j的概率;步骤211d:建立邻接图G,邻接图的顶点集V=V<sub>x</sub>∪V<sub>c</sub>,由网格面片顶点集V<sub>x</sub>={v<sub>i</sub>|i=1,...,N}与聚类顶点集<img file="FDA0000954805840000071.GIF" wi="410" he="77" />组成,网格面片顶点集中的每个顶点v<sub>i</sub>对应交叉针集合中的一个交叉针,聚类顶点集中的每个顶点<img file="FDA0000954805840000072.GIF" wi="44" he="70" />表示一个聚类;如果交叉针Λ<sub>i</sub>和交叉针Λ<sub>i′</sub>满足i′∈{A<sub>i1</sub>,A<sub>i2</sub>,A<sub>i3</sub>,A<sub>i4</sub>}或者i∈{A<sub>i′1</sub>,A<sub>i′2</sub>,A<sub>i′3</sub>,A<sub>i′4</sub>},则判定交叉针Λ<sub>i</sub>和交叉针Λ<sub>i′</sub>相邻,将其对应的顶点v<sub>i</sub>和v<sub>i′</sub>在邻接图G中连接边,计算边的网格面片顶点权重w<sub>ii′</sub>;步骤211e:将每个交叉针所对应的顶点与所有聚类所对应的顶点在邻接图G中连接边,计算边的权重<img file="FDA0000954805840000073.GIF" wi="87" he="85" />步骤211f:将聚类顶点集中的顶点作为种子点,网格面片顶点集中的顶点作为非种子点,通过随机游走算法,计算一个随机游走者从非种子点i出发,在到达其他种子点之前到达种子点<img file="FDA0000954805840000074.GIF" wi="54" he="78" />的概率<img file="FDA0000954805840000075.GIF" wi="102" he="86" />枚举当前要计算的种子点seed,<img file="FDA0000954805840000076.GIF" wi="309" he="69" />计算表示一个随机游走者从每个非种子点出发,在到达其他种子点之前到达种子点seed概率的N维向量p<sup>seed</sup>,将N维向量p<sup>seed</sup>中的概率值<img file="FDA0000954805840000077.GIF" wi="69" he="78" />作为隶属度u<sub>ij</sub>,从而对隶属度进行更新;步骤211g:聚类中心计算:根据步骤211f中更新后的隶属度,以及交叉针特征向量x<sub>i</sub>,计算新的聚类中心c<sub>j</sub>′;步骤211h:判断是否收敛:计算新的聚类中心c<sub>j</sub>′和原聚类中心c<sub>j</sub>的距离d<sup>c</sup>,若距离d<sup>c</sup>小于阈值ε,则说明已收敛,转步骤211i;否则,用新的聚类中心c<sub>j</sub>′替换原聚类中心c<sub>j</sub>,并转步骤211b,所述阈值ε为10<sup>‑6</sup>;步骤211i:根据最终的隶属度,将交叉针划分到所属的聚类中,每个交叉针所属的聚类类别L<sub>i</sub>,L<sub>i</sub>∈1~K为该交叉针对应隶属度最大的聚类,从而获得K个聚类,每个聚类都由属于该聚类的交叉针组成;步骤212中,根据每个交叉针对应的类别,重新调整每个交叉针的针法参数具体包括:步骤212a:对任意交叉针聚类类别L<sub>i</sub>,遍历交叉针集合Λ中的所有交叉针,找出所有聚类类别L<sub>i</sub>=k的交叉针,记为集合<img file="FDA0000954805840000082.GIF" wi="461" he="79" />其中<img file="FDA0000954805840000081.GIF" wi="63" he="78" />表示每个属于类别k的交叉针,Q为属于类别k交叉针总数目;步骤212b:根据步骤121n、步骤122m以及步骤123n的拟合结果,计算聚类中心c<sub>j</sub>,j=k所对应的交叉针长度、交叉针夹角以及交叉针混乱度;步骤212c:将交叉针集合Λ<sup>k</sup>中所有交叉针的交叉针长度、交叉针夹角和交叉针混乱度调整为步骤212b所计算出来的交叉针参数;步骤212d:将交叉针集合Λ<sup>k</sup>中的所有交叉针朝向调整为其中心点所在图像区域的矢量场方向;步骤212e:对所有交叉针聚类类别分别进行步骤212a~步骤212d,得到经过调整后的交叉针集合Λ′;步骤212f:将每根交叉针的绣线颜色设定为其中心点所对应的原图中的颜色;步骤214中,对未排序针迹序列进行排序具体包括:步骤214a:计算未排序针迹序列stitches中每根绣线所覆盖的I<sub>salience</sub>图像面积的图像显著性stitchsalience<sub>k</sub>;步骤214b:根据计算得到的图像显著性stitchsalience<sub>k</sub>,按照图像显著性stitchsalience<sub>k</sub>的大小对针迹序列stitches进行升序排列,得到排序后的针迹序列newstitches,排在前面的即为要先进行绣制的绣线。
地址 210093 江苏省南京市汉口路22号南京大学