Harris角点检测和Shi-Tomasi角点检测

什么是角点?

  1. 两条边缘的交点
  2. 灰度梯度局部最大值对应的点(梯度方向和幅值都有着很大变化)
    Harris角点检测和Shi-Tomasi角点检测

Harris角点的基本思想

Harris想象有一个滑动窗口,在图像的任意方向上滑动,比较滑动前后像素灰度的变化程度,来判断是否存在角点
Harris角点检测和Shi-Tomasi角点检测

Harris角点特征的数学表达

Harris角点检测和Shi-Tomasi角点检测
其中w是窗口函数,可以是加权函数,也可以是高斯函数
Harris角点检测和Shi-Tomasi角点检测
将E展开之后得到
Harris角点检测和Shi-Tomasi角点检测
一阶可以近似为
Harris角点检测和Shi-Tomasi角点检测
推导成矩阵的形式
Harris角点检测和Shi-Tomasi角点检测
近似的,有
Harris角点检测和Shi-Tomasi角点检测
其中,M为2*2的矩阵
Harris角点检测和Shi-Tomasi角点检测
二次项可以看成一个椭圆函数,对M进行特征值分析:
Harris角点检测和Shi-Tomasi角点检测
根据λ1,λ2的值我们可以把其分为三类:

  1. λ1,λ2都很小且近似,E在所有方向接近于常数;
  2. λ1>>λ2,或者λ2>>λ1, E将在某一方向上很大;
  3. λ1,λ2都很大且近似,E将在所有方向上很大;
    Harris角点检测和Shi-Tomasi角点检测
    Harris角点检测和Shi-Tomasi角点检测
    最后根据角点响应值计算R所属区间
    Harris角点检测和Shi-Tomasi角点检测
    Harris角点检测和Shi-Tomasi角点检测
    不同的k值形状不同,一般取0.04-0.06
    Harris角点检测和Shi-Tomasi角点检测
    Harris角点检测和Shi-Tomasi角点检测
    Harris角点检测和Shi-Tomasi角点检测
    可以看到当k=0.05时,R的等高线图很接近与下面这幅图
    Harris角点检测和Shi-Tomasi角点检测

Harris角点的性质

对于灰度放射变化来说,具有部分的不变性。
Harris角点检测和Shi-Tomasi角点检测
但是当图像几何尺度变化之后,原来的边缘点可能会被判断成为角点。
Harris角点检测和Shi-Tomasi角点检测
Harris角点检测和Shi-Tomasi角点检测

Harris算法具体步骤

1.计算图像x,y方向的梯度Ix,Iy
Harris角点检测和Shi-Tomasi角点检测
2.计算每个像素点的梯度平方
Harris角点检测和Shi-Tomasi角点检测
3.计算梯度在每个像素点的和
Harris角点检测和Shi-Tomasi角点检测

4.定义在每个像素点的矩阵H,也就是前面的M
Harris角点检测和Shi-Tomasi角点检测
5.计算每个像素的角点响应
Harris角点检测和Shi-Tomasi角点检测
6.设置阈值找出可能点并进行非极大值抑制

Tshi-Tomasi角点检测和Harris的区别

主要的区别就是角点检测的打分公式
Harris角点检测的打分公式为:Harris角点检测
R = λ1λ2 - k(λ1 + λ2)²
Harris角点检测和Shi-Tomasi角点检测
但是Shi-Tomasi使用的打分函数为:
R = min(λ1, λ2)
如果打分超过阈值,我们就认为它是一个角点。我们可以把它绘制到λ1~λ2空间中,就会得到下图:
Harris角点检测和Shi-Tomasi角点检测

参考博客
[图文]Harris角点检测 - 百度文库
https://wenku.baidu.com/view/f61bc369561252d380eb6ef0.html
OpenCV学习笔记-Shi-Tomasi角点检测 - 云中寻雾的博客 - ****博客
https://blog.****.net/qq_36387683/article/details/80550964
Harris Corner(Harris角检测) - klitech - 博客园
https://www.cnblogs.com/klitech/p/5779600.html
学习笔记 2.1 — Harris角点检测与特征匹配【含实例】 - Yebin的博客 - ****博客
https://blog.****.net/weixin_41923000/article/details/88631944