张一明,张景异,高宏伟
(沈阳理工大学 自动化与电气工程学院,沈阳 110159)
随着收藏家的大量涌现,纪念币成为一种值得珍藏的流通货币。在制造硬币过程中,经常会因为环境的不确定性而受到磨损、划伤等不可控制的因素,如若受到刮蹭就会留下划痕;纪念币与空气、水分或酸性物质等接触,其表面易发生化学变化,也会产生变色和腐蚀等现象[1]。因此在制币生产中会有一些对硬币保护的工艺手段,如在造币过程中对表面电镀一层耐腐蚀性较强的金属或合金来对硬币进行保护和防腐[2],或在银币镀上电解保护和浸渍抗变色剂的多层组合防护膜[3]等。如果生产后的纪念币存在表面缺陷,不仅影响产品的美观,也会对收藏的价值带来影响,因此生产企业对纪念币的表面缺陷检测非常重视。以往的纪念币工件瑕疵划痕检测都是通过人眼目视检测[4],人工检测是产品表面缺陷的传统检测方法,该方法抽检率低、准确性不高、实时性差、效率低、劳动强度大、受人工经验和主观因素的影响大,而基于机器视觉的检测方法可以很大程度上克服上述弊端。文献[5]中采用的是将硬币分为镜面部分和纹理部分,分别处理检测表面瑕疵,运用标准品与待检测硬币作图像匹准,得到划痕的特征信息。文献[6]利用一种多尺度多方向的形态学方法对划痕进行特征提取。本文研究在没有纪念币标准品的前提下检测划痕位置,提出一种基于机器视觉的纪念币表面划痕的提取算法,以提高检测效率与准确性。
根据纪念币的表面金属特性,在图像获取的阶段可能会出现图像的噪声点、曝光不均匀、对比度不均匀等不可避免的场外因素,因此对图像前期预处理是必不可少的流程。工业中常用到的图像预处理方法有:图像滤波、图像增强、二值化、亮度校正等。对本实验中的纪念币采取两种图像前期的处理:图像滤波和图像增强。
图像滤波是为去除在图像获取过程中产生的杂质信息。这里将自适应中值滤波的滤波方式用在对纪念币的图像处理中。
图像滤波可通过式(1)进行计算。
(1)
式中:K为一个大小为m×n的模板,其中m=2a+1,n=2b+1,a、b均为正整数。对于一个M×N的图像I(i,j),i=0,1,2…M-1和j=0,1,2…N-1,依次应用公式(1),从而完成对于图像I所有像素的处理,得到新的图像O。
为克服在图像获取中光照对图像照射的不均匀,需对纪念币进行图像增强[7]处理,本文选择通过直方图均衡化进行图像增强。直方图均衡化既能提高图像的对比度,也可改善图像的视觉效果,达到凸显纪念币划痕的目的,为图像特征提取的后续工作做准备。
图像分割指的是根据灰度、颜色、纹理和形状等特征把图像划分成若干互不交迭的区域,并使这些特征在同一区域内呈现出相似性,而在不同区域间呈现出明显的差异性。
阈值分割法是图像分割中的经典方法,利用图像中要提取的目标物体和背景在灰度上的差异,通过设置阈值把像素点按灰度级分为若干类,从而实现图像分割。通过判断图像中每一个像素点的特征属性是否满足阈值要求,来确定图像中该像素点是属于目标区域还是背景区域,从而将一幅灰度图像转换成二值图像,这是阈值分割的最简单形式 。
设原始图像f(x,y),T为阈值,分割图像时则满足下式
(2)
式中T为阈值,当g(i,j)=1时为图像图案,当g(i,j)=0时为图像背景。因此选择合适的灰度阈值T,是图像分割的关键。
粒子群算法是一种以群体为基础的最优化启发式算法。
其基本算法如式(3)、式(4)所示。
Vid(t+1)=w×Vid(t)+c1×rand()×[Pid(t)-xid(t)]+c2×rand()×[Pgd(t)-xid(t)]
(3)
xid(t+1)=xid(t)+vid(t+1)
1≤i≤n,1≤d≤D
(4)
式中:Vid为第i个粒子在d维的速度,其范围为[-VMAXd,VMAXd];c1、c2为学习参数;rand()为[0,1]之间的随机数;w为惯性因子;Pid(t)为第t个粒子搜索到的最优值;Xid为第i个粒子的当前位置;Pgd代表整个集群搜索到的最优值;第d(1≤d≤D)维的位置变化范围为[-XMAXd,XMAXd]。
粒子群分割是利用当前图像灰度值和帧图像像素领域的灰度级构成的二元组,通过计算均值和方差,建立一个二维的模型,然后再结合粒子群算法计算出图像的最优阈值,找到适合图像的最优灰度值。粒子群算法只需要少数的参数调整,且能够加速收敛至最优解。首先对纪念币通过粒子群算法来获得最佳阈值[9],计算出图像的最优阈值在131~154之间,通过对阈值区间的分析发现,当选取136阈值对图像进行分割时,图像分割效果最明显。
纪念币的黑色背景位置均有可能存在划痕问题,对这种情况下阈值的分割进行改进,将纪念币分割成多个N×N的区域,对这些区域求其最佳阈值,将局部的粒子群算法获得的阈值与全局的阈值相结合。
局部阈值分割算法的步骤:
①采用粒子群算法对纪念币的全局图像计算其阈值TA;
②将纪念币分割成若干不重叠的N×N区域,计算每一区域的阈值TB1、TB2、TB3…TBN;
③将每一区域计算得出的阈值应用到相应的区域;得出对应的图像。
由于纪念币种类繁多,不能根据标准模板对纪念币的划痕进行标记与识别,在没有标准样品的条件下,本文采取一种针对没有标准品纪念币表面划痕的标识方法进行检测。图1为是纪念币划痕特征提取流程图。
图1 纪念币划痕特征提取流程图
2.3.1 移动固定阈值窗口分割图像
纪念币的大小为1280×960的图片,采用10×10大小的窗口对图像逐行扫描,以窗口一半的长度移动,求窗口内灰度均值,若大于分割阈值的灰度均值时,表示此处为图像纹理,建立一个与图像内存大小相同的数字内存aa,目的是存储纹理信息,其内存中不包括划痕的信息。
2.3.2 边缘提取
通过边缘检测算子突出图像中的细节,且增强被模糊了的细节,突出其边缘信息。边缘意味有阶跃变化或是屋脊状变化的像素集合,边缘是图像分割、图像理解及图像识别的重要特征。 本文采用高斯-拉普拉斯算子[9]进行边缘提取。高斯-拉普拉斯算子将高斯平滑滤波器与拉普拉斯边缘锐化滤波器结合在一起,先对图像平滑,然后进行去噪处理,最后对图像边缘检测。
拉普拉斯算子定义如下。
(5)
经过分析,得到图像的所有边缘信息,包括图片的纹理和缺陷边缘信息,将这些信息放入数组bb中,在bb中消除数组aa中含有的纹理信息,得到划痕缺陷的信息。
2.3.3 划痕识别
对图像进行划痕识别就是将这些划痕的信息进行定位与标记。将分割后的图像进行特征描述,本文选择几何特征描述。测量所选纪念币的最大划痕为20个像素,长度为30mm,因此主要选择的是面积和周长作为特征描述子。将分割后的图像与划痕的模板进行匹配,模板与原图进行比较,以确定原图像是否存在与模板相同或相似的区域,找到属于划痕的所有点的区域。模板匹配[10]是将模板与原图像相对应的区域相比较,求其误差的平方和。误差平方和测度定义如下:
(6)
展开得
(7)
令
(8)
(9)
(10)
式中:f(x,y)为图像1280×960的原图像;t(j,k)为j×k大小的模板;DS(x,y))称为原图像与模板图像对应区域的能量,与(x,y)像素的位置有关;DST(x,y)是模板与原图像对应区域的互相关,随像素(x,y)成函数关系,随着其位置变化而缓慢变化,当模板区域与图像对应的区域相互匹配时,DST(x,y)的值为最大值;DT(x,y)称为模板能量。根据公式(8)~(10)计算记录下划痕像素的具体位置,将数据存入数组cc中。
2.3.4 划痕量化
划痕的像素已存入数组cc中,对其离散的像素点进行归类,属于同一条线上的划痕进行连接标记,将相邻的点归在一起算做一条划痕,既邻域标记。对于这些离散的点归类,有4邻域和8邻域扩展法,如果两个像素有公共边界,则称其互为4邻域;如果两个像素至少有一个顶角是共享的,则称其为8邻域。由于图像表面可能是断续的划痕,这里采用8邻域扩展法。图2a、图2b分别为4邻域和8邻域示意图。
图2 领域示意图
本次实验在Windows 7 系统、S2010环境下完成,电脑配置为i5-3230M CPU,2.6GHz主频,4GB内存,算法运用opencv算法库和C++语言实现。在实验测试中,有150种不同样式的纪念币,选取其中4种纪念币进行实验,运用本文叙述的检测纪念币划痕并标记的方法进行检测,图3和图4分别为传统阈值分割和改进的局部分割效果图,显然,经过改进的局部阈值分割对图像的分割更明显,既能还原纪念币本身的细节,也能突出纪念币表面划痕的特征。图5为纪念币检测划痕的效果图,图5显示能准确找到纪念币表面划痕的连通域并标记连线。
图3 传统阈值分割效果图
图4 改进的局部分割效果图
图5 纪念币检测划痕结果
表1为图5所示4种不同类型纪念币的划痕检测数量和位置标记的结果,4种纪念币的表面都存在几条不同位置的划痕,检测结果存在一些误差,有些划痕未能检测到,可能由于对图像的前期预处理使划痕特征被清除,因此优化前期图像的获取和预处理能提高对划痕的检测效率。
表1 纪念币划痕检测结果
研究了一种在没有标准样品前提条件下检测纪念币表面划痕的方法,阐述了图像预处理与改进的阈值分割的方法与步骤,并对纪念币进行特征提取,最终将划痕标记。通过对数据库中4种纪念币模拟试验,证明了该方法的可实行性,能够准确的标记纪念币表面的划痕位置,减少人工工作量,提高工作效率。此外,有待改进和提高的部分,实际测试中若采用分辨率高的工业相机获取图像,对图像划痕缺陷完整的还原,瑕疵检测算法的正确率还可提高。