Python计算机视觉编程
局部图像描述子
本节旨在寻找图像间的对应点和对应区域。介绍用于图像匹配的两种局部描述子算法。图像的局部特征是许多计算机视觉算法的基础,使用特征点来代表图像的内容包括运动目标跟踪,物体识别,图像配准,全景图像拼接,三维重建等。
(一)Harris 角点检测器
角点特征:
- 轮廓之间的交点。
- 对于同一场景,即使视角发生变化,通常具备稳定性质的特征。
- 该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化。
- 角点处的一阶导数最大,二阶导数为0。
- 角点指示了物体边缘变化不连续的方向。
Harris 角点检测算子:
Harris 算子是一种简单的点特征提取算子,这种算子受信号处理中自相关函数的启发,给出与自相关函数相联系的矩阵M。M阵的特征值是自相关函数的一阶曲率,如果两个曲率值都高,那么就认为该点是特征点。为了消除噪声对于角点检测的影响,可以使用一个高斯滤波器来平滑图像。
Harris 角点检测算法原理:
利用矩形窗在图像上移动,若窗内包含有角点,则窗口向各个方向移动时,窗内的灰度值都会发生变化。从而达到检测图像角点的目的。如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点。该点就称为角点。
数学公式:
把图像域中点 x 上的对称半正定矩阵 M I M_I MI= M I M_I MI(x)定义为:
其中 ∆I为包含导数 I x I_x Ix 和 I y I_y Iy 的图像梯度。由于该定义, M I M_I MI 的秩为 1,特征值为 λ1=| ∆I |2 和 λ2=0。现在对于图像的每一个 像素,我们可以计算出该矩阵。
选择权重矩阵 W(通常为高斯滤波器 Gσ),我们可以得到卷积:
该卷积的目的是得到 M I M_I MI 在周围像素上的局部平均。计算出的矩阵 M I M_I