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

本文详细介绍了Harris角点检测的概念、原理和实现步骤,包括梯度计算、响应值计算以及角点提取,并展示了在不同场景(边缘丰富、纹理角点丰富、纹理平坦区域)下的实验结果,说明了光照、角度、距离变化对角点检测的影响。

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

Harris角点检测

概念

基于特征的图像配准方法是图像配准中最常见的方法之一。它不是直接利用图像像素值,二十通过像素值导出的符号特征(如特征点、特征线、特征区域)来实现图像配准,因此可以克服利用灰度信息进行图像配准的缺点,主要体现在以下三个方面:
(1)利用特征点而不是图像灰度信息,大大减少了在匹配过程中的计算量;
(2)特征点的匹配度量值相对位置变化比较敏感,可以提高匹配的精度;
(3)特征点的提取过程可以减少噪声的影响,对灰度

角点

一类重要的点特征:角点(corner points),其定义主要有以下:

(1)局部窗口沿各方向移动,灰度均产生明显变化的点
(2)图像局部曲率突变的点

我们可以直观的概括下角点所具有的特征:

轮廓之间的交点;

对于同一场景,即使视角发生变化,通常具备稳定性质的特征;

该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化;

角点检测

角点检测大致可分为三类:基于灰度图的角点检测、基于二值化图像的角点检测和基于轮廓曲线的角点检测。Harris属于基于灰度图的角点检测。

原理

算法的基本思想

算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。

Harris角点检测可分为三步:梯度计算、响应值计算、角点提取。

梯度计算

对图像中的任意一像素点I(x,y),进行自相关平移w(x+∆x、y+∆y)得到自相关函数:

c(x,y,∆x,∆y) = ∑wh(x,y)(I(x,y)-I(x+∆x,y+∆y))2

其中 ∑w表示窗口内的点,h(x,y)表示加权函数,加权函数可根据自己需要进行修改(通过修改源代码)。

由泰勒可得:

I(x+∆x,y+∆y) = I(x,y)+∆xIx(x,y)+∆yIy(x,y)+p ≈I(x,y)+∆xIx(x,y)+∆yIy(x,y)

        代入自相关函数可得(加权函数暂时忽略):

c(x,y,∆x,∆y) = ∑w(I(x,y)-I(x+∆x,y+∆y))2 ≈ ∑w((∆xIx(x,y))2+2∆x∆yIx(x,y)Iy(x,y)+(∆yIy(x,y))2)

将上公式用图表示如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
 其中,u和v分别表示∆x和∆y,w(x,y)表示加权函数。Harris算法是通过判断像素值是否在多个方向上有明显变化可转换为为是否在x和y方向上像素值均有明显变化,再转换为Ix或Iy的变化,再转换为M矩阵的特征值λ1,λ2的变化,如下图:
 在这里插入图片描述

响应值计算

上面计算不易于通过编程实现,Harris通过定义角点响应函数R的方式,用于表示一个角点的Harris响应值,通常用下面表达式度量角点响应:
在这里插入图片描述
trace表示为矩阵的迹,det为矩阵的行列式(矩阵的迹:主对角线上的值相加即所有特征值的和),k是常量,一般取值为0.04~0.06,这个参数仅仅是这个函数的一个系数,它的存在只是调节函数的形状而已。
R = λ1λ2-k(λ1+λ2)2

角点提取

通过上面计算出一角点的Harris响应值大小,后通过设定的阈值t,进行判断该点是否为角点(大于t为角点,小于t则不为角点)

Harris角点检测流程

Harris检测计算机视觉领域中一种常用的特征检测算法,可以在图像中检测。在Python中,可以使用OpenCV库提供的cornerHarris()函数来实现Harris检测。该函数的参数包括输入图像、输出图像、块大小、卷积核大小、k值和边界类型等。通过调用该函数,可以得到图像中的信息。\[1\]\[2\] Harris检测的基本原理是通过计算图像中每个像素的梯度和响应值来判断是否为。具体的算法流程包括梯度计算、响应值计算和提取。在梯度计算阶段,通过计算图像的水平和垂直方向的梯度来获取每个像素的梯度信息。在响应值计算阶段,根据梯度信息计算每个像素的响应值,响应值越大则越有可能是。最后,在提取阶段,通过设定一个阈值来筛选出响应值大于阈值的像素作为。\[3\] 使用Harris检测算法可以在图像中找到边缘丰富区域和纹理丰富区域等特征。通过调整参数和阈值,可以适应不同场景下的检测需求。在实际应用中,Harris检测算法可以用于图像匹配、跟踪和三维重建等领域。 #### 引用[.reference_title] - *1* [Python实现Harris检测算法及完整源码](https://blog.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值