边缘检测中非极大值抑制简单解释

首先要明白的是:

(a.) canny算子中非最大抑制(Non-maximum suppression)是回答这样一个问题: “当前的梯度值在梯度方向上是一个局部最大值吗?” 所以,要把当前位置的梯度值与梯度方向上两侧的梯度值进行比较.
(b.) 梯度方向垂直于边缘方向, 这一点不要误解.

-
这里写图片描述
Q1: 插值是何意?为啥取g1,g2为一组,g3,g4为一组计算插值?
A: 首先, 虽然插值是有必要的,但是没有说必须要插值. 例如, Wikipedia里[1]的canny算子一文中的所讲的非最大值抑制就只是在0\90\45\135度梯度方向上进行的. 每个像素点梯度方向按照相近程度用这四个方向来代替,这种情况下,非最大值抑制所比较的相邻两个像素就是:
0 : 左边 和 右边
90 : 上边 和 下边
45 : 右上 和 左下
135: 左上 和 右下

这样做的好处是简单, 但是, 这种简化的方法无法达到最好的效果, 因为, 自然图像中的边缘梯度方向不一定是沿着这四个方向的. 因此, 就有很大的必要进行插值, 目的是找出在一个像素点上最能吻合其所在梯度方向的两侧的像素值.

然而, 通过argtan(gx/gy)得到的方向可以是-90~90度内的任何值, 但是, 因为实际数字图像中的像素点是离散的二维矩阵, 所以, 处在真正中心位置C处的梯度方向两侧的点是不一定存在的, 或者说是一个亚像素(sub pixel)点, 而这个不存在的点, 以及这个点的梯度值就必须通过对其两侧的点进行插值来得到.

至此, 插值的目的我讲述了一遍.

举个直观的例子,就是上面贴的那张图.
这个图给出的情况是, gy > gx 且 gx*gy > 0(注意: gx*gy>0是因为图像坐标系中y轴是朝下的.)

蓝色的直线代表梯度方向. g1, g2, g3, g4四个点以及插值点dTemp1, dTemp2 的位置如图所示.
对应的代码是:
g1 = pnMag[nPos-imageWidth-1] ;
g3 = pnMag[nPos+imageWidth+1] ;

g2 = pnMag[nPos-imageWidth] ;
g4 = pnMag[nPos+imageWidth] ;

下面解释, 插值公式为什么是:
dTmp1 = weight*g1 + (1-weight)*g2 ;
dTmp2 = weight*g3 + (1-weight)*g4 ;

这里: weight = fabs(gx)/fabs(gy) = ctan(theta), theta为梯度方向.
上面那个公式变一下就可以变换成:
weight = |dTemp1-g2|/|g1-g2| = |dTemp1-g2|/|C-g2| = ctan(theta);
而从我画的图中可以直观的看出,
在由 <,C, g2, dTemp1>组成的三角形中, 正好符合这个公式.(这里我没有太care正负号,只是为了给你一个直观解释)

讲到这里,应该你的后两个问题都不成问题了吧.

Q2: 原理上是比较3*3矩阵内相邻像素点是不是最大值,他为何比较g1,g2,g3,g4就完事了
A: 最大值抑制中的比较最大值不是看是不是3*3矩阵内的最大值, 而是看是不是梯度方向上的局部最大值. 否则就成了一个3*3的最大值滤波了. 为什么比较g1~g4, Q1的回答中已经讲清楚了.

Q3: 为何要分X,Y方向导数谁大两种情况比较
A: 把X, Y方向导数谁大两种情况分开只是为了编程上的方便. 你也可以分四种情况分别进行最大值抑制.

转载自:https://bbs.csdn.net/topics/370004267 中visionfans的回答

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哥德尔不完备定理”到底说了些什么?

来源&#xff1a;人机与认知实验室&#xff08;一&#xff09;【中文网上深入介绍哥德尔不完备定理的文章很少&#xff0c;我这篇文章写得很长&#xff0c;花了不少时间打磨它&#xff0c;希望能帮助到爱好数学与逻辑的人。文章把理解哥德尔不完备定理分为了五重&#xff0c;建…

背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)

以背景黑色&#xff0c;透明度0.5举例为大家详细介绍下关于背景透明&#xff0c;文字不透明的最佳方法同时兼容IE&#xff0c;具体实现如下&#xff0c;感兴趣的朋友可以参考下哈希望对大家有所帮助以背景黑色&#xff0c;透明度0.5举例 非IE&#xff1a;background:rgba(0,0,0…

关于相机标定的简单介绍

关于Opencv实现的代码&#xff0c;参考&#xff1a; https://blog.csdn.net/dcrmg/article/details/52939318 - 相机从生产出厂时&#xff0c;存在一些难以避免的畸变。这种镜头畸变可以通过矫正来达到最佳的拍摄效果。标定板要拍摄不同角度的20张照片&#xff0c;是因为镜头…

谷歌Waymo自建车厂,L4级无人车量产指日可待

来源&#xff1a;AI科技大本营摘要&#xff1a;现在&#xff0c;Waymo 宣称世界上第一家 100&#xff05; 致力于大规模生产 L4 自动驾驶汽车的工厂&#xff0c;即将诞生。美国当地时间 1 月 22 日&#xff0c;Google 旗下无人驾驶公司 Waymo 宣布&#xff0c;在未来五年内&…

java 使用json-lib 对象,String,json互转

所使用的包&#xff1a; commons-beanutils.jar commons-collections-3.1.jar commons-lang.jar commons-logging-1.1.3.jar ezmorph-1.0.jar json-lib-2.2.2-jdk15.jar 先看json和String的互转 User.java user对象 package test;public class User {String id;String name;i…

VS2013中CUDA的配置

参考一下博客&#xff1a; https://www.cnblogs.com/br170525/p/8325842.html 和 https://blog.csdn.net/tiemaxiaosu/article/details/52856495

腾讯“科学探索奖”提名报名正式启动

科学探索奖“申报指南”记者1月23日从腾讯公司获悉&#xff0c;由腾讯基金会联合杨振宁等众多知名科学家发起的“科学探索奖”提名报名正式启动。这标志着腾讯基金会这一投入10亿元发起的民间科学大奖正式拉开帷幕。按照科学探索奖官方网站提供的“申报指南”&#xff0c;该奖的…

Opencv数据符号说明

在openCV中常常会使用CV_32UC1等相似的字符&#xff0c;这里简单说明含义&#xff0c;作为备忘录。 标识含义 CV_表示是openCV中的宏定义。32是指这个数据是一个32位数据&#xff0c;相同的还有8,16,64三种。U是unsigned的首字母&#xff0c;代表最高位表示计数&#xff0c;而…

语音公司集体杀入AI芯片 2019场景落地战打响!

来源&#xff1a;智东西摘要&#xff1a;近十家语音公司集体搞芯片&#xff01;为什么杀红了眼&#xff0c;谁又能笑到最后&#xff1f;2019年的第一个工作日&#xff0c;在第一颗AI芯片“雨燕”落地不久&#xff0c;AI创业公司云知声紧锣密鼓地推出多模态AI芯片战略&#xff0…

[原创]VS2013 EF6连接MySql需要几步?

精简的美丽...... 1.安装mysql server下载地址 http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.21-winx64.zip注意&#xff1a;此url中除去文件名的部分是几乎所有文件下载的路径下面的文章可以借鉴 【MySQL】教你一步一步在Windows 8.1系统上配置免安装版mysql-5.6.21-…

Opencv中Mat的data数据只定义为uchar*类型,

opencv中Mat的数据定义为指向uchar 的指针&#xff0c;而构造函数又提供了许多其他类型。 其实数据在内存中是一维存储的&#xff0c;而图像基本结构是二维的&#xff0c;3D图像还会是三维的&#xff1b;同时&#xff0c;彩色图像还有多个channel&#xff08;通道&#xff09;…

任总讲话,说明华为对5G有清醒的认识

来源&#xff1a;科工力量摘要&#xff1a;无线通信产业已经发展了四代&#xff0c;目前正处于5G产业化前夕&#xff0c;是当下到一个最热的话题&#xff0c;5G如何发展&#xff0c;前景如何&#xff0c;是各个方面包括学术界、产业界、投资界以及政府都非常关心的。另外&#…

mysql 其他引擎

待补充转载于:https://www.cnblogs.com/mjorcen/p/4064037.html

Opencv和C++实现canny边缘检测

Canny边缘检测主要包括&#xff1a; 图像的灰度化&#xff1b;图像的高斯滤波&#xff0c;来平滑图像&#xff0c;同时消除和降低图像噪声的影响&#xff1b;计算出每一个像素点位置的梯度&#xff08;X方向梯度、Y方向梯度、已经该点的梯度幅值&#xff09;和方向角度&#x…

这些机器人决定全球机器人未来趋势·Science Robotics 评选年度十大机器人

来源&#xff1a;机器人大讲堂摘要&#xff1a;如果评选机器人领域最高端的学术杂志&#xff0c;那应该非《Science Robotics》莫属了。作为顶级期刊Science的子刊&#xff0c;一经问世便受到机器人界各位学术大牛的青睐&#xff0c;令人咋舌的前沿科技层出不穷。最近&#xff…

C#语言之“中英文混合字符串对齐”的方法

参考自&#xff1a;&#xff08;1&#xff09;http://www.cnblogs.com/cnluoke/articles/1213398.html &#xff08;2&#xff09;http://www.cnblogs.com/sql4me/archive/2009/11/16/1603996.html 方法一&#xff1a;将已有字符串组织成新字符串时填充 由于某一个字段&#xf…

计算机视觉三大顶级会议ICCV,CVPR,ECCV网址

ICCV网址如下: http://www.informatik.uni-trier.de/~ley/db/conf/iccv/index.html ECCV网址如下: http://www.informatik.uni-trier.de/~ley/db/conf/eccv/index.html CVPR网址如下: http://dblp.uni-trier.de/db/conf/cvpr/index.html 可以找到代码的 利用传统方法的视频…

2019年社交媒体趋势报告

来源&#xff1a;新媒体创意营销Kantar Media发布了新报告“2019年社交媒体趋势”。世界上40%的人口使用社交媒体。一些行业报告显示人们平均每天花两小时在这些平台上分享、点赞、发推和更新&#xff0c;那么2019年会怎样呢&#xff1f;第五个年度社交媒体趋势报告强调了该领域…

卡特兰数列编程实现

卡特兰(Catalan)数列典型特征有一类如下&#xff1a; 1. 可以分为两列 2. 每行从左向右依次递增&#xff08;减&#xff09;&#xff0c;每列从上向下依次递增&#xff08;减&#xff09; /* 2-10 标准二维表问题 问题为&#xff1a;设n是一个正整数。2*n的标准二维表是由正…

小猪的Android入门之路 day 1

小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显得格外火爆, 作为一名快要毕业的IT屌丝,自然要趟一趟这一浑水啦,当前主流的手机系统 IOS(苹果),Android(安卓)…