孙延鹏,王海燕,张 弛
(沈阳航空航天大学 电子信息工程学院,沈阳 110136)
机身蒙皮上的主要连接形式是铆接,铆接的加工质量直接影响飞机整机结构的性能[1]。随着科技的快速发展,现代工业已经迎来了机器视觉时代的曙光。因为在获得复杂过程的物理模型方面存在极大的困难,在航空领域,自动化和改进现有制造工艺的压力越来越大。不断增加的飞机积压,强劲的竞争和新线路增强了自动化的需求。设定变化也符合人体工程学问题以及高生产率和高质量的要求。自动机器人系统在工业环境中的集成带来了一些好处,包括提高员工安全性,提高生产率和提高产品质量。自动化系统通常用于完成对人类操作员来说危险,不适合或过于重复的功能,从而带来更高的有效负载并加速传统的行业流程优化。在飞机工业中,最常见的部件连接工艺是焊接,蒙皮板组件是通过铆接制成的。这种用于将两个物品永久连接在一起的组装过程包括通过两个面板钻一个光滑孔(或冲孔和铰孔)以插入铆钉。铆钉是一种短圆柱形杆,具有头部和锥形尾部。通过施加足够的力,铆钉尾部可以塑性变形成所需的形状,以使接头牢固且防漏。良好的铆接对于保证物品的耐用性至关重要。由于飞机蒙皮大多为尺寸非常大的弧形曲面,在铆接的过程中会出现一定程度的钻铆误差,而怎样快速准确识别出铆接的特征参数是否满足标准值,已经成为目前研究领域的热点问题。在铆接质量的实际检测环境中,由于打光一致性差,传统的迭代阈值法,最大熵阈值法以及最大类间方差阈值法很难将图像的目标和背景清晰分割出来[2]。尽管铆接技术快速发展,但制造过程仍然需要大量的人工监督和自动控制。飞机结构接头的完整性在很大程度上依赖于受过训练的技术人员的经验。在这里,基于机器视觉检测系统是很重要的。检测系统的核心在于对采集的图像进行处理,而图像分割技术则是图像处理的关键技术之一,也是图像理解的前提[1]。基于 Hough 变换的圆检测是一种具有抗噪声、干扰点及断点性强,对局部缺损不敏感,适于并行处理等优良特性的图像处理方法,然而标准 Hough 变换算法数据量大,占用大量的计算内存,耗时长,对边缘要求也很严格,其参数空间投影会存在产生大量无效积累、数字量化误差大等问题[4]。本文结合改进的Hough变换来实现对铆钉形变端几何量的精确检测,目的是减少数据的计算量,缩短算法的运算时间。并对最终获得的数据进行最小二乘拟合,提高检测值的测量精度。
飞机蒙皮铆接质量视觉检测系统结构如图1所示。在视觉检测平台开始工作时,为了使飞机蒙皮图像的铆钉区域出现在工业相机的视野内,需要光源提供良好的打光一致性。计算机中的上位机软件将驱动图像采集卡进行工作,图像采集卡将采集的铆钉图像传递到计算机中,Matlab 2018a图像处理软件对采集到的图像进行进行数据处理、特征提取、图像相似性计算以及分类。在完成一张铆接图片的检测后,PIC控制步进电机将带动视觉检测平台进入下一次连续检测。
图1 视觉检测系统结构框图
在对飞机蒙皮圆形铆钉进行质量检测的过程中,几何量尺寸的精确性是衡量铆接质量的重要指标。采用上位机软件Matlab自带的imfindcircles函数对圆形铆钉进行圆检测,得到的半径相对于标准半径偏小。而Open CV中Houghcirles函数检测出的圆心和半径结果不精确,像素精度低。
Hough变换不仅适用于直线检测,还适用于任何形式的f(x,a)=0所表示的图形检测,其中x表示坐标向量,a表示系数向量。Hough变换的基本原理:设圆的半径为r,圆心坐标(a0,b0),则圆的表达式为
(x-a0)2-(y-b0)2=r02
(1)
将圆上任意一点投影到参数空间,则圆的表达式为
(a-xi)2-(b-yi)2=r2
(2)
式中的a,b,r是三维空间中的三个参数变量,(xi,yi)是二维平面xoy坐标系中圆上的任意一点。假设这点是已知常数,那么表达式在参数空间中表示为一个圆,如果圆随[rmax,rmin]这个范围的步长变化就会在参数空间中形成一个圆锥面。随着(xi,yi)在aob平面的移动而在参数空间中形成了交叉重叠的一簇圆锥面,它们必会相交于一点 ,从而求出我们所需的圆[5]。二维空间转换为三维参数空间的过程如图2所示。
图2 Hough变换圆检测原理
由于图像的边缘点数据量大,使用常规的Hough变换圆检测算法将会耗费大量的运行时间和存储空间,所以将对标准的Hough变换圆检测算法进行改进。
标准的Hough变换圆检测算法的鲁棒性强,适用于图像中的圆的定位。但是标准的Hough变换具有运算数据大,检测出的圆的圆心坐标和半径都只能是像素级,在此基础上运用了一种改进的Hough变换精确检测圆的算法,目的在于能够精确而又快速地检测出蒙皮图像的铆接质量参数。
2.2.1 算法基本思想
根据圆的梯度大小和方向,任取圆上任意一点A,以A为起点水平向右搜索,找出与圆的另一交点E,求出的AE中心点B(xb,yb),由于圆心在弦的中垂线上,必定在AE的中垂线上,沿着垂直梯度反方向,以步进长为1求出下一个点C(xc,yc)。求出C点与圆交点A或者E的距离r,将(xc,yc,c)在参数空间中进行累加,继续以步进长为1求下一个点D,直到y和r超出设定范围,继续寻找下一个符合条件的A点和E点[6]。
图3 算法思想
2.2.2 算法流程图
在使用Hough变换算法对蒙皮铆接图像进行分割前,我们将对原始图像进行预处理操作,首先将经过灰度变换的图像进行中值滤波去噪,经过去噪后的图像通过反锐化掩模法实现图像增强,接着采用最大类间方差阈值分割法(OTSU)对图像进行二值化处理,使铆钉从蒙皮图像的背景中分离出来,二值化的好坏将直接决定最终的检测结果。本文采用Canny边缘检测算子获取铆接图像边缘,Canny边缘检测算子具有对边缘的错误检测率低、定位准确和对同一边缘具有较低的响应次数等优势,使得检测效果得到很大程度优化。检测出的图像轮廓直观而又清晰,使得图像参与Hough变换运算的数据大幅度减小,从而将提高了 Hough变换的运算速率。
优点:该算法对于不存在对应点的点不进行 Hough变换运算,利用梯度信息对铆接图像的像素信息进行筛选,减少了算法计算的数据量。对灰度图像进行二值化处理,避免了环境复杂等因素的影响,使得最终的检测结果更加准确,该算法对环境的不敏感因素更加适用于工业应用中。虽然充分利用了梯度的信息,但并没有简单地认为利用梯度求出的法线一定通过圆心,避免了角度不准确带来的影响,所以在很多场合比其它的快速变换有着更强的鲁棒性[7]。通过Hough变换参数空间累加记数,滤除了图像本身水平和垂直对称物的影响,具有抗干扰能力强,对边缘检测要求不高等优点。
缺点:由于在识别铆钉之前不知道铆钉的半径和圆心的大小,在该算法中使用步进长为1的累加计数的方法导致了一定程度的无效数据处理。但是本算法的主要目的是降低错误判断率和提高计算的速度。
2.2.3 圆心和半径的精确拟合
Hough变换对飞机蒙皮图像铆接特征参数进行计算,求出的圆心和半径都为整数值。假设Hough变换检测出的圆上的坐标值为样本集(xi,yi),i∈(1,2,…,N) ,其中样本点到圆心的距离为di,如式(3)所示。
(Xi-a)2+(Yi-b)2=di2
(3)
样本点到圆心的距离di的平方与半径r平方的差为
δi=di2-r2=((Xi-a)2+(Yi-b)2)2-r2
(4)
对所有的样本点来说,取δi的平方和的最小值时的参数a,b,r为最优的拟合值
Q(a,b,r)=∑δi2
(5)
Q取最小值时,a,b,r便为待拟合的圆心和半径的值[5]。使用改进的Hough变换检测蒙皮图像铆钉的圆心和半径,检测出的结果均为整数值,采用最小二乘拟合圆的方法去拟合这些整数值,可以精确求出铆钉圆心坐标及半径结果。
为了获得铆接的几何量尺寸,需要对铆接图像进行特征提取,因此图像分割是机器视觉检测部分的关键技术之一。本文所有仿真实验的系统主机为PC机,CPU为Inter(R)core(TM)i5-4590,仿真工具为 Matlab 2018软件。
为了验证算法的可行性,本文采集了某一类战斗机飞机蒙皮中的一种类型铆钉的图像进行仿真与分析。铆接质量检测系统主要检测的参数是铆钉铆接形变后的圆心和半径。因此需要提取铆接形变后铆钉的特征参数,用特征参数来判断识别铆钉是否在规定范围之内,具体图像分析处理框架图如图5所示。
步骤一:Matlab读取一幅飞机蒙皮铆接图像将其转换为灰度图像,图6是铆钉R,G,B颜色通道图像及直方图。众所周知,一幅图像的灰度值是在0~255之间,从图中可以看出蒙皮铆接图像的R,G,B灰度分布情况,也能清晰读出灰度级所占的比重。其中,灰度级在0~250之间,而灰度级出现的频率在0~30之间。
步骤二:采用中值滤波法去除蒙皮铆接图像的椒盐噪声与高斯噪声,去噪后的图像如图7(a)所示;反锐掩模法是一种针对图像增强的经典锐化方法,算法表达式如公式所示。
g(x,y)=f(x,y)+C[f(x,y)-f′(x,y)]
(6)
f(x,y)为原始图像f′(x,y)为人为模糊后的图像,g(x,y)为锐化处理后的图像,C为比例常数,使用这个算法实现图像锐化的目的,从而使图像变得更加清晰,锐化后的图像如图7(b)所示;由于图像二值化的好坏将直接决定最终的检测结果,基于机身蒙皮图像背景与目标具有较强的对比性,采用阈值分割技术对图像分割,选择恰当的阈值,就可以很直观地将铆钉对象从蒙皮背景中分离出来,二值化分割图像如图7(c)所示;本文采用Canny边缘检测算子获取铆接图像边缘,使得检测效果得到很大程度上的优化,图像轮廓直观而又清晰。Canny边缘检测图像如图7(d)所示。
图4 算法流程图
机身蒙皮铆接原始图像如图8所示。利用Matlab 2018a自带的Hough变换函数imfingcircles()检测铆接图像中铆钉圆的半径和圆心,结果如图9所示。通过比较原始图像与imfingcircles()函数检测的图像可以看出,检测出的圆半径与真实半径之间存在误差。
为了检测出蒙皮铆钉图像的真实圆心和半径,我们需要确定图像中的圆形目标,计算出铆钉粒度的大小。经过Canny边缘检测算子检测到完整的铆钉区域后,对检测结果进行形态学腐蚀、膨胀、开运算及闭运算等基本运算[8],对基本运算后的结果进行亚像素边缘提取,提取结果如图10所示。
图5 图像分析处理总体框图
改进的Hough变换通过提取亚像素图像的边缘点,在二维空间中取一定范围的角度步长及半径步长,经过并行循环将二维空间图像的点投影到三维空间,就可以找出蒙皮中铆钉的圆心与半径。检测结果如图11所示。
图6 铆钉R,G,B颜色通道图像及直方图
然后对飞机蒙皮铆钉不同半径下的粒度分布进行计算得出图像所分布的粒径谱,在此基础上构建三维空间粒子场,从图12的粒径谱可以精确看出检测的粒子个数为三个,半径都在18毫米左右,与此同时从图13构建的三维粒子场中可以精确读出圆心及半径。该方法与标准的Hough变换相比,提高了一个数量级,仿真运算的总时间为0.23 s,在一定程度上提高了Hough变换检测的速率,满足实时检测的需求。
从三维粒子场图13的三维空间粒子场中可以读出圆心及半径。但是这个检测结果存在一定程度的误差,该误差来自于两个方面:一方面来源于铆钉铆接形变端的直径与厚度在规定的范围内出现一定偏差;另一方面是机身蒙皮多为曲面,尺寸大,刚度小,自动化钻铆技术在一定程度上偏移了理论钻铆点位置。标准的Hough变换圆检测的结果都为整数值,要想得到更精确的检测值,将检测出的数据进行最小二乘拟合圆,表1是两种算法的结果比较。
图7 飞机蒙皮图像
图8 原始图像
图9 imfingcircles()函数检测结果
图10 亚像素边缘提取结果图
图11 检测结果图
图12 铆钉粒径谱
图13 三维粒子场
表1中的结果显示,检测的圆心和半径均非常接近,从表1的误差结果项中可以看出圆心误差(1.72,1.78)像素,半径误差小于0.38像素。从数据结果可以看出改进的Hough变换检测的圆心和半径与标准的Hough变换检测圆相比更能接近真实值,从而证明改进的Hough变换在一定程度上可以提高检测值的精度。
表1 标准的Hough检测圆和改进的Hough检测圆结果比较
本文主要介绍了基于机器视觉检测部分的铆接几何尺寸的测量,重点介绍了改进的Hough变换圆检测算法对铆接图像进行的图像分割、特征提取、尺寸计算。算法继承了标准Hough变换圆检测对噪声不敏感、对局部缺损要求不高等优点,采用区域连通、二值化以及Canny边缘检测算子进行一系列预处理。该算法使Hough变换的数据运算量减少,针对标准Hough变换圆检测的圆心和半径只能得到像素级的精度来说,改进的Hough变换结合最小二乘拟合圆的方法对检测到的圆心和半径进行拟合,提高了检测值的精度。这个算法可以检测蒙皮图像中多个圆形铆钉的圆心和半径,从仿真结果可以看出检测值与实际值相符,能够满足视觉检测系统中实时检测的需求,提高了视觉检测系统的实用性。