基于改进质心法的激光条纹中心提取算法*
2019-06-13席剑辉
席剑辉,包 辉
(沈阳航空航天大学自动化学院,沈阳 110136)
0 引言
视觉测量在计算机、图像处理以及光学等技术逐渐完善的基础上得到了快速发展。视觉测量具有非接触、实时性强、精度较高的优点,在工业领域得到了广泛的应用。目前,视觉测量方法主要有立体视差法、莫尔条纹法、全息干涉法、结构光法等。在这些方法中,激光测量方法以其实时性强、大量程、条纹图像易提取,以及主动受控等特点受到众多研究和应用[1]。激光测量原理是用摄像机以一定角度提取在物体上的光条信息,然后利用算法处理摄像机提取到的光条信息,从而得到被测量物体的信息。在激光测量系统中,提取激光条纹中心的精度会影响到整个测量系统的测量精度。现有的提取条纹中心算法主要有骨架提取法、极值法、灰度重心法、曲线拟合法、方向模板法、Hessian矩阵法等。
极值法实现简单并且提取速度快,但抗噪声比较差,提取精度不高。曲线拟合法主要是将条纹中心横截面灰度极大值点作为条纹中心点。该方法是将条纹横截面的灰度分布拟合成曲线,如果激光条纹受噪声影响较小,那么其提取效果好。所以曲线拟合法受噪声影响较大,并且样本点取得少,提取结果也不好。方向模板法具有抗噪声能力强和断裂修补的优点,能较完整地保留结构光条纹的细节信息。该方法采用5×3的4种不同方向的模板与条纹图像进行卷积,从而提取条纹中心。不过该方法由于限制了方向,所以提取精度不是很高,并且运算量较大,一般工业上很少运用其方法[2]。灰度重心法基本原理是将每行的灰度值加权平均作为该行的中心。该方法减小因条纹灰度分布的不均匀而引起的误差,从而提高提取精度。但是当条纹图像中含有大量噪声或者预处理效果不好时,灰度重心法提取的精度会不高。上述的众多方法在诸多方面都存在不足,许多学者提出了很多改进的条纹中心提取算法。主要从两个方面进行改进,一个是运用一些算法提高待处理条纹图像的质量;另一个方面是改进现有的条纹中心提取算法。胡坤等利用Hessian矩阵确定线条的法线方向,然后在其法线方向上利用泰勒展开求出光条纹中心的亚像素位置[3]。王泽等根据条纹宽度不均匀的现象,提出了一种自适应方向模板的结构光条纹中心提取方法[4]。尚雅层提出基于函数曲线拟合的亚像素边缘检测法。该方法采用传统边缘检测进行定位,再取定位好边缘附近一些点,计算这些点的灰度梯度值,然后利用高斯曲线拟合这些梯度值,对拟合好的曲线求取对称轴就是条纹中心[5]。吴家勇根据结构光图像上条纹中心两边的灰度特性及光带灰度的非正态分布特点,运用自适应阈值法确定条纹的边界阈值,应用梯度重心法进行条纹中心的提取[6]。
由于现有的条纹中心提取算法在处理噪声较大和复杂条纹上效果不好。本文提出利用差影法提取目标条纹,此方法不仅可以准确地提取目标,也可减少运算时间和去噪;为了去噪和保证目标条纹的完整性,这里利用连通域的方法及实用改进的质心法来应对多种形式的条纹中心提取。
1 条纹中心提取
1.1 提取感兴趣区域
利用差影法提取感兴趣区域[7-8]。实际上,差影法就是对图像进行代数运算,代数运算是指对两幅一样大小的输入图像进行点对点的加、减、乘、除计算从而得到输出图像的运算。本文利用差影法中的图像减运算,即有结构光图像G(x,y)与结构光背景图像 g(x,y)相减,得出想要的条纹图像 H(x,y)的方法。其目的是从图像中去掉不需要的信息,保留目标信息,为下面的识别节省时间和排除一些干扰。其表达式:
采集1组图像,一幅有结构光图像和另一幅有结构光背景图像。如图1所示,将两幅图像做减运算,其所得结果如图所示,得到一幅条纹图像,并将结果阈值化。
图1 差影法分割图像条纹信息
1.2 基于连通域的去噪
通过上述的差影法,将得到感兴趣区域——条纹目标。由于激光的光源质量、目标物体表面粗糙度以及激光源以外的光源等因素,使条纹图像中带有大量的噪声,其影响了条纹中心提取的精确。因此,要精确地提取条纹中心还需要尽可能地去除噪声。由于本文提取的目标是线激光,线激光具有方向性强,亮度高和单色性好等特性。根据线激光的特性,这里提出基于连通域标记的去噪方法[9]。
连通区域标记是指利用一定连通规则(4邻域连通、8邻域连通或M邻域连通)的像素点用唯一的标号进行标识。根据线激光的特性,这里选择4邻域的连同规则来标记。
图2 连通域
根据阈值化处理的结果,将灰度值不为0的像素识别为目标,其像素的灰度值为1;灰度值为0的像素作为背景,其灰度值为0。那么这里的连通域标记就可以只对目标进行操作。当灰度值为1时,该点的左边点a2和上边的点a1,如果有一个为目标点,则为当前点标记和此点相同编号;如果两个都是目标点,则选择标号小的,为当前扫描点标记编号;如果都不是,则赋值新的标号。
再次检测,当灰度值为1时,查看该点的左边点a2和上边的点a1,如果有一个或两个为目标点,而比较当前点和另外两点或一点标号大小,将标号大的像素都变为标号小的;如果标号一样大,则继续下个目标点的判断。经过两次标记,具有相同的标号就会组成一个连通域。
那么连通域去噪则是根据条纹图像中条纹目标在整个图像中属于最大的连通域,所以保留最大连通域,删除其余小的连通域。判断连通域大小的依据是对比每个标号中含有像素的个数。
每年11月后,嘉兴地区进入晚稻收割期,如太浦闸大流量供水,将在一定程度上抬高嘉北地区河网水位,虽然对嘉北地区水位抬高的影响比汛期小,但仍将影响部分圩区运行。
如图3所示,其图为连通域标记去噪的效果图。
图3 去噪
2 条纹中心提取
利用细化提取目标条纹的骨架,根据骨架计算法向,在法向上使用质心法求条纹中心点。
2.1 提取目标骨架
利用细化法提取目标骨架,其过程就是一层一层地腐蚀二值图像的边缘像素,直到获得一条单像素的连通线[10]。腐蚀是消除图像连通域边界点的一种过程,其结果使图像连通域的边界向内部收缩,可以把小于结构元素的边界点去除。一般概念的腐蚀运算数学表达式为:
式中,F为腐蚀后的图像,A为待腐蚀图像,B为用于腐蚀运算的结构元素。用B来腐蚀A得到的集合是B完全包括在A中时B的原点位置的集合。换句话说,结构元素B对原图像A腐蚀所得到的图像F是由B完全包含在A中时结构元素B的原点坐标集合所组成。不过在腐蚀边界像素时必须保证目标的连通性,即不能改变原图像的拓扑性。
2.2 确定法向
确定法向的方法很多,如Hessian矩阵法和模板法等,但是这两种缺点是运算量大,很难实现光条纹中心线的快速提取,难以满足实时性要求高的应用场合。所以本文利用骨架点的切向确定法向。首先利用细化法提取激光条纹骨架,再根据每个骨架点求其切向。
图4 法向提取
求骨架的切向是利用骨架点周围的点拟合成直线,其直线方程为:y=ax+b,式中有两个待定参数,a代表斜率,b代表截距。将待检测的点周围几点作为观测数据(xi,yi),i=1,2,3,…,N。其中 N 为点的个数。其拟合直线的方法是利用最小二乘法,用最小二乘法拟合直线,要使下式的值最小:
那么就要对上式的参数a和b分别求偏导得:
化简得
解上述方程组便可求得直线参数a和b的最佳估计值:
至此,可得到检测点的切线斜率a。设法向的直线方程:
2.3 提取结构光条纹中心
提取图像预处理后的条纹点集V(x,y)。在条纹点集 V(x,y)中提取符合骨架点(xi,yi)法向方程点集Ti。根据点集Ti利用质心法求出条纹中心的列坐标,其公式为:
其中,P 为点集 T 中的个数,(xt,yt)为中心点,即可得到精确的条纹中心。
本文算法主要步骤如下:1)对条纹图像和原图像进行减运算得出差值图像,并将其转化为灰度图;2)通过连通域的方法对差值图像去噪;3)使用细化法提取条纹骨架;4)根据骨架点的切向求法向;5)对符合法向上的点使用质心法求取条纹中心。
3 实例分析
为了验证本文算法的准确性、实时性和鲁棒性。本文采用改进的极值法[12]和高斯拟合法与本文算法进行了比较和分析。如图5(a)所示,此幅图像是多形激光条纹图像。并且目标表面反光比较厉害,所以周围的光线对其影响较大,激光打在目标上发散的也比较厉害。对这幅噪声较多且不规则的激光条纹图像分别用这几种算法提取激光条纹中心,其结果如图5中(b)、(c)、(d)结果所示。从结果图得出改进的极值法和高斯拟合法存在漏检和误检的情况。
图5 激光条纹图处理结果图
从上面实验的对比可得出,本文算法在噪声较多且不规则的激光条纹的中心提取上,比其他两种算法有较好的效果。检验一个算法不仅要有好的效果,还要有好的实时性。下页图6是对不同大小图像的几种算法运算时间的比较,从图中可以得出本文算法的运算时间较少,并且比较平缓。
图6 算法时间比较
为验证本文算法的精度,将其与极值法和高斯拟合法在误差上进行实验对比。激光条纹中心提取中的误差主要来自于激光器光束的宽度和亮度分布、物体表面的材质和颜色造成的漫反射,以及周围环境的光线等因素。针对这些问题,本文提出利用激光条纹的某一截面上的条纹点,计算该中心点的误差,其误差公式为:
其中,i为某一截面,σi为该截面的误差,N为该截面上激光条纹点的个数,yj为该截面上条纹点的横坐标,y0为该截面中心点的横坐标。利用误差公式计算极值法、高斯拟合法以及本文算法的误差。利用上述的横截面的误差公式,估算法整幅图像的误差,公式为:
式中,S为激光条纹的截面数,其计算结果如表1所示。
表1 误差分析
从上面的误差计算结果可以得出,本文算法误差要小于其他两种算法,并且条纹越复杂其误差也越大。
4 结论
为了适用于多种工业场合中的结构光条纹中心精确提取,本文提出一种改进质心法的亚像素中心提取算法。通过分析与比较上述几种条纹中心的算法,本文算法既有高斯拟合算法提取精度,又有极值法运算量小的优点。从实例分析中可以看出,本文算法具有鲁棒性好、提取精度高、运算快以及适用性广的特点。