Harris角点是一种常见的局部特征子,可以用在相机标定等场景,比如我之前的博客相机标定的实现。
下面介绍提取Harris特征点的一般步骤:
- 图像平滑,这里一般是通过高斯滤波减少噪声的影响。
- 计算图像的横向和纵向梯度。
- 计算自相关矩阵
- 计算角点响应,获取候选角点
- 非极大值抑制
1、计算图像梯度使用的是sobel或者prewitt算子。
2、自相关矩阵的定义如下:
它是2x2的矩阵,这里的
w
(
x
,
y
)
w(x,y)
w(x,y)是高斯分布矩阵。
3、这里通过自相关矩阵的特征值来判断是否为角点:
但是,实际处理过程中使用的是与特征值相关的一个角点响应
R
R
R:
常见的
R
R
R定义有:
其中:
t
r
(
M
)
=
λ
1
+
λ
2
d
e
t
(
M
)
=
λ
1
λ
2
tr(M)=\lambda_1+\lambda_2 \\det(M)=\lambda_1\lambda_2
tr(M)=λ1+λ2det(M)=λ1λ2
至于这里对于特征值的使用个人觉得与矩阵特征值的几何意义
有相似之处。
4、Harris角点的劣势是对尺度不敏感、提取的角点只是像素级。
在《An Analysis and Implementation of the Harris Corner
Detector》通过多尺度匹配解决了尺度问题,通过二阶泰勒展开将精度提升至亚像素级。
参考文献:https://blog.csdn.net/qq_18343569/article/details/47024213
https://pdfs.semanticscholar.org/6818/668fb895d95861a2eb9673ddc3a41e27b3b3.pdf?_ga=2.60221225.580641857.1588326235-1644658259.1585554485
https://www.ipol.im/pub/art/2018/229/article.pdf
代码:https://github.com/LittleAprilFool/harris-corner
https://www.ipol.im/pub/art/2018/229/harris-corner-detector_1.0.tgz