夏克付
(安徽电子信息职业技术学院,安徽 蚌埠 233030)
目标识别是指利用计算机技术实现人类的视觉功能,其主要任务是从图像或视频中识别出指定的目标。目标识别技术一直是国际学术研究的热点,许多优秀的目标识别算法不断涌现,并已广泛应用于无人飞行、精确制导、智能交通、视频监控、医学分析等军事与民用的各个领域[1-2]。目标识别的关键在于特征点的提取与匹配,传统的目标识别方法大多基于目标的全局特征,这些特征计算简单,但在目标存在噪声、发生形变或被遮挡等情况时识别误差较大。与全局特征相比,基于局部特征的目标识别方法由于描述能力强,稳定性好,能有效克服以上不足[3-4]。
尺度不变特征变换(SIFT)算法是一种局部特征检测算法[5-6],它所提取的特征点对尺度、旋转、光照等变化具有不变性,可以较好地应用于图像匹配,能够在目标发生遮挡、平移、旋转等变化时具有良好的识别效果。SIFT算法优势明显,但也存在不足,其特征描述的高复杂度使得特征匹配计算量大,耗时较长,并且存在一定的误匹配。本文在SIFT算法的基础上,利用特征点的主方向性质对SIFT算法进行改进,提出了一种基于改进SIFT的目标识别方法。首先分别提取原图像与目标图像的特征点,并计算其特征点对的主方向差值,然后利用此差值来剔除差异较大的特征点对,以减少特征匹配阶段的运算量,降低误匹配率。
高斯尺度空间是不同尺度的二维高斯核函数与图像卷积生成的图像序列,对该空间中每组的相邻两层做差值运算就可快速构建高斯差分尺度空间(DOG)。设每组相邻两层的比例系数为k,则DOG算子可通过下式定义。
D(x,y,σ)=L(x,y,kσ)-L(x,y,σ)
(1)
其中L(x,y,σ)为二维图像I(x,y)的尺度空间,G(x,y,σ)为二维高斯核函数,计算方法分别如式(2)和(3)。
L(x,y,σ)=G(x,y,σ)*I(x,y)
(2)
(3)
其中(x,y)是图像像素坐标,σ是尺度空间因子。
高斯差分尺度空间构建完毕后,将该空间中的每个像素点分别与其同层的8个相邻点和上下两层的18个相邻点进行比较,若其值为最大或最小,则可判定该点为极值点。由于对比度较低的极值点对噪声比较敏感,位于边缘的极值点又难于精确定位,为提高关键点的抗噪能力与稳定性,需要对DOG算子进行曲线拟合,剔除对比度低与边缘响应较强的极值点,精确确定关键点的位置与尺度。可通过式(4)剔除边缘极值点。
(4)
其中H为极值点所在尺度空间的2×2阶Hessian矩阵,Tr(H)为矩阵对角线元素之和,Det(H)为矩阵行列式的值,r为矩阵中最大特征值与最小特征值的比值。
关键点的方向利用其邻域内各个像素点的梯度分布特性确定。对于每个关键点,首先计算以其为中心的邻域窗口内所有像素的梯度方向与幅值,然后以此计算其邻域的梯度方向直方图。此直方图有36个方向,每个方向10°,共360°。梯度方向直方图的最高峰值所对应的方向为该关键点的主方向。关键点所在尺度空间L(x,y,σ)上的任一像素点(x,y)的梯度方向与幅值计算如式(5)和式(6)。
(5)
(6)
确定关键点的主方向后,对于每个关键点可以得到三个信息:位置、尺度与方向。
关键点描述符用于描述关键点附近邻域的梯度信息。为确保旋转不变性,首先以关键点为中心,将坐标轴旋转为关键点的主方向,并选取关键点周围的16×16邻域作为采样窗口,然后利用式(5)和式(6)计算窗口中每个像素点的梯度方向与幅值,最后在每4×4的窗口上计算8个方向上的梯度直方图,同时计算每个梯度方向的累加值,形成一个种子点。每个关键点由16个种子点组成,每个种子点表示8个方向的向量信息,这样一个关键点就可以形成128维向量的特征描述符。
对于待识别的两幅图像,在通过以上步骤提取其特征点后,可采用欧式距离来度量特征点的相似性。两个特征点的欧氏距离越小,则其相似度越高,若该距离小于给定的阈值,则可以判定为匹配成功。两个特征点P和Q的欧式距离可通过下式计算。
(7)
其中P=(p1,p2,…,pn)和Q=(q1,q2,…,qn)分别表示两个特征点向量。
两幅图像特征点匹配的具体过程为:首先通过式(7)计算出原图像中某个特征点P与目标图像中全部特征点之间的欧式距离,之后找出其中的最小距离(设对应的特征点为Q)与次小距离,并计算其比值,若该比值小于给定的阈值,则判定特征点P与特征点Q为一对匹配点。以此类推,直至原图像中全部特征点匹配完成。
SIFT算法中通过搜索计算特征点间欧式距离来检测匹配点的方法,实现简单,但搜索计算量较大,运行时间较长,并会产生一定的误匹配,因此,本文提出一种基于特征点主方向的方法[7-9],在计算欧氏距离前,通过特征点主方向的差值来消除部分错误匹配点,减少SIFT特征匹配的运算量,提高匹配精度。
为了使特征点具备旋转不变性,SIFT为每个特征点都分配了主方向。若P和Q为两幅图像中的一对正确匹配特征点,则它们各自邻域像素的梯度方向与幅值一定是相似或一致的,因此它们的主方向也一定是相似或一致的。反之,若P和Q是一对错误匹配点,则它们的主方向一定会有较大差异。因此,在进行SIFT特征匹配时,可以利用特征点的主方向性质过滤掉主方向差异较大的特征点,提高特征匹配效率。具体计算方法为:
对于原图像与目标图像中第i对特征点的主方向值θ1i与θ2i,计算其差值的绝对值,若此值大于给定的阈值r,则认为这对特征点是错误匹配点并直接舍弃,对于小于阈值r的特征点对,则进一步计算其欧氏距离,直至找出两幅图像中的全部正确匹配点。
改进后的SIFT算法实现目标识别的具体步骤如下:
(1)特征点提取。对原图像与目标图像分别构建高斯差分尺度空间,检测特征点,确定特征点的位置、尺度和主方向。
(2)特征点描述。为原图像与目标图像中提取到的每个特征点,分别建立128维的特征向量描述符。
(3)特征点对主方向差值计算。计算原图像特征点Mi与目标图像特征点Nj的主方向差值gi。
(4)特征点舍弃。若gi的绝对值大于给定的阈值r,则舍弃特征点对
(5)欧式距离计算。若gi的绝对值不大于给定的阈值r,则利用式(7)计算特征点对
(6)特征点匹配。找出N中与Mi最小的两个距离,若他们之间的比值小于给定的阈值,则判定Mi与N中距离最小的点为一对正确匹配点。
(7)识别完成。若已找出M与N中的全部匹配点,则停止计算,目标识别完成,否则转到3)继续执行。
实验选取了如图1所示的两组原图像与目标图像,分别从尺度、遮盖、旋转等视角来验证本文目标识别算法的应用效果。实验平台为Win 7+MATLAB R2015b。
(a)图像尺度不同 (b)图像旋转
首先利用原始SIFT算法进行特征提取与匹配。图1所示a、b两组图像中,提取到的特征点个数从左至右依次为490,1876,87,528,获得的匹配点对个数分别为160与45,如图2所示。从图示可以看出,采用原始SIFT算法匹配的特征点存在明显的误匹配。
(a)160对匹配点 (b)45对匹配点
采用本文改进后的SIFT算法对图1所示的两组图像进行特征提取与匹配,获得的匹配点对个数分别为114与31,如图3所示。可以看出本文改进后的算法由于在进行SIFT特征匹配之前剔除了主方向差异较大的特征点对,因此不仅减少了特征匹配的运算量,也提高了识别准确率。
为了验证本文方法在识别精度和运行时间上的改进效果,实验选取了一幅大小为185×265的原图像,以及每类10幅,共4类40幅不同大小和视角的目标图像,分别采用原始SIFT算法和本文改进的SIFT算法来进行特征点提取与匹配。实验得到的平均识别精度与平均运算时间如表1所示。从表中对比数据可以看出,改进后的SIFT算法大幅提高了目标识别的精度,减少了运行时间,效果较好。
(a)114对匹配点 (b)31对匹配点
表1 改进前后的SIFT算法识别精度和运行时间比较
本文针对SIFT算法在特征匹配阶段搜索计算量大、运行时间较长、误匹配率高等问题,利用特征点的主方向性质对SIFT算法进行改进,提出了一种基于改进SIFT的目标识别方法。该方法通过特征点主方向的差值来剔除差异较大的特征点对,减少了特征匹配阶段的运算量,降低了误匹配率,提高了执行效率。通过与原始SIFT算法的对比实验表明,该方法运行时间少,识别精度高,是一种稳定性强、效果较好的目标识别方法。