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

文章目录一、Harris角点检测1.Harris角点检测算法2.何为角点3.对比Moravec角点检测算子二、不同场景下的实验分析1.纹理平坦场景2.1.1原图2.1.2光线变暗2.1.3侧面2.1.4变近2.1.5旋转2.1.6实验结果分析2.垂直或水平边缘多场景2.2.1原图2.2.2光线变暗2.2.3侧面2.2.4变远2.2.5旋转2.2.6实验结果分析3.纹理角点丰富场景2.3.1原图2....
摘要由CSDN通过智能技术生成

一、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进行变形:
在这里插入图片描述

变成了二次型,其中,

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Harris角点检测计算机视觉领域中一种常用的特征检测算法,可以在图像中检测到角点。在Python中,可以使用OpenCV库提供的cornerHarris()函数来实现Harris角点检测。该函数的参数包括输入图像、输出图像、块大小、卷积核大小、k值和边界类型等。通过调用该函数,可以得到图像中的角点信息。\[1\]\[2\] Harris角点检测的基本原理是通过计算图像中每个像素点的梯度和响应值来判断是否为角点。具体的算法流程包括梯度计算、响应值计算和角点提取。在梯度计算阶段,通过计算图像的水平和垂直方向的梯度来获取每个像素点的梯度信息。在响应值计算阶段,根据梯度信息计算每个像素点的响应值,响应值越大则越有可能是角点。最后,在角点提取阶段,通过设定一个阈值来筛选出响应值大于阈值的像素点作为角点。\[3\] 使用Harris角点检测算法可以在图像中找到边缘丰富区域和纹理角点丰富区域等特征。通过调整参数和阈值,可以适应不同场景下的角点检测需求。在实际应用中,Harris角点检测算法可以用于图像匹配、跟踪和三维重建等领域。 #### 引用[.reference_title] - *1* [Python实现Harris角点检测算法及完整源码](https://blog.csdn.net/qq_33885122/article/details/130352237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [基于Python手动实现Harris角点检测](https://blog.csdn.net/weixin_46585836/article/details/128129608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python计算机视觉——Harris角点检测](https://blog.csdn.net/Alex0714/article/details/117194388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值