Harris角点检测
1、什么是Harris角点
在图像中,可以认为角点是物体轮廓线的连接点,是图像中重要的特征点。角点数目远小于像素点,通过检测角点可较准确地识别物体并减少计算量。角点检测在目标识别、目标跟踪、图像匹配等方面具有重要作用。
如下图,红色圆圈标注的点可看做角点。
2、如何检测Harris角点
可将图像分为三个部分:
- 平坦区域:在所有方向上灰度值几乎不发生改变
- 边缘:沿着边缘方向不发生改变
- 角点:在所有方向上灰度值几乎都发生较大改变
检测方法:取某个像素的一个邻域窗口,当这个窗口向各个方向移动时,若像素灰度值变化都比较大则判定为角点。
E(u,v)表示窗口内平均像素灰度值的变化 ,
w(x,y)表示窗口内(x,y)处的权重,u、v表示水平、竖直方向的偏移。
对I(x+u,y+v)进行泰勒级数展开并取一阶近似,
其中IX、Iy是I对x、y的偏导。
所以 ,
角点满足条件:无论u,v怎样取值,E(u,v)的变化都是比较大的。
可根据M的特征值来判断角点,
当λ1、λ2近似相等且都比较大时,可看做角点;
当λ1、λ2近似相等且都比较小时,可看做平坦区域;
当λ1、λ2一个非常大一个非常小时,可看做边缘区域;
由此定义角点响应函数R=det(M)-k(traceM)2,其中det(M)=λ1λ2,traceM=λ1+λ2.
- R<0:边缘区域
- R>0:角点
- |R|非常小:平坦区域
检测结果: