前言
光条中心提取是将宽度大于1的激光曲线用一根像素宽度为1的中心线表示出来,用这个中心线能比较容易地分析图像,提取图像相关特征。激光条纹中心提取的精度和速度直接影响三维测量的结果。对于理想的列车轮对踏面采集图像来说,沿图像亮带垂直方向作切面,在切面上的亮带能量分布应该满足高斯分布(由激光器特性决定)。取最亮点的连线作为亮带的中心线,即可得到列车轮对踏面的像。然而实际成像过程中,由于光条受镜头调制和环境噪声的影响,采集的激光条纹的像素灰度值分布不再严格满足高斯分布,难以提取完整的光条中心线。影响光条中心提取的因素主要包括三类:
1)激光自身的散射使得投影光线本身就存在一定的厚度,另外由于环境光线的干扰也会造成光条灰度分布不均匀;
2)外界环境噪声,成像设备,图像采集卡,CCD/CMOS 感光器件都不可避免存在一些光电噪声干扰,这些噪声随机产生,形态不一,难以重复;
3)被测物体表面的粗糙度会影响光线的反射率,物体表面不同位置会由于反射率不同而造成反射光的强度不同,表现在图上则会造成光条的灰度值不均匀。
严重时光条的灰度值分布完全不再符合高斯分布,局部区域过暗或过亮,造成光条不连续或强散光,尾部出现尾影等。这对图像分割和光条中心线提取都造成了很大的影响。
根据不同算法的理论基础,大致可以分为两类。其中一类是把激光条纹图像的几何中心作为激光条纹中心的提取方法;主要包括边缘法、中心法、阈值法和细化法,其中最常见的是阈值法和细化法。另一类是把光条纹图像的能量中心(灰度中心)作为光条纹中心的提取方法;主要包含极值法、灰度重心法、方向模板法、曲线拟合法、Steger法,其中最近常见的是灰度重心法和Steger法。(综述)下面将按上述两大类算法分别叙述。
一、边缘法
最早用来实现线结构光条纹中心线提取的方法是边缘法和中心法。如图1-1所示,边缘法(又称轮廓法)是以光条纹其中一条边缘(内边缘或外边缘)作为光条纹中心线,边缘法处理速度快,但是会存在很大误差,因此要求图像质量较好且结构光特性较高。对于一些大型物体的测量,由于其精度要求不高,可以采用边缘法。Canny算法是最常见的光条纹边缘提取方法之一,Canny算法需要根据研究对象的灰度分布特点进行针对性分析,调整高阈值和低阈值的大小,同时还需要控制高斯滤波器大小,即选择适当的高斯核。边缘法虽然检测精度不高,但是边缘法的检测思路为后续结构光中心的提取提供了很好的方向。边缘检测可以提取激光曲线的边缘,确定光条区域,缩小光条中心提取的计算范围,提高处理速度,它其他方法结合,可以实现快速准确的提取。
图1-1 边缘法
二、中心法
中心法(又称中线法)是在边缘法的基础上进行改进发展的激光条纹中心线提取方法。中心法是提取光条纹的内边缘线和外边缘线的中线作为光条纹中心线。相比于边缘法,中心法提取的光条纹中心点准确性得到了进一步的提高,但是由于图像中存在噪声的影响和干扰,边缘线的提取会产生误差,从而导致中心法的效果受到影响。因此,中心法适用于形状规则且条纹质量好的物体测量。如图1-1所示左图所示,m、n分别是经过边缘检测得到的两个边缘坐标位置,则结构光的中心位置可以由公式(1-1)得出:
中心法操作起来简单,处理速度较快,但需要准确的边缘检测,对图像质量要求较高,并且对噪声较为敏感。除此之外,激光条纹出现缺失的情况下,结构光光条中心提取会出现误差,并且所提取的中心线会向条纹缺失的反方向移动,如图1-2所示。结构光光条的右边缺失,光条中线会向左移动至 移动,从而产生距离为 的误差,这种误差如果不考虑利用光强信息的情况下是无法消除的。
三、阈值法
阈值法是根据研究对象的光条纹分布特征进行初步分析,在光条纹横截面上选取一对合适的阈值点对激光条纹进行分割,并将这两个阈值分割点的中点位置作为光条纹中心点,算法简单,计算速度快,受噪声影响准确率不高。如果在两个阈值分割点之间出现干扰噪声,提取到的光条纹中心点和实际的光条纹中心点偏离较大,从而导致该方法提取精度较差。因此,如果能够找到合适的阈值对光条纹进行分割,可以采用阈值法粗略估计光条纹中心线的位置。
如图1-3左图所示,设置阈值T,沿着光条的法线方向对激光条纹进行扫描,找到接近阈值T的位置m、m+1、n、n+1,找到分别对应图像的灰度值G(m)、G(m+1)、G(n)、G(n+1),然后用线性插值法求出p、q的位置。p、q可以由线性插值公式(1-2)、(1-3)得出。然后利用公式(1-4)可以直接求出中心坐标o。
阈值法速度较快,单精度很差,当存在大量干扰噪声是,效果很不理想。如图1-3右图所示,当受到噪声干扰时,阈值法求出的结构光光条中心会移动到 ,和真实的光条中心位置会产生 的相对误差。阈值法只适用于较为粗略的骨架位置。
四、 细化法
细化法(又称形态学骨架法)是通过对光条纹不断地进行腐蚀操作,剥离光条纹边界,得到单像素宽度的光条纹连通线(又称骨架)的形态学处理方法。该方法是通过细化技术,将光条纹区域的细化曲线作为光条纹中心线。 由于细化法是基于形态学的方法,只是对光条纹骨架进行提取,没有考虑到光条纹的横截面灰度分布特点。因此,细化法提取的光条纹中心线精度有限。另一方面,由于该方法需要大量时间来进行反复的细化操作,提取算法的运算速度被大大降低。
细化的方法有很多种,下面介绍一种常用的Zhang-Suen细化算法。细化算法的一般分为以下四个步骤,(1)标记将被删除的边界点;(2)删除做了标记的点;(3)继续标记将被删除的剩余的边界点;(4)删除标记过的点。反复应用这个基本过程,直到再也没有被删除的点为止,此时算法终止,生成了该区域的骨架。假设目标像素点标记为1,背景像素点标记为0,在图1-5中 的八个邻域如图所示,Zhang-Suen算法第一步循环所有前景像素点,对满足如下公式(1-5)的像素标记点进行删除。第二步和第一步类似,满足公式(1-6)的像素 标记点记为删除。循环上述两个步骤,直到两步中没有像素标记点记为删除为止,输出图像即为二值图像细化后的骨架。
其中 表示八个邻域中非零像素标记点的个数(二值图像只有0和1), 表示八个邻域中,按照顺时针方向,相邻两个像素出现0→1的次数。
细化法由于需要做多次膨胀腐蚀操作,耗时较多,处理速度较慢,另外细化法对二值化的要求极高,往往因为噪声的干扰,将图像二值化会出现较大的误差。细化法属于形态学范畴,没有利用到灰度值之间的信息,因此对于复杂条件下的激光曲线提取效果较差。
另一类光条纹中心线提取方法是按能量中心提取的方法。此类的中心提取的方法主要包括极值法、灰度重心法、方向模板法、曲线拟合法和Steger法。
五、极值法
极值法首先需要获取光条纹横截面的灰度分布函数,并对其进行梯度运算。梯度值等于零处的像素点就是光条纹中横截面灰度极大值点,并将该点作为光条纹中心点。极值法要求激光条纹截面的灰度分布近似成理想高斯分布,由于受到环境噪声的影响,列车轮对表面的激光条纹灰度分布并不是理想的高斯分布,如果在这种情况下使用极值法提取光条纹中心线,得到的光条纹中心点有可能是局部的极值点,造成提取结果出现较大的误差。如图1-5左图所示,当光条的灰度分布成理想的高斯分布式,极值法可以快速的提取出激光光条的中心。在受到噪声干扰时,如图1-5右图所示,最大值已经不再原来的位置,而是到了噪声的地方,因此和真实的光条中心会存在Δo的误差。在信噪比较低的列车轮对的检测环境下,该方法难以适用于动态环境下列车轮对激光条纹中心线的提取。
六、灰度重心法
灰度重心法是根据每行光条纹横截面内的灰度分布特征逐行进行处理,通过在行坐标的方向上,逐行计算提取光条纹区域的灰度重心点,并将该点用来代表该截面的光条纹中心点位置,最后将所有中心点拟合形成光条纹中心线。具体操作步骤是,先对图像进行滤波除去噪声,然后再用阈值分割,保留大于阈值的部分,如图1-6左图是分割前的图像,图1-7右图是分割后的图像,其中区间(m, n)由阈值T决定。灰度重心法计算光条纹中心点的公式见式(1-7),光条纹第v列的灰度重心坐标为 ,在包含U行、V列的图像中坐标(u, v)处的像素灰度值为I(u,v),其中u=1,2,3,…,U; v=1,2,3…,V。
灰度重心法减小了光条纹灰度分布不均匀导致的误差,提高了光条纹中心线提取精度,而且由于算法简单,运用灰度重心法提取光条纹中心线时运算速度快,实时性好。但由于在每行的光条纹截面中参与计算的像素点的总数量不同,噪声干扰也会影响计算精度,所以中心点的位置坐标会出现沿行坐标方向的偏移误差。
七、方向模板
方向模板法是由胡斌等提出的一种利用可变方向模板检测结构光条纹中心的方法,是基于灰度重心法的改进算法[5]。当线结构光投射到粗糙的物体材料表面时,光条纹会产生偏移与形变等现象,在精度要求不是很高的情况下,可近似地构建光条纹发生偏移的四个方向模板,即水平、垂直、左倾45°、右倾45°四个偏移方向。对应上述光条纹发生偏移的四种偏移模式,构建四个方向的模板(四种方向模板见式1-8、1-9、1-10、1-11、1-2),对光条纹截面各行的像素块分别用四个模板进行卷积操作,将计算得到的响应值最大的像素块中心作为该行光条纹截面的条纹中心点。设图像大小为row行,col列,模板在图像的某一行i上滑动,例如第i行,第j列对模板 有:
模板𝐾1,𝐾2,𝐾3分别有对应的响应值𝐻𝑝1、𝐻𝑝2、𝐻𝑝3,如果有𝐻𝑝=𝑚𝑎𝑥{𝐻𝑝0,𝐻𝑝1,𝐻𝑝2,𝐻𝑝3},则第i行上激光条纹中心位置为点𝑃处。方向模板法是一种可以克服白噪声干扰的光条纹中心线提取方法。除此之外,在一定程度上,方向模板法还可以用于断线的修补与连接,但受限于有限的模板方向,纹理复杂的实体物体的表面将可能会直接导致一个条纹朝着较多的方向移动产生高度偏移。在精度要求更高的物体测量过程中,仅选取四个方向的偏移模板不再能够满足实际任务中测量精度的需求,但是选择更多不同的方向模板又会出现运算时间和计算量进一步增加的问题,影响处理效率。
八、曲线拟合法
曲线拟合法是利用峰值点附近的像素坐标和灰度值拟合曲线,可以达到亚像素提取,如果结构光光条的横截面灰度分布近似高斯分布,那么光条的中心可以认为是光强分布的峰值,利用曲线拟合可以很快得出曲线方程。下面介绍常用的高斯曲线拟合。从上到下逐行扫描滤波后的图像,对每一行像素点的灰度值分别进行高斯曲线拟合,求得各曲线的峰值,记录位置,该位置即为光条中心。
高斯拟合的原理如下:设有一组实验数据 ,对它进行高斯描述如公式(1-14)。
Steger
九、Steger
Steger算法是目前使用最广泛的线结构光条纹中心提取算法之一,是由Steger在二十世纪末提出[6,7]。Steger算法是基于Hessian矩阵(见式1-18)得到图像中光条纹的法线方向。
图像中点的法线方向由该点的Hessian矩阵最大特征值的绝对值对应的特征向量给出,通过在法线方向上求极值点得到光条纹中心的亚像素位置。g(x,y)是二维高斯卷积核,用于突出光条的灰度分布特征。z(x,y)是以图像上的点(x,y)为中心,与二维高斯核大小相等的图像矩阵。该方法具有精度高,稳健性好等优点,但是Hessian矩阵对图像求方向导数的过程运算量巨大,无法实现光条纹中心实时提取的效果。除此之外,如果高斯核选取不合理还会导致图像信息失真。