增强现实飞机维修过程中角点检测方法优化

2020-11-17 06:27石旭东黄加旺
计算机工程与设计 2020年11期
关键词:维纳滤波角点邻域

石旭东,黄加旺,黄 琨,徐 萌

(中国民航大学 电子信息与自动化学院,天津 300300)

0 引 言

传统飞机维修依赖纸质维修资料使得维修效率普遍不高,且飞机维修要保证飞机航行绝对安全,对维修失误零容忍[1]。针对以上问题,增强现实[2](augmented reality,AR)与飞机维修结合可提供给维修人员实时、准确的维修引导,而实时、准确的引导关键在于图像识别算法的速度和精度。本文重点研究图像识别中的角点检测环节,传统角点检测算法速度较慢,阈值选取不当会提取到伪角点或产生冗余、不足,越来越多的学者开始对传统算法进行优化。文献[3,4]中兰红等用聚类算法马氏距离代替SURF算法欧氏距离,张立亭等提出基于灰度差分与模板的快速Harris算法,两种方法均提高了算法准确性,且后者相比前者降低了算法时间复杂度。文献[5,6]中朱聪等提出基于相似像素Harris算法,徐振武等提出多阈值圆形非极大值抑制法,赋予算法尺度和旋转不变性,后者相比前者优化了阈值选取环节。Lei Fei等[7]结合K-D树和RANSAC算法,滤去大量误匹配,但算法速度提升不明显。R.Manoranjitham等[8]提出双边Harris角点检测器,优化后鲁棒性增强。Songqi Han等[9]用B样条函数滤波获得初始点集,但阈值选取方法还需优化。陈洪等[10]提出自适应灰度差阈值的SUSAN算法,Ly算子探测概略角点集,得到精确角点特征。

本文从提高速度精度和可匹配性方面入手,首先用维纳滤波复原图像和8邻域比较法筛选初始点集。然后为算法找出最优的角点质量等级和相邻角点最小距离限度,用具有最优参数的Harris算法对点集进行再筛选,快速得到准确分散的目标角点集。

1 改进角点检测算法总体流程

1.1 Harris角点检测算法

关于角点的定义,到目前为止没有明确的数学定义,可以认为角点是定区间内的极值点,是一些某方面属性特别突出的点,或是在某些属性上强度最大或者最小的孤立点、线段的终点,或者是曲线上局部曲率最大的点[11]。

(1)

高斯取样窗口函数W(x,y) 可表示为

(2)

根据二维泰勒级数展开灰度函数I(x+u,y+v),得到

A(u,v)≈∑W(x,y)[I(x,y)+uIx+vIy-I(x,y)]2=
∑W(x,y)[uIx+vIy]2

再化为二次型的形式,得到

(3)

然后我们令矩阵Mat

(4)

运用Sobel算子求两个方向上的梯度,其中,Ix是灰度图像在x方向的梯度,Iy是在y方向的梯度,⊗表示卷积。

Mat矩阵特征值的大小与特征点的性质相关,计算出矩阵的两个特征值e1、e2,分别求出矩阵的行列式det(Mat)=e1e2,矩阵的迹trace(Mat)=e1+e2。

可以计算Harris角点响应函数

CRFH=det(Mat)-k(trace(Mat))2

(5)

一般k取0.04-0.06。得出CRFH后,需要设定合适的阈值,筛选出大于阈值的点即为角点候选点。这就是Harris角点检测法的基本原理。

Harris算法存在着一定的局限性:

(1)在非极大值抑制过程中,阈值选取的随意性导致特征点的冗余或不足。

(2)传统算法中乘法的计算量大,所以整体算法耗时较长。

(3)算法的可靠性不足,会出现伪角点。

1.2 改进算法的总体流程

对于增强现实诱导飞机维修系统,维修对象识别的准确性是系统性能的关键,维修对象样本图片质量的好坏也是图像识别能否准确的基础。维修现场光照条件恶劣,同时采集的对象图片存在噪点,要用滤波方法滤去图像中的噪点,保证图像识别过程的准确性,为整体算法的改进做铺垫。

步骤1 对维修对象样本图片进行维纳滤波,去除噪声复原图像。此外,维纳滤波的效果和与高斯滤波的对比图已展示在第2.2节“优化算法实验结果分析”中。

步骤2 利用8邻域比较法,对初始点集进行筛选,获得候选点集Collection1。

所谓8邻域比较法,即以各像素点(除第一行、第一列、最后一行、最后一列外所有的点)为中心构建一个3×3的方形区域,计算周围8邻域像素点与中心像素点之差Δ的绝对值,设定一个阈值Tsim(Tsim>0,其中sim取自similar,表相似),当Δ

(6)

(7)

S(i,j) 是标记函数,以 (i,j) 为中心对其8邻域内像素点相似记1,不相似记0。

容易得知:Nsim(i,j)∈[0,8] 内的整数。

分析Nsim(i,j) 的值,可以推断:

(1)Nsim(i,j)=8时,说明中心像素点周围像素点都是相似关系,所以判断该点不是角点。

(2)Nsim(i,j)=7时,说明邻域内只有一个点与中心像素点不相似,此类情形下中心像素点不能被确定为角点。

(3)Nsim(i,j)=1时,与情况(2)互为反事件,在邻域内与中心像素点相似的点只有一个,此点可能是角点。但图1中不能确定各灰色方块间是否相似,如果8邻域内相似的灰色方块数量大于4时,证明灰色方块之间灰度变化较平坦,所以与之不相似的中心像素点可能是孤立的噪声点,此类像素点应排除。

图1 Nsim(i,j)=1时中心点与邻域的相似关系

(4)Nsim(i,j)=0时,该中心像素点为孤立像素点或者是噪声点,应排除此类像素点。

(5)Nsim(i,j)=(2,3,4,5,6) 时,将这类像素点列为候选点,对其计算角点响应函数进行筛选。

经过8邻域比较法筛选得到候选点集这一步骤,过滤了大约60%的非特征点,大大降低了算法的时间复杂度和空间复杂度。

步骤3 对Collection1利用Sobel算子对候选点集分别进行对x方向和y方向的梯度求算,得到Ix,Iy。Sobel算子具有一定的优势,计算简单且分割速度快,能够更多地提取图像的细节信息[12]。它还是一种加权平均的算子,距离不同有着不同的权值,一般来讲,距离越远,影响越小。光照等自然环境的改变不会影响Sobel算子的计算值,Sobel算子的鲁棒性更强。

步骤4 利用求出的每对Ix、Iy计算矩阵Mat。求出特征值e1,e2。利用Harris角点响应函数公式计算出角点响应函数CRFH值,找出CRFH的最大值CRFHMAX。令阈值TH=Q×CRFHMAX。利用阈值TH筛选点集,得到Collection2。

步骤5 在得到点集Collection2后,利用该算法可自行设置一个可识别到的最大角点数,并为该点集设定一个角点质量等级Q,再选取一个相邻角点最小距离限度值Dmin,使选取的角点更加稀疏,更加准确,易于后期的图像配准,最后角点集TargetCollection即为所得。

图2是算法总体流程。

图2 算法总体流程

2 实验过程与结果分析

2.1 最优参数求取过程

然而,找到最优的角点质量等级和最优的最小距离限度值是算法整体品质提升的关键。角点质量等级Q(QualityLevel)控制着截止阈值的大小,有以下关系

TH=Q×CRFHMAX

(8)

Q越大识别到的角点质量越高,反之就越来越粗糙;与此同时,随着Q的变化,得到的角点数量也会随之变化,Q越大,得到的角点数量就越少,维持角点质量和数量的动态平衡是算法品质的关键。

另外,角点成群出现的现象会影响后期特征点匹配的过程,所以要为相邻角点间设定一个最小距离限度值Dmin(下标min表minimum,意为最小)。和角点质量等级Q的选取一样,Dmin的选取也会引起角点识别数量的变化,角点识别准确率和相邻角点最小距离限度的平衡也是需要考虑在内的。

设一个角点群有3个点,分别为A(x1,y1)、B(x2,y2)、C(x3,y3),有下式

(9)

根据需求,确定最小距离限度值Dmin。从角点集只有3个点的情况入手,求出角点集内任意两点间距离并将其与给定的Dmin作比较,将比较结果与表1的8种情况进行对照,对角点进行分析和有选择性的保留。对于“留其一”的情况,此类点要与集外相邻角点重复进行上述步骤,层层筛选,可得到最终的角点集。

表1 3个角点的保留情况

了解了角点的保留情况,再利用控制变量的思想,确定最大可识别到角点数量为300,设定相邻角点最小距离Dmin=10 pixel(因为角点是通过圆圈标记的,圆圈具有一定的半径,当Dmin=10 pixel时,是满足圆圈不相切不交叠的最小距离Dmin=9 pixel和Dmin=10 pixel情况下的对比如图3所示,在图3(a)中可以发现白色圆圈内还存在角点标记的交叠相切现象,图3(b)中没有此现象,所以选取Dmin=10 pixel)。改变变量角点质量等级Q的取值,在Visual Studio 2015环境下借助OpenCV函数库运行改进Harris算法。步骤如下:从0开始(最大角点个数300,角点识别准确率80.7%),以0.01为步长,直至0.3为止(Q=0.3时只能得到25个角点,以后的数据无意义),改变Q的取值在算法中运行得到角点质量等级与最大角点个数和角点检测准确率的关系,见表2。将表2数据用Matlab进行图象绘制,如图4所示。

表2 角点质量等级与最大角点数量和角点检测准确率的关系

图4 角点质量等级与最大角点数量和角点检测准确率的关系

虽然图像后段的识别准确率较高,但识别到的角点很少,根据式(10)可知,求取的R值不能满足图像识别的需要。考虑到角点数量和角点识别准确率的平衡,只有两个点符合要求,分别是(0.14,261,89.2%)和(0.15,243,89.3%),相比之下Q=0.15时对应的准确率是邻域内的极值,所以得到最优角点质量等级Q=0.15。那么同样地,控制变量Q=0.15,相邻角点最小距离从0开始(此时,最大角点个数:281;角点识别准确率:80.4%),以2 pixel为步长,直至60 pixel为止(当设定的相邻角点距离值大于60 pixel时,角点个数小于55,以后的数据无意义),得到相邻角点最小距离与最大角点个数和角点检测准确率的关系,见表3。将表3数据用Matlab进行图象绘制,如图5所示。

表3 相邻角点最小距离与最大角点数量和角点检测准确率的关系

图5 相邻角点最小距离与最大角点数量和角点检测准确率的关系

从中选取了3个点(14,237,83.9%)、(16,211,85.3%)、(18,187,86.0%)作为候选,依照增强现实工具Vuforia中的“五星”增强现实标记(“五星”说明图像在增强现实系统中图像识别效果极好),如图6:该图像素为320×212,特征点(图中用“十字”符号表示)179个,那么特征点占比

(10)

图6中R=179/(320×212)=0.264%。

图6 增强现实标记

维修样本图片的像素为260×314,那么

RDmin=14=237/(260×314)=0.290%
RDmin=16=211/(260×314)=0.258%
RDmin=18=187/(260×314)=0.229%

可以发现RDmin=16=0.258%与图6特征点占比R=0.264%最为接近、吻合。反观Dmin=14和Dmin=18两种情况,当Dmin=14时,通过观察表3得知此时角点识别准确率为83.9%,相对于Dmin=16时较低;当Dmin=18时,虽然角点识别准确率为86.0%相对于Dmin=16时较高,但是此时获得的角点数量较少,同时0.229%的占比和标准特征点占比R=0.264%相比差距过大,对图像的识别效果有一定影响,所以权衡多个要素最后选取Dmin=16作为最优相邻角点最小距离限度。

上述部分主要运用了控制变量的思想,充分考虑角点准确性与分散程度的平衡,分析得出了最优的角点质量等级Q=0.15和最优的相邻角点最小距离限度Dmin=16 pixel。

将两个最优参数带入新算法进行实验。

针对1.1节传统Harris算法所提出的3点弊端,优化后的算法可以从以下3个方面弥补传统方法的不足:

(1)在优化算法中,选取最优角点质量等级,即为选取最优阈值,规避了阈值随意选取导致特征点冗余或不足的现象。

(2)维纳滤波滤除噪点,8邻域比较法筛去约占总像素点60%的非特征点,所以进入算法的特征点仅为总像素点的约40%,Harris算法中包含大量的乘法运算,行列式运算和导数运算,如果每个像素点都经过一遍算法流程,那算法时间会过于冗长,初筛特征点这一过程大大提高了算法的运行速度。且8邻域比较法中的运算主要是加减法运算和比较运算,以16位二进制数为例,相对于乘法运算,加减法的运算负担小了很多,加减法的运算速度约是乘法的10倍甚至更多,所以综上,优化算法总体速度有了显著提高。

(3)在选取最优角点质量等级和最优相邻角点最小距离后,角点的分布更加准确分散,在很大程度上杜绝了伪角点、冗余角点的出现。

2.2 优化算法实验结果分析

以某型飞机电子舱的图片为例,对该图片进行灰度处理并添加模糊和噪声,分别运用维纳滤波法和高斯滤波法在MATLAB环境下对处理后的图片进行滤波处理,两种滤波方法的效果对比如图7所示,可以看出经过维纳滤波复原的图像更加清晰且还原度更高,高斯滤波复原图相比之下更加模糊,仍然存在少量噪声,所以维纳滤波滤去的噪声点远比高斯滤波滤去的要多。实验结果表明,对于图像预处理,滤波方法应优选为维纳滤波法。

图7 高斯滤波与维纳滤波的比较

在增强现实诱导飞机维修系统中,发动机的检查与维修也是其中的关键流程,所以以飞机发动机的特征识别为例,在Visual Studio 2015环境下,利用配置好的计算机视觉函数库OpenCV(版本:3.1.0),在Harris角点检测算法的基础上对算法进行编写和修缮。实验结果如图8所示,图8(b)、图8(c)、图8(d)的角点标记均为白色圆圈。

图8 实验结果

对于图8(b)可以看出,传统Harris算法识别出来的角点不是很分散,伪角点较多,存在角点成群甚至重叠的冗余现象,与此同时也存在着角点漏检的现象。

如图8(c)中所示是参数为Q=0.05和Dmin=8 pixel的默认情况,图中白色圆圈标出了角点簇的分布,这种现象表明角点分散的效果不理想,为后期图像匹配制造了障碍。从图8(d)中可以看出,在Harris算法的基础上,同时在角点质量等级Q=0.15和相邻角点最小距离限度Dmin=16 pixel后,检测出来的角点更加准确,更加分散,选取的角点清晰,这样一来对图像的特征点匹配更加有利,在很大程度上减少了误匹配的发生。

根据表4可以发现,本文优化算法首先在时间复杂度上仅为传统Harris算法的53.6%。在准确性上分别比传统算法和默认情况下分别提高了14.7%和3.7%。综上所述,本文优化算法在速度和精度方面都有很大程度的提高。

表4 3种算法的性能比较

3 结束语

综上所述,本文针对传统角点检测算法存在的弊端对算法进行了优化,与传统的Harris算法相比,角点更加分散且清晰,改进后的算法在准确度上有了很大程度的提高。

(1)维纳滤波和高斯滤波相比在图像复原方面有着更强的性能,去除噪点的效果更好。8邻域比较法滤掉了将近60%的非特征点,使得算法时间复杂度降低至传统算法的将近一半。

(2)角点质量等级和相邻角点最小距离的最优选取满足了角点数量、角点分散程度和角点识别准确率的最佳平衡。

(3)准确、快速的角点识别和清晰分散的角点分布可以满足后期样本图片与维修现场的匹配。

猜你喜欢
维纳滤波角点邻域
一种改进的Shi-Tomasi角点检测方法
基于混合变邻域的自动化滴灌轮灌分组算法
多支撑区域模式化融合角点检测算法仿真
稀疏图平方图的染色数上界
多级维纳滤波器的快速实现方法研究
自适应迭代维纳滤波算法
基于邻域竞赛的多目标优化算法
基于FAST角点检测算法上对Y型与X型角点的检测
利用测地距离的三维人脸定位算法
基于多窗谱估计的改进维纳滤波语音增强