基于BP神经网络的轮毂分类与识别算法研究*

2020-06-18 09:07刘杏杏
计算机与数字工程 2020年4期
关键词:孔洞轮毂圆心

葛 艳 刘杏杏

(青岛科技大学信息科学技术学院 青岛 266061)

1 引言

近几年轮毂识别系统得到越来越广泛的应用。国外的轮毂识别系统主要以企业研发为主,产品相对也比较成熟,但是销售价格比较昂贵,不能满足小型企业的购买需求,因此这样的轮毂识别系统大多出现在大中型企业的智能制造和自动化生产线。为了更方便国内中小型企业使用,需要研发成本较低、识别率高、扩展性强的轮毂识别系统。轮毂识别系统存在的意义主要生产过程中,不同轮型、不同产品的参数要求不同,如静平衡检测、谐波检测等。前期对毛坯做好分类识别是为了给后续的检测设备提前设定参数,这样可更好地自动判定产品是否合格,也可以完成工序转交时的产品明细统计。

现有的轮毂识别系统多采用欧式距离(Euclidean distance)和马氏距离(Mahalanobis distance)这两种识别方法。欧式距离是在多维空间内计算两点之间的距离,其缺点是无法对样本间不同属性之间的差异进行区分[1]。马氏距离是样本的协方差距离,它克服欧式受变量的量纲影响的缺点,但是轮毂图像处理后,依然会有一定的噪声干扰[2]。不同轮毂图像的同一变量的特征值存在一定差异,马氏距离会夸大微小变化的变量的作用,从而影响分类结果。

人工神经网络(Artificial Neural Network)又称连接机模型,是模式识别的重要工具,是基于模拟生物神经系统处理外界事物的过程而发展出来的一种计算机系统[3]。由于它具有自学习,自组织的特点,所以被广泛应用于图像识别、机器视觉等领域。BP(Back Propagation)神经网络是人工神经网络的一种类型,具有良好容错性和泛化能力,在局部神经元受到破坏后不会对全局的训练造成大的影响,经过训练后依然能够得到准确的分类结果[4~5]。

基于以上分析,为使轮毂识别系统尽量达到目标要求,本文提出基于BP神经网络的轮毂分类与识别算法。首先对获取的轮毂图像对进行预处理,包括灰度化处理、滤波技术去噪,图像二值化;其次对预处理后的图像提取轮毂大圆的半径、小圆的半径,轮辐个数等特征值;然后构建三层BP神经网络,以轮毂特征值集作为网络的输入,对应的轮毂类型作为网络的输出,通过训练得到轮毂分类模型,最后对多种类型的轮毂图像进行分类和识别,验证算法的有效性。

2 轮毂图像预处理

系统在轮毂图像处理过程中,一系列的外部因素(如拍摄装备、光照等)和被拍摄物体的内部的因素(如毛刺)会对图像产生一定的干扰,因此必须对图像进行预处理。轮毂图像最具价值的特征是梯度和边缘信息[6],将图像灰度化后既可以完整地保存这些信息也可以使计算更加简单。常用的去噪处理方法有邻域平均法、小波包变换和中值滤波[7]。中值滤波的原理是在线性层面对图像进行降噪处理,可以比较好地保护边缘的完整性,故本文采用中值滤波进行图像的去噪处理。

在中值滤波去噪处理后使用图像分割技术[8],将轮毂目标有效地从背景中提取出来,利用灰度化图像的梯度和边缘信息绘制直方图。在直方图中,根据像素点分布情况选取阈值Tm,进而将目标图像进行二值化处理。

3 特征提取

图像经过预处理之后进行轮毂特征提取。对于轮毂的识别而言,主要提取它的轮廓,轮毂大圆的半径、小圆的半径,轮辐个数等特征值信息。待提取的特征不同,所采用的特征提取方法也有所不同。

3.1 外轮廓拟合圆

为提取轮毂半径和圆心坐标,二值化后的图像可以使用二值形态学[9~10]进一步优化。二值形态学的基本思想是利用形态学的基本运算,对图像进行处理,从而达到改善图像质量的目的。它可以描述和定义图像的各种几何参数和特征,如面积,周长,连通度等。在图像处理领域常用的基本形态学运算包括开启、闭合、膨胀、腐蚀等。

边缘检测是获取轮毂圆的重要一步,常见的边缘检测方法有边缘算子法和曲面拟合法。边缘算子法中包括一阶微分边缘检测算子[11],例如Robert算子、Sobel算子;二阶微分边缘检测算子,例如Laplacian算子、LoG算子。本文使用基于二值形态学的边缘检测方法,其工作原理为:首先对二值化后的图像进行膨胀,填补轮毂内的缝隙,然后对膨胀后的图像进行填充,最后选用bwboundaries边缘检测提取轮廓。图1中是对17052DP型号的轮毂图像的部分处理结果。

图1 二值形态学的图像轮廓提取

边缘检测后,根据边缘拟合出圆,得到圆的半径或面积。传统的获取圆的方法有选点拟合求解法和Hough圆变换[12]。选点拟合圆法一般有三种:平均值法、加权平均值和最小二乘法。使用最广泛的是最小二乘法,它适合于像素点分布比较均匀的边缘,拟合出一个比较准确的圆。但是当前期图像预处理不到位,边缘检测后还有较多噪声点的时候,会导致结果不太理想。Hough变换找圆可以实现在同一个图中找多个圆,并且抗噪声能力比较强。在噪声点比较多的情况下,可以达到较好的拟合效果,但是当图像噪声很少时效果一般,并且hough变换找圆计算量较大,需要对半径进行控制,不然很容易导致程序瘫痪。

中国科学院沈阳自动化研究,对Hough算法求圆做出改进[13],利用圆上任意两条不平行弦的中垂线相较于圆心,使用圆上任意不重合的三点,根据斜率方程求的两条中垂线,联合两条中垂线的方程得到圆的半径。本文在改进的Hough算法的基础之上再次对该算法进行优化。

本文通过改进Hough算法提取圆心坐标,按照某一列或者行找到两边的起始像素点的坐标(x1,y1)和终止坐标(x2,y2),进过计算求得圆心和半径。中点坐标求圆示意图如图2所示。

本文提取轮毂圆心坐标用到的中点坐标公式定义如下:若点A,B的坐标分别为(x1,y1),(x2,y2),则线段AB的中点C的坐标为

图2 中点坐标求圆心

依据中点坐标求圆半径的步骤如下:

若根据行进行查找,y不变,图2中a点的横坐标值为

若根据列进行查找,x不变,图2中b点的纵坐标为

那么得到圆心的坐标即为

根据目标图像的分布特点确定阈值T,在(-T,T)之间求行向量组和列向量组:

计算行向量和列向量的均值:

(Avgx,Avgy)即为所求的圆心,圆心坐标找到后就可以利用圆心和圆上任意一个点的距离找到半径,两点间的距离公式如下:

3.2 提取轮辐个数

提取轮辐个数的方法是遍历某个半径下的圆,检测黑白跳变点的次数来判断辐轴个数。但在实际轮毂特征提取过程中,由于轮毂毛刺比较多,经过了图像预处理,图像中还是会有比较多的黑白点干扰检测,会影响辐轴的判断。在可以减少误差并且不会降低对程序计算效率的情况下,需要选取合适的半径进行轮辐个数的检测。本文对不同半径的多个圆进行遍历检测,从而提高轮辐个数检测的准确率。

3.3 提取轮辐之间的孔洞宽度

有些轮毂的直径相似,轮辐个数相等,但是轮辐宽度不同。在图像存在着一定噪声干扰的情况下,虽然计算出来的孔洞宽度与实际宽度存在一定的误差,但是不同大小的孔洞之间的宽度之差,与相同大小的孔洞宽度之差相比,差异还是较明显的。因此,为对轮毂进行精确分类,还需要提取轮辐之间的孔洞宽度。孔洞宽度的提取和获取轮辐个数的过程类似,具体方法如下:

1)选定初始位置position,计数器初始值为0;

2)若没有发生跳变,计数器t加1,若发生跳变,计数器清零;

3)从2)中发生跳变的位置,计数器重新计算,重复2)中的操作。

一个轮毂可能有多种宽度的孔洞,并且空洞的形状是不规则的。因此本文选取有孔洞的中间位置的半径,将圆的点坐标转化为极坐标形式,选取圆的角度偏移作为步长,像一个时钟的指针扫描360°,因此选取的步长对孔洞宽度有一定的影响。

3.4 提取圆心到大孔洞下边缘的距离

获取孔洞下边缘距圆心的距离和获取孔洞宽度所使用的方法有些差异。本文以圆心为中心点,从里向外进行扫描。前面已经求出孔洞的个数N,可根据N求出孔洞下边缘距圆心的距离。为减小误差,在N到N×2的范围内得到的半径取平均值作为本文最终要求的半径。

3.5 提取轮毂中心圆的大小

确定轮毂大圆的半径和圆心坐标后,还需要把有没有中心圆及其大小来作为轮毂的一个特征。在半径范围内,以圆心坐标为中心点沿所在行和列的方向进行探测。为减小误差可以向多个方向进行探测,求取半径的平均值。如果在给定的阈值Tr内,没有发生黑白点跳跃,说明该轮毂不存在中心圆;如果发生跳变,记下改变的行和列的坐标值,根据两点间的坐标公式即可求得中心圆的半径。

3.6 提取轮毂中心圆周边小孔洞个数

不同类型的轮毂中心圆边上的孔洞个数是不一样的,在已提取圆心到大孔洞下边缘的距离和轮毂中心圆的大小的情况下,再提取小孔洞个数就容易一些。将小圆的半径r1和圆心到大孔洞下边缘的距离r2作为上下阈值,那么小孔洞个数d就等于在范围内的黑白点跳变次数N1/2。

以上即为本文提取的6个特征值。轮毂的部分特征提取时容易存在误差,如轮毂半径和中心圆半径。本文使用容易发生浮动的特征值之间的比值作为轮毂的特征值,从而提高识别的准确率。本文选取A~F作为图像分类待处理数据。

AA:轮毂半径

BB:中心圆半径

A:AA/BB

B:C/BB

C:轮毂大孔洞下边界到圆心的距离

D:轮辐条数

E:周边小孔洞个数

F:轮辐间平均宽度

通过以上分析,对图1中图像进行特征提取,可得所需的全量参数,如图3所示。其中图(a)是标注特征A、B、C的目标图像,图(b)是全量特征。

图3 提取的轮毂特征参数

4 基于BP神经网络的分类识别方法

本文选用三层的BP神经网络[14],其拓扑结构如图4所示。

图4 神经网络拓扑图

本文前面提取的轮毂的6个特征值作为神经网络的输入,对应的轮毂型号作为网络的输出,隐层神经元个数L根据如下经验公式最终选定10个,输出层1个。

其中b为输入层神经元个数,c为输出层神经元个数,a为[1,10]之间的常数。

BP神经网络的输入和输出信号之间计算公式如下:

其中,xj表示输入信号,wij表示从神经元j到i的连接权值,θ表示偏置(bias),neti称为净激活,f是激活函数,yi是神经元的输出。

BP神经网络采用照误差返回传播算法进行学习和训练的多层前馈网络[15~16]。该学习方法使用梯度下降法,输入信号通过输入层和隐层的连接权重得到一组数据,作为隐层的输入信号,经过每个隐层计算,将结果传输到输出层,判断该结果是否达到期望输出;若否,则将误差信号返回传播,通过不断调整权值和偏置,使得神经网络的误差平方最小,最终达到期望输出。

5 实验结果

本文采用Matlab编程实现基于BP神经网络的轮毂分类与识别算法。网络训练时,隐层传输函数选用Sigmoid型的单极性函数logsig,输出层的节点的传输函数选用线性函数purelin,训练函数选用可自动调节学习效率的traingdx,也是梯度下降法函数,权值学习函数选用带动量项的learngdm函数。

进行网络训练时,将样本数据转换成输入量s×p的SP矩阵,s是样本元素的个数,p是样本个数,即SP=(A,B,C,D,E,F)T。将待检测的G个轮毂的数据组成多维向量。本次试验选取25个样本,故共25列,即待测矩阵大小为6×25。图1中的轮毂图片进行分类和识别的结果如图5所示。对其它测试轮毂图像的部分分类结果,如表1所示。

表1 部分实验结果

通过表1中对A0371870型号的轮毂进行特征提取和识别的数据分析,可以看出,在同一个特征值存在偏差的情况下,也能正确识别出轮毂的型号。从而验证了基于BP神经网络的分类识别与马氏距离等分类方法相比具有良好的容错性。

图5 神经网络分类结果

6 结语

当前越来越多的轮毂制造业使用机械自动化生产线生产,轮毂分类和识别系统的广泛普及势在必行。本文基于BP神经网络对轮毂图像进行分类和识别。首先将获取的目标图像进行灰度化、二值化等预处理;之后根据特征提取算法提取目标特征参数,其中利用中点坐标公式改进Hough变换拟合圆;最后基于提取的轮毂特征参数利用BP神经网络进行轮毂分类识别。实验结果表明基于BP神经网络的轮毂分类与识别算法具有良好容错性,对于同一型号的不同轮毂图像,部分提取特征存在差异的情况,也能正确识别出相应的型号。表明该算法达到了比较理想的分类效果。

猜你喜欢
孔洞轮毂圆心
基于ANSYS 的汽车轮毂的轻量化研究
锻件内部孔洞缺陷行为的数值模拟及闭合解析
电驱动轮轮毂设计及有限元分析
汽车轻量化铝合金轮毂设计*
用两圆有公共点的充要条件解题
悬崖上有字
走路时,我们会踩死细菌吗
参考答案
四种方法确定圆心和半径
铝合金薄板在疲劳载荷下孔洞聚合试验中的材料损失