杨雷,唐瑞尹,王兴朝
(1.华北理工大学电气工程学院,唐山 063200;2.北华航天工业学院电子与控制工程学院,廊坊 065000)
图像匹配是机器视觉中重要的研究领域之一,被应用于双目相机三维重构、人脸识别和地图导航中[1-3]。随着机器视觉的发展,对图像匹配的准确率要求也越来越高。目前成熟的图像特征点检测算法有SIFT算法[4]、SURF算法[5]和基于一种快速的特征点提取和描述ORB算法[6]。尺度不变特征变换(SIFT)是David G Lowe在1999年提出具有稳定性的一种算法,SIFT的特征检测对图像的平移、缩放、旋转、亮度变化具有良好的稳定性。即使是在少量的图像中也可以产生大量的特征点,并且SIFT算法描述符的相关性可以有效完成图像特征点的预匹配。RANSAC算法可以有效提高图像特征点匹配的准确率。图像的亮度分布以及噪声也是影响图像匹配的关键因素,为了提高图像匹配的准确性在图像匹配之前需要对图像进行预处理。
中值滤波是采用模板核算子对模板区域的像素值按大小进行排序,然后选择中间点作为当前的像素点。一般情况下采用的是3×3的核算子,该核算子有9个元素,排序后为a1、a2、a3、a4、a5、a6、a7、a8、a9等,中值滤波表示当前值有9个元素,选择排序的中间a5作为当前点的灰度值。在中值滤波中是优于均值滤波的,是一种常用的滤波器,但是当核算子的模板增大后会造成图像边界的模糊。在中值滤波中对椒盐噪声是十分有效的,在消除傅里叶高频分量的同时也影响低频分量。
中值滤波的方式主要依赖于像素点的领域空间和像素值中的中值,一般情况下模板区域中远小于或远大于模板区域的像素点会被滤掉,而大部分的像素点会被保存下来,因此应该在不同的图像中选择不同的空间尺寸,中值滤波对噪声的处理效果如图1所示。
图1 图像噪声的中值滤波
在SIFT算法中由于高斯核可以适用于图像的尺度不变特征,因此首先应该建立高斯金字塔实现图像的尺度不变性。高斯金字塔的建立需要对图像进行高斯卷积,假设图像的坐标为F(x,y)和高斯核G(x,y,α)在不同的尺度空间下进行卷积,高斯卷积后为L(x,y,α),则公式如下:
L(x,y,α)=F(x,y)⊗G(x,y,α)
(1)
其中(x,y)为图像的像素坐标,L表示尺度空间,α表示尺度空间因子,其值越小则对图像的平滑程度越高。
高斯金字塔建立完毕后需要建立DOG高斯金字塔,DOG高斯金字塔是在高斯金字塔中的两个相邻的尺度空间之间做差,其表达式如下式所示:
D(x,y,a)=(G(x,y,ka)-G(x,y,a))×F(x,y)=L(x,y,ka)×L(x,y,a)
(2)
其中k表示高斯滤波的模糊尺度,在同一阶上两个相邻之间的尺度比例为k。高斯差分金字塔求解原理如图2所示。
图2 高斯差分金字塔求解原理
为了获取高斯差分金字塔中的极值点,需要对所在层中的上下两层同时进行比较,如图3所示检测点为所在检测层中像素点领域内的8个像素点,与上下层中的9个像素点经行比较。通过该方法求取该检测点是否为极值,如果为极值则将该点作为极值点。在比较的过程中,每阶中的首末两层是无法检测的,因此高斯差分金字塔至少有3层,而高斯金字塔至少存在4层。极值点检测的原理图如图3所示。
图3 检测极值点
为了获取精确的极值点,需要对候选点中因噪声和边缘造成的候选点进行去除,因噪声造成的候选点是采用对极值点进行三维二次函数拟合获得亚像素级的位置,其函数的变换过程如下式所示:
一方面,当代消费者对于美妆的需求增多,要求变得更为严格;另一方面,进口品牌也在冲击着国内的本土品牌市场。为了生存和发展,本土品牌纷纷出手转型,推出跨界合作来自救。
(3)
将公式(3)的偏导求解等于0就可以获得极值的位置,其式如下式所示:
(4)
将(4)式代入(3)式就可以得出下式:
(5)
一般情况下|D|≥0.03,则认为该点可以作为极值点,对噪声造成的极值点去除后需要再对边缘点造成的极值进行移除,对边缘干扰的移除采用的是高斯差分算子的极值在横跨边缘的地方有较大的主曲率,而在垂直边缘的方向有较小的主曲率。主曲率由海森矩阵求出:
(6)
设α、β分别为海森矩阵的最大值与最小值则可以求取下式:
(7)
如果曲率小于(r+1)2/r,则将该点作为特征点保存下来。采用SIFT算法进行特征点的检测结果如图4所示。
图4 SIFT算法特征点检测
在图像特征匹配中需要在求取的特征点采用描述符进行描绘,在SIFT特征匹配中是采用特征点领域内的梯度方向判定特征点的主方向,这样使得特征匹配具有了旋转不变性。特征点的梯度如下式所示:
(8)
其中,m(x,y)表示梯度的模,θ(x,y)表示梯度的方向角,L为特征点所在高斯差分金字塔的空间尺度函数。梯度直方图是用来对特征点领域内的图像进行描述的一种描述符,其按照横轴对方向00~3600进行了划分,每100表示一个单位,共有36个单位。纵轴表示其所在方向的模的大小。梯度直方图中模的最大值所在方向表示特征点领域梯度的主方向。如果在直方图中存在达到主方向的峰值,则认为该方向为辅方向。
为了确定特征点领域内的信息,如图5所示,左图中的小方格表示特征点领域内的像素点,方格中的箭头方向表示领域的梯度方向,箭头的长短表示梯度大小。右图中的4个方格表示是由4个左图组成,其中每个方格是一个左图的累计值。一般情况下为了提高图像匹配的准确率会选择16×16的领域范围,那么就会产生右图中4×4的关键点,这样每个特征点的描述符是由128个特征向量组成。
图5 特征点的领域方向和特征向量
RANSAC算法是根据一组观测数据集,经过反复迭代的方式计算出数据集的参数模型[8],其本质是计算出一个最优的单应矩阵,假设匹配图像中特征点的像素点位置为(xa,ya),对应的待匹配图像的像素点位置为(xb,yb),则单应矩阵H可以表示为如公式(9)所示:
(9)
RANSAC算法是通过随机的方式选择4条不共线的特征点对作为样本计算出单应矩阵H。利用求解的单应矩阵H对其他的特征匹配点进行测试,该测试为使用特征点匹配位置与实际位置进行对比然后获得到一个误差值。如果模型最优则出现的较小的误差。RANSAC算法的步骤如下:
(1)随机在特征点对中选择出4条不共线的特征点对,计算出单应矩阵H,记为模型M;
(2)通过模型M计算出该模型与实际的误差值,若该误差小于阈值,加入内点集I;
(3)如果当前内点集I元素个数大于最优内点集 I_best,则更新I_best=I,同时更新迭代次数k;
(4)若迭代次数大于k,则迭代结束,否则迭代次数再次加一后重复上面步骤;进过RANSAC对错误的匹配剔除后如图6所示。
图6 RANSAC对错误匹配的剔除
为了验证算法的合理性在不同噪声下对特征点准确匹配数目进行了的对比实验,通过实验验证中值滤波对含有噪声图像匹配的准确性的效果。该对比实验的仿真环境为CPU Intel Core i5-4200M 2.50GHz、RAM 4GB、开发环境为VS2015与OpenCV 3.1
在文中采用含有不同噪声的桌面图作为实验对象,使用FLANN对图像特征点进行预匹配,再采用RANSAC算法对错误的匹配进行剔除从而实现精确匹配。在含有15%的噪声下对图像进行中值滤波前后的图像匹配效果如图7所示。
图7 15%噪声下滤波前后的图像匹配效果
图8对含有不同噪声的图像进行了试验对比,通过实验对比发现对图像噪声采用中值滤波后可以有效地提高噪声图像匹配的准确性,表明对含有噪声的图像采用中值滤波预处理是可行有效的方法。
图8 不同噪声下图像特征匹配数目
图像噪声是影响图像匹配准确性的重要因素之一,而SIFT算法是常用的图像匹配算法,因此通过中值滤波与SIFT相结合可以在有效抑制图像噪声的同时提高图像匹配的准确性,当图像的噪声过于严重后采用中值滤波虽然可以提高一定的匹配精度,匹配效果欠佳,因此对含有严重的噪声图像进行滤波处理是今后的主要研究方向。