李 彦,朱凌云
(东华大学a.信息科学与技术学院;b.数字化纺织服装技术教育部工程研究中心,上海 201620)
纽扣是非常重要的服装辅料,它的优劣会在很大程度上影响到服装的品质[1],因此纽扣的质量检测是非常重要的。纽扣的生产数量非常巨大,但目前大部分纽扣生产工厂采用人工方式进行缺陷检测,检测效率是极其低下的。
随着计算机技术的发展,图像处理技术被广泛应用于工业产品缺陷检测,其不仅能提升产品的质量,而且还能节约成本。目前,常用的表面缺陷检测算法可以分为3种:统计法、频谱法和模型法[2]。统计法一般是利用直方图统计特征,并利用灰度共生矩阵等方法描述目标图像;频谱法主要是傅里叶算法和小波法等;模型法则是利用各种算法模型。这些技术有十分广阔的应用平台,已经可以在多个领域取代人工检测,比如玻璃板[3]、印刷品[4]、木材[5]等的检测。
四眼纽扣是生活中最常见的一种纽扣,这种纽扣的缺陷较多,主要缺陷类别有内孔变形、内孔缺失、边缘破损、污渍、划痕及凹坑等。为了提高纽扣检测效率和节约成本,基于图像处理对四眼纽扣瑕疵进行研究,设计一套基于图像处理的纽扣次品检测系统。
基于轮廓的纽扣瑕疵检测算法流程如图1所示。第一步基于连通域分析纽扣感兴趣区域的分割及轮廓的提取;第二步检测纽扣内孔缺失与颜色瑕疵(包括污渍、划痕及凹坑等瑕疵);第三步检测纽扣外轮廓与内孔轮廓的圆度与缺口检测。
分割背景的目的是将特定的感兴趣目标与背景进行分割,便于后期进一步处理,分割的效果直接影响后期的边缘提取等后续技术[6]。目前最常见的分割方法主要是基于阈值、区域、边缘和特定理论这几种方式。阈值分割相对于其他几种方法的优点是计算简单、运算效率较高、速度快,很适合用于重视运算效率的纽扣检测场合。阈值分割法主要有全局阈值法、局部阈值法以及自适应阈值法等,适用于背景灰度一致的图像[7]。在纽扣生产线上,背景一般为颜色一致的传送带图像,因此选取阈值分割算法用于分割纽扣区域。
1.1.1 阈值分割
图2(a)是纽扣原图,可以看出纽扣区域与背景区域的面积相差不大。最大类间方差法(大津法OTSU)将图像分为背景与前景两个区域,是一种基于最大方差的阈值分析方法[8],其实现方式简单,当目标与背景的面积相差不大时,能够有效地对图像进行分割,因此非常适合用于纽扣图像的分割。本文先将获取的纽扣图像转换为灰度图,再运用OTSU算法进行图像阈值分割,得到二值化图像。但这些二值图往往存在很多小毛刺,在一定程度上影响后期的轮廓检测效果。因此,采用腐蚀、膨胀操作以去除这些毛刺,为了不影响整体的轮廓,采用了较小的3×3模板。图2(a)所示纽扣原图的阈值分割效果如图2(b)所示。
图1 纽扣瑕疵检测算法流程图Fig.1 Flow chart of button defect detection algorithm
图2 纽扣分割与轮廓提取
1.1.2 基于轮廓的连通区域标记
对纽扣图像阈值分割,得到纽扣的二值图像会有多个连通域。为了获得纽扣的轮廓,需要获得二值图像纽扣的连通域,比较好的方法就是对每个连通域进行标记,利用标记数判断纽扣的连通区域。
连通区域标记算法最常用的有两种:一种是基于行程的连通区域标记;另一种是基于轮廓的连通区域标记[9]。整体而言,基于行程的连通区域标记效率更高,其原理也比较复杂,但对于连通数小于100的图像来说,两者效率差不多,因此选择更为简单的基于轮廓的连通区域标记。基于轮廓的连通区域标记能够快速完成标记,首先采用先上下后左右的方式遍历图像,寻找轮廓边缘点,并追踪轮廓,然后根据轮廓从左到右依次标记,直到标记完所有不为黑色的点。
1.1.3 纽扣区域分割与轮廓提取
由图2(b)的阈值分割图可以看出,二值图像存在很多的连通区域,这是由于纽扣周围存在少许脏污和其他相邻纽扣的边缘区域等形成连通区域,而这些区域难以通过阈值分割出来。通过纽扣区域分割,可以快速地将这些不感兴趣的连通区域剔除。采用区域分割和轮廓提取的方法能够快速得到感兴趣的纽扣轮廓,这也是后续轮廓检测的基础。图2(c)是纽扣连通区域分割图,图2(d)是纽扣边缘轮廓图。纽扣区域分割与轮廓提取的具体步骤如下:
(1) 获取基于轮廓的连通区域标记;
(2) 计算每个连通域的标记数目;
(3) 通过标记数得到最大连通区域,并将其分割出来,得到感兴趣的纽扣连通区域;
(4) 利用OpenCV的findContours函数对纽扣连通区域进行轮廓检测,找到并返回该二值图像的轮廓信息[10];
(5) 保存轮廓信息并计算轮廓数。
在纽扣生产过程中,由于加工工艺和机械设备的影响,可能会出现一些瑕疵纽扣,其中堵孔、少孔以及各类颜色瑕疵(包括污渍、划痕等)是比较常见的瑕疵[11]。正常四眼纽扣的轮廓数目为5(4个内孔轮廓和1个外轮廓)。根据轮廓数量,可将含有内孔缺失或颜色瑕疵的次品纽扣分为以下3种:
(1) 内孔缺失(堵孔、少孔)的数目大于颜色瑕疵的轮廓数目,此时总的轮廓数≤4;
(2) 内孔缺失(堵孔、少孔)的数目小于颜色瑕疵的轮廓数目,此时总的轮廓数目≤6;
(3) 内孔缺失(堵孔、少孔)的数目等于颜色瑕疵的轮廓数目,此时总的轮廓数目=5;
对于前两种次品纽扣,可直接通过轮廓数目进行判断。而对于第三种情况,由于颜色瑕疵的轮廓一般为不规则形,可与合格内孔轮廓区分开来,因此也可以使用轮廓检测的办法。本文先将获取的污渍和划痕纽扣图像转换为灰度图,再运用阈值分割得到二值化图像,处理效果如图3所示。由图3可知,污渍与划痕在阈值分割得到的二值化图中依然存在。
图3 污渍与划痕纽扣的二值化处理效果
本文检测的塑料纽扣为圆形纽扣,因此它的轮廓检测可以使用圆度评价法[11]。目前圆度评价法主要有4种,分别为最小区域法、最小二乘法、最小外接圆法和最大内切圆法[10, 12]。但是在实际的纽扣图像中,由于拍摄角度和纽扣位置的原因,正常纽扣轮廓也不一定是完全的圆形,可能类似于椭圆形。文献[13]提出一种多行纽扣的分拣装置,在这种情况下,纽扣一般不是位于摄像头正中央,因此拍摄的纽扣图像会呈椭圆形。对于一些小缺口纽扣,圆形度评价的检测效率也不高。针对这些问题,提出一种多步轮廓检测算法。
1.3.1 最小外接圆圆形度检测
最小外接圆评价圆形度是指先求取轮廓的最小外接圆并得到圆心与半径,然后将该圆心作为最大内切圆圆心,两个圆半径之差即为圆度误差值[14],其数学表达式如式(1)所示。
f=Rmax-Rmin
(1)
式中:f为文献中圆度误差值;Rmax为外接圆半径;Rmin为内切圆半径。
内孔与外轮廓半径相差较大,为了统一内孔轮廓与外轮廓圆度误差评价,本文对文献中圆度误差公式做了调整,以增强适用性。改进之后的圆度误差表达式如式(2)所示。表1为几种纽扣的最小外接圆圆度误差检测结果。
(2)
式中:f0为文献中圆度误差与最小外接圆半径的比值,本文代表调整后的圆度误差值(后文直接称为圆度误差值);δ为阈值,以统一外轮廓和内孔的圆度误差评价,经过多次验证,当δ=3时效果比较好。
表1 基于最小外接圆的圆度误差情况
最小外接圆检测出的圆度误差值能够对大部分的轮廓瑕疵进行区分,但是难以检测一些小缺口或者一些光滑性较差的轮廓。为了降低由于视角原因出现圆形纽扣呈现类似椭圆形状而导致误检的风险,在最小外接圆检测的基础上加入三次方差与局部最大二次方差检测,进一步检测圆形度和较小缺口。
1.3.2 三次方差圆形度评价
方差检测的是纽扣轮廓像素点相对于最小外接圆圆心的波动情况,因此计算每一个轮廓点到其外接圆圆心的距离,如式(3)所示,以便更好地对轮廓做进一步分析。
(3)
式中:l为每个轮廓点到最小外接圆圆心的距离;(x,y)为轮廓点在图像中像素点位置;(x0,y0)为外接圆圆心位置。
经式(3)的转换,轮廓变为曲线的形式,结果如图4所示,其中,星点表示轮廓点到其外接圆圆心的距离,下面连续曲线(polyfit values)为进行多项式拟合的曲线(拟合的值为轮廓点到其外接圆圆心的距离减去均值),这样可以看出轮廓的大致形状。
图4 纽扣轮廓转换图Fig.4 Button contour conversion diagram
三次方差会有正负值。对于对称轮廓,由于其三次方差相互抵消,也会呈现较小值;对于不对称轮廓,比如有缺口的轮廓,一般三次方差会呈现较大值。三次方差圆形度评价表达式如式(4)所示。
(4)
1.3.3 局部最大二次方差缺口检测
针对纽扣边缘微小缺口难以检测的问题,提出局部最大二次方差检测方法,这种方法可以用于检测轮廓的平滑度。二次方差圆度误差表达式如式(5)~(7)所示。
(5)
(6)
(7)
由图4可知:对于没有瑕疵的轮廓区域,其像素点可以拟合为平行的直线,相应的局部方差较小;而对于有缺口的轮廓区域,其像素点可以拟合为折线或者斜线,像素点局部波动情况较大,因此局部的方差较大。通过找到最大局部方差即可判断轮廓的平滑度。表2为基于方差检测的圆度误差情况。通过k值来确定局部待测区域,通过多次试验,最终确定k值大小为30,该局部待测区域能够得到比较好的检测效果。
表2 基于方差检测的圆度误差情况
1.3.4 外接圆方差轮廓检测法
最小外接圆圆形度评价具有速度快、实现简单的特点,并且能够检测出大部分的纽扣轮廓,因此其作为最主要的轮廓检测步骤。由于视角的问题,纽扣轮廓往往并不是标准的圆形,而是呈现类似椭圆的形状,因此对于这类易于误检的纽扣轮廓,可以通过检测平滑性检测轮廓瑕疵。三次方差主要用于检测轮廓内凹但弯曲程度不大的轮廓,同时也是为了进一步检验圆形度。局部二次方差用于检测局部平滑性,能够对缺口具有较好的检测效果。外接圆方差轮廓检测法是一种多步检测法,其实现流程如图5所示。
采用的实验设备CPU为i5 3320 M,操作系统为Ubuntu 18.04。根据上文方法,选取外轮廓缺陷纽扣55个,内孔缺陷(包括堵孔、少孔及轮廓瑕疵)29个,颜色瑕疵(包括污渍、划痕等)30个,以及无瑕疵纽扣123个进行试验,结果如表3所示。由表3可知,该算法的平均检测准确率约为97.8%。同时,该系统检测每个纽扣的平均耗时约为0.1 s,完全可以达到实时性要求。
表3 不同纽扣样品的检测结果
若采用人工检测方式,对于纽扣数量较少的情况,基本能完全检测出次品纽扣,但对于纽扣数量较多的情况,工人注意力难以完全集中,其检测的准确度会大大降低。由于外接圆或内切圆的方法不能检测平滑度,若只采用这两种方法进行检测,则对小缺口等轮廓的检测效果不佳,实际测试中,外轮廓的检测准确率约为89.1%,内孔缺陷检测准确率约为93.1%,均低于本文提出的方法。
将图像处理应用于纽扣次品检测,提出一种基于轮廓的纽扣瑕疵检测算法,采用阈值分割、纽扣区域分割和轮廓提取等预处理操作,利用轮廓数目判断是否有内孔缺失和颜色瑕疵等缺陷,利用外接圆方差检测法判断是否有轮廓瑕疵。试验证明,该算法能够实现纽扣的次品检测,其准确率约为97.8%,并且拥有较好的实时性。该检测系统能够运用于纽扣生产线,提高检测效率与正确率,减轻工人的劳动强度,同时能大大提高生产效率。