"图像中角点(特征点)提取与匹配算法"
图像中角点(特征点)提取与匹配算法是计算机视觉和图像处理领域中的一个重要技术,它可以用于图像匹配、对象识别、图像合成等应用中。该算法的基本步骤包括角点检测、特征点提取、匹配等步骤。
角点检测算法是Harris角点检测算法,该算法的基本原理是取以目标像素点为中心的一个小窗口,计算窗口沿任何方向移动后的灰度变化,并用解析形式表达。设以像素点(x,y)为中心的小窗口在X方向上移动u,y方向上移动v,Harris给出了灰度变化度量的解析表达式:
Ex,y = ∑wx,y(Ix|u,y|v - Ix,y) = ∑wx,y(u ∂I/∂x + v ∂I/∂y + o(u² + v²))
其中,Ex,y为窗口的灰度变化度量;wx,y为窗口函数,一般定义为wx,y = e^(-((x² + y²)/σ²))。
将Ex,y化为二次型,有:
Ex,y = [u v]M[u v]^T
其中,M为实对称矩阵:
M = ∑wx,y[Ix² IxIy; IxIy Iy²]
通过对角化处理得到:
Ex,y = R⁻¹[u v]^T R[u v]
其中,R为旋转因子,对角化处理后并不改变以u,v为坐标参数的空间曲面的形状,其特征值反应了两个主轴方向的图像表面曲率。当两个特征值均较小时,表明目标点附近区域为“平坦区域”;特征值一大一小时,表明特征点位于“边缘”上;只有当两个特征值均比较大时,沿任何方向的移动均将导致灰度的剧烈变化。
Harris角点响应函数(CRF)表达式由此而得到:
CRF(x, y) = det(M) - k(trace(M))^2
其中:det(M)表示矩阵M的行列式,trace(M)表示矩阵的迹。当目标像素点的CRF值大于给定的阈值时,该像素点即为角点。
在图像一上画出该角点的坐标位置如下图所示:
蓝色小方块代表的是检测出来的角点坐标位置。
在角点检测后,接着进行匹配,将两幅图像进行Harris角点检测后,分别得到角点对应与该图像的坐标位置,以该坐标位置为中心,分别取其附近的8个像素值,然后进行与另一幅图像进行匹配,找出距离最小的点作为匹配点。
例如下面是图像一角点坐标位置xy212301309353582011782(x-1,y-1)(x-1,y)(x-1,y+1)(x,y+1)(x+1,y+1)(x+1,y)(x+1,y-1)(x,y-1)6568779494与该位置对应的8个像素值分别为角点13048373114310123角点27591081141831779222角点335171281532252430……。然后,将图像一中的角点1与图像二中的所有角点进行相减,得到一个最小误差值,并记录下该位置,这样依次将图像一中的角点2,角点3一直到角点17都进行相减,即可得到两幅图像之间的最佳匹配点。
下面是两幅图像角点匹配的最佳坐标位置匹配点误差值00101314151617000000438900512000000336105645334104204400其中匹配点的值为0代表没有找到匹配点。
在已经找出的匹配点,在图像上进行显示,这样有利于人眼判断该算法是否匹配正确。