结合高斯滤波器和骨架的结构光中心提取算法

2022-08-18 08:29熊厚旺陈建政
机械制造与自动化 2022年4期
关键词:运算量中心线像素点

熊厚旺,陈建政

(西南交通大学 牵引动力国家重点实验室,四川 成都 610031)

0 引言

线结构光测量技术具有稳定性高、抗干扰性强的特点,在三维图像处理系统中运用广泛[1]。其主要工作原理是激光器产生的线结构光束投射在被测工件表面,利用CCD相机拍摄调制后的结构光光带图像,再依据光带中心位置的偏移信息计算求得目标物体的三维几何参数。其中快速、准确地提取光带条纹中心的位置是测量技术的关键。

常见的光条纹中心提取方法有极值法、曲线拟合法和灰度质心法等。大多数算法经过改进后在精度上能够满足测量需求[2-3],但忽视了对提取速度的分析,而且光条中心提取速度影响着检测系统的实时性。测量实时效果好才能带来更好的使用体验和实际应用价值。如今,采用车载方式进行动态巡检是现代轨道交通基础设施检测及维护的发展趋势,这需要车载检测系统能够迅速处理采集的数据并发送指令至执行端,或将处理好的数据发送至终端,让相关人员了解检测对象实时的情况。例如无人驾驶技术需要检测系统的反馈及时并对周围环境进行实时的监测。

目前越来越多研究重心放在提高光条中心的提取速度上。雷海军等[4]提出了一种将阈值法和可变方向模板法相结合的快速检测结构光光条中心的方法;孙军华等[5]利用卡尔曼滤波实时预测激光光条所在的区域,使用灰度最大值法和海森矩阵法相结合的方法提取光条中心亚像素坐标,使计算速度显著提升。Steger算法具有精度高,鲁棒性好的优点,其缺点是运算量大,难以实现光条中心的快速提取。

本文将在Steger算法的基础上进行改进,引入光条骨架,将算法运算区域集中在光条骨架附近,同时利用IIR型高斯滤波器提高海森矩阵的运算效率,求得光条纹各点的法线方向,并在该法线方向寻找光条中心点。

1 Steger算法基本原理

Steger算法是对曲线拟合思想的改进,处理图像时把图像按二维函数进行处理,寻找二维函数极值点,把像素点用二次泰勒公式展开,通过计算该多项式极值的方法来寻找光带中心。

设图像的任意一点的像素坐标为(x0,y0),对图像用二次泰勒公式展开:

(1)

由表达式可知,对图像采用泰勒公式展开时,需要求解图像的各项偏导数rx、ry,、rxy、rxx和ryy。图像偏导数一般采用卷积模板的方法进行求解。由于激光条纹的高斯分布特性,采用高斯函数的各项偏导数作为卷积模板,与图像r(x,y)进行卷积,得到各项偏导数。

泰勒二次展开公式第三项系数为海森矩阵,如下式所示:

(2)

式中g(x,y)为二维高斯函数。

由海森矩阵的性质可知,H(x,y)的两个特征值分别对应图像像素点(x,y)处的二阶极大值和极小值,对应特征向量描述了特征值方向。设 (x0,y0)的法线方向为 (nx,ny),在(nx,ny)所指方向上寻找二阶导数大于设定阈值的点即中心特征点,若求得特征点,则法线方向(nx,ny)与H(x0,y0)中最大绝对特征值的特征向量对应,r(x0,y0)在(nx,ny)方向上的二阶导数与H(x0,y0)最大绝对特征值对应[6]。

图像像素点(x0,y0)沿上述法线方向(nx,ny)的泰勒展开可以表示为

(3)

式中:t为像素点(x0,y0)沿法线方向移动寻找特征点的步长系数,(tnx,tny)为像素点在法线方向的偏移量。对于二维图像r(x,y),因为结构光截面呈高斯分布,则在光带中心点处一阶导数过0点,可认为在法线方向(nx,ny)上一阶导数为0,并且二阶导数绝对值极大值所对应点为光带特征中心点,则将式(3)对t进行一阶偏导[6]:

(4)

联立式(3)、式(4)求取能满足光带中心点条件的t:

(5)

则图像灰度极值点为(px,py)=(x0+tnx,y0+tny)。

通过对Steger算法的原理分析可知,为了得到海森矩阵,该算法需要对图像各个像素点进行5次二维高斯卷积计算,若图像大小过大会增加算法的运算量,很难实现中心线的实时提取。因此,需要从两方面对该算法进行优化:1)光条边缘部分大多数情况下并不是光条的理论中心位置,可以尽量避免光条的边缘点参与算法的运算过程;2)若二维高斯模板的大小为n×n,则一次二维卷积的运算量为n2次乘加,图像和高斯模板越大,卷积运算的运算量就越大,可以针对卷积运算过程进行简化,以减少运算量。

2 对传统Steger算法的优化

2.1 引入光条骨架对光条中心区域进行定位

骨架是二维二值目标的重要拓扑描述,它是指图像中央的骨骼部分,是描述图像几何及拓扑性质的重要特征之一,同时具有较高的提取速度。将其应用在结构光中心提取领域,能够快速地定位光条的中心区域,在对光条各行进行算法运算时,优先对骨架点所对应的光条点进行该点海森矩阵的求取,若所得结果不满足判断条件,则对该点相邻位置的其他像素点进行运算,直至求得满足条件的光条中心点。

2.2 IIR型高斯滤波器对卷积运算的简化

LI B C和MA S D[8]提出,任意形状的滤波器都可以用递归的方法实现,文献[9]分析了高斯滤波器及其微分形式滤波器,并提出各形式滤波器的递归算法。这种滤波器称为IIR(有限长单位冲激响应)型的高斯滤波器,也被称为递归滤波器。本文将该递归优化算法应用在对图像高斯卷积运算的优化上,以提高传统Steger算法的运算效率。

递归高斯滤波是在高斯函数基础上的一个近似表达式:

(6)

式中a0、a2、a4、a6都是能算出的常数。

由于高斯函数的傅里叶变换仍为高斯函数,用q代替σ,分子用A0代替,则在傅里叶域中,高斯函数的近似表达式为

(7)

用s=jw代入式(7),即可得拉普拉斯域高斯函数的近似多项式

(8)

将上式进行因式分解并进行Z变换将表达式由s域转至z域,得到以下两式:

(9)

(10)

最后利用Z变换的时域特性对式(9)求解差分方程:

⟹A1X(z)=b0Y(z)-b1z-1Y(z)-b2z-2Y(z)-b3z-3Y(z)

⟹A1x[n]=b0y[n]-b1y[n-1]-b2y[n-2]-b3y[n-3]

⟹y[n]=Bx[n]+(b1y[n-1]+b2y[n-2]+b3y[n-3])/b0

(11)

同理由式(10)求解差分方程:

y(n)=Bx(n)+[b1y(n+1)+b2y(n+2)+b3y(n+3)]/b0

(12)

式中B=1-(b1+b2+b3)/b0

式(11)为高斯滤波的前项递归输出,式(12)为后项递归输出。对图像先后进行这两个差分方程计算就能实现高斯滤波。由于对图像的高斯滤波就是利用高斯滤波器对图像进行高斯卷积的结果,假设输入图像为Pin[n],在对图像进行前向递归得w[n],再进行后向递归后,得到高斯卷积结果Pout[n]为

(13)

式中:

b0=1.578 25+2.444 13q+1.428 1q2+0.422 205q3

b1=(2.444 13q+2.856 19q2+1.266 61q3)

b2=-(1.428 1q2+1.266 61q3)

b3=0.422 205q3

对图像高斯卷积的一阶微分、二阶微分前项递归输出和后项递归输出为:

通过分析高斯卷积及其微分形式的递归式可发现,该方法相对于传统Steger算法,受高斯核σ的影响减小,传统Steger法的卷积模板大小与高斯核取值有关,而高斯核的取值又与光条宽度有关,高斯核增大会造成高斯卷积模板增大,最终导致运算量的增加。而在本文方法中σ仅用于定义q值,b0、b1、b2、b3和B为与q有关的值,在对某一行光条进行中心点提取时只被计算一次。因此高斯卷积结果求解过程的计算量固定,且本次的输出结果能作为下一点计算的输入值,这使得海森矩阵的计算效率大大提升,能有效提高结构光中心提取速度。

2.3 结构光中心提取步骤

对于一张光条图像,用本文所介绍方法进行中心线快速提取需进行如下步骤:

1)提取光条骨架上一点p,并定位该点在光条图像中的对应点P;

2)得到点P所在行的光条宽度w,以w的值确定高斯核σ,再以高斯核σ确定递归算法的系数q、b0、b1、b2、b3和B;

3)利用高斯卷积及其微分形式的递归表达式计算各项偏导数rx、ry,、rxy、rxx和ryy;

4)求解点P海森矩阵的特征值和特征向量,得到P点的法线方向;

5)判断法线方向一个像素范围内是否存在满足条件的特征点。若存在,则该特征点为光条中心点,取骨架下一行点,重复步骤1),若不存在,则取点P相邻点,重复步骤3)。

在提取完所有光条骨架点后,结构光中心线提取流程结束。

3 实验分析

为验证改进方法的可靠性,分别从提取效率、提取效果以及提取精度3个方面对改进算法进行实验分析。实验基于三角测量法的线结构光测量系统,模拟实际应用场景,选取地铁接触轨测试模型作为测量对象,利用接触轨检测装置对模型进行试验。实验拍摄到的光带图像如图1所示。由于相机拍摄角度问题以及被测物拍摄面存在深度差,导致4幅图中光带存在不同程度的偏折甚至断连现象。骨架的提取采用ZHANG Z并行快速细化法[10],提取效果如图2所示。

图1 相机拍摄所得光条

图2 光条细化所得骨架

3.1 提取效率分析

由于Steger算法运算量大,将在该方法上所耗费的时间作为影响提取效率的指标,比较传统Steger算法和本文改进Steger算法运算时间,在Steger算法函数开始和结尾处增加计时函数,记录运行时间,改进方法除了记录递归算法运行时间外,还需记录骨架细化的时间。在针对Steger法的优化上使得运算量越小,运算时间越短,实时性就越好。表1为两种算法对4种光条图像进行多次中心线提取所耗费的平均时间。

表1 两种算法提取4幅图像中心线所耗费时间对比 单位:ms

从表1可以看出,引入骨架后,在Steger法上所耗费的时长有了明显的缩减,提取光条1和2的中心线所花费时间减少了58.6%和57.1%;提取光条3和4中心线时间减少更为明显,分别减少了70.6%和76.9%。这主要是因为光条3和4像素点个数更多,在利用骨架对光条中心区域定位后,避免了边缘位置的像素点参与到运算当中,减少了计算量。为了验证骨架的定位效果,对两组递归算法进行运算次数的统计,其中一组引入骨架,另外一组不引入骨架,统计结果如表2所示。在引入骨架后,像素点参与运算的次数大幅减少,且光条3和光条4原本运算次数较多,在算法改进后,运算次数的减少尤为显著,因此在时间优化上的提升也更突出。

表2 4种光条像素点在两种算法中参与运算的次数 单位:次

3.2 提取效果分析

光条2、光条3中心线提取结果如图3所示。因为两种方法本质上都是利用海森矩阵在法线方向求取光条中心,可见除上下端部及中间偏折位置有明显区别外,其余区域无明显区别。为了进一步验证改进方法不仅能较少运算量,还能保证中心线的提取与原方法相同,采用图像相减法验证。

图3 新老方法提取结果对比图

图4为经过相减函数得到的结果图,二者的区别主要表现在端部和光条有明显中断的位置。中断处存在差别是因为原图像偏折位置存在中断导致骨架存在中断,中断位置无法提取中心点,所以改进方法更符合实际情况;端部位置则是由于该处结构光离散度大,传统算法会提取出多个符合条件的中心点,这也是传统算法存在的一个问题。此外端部和中断位置点都不是检测后续转换计算的目标点,因此改进方法所求中心线符合提取要求。

图4 新老方法结果相减图

3.3 提取精度分析

以光条3在两种方法处理下得到的光条中心线为分析对象,在中心线不同位置提取10组对应点,分析改进方法的提取精度,对应点的坐标值及误差值如表3所示。

表3 两种算法所提取10组对应点的坐标值及误差 单位:像素

通过观察表3可发现,10组对应点在x或y方向坐标差值在0.1像素左右。计算后求得x方向的RMS误差为0.085,y方向的RMS误差为0.063,说明改进方法在利用高斯滤波器简化运算过程中并未造成严重的精度损失,两种方法提取精度接近。

4 结语

在地铁接触轨与运行轨几何参数检测的实际应用中,针对检测需满足实时性的要求,提出结合IIR高斯滤波和定位骨架方法,对现有仍存在运算量大的自适应线宽的Steger法进行改进。该算法先利用光条骨架对光条中心区域进行定位,再利用高斯滤波器的递归算法简化传统Steger算法的高斯卷积运算,实现光条中心线的快速提取。实验结果表明:该算法能有效减少Steger法的运算时间,同时能提取得到与原方法相同的光带中心,具有良好的测量精度,能够帮助检测系统实现实时检测的功能。

猜你喜欢
运算量中心线像素点
立式水轮发电机组“三条线”浅析
图像二值化处理硬件加速引擎的设计
基于局部相似性的特征匹配筛选算法
浅析某船重要设备底座与基准平台偏差的纠正措施
树叶竞技场
用平面几何知识解平面解析几何题
基于像素点筛选的舰船湍流尾迹检测算法
减少运算量的途径
基于canvas的前端数据加密
让抛物线动起来吧,为运算量“瘦身”