基于机器视觉的离合器飞轮多行字符检测与识别*
2022-07-27陈甦欣万寿祥
陈甦欣,刘 伟,万寿祥
(合肥工业大学机械工程学院,合肥 230009)
0 引言
离合器飞轮是各类车辆设备的重要基础零部件,离合器飞轮上的字符则包含了该飞轮的产品信息,如尺寸、生产型号等,因此字符识别是生产实际中一个重要的环节。当前字符识别研究主要是通过视觉检测技术得到字符图像,并采用相关学习算法识别,视觉技术因为其对被测零件不会产生任何损伤,且具有高效率、高精度、抗干扰能力强等特点因而十分受欢迎[1]。
对于环形零件字符识别问题,吴颖慧[2]研究了双列圆锥滚子轴承工件号识别系统,但是该系统的单个轴承编号的识别时间长达12 s,检测速度不能满足工业现场检测要求。李阳等[3]利用NCC模板匹配快速匹配轮胎上的固定编号,实现字符自动分类,但模板定位字符区域存在误定位现象。任永强等[4]针对圆形零件表面的单行字符,提取字符图像HOG特征,采用SVM-HOG分类法,识别准确率达95%以上,但检测过程耗时较多。对于环形零件表面多行字符目前研究较少,在实际工业环境下,上述方法有一定局限性。
针对该离合器飞轮字符检测识别需求,在对字符特征和机器视觉相关理论进行研究后,提出了基于图像LBP特征的字符识别方法。根据该零件多行环形字符分布特点,设计出相应的预处理方案,采用DBSCAN算法实现字符所在的圆环区域定位,实现多行字符分割,并通过提取字符图像LBP特征,导入SVM多分类器中训练识别字符。实验结果表明,本文方法可以快速准确识别字符。
1 图像预处理
首先对相机采集到的工件图像进行灰度变换,双边滤波,阈值分割,腐蚀等形态学操作,对二值化后的图像进行连通域处理,利用环形掩膜提取感兴趣的环形区域,采用Canny算子得到轮廓边缘像素级坐标,处理后的图像如图1所示。
图1 工件图片和预处理结果
2 图像特征提取
2.1 圆定位算法
圆定位的准确性直接影响字符能否准确提取。常见的圆检测方法有基于Hough变换检测、最小二乘法以及基于随机抽样一致性(random sampling consistency,RANSAC)算法[5-6]。由于本文涉及字符区域位置较复杂,直接使用最小二乘法检测效果较差,而RANSAC算法在计算时抽样耗时占算法总耗时的比重较大,针对此问题,提出一种基于密度空间聚类(density-based spatial clustering of applications with noise,DBSCAN)算法定位圆环区域,DBSCAN算法[7]是一种根据数据对象的密度查找相似属性的聚类算法,其核心思想是遍历输入数据集中数据点来搜索所有簇,该算法聚类速度快,且有效处理异常数据点和发现任意形状的空间聚类,与K-means聚类相比,不需要人为划分聚类个数,具有很好鲁棒性。算法具体步骤如下:
(1)初始化圆心点集O=NULL,在得到的外边缘轮廓点集D中,根据距离阈值限定随机抽取3个点,即随机选取三点中两两之间的距离满足δ0 (1) 由于只需求解二元方程,相比较三元方程更为简便。求得圆心坐标后很容易求得圆的半径,公式如下: (2) 若所得圆的半径Rmin (2)使用DBSCAN算法对圆心点集O进行聚类分类,取点数最多的一类作为真实圆心点集O′,计算该点集的均值中心,作为真实圆心坐标,将点集O′中每个圆心点对应的半径存入半径集SR,计算半径集均值中心,作为对应真实圆半径,就得到字符所在区域外轮廓。 (3)由于字符所在区域实际内轮廓没有轮廓点,因此提出一种径向搜索法计算实际内轮廓位置。将(2)中计算得到的圆心(X,Y)为中心,以Pi(XPi,YPi)为起始点,其中Pi的坐标值由式(3)确定,从内向外搜索,当搜索到非零像素也就是字符像素时停止,按此循环查找,可得到内轮廓边缘点集。 (3) 式中,θ0为起始角度;RS为搜索半径,径向步长为1;i为当前搜索次数,i=1,2,3,…,N;Δα是周向步长,其值等于2π/(10×i);j为当前搜索中采样的点数,j=0,1,2,…,10×i。表示搜索半径越大,周向搜索步长越小,越容易搜索到字符所在区域,搜索示意如图2所示。 图2 径向搜索法示意图 经过上述算法查找,将得到的真实内外轮廓点集,分别导入最小二乘模型拟合圆,得到字符区域所在圆环区域,如图3所示。 图3 圆定位结果 由于字符分布在环形区域上,所以将其进行极坐标变换展开成矩形区域,设展开前某像素点坐标为(x,y),展开后(x′,y′),展开前后的像素位置如下: (4) 式中,(x0,y0)为圆心坐标;r0为展开后高度(展开圆半径);C0为展开圆最大周长。实际展开过程中,图像有一定倾斜,再对图像作镜像、仿射变换后输出,得到字符图像如图4所示。 (a) 环形展开图 (b) 字符定位结果 字符分割常用的方法有连通域方法,像素投影分割法,模板匹配法等[8]。连通域分割法和像素投影法的时间复杂度分别为指数阶,平方阶。在处理大量字符时,像素投影分割法优势明显。经过分析发现,本文涉及单个零件字符近30个,没有大量粘连情况,字符呈3行分布,呈现明显的分行特征。针对此特征,采用垂直投影法与水平投影法相结合的方法,即行与行之间采用水平投影法快速分割,行内之间字符采用垂直投影法分割,分割后字符特征如图5所示。 图5 水平投影分割结果 实际分割过程中发现,个别字符存在粘连情况,如图6所示,行内字符在垂直投影分割时根据分割线的长度作为是否是正确切割线的标准,若分割线长度小于d时均视为字符与字符之间的空白区域,最后将所有分割后的字符归一化到16×16像素的标准尺寸字符,便于后续识别。 图6 粘连字符分割 字符特征提取就是对原始的字符图像数据进行变换,且变换后的数据模式的本质特征对模式类别具有良好的区分度。LBP特征是是图像的局部二值模式特征,为解决维数过高等缺陷,研究者们提出了统一模式[9],即在LBP模式的二进制中,从0到1或1到0的转变次数最多只有两次。统一模式LBP算子用LBPu2表示,其产生的维数模式种类有P(P-1)+3,基本LBP算子产生的特征维数为2P,因此统一模式可以大大降低特征维数,同时降维后的特征包含图像绝大部分有效信息,并且可以减小高频噪声带来的影响,相比较HOG特征而言,没有计算梯度的复杂过程,计算过程简单。本文采用(P,R)=(8,1)尺度,即在半径R为1的邻域内的采样点数P为8的尺度。 在实际应用中,通常采用其相应的统计直方图作为特征向量用于识别分类[10]。本文通过提取字符图像LBP特征提取(8,1)LBP特征,构成59维特征向量,然后提取字符投影特征连接成为字符图像特征向量,具体步骤如下: (1)提取特征向量。由于字符图像较小,故将图像单独作为1个单元。对每个字符图像进行LBPu2提取,并将直方图归一化,直方图形成一个特征向量59维,就是该字符的LBP纹理特征向量x1,如图7所示。 (a) 数字字符 (b) 字母字符 (2)根据字符投影图选取计算字符投影特征向量x224维,其中水平和垂直投影各12维。LBP特征向量x1与24维投影特征向量x2连接形成联合特征向量x,就是该字符图像用于训练的83维特征向量。 (3)输入SVM识别分类。将上述两种特征组合形成联合特征向量,以便采用SVM进行分类。 支持向量机(support vector machine,SVM)是一种用于分类和回归分析的机器学习的方法,通过引入非线性映射函数Φ(xi)将样本数据映射到高维空间,通过寻找最优分类超平面来完成分类任务[11]。SVM正确分类需要满足两个条件:①正确区分两类;②使两类的点到超平面最小距离最大。 对于字符分类这样的多分类问题,可将SVM二分类进行扩展为多分类[12]。常用的方法有:①通过一次构造包含多个最优超平面的模型实现对样本的多分类,但其计算复杂,实现起来较为困难;②组合多个二分类SVM实现多分类,共构造N(N-1)/2个分类器,其中N是标签种类数,本文采用第二种方法。由于SVM在小样本条件下依然可以保持良好的可靠性,因此节约了大量识别训练时间,提高了识别效率。 待识别字符种类共有数字10种,字母种类26种,即一共有36种标签,考虑到数据集图像会相似,以及数据集少、训练效果差的问题,可以将同一字符图像旋转,切割和人为加入噪声等操作来扩大数据集和减少重复率。使用scikit-learn提供的机器学习库可以很快搭建LBP-SVM训练器模型,数字字符和字母字符模型训练好后,分别导入带标签的字符测试图像进行识别。 为验证本文算法有效性,采集了80张工件图片,由于其中少量字符残缺严重,无法提取特征,所以得到有效数字字符图像1351个,字母字符图像952个,将其中80%的字符图像作为训练集,20%字符图像作为测试集。为了将字符准确定位分割,验证圆定位算法性能,将随机霍夫变换圆(random hough transform,RHT)算法和RANSAC算法与本文算法作对比,结果如表1所示。 表1 圆定位检测结果 表1结果表明,在检测准确率上,本文算法与RANSAC算法一致,均高于RHT算法,但检测速度明显提高。通过调整惩罚因子C和径向基核函数的核函数参数g,得到最佳分类率,并在Visual Studio及Python3.8环境下编程,实现上述算法,并与目前常用模板匹配法和HOG+SVM分类法做对比,对比结果如表2所示。 表2结果表明,本文方法在字符识别整体准确率,特别是在检测速度上明显提升。限制识别准确率提高的主要原因有训练样本较少和字符样本存在划痕,磨损等缺陷,影响了识别准确率。 表2 检测结果对比 针对圆环形零件多行字符识别问题,以某公司装配线上的某型号离合器飞轮为研究对象,以形态学操作和连通域分割为基础,去除无关信息,增强可检测性,之后提出一种DBSCAN算法确定外轮廓和径向搜索法内轮廓的方法,从而快速确定圆环形字符区域,对包含字符的环形区域进行展开,采用像素投影法进行字符分割,提取字符LBP特征,利用LBP-SVM识别算法进行字符分类识别。实验结果表明,该方法能有效识别离合器飞轮表面多行字符,降低了时间复杂度,提高了识别效率,具有一定的应用价值。2.2 环形区域展开
2.3 字符分割
3 字符识别
3.1 字符LBP特征提取
3.2 支持向量机
4 实验分析
5 结束语