学习Harris角点检测
本文参考博客:https://blog.****.net/woxincd/article/details/60754658
https://blog.****.net/lwzkiller/article/details/54633670
(个人学习笔记,因此有大量内容来自原博客。)
1.1 算法思想
Harris角点检测是特征点检测的基础,提出了应用邻近像素点灰度差值概念,从而进行判断是否为角点、边缘、平滑区域。Harris角点检测原理是利用移动的局部窗口在图像中计算灰度变化值,如果窗口内的灰度发生较大的变化,则认为窗口内遇到了角点。其中关键流程包括转化为灰度图像、计算差分图像、高斯平滑、计算局部极值、确认角点。
1.2 数学模型
首先计算移动窗口的灰度差值,记将图像窗口平移 产生的灰度变化为:
|
|
(1) |
其中 为窗口函数,为0/1函数或者高斯函数;
为
位置的图像灰度;
为
位置的图像灰度;
为了减小计算量,利用泰勒级数进行简化公式:
|
|
(2) |
将公式(2)带入公式(1)得到:
|
|
(3) |
其中
|
|
(4) |
所以对于局部微小的移动量 ,可以近似得到下面的表达式:
|
|
(5) |
|
|
(6) |
M是2X2的偏导数矩阵,可以进行对称矩阵的变化。如果利用两个特征值进行替代,其几何含义如图1所示几何模型中通过判断两个特征值的大小来判定像素属性,其具体描述如图2所示。
图1 对实对称矩阵M的特征值分析
图2 通过两个特征值的大小判定像素点的属性
M为梯度的协方差矩阵 ,在实际应用中为了能够应用更好的编程,定义了角点响应函数R,通过判定R大小来判断像素是否为角点,判定方式如图3所示。R决于M的特征值,其定义如下:
|
|
(7) |
其中 ,
,k为一个经验常数(0.04-0.06)。定义
且为局部极大值的点时为角点。
Harris角点检测算子对图像亮度和对比度具有部分不变性,且具有旋转不变性,但不具有尺度不变性。
图3 由R大小来判断像素的属性