史先传,董 冲,苏胜辉,徐镇冬
(常州大学 机械工程学院,江苏 常州 213164)
纺织印染企业把织物纬斜程度作为一个衡量纺织品质量的重要标准。标准的织物是经纱和纬纱交织成一定有规律的纹理,但编织好的织物在经过漂洗和染色工序后,织物的经纬纱纹理出现弯曲无规律的倾斜情况,这是由于织物两端所受到的张力不均匀或者中间和两端所受到的拉伸力不一样导致织物出现了纬斜和纬弯(纬弧)[1-3]。目前,找到一种可以检测各种类型的织物纬斜的通用方法,仍然是织物纬斜检测的难题。
国内外的学者对织物纬斜检测技术的研究有了一些成果。目前,织物纬斜检测主要有两大类:1)光电纬斜检测技术,如光电投射式检测法、旋转夹缝检测法等;2)图像处理纬斜检测技术,①像素点灰度值周期间隔法[4]、②小波变换投影分析法[5]、③Radon变换法[6-7]、④离散Fourier功率谱法[8]、⑤Hough变换法[9]。
上述①②③类方法都易受噪声的影响;④⑤类方法具有较好的抗噪声能力是目前较好的织物纬斜检测的方法。目前,对织物纬斜检测研究的学者提出了许多图像处理纬斜检测方法,但能够实际在机器视觉整纬机上应用的还是很少,多数还是光电整纬机[9-11]。因此,为了能够快速准确检测不同类型的织物纬斜图像,提出了结合Sobel边缘方向和累加概率霍夫变换(PPHT)的机器视觉织物纬纱倾斜检测方法,检测方法有4个关键步骤:
1) 织物图像滤波采用频域滤波,增强织物图像纹理;
2) Sobel方向算子对增强的织物图像进行边缘方向检测,再对其进行形态学阈值分割出纬纱纹路区域;
3) 形态学骨架化(Skeletonization)算法提取纬纱纹路区域骨架,消除其冗余像素,只保留纬纱纹路区域的中心线,利于降低PPHT算法的计算量;
4) 累积概率霍夫变换(PPHT)算法快速检测出近似纬纱纹理区域骨架的直线倾斜角度,也就是织物纬纱的倾斜角度,并将其倾斜角度传送给纬斜纠正机构控制器。
结合Sobel和PPHT的织物纬斜检测方法架构流程如图1所示。
图1 织物纬斜检测方法架构流程图
通过工业相机对选定的4种类型织物进行采集,选择4种不同类型的织物灰度图像(如图2所示),通过傅里叶变换将织物的灰度图像变换为频谱能量图像如图3所示,使用二项滤波器平滑噪声信号的能量,得到能量分布更清晰地频谱能量图,其能量分布与织物图像的经纬纱纹路走向垂直。织物纬纱纹路的频谱能量分布在距离频谱中心一定距离的上下半部分上,滤除所有频谱中心部分的低能频谱部分(背景),保留织物经纬纱纹路部分的高能频谱,最后通过傅里叶逆变换得到经纬纱纹路更加清晰的4种类型织物重构图像,如图4所示。
图2 灰度织物图像
图3 频谱能量图
图4 织物重构图像
从图2原织物图像到图4织物重构图像的变化,可以看出织物图像中的经纬纱纹理更清晰,说明织物经纬纱纹路信息都表现在频谱能量图的高频部分上。通过频域滤波增强织物经纬纱纹路,有利于准确定位织物纬纱纹路走向。
边缘检测算子有Roberts算子、LoG算子、Canny算子、Sobel算子等[11]。利用Roberts算子提取的边缘比较粗,定位不准确;二阶微分边缘检测LoG算子,它对噪声影响非常敏感,但边缘方向检测信息会丢失;Canny算子计算复杂,指定的参数较多;Sobel算子对噪声具有良好的抑制作用,但对边缘定位的准确性较低[12]。Sobel算子检测织物图像的纬纱纹路边缘有方向和幅度两个属性,可以计算出织物图像中的边缘方向图和边缘幅度图。Sobel边缘方向和幅度检测算法是一种计算梯度值的边缘检测近似方法,它使用水平掩码Mx和垂直掩码My来检测边缘,所对应的卷积模板如下式所示:
使用Mx和My分别对织物图像从左向右和从上到下扫描,进行卷积运算。图像的子窗口为[a]3×3如表1所示。
表1 纬斜检测角度绝对偏差均值比对实验结果 ( °)
表1 3×3的图像子窗口
图像子窗口的中心像素点(a4)的水平梯度Gx和垂直梯度Gy的计算公式如式(1)和式(2):
令h1=a6+2a7+a8,h2=a0+2a1+a2
Gx=(a6+2a7+a8)-(a0+2a1+a2)=h1+h2
(1)
令s1=a6+2a7+a8,s2=a0+2a1+a2
Gy=(a2+2a5+a8)-(a0+2a3+a6)=s1-s2
(2)
对子窗口图像中的中心像素点使用掩码Mx和My进行卷积运算,计算出梯度。在Sobel边缘方向算子中,硬件是采用8位结构实现的,表达最大值为255。当子窗口中的每个贡献像素都是最大值(255)时,h1、h2、s1、s2的最大值为1 024,需要10位结构来存储。为了解决这个硬件存储问题,h1、h2、s1、s2的值均被限制在原值的1/4,也就是图像子窗口中的每个贡献像素值除以4,再计算h1、h2、s1、s2的值,如式(3):
(3)
判断中心像素点(a4)是否为边缘像素点,主要方法是通过中心像素点(a4)的梯度Grad与预定义的阈值(T)比较。如果中心像素点(a4)的梯度大于设定阈值,则将其归为边缘像素点(记为1),否则为非边缘像素点(记为0)。判断表达式如式(4),这样可获取织物图像的纬纱纹理边缘。
(4)
织物图像中沿着纬纱纹路边缘方向的像素变化较平缓,垂直于纬纱纹路方向的像素变化剧烈。通过使用微分计算方法,检测纬纱纹路边缘上的变化,沿着纬纱纹路方向的边缘点具有相同的梯度方向,所以纬纱纹路方向与梯度方向基本一致,利用Sobel算子的边缘方向检测织物图像中的纬纱纹路。
由于织物图像受噪声影响较大,经纬纱的结构突变明显,所以适合采用大尺度的Sobel边缘检测模板进行纬纱纹路的边缘方向检测。大尺度的Sobel边缘检测模板对织物图像的噪声平滑效果更好,但检测的边缘较模糊,但不影响整体纬纱纹路走向的判断。将7×7Sobel模板与增强的织物图像进行卷积计算,输出以矢量方式表示方向的图像,即方向向量图。7×7Sobel算子模板的水平掩码和垂直掩码模板如下。
7×7Sobel算子模板的水平掩码如下式:
7×7Sobel算子模板的垂直掩码如下式:
将这4种类型织物的增强图像与大尺度7×7Sobel算子卷积运算后输出的边缘方向图,如图5所示。
图5 边缘方向图
观察织物图像的边缘方向图,在区间[40~140]的灰度值区域对应于织物图像中的纬纱纹路区域,所以通过形态学阈值分割法提取出织物纬纱纹路区域如图6所示。再对该区域进行形态学开闭运算,平滑区域的毛刺,有利于提取的区域骨架与纬纱纹路匹配准确度的提高。为了检测织物纬斜,直接对纬纱纹路区域进行霍夫变换,运算量大,耗时长,无法满足实时检测织物纬斜的要求。细化织物纬纱纹路的边缘方向区域,提取它的骨架,能够大大减少霍夫变换的计算量,降低织物纬斜的检测时间。为了生成单个像素宽度的纬纱区域骨架,采用下面的纬纱纹路区域骨架化算法实现。
图6 纬纱纹路区域
算法1:纬纱边缘方向区域骨架化
目标:生成单个像素宽度的纬纱区域骨架
1:Image ←binary _fabric_ image;
2:while (Not empty(Image)) do
3:Weft_Skeleton←Skeleton | (Image&(!(Opening(Image))));
4:Image← Erosion(Image);
5:end while
6:return Weft_Skeleton;
纬纱边缘方向区域骨架化算法使用了形态学的开运算和腐蚀运算以及逻辑运算的集合,它是Lantuejoul代表性应用[13-14]。对4种类型织物纬纱边缘方向区域重复运行骨架化算法,织物纹路区域的骨架逐渐被缩小,直到接近接近单像素的纬纱区域中心曲线骨架停止,最终生成了单像素宽度的纬纱纹理边缘方向区域骨架如图7所示。纬纱纹路区域骨架只保留纬纱纹路区域分量的中心曲线,它没有过多冗余的纹路像素,保持连通性和无毛刺等优点。
图7 纬纱纹路区域骨架化
标准霍夫变换(standard hough transform,SHT)算法是目前广泛用于图像中直线检测的方法。它具有较强的抗噪声能力,但运算量较大、耗时长,不适合用于实时性要求高的系统[15]。标准霍夫变换将检测到的直线从图像空间映射到参数空间,根据点——正弦曲线之间的映射关系,得到一系列的正弦曲线相交亮点[16-18]。极坐标系表示检测直线的定义如式(5):
ρ=xcosθ+ysinθ
(5)
ρ表示原点到直线的法线距离,θ表示直线的法线与水平轴的夹角。
累积概率霍夫变换(progressive probabilistic hough transform,PPHT)算法是在SHT算法的基础上改进后的直线提取算法,PPHT算法是较好的直线检测方法,采用随机取样点的映射方法,映射和直线的检测交替进行[19]。如果一部分像素点完成映射,对应的映射参数能确定一条直线,则删除其余待处理点集,从而减少运算量,更快速处理较长的直线检测。
为了快速检测到织物图像中的近似纬纱纹路骨架直线,采用下面的PPHT算法来实现。
算法2:织物纬纱纹路骨架直线提取的PPHT算法
输入:I:二进制织物纬纱骨架图像;δ:角度区域分辨率;
SegP←:极坐标中有交点达到最小投票数(大于该最小投票数的直线保留,否则删除);
MinLineLength:最小线片段的长度值(大于该最小长度值的直线保留,否则删除);
MaxLineGap:最大内部线片段之间的间隙值(小于该最大间隙值的直线保留,否则删除)。
输出:检测到的纬纱纹路骨架直线列表。
1:SegP←将织物纬纱图像I上的前景点添加到像素点集中待处理;
2:C(ρi,θi)←0{累加器初始化};
3:for 像素点(xn,yn) do {随机从SegP中取一像素点;}
4:for 0°≤θi<180°,角步距为δdo
5:ρi←xncosθi+ynsinθi;
6:C(ρi,θi)=C(ρi,θi)+1;
7:end for
8:ifCm=max{C(ρi,θi)}>Thresholdthen
9:寻找沿着直线的线片段;
L={(x,y)|ρi=xcosθi+ysinθi}在图像空间中;
10:连接间隙≤MaxLineGap的邻近线片段;
11:添加长度≥MinLineLength的线片段到输出列表;
12:删除点(x,y)∈{L∩SegP};
13:C←0{清空累加器};
14:end if
15:删除已选的像素点 ;
16:end for
在PPHT累加器中找出极坐标上交点的最大投票数,最大投票数的交点与纬纱区域骨架直线相关,根据SHT检测直线原理,最大数量的共线点对应着纬纱的近似直线。再将经过PPHT织物纬纱纹路骨架直线检测的算法运算得到检测线段的两个端点。为了计算出近似织物纬纱的倾斜角度,通过几何计算由直线两端点坐标值表示直线与水平轴之间的角度[19]。计算公式如式(6):
(6)
式(6)中的(x0,y0)和(xn,yn)是检测纬纱直线两端的笛卡尔坐标,公式的右半部分是斜率—弧度—角度转换[20]。此外,先对所检测的织物纬纱骨架直线倾斜角度(θ)进行均值处理,再根据θ的正负号判定织物纬纱倾斜的方向角度(φ),织物纬纱倾斜的方向角度(φ)定义如式(7):
(7)
织物纬斜检测采用PPHT算法的优点是通过删除已选的像素点或删除已确定直线剩余的待处理点集来降低计算量,大大提高织物纬斜检测速度,对能否达到对织物纬斜实时在线检测的要求起到关键的作用。利用PPHT算法检测的4种类型织物的纬斜角度再逆变换成近似纬纱纹路骨架直线如图8所示。
图8 近似纬纱纹路骨架直线
结合Sobel边缘方向检测和累加概率霍夫变换(PPHT)的织物纬纱倾斜检测方法,是在机器视觉软件平台HALCON上实现的,检测的准确度和实时性均达到了企业应用的要求。为了验证提出的检测方法准确率,利用图像处理软件对采集的标准织物图像进行指定角度的旋转,采用步距角为1°进行图像旋转得到不同纬斜倾斜角度的测试织物图像集,并以该角度作为误差衡量的基准。考虑织物纬斜的实际情况,测试实验选用4种不同类型的织物,每种类型织物取36幅图像。检测的织物纬斜图像是小区域图像,面积为:30 mm×30 mm,选取测试区间为[-16~16°]的织物纬斜角度。
统计4种类型的织物纬斜检测数据,并计算出检测的纬斜角度与对应的标准纬斜角度的偏差值。将4种类型织物图像的检测偏差值绘制成折线图。从图9可以看出,提出的织物纬斜检测方法对所有测试织物图像的纬斜检测偏差值都能控制在0.1°以下。
为了进一步验证提出的织物纬斜检测方法的准确度,选取5种目前流行的织物纬斜检测方法与该方法进行对比,利用绝对角度偏差值指标进行比较。绝对偏差角度均值计算公式如式(8):
(8)
MAD(mean absolute deviation)为纬斜绝对偏差角度均值,E(j)为第j个织物图像的纬斜角度检测偏差值,N为检测织物图像样本的数量。比较6种方法对织物纬斜检测的绝对偏差均值如表2和图10所示。
图10 纬斜检测偏差值
图10 织物纬斜检测偏差均值
从图11可以看出,提出的Sobel和PPHT法与其它5种检测方法对比4种类型织物的检测偏差均值情况,很明显提出的Sobel和PPHT法的检测偏差均值最低,对不同类型织物的检测适应性最高。显然,提出的织物纬斜检测方法具有较高的准确性和适应性。
提出的Sobel和PPHT法和其他5种方法的织物纬斜检测时间(s)统计如表3所示。从表3中可以看出,该方法对织物纬斜检测时间低于0.6 s(以平均值计算),达到织物纬斜检测的实时性要求。
表3 检测时间比对实验结果 s
对不同类型织物能够快速准确地检测出其纬斜角度,提出了一种结合Sobel和PPHT的织物纬斜检测方法。该方法采用频域滤波增强织物图像中的纬纱纹路,对织物图像的纬纱进行边缘方向检测,对边缘方向图进行形态学阈值分割出纬纱纹路区域,提取纬纱纹路区域骨架,快速检测出近似纬纱纹路直线并检测出纬斜角度。通过测试数据表明,该方法能将检测织物纬斜角度的偏差有效控制在0.1°以下,检测时间小于0.6 s。因此结合Sobel边缘方向和累加概率霍夫变换(PPHT)的织物纬斜检测方法能满足机器视觉整纬器的精确性、实时性和通用性要求。