###Canny边缘检测算子
开源中国。
#@date: 2014-06-20
#@author: gerui
#@email: forgerui@gmail.com
一、一阶微分边缘算子
1. 一阶微分边缘检测算子也称梯度边缘算子。
2. 梯度的模值大小提供了边缘的强度信息,梯度的方向提供了边缘趋势信息,因为梯度方向始终是垂直于边缘的方向。
3. 用有限差分进行梯度近似。
二、二阶微分边缘算子
1. 二阶微分边缘检测算子,它是利用图像在边缘处的阶跃性导致图像二阶微分在边缘处出现零值这一特性进行检测。
2. 二阶微分算子对噪声十分敏感。采用LOG可以减少噪声对边缘的影响。
3. 使用高斯函数对图像进行滤波并对图像滤波结果进行二阶微分运算的过程,可以转换为先对高斯函数进行二阶微分,再利用高斯函数的二阶微分结果对图像进行卷积运算。
三、Canny边缘检测算子
1. 三条标准:高检测率;精确的定位;明确的响应。
2. Canny算子主要四步骤:
1) 用高斯函数对图像进行平滑滤波。将高斯函数作成滤波模板,使用5 X 5的模板。
2) 计算梯度值与方向角。分别求取x方向和y方向的梯度Mx和My。求梯度可以通过使用Sobel模板与图像进行卷积。归并到0, 45, 90, 135四个方向。
3) 非最大值抑制。经过Sobel滤波后,图像中的边缘粗细不一。边缘的粗细主要取决于跨越边缘密度分布。非最大值抑制是将梯度方向上最大梯度值保留,将其他像元删除。分为0,45,90,135度四个方向分别处理,如0度方向检查(x+1, y)、(x, y)、(x-1, y);45度方向检查(x+1, y+1)、(x, y)、(x-1, y-1)...比较这三个像元大小,将较小的两个删除。
4) 滞后阈值化。由于噪声干扰,本应该连续的边缘出现断裂。滞后阈值化设定两个阈值thigh,一个低阈值tlow,通过如下方法计算:
a) 如果像元(x, y)的梯度值大于thigh,则标记为边缘像元;
b) 如果像元(x, y)的梯度值小于tlow,则标记为非边缘像元;
c) 如果像元(x, y)值介于两个阈值之间,则判断及3、5邻域内是否存在梯度大于thigh,如果有则标记为边缘,没有则标记为非边缘像元。
###Canny边缘检测算子的更多相关文章
- Canny边缘检测
1.Canny边缘检测基本原理 (1)图象边缘检测必须满足两个条件:一能有效地抑制噪声:二必须尽量精确确定边缘的位置. (2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子.这 ...
- [转载+原创]Emgu CV on C# (六) —— Emgu CV on Canny边缘检测
Canny边缘检测也是一种边缘检测方法,本文介绍了Canny边缘检测的函数及其使用方法,并利用emgucv方法将轮廓检测解算的结果与原文进行比较. 图像的边缘检测的原理是检测出图像中所有灰度值变化较大 ...
- Canny边缘检测算法的实现
图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.由于数字图像的离散信号, ...
- 图像边缘检测——几种图像边缘检测算子的学习及python 实现
本文学习利用python学习边缘检测的滤波器,首先读入的图片代码如下: import cv2 from pylab import * saber = cv2.imread("construc ...
- Python+OpenCV图像处理(十三)—— Canny边缘检测
简介: 1.Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法. 2.Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是: 好的检测- ...
- openc —— Canny 边缘检测
边缘检测的一般步骤 [第一步]滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能.常见的滤波方法主要有高斯滤波,即采用 ...
- 各种边缘检测算子特点比较(canny)
canny 最好.但是容易把噪点误判为边界.sobel prewitt log 效果差不多.prewitt比sobel 去噪效果好.roberts马马虎虎.适合什么图片那得看图片的噪点情况,一般can ...
- Sobel算子取代:基于特定点方向的canny边缘检测
前言: Canny边缘检测使用了Sobel算子,计算dx和dy两个方向,对于特定方向的边缘检测,可以作少量修改. 代码: 计算特定方向上的边缘 void CannyOrient( cv::Mat &a ...
- OpenCV图像Canny边缘检测
Canny边缘检测 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘函数原型: void cvCanny( ...
随机推荐
- 使用list和tuple
list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...
- windows 一个进程可以允许最大的线程数
默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小. 你也 ...
- oracle下的OVER(PARTITION BY)函数介绍
转自:http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html OVER(PARTITION BY)函数介绍 开窗函数 ...
- PowerDesigner实用技巧小结(4)
下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的.对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握.并逐步做到:在应用中发展,在发展中应用. 1. ...
- ThindPad x230 无法U盘启动
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- Apache Options Indexes FollowSymLinks具体解释
禁止显示Apache文件夹列表-Indexes FollowSymLinks 怎样改动文件夹的配置以禁止显示 Apache 文件夹列表. 缺省情况下假设你在浏览器输入地址: http://loc ...
- Hdu 5001 Walk 概率dp
Walk Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5001 Desc ...
- iOS开发——UI篇OC篇&SpriteKit详解
SpriteKit详解 SpriteKit,iOS/Mac游戏制作的新纪元 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览.本文仅作为个人记录使用,也欢迎在许可协议范围内转载或 ...
- android报错及解决1--Bitmap加载时,报bitmap size exceeds VM budget
报错描述: 用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget 原因分析: android系统限制,只 ...
- 关于Log4j的初始化
1Log4j是什么 Log4j是Apache比較优秀的开源项目.在各个平台和项目中有较为广泛的应用.是为JAVA平台开发的日志管理平台.同一时候,Log4j也是JAVA开发项目中使用比較普遍的日 ...