###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( ...
随机推荐
- CP2102模块介绍(USB转uart)
1.主芯片为CP2102,安装驱动后生成虚拟串口2.USB取电,引出接口包括3.3V(<40mA),5V,GND,TX,RX,信号脚电平为3.3V,正逻辑3.板载状态指示灯.收发指示灯,正确安装 ...
- [OC Foundation框架 - 11] NSMutableDictionary
void dicUse() { NSMutableDictionary *dic = [NSMutableDictionary dictionary]; Student *stu1 = [Stud ...
- [OC Foundation框架 - 10] NSDictionary
通过唯一的key找到相应的value,类似于Map NSDictionary是不可变的 1.创建 void dicCreate() { //Immutable // NSDictionary *d ...
- 射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- EF如何正确的进行实体中修改
本文转载:http://www.cnblogs.com/Ruiky/archive/2012/12/29/2839011.html 不推荐方式一: 思路:先从ObjectContext取出实体,然后将 ...
- [Java 7][msvcr100.dll] Error when load Eclipse
[Problem] After I updated to Java 7, I could not load Eclipse. Here comes the erros: Eclipse: eclips ...
- ThindPad x230 无法U盘启动
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- Codeforces Round #323 (Div. 2) C. GCD Table 暴力
C. GCD Table Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/583/problem/C ...
- MongoDB入门简单介绍
有关于MongoDB的资料如今较少,且大多为英文站点,以上内容大多由笔者翻译自官网,请翻译或理解错误之处请指证.之后笔者会继续关注MongoDB,并翻译“Developer Zone”和“Admin ...
- 用GDB排查Python程序故障
某Team在用Python开发一些代码,涉及子进程以及设法消除僵尸进程的需求.实践中他们碰上Python程序非预期退出的现象.最初他们决定用GDB调试Python解释器,查看exit()的源头 ...