0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

QQ475400555 来源:机器视觉沙龙 2023-09-22 15:46 次阅读

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

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)设定为以窗口中心为原点的高斯分布,即一个高斯核。

9bcccb16-58db-11ee-939d-92fbcf53809c.png

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

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

9bdd21b4-58db-11ee-939d-92fbcf53809c.png

若窗口内是一个角点,则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)可得:

9be7b304-58db-11ee-939d-92fbcf53809c.png

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

9bf3ca5e-58db-11ee-939d-92fbcf53809c.png

其中矩阵M为:

9c006bec-58db-11ee-939d-92fbcf53809c.png

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

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

3

角点响应函数R

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

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

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

9c15854a-58db-11ee-939d-92fbcf53809c.png

其中 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 都很大。

如下图所示:

9c328dac-58db-11ee-939d-92fbcf53809c.png

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

编辑:黄飞

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

    关注

    27

    文章

    1300

    浏览量

    56881
  • 阈值
    +关注

    关注

    0

    文章

    123

    浏览量

    18542
  • Harris
    +关注

    关注

    0

    文章

    9

    浏览量

    8232

原文标题:图像处理-harris角点检测

文章出处:【微信号:机器视觉沙龙,微信公众号:机器视觉沙龙】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于FPGA的图像点检测

    有没有用verilog语言写的基于FPGA的图像点检测代码呀?
    发表于 04-10 10:47

    人脸检测算法及新的快速算法

    最近几年的人脸检测算法和一种新的快速算法,与大家探讨特征、弱分类器、收敛准则、样本选择等对人脸检测性能的影响,并尝试分析人脸姿态、表情、遮挡、年龄、种族等影响因素。2013年全国图像
    发表于 09-26 15:13

    基于matlab的图像处理--飞机检测

    ,一种自适应的Harris点检测算法2013年6月,何楚等,基于分层自适应部分的遥感图像飞机目标检测2011年9月,仇建斌等,
    发表于 09-30 11:46

    机器视觉图像处理点检测技术

    点检测算法Harris点检测算法、KLT点检测算法及SUSAN
    发表于 01-22 13:46

    【DragonBoard 410c试用体验】 之OpenCV中之图像点检测实现

    ( WINDOW_NAME2, scaledImage );}这里代码稍微有点多,不过我们主要看cornerHarris 函数,它这才是用于在OpenCV中运行Harris点检测算处理
    发表于 09-13 19:46

    基于图像距离差的织物疵点检测算法

    本文将机器视觉与数字图像处理技术引入到织物疵点检测中,提出了一种织物疵点检测算法——图像距离差
    发表于 05-27 13:12 17次下载

    基于小波变换多尺度Harris点检测算法

    提出一种新的基于小波变换的Harris 多尺度角点检测算法,可以在不同的尺度下获取点,克服了单一尺度的Harris
    发表于 01-09 11:18 41次下载

    Harris点特征的图像拼接方法

    本文通过对已有图像拼接算法的分析研究,改进了拼接算法中的特征点匹配问题。首先利用Harris检测算法
    发表于 12-29 16:31 28次下载
    <b class='flag-5'>Harris</b><b class='flag-5'>角</b>点特征的<b class='flag-5'>图像</b>拼接方法

    Harris点检测

    《OpenCV3编程入门》书本配套源代码:Harris点检测
    发表于 06-06 15:20 4次下载

    OpenCV3编程入门-源码例程全集-Harris点检测

    OpenCV3编程入门-源码例程全集-Harris点检测
    发表于 09-18 16:38 1次下载

    免费下载!一款基于Zynq的Harris点检测算法实现Demo

    作者:Stark 点检测(Corner Detection)是计算机视觉系统中用来获取图像特征的一种方法,广泛应用于运动检测图像匹配、视
    发表于 02-08 04:03 516次阅读

    Harris点检测在列车滑动监测系统中的应用_潘峥嵘

    Harris点检测在列车滑动监测系统中的应用_潘峥嵘
    发表于 03-19 11:26 0次下载

    OpenCV3.1教程之Harris点检测的详细课件免费下载

    本文档的主要内容详细介绍的是OpenCV3.1教程之Harris点检测的详细课件免费下载。包括了:1.Harris
    发表于 01-06 08:00 7次下载
    OpenCV3.1教程之<b class='flag-5'>Harris</b><b class='flag-5'>角</b><b class='flag-5'>点检测</b>的详细课件免费下载

    基于高斯金字塔图像的改进Harris特征点检测算法

    为了提高海面特征点检测的准确度和三维重建的精度,在基于传统的μaris算法的基础上,提岀Ⅰ种基于高斯金字塔图像的改进Hars特征点检测算法。利用搭建的双目相机泙台,对海浪
    发表于 05-06 17:03 18次下载
    基于高斯金字塔<b class='flag-5'>图像</b>的改进<b class='flag-5'>Harris</b>特征<b class='flag-5'>点检测算法</b>

    基于Delaunay三剖分的空间离群点检测算法研究

    电子发烧友网站提供《基于Delaunay三剖分的空间离群点检测算法研究.pdf》资料免费下载
    发表于 10-07 11:15 0次下载