李鹏飞, 严 凯, 张缓缓, 景军锋
(西安工程大学 电子信息学院, 陕西 西安 710048)
纱线的质量对纺织品后加工具有重要影响,其中毛羽是纱线质量评价的重要指标之一。在实际生产过程中,毛羽过长、数量过多会导致纺织品后期染色不均匀[1],从而形成色差;纱线毛羽过多致使在加工过程中受摩擦起球[2],从而降低纺织品的质量:因此,对毛羽长度及数量的检测有重要意义。
目前,企业检测纱线毛羽主要采用是目测法和光电式毛羽检测仪法,但这2种方法误差较大且成本较高。随着计算机技术及图像处理技术的迅速发展,图像处理技术被越来越多的研究人员应用在纱线毛羽检测方面。国内外有很多学者利用基于纱线条干画基准线的方法检测纱线毛羽长度[3],虽然针对纱线毛羽检测工作取得一些成绩,但这种方法在统计弯曲毛羽长度时无法计算出实际长度,普适性不高。孙银银等[4]采用视频显微镜与图像处理技术相结合的方法,选择条干上下边缘作为基准线,并将图像处理法的检测结果分别与目测法和GY172 A型光电分级统计法相比较,得出基于图像处理的毛羽检测方法能够获得更准确和可靠的检测结果,但此方法利用视频显微镜采集纱线图像,在工业生产中不适用。Fabija等[5]利用图像处理技术对毛羽图像进行处理实现毛羽的检测,虽然在处理过程中图像已经过锐化,但是在分割过程中部分毛羽仍然会被分类为背景,从而造成毛羽大范围断开。
针对以往研究中存在的问题,本文提出一种基于最大熵与密度聚类算法融合的方法对纱线毛羽进行检测。该方法首先对输入的图像进行双边滤波去除噪声增强纱线毛羽特征,然后利用最大熵阈值法提取出纱线毛羽,并细化毛羽;最后利用密度聚类算法(DBSCAN)统计出毛羽根数及每根毛羽的长度,并将检测结果与目测法、基准线法进行比较。
用CCD相机采集纱线图片时,由于毛羽在空间中分布位置的不同以及毛羽弯曲等因素影响,在采集过程中会造成部分毛羽亮度较暗以及在单根毛羽上亮度值出现差异,且在采集过程中难免会出现噪声。为不受噪声的影响并完整地提取出毛羽,需要对毛羽图像进行一系列的处理,处理流程框图如图1所示。
图1 毛羽检测方法框图
Fig.1 Block diagram of hairiness detection method
由于纱线在采集过程中纤维较细毛羽与背景纹理之间相似度较高,如果直接进行毛羽提取,很难获取完整的毛羽。为提取出完整的毛羽信息,本文采用双边滤波法对采集的纱线图像进行处理。在利用双边滤波处理纱线毛羽图像过程中,在非毛羽及边缘部分,由于噪声基本都是孤立的点,中心点的像素值由邻域内的像素值确定,如中心点邻域内像素值较小,而中心像素值较大,经处理后中心像素值则会变小。当双边滤波窗口扫描到纱线边缘或者纱线毛羽时,在窗口内大部分值与中心点的像素值相似,在这种情况下中心点的像素值基本维持不变;因此,纱线毛羽经过双边滤波后不仅去除了图像中的噪声,而且相对增强了毛羽特征。
毛羽图像经过预处理后,需要分割纱线条干及毛羽,而部分毛羽像素值与背景比较接近,在分割时阈值选择的不合适会导致毛羽容易被分割大范围断开,因此需要一种能够获取清晰准确毛羽特征的分割算法。本文采用最大熵阈值[6-7]进行分割。该方法根据每幅纱线图像的灰度特性,计算出合适的阈值。
针对1幅灰度图像,其灰度级是区间[0,255]上的随机变量,则p(i)为灰度值等于i时概率密度函数,因此,根据熵的定义可以得到图像的熵:
(1)
式中,b为常数。
输入初始阈值T(0≤T≤255,用阈值T将图像分为2个区域,灰度值小于阈值T的为背景区域,灰度值大于T的为目标区域。背景区域和目标区域的像素累计概率分别为
(2)
(3)
且
P0(T)+P1(255-T)=1
(4)
将式(2)、(3)分别代入式(1)中可计算出该阈值下背景区域(H0)和目标区域的熵值(H1):
(5)
(6)
根据式(5)、(6)可计算出在该阈值下图像的总熵:
H=H0+H1
(7)
利用式(1)~(7)可计算出所有分割阈值下的图像总熵,找到最大的熵,此时最大熵对应的分割阈值为最终的阈值,大于此阈值的为目标,小于此阈值的为背景,进而实现纱线的分割。
经过多次实验验证,最大熵阈值能够较为完整地提取出纱线毛羽;但在一些纱线图像中会出现小部分毛羽像素值与背景极其接近,因此在阈值时也会造成毛羽断开,但都属于小范围断开。
本文研究对象是纱线的毛羽,纱线条干是冗余的,需剔除掉。去除条干的方法是利用开运算(卷积核大小为5×5)处理经过最大熵阈值处理后的纱线图,从而提取出纱线条干。再对纱线条干进行膨胀(卷积核大小为5×5),膨胀的目的是去除纱线条干周围无害细小毛羽对结果造成的影响,然后用阈值后的图像减去膨胀后的纱线条干,得到纱线毛羽。
毛羽的长度计算是先计算出每根毛羽在图像中所占的像素点的个数,根据得到的像素点个数以及每个像素点的大小从而获得毛羽的近似长度,因此,获得毛羽长度前需对毛羽进行细化。使用的细化算法为Hilditch算法[8],经过细化处理可提取出纱线毛羽骨架,由于提取的纱线毛羽骨架宽度为单像素,因此可用于计算毛羽长度。
纱线毛羽经细化后下一步就是计算毛羽根数及毛羽长度。本文通过分析毛羽的特征,采用密度聚类算法(DBSCAN)[9-10]对细化后的毛羽进行处理,以此获得毛羽根数及长度。利用DBSCAN聚类算法统计毛羽长度及根数的优势在于不受小范围毛羽断开的影响,且能够同时统计出毛羽根数以及每根毛羽的长度。此外使用此算法统计毛羽长度可避免受到毛羽弯曲、残留噪声点的影响,但如果毛羽阈值后断开范围过大,则该算法不适用。
DBSCAN聚类算法的具体步骤如下。
输入:样本集N={x1,x2,,xm};领域参数E为样本xi的邻域半径;M为邻域内样本最小点个数。
输出:所划分类个数以及每一类的大小。
1)从样本集中选取一个未被处理的样本xi。
2)检查样本xi的领域E,在其领域内找到样本集N(xi)。
3)如果样本集内样本的个数满足|N(xi|≥M,则创建一个样本xi为核心对象的类,并将xi邻域内的点加入到该类中。如果|N(xi|≤M,则将xi标记为噪声。
4)检测N(xi内未被标记的样本,直到检测到边界点结束。
5)循环步骤2)、3)、4),直到检测完样本。
DBSCAN聚类算法完成后,得到类的个数及每个类别像素点的个数。类的个数为图像中毛羽的根数。计算每根毛羽长度部分与毛羽骨架跟踪算法计算毛羽长度部分相同[11],根据每类像素点个数(每类像素个数加5,消除条干膨胀带来的误差)乘以每个像素点对应实际长度,可计算出毛羽的长度。
实验平台:实验中纱线毛羽采集系统所使用的摄像机是BASLER公司的acA1300-30gm面阵相机;采用LED光源;导纱装置以及配备Intel Core i5-4460 3.2 GHz CPU,8 GB主内存,NVIDIA GeForce GT 705显卡和Windows 8.1操作系统的电脑。要获取效果较好的纱线图像,在采集前需要对曝光时间、图像分辨率等参数进行设置。在实验中曝光设置时间为1/800 s,图像分辨率为256像素×256像素。在完成相机参数调整后还需要进行相机单位标定。本文利用的标定板是艾菲特光电技术有限公司的AFT-MCT-HC100的AFTvision机器视觉标定板。经标定后图中像素与实际距离对应的关系为:1像素=0.024 mm。
参数分析:在毛羽统计中主要会受到2种情况的影响。首先是部分纱线毛羽在阈值时可能会被分割为背景,造成毛羽小范围断开,影响毛羽根数及长度统计(如图2(a)所示);另一种情况是2根毛羽相距比较近,在统计毛羽时可能会误统计为1根(如图2(b)所示)。在本文中利用了DBSCAN聚类算法来消除这种误差,但需要设置合适的邻域参数{E,M},实验中先使M值保持不变,改变邻域半径E值。然后使E值保持不变,改变M值。以便于选择出合适的参数值。结果如表1所示。
图2 影响毛羽统计的情况
Fig.2 Affecting situation of hairy statistics. (a) Hairiness disconnection; (b) Adjacent hairiness
从表1可看出,当领域参数设置过小时容易将断开的毛羽分为多根毛羽,如表中邻域半径、邻域内样本最小点个数分别为E=0~3.0,M=4~6和E=6,M=0~3.0时,将图2(a)中断开的毛羽分成了多根。当邻域参数设置过大时容易将距离接近的毛羽统计为1根毛羽。根据多次实验,本文中选择邻域半径E=6,邻域内样本最小点个数M=6。经过多次实验证明,该参数能够较精确统计出毛羽根数。
表1 DBSCAN聚类统计毛羽根数
Tab.1 DBSCAN clustering statistics number of hairs
图序领域参数EM不同长度(mm)毛羽根数123456<1图2(a)0.0~3.04~630000043.1~6.04~621000036.1~8.04~621000043.1~6.01~320000053.1~6.07~92100002图2(b)0.0~3.04~610010033.1~6.04~600001036.1~8.04~610010033.1~6.01~310010033.1~6.07~91001002
注:E为样本邻域半径,M为邻域内样本最小点个数。过小的毛羽未统计。
样本选择:实验在样品中选取7段纱线,每段纱线连续采集相片100张,所对应的每张图片的实际长度为6.144 mm×6.144 mm。100张图片对应的长度为61.44 cm,可以近似认为是61 cm。对样本检测结果如表2所示。
表2 毛羽长度分类统计
Tab.2 Classification of hairiness length
样本序号不同长度(mm)毛羽根数1234561#123351512312#8345209423#158603010514#140502018535#143281911746#15147116427#13140251052平均值132.743.62010.94.72.1
为验证本文算法的优势以及算法计算结果的准确性,选取了3个纱线毛羽图像样本(见图3,检测目标为白色箭头标记的毛羽)作为检测样本,分别利用本文所提的算法(见图4)及基准线法(见图5)进行检测,并将这2种算法的检测结果与目测法的检测结果进行比较。目测法是通过目测、投影放大和显微放大摄影获取纱线毛羽形态,然后测量纱线毛羽长度、根数等指标[13]。比较结果如表3所示。
图3 纱线原图
Fig.3 Original image of yarn. (a) Sample 1; (b) Sample 2; (c) Sample 3
图4 本文中算法提取的毛羽
Fig.4 Hairiness extracted by proposed algorithm. (a) Sample 1; (b) Sample 2; (c) Sample 3
图5 基准线法(每格0.5 mm)
Fig.5 Baseline method (0.5 mm per grid). (a) Sample 1; (b) Sample 2; (c) Sample 3
表3 本文算法与基准线法和目测法比较Tab.3 Comparison of algorithm and baseline method,visual method
样本本文算法计算的毛羽长度/mm基准线法目测法测量长度/mm相对差/%测量长度/mm相对差/%1.8241.082.41.81.33样本11.5121.051.21.50.801.0800.5116.01.11.820.6000.520.00.714.291.9201.528.02.04.00样本21.8481.523.21.92.741.2001.020.01.20.001.1520.5130.41.24.003.3362.066.83.41.88样本32.5442.027.22.62.152.0881.0108.82.10.571.0560.5111.21.05.60
注:相对差=|E-B|/B×100%。其中E为采用本文算法所测结果,B为采用基准线法或目测法所测结果。
从表3与图4、5可以看出,基于基准线法统计毛羽长度的方法存在一个明显的缺陷,对于毛羽弯曲的情况,该方法不能精确地计算出毛羽的长度,而本文方法通过统计每根毛羽在图像中所占的像素数目获取毛羽长度,可解决毛羽弯曲时其长度计算不准确的问题。从实验结果可以看出,与基于基准线的算法相比,本文的算法相对增长较大,特别针对弯曲幅度较大的毛羽,最大达到130.4%。与目测法相比,表3中除1根毛羽误差较大外,其余普遍较小,结果与目测法接近。因此可看出本文算法能够更精确、真实地计算出毛羽的长度。特别是针对弯曲幅度较大的毛羽,有很好的适用性。
本文提出一种基于最大熵与DBSCAN相融合的毛羽检测方法。首先利用图像处理技术,对纱线图像进行滤波、阈值、细化提取出毛羽,最后利用DBSCAN聚类算法计算出毛羽根数及毛羽长度。对得到的结果与目测法和基准线法进行比较,结果显示,本文算法能够较为准确地计算出毛羽的根数以及毛羽的长度,误差较小。同时也计算出了毛羽H值,并与USTER公报应用手册进行比较,计算所得的毛羽指标相对稳定。实验结果证明本文算法可以有效地获取毛羽长度及根数。