基于图像处理的无图案纺织品瑕疵检测方法
2022-12-19刘威,徐莉
刘 威,徐 莉
(常州信息职业技术学院,江苏 常州 213164)
进入21世纪后,人们的生活水平不断提高,对各种产品的质量有着更加严格的要求。其中,纺织品是很多日用品的基础材料,比如衣服、包、床上用品等,因此,纺织品质量检测结果是非常重要的指标。互联网上的搜索结果显示,纺织品在整理过程中的瑕疵占所有瑕疵不到10%,纺织品织造过程中的瑕疵类型占80%[1]。截至2013年,大多数纺织品瑕疵检查都要求工人分阶段进行,长时间的检测工作会使工人感到疲倦,导致瑕疵检测不完善。因此,人工检查方法适用于有限的瑕疵类型,一些极小区域的瑕疵很难检测出。
随着我国纺织工业的飞速发展,我国纺织品产量居世界之首,品种也越来越丰富,同时也造成了生产效率和产品质量的问题。1980年,自动瑕疵检测系统应运而生。1988年,塔卡特(Takat)使用灰度匹配来识别纺织品瑕疵。1990年至今,基于图像处理技术在检测瑕疵方面的研究达到顶峰,世界各地的专家学者发表了许多相关论文与著作[2]。
1 图像预处理
在收集纺织品图像时,图像质量受到环境光照等元素的影响,所以需要进行图像预处理,去除纺织品图像的背景,提高无图案纺织品图像的质量。
1.1 灰度直方图均衡化
灰度直方图均衡化的原理是对像素多的灰度值进行扩展、对像素低的灰度值进行合并,以此来提高图像的对比度,使图像变得清晰,达到增强图像的目的。平纹无图案纺织品均衡化前后的效果如图1所示。
图1 平纹无图案纺织品均衡化前后的效果
由图1可以看出,均衡化后的图像灰度值分布非常均匀,极大地提高了纺织品图像的对比度。在均衡化处理前,从图1只能看到一条很浅的瑕疵区域,而经过直方图均衡化处理后,可以发现瑕疵区域更加明显。
1.2 中值滤波
中值滤波是一种非线性平滑技术,能将每一个像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值[3]。中值滤波能有效抑制椒盐噪声,使图像变得更加平滑,并凸显瑕疵区域。
本研究将Python中的OpenCV模块用于执行两种类型的滤波:中值滤波和均值滤波[4]。其中,均值滤波无法有效消除图像的噪点,只能使图像变得模糊。中值滤波可以在很大程度上去除纺织品图像的噪声,效果比均值滤波好。本研究选择3×3和9×9的窗口对图像进行中值滤波的处理,中值滤波可以使背景变得模糊,提高瑕疵区域与无瑕疵区域的对比度,有效增强后续检测效果。
2 阈值检测
无图案纺织品的瑕疵定位就是把纺织品图像的瑕疵标记出来,只关心瑕疵的位置与形状。因此,本研究将图像中瑕疵的位置赋值为“1”,将无瑕区域赋值为“0”。阈值分割的目的是在纺织品图像中将瑕疵区域和无瑕区域分离,也是最有效的方法。通过选择合适的阈值,将目标与图像背景分开,而阈值处理的关键是要选择能达到有效分割效果的阈值。
2.1 简单阈值
简单阈值只需确定一个阈值,然后算法就会自动对灰度值进行分割,比如选择阈值为128,则0~128的灰度值被保留,而129~255被全部去除,即图像中灰度值低于128的像素为黑色,灰度值高于128的像素为白色,这样就完成了纺织品图像的瑕疵点分割。
使用cv2.threshhold()函数:cv2.threshold(src, thresh, maxval, type)。其中,src:原图片且必须是单通道;thresh:阈值,取值范围为0~255;maxval:填充色,取值范围为0~255;type:此次类型选择cv2.THRESH_BINARY,只有黑白二色。经过简单阈值后如图2所示。
图2 简单阈值实验结果
2.2 自适应阈值
自适应阈值是根据图像中某一块区域的像素值来计算对应区域的阈值,在对纺织品图像开展二值化等操作时,可以有效降低光照亮度的影响。自适应阈值与简单阈值的区别在于阈值的选择更加依赖上下文的关系。
在Python中,自适应阈值函数为cv2.adaptiveThreshold(src, maxval, thresh_type, type, Block Size, C)。其中,src:原图片;maxval:填充色,取值为0~255;thresh_type:本次采用平均值方法;type:阈值类型;block size:图像分块的大小;C:阈值计算过程中的常数项。经过处理后的图像如图3所示。
图3 自适应阈值实验结果
通过对比,简单阈值的检测速度比自适应阈值更快。从结果来看,两者并没有太大差别,而简单阈值算法简单、速度快,因此,采用简单阈值对无图案纺织品图像进行阈值操作。
2.3 瑕疵轮廓检测与定位
轮廓检测方法目前有两种:一种是通过边缘差异来检测目标的轮廓,另一种是从视觉系统中提取可用的数字模型,以完成目标轮廓检测。其中,基于边缘检测的轮廓检测方法主要定义亮度和颜色等特性的低级突变以及通过识别图像中亮度明显变化的点进行边缘检测,再使用经过阈值后的图像,便可以检测出目标轮廓。
图像的轮廓检测就是在已有的二值图像上,对图像中的黑白边界进行标记,检测出瑕疵点的形状与大小。
3 实验与分析
图4左侧为待检图像,右侧为经过以上方法检测的结果。
图4 样例1检测结果
图4的结果存在误检的小面积区域呈椒盐噪声分布。通过修改滑动窗口的大小,将原来的9×9窗口改为15×15方形窗口进行平滑后,得到图5的检测结果。
图5 改为15×15后的检测结果
图6是典型的因光照不均导致检测结果中存在大量误检像素点。通过观察发现,样例2的下方相比其他区域存在较明显的阴影。经过以上方法检测后,该部分的阴影区域均在阈值检测范围内,所以被定为瑕疵。因此,在获取图像样本时,应对四周的灯光进行调整,让光照分布均匀,避免光照不均造成的影响。
图6 样例2检测结果
4 结语
本研究主要探讨无图案纺织品的瑕疵检测算法,对大多数无图案纺织品的瑕疵点进行了检测,以有效检测出瑕疵的位置,并对瑕疵的区域进行标记和输出。该方法还存在待改进之处,根据对无图案纺织品进行预处理的结果,加之拍摄纺织品图像时的光照、角度等因素,导致图像明暗分布不均匀,使后续阈值处理的结果中出现了误检的像素点。