(台州职业技术学院,浙江 台州 318000)
在复杂背景下如何找出目标物体,是机器人视觉伺服控制系统研究所要解决的问题之一。目前,图像特征匹配是解决这个问题采用的较多的方法。图像特征匹配按方法可以分为基于灰度的特征匹配、基于频域的特征匹配、基于特征点的特征匹配三类。基于频域特征的匹配计算量大,耗时多,受图像旋转和缩放的影响较大。基于特征点的图像配准[1-3]由于具有鲁棒性强、运算量小、速度快等优点成为当前图像配准热点研究方向。图像配准按步骤又可以分特征提取、特征匹配、图形变换这几个过程,其中特征匹配是关键步骤,特征匹配就是寻找两幅图像之间相似的特征点之间的距离,其中最近邻距离比值法是最常用的方法。
近年来,较为经典的基于局部特征匹配算法[4-7]是张锐娟等人提出的一种改进的 SURF 算法,首先用 SURF 算法提取特征点,然后用最近邻匹配法进行匹配,相对SIFT 算法速度快、计算量小,有一定的理论和应用价值。文献[8]针对 SURF 检测速度做了改进,文献[9]根据高斯颜色模型进行目标匹配,文献[10]将SURF 算法与卡尔曼滤波器结合来追踪目标,文献[11]通过 SUSAN 算法来提取特征点,文献[12]通过单应性矩阵来进行匹配,匹配精度较好,但特征点检测速度会有所下降。文献[13]通过 Harris 提取特征点,加快特征检测。
SURF图像匹配与目标识别等众多领域有所应用,因此,本文以SURF 算法为研究基础,提出了一种改进的SURF 算法,即根据图像大小构建动态高斯金字塔图层,提高特征点的提取效率,减少特征提取和特征匹配时间的同时有效地对非极大值进行抑制。采用RANSAC算法进行精匹配并且求出变换矩阵H。对于匹配后出现的伪匹配,利用提取特征点中正确匹配点与伪匹配点偏移程度进行去除。通过仿真实验,可以得出该算法金可实现匹配的准确性求,同时具有计算量小、计算速度快的优点,而且,该算法是尺度和旋转不变的,对尺度、旋转和平移参数具有更强的鲁棒性。
与SIFT算法相比,SURF算法并不适用于DoG,而是适用于尺度空间金字塔中的Hessian矩阵,图像和尺度空间中矩阵行列式的局部极大值构成关键点的候选。与SIFT算法类似,SURF算法通过亚像素插值提高精度,首先计算主梯度方向,得到了描述子的旋转不变性。在4×4区域的图像细分也类似于SIFT,但在这种情况下,计算Haar小波来描述频域内的局部梯度,每个子区域计算四个描述符,得到4×4×4=64个条目/分。SURF的计算时间比其他类似于SIFT的算法要短,并且易于提取大量的关键点(即,可以在多个图像对(多个特征)中观察到的候选点)。假设函数为f(x,y),某个像素点的 Hessian 矩阵公式可表示为:
(1)
使用方格滤波模板后,式(1)的行列式值如下:
Det(H)=DxxDyy-α(Dxy)2
(2)
式中,α为权系数,一般取α=0.9。利用公式(2)计算像素的极值点。
SURF 将尺度空间划分成若干组,尺度空间被象征性的表述为一个图像金字塔,而金字塔的每层称为 Octave, Octave 的值一般是人为设定的。特征点检测出后需要进行特征描述,利用计算的Haar小波响应系数构建一个新向量,再将坐标轴转到主方向,将正方形窗口划分为4×4个子窗口。用变量采样间隔,得到子窗口内x和y方向上的小波响应分别为和。对子窗口的系数累加构造四维向量
ν=(∑dx,∑dy,∑|dx|,∑|dy|)
(3)
为了提高图像特征点匹配的效率,本文选用渐入渐出的加权融合方法。加权融合的公式如下:
f(x,y)=
(4)
其中:W1+W2=1;0 在图像融合的过程中,可设重叠区域的W1由 1 线性变化为 0,则W2由 0 变化为 1,图 1表示具体的权值函数变化。 图1 渐入渐出法权值函数 SURF算法是SIFT算法的改进,其特征点检测性能相对而言有很大的提高,但是仍然存在很多不足之处:构建图像尺度空间,其图像层数Octave是人为设定的图像,如果 Octave值过低,则所提取的最优特征点偏少,使得匹配误差较大;若Octave的值偏大,则提取特征点耗时多,实时性差;对于细节丰富的图像,提取的特征点会明显增加,导致匹配时间增加,而且过于密集的特征点会造成匹配精度降低;SURF算法在匹配后会出现伪匹配点。 针对以上提出的问题,设计的改进SURF算法的图像特征匹配的系统流程,见图2。由图2的流程图可以看出,本文的主要工作是:根据图像大小,动态构建高斯金字塔图层,得到合适的Octave值;对得到的初始特征点进行优化,即在提取特征点时,通过设置阈值去除密集的特征点,使得在后续特征点匹配减少时间损耗;根据伪匹配点与正确匹配点的坐标的差异性较大,引入衡量差异性的系数,将高于这个系数的点视为伪匹配点。 图2 系统流程图 SURF 算法在计算积分图像后,会构建高斯金字塔,其中高斯金字塔的每层为 Octave。传统的 SURF 算法构建的Octave 为人为设定的固定值,使得两幅大小不同的图像不具有自适应性。针对以上情况,文中了提出了一种计算Octave 的方法,即: (5) (6) 其中:O为金字塔的Octave 值,N=min{H,W}。其中,H是图像的高度,W是图像的宽度,M为常数,本文取M=3。由实验可知,式(3)中进行减3操作是比较合适。 构建高斯金字塔层的步骤如下: 1) 获取读入图片的尺寸大小,其高和宽分别赋值到变量H,W; 2) 根据式(6)比较H,W的大小,将最大值赋值到变量N; 3) 根据式(5)计算 Octave 的值; 4) 由步骤3)得到的值,建立高斯金字塔图像层; 步骤3)计算 Octave 值的过程中,按四舍五入取整,如果计算出的值在[3,5]之间,则 Octave 取计算出的值,若计算的值<3或>5,则 Octave 取3 或 5,因为若 Octave 值过小则无法获得足够的特征点,过多则影响实时性。 SURF算法对细节丰富的图像进行匹配时,会获取大量的特征点。为了提高图像特征匹配的效率,必须对提取的特征点优化。特征点优化的具体步骤为: 1) 设置特征点数量阈值C和距离阈值L; 2)SURF算法检测特征点,输出特征点集P,数量为N; 3) 判断特征点数量是否大于阈值C,若小于阈值C,则直接得到特征点;若大于阈值C,则对特征点进行优化; 4) 选定特征点Pi,计算Pi与PN-i的距离,若距离小于阈值L,则将此点从点集P中删除; 5) 当特征点数量不大于阈值C时,停止计算,输出优化后的特征点。初始特征点经过优化后,可以去除分布密集的点,通过最近邻距离比值法找到合适的匹配对,为后续特征点匹配节约了时间。 根据人眼的特殊结构,视频图像如果想要体现流畅性,则其播放速度必须保持在每秒钟24帧以上,常规的PAL制式是每秒25帧。从传统的拼接算法分析可知,如果直接利用SURF 算法对所获得图像进行拼接,则较难解决视频拼接的实时性问题。 传统的图像匹配过程中是对整幅图像进行特征提取,再对所有提取到的特征点进行筛选找到特征匹配对,这样产生的计算量将会很大,严重影响效率。图像拼接是一般是对重叠区域达到30%以上的图像进行处理的。为了提高效率,可以首先计算两幅待匹配图像的重叠区域,然后在该重叠区域内进行特征提取,这样就可以大大减小了特征提取的时间。SURF 特征点的匹配是通过计算两个特征点描述符之间的欧式距离得到的[16],这种匹配方法虽然简单快捷,但会产生误匹配。一般情况下,两幅待匹配的图像存在旋转、缩放等仿射变换,仿射变换影响了描述符的准确性;在匹配的过程中,需要人工设定阈值(通常取 0.7)阈值的大小影响匹配结果;另外,图像中存在的噪声点和运动模糊等也会影响匹配结果。通过实验仿真可以发现传统的匹配后还会出现还可能会出现一些错误的匹配对,针对这个情况本文采用对匹配对的距离先进行排序,优先选取前20对最优的匹配对,然后再用RANSAC对这20对匹配点进行精匹配,计算出变换矩阵H。综上所述,本文对于图像的拼接可以总结为以下步骤: 1)对待拼接的图像进行预处理。包括校正、去噪等步骤; 2)计算出待拼接图像的重叠区域ROI; 3)在重叠区内采用本文改进的SURF算法进行特征提取; 4)对匹配点对距离进行排序,选取距离最短的前20对,标记为good匹配对,再进行RANSAC剔除错误匹配对,计算出变换矩阵H; 5)采集渐入渐出的融合方法进行融合,得到无缝拼接图。 假设两幅待配准图像经过 SURF 算法匹配后没有伪匹配点,而且两幅图像不存在旋转仿射变换。两幅图像相匹配的特征点之间会存在一定的斜率,记为K,所有匹配特征点斜率的平均值记为Ka。如果匹配过程中存在误匹配点,即偏离正确匹配点的位置,这样斜率K便会相对变大,随着斜率的平均值Ka也会增大,但是K值的增长速度相对于Ka的增长速度要快的多,所以可以将K的值与ωKa值相比较,将K值大于ωKa的点视为伪匹配点。其中,ω为常系数。如图3所示,(p1,q1)(p2,q7)(p3,q3)(p4,q4)(p5,q5)(p6,q6)(p7,q2)为已经检测出来的匹配点,而(p2,q7)(p7,q2)为错误匹配点。从图中可以看出,这两对伪匹配点的存在,会使得七对匹配点之间的斜率平均值增大,(p2,q7)(p7,q2)之间斜率的增量要比整体平均值大的多,可以通过比较所有匹配点的斜率与平均斜率的大小来去除伪匹配点。 图3 特征点匹配示意图 设图像I1和I2为两幅待匹配的图像匹配结果最终是以两幅图像拼接显示,(pi,qi)和(pj,qj)(i,j=0,1,2,3……n,n为两幅图像中的匹配特征点个数)分别为两幅图像中通过 SURF 算法得到的匹配点,则每对匹配点之间相对倾斜程度可以表示为: (7) 其中:W为图像I1的宽。所有匹配点斜率的平均值可表示为: (8) 由式(7)和(8)计算ki,ka后,伪匹配点的去除如式(9)所示: ki>ωka (9) 式中,ω是常数,本文取 0.3,根据具体实验选择合适的值。当特征点中计算结果满足式(9)的点视为伪匹配点。式中并不是将ki与ka直接做比较,一方面考虑到ka容易受到极端值影响,会造成伪匹配点的误判;另一方面,可以增强算法的通用性,可以根据具体匹配图像来合理调整误匹配点的评判界限。 为了验证本算法的正确性和有效性,仿真实验在 CPU 为 Intel Core i5-5200U 2.20 GHz,操作系统为 Windows 10,环境为 MATLABR2015b 的计算机上进行的。因为自然条件下采集的图像都是处在复杂环境下,而匹配的目的是识别出目标物,故本文选择的待匹配图像来自复杂环境。实验针对图像特征点的提取、匹配算法在时间性能和准确性方面,将本文算法与 SURF 算法进行分析比较。图像特征点提取实验首先进行的实验是基于不同尺寸的图像,分别做上述两种算法处理。在尺寸大小为800×600的图像中,由式(5)(6)计算可得到本文算法中的Octave 值为 3, SURF 算法中的 Octave 值取为 4。实验效果如图4所示。由图4可以看出, SURF 算法提取的特征点存在聚集现象,而本文提出的算法由于经过特征点优化处理,因此相对于SURF算法来说,提取的特征点数量要少的多,分布较为均匀。图像在不同尺寸条件下,两种算法提取特征点数量和时间如表1所示。 图4 效果对比图 表2中,随着图像尺寸的增大,两种算法提取到的特征点数量逐渐增多。其中,SURF 算法提取的特征点数量比较多,本文算法经过特征点优化后,提取的特征点数量明显较少,提取时间也相应减少,但随着特征点数量大幅增加,本文算法在时间上相对 SURF算法不具有明显优势了。 表1 特征点数量与提取时间对比 为了验证本文算法去除伪匹配点的有效性,本文以尺寸为640×480的图像为参考图像,待匹配图像大小分别为 640×480,800×600,1280×1024,1600×1200。其中,图5和图6中待匹配图像的大小为640×480,分别是 SURF 算法和本文算法对特征点的匹配效果。由匹配效果可以看出,本文算法的特征点匹配效果要好。不同尺寸下,这两种算法的实验数据,如表 2 所示。 图5 SURF 算法匹配结果 图6 本文算法匹配结果 由表2实验数据可知,本文算法相对于传统的 SURF 算法,特征点匹配精度高,耗时短。 本文针对 SURF 算法的缺点,提出了一种改进的算法,即构建动态高斯金字塔图像层数,通过设置阈值的方式对特征点进行优化,利用衡量伪匹配点偏离正确匹配点的程度系数去除伪匹配点。实验结果表明,提出的改进方法更为简单有效,减少了特征点匹配的误差,能够有效缩短图像配准时间。通过这种方法不仅可以提高特征提取的效率,得到更加明显的特征点,为下一步的特征匹配也减小不少运算量,同时还可以有效地解决极值点群分布问题。实验仿真证明相比于其他复杂的非极大值抑制算法,本文的改进方法更为简单有效,更好的提高了拼接效率,为整个过程的实时性作出了重要贡献。 表2 两种算法特征点匹配实验对比2 改进的 SURF 算法
2.1 算法改进的总体思路
2.2 高斯金字塔图像层的动态构建
2.3 特征点的优化
3 伪匹配点的去除
3.1 算法思想
3.2 算法实现
4 仿真实验
5 结论