近年来,我国的计算机视觉技术不断发展,主要是使用摄像机来替代人眼,让计算机能够拥有人的双眼所能完成的分割分类和识别跟踪以及进行决策判断的功能[1]。在视觉技术发展的40多年里,目标识别技术是重点攻克的问题,目标识别是通过数字图像或者视频图像来找寻目标的过程。很多成功的目标识别方法不断涌现,并且被广泛地用于视觉系统进行导航、地图的匹配、医学分析以及文字识别各个领域。要进行目标识别,则首先要进行特征点的选择和提取,提取到好的特征点将有利于后续匹配并且能够降低系统处理过程的复杂度,进而提高识别效果。
图像特征分为全局特征和局部特征。全局特征用来表示物体整体信息,包括颜色信息和灰度直方图。然而,全局特征有一定的依赖性,受整体信息影响较大。若在提取特征时,图像受到遮挡或者有干扰噪声时,则产生的识别误差较大。基于局部特征的目标识别方法与全局特征相比,在复杂的背景下对图像目标进行描述十分有效,而且由于稳定性好、计算量小,使基于特征点的提取算法成为主流算法[2],是目标识别领域中的研究热点。当前,David Lowe提出的SIFT特征算子利用率极高,主要用来对局部特征进行检测,算法特性优良,无论是在图像旋转、光照变化、仿射以及尺度大小变化的条件下[3],都能保持特性不变,较准确地用于特征匹配,并且目标识别能力强,能够很好地应用在三维重建、面部识别以及视频和追踪等方面。
SIFT算子也存在着一些不足需要改进,本文针对SIFT算子特征提取复杂[4]、提取特征向量维数较高、计算量大、提取特征显著性不高、实时性较差等的问题,利用Harris角点的特性进行改进,并利用RANSANC方法消除误匹配。
1 SIFT算法 1.1 SIFT算法分析SIFT算法为了保证在不同视角、亮度、远近和噪声条件下都能进行正确地匹配,实现目标识别,使用了不同的技术来克服这些难题。首先,对目标距离的远近程度、目标的大小、噪声等问题建立高斯尺度空间,形成相应的特征描述符,以此来适应视角、光照的变化。然后,对提取的特征点进行筛选,去除其中的边缘响应点和对比度低的点;再根据图像的梯度大小排布来建立对应特征点的特征向量,以此来进行特征描述。
1.2 SIFT算法的实现 1.2.1 建立尺度空间并进行极值检测SIFT算法特征点检测之前,需要先建立尺度空间[5],按照不同比例大小缩放图像,得出不同的表示序列,从中提取出主轮廓,把这一结果当作特征向量,进而得到在不同分辨率下的图像的特征描述。SIFT算法引入LOG算子,作用于图像上,它主要用来进行灰度值的检测。由于高斯差分尺度空间DOG的计算量比LOG算子小,所以用DOG算子对尺度空间进行改进,LOG算子用DOG来近似,具体方法如式(1)所示,高斯金字塔和DOG金字塔[6]如图 1所示。
Download:
|
|
$\begin{array}{c}D(x,y,k\sigma ) = (G(x,y,k\sigma ) - G(x,y,\sigma ))I(x,y) = \\L(x,y,k\sigma ) - L(x,y,\sigma )\end{array}$ | (1) |
在尺度空间的构造图中可看出,要进行极值点的检测[7],应当在DOG尺度空间中,检测极值点周围8个邻域像素点,还有与极值点所在尺度空间最近的相邻尺度空间中的18个点,也就是每个检测点需要和总共26个点比较,来判断是不是极值点。
1.2.2 获取稳定关键点的位置及尺度差分运算的过程中容易受到噪声影响,并且对边缘信息也较敏感,进而产生比较强烈的边缘响应,所以提出拟合方法,使用三维二次函数来进行拟合,拟合后得到:
${D}\left( {X} \right) = {D} + \frac{{\partial {{D}^{\rm T}}}}{{\partial {T}}}{X} + \frac{1}{2}{{X}^{\rm T }}\frac{{{\partial ^2}{D}}}{{\partial {{X}^2}}}{X}$ | (2) |
拟合后就能确定关键点的方位以及尺度,将对比度低、不稳定的边缘的点去除,获得的就是稳定的关键点,在式(2)极值点处取值得:
${D}(\hat x) = {D} + \frac{1}{2}{X}\frac{{\partial {{D}^{\rm T }}}}{{\partial {X}}}\hat x$ |
如果,
$\begin{aligned}& m\left( {x,y} \right) = \\& \sqrt {{{\left( {L\left( {x \!\!+\! 1,y} \right) \!-\! L\left( {x \!-\! 1,y} \right)} \right)}^2} \!+\! {{\left( {L\left( {x,y \!+\! 1} \right) \!-\! L\left( {x,y \!-\!\! 1} \right)} \right)}^2}} \end{aligned}$ | (3) |
$\begin{aligned}& \theta \left( {x,y} \right) = \\& \quad {\rm{ta}}{{\rm{n}}^{ - 1}}(\left( {\left( {L\left( {x,y \!+\! 1} \right) \!-\! L\left( {x,y \!-\! 1} \right)} \right)\!\! /\!\left( {L\left( {x \!+\! 1,y} \right) \!-\! L\left( {x \!-\! 1,y} \right)} \right)} \right)\end{aligned}$ | (4) |
将坐标轴的方向调整至关键点所在的方向,取8×8大小的窗口,在关键点所在的4个邻域范围内选取所有的邻域像素点;接着,在每个4×4大小尺寸的窗口中找出像素点所对应的梯度的方向[8],得到种子点,将所有方向的梯度值叠加起来。一个种子即含有8个方向的信息,实验表明,16个种子点对一个关键点进行描述是最高效的,也就是用总共128维的方向向量来表示可以有效提高匹配正确率。关键点的特征描述子如图 2所示,中心点为关键点,箭头所指为梯度方向。
Download:
|
|
角点是图像中显著性较高的点,角点的曲率比较高,有较大的曲率边缘或者是边缘交点。角点的抗噪性强,能很好地表示图像的结构信息。
角点检测算子中Harris算子较为成熟[9],应用广泛,角点检测算子通过利用高斯函数G(x, y)来削弱噪声的影响,高斯函数定义为
$G(x,y) = \frac{1}{{2\pi {\sigma ^2}}}{{\rm e}^{ - \left( {{x^2} + {y^2}} \right)/2{\sigma ^2}}}$ |
取一个像素点,值为(x, y), 假设平移量大小为[u, v],则可得该点的灰度变化量,表示为
$E\left( {u,v} \right){\rm{ = }}\sum\limits_{x,y} {G(x,y){{\left[ {I\left( {x + u,y + v} \right) - I\left( {x,y} \right)} \right]}^2}} $ | (5) |
对式(5)进行Taylor展开,展开结果为
$E\left( {u,v} \right) \cong \sum\limits_{x,y} {G(x,y){{\left[ {{I_x}u + {I_y}v + O\left( {{u^2},{v^2}} \right)} \right]}^2}} $ |
当窗口的平移量比较小时,可以对灰度值进行线性化地近似:
$E\left( {u,v} \right) \cong \sum\limits_{x,y} {G\left( {x,y} \right)} {\left\{ {\left[ {{I_x},{I_y}} \right]\left[ {\begin{array}{*{20}{c}}u\\v\end{array}} \right]} \right\}^2} = \left[ {u,v} \right]{ M}\left[ {\begin{array}{*{20}{c}}u\\v\end{array}} \right]$ |
在检测过程中将自相关函数的自相关矩阵[10]加进来:
${M} = \sum\limits_{x,y} {G\left( {x,y} \right)} \left[ {\begin{array}{*{20}{c}}{I_x^2}&{{I_x}{I_y}}\\{{I_x}{I_y}}&{I_y^2}\end{array}} \right]$ |
式中:Ix为x方向的差分,Iy为y方向的差分,M称为自相关矩阵。通过计算出M的特征值λ1、λ2,比较特征值的大小来进行角点检测,若λ1和λ2的值相差较大则为边缘点,若λ1和λ2的值近似相等,则为角点,其他的情况则表示处于平滑区域。
2.2 基于角点改进的SIFT算法SIFT算法在尺度空间检测极值点时,不能对角点等显著特征进行定位。本文算法结合Harris角点特性,对SIFT算子进行改进,除去其中不显著的特征点,因此减少待匹配的特征点数目以及复杂程度,实时性和显著性有所提高,进一步提升匹配正确率。本文算法的提出,即是针对传统SIFT算子在特征匹配实时性和正确率上的改进。
2.3 改进的SIFT实现方法与SIFT算法相同,在DOG空间内检测极值点[11],并把它看作候选点。依据检测得到的SIFT特征点的位置,接下来进行角点的检测。由于已经通过计算得出了尺度空间的梯度,所以可以在尺度空间中直接检测角点,减少了计算量,检测速度更快。角点检测算子的定义为
$\mu \left( {x,{\sigma _1},{\sigma _s}} \right) = G\left( {{\sigma _1}} \right)\left[ {\begin{array}{*{20}{c}} {L_x^2\left( {x,{\sigma _s}} \right)}&{{L_x}{L_y}\left( {x,{\sigma _s}} \right)} \\ {{L_x}{L_y}\left( {x,{\sigma _s}} \right)}&{L_y^2\left( {x,{\sigma _s}} \right)} \end{array}} \right]$ |
角点的特征值计算为
${C_{{\rm{cornerness}}}} = {\rm{Det}}({ \mu }(x,{\sigma _1},{\sigma _s}) - \alpha T{r^2}{ \mu} (x,{\sigma _1},{\sigma _s}))$ |
式中:Ccornerness为角点特征值,μ为尺度空间二阶矩阵,σ1为积分尺度,σs为特征点尺度。
由以上方法我们可以得到角点特征值,使用特征值来判断是否为角点。在现实操作中,采用了卷积计算进行平滑操作,并且使用了DOG空间近似代替LOG空间[12],会造成一定程度的误差,所以待选的特征点不一定和角点完全一致,所以本文的改进算法针对每个候选点选取一定邻域内的所有点进行检测,以提高角点被选中的概率。具体的方法是:以候选点为中心,对半径为3的邻域内的所有点进行检测,计算特征值。根据计算结果对候选点进行处理,若该点是角点则保留,否则就舍弃。
2.4 特征匹配使用改进的算法提取出稳定显著的特征点以后,取模板与已检测特征点的图像进行匹配:1)计算获得相应特征点的特征向量;2)使用提取出的每个特征点与模板中的特征点的特征向量,计算出向量间的欧式距离,通过欧式距离大小来筛选出正确的匹配点对[13],从而完成对应特征点的匹配。
欧式距离具体计算公式为
${\rm{dist}}({ p},{ q}) = {\left( {\sum\limits_{0 \leqslant i \leqslant d} {{{({p_i} - {q_i})}^2}} } \right)^{1/2}}$ | (6) |
式中:p、q为对应的SIFT特征向量,pi、qi对应第i个特征分量。
3 RANSANC去除误匹配在目标识别的过程中,通过SIFT改进算法对2幅或多幅图片进行特征匹配的过程中,可能会因为噪声、亮度等原因对相似性度量产生干扰,从而造成错误的匹配。为了减少误匹配[14]、降低识别误差,可以利用RANSANC算法和几何变化矩阵进行拟合,迭代处理后[15]将错误的匹配结果剔除,再通过一定的约束条件来对匹配结果进行验证,确保得出的对应关系唯一,提高识别的可靠性。
3.1 RANSANC模型根据满足匹配关系的特征点集合建立1个检验模型,然后利用这个模型检验其他特征点,符合这种关系的就是匹配点,不符合的就是误匹配。根据上述过程,我们不仅去除了错误匹配,而且得到了匹配特征点对的数学模型。可以通过仿射模型来检验特征点对,来除去误匹配。
仿射变换如图 3所示,数学模型如式(7)所示。
Download:
|
|
$\left[ {\begin{array}{*{20}{c}} u \\ v \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {{m_1}}&{{m_2}} \\ {{m_3}}&{{m_4}} \end{array}} \right]\left[ {\begin{array}{*{20}{c}} x \\ y \end{array}} \right] + \left[ {\begin{array}{*{20}{c}} {{t_x}} \\ {{t_y}} \end{array}} \right]$ | (7) |
式中:
$\left[ {\begin{array}{*{20}{c}}{{x_1}}&{{y_1}}&0&0&1&0\\0&0&{{x_1}}&{{y_1}}&0&1\\{{x_2}}&{{y_2}}&0&0&1&0\\0&0&{{x_2}}&{{y_2}}&0&1\\{{x_3}}&{{y_3}}&0&0&1&0\\0&0&{{x_3}}&{{y_3}}&0&1\end{array}} \right]\left[ {\begin{array}{*{20}{c}}{{m_1}}\\{{m_2}}\\{{m_3}}\\{{m_4}}\\{{t_x}}\\{{t_y}}\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}{{u_1}}\\{{v_1}}\\{{u_2}}\\{{v_2}}\\{{u_3}}\\{{v_3}}\end{array}} \right]$ |
通过式(7)可得,要求出模型的6个参数,需要得到3对匹配点对,其具体求解步骤如下:
1) 在提取出的特征点中,选择3个点按式(7)进行仿射变换;
2) 依据坐标间的关系,建立方程,解算出对应的仿射模型的参数;
3) 用步骤2)中建立的仿射模型对匹配特征点对进行检验,计算正确匹配的个数;
4) 多次重复步骤1)~3),得出匹配特征点对最多的一个仿射模型;
5) 从步骤4)中获得的最佳仿射模型,按步骤2)进行求解,得到各个模型的参数。
4 目标识别算法实验此次实验的目的是识别场景中的物体,验证改进SIFT算法的性能,在特征匹配的正确率以及速度等方面,将改进的SIFT算法与传统的SIFT算法进行比较。本实验的开发环境为Intel(R) Core(TM) i5 CPU,8 GB内存,利用MATLAB程序仿真对SIFT及其改进算法的图像特征进行匹配实验。
为了验证本文所提算法的有效性,首先基于标准测试图像对本文提出的SIFT改进算法进行了匹配性能测试,测试的性能包括基本的尺度变化和噪声等复杂情况下的匹配效果。然后,将本文改进算法和传统的SIFT算法在特征点数量、匹配正确率和匹配耗时这3个方面进行实验比较。匹配性能测试时采用Lena图像,把它作为实验对象。如图 4所示为原始Lena图像,对其添加高斯噪声后,图像效果如图 5所示。
Download:
|
|
Download:
|
|
首先,对原始Lena图像采用本文特征提取算法提取特征点,得到的特征分布情况如图 6所示。
Download:
|
|
接着,分别进行尺度变化和噪声干扰的匹配实验,如图 7为1/2倍尺度变化时算法的匹配效果图,图 8为添加高斯噪声的匹配效果图。
Download:
|
|
Download:
|
|
由以上2组实验结果可以看出,对于尺度变化和噪声等情况,改进的SIFT算法错误匹配很少,具有较强的鲁棒性[16],可以准确识别目标,具有良好的目标识别能力。
然后,本文采用了Mikolajczyk图像进行了测试,通过改变视角,分析改进的SIFT算法和传统的SIFT算法的匹配性能。图 9为Graffiti测试图像,图(b)相对于图(a)视角发生变化,倾斜了20º。测试得出相应匹配数据如表 1所示。
Download:
|
|
分析实验数据可以发现:
1) 通过改进,SIFT算法中检测的特征点数目左图像减少了53.3%,右图像检测的特征点数目减少了49.9%,而最终的匹配时间减少了大约46.4%。总之,选取出的特征点比传统的SIFT算法的数目少,匹配速度也更快。
2) 通过改进,匹配的正确率相比原算法提高了4.4%,SIFT算法中误匹配点数降低,正确匹配率提高。
实验结果表明,改进的SIFT算法正确匹配概率提高,实时性更好。这主要是由于多尺度Harris角点提取的过程中不需要构造太过繁琐的尺度空间,使得需要计算的像素量大大降低;同时,改进SIFT算法利用角点特性去除了部分不显著特征点,减少了特征提取的时间,节省了很大一部分时间,而且特征点数量减少但提取出的特征点分布较为均匀,为匹配过程减少了时间耗费;另一方面提高了特征点提取过程中的显著性,从而提高匹配正确率。
由实验结果可以得出,本文提出的目标识别算法是对SIFT算法的一种成功改进,是一种有效的图像特征提取与匹配方法。
5 结论1) 本文设计的SIFT改进算法,通过创建尺度空间,进而利用Harriss提取角点代替SIFT算法的极值检测部分进行特征提取,弥补了传统SIFT算法计算复杂、运行时效低的不足和缺陷。
2)基于RANSANC模型的消除误匹配的方法,对提取出的匹配点对进行校验,通过与传统SIFT算法进行比较,得出匹配正确率提高。
3)在噪声影响和尺度、视角变换的条件下,不仅满足识别要求,还有效提高识别效率,具有较强的适用性和一般性。
[1] | 常德宽, 雍学善, 杨午阳, 等. 计算机视觉成像方法在地震勘探中应用研究与探索[C]//中国石油学会2017年物探技术研讨会论文集. 天津, 中国, 2017: 4. (0) |
[2] | 完文韬, 杨成禹. 改进的SIFT算法在图像特征点匹配中的应用[J]. 长春理工大学学报:自然科学版, 2018, 41(1): 44-47, 52. (0) |
[3] | 贾平, 徐宁, 张叶. 基于局部特征提取的目标自动识别[J]. 光学精密工程, 2013, 21(7): 1898-1905. (0) |
[4] | 白廷柱, 侯喜报. 基于SIFT算子的图像匹配算法研究[J]. 北京理工大学学报, 2013, 33(6): 622-627. DOI:10.3969/j.issn.1001-0645.2013.06.015 (0) |
[5] | 曾峦, 王元钦, 谭久彬. 改进的SIFT特征提取和匹配算法[J]. 光学精密工程, 2011, 19(6): 1391-1397. (0) |
[6] | 章菲菲. 基于改进SIFT算法的目标识别与跟踪技术研究[D]. 北京: 北京理工大学, 2015. (0) |
[7] | 王德海. 基于双目立体视觉的目标识别与抓取定位[D]. 长春: 吉林大学, 2016. (0) |
[8] | 汪淑梦. 基于改进的SIFT算法的图像配准技术的研究与实现[D]. 北京: 中国地质大学(北京), 2013. (0) |
[9] | HARRIS C, STEPHENS M. A combined corner and edge detector[C]//Proceedings of the 4th Alvey Vision Conference. Manchester, Britain, 1988: 147-151. (0) |
[10] | 张海燕, 李元媛, 储晨昀. 基于图像分块的多尺度Harris角点检测方法[J]. 计算机应用, 2011, 31(2): 356-357. (0) |
[11] | DONG Yinwen, WAN Luan, SHI Zhaoming, et al. An image registration algorithm based on improved sift feature[J]. Applied mechanics and materials, 2013, 347-350: 3411-3415. DOI:10.4028/www.scientific.net/AMM.347-350 (0) |
[12] | 崔哲. 基于SIFT算法的图像特征点提取与匹配[D]. 成都: 电子科技大学, 2016. (0) |
[13] | 宰小涛, 赵宇明. 基于SIFT特征描述子的立体匹配算法[J]. 微计算机信息, 2007(24): 285-287. DOI:10.3969/j.issn.1008-0570.2007.24.112 (0) |
[14] | 罗钟铉, 刘成明. 灰度图像匹配的快速算法[J]. 计算机辅助设计与图形学学报, 2005, 17(5): 966-970. DOI:10.3321/j.issn:1003-9775.2005.05.014 (0) |
[15] | 孔祥思. 改进的RANSAC立体匹配算法的研究[J]. 北京建筑大学学报, 2017, 33(4): 39-44. DOI:10.3969/j.issn.1004-6011.2017.04.009 (0) |
[16] | 刘正东. 计算机视觉中立体匹配技术的研究[D]. 南京: 南京理工大学, 2005. (0) |