孙巧妍, 陈祥光, 刘美娜, 孙玉梅, 辛斌杰
(1. 烟台南山学院 工学院, 山东 烟台 265713; 2. 北京理工大学 化学与化工学院, 北京 100081)
在纺织行业的实际生产中,对纱线的质量检测及纱线密度的测量均需要检测并识别纱线主体。目前,国内外学者针对纱线毛羽进行了很多关于数字图像处理方面的研究,以电子仪器测量以及图像处理代替人工测量。经过十几年的研究,数字图像处理纱线主干检测技术得到了快速发展。姬建正等[1]提出了一种首先采用二维自适应维纳滤波进行预处理、然后进行基于遗传算法的二维最大熵法阈值化和形态学运算的数字图像处理方法,方珩等[2]提出了一种包括灰度变换、背景处理、图像增强去噪分割、动态阈值分割、倾斜纠正等手段的新型纱线毛羽图像特征识别算法。文献[3-5]也在这方面作了很多研究,但这些方法在算法难易程度、运算速度、识别结果方面都有待于进一步研究。
本文提出了一种先对预处理后的数字图像进行毛羽识别判断及图像补偿,然后对补偿后的图像进行自适应中值滤波运算的方法,去除原图像中的噪声和毛羽,保留纱线主体部分,2步完成纱线主体图像的提取,相比于以往的方法,本文算法相对简单,运算速度快。
本文研究采用的图像采集设备是Epson Perfection V850 Pro 底片胶片A4幅面影像扫描仪,采集图像所用到的纱线来源于南山集团精纺呢绒总厂2017年4月某批次产品,使用的处理软件是MatLab7.0及以上版本。采集的图像分为2类,一类是黑色背景白色纱线,另一类是白色背景黑色纱线。设备直接采集的是RGB彩色图像,黑色背景横向纱线图像矩阵大小为400×506×3,黑色背景纵向纱线图像矩阵大小为500×1 760×3,白色背景黑色纱线图像矩阵大小为800×800×3。毛羽识别处理只需识别并去除毛羽部分,为后续的纱线直径及纱线密度识别打下基础,而对毛羽颜色识别不做要求。实际上RGB图像在存储黑或白图像时三维数据差别不大,因此直接采用原数据矩阵中的第1层即R数据进行降维处理,处理后图像变为灰度图像,大小为400×506、500×1 760和800×800。降维后的灰度图像既含有噪声又有毛羽,这二者均影响对纱线主体的判断。图1示出一张黑色背景白色纱线的原始采集图像。二值化预处理后,单纯使用窗口尺寸不超过7的自适应中值滤波后图像如图2(a)所示,图2(b)为使用3×3的方形结构元对图像进行膨胀腐蚀结合操作处理后的图像。
图1 黑色背景白色横向纱线原始图像Fig.1 Black background white transverse yarn original image
图2 使用自适应中值滤波和膨胀腐蚀操作处理后的图像Fig.2 Images processed by adaptive median filtering (a) and by inflation and corrosion operations (b)
由图2(a)可看出,单纯使用自适应中值滤波,图像没有明显变化,这是因为自适应中值滤波算法处理椒盐噪声效果很明显,而对毛羽的处理则没有效果。由图2(b)可看出,单纯使用膨胀与腐蚀操作的结合可以将毛羽去除,但纱线主体的图像相比于原图有明显的模糊且边界不清晰。毛羽是实际存在的物体,不同于椒盐噪声、椒粒噪声或者白噪声,因此应该研究一种算法只去除毛羽和噪声部分而保留纱线主体部分的清晰图像。
由于采集的黑色背景和白色背景2类图像中纱线毛羽呈现的灰度值和形态不用,为尽可能简单快速地识别并处理毛羽,针对2种不同情况采取的识别算法也不同。
黑色背景白色纱线的图像是常见的纱线采集图像,在这类图像中,由于毛羽相比于纱线主体要细很多,图像表现出纱线主体为白色而毛羽部分呈现灰白色的特点,即毛羽部分的灰度与纱线主体部分的灰度明显有差异。针对毛羽图像的这个特点,采取灰度变阈值识别来判断毛羽部分的像素位置。
取整幅图像中灰度最大的N个和最小的N个值,然后各自取其均值作为识别算法中的最大灰度和最小灰度值。
式中:D1(1,N)为最大值矩阵;D2(1,N)为最小值矩阵;Gmax为最大灰度均值;Gmin为最小灰度均值。然后选取适当的阈值作为毛羽部分灰度识别的灰度值上限和下限。
h=Gmin+(Gmax-Gmin)×λh
l=Gmin+(Gmax-Gmin)×λl
式中:h为灰度值上限;l为灰度值下限;λh为灰度值上限权值;λl为灰度值下限权值,且0<λl<λh<1。依次遍历图像中的所有像素点,如果图像灰度值x(i,j)处于(l,h)区间,则判断该像素为纱线毛羽,需要补偿。可选择图像黑色背景部分的灰度值作为补偿值,将该灰度值替换已识别出的原图像中的毛羽像素。
采用上述算法进行仿真,图像矩阵大小为400×506,将采集的图像调入MatLab,经实验验证,取N=10,λl=1/6,λh=1/2,补偿灰度值为为l-(Gmax-Gmin)×1/17时,处理横向纱线的仿真结果较好,如图3所示。图4(a)为黑色背景纵向纱线原始采集图,二值化后图像矩阵大小为500×1 760,处理结果如图4(b)所示。由图3和图4(b)可看出,使用灰度变阈值识别补偿算法后,图像中的毛羽大部分被去除而纱线主体部分图像保存完好。
图3 黑色背景横向纱线补偿处理后的图像Fig.3 Image after black background transverse yarn compensation
图4 黑色背景纵向纱线补偿处理前后的图像Fig.4 Images of black background longitudinal yarn compensation. (a)Original image;(b)Image after processing
图5示出是采集到的一副白色背景黑色纱线的数字图像,图像中毛羽的灰度值不同于黑色背景时的情况,毛羽部分的灰度几乎与纱线主体部分的灰度相同,即毛羽部分不再是“灰色”而是“黑色”。若仍采用前一种方法则找不到合适的λl和λh值来检测出毛羽部分的像素,即采用灰度变阈值识别补偿算法对该情况下的毛羽进行判别毫无效果。
图5 白色背景黑色纱线原始图像Fig.5 White background black yarn original image
通过图像可明显看到毛羽虽然很“黑”,但与纱线主体相比却很“细”。虽然毛羽的形态各异,但毛羽所在位置的 “上下”或者“左右”临近几个像素变为背景灰度值。根据这个特点,可通过一定像素半径内垂直方向灰度变化值超过一定阈值的方法来判断该像素点为毛羽区域。
如果满足下述2个关系式中的一个,则可判断该点为毛羽区域的一点。
Himg(i-r,j)-Himg(i,j)>Hl&&Himg(i+r,j)-Himg(i,j)>Hl
Himg(i,j-r)-Himg(i,j)>Hl&&Himg(i,j+r)-Himg(i,j)>Hl
式中:r为判断窗口半径;Himg(i,j) 为图像中某点的灰度值;Himg(i-r,j) 为图像中某点左方第r个像素的灰度值;Himg(i+r,j) 为图像中某点右方第r个像素的灰度值;Himg(i,j-r) 为图像中某点上方第r个像素的灰度值;Himg(i,j+r) 为图像中某点下方第r个像素的灰度值;Hl为灰度变化阈值。
当判断出该像素属于毛羽区域后,就可以用背景灰度值进行补偿:
图6 垂直方向识别及推抹算法流程图Fig.6 Flow chart of vertical direction recognition and pushing algorithm
式中:c为灰度补偿值。
判断窗口半径r应从1开始逐渐增大,每当r增加1时,前一轮补偿处理后的数据又可为下一轮毛羽区域的判定提供判断依据,由小及大的逐渐“推抹”擦除毛羽部分。算法流程如图6所示。
采用上述算法进行仿真,将采集的图像调入MatLab后,矩阵大小为800×800×3,原始图像见图5。二值化后,图像矩阵为800×800。图7示出r=1和r=2时经垂直方向识别及推抹算法处理后的图像,通过这2个图像可清晰地看到该算法“推抹”擦除毛羽的过程。经实验及仿真验证采用r=3,c=30时效果较好,处理后的图像如图8所示。继续增大r则只增加了程序执行时间而处理效果无明显改善。
图7 r=1和r=2时处理图5图像的结果Fig.7 Result of processing images in Fig.5 with r=1 (a) and r=2 (b)
图8 采用垂直方向识别及推抹补偿算法处理后的图像Fig.8 Image processed by vertical direction recognition and massage compensation algorithm
显然,处理白色背景黑色纱线图像时采用的垂直方向识别及推抹算法相比于黑色背景白色纱线图像采用的变阈值识别补偿算法的程序执行时间要长很多。对于数据大小相同的图像,前者需要对每个像素遍历r次而后者只需要遍历1次。因此,在处理后者时为简化算法提高效率不需要采用垂直方向识别及推抹补偿。
经毛羽补偿后,图像中大部分毛羽已被滤除并补偿为背景亮度,但仍存在一部分像素点成为了椒盐和椒粒噪声。需要使用自适应中值滤波算法来进行进一步的处理。文献[6-9]对自适应中值滤波算法进行改进以解决各种实际问题,考虑到在纱线主干信息提取过程中毛羽是主要干扰信息,且毛羽已在上一步中基本去除,且图像针对噪声的处理没有特殊要求,为简化算法,缩小处理时间,只采用基本的自适应中值滤波算法即可,不必再做其他处理。
自适应中值滤波算法在滤波的过程中可根据预先设定好的条件,自动改变滤波窗口的尺寸大小,同时还可根据一定的条件判断当前像素是否为噪声,如果是则用邻域中值替换掉当前像素,不是则不作改变。IMGxy为一幅将被处理的中心位于(x,y)的子图像。设Dmin为最小灰度值,Dmax为最大灰度值,Dmed=IMGxy中的中值,Dxy为坐标(x,y)处的灰度值。是否满足Dmin 使用MatLab软件7.0版对所采集的图像进行仿真。使用黑色背景白色纱线图像2张,图像矩阵大小分别为400×506×3和500×1 760×3,白色背景黑色纱线图像1张矩阵大小为800×800×3,见图1、图4(a)、图5。根据上述算法,先进行二值化,然后对黑色背景白色纱线图像采用毛羽灰度变阈值识别补偿,对白色背景黑色纱线图像采用垂直方向识别及推抹补偿。最后,将补偿过的图像选择初始处理半径为3,最大处理半径为11的窗口进行自适应中值滤波[10],可得到图9所示的图像。对比图1、图4(a)、图5可看出,采用基于毛羽补偿与自适应中值滤波算法进行处理后,纱线毛羽基本清除,纱线主体图像清晰,边界清楚,完全可满足后续针对纱线线径进行测量的精度要求。 图9 最终处理后的图像Fig.9 Final processed images. (a)Black background horizontal yarn image;(b) Background black yarn image;(c) Black background longitudinal yarn image 根据前期其他学者的研究方法[1]为图像分割并采用纱线形态学计算线径,所得图像中纱线的直径数据如表1所示。数据表明采用图像处理法的检测效果测量直径与理论直径最大误差在3%以内,满足精度要求。 表1 测试方法所得结果对比Tab.1 Results comparison 使用数字图像处理技术进行纱线直径测量时,最重要的一步是识别并处理纱线主干图像。通过分析研究及仿真提出了一种基于毛羽补偿与自适应中值滤波的纱线主体图像识别算法。由于采集的图像只是黑白两色,故数据预处理只用R维数据而弃用GB两维数据直接将RGB图像二值化为灰度图像。然后,根据不同背景颜色图像的特点,黑色背景图像根据毛羽呈现灰色而背景是黑色纱线是白色的特点选择毛羽灰度变阈值识别补偿法,白色背景图像根据毛羽很细且与纱线主干一样呈现黑色而毛羽上下或左右临近几个像素外就已经呈现背景色的特点选择垂直方向识别及推抹补偿法。通过上述2种方法分别对不同特点图像中的毛羽识别并补偿为背景色。最后,将已进行了毛羽识别补偿的图像进行自适应中值滤波。仿真结果证明本文算法相对简单,处理速度快。 FZXB3 仿真及实验结果
4 结束语