浅谈图像处理-harris角点检测算法

电子说

1.3w人已加入

描述

通常意义上来说,角点就是极值点,即在某方面属性特别突出的点,是在某些属性上强度最大或者最小的孤立点、线段的终点。 对于图像而言,其是物体轮廓线的连接点。

1     harris角点检测算法思想

算法的核心是利用局部窗口在图像上进行移动,判断灰度是否发生较大的变化。如果窗口内的灰度值(在梯度图上)都有较大的变化,那么这个窗口所在区域就存在角点。

这样就可以将 Harris 角点检测算法分为以下三步:

1,当窗口(局部区域)同时向 x (水平)和 y(垂直) 两个方向移动时,计算窗口内部的像素值变化量 E(x,y);

2,对于每个窗口,都计算其对应的一个角点响应函数 R;

3,然后对该函数进行阈值处理,如果 R>threshold,表示该窗口对应一个角点特征。

2

建立数学模型

第一步是通过建立数学模型,确定哪些窗口会引起较大的灰度值变化。让一个窗口的中心位于灰度图像的一个位置(x,y),这个位置的像素灰度值为I(x,y),如果这个窗口分别向 x和 y 方向移动一个小的位移u和v,到一个新的位置 (x+u,y+v),这个位置的像素灰度值就是I(x+u,y+v)。|I(x+u,y+v)−I(x,y)|就是窗口移动引起的灰度值的变化值。

设w(x,y)为位置(x,y)处的窗口函数,表示窗口内各像素的权重,最简单的就是把窗口内所有像素的权重都设为1,即一个均值滤波核。当然,也可以把 w(x,y)设定为以窗口中心为原点的高斯分布,即一个高斯核。

阈值

如果窗口中心点像素是角点,那么窗口移动前后,中心点的灰度值变化非常强烈,所以该点权重系数应该设大一点,表示该点对灰度变化的贡献较大;而离窗口中心(角点)较远的点,这些点的灰度变化比较小,于是将权重系数设小一点,表示该点对灰度变化的贡献较小。

则窗口在各个方向上移动(u,v)所造成的像素灰度值的变化量公式如下:

阈值

若窗口内是一个角点,则E(u,v)的计算结果将会很大。为了提高计算效率,对上述公式进行简化,利用泰勒级数展开来得到这个公式的近似形式。

对于二维的泰勒展开式公式为:

T(x,y)=f(u,v)+(x−u)fx(u,v)+(y−v)fy(u,v)+....

则I(x+u,y+v) 为:

I(x+u,y+v)=I(x,y)+uIx+vIy

其中Ix和Iy是I的微分(偏导),在图像中就是求x 和 y 方向的梯度图:

Ix=∂I(x,y)/∂x

Iy=∂I(x,y)/∂y

将I(x+u,y+v)=I(x,y)+uIx+vIy代入E(u,v)可得:

阈值

提出 u 和 v ,得到最终的近似形式:

阈值

其中矩阵M为:

阈值

最后是把实对称矩阵对角化处理后的结果,可以把R看成旋转因子,其不影响两个正交方向的变化分量。经对角化处理后,将两个正交方向的变化分量提取出来,就是 λ1 和 λ2(特征值)。 

这里利用了线性代数中的实对称矩阵对角化的相关知识,有兴趣的同学可以进一步查阅相关资料。

3

角点响应函数R

现在我们已经得到E(u,v)的最终形式,别忘了我们的目的是要找到会引起较大的灰度值变化的那些窗口。

灰度值变化的大小则取决于矩阵M,M为梯度的协方差矩阵。在实际应用中为了能够应用更好的编程,所以定义了角点响应函数R,通过判定R大小来判断像素是否为角点。

计算每个窗口对应的得分(角点响应函数R定义):

阈值

其中 det(M)=λ1λ2是矩阵的行列式,trace(M)=λ1+λ2是矩阵的迹。λ1和 λ2是矩阵M的特征值,k是一个经验常数,在范围 (0.04, 0.06) 之间。R的值取决于M的特征值,对于角点∣R∣很大,平坦的区域∣R∣很小,边缘的R为负值。

4

角点判定

根据 R 的值,将这个窗口所在的区域划分为平面、边缘或角点。为了得到最优的角点,我们还可以使用非极大值抑制。

注意:Harris 检测器具有旋转不变性,但不具有尺度不变性,也就是说尺度变化可能会导致角点变为边缘。想要尺度不变特性的话,可以关注SIFT特征。

因为特征值 λ1 和 λ2 决定了 R 的值,所以我们可以用特征值来决定一个窗口是平面、边缘还是角点:

平面:该窗口在平坦区域上滑动,窗口内的灰度值基本不会发生变化,所以∣R∣ 值非常小,在水平和竖直方向的变化量均较小,即 Ix和 Iy都较小,那么 λ1 和 λ2 都较小;

边缘:∣R∣值为负数,仅在水平或竖直方向有较大的变化量,即 Ix和Iy只有一个较大,也就是 λ1>>λ2 或 λ2>>λ1;

角点:[公式] 值很大,在水平、竖直两个方向上变化均较大的点,即 Ix和 Iy都较大,也就是 λ1 和 λ2 都很大。

如下图所示:

阈值

Harris 角点检测的结果是带有这些分数 R 的灰度图像,设定一个阈值,分数大于这个阈值的像素就对应角点。

编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分