李天贺,吴静静,安 伟
(1.江南大学 机械工程学院,江苏 无锡 214122;2.江南大学 江苏省食品先进制造装备技术重点实验室,江苏 无锡 214122)
SD卡是一种基于半导体快闪记忆器的新一代记忆设备,体积小、传输速度快,被广泛地应用于数码相机、多媒体播放器等各种便携装置。不同型号的SD卡表面具有不同的字符,方便消费者根据需求选择。在实际生产中,由于操作错误或设备故障导致打印的SD卡表面字符和真实型号不符,给制造商增加了高额成本,同时影响了消费者的使用体验。当前工序中普遍采用人工验证的方法,效率低、准确性易受主观因素影响。因此,研究一种基于机器视觉的图像质量自动检验方法代替人工目检是一种必然趋势。
光学字符验证(OCV,optical character verification)是图像质量自动检验的核心环节,其本质是验证待测图像与模板图像表面字符是否相同,在目标检测和计算机视觉等领域具有广泛的应用。OCV算法主要可以分为两大类:基于深度学习的验证算法和基于匹配的验证算法。在深度学习验证算法的研究方面,Chun-Hui Lin[1]等人通过轮廓边界检测方法确定感兴趣区域,利用CNN中的结构和细化机制能够检测出印刷电路板中错位、缺失和反极性零件的字符。Ribeiro[2]等人提出了一种OCV自适应深度学习框架,使用k均值聚类算法对CNN提取的特征进行聚类,使用k近邻方法结合CNN计算的质心,可以识别食品饮料等零售包装品上错误或缺失的信息。虽然两种深度学习算法检测准确率较高,但是需要有大量的数据来进行拟合,而实际工业场景存在难以收集缺陷样本的问题,在小样本条件下模型的精度会受到影响,并且当图像特征变化较多时会导致训练复杂、模型过大。
另一类是基于匹配的OCV方法,原理是提取图像的某种特征,计算待测图像与给定模板图像特征之间的相似度。如刘毅飞[3]等人利用归一化互相关算法中模板图像在待检测图像中逐像素搜索并计算相关性的特点,将检测区域分成六部分并行搜索,在不同图像位置采用不同模板大小,实现了多核归一化互相关图像匹配算法,但是对图像的灰度值变化比较敏感,鲁棒性较低。李胜辉[4]等人提出了一种C-ORB匹配验证算法,将图像的颜色不变量与ORB特征描述子相结合,获取到不同光照强度、不同光照方向图像的更多细节,但是该算法要求图像具有较多的特征点,局限性明显。左川[5]等人利用加速分割检测算法提取ORB特征,使用改进的二进制鲁棒独立基本特征算法进行特征点描述,同时结合透视变换模型进行图像采样和汉明距离作为相似度量准则进行图像匹配,该算法具有较强的抗视角变换能力,但是对于相似度较高的图像中验证准确率不高。刘欢[6]等提出了一种三组合Hu不变矩方法用于图像匹配,能够解决模糊噪声引起的检测准确率下降问题,但是算法依赖于提取角点信息的正确性,难以解决亮度的非线性变换问题。综上,以上基于匹配的验证算法在光照变化、目标旋转以及相似度高的OCV问题中,精度将会下降。
因此,当同时存在以上几种问题时,为了提高SD卡字符验证精度,本文提出了一种基于中心化Jaccard匹配的字符验证方法。该方法首先利用HSV三通道直方图实现特征显著SD卡图像的快速验证。对于特征相似的SD卡,在快速验证的基础上提出了一种精密验证方法。针对SD卡图像在验证过程中容易受到光照和旋转变化等因素干扰导致验证误差的问题,通过提取V通道图像降低灰度值对光照的敏感程度,通过提取像素的四方向梯度信息,使得HOG特征向量具有抗旋转变化特性。针对传统相似度指标难以对高度相似字符进行准确验证的问题,提出了一种中心化广义Jaccard系数精确量化特征向量的相似度,提高了相似字符的验证精度,以实现复杂场景下SD卡的高精度光学字符验证。
OCV工位实际采集的SD卡图像如图1(a)所示,SD卡结构可分为logo、内存、速度等级、系列号4个功能区域,如图1(b)所示。SD卡OCV的主要目标是检测待测图像4个功能区域的字符是否与模板图像一致,从而判断打印程序是否出错。传统基于匹配的方法通常提取模板图像与待测图像的特征向量,然后利用相似度指标计算向量之间的相似度值,通过比较相似度值与设定阈值的大小判断二者是否相同。但是本文SD卡OCV场景较为复杂,传统的简单特征匹配方法往往会引入较大误差。例如图2(a)由于采集设备变化导致表面特征出现明暗动态变化的图像、图2(b)由于机械定位误差导致出现微小旋转的图像,传统特征提取方法会产生验证误差;SD卡图像种类繁多,对于图2(c)特征高度相似的图像,传统的相似度指标模型会产生计算误差。
图1 SD卡示意图
图2 生产过程中复杂多样的SD卡图像
基于以上分析,本文设计了一种高精度的SD卡OCV算法,算法主要包括快速检测模块和精密检测模块两部分,具体流程如图3所示。首先对采集到的原始图像进行感兴趣区域(ROI,region of interest,如图1(a)方框内区域所示)粗划分,保证ROI内只有一颗SD卡,去除图像中其余的干扰目标,在ROI内通过模板图像利用模板匹配算法定位到待测图像;然后将模板图像和待测图像输入快速检测模块,充分利用HSV三通道直方图特性,以巴氏距离为测度,分别计算二者的H、S、V3个通道的直方图相似度,若3个相似度值均小于设定的阈值,则输出验证结果为“相异”;若3个相似度值至少有一个大于设定的阈值,则将模板图像和待测图像输入精密检测模块进行精密验证,首先将图像划分为4个子检测区域(如图1(b)方框内区域所示),提取灰度稳定性高的V通道图像,然后利用改进的HOG特征提取四组特征向量,最后基于本文提出的中心化广义Jaccard系数计算四组特征向量的相似度值,选择最大的相似度值与设定的阈值进行比较,若大于阈值则输出验证结果为“相同”,否则输出“相异”。通过所述新算法快速检测和精密检测模块互补,提升复杂场景下SD卡OCV的精度与鲁棒性。
图3 算法流程图
SD卡的种类多种多样,会出现模板图像和待测图像颜色、字符等特征相差较大的情况(如图2(a1)和图2(b1)所示),可以对此类SD卡进行快速验证。本文提出了一种基于HSV颜色直方图的快速检测方法,提高算法的整体运行效率。HSV颜色空间[7-9]是由RGB颜色空间衍生出来的一种面向对象的色彩模型,其中H(Hue)表示色调,S(Saturation)表示饱和度,V(Value)表示亮度,这3个分量互相不会产生影响,对其中任何一个分量进行处理不会对其它两个分量造成任何的影响。HSV颜色空间中的图像具有失真小、颜色逼真的特点,其构建是基于人类的视觉感知,色彩表现更符合人眼的视觉特性,能够准确地反应图像的颜色和灰度信息[10],在机器视觉领域具有很高的应用价值。因此,在利用模板匹配算法定位到待测图像I后,将I和模板图像T由RGB颜色空间转换到HSV颜色空间,转换公式如下:
max=Max[R/255,G/255,B/255]
(1)
min=Min[R/255,G/255,B/255]
(2)
(3)
(4)
V=max
(5)
式中,R、G、B分别表示图像中某一像素点的红、绿、蓝3个通道的像素值,max表示R、G、B像素值归一化之后的最大值,min表示R、G、B像素值归一化之后的最小值,H、S、V表示转换后像素点的色调值、饱和度值和亮度值。
转换后利用巴氏系数计算I和T的H、S、V3个通道的直方图相似度B1、B2、B3,分别与设定的阈值T0进行比较,若B1、B2、B3均小于阈值,则输出最终验证结果“相异”。巴氏系数[11]的计算方法如下:
(6)
式中,p(i)、q(i)分别表示I和T直方图第i个灰度等级的概率分布,N表示灰度等级的总个数。
为了验证HSV三通道直方图在快速检测方法上的有效性,选择图2(a1)、图2(b1)两张表观特征相差较大的SD卡图像以及图2(c1)、图2(c2)两张表观特征相似的SD卡图像作为对照样本进行相关试验,图4为三通道直方图对比效果。计算得到图2(a1)、图2(b1)两个样本的H、S、V直方图巴氏系数分别为0.231、0.215、0.244;图2(c1)、图2(c2)两个样本的H、S、V直方图巴氏系数分别为0.841、0.826、0.831。可见,这两类样本的直方图巴氏系数相差很大,阈值T0可选取的范围为0.3至0.8之间,本文选择的阈值为0.55。
图4 三通道直方图对比效果
当模板图像和待测图像表观特征相差较大时,通过快速检测可以直接输出最终结果;但是当二者特征相似时,H、S、V三通道直方图分布非常接近,因此快速检测将无法完成准确判断,会产生验证错误,需要精密检测进一步进行验证。精密检测中特征提取和相似度指标是决定验证精度的两个关键环节。当模板图像和待测图像高度相似时,微小旋转和光照变化引起的特征提取误差、相似度计算误差都会使得OCV验证精度下降。因此,本文从特征提取和相似度指标两方面进行优化,提出了一种改进HOG特征相似度的精密检测方法。
HOG特征[12-15]是一种常用的形状特征,它能够捕获图像的轮廓,描述图像的边缘信息,具有抗阴影和几何变换的优点。HOG特征描述子是通过统计图像中局部区域像素的梯度幅值和梯度方向来获取图像的特征,其计算过程是一个区域特征组合的过程。根据预先设置的参数将待测图像划分为多个小块(block),每一个小块又可以划分为多个细胞单元(cell),每一个细胞单元可以根据像素的梯度信息计算得到一组特征向量。将小块内所有细胞单元的特征向量串联组合起来可以得到每一个小块的特征向量,最后将所有小块的特征向量串联组合起来即可得到最终的HOG特征向量。
然而,传统的HOG特征提取方法对于旋转和光照变化缺乏鲁棒性。传统HOG特征只考虑了单个像素水平和垂直方向上的梯度信息[16],不具备旋转不变性。此外,当图像采集条件改变时,HOG特征将包含光照变化的伪边缘。旋转和光照变化场景下的干扰特征将导致较大的OCV特征匹配计算误差。本文根据V通道图像灰度稳定性较高的特点,以V通道图像作为原始输入图像,提高HOG特征的光照鲁棒性。针对微小旋转图像引起的验证误差问题,在传统HOG水平和垂直方向的基础上,引入两条对角线方向的梯度信息,对HOG特征向量进行增广,使得HOG特征具备旋转鲁棒性。本文提出的改进HOG特征具体方法如下。改进后的HOG特征算法流程如图5所示。
图5 改进的HOG特征算法流程图
1)将图像由RGB颜色空间转换到HSV颜色空间,提取V通道图像Vi,然后利用式(7)对Vi进行Gamma校正,目的是减少由于光照不均匀引起的图像局部阴影的影响。
Ib(x,y)=Ia(x,y)Gamma
(7)
式中,Ib(x,y)代表Gamma校正后的图像,Ia(x,y)代表原始输入的V通道图像,本文中Gamma取1/2;
2)以3×3个像素为梯度提取单元,中心点p(x,y)为旋转中心,将p(x,y)周围的8个像素点依次顺时针旋转1、2、3个像素,梯度提取单元旋转示意图如图6所示。计算梯度提取单元无旋转以及旋转3次的梯度幅值和梯度方向。以梯度提取单元无旋转为例,计算公式如式(8);
图6 梯度提取单元旋转示意图
(8)
式中,Gx(x,y)、Gy(x,y)、H(x,y)分别表示图像像素点(x,y)处的水平方向梯度、垂直方向梯度和像素值。G(x,y)、θ(x,y)分别表示图像像素点(x,y)处的梯度幅值和梯度方向。
3)把图像分为尺寸相同的cell,将cell的梯度方向180度分为9个被称为bin的方向块,即每20度划分为一个bin,统计各个cell内所有梯度提取单元无旋转以及旋转3次的梯度方向直方图,对应的就是4个9维的特征向量;
4)将2×2个cell组合成一个block,block内所有cell的特征向量串联在一起得到此block的特征向量,若一个cell的特征向量为9维,那么一个block的特征向量为2×2×9=36维,最终可以得到4个36维的block特征向量。对block的特征向量做归一化操作,目的是进一步地降低光照和阴影对图像的影响,公式如下:
(9)
式中,ε是一个常量,是为了防止分母等于0,本文中取0.001;
5)按照一定的步长沿着行列方向对图像进行滑窗操作得到多个block,再计算每一个block的特征向量,并将他们串联在一起即可得到最终的4个HOG特征向量Hi1、Hi2、Hi3、Hi4。传统HOG特征与改进的四方向HOG特征效果对比如图7所示。可见,与传统HOG特征相比,改进的四方向HOG特征保留了微小旋转图像更多的边缘细节,对比度也有明显的提升。
图7 传统HOG特征与四方向HOG特征效果对比
相似度指标能够量化特征向量相似程度,决定了验证精度,常见的相似度指标有夹角余弦[17]、相关系数[18]、广义Jaccard系数[19-22]等,表达式如式(10)~(12):
(10)
(11)
(12)
本文对这几种常见的相似度指标设计了对比试验。试验选择的模板图像为图2(c1)红框区域的字符;选择相同字符的100幅图像作为验证样本集S,相似字符(图2(c2)红框字符所示)的100幅图像作为对照样本集D。对比试验曲线如图8所示。其中,夹角余弦和相关系数曲线在多个样本上出现了交叉,类间方差很小,将引入验证误差;与之相比,广义Jaccard系数曲线性能最佳,类间方差增大,但在个别样本(如第83和84幅)上仍然有交叉,存在误分类的风险。可见相比于其他相似度指标,广义Jaccard系数对相似字符具有更大的区分度。
图8 3种相似度指标计算的相似度曲线图
广义Jaccard系数可以表示为两个向量的交集特征占并集特征的比例,值越大表明二者越相似。由于本文提取出来的特征向量维数较大,而字符相似部分的维数占总维数的比例较小,广义Jaccard系数不能很好地放大此部分。考虑到广义Jaccard系数相比较其他相似度指标的优越性以及在相似字符区分度上的潜力,本文设计了一种中心化Jaccard系数,表达式如下:
(13)
改进后对特征向量进行了中心化处理,用每一个元素减去所有元素的平均值。相比中心化前,平方或相乘后的特征向量元素曲线分布更加均匀,数据基本分布在原点上下,从而能够更好地凸显两个特征向量的差异部分。改进的广义Jaccard系数曲线如图9所示,数据无交叉且可以用一条阈值曲线0.82分开,增大了类间方差,提高了字符验证的准确性。
图9 改进的广义Jaccard系数相似度曲线图
为了验证本文所设计OCV算法的有效性,采用现场采集到的SD卡图像进行了相关试验。试验环境为:AMD Ryzen 7 5800H,16 GB内存的PC机,Windows10 64 bit操作系统。开发环境为:Visual Studio 2015,opencv3.4.6库函数。
为了验证本文所提出的高度相似字符验证算法的有效性和稳定性,设计了如下对比试验。试验图像集选用4个功能区域各5幅模板图像;对于每幅模板图像,选择相同字符的100幅图像作为验证样本集,相似字符的100幅图像作为对照样本集。使用夹角余弦、相关系数、归一化欧氏距离、夹角余弦和相关系数组合[23]、广义Jaccard系数以及改进的广义Jaccard系数6种相似度指标分别计算模板图像与验证样本集、对照样本集的相似度值,共100组。为了直观观察相似度指标在OCV问题中的准确性,计算100组相似度值的欧式距离,距离越大,表明类间方差越大,相似度指标的分辨能力越强。欧氏距离计算公式如下:
(14)
式中,xi和yi分别为验证样本集和对照样本集图像的第i个相似度值。试验结果如图10所示。
图10 相似度指标检测性能对比图
试验结果表明,对于4个功能区域的20幅模板图像,改进的广义Jaccard系数相比于其他几种相似度指标计算得到的欧式距离都是最大的,其中logo区域的平均欧式距离为2.331,内存区域的平均欧式距离为5.240,系列号区域的平均欧式距离为3.471,速度等级区域的平均欧式距离为4.649,且每一个检测区域的欧氏距离数据起伏较小,可见其稳定性较高,对相似图像具有较强的分辨能力。
为验证本文所提出的微小旋转字符验证算法的有效性,设计了如下试验。试验图像集选用4个子检测区域各1幅模板图像;对于每幅模板图像,选择同型号具有微小旋转的100幅验证样本集。基于传统HOG特征和改进的HOG特征分别提取模板图像和待测图像的特征向量,对比特征向量相似度值的大小。试验结果如图11所示。
图11 特征向量相似度对比结果图
试验结果表明,当图像出现微小旋转时,4个功能区域的相似度值均有明显的提升,分别平均提高了0.163、0.132、0.188、0.159,验证了改进HOG特征抗旋转变化的有效性。
为验证本文提出的检测算法的准确率与鲁棒性,设计了如下消融试验。试验图像集选用9幅不同型号的模板图像;对于每幅模板图像,选择3种采集条件下各20幅图像作为验证样本集,共9×3×20=540幅。分别基于传统HOG特征+广义Jaccard系数(HOG+Generalized Jaccard,HOG+G-Jaccard)、传统HOG特征+改进广义Jaccard系数(HOG+Revised Generalized Jaccard,HOG+RG-Jaccard)、改进HOG特征+广义Jaccard系数(Revised HOG+Generalized Jaccard,R-HOG+G-Jaccard)以及本文提出的算法(Revised HOG+Revised Generalized Jaccard,R-HOG+RG-Jaccard)作为验证算法,共9×540=4 860项。验证准确率对比结果如表1所示。
表1 验证准确率对比
试验结果表明,本文所提出的算法与其他几种组合算法相比验证准确率最高,达到99.15%,验证了算法的可行性与鲁棒性,能够满足生产要求。
本文综合分析SD卡OCV场景特点,设计提出了一种SD卡光学字符自动验证算法。该算法首先采用HSV三通道直方图,实现了特征显著SD卡图像的快速验证;其次利用V通道图像,提取多方向HOG特征,提高了微小旋转与光照变化场景下OCV的准确率;最后提出一种改进的中心化广义Jaccard系数,提高了相似度指标的量化精度,确保了特征相似SD卡图像的精密验证。通过相似字符和微小旋转字符验证性能对比试验,证明了本文改进HOG特征和中心化广义Jaccard系数的有效性;通过字符验证准确率消融试验,证明了本文所提出OCV算法的鲁棒性,具有良好的实用价值。
本文良好检测结果的前提是待测图像的精确定位,而模板匹配方法容易受到图像采集环境变化的影响,导致待测图像定位误差。因此,下一步将研究一种更鲁棒的目标定位方法,进一步提高算法检测精度。