【CV】Harris角点检测
一、角点定义
·角点被定义为边缘的焦点(即,在该目标像素的领域中存在两个主要且不同的边缘方向)
·可以直观的概括下角点所具有的特征:
>轮廓之间的交点;
>对于同一场景,即使视角发生变化,通常具备稳定性质的特征;
>该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化;
·注意区分角点和兴趣点,与角点检测相冲突的是兴趣点:兴趣点是孤立点,包含:局部最大/最小强度点、线末端或曲线上的点。
往往需要进行进一步的处理来隔离真实角点(分离兴趣点)
二、Harris角点检测算法基本思想
角点检测算法主要可以分为三类:基于灰度图的角点检测、基于二值化图像的角点检测、基于轮廓图像的角点检测
算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。
用数学方法描述,当窗口发生[u,v]移动时,那么滑动前与滑动后对应的窗口中的像素点灰度变化描述如下:
其中,W(x,y)代表窗口,I(x,y)代表图像,w(x,y)是窗口函数,代表权重:最简单情形就是窗口内的所有像素所对应的w权重系数均为1。但有时候,我们会将w(x,y)函数设定为以窗口中心为原点的二元正态分布。
三、Harris角点检测算法步骤
总结一下!实际使用角点检测算法共需要五步:
1.【梯度计算】计算图像
在X和Y两个方向的梯度
2.计算图像两个方向梯度的乘积
3.使用高斯函数对
和
进行高斯加权(取
),生成矩阵M的元素A,B,C
4.【响应值计算】计算每个像素的Harris响应值R,并将小于某一阈值t的R置于0
5.【非最大值抑制】在
或
的邻域内进行非最大值抑制,局部最大点即为图像中的角点