计算机视觉——Harris角点检测

本文详细介绍了Harris角点检测算法,包括算法思想、与Moravec算子的对比,以及在不同场景(如纹理平坦、垂直或水平边缘多、纹理角点丰富)下的实验分析。实验结果显示,Harris算法具有旋转不变性,但在不同光线、尺度变化下,角点分布会受到影响。此外,文章提出在某些情况下,图像可能无法正确检测到角点,可能是由于参数设置或亮度问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Harris角点检测

1.Harris角点检测算法

Harris角点检测算子是于1988年由CHris Harris & Mike Stephens提出来的,是通过数学计算在图像上发现角点特征的一种算法,其具有旋转不变性的特质。Harris算法使用微分运算和自相关矩阵来进行角点检测,具有运算简单、提取的角点特征均匀合理、性能稳定等特点。
算法基本思想使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。
但Moravec早在1981就提出来一个Moravec角点检测算子。Harris角点检测算子实质上是对Moravec算子的改良和优化。

假设图像像素点(x,y)的灰度为 I(x,y),以像素点为中心的窗口沿 x 和 y 方向分别移动 u 和 v 的灰度强度变化的表达式为:在这里插入图片描述
其中 E(u,v)是灰度变化,w(x,y) 是窗口函数,一般是高斯函数,所以可以把w(x,y)看做是高斯滤波器。I(x,y)是图像灰度, I(x+u,y+v)是平移后的图像灰度。
收到泰勒公式的启发,在这里我们可以将 I(x+u,y+v)函数在(x,y)处泰勒展开,为了提高抗干扰的能力并且简化运算,我们取到了一阶导数部分,后面的无穷小小量O(u2+v2)可以忽略,整理得到表达式如下:在这里插入图片描述
将[ Ixu+Iyv ]展开后整理可以用矩阵表达为:在这里插入图片描述

最后我们可以近似得到E(x,y)的表达式,将其化为二次型后得到:在这里插入图片描述

其中M是一个2X2的矩阵,称为像素点的自相关矩阵,可以由图像的导数求得。M=窗口函数*偏导矩阵,表达式为:
在这里插入图片描述

因为u,v是局部微小的移动变量,所以我们对M进行讨论,M是一个2X2的矩阵,M的表达式中与点的位置(x,y)具体强相关性,记M得特征值为λ1,λ2,关于特征值我们可以简单理解为该点的灰度值变化速度,那么a1和a2可以分别看做是x方向和y方向的灰度变化速率,就可以用a1,a2两者的大小关系来进行分类。

2.何为角点

算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。该算法的主要思想是,如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点,称该点为角点。通常意义上来说,角点就是极值点,即在某方面属性特别突出的点,所谓的角点就是灰度在两个垂直方向上均变化较大的点,是在某些属性上强度最大或者最小的孤立点、线段的终点。而对于图像而言,即为图像的角点,其是物体轮廓线的连接点。
如何对角点进行检测就归结为如何检测出一个点区域在两个相互垂直方向上的梯度变化
在这里插入图片描述

3.对比Moravec角点检测算子

原理主要参考此处

  1. Moravec算子对方向的依赖性太强,在上文中我们可以看到,Moravec算子实际上只是移动了四个45度角的离散方向,真正优秀的检测算子应该能考虑到各个现象的移动变化情况。
    在这里插入图片描述

其中:
在这里插入图片描述
所以E就可以表示为:
在这里插入图片描述
2.由于Moravec算子采用的是方形的windows,因此的E的响应比较容易受到干扰,Harris采用了一个较为平滑的窗口——高斯函数:

在这里插入图片描述
3.Moravec算子对边缘响应过于灵敏。为此,Harris提出了对E进行变形:
在这里插入图片描述

变成了二次型,其中,
在这里插入图片描述
用α,β表示矩阵M的特征值,这样会产生三种情况:A 如果α,β都很小,说明高斯windows中的图像接近平坦。 B 如果一个大一个小,则表示检测到边。 C 如果α,β都很大,那么表示检测到了角点。

α,β就是椭圆的长短轴的度量,椭圆通过那个二次型函数而得来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值