canny算法

canny算法
canny算法

1.Canny 边缘检测算子是John F. Canny于1986 年开发出来的一个多级边缘检测算法。更为重要的是Canny 创立了边缘检测计算理论(Computational theory of edge detection)解释这项技术如何工作

编辑本段

2.Canny 算法的发展

Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是:

好的检测- 算法能够尽可能多地标识出图像中的实际边缘。好的定位- 标识出的边缘要尽可能与实际图像中的实际边缘尽可能接近。最小响应- 图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘。为了满足这些要求Canny 使用了变分法,这是一种寻找满足特定功能的函数的方法。最优检测使用四个指数函数项的和表示,但是它非常近似于高斯函数的一阶导数。

编辑本段

3.Canny 算法的步骤

(1)降噪

任何边缘检测算法都不可能在未经处理的原始数据上很好地工作,所以第一步是对原始数据与高斯mask 作卷积,得到的图像与原始图像相比有些轻微的模糊(blurred)。这样,单独的一个像素噪声在经过高斯平滑的图像上变得几乎没有影响。

(2)寻找图像中的亮度梯度

图像中的边缘可能会指向不同的方向,所以Canny 算法使用 4 个mask 检测水平、垂直以及对角线方向的边缘。原始图像与每个mask 所作的卷积都存储起来。对于每个点我们都标识在这个点上的最大值以及生成的边缘的方向。这样我们就从原始图像生成了图像中每个点亮度梯度图以及亮度梯度的方向。

(3)在图像中跟踪边缘

较高的亮度梯度比较有可能是边缘,但是没有一个确切的值来限定多大的亮度梯度是边缘多大又不是,所以Canny 使用了滞后阈值。

滞后阈值需要两个阈值——高阈值与低阈值。假设图像中的重要边缘都是连续的曲线,这样我们就可以跟踪给定曲线中模糊的部分,并且避免将没有组成曲线的噪声像素当成边缘。所以我们从一个较大的阈值开始,这将标识出我们比较确信的真实边缘,使用前面导出的方向信息,我们从这些真正的边缘开始在图像中跟踪整个的边缘。在跟踪的时候,我们使用一个较小的阈值,这样就可以跟踪曲线的模糊部分直到我们回到起点。

一旦这个过程完成,我们就得到了一个二值图像,每点表示是否是一个边缘点。

一个获得亚像素精度边缘的改进实现是在梯度方向检测二阶方向导数的过零点

它在梯度方向的三阶方向导数满足符号条件

其中Lx, Ly ... Lyyy 表示用高斯核平滑原始图像得到的尺度空间表示L 计算得到的偏导数。用这种方法得到的边缘片断是连续曲线,这样就不需要另外的边缘跟踪改进。滞后阈值也可以用于亚像素边缘检测。

(4).参数

Canny 算法包含许多可以调整的参数,它们将影响到算法的计算的时间与实效。

高斯滤波器的大小:第一步所有的平滑滤波器将会直接影响Canny 算法的结果。较小的滤波器产生的模糊效果也较少,这样就可以检测较小、变化明显的细线。较大的滤波器产生的模糊效果也较多,将较大的一块图像区域涂成一个特定点的颜色值。这样带来的结果就是对于检测较大、平滑的边缘更加有用,例如彩虹的边缘。阈值:使用两个阈值比使用一个阈值更加灵活,但是它还是有阈值存在的共性问题。设置的阈值过高,可能会漏掉重要信息;阈值过低,将会把枝节信息看得很重要。很难给出一个适用于所有图像的通用阈值。

目前还没有一个经过验证的实现方法。

边缘检测

CSDN亲密携手阿里云重磅推出云邮箱服务HTML5群组诚募管理员,“活跃之星”活动火热进行中Canny边缘检测算法原理及其VC实现详解(一) 2011-10-20 21:39560人阅读评论(0)收藏举报图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不同的边缘检测方法。根据作者的理解和实践,本文对边缘检测的原理进行了描述,在此基础上着重对Canny检测算法的实现进行详述。 本文所述内容均由编程验证而来,在实现过程中,有任何错误或者不足之处大家共同讨论(本文不讲述枯燥的理论证明和数学推导,仅仅从算法的实现以及改进上进行原理性和工程化的描述)。 1、边缘检测原理及步骤 在之前的博文中,作者从一维函数的跃变检测开始,循序渐进的对二维图像边缘检测的基本原理进行了通俗化的描述。结论是:实现图像的边缘检测,就是要用离散化梯度逼近函数根据二维灰度矩阵梯度向量来寻找图像灰度矩阵的灰度跃变位置,然后在图像中将这些位置的点连起来

就构成了所谓的图像边缘(图像边缘在这里是一个统称,包括了二维图像上的边缘、角点、纹理等基元图)。 在实际情况中理想的灰度阶跃及其线条边缘图像是很少见到的,同时大多数的传感器件具有低频滤波特性,这样会使得阶跃边缘变为斜坡性边缘,看起来其中的强度变化不是瞬间的,而是跨越了一定的距离。这就使得在边缘检测中首先要进行的工作是滤波。 1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核(具体见“高斯滤波原理及其编程离散化实现方法”一文),然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和(具体程序实现见下文)。 2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时,可通过计算梯度幅值来确定。 3)检测:经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中,常用的方法是通过阈值化方法来检测。 2、Canny边缘检测算法原理

几种常用边缘检测算法的比较

几种常用边缘检测算法的比较摘要:边缘是图像最基本的特征,边缘检测是图像分析与识别的重要环节。基于微分算子的边缘检测是目前较为常用的边缘检测方法。通过对Roberts,Sobel,Prewitt,Canny 和Log 及一种改进Sobel等几个微分算子的算法分析以及MATLAB 仿真实验对比,结果表明,Roberts,Sobel 和Prewitt 算子的算法简单,但检测精度不高,Canny 和Log 算子的算法复杂,但检测精度较高,基于Sobel的改进方法具有较好的可调性,可针对不同的图像得到较好的效果,但是边缘较粗糙。在应用中应根据实际情况选择不同的算子。 0 引言 边缘检测是图像分析与识别的第一步,边缘检测在计算机视觉、图像分析等应用中起着重要作用,图像的其他特征都是由边缘和区域这些基本特征推导出来的,边缘检测的效果会直接影响图像的分割和识别性能。边缘检测法的种类很多,如微分算子法、样板匹配法、小波检测法、神经网络法等等,每一类检测法又有不同的具体方法。目前,微分算子法中有Roberts,Sobel,Prewitt,Canny,Laplacian,Log 以及二阶方向导数等算子检测法,本文仅将讨论微分算子法中的几个常用算子法及一个改进Sobel算法。 1 边缘检测 在图像中,边缘是图像局部强度变化最明显的地方,它

主要存在于目标与目标、目标与背景、区域与区域( 包括不同色彩) 之间。边缘表明一个特征区域的终结和另一特征区域的开始。边缘所分开区域的内部特征或属性是一致的,而不同的区域内部特征或属性是不同的。边缘检测正是利用物体和背景在某种图像特征上的差异来实现检测,这些差异包括灰度、颜色或纹理特征,边缘检测实际上就是检测图像特征发生变化的位置。边缘的类型很多,常见的有以下三种: 第一种是阶梯形边缘,其灰度从低跳跃到高; 第二种是屋顶形边缘,其灰度从低逐渐到高然后慢慢减小; 第三种是线性边缘,其灰度呈脉冲跳跃变化。如图1 所示。 (a) 阶梯形边缘(b) 屋顶形边缘 (b) 线性边缘 图像中的边缘是由许多边缘元组成,边缘元可以看作是一个短的直线段,每一个边缘元都由一个位置和一个角度确定。边缘元对应着图像上灰度曲面N 阶导数的不连续性。如果灰度曲面在一个点的N 阶导数是一个Delta 函数,那么就

canny sobel算子

基于sobel 、canny 的边缘检测实现 一.实验原理 Sobel 的原理: 索贝尔算子(Sobel operator )是图像处理中的算子之一,主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量. 该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A 代表原始图像,Gx 及Gy 分别代表经横向及纵向边缘检测的图像,其公式如下: 101202*101x G A -+?? ?=-+ ? ?-+?? 121000*121y G A +++?? ?= ? ?---?? 图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。 在以上例子中,如果以上的角度Θ等于零,即代表图像该处拥有纵向边缘,左方较右方暗。 在边沿检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边沿的 ;另一个是检测垂直平边沿的 。与 和 相比,Sobel 算子对于象素的位置的影响做了加权,因此效果更好。 Sobel 算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边沿的 ,另一个是检测垂直平边沿的 。各向同性Sobel 算子和普通Sobel 算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。由于建筑物图像的特殊性,我们可以发现,处理该类型图像轮廓时,并不需要对梯度方向进行运算,所以程序并没有给出各向同性Sobel 算子的处理方法。 由于Sobel 算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有效,因此应用广泛。美中不足的是,Sobel 算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel 算子没有基于图像灰度进行处理,由于Sobel 算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。 在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。 Canny 的原理:

canny边缘检测算法代码

canny算子代码 void CreatGauss(double sigma, double **pdKernel, int *pnWidowSize); void GaussianSmooth(SIZE sz, LPBYTE pGray, LPBYTE pResult, double sigma); void Grad(SIZE sz, LPBYTE pGray, int *pGradX, int *pGradY, int *pMag); void NonmaxSuppress(int *pMag, int *pGradX, int *pGradY, SIZE sz, LPBYTE pNSRst); void EstimateThreshold(int *pMag, SIZE sz, int *pThrHigh, int *pThrLow, LPBYTE pGray, double dRatHigh, double dRatLow); void Hysteresis(int *pMag, SIZE sz, double dRatLow, double dRatHigh, LPBYTE pResult); void TraceEdge(int y, int x, int nThrLow, LPBYTE pResult, int *pMag, SIZE sz); void Canny(LPBYTE pGray, SIZE sz, double sigma, double dRatLow, double dRatHigh, LPBYTE pResult); #include "afx.h" #include "math.h" #include "canny.h" // 一维高斯分布函数,用于平滑函数中生成的高斯滤波系数 void CreatGauss(double sigma, double **pdKernel, int *pnWidowSize) { LONG i; //数组中心点 int nCenter; //数组中一点到中心点距离 double dDis; //中间变量 double dValue;

图像边缘检测方法比较研究

图像边缘检测方法比较研究 作者:关琳琳孙媛 来源:《现代电子技术》2008年第22期 摘要:边缘检测在数字图像处理中有着重要的作用。系统分析目前具有代表性的边缘检测方法,并用IDL6.3软件实现各种算法。实验结果表明,各种方法均有各自的优缺点和适用条件,在做图像边缘检测之前,应对图像进行分析,针对图像的特点和应用需求选用合适的方法。 关键词:边缘检测;检测算子;高通滤波;小波变换 中图分类号:TP391文献标识码:A 文章编号:1004-373X(2008)22-096-03 Comparison of Image Edge Detection Methods GUAN Linlin1,SUN Yuan2 (1.Department of Resource Science and Technology,Beijing Normal University,Beijing,100875,China; 2.96656 Unit of Second Artillery F orces,Chinese People′s Liberation Army,Beijing,100820,China) Abstract:Edge detection plays an important role in digital image processing.This paper comprehensively analyze the representative methods of edge detection at present,and realizes each algorithm with the IDL6.3 software.Results indicate that each method has some advantages and limitations.It should be carefully selected according to the characteristics of the image as well as application needs before conducting edge detection. Keywords:edge detection;detective operators;high-pass filtering;wavelet transform 1 引言 边缘检测技术是图像特征提取中的重要技术之一,也是图像分割、目标区域识别、区域形状提取等图像分析方法的基础。近年来,边缘检测技术被广泛地应用在各个领域,例如工程技术中零件检查[1]、医学中器官病变状况观察[2]、遥感图像处理中道路等典型地物的提取[3]以及估算遥感平台的稳定精度[4]等。这使得如何快速、准确地获得边缘信息成为国内外研究的热点。边缘检测方法在空间域和频域中均可以实现,而且不断涌现出新技术新方法。这些方法

Canny边缘检测

Canny边缘检测 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不同的边缘检测方法。根据作者的理解和实践,本文对边缘检测的原理进行了描述,在此基础上着重对Canny检测算法的实现进行详述。 本文所述内容均由编程验证而来,在实现过程中,有任何错误或者不足之处大家共同讨论(本文不讲述枯燥的理论证明和数学推导,仅仅从算法的实现以及改进上进行原理性和工程化的描述)。 1、边缘检测原理及步骤 在之前的博文中,作者从一维函数的跃变检测开始,循序渐进的对二维图像边缘检测的基本原理进行了通俗化的描述。结论是:实现图像的边缘检测,就是要用离散化梯度逼近函数根据二维灰度矩阵梯度向量来寻找图像灰度矩阵的灰度跃变位置,然后在图像中将这些位置的点连起来就构成了所谓的图像边缘(图像边缘在这里是一个统称,包括了二维图像上的边缘、角点、纹理等基元图)。 在实际情况中理想的灰度阶跃及其线条边缘图像是很少见到的,同时大多数的传感器件具有低频滤波特性,这样会使得阶跃边缘变为斜坡性边缘,看起来其中的强度变化不是瞬间的,而是跨越了一定的距离。这就使得在边缘检测中首先要进行的工作是滤波。 1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核(具体见“高斯滤波原理及其编程离散化实现方法”一文),然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和(具体程序实现见下文)。 2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时,可通过计算梯度幅值来确定。

图像边缘检测方法的研究与实现刘法200832800066

图像边缘检测方法的研究与实现刘法200832800066

青岛大学专业课程设计 院系: 自动化学院 专业: 电子信息工程 班级: 08级电子信息工程3班学生姓名: 刘法 指导教师: 王汉萍庄晓东 日期: 2011年12月23日

题目:图像边缘检测方法的研究与实现 一、边缘检测以及相关概念 1.1边缘,边缘检测的介绍 边缘(edge)是指图像局部强度变化最显著的部分.边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征和形状特征等图像分析的重要基础.图像分析和理解的第一步常常是边缘检测(edge detection). 边缘检测是指使用数学方法提取图像像元中具有亮度值(灰度)空间方向梯度大的边、线特征的过程。 在讨论边缘算子之前,首先给出一些术语的定义: 边缘点:图像中具有坐标] ,[j i且处在强度显著变化的位置上的点.边缘段:对应于边缘点坐标] i及其方位 ,边缘的方位可能是梯度角. ,[j 边缘检测器:从图像中抽取边缘(边缘点和边缘段)集合的算法. 轮廓:边缘列表,或是一条表示边缘列表的拟合曲线. 边缘连接:从无序边缘表形成有序边缘表的过程.习惯上边缘的表示采用顺时针方向序. 边缘跟踪:一个用来确定轮廊的图像(指滤波后的图像)搜索过程. 边缘点的坐标可以是边缘位置像素点的行、列整数标号,也可以在子像素分辨率水平上表示.边缘坐标可以在原始图像坐标系上表示,但大多数情况下是在边缘检测滤波器的输出图像的坐标系上表示,因为滤波过程可能导致图像坐标平移或缩放.边缘段可以用像素点尺寸大小的小线段定义,或用具有方位属性的一个点定义.请注意,在实际中,边缘点和边缘段都被称为边缘.边缘连接和边缘跟踪之间的区别在于:边缘连接是把边缘检测器产生的无序边缘集作为输入,输出一个有序边缘集;边缘跟踪则是将一幅图像作为输入,输出一个有序边缘集.另外,边缘检测使用局部信息来决定边缘,而边缘跟踪使用整个图像信息来决定一个像素点是不是边缘. 1.2 边缘检测算子 边缘检测是图像特征提取的重要技术之一, 边缘常常意味着一个区域的终结和另一个区域的开始. 图像的边缘包含了物体形状的重要信息,它不仅在分析图像时大幅度地减少了要处理的信息量,而且还保护了目标的边界结构. 因此,边缘检测可以看做是处理许多复杂问题的关键. 边缘检测的实质是采用某种算法来提取出图像中对对象与背景间的交界线。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此可以用局部图像微分技术来获取边缘检测算子。经典的边缘检测方法是对原始图像中的像素的某个邻域来构造边缘检测算子。以下是对几种经典的边缘检测算子进行理论分析,并对各自的性能特点做出比较和评价。 边缘检测的原理是:由于微分算子具有突出灰度变化的作用,对图像进行微分运算,在图像边缘处其灰度变化较大,故该处微分计算值教高,可将这些微分值作为相应点的边缘强度,通过阈值判别来提取边缘点,即如果微分值大于阈值,则为边缘点。

哈夫变换和Canny边缘检测算法及其实现代码

哈夫变换和Canny边缘检测算法 摘要在图象边缘检测中往往要求所检测到的边缘具有封闭特性,本文详细地分析了目前常用的两种算法:哈夫变换和Canny边缘检测算法,最后,探讨边缘算子应满足的准则。关键词边缘检测;闭合性;哈夫变换;Canny算子 1引言 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不同的边缘检测方法。在我们常用的几种用于边缘检测的算子中Laplace算子常常会产生双边界;而其他一些算子如Sobel算子又往往会形成不闭合区域。本文主要讨论了在边缘检测中,获取封闭边界区域的算法。 2 图象边缘检测的基本步骤 (1)滤波。边缘检测主要基于导数计算,但受噪声影响。但滤波器在降低噪声的同时也导致边缘强度的损失。 (2)增强。增强算法将邻域中灰度有显著变化的点突出显示。一般通过计算梯度幅值完成。 (3)检测。但在有些图象中梯度幅值较大的并不是边缘点。最简单的边缘检测是梯度幅值阈值判定。 (4)定位。精确确定边缘的位置。 图1 边缘检测酸法的基本步骤 3 边界闭合的算法 3.1 哈夫变换[3] 由于噪声的存在,用各种算子得到的边缘象素不连续,但是由于边缘象素之间有一定的连续性,我们就可以根据边缘象素在梯度幅度或梯度方向上的连续性把他们连接起来。具体说来,如果象素(s,t)在象素(x,y)的领域且它们的梯度幅度与梯度方向在给定的阈值下满足: T是幅度阈值;A是角度阈值; 那么,如对所有的边缘象素都进行上述的判断和连接就可以得到一个闭合的边界。哈夫变换方法是利用图像得全局特性而对目标轮廓进行直接检测的方法,在已知区域形状的条

边缘检测算子比较

边缘检测算子比较 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外,成像过程中的光照和噪声也是不可避免的重要因素。正是因为这些原因,基于边缘的图像分割仍然是当前图像研究中的世界级难题,目前研究者正在试图在边缘提取中加入高层的语义信息。 课题所用图像边缘与边界应该算是等同的。 在实际的图像分割中,往往只用到一阶和二阶导数,虽然,原理上,可以用更高阶的导数,但是,因为噪声的影响,在纯粹二阶的导数操作中就会出现对噪声的敏感现象,三阶以上的导数信息往往失去了应用价值。二阶导数还可以说明灰度突变的类型。在有些情况下,如灰度变化均匀的图像,只利用一阶导数可能找不到边界,此时二阶导数就能提供很有用的信息。二阶导数对噪声也比较敏感,解决的方法是先对图像进行平滑滤波,消除部分噪声,再进行边缘检测。不过,利用二阶导数信息的算法是基于过零检测的,因此得到的边缘点数比较少,有利于后继的处理和识别工作。 各种算子的存在就是对这种导数分割原理进行的实例化计算,是为了在计算过程中直接使用的一种计算单位; Roberts算子:边缘定位准,但是对噪声敏感。适用于边缘明显且噪声较少的图像分割。Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。经分析,由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。Prewitt算子:对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。 Sobel算子:Sobel算子和Prewitt算子都是加权平均,但是Sobel算子认为,邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越远,产生的影响越小。 Isotropic Sobel算子:加权平均算子,权值反比于邻点与中心点的距离,当沿不同方向检测边缘时梯度幅度一致,就是通常所说的各向同性。 在边沿检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边沿的;另一个是检测垂直平边沿的。Sobel算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边沿的,另一个是检测垂直平边沿的。各向同性Sobel 算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。由于建筑物图像的特殊性,我们可以发现,处理该类型图像轮廓时,并不需要对梯度方向进行运算,所以程序并没有给出各向同性Sobel算子的处理方法。 由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们可以给出阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。

Canny边缘检测算法总结

一.Canny边缘检测算法原理 JohnCanny于1986年提出Canny算子,属于是先平滑后求导数的方法。其处理过程大体上分为下面四部分。 1. 对原始图像进行灰度化 Canny算法通常处理的图像为灰度图,因此如果获取的是彩色图像,那首先就得进行灰度化。对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。以RGB格式的彩图为例,通常灰度化采用的方法主要有: 方法1:Gray=(R+G+B)/3; 方法2:Gray=0.299R+0.587G+0.114B;(这种参数考虑到了人眼的生理特点) 至于其他格式的彩色图像,可以根据相应的转换关系转为RGB然后再进行灰度化;在编程时要注意图像格式中RGB的顺序通常为BGR。 2. 对图像进行高斯滤波 图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现。 1)高斯核实现 上式为离散化的一维高斯函数,确定参数就可以得到一维核向量。 上式为离散化的二维高斯函数,确定参数就可以得到二维核向量。 在求得高斯核后,要对整个核进行归一化处理。 2)图像高斯滤波 对图像进行高斯滤波,其实就是根据待滤波的像素点及其邻域点的灰度值按照一定的参数规则进行加权平均。这样可以有效滤去理想图像中叠加的高频噪声。 通常滤波和边缘检测是矛盾的概念,抑制了噪声会使得图像边缘模糊,这会增加边缘定位的不确定性;而如果要提高边缘检测的灵敏度,同时对噪声也提高了灵敏度。实际工程经验表明,高斯函数确定的核可以在抗噪声干扰和边缘检测精确定位之间提供较好的折衷方案。 3. 用一阶偏导的有限差分来计算梯度的幅值和方向

各种边缘检测的比较

各类边缘检测算子的比较 摘要:边缘检测是图像处理和计算机视觉中的基本问题,其目的标识数字图像中亮度变化明显的点。图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于搜索和基于零交叉。基于搜索的边缘检测算子有:Roberts算子,Prewitt算子,Sobel算子,Canny算子,罗盘算子。基于零交叉的边缘检测算子有Marr-Hildreth边缘检测器。本篇论文分析了各种检测算子的特点,并对各种边缘检测算法的检测结果进行了比较。 关键词:边缘检测;图像处理;算子 0 引言 图像边缘是图像的重要特征,是计算机视觉、模式识别等的基础,因此边缘检测是图像处理中一个重要的环节。然而,图像边缘受很多因素的影响。这些包括(i)深度上不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。目前,常用的边缘检测算法没有哪一种具有绝对的优越性。因此,对各种边缘检测算子的性能进行比较分析,根据图像边缘的特征选择比较合理的边缘检测显得尤为重要。 1 基于搜索的边缘检测算子 基于搜索的边缘检测方法首先计算边缘强度,通常用一阶导数表示,例如梯度模;然后,用计算估计边缘的局部方向,通常采用梯度的方向,并利用此方向找到局部梯度模的最大值。 1.1 Roberts算子 Roberts算子【1】是一种利用局部差分算子寻找边缘的算子,它由下式给 出 :

g ( x , y) = [ f ( x , y) - f ( x + 1 , y + 1) ]2 +[ f ( x + 1 , y) - f ( x , y + 1) ]2(1) 其中 f ( x , y ) 、 f ( x + 1 , y ) 、 f ( x , y + 1) 和 f ( x + 1 , y + 1) 分别为 4领域的坐标,且是具有整数像素坐标的输入图像。 Roberts算子是2X 2 算子模板。图1所示的2个卷积核形成了Roberts算 子。图像中的每一个点都用这2个核做卷积。 图1 Roberts算子 1.2 Prewitt算子 Prewitt 算子由下式给出: SP = ( dx2 + dy2) 1/2 (2) Prewitt 算子是 3 ×3 算子模板。图 3 所示的2个卷积dx 、dy形成了Prewitt 算子。与 Sobel 算子的方法一样 ,图象中的每个点都用这 2 个核进行卷积,取最大值作为输出值。Prewitt 【2】算子也产生1 幅边缘幅度图象。

边缘检测五种算法的比较与分析

边缘检测五种算法的比较与分析 随着计算机技术的发展,边缘检测作为图像处理最为重要的一门技术得到了越来越多的重视,它是图像分割、图像识别的前提。文章就边缘检测的五种算子进行了比较与分析,得出了最佳边缘检测算法。 标签:边缘;检测算子;图像分割 近年来,由于计算机技术的不断发展,图像处理在各个领域都得到了广泛应用。边缘检测作为一种最为重要的图像处理技术也得到了重视,所谓边缘,就是指图像中恢复变化明显的区域,它是边界检测的基础,也是外形检测的基础,是图像分割所依赖的重要特征,而梯度是函数变化的一种度量,一幅图像可以看作是图像强度连续函数的取样点序列。通过梯度的计算,我们能了解到图像灰度变化最大的点进而找出图像的边缘所在,边缘检测就是在有噪声背景的图像中确定出目标物边界的位置,可以把图像最显著的特征表示出来,减少工作量,提升效率。经典的边缘检测算法有Roberts、sobel、canny、log、prewitt五种算法,文章将就这五种经典算法进行比较与分析。 在了解边缘检测之前,我们有必要知道图像的有关知识,图像主要分为模拟图像和数字图像。模拟图像是通过某种物理量的强弱变化来记录图像上各点的亮度信息的,例如模拟电视图像;而数字图像则完全是用数字来记录图像亮度信息的。数字图像的基本单位是像素,它是像素的集合,并且可以用一个矩阵来表示,矩阵的列数代表了图像的高,行数代表着图像的宽,矩阵元素对应图像像素,矩阵元素的值就是像素的灰度值。灰度图像是数字图像的最基本的表达形式,它可以从黑白照片数字化得到,也可以通过彩色照片去色处理得到,因此,灰度图像只有亮度信息而没有颜色信息,所以每个像素点都只有一个量化的灰度级,如果用一个字节来存储灰度值的话,则取值范围有0-255共256个灰度级来表示图像的亮度。彩色图像的数据不仅包括亮度信息,还包括颜色信息,主要通过RGB 模型来表示,即每个像素包括RGB三基色数据,每个基色用一个字节表示,则共有3个字节,也就是24位,我们说的24位真彩色就是这样得出来的。一般来说,边缘检测的步骤主要有四步包括滤波、增强、检测、定位。 Roberts算子是最早出现的基于一阶微分的算子之一,它是2×2算子模板,简单直观,它利用局部差分算子,采用对角线方向相邻两像素之差近似梯度幅值寻找边缘,计算沿45°方向的一阶差分。图像的梯度为两个45°方向的梯度向量和。我们从图像的实际效果看,这种算子的边缘定位比较准确,但是对噪声很敏感。 Sobel算子是一种离散型差分算子,是现在用的最多的一种算子,它用来运算图像亮度函数的梯度之近似值,此外它包含两组3×3的矩阵,分别为横向和纵向,假设为 将之与图像做平面卷积,即可分别得出图像的横向Gx及纵向Gy亮度差分

图像边缘检测方法的比较

课程大作业实验报告 图像边缘检测方法的比较 课程名称:数字图像处理 指导教师 报告提交日期2010年05月项目答辩日期2010年05月

目录 1、项目要求 (3) 1.1、要求一 (3) 1.2、要求二 (3) 1.3、要求三 (3) 2、项目开发的环境 (3) 3、边缘检测的系统分析 (4) 3.1、系统模块分析 (4) 3.2、系统的关键问题以及解决方法 (4) 4、系统设计 (5) 4.1程序的流程图以及说明 (5) 4、2程序的主要功能模块 (7) 4.2.1 水平梯度算子模块 (7) 4.2.2 垂直梯度算子模块 (8) 4.2.3 水平垂直梯度算子模块 (8) 4.2.4 罗伯茨算法模块 (9) 4.2.5 Sobel模块 (10) 4.2.6 Prewitt模块 (11) 4.2.7 拉普拉斯边缘检测模块 (11) 4.2.8 基于Kirsch算子的快速边缘检测模块 (11) 4.2.9 Robinson算法模块 (12) 4.2.10 高斯LOG模块 (13) 4.2.11 梯度幅值自适应 (14) 5.实验结果与分析 (14) 5.1 实验结果和分析 (15) 5.2 项目的创新之处 (19) 5.3 存在问题及改进设想 (19) 6.心得体会 (20) 6.1 系统开发的体会 (20) 6.2 对本门课程的改进意见或建议 (20)

1 项目要求 1.1 对以下方法编程实现: (1)水平梯度算子; (2)垂直梯度算子; (3)水平垂直梯度算子; (4)罗伯茨梯度算子; (5)拉普拉斯算子; (6)柯西算子; (7)Prewitt算子; (8)Sobel算子; (9)拓展:其他的边缘检测算法 1.2 界面整合为菜单形式,在程序的主界面上显示每种方法的处理时间(利用C语言的 时间函数,计算出处理时间)。 1.3 有好的PPT和电子文档。 2 项目开发的环境 硬件部分:PC机 软件部分:CVI5.0、IMAQ vision(Imaq_CVI.fp、Imaq_CVI.h、Imaq_CVI.lib) 使用语言:C语言

Canny 边缘检测算法

Canny 边缘检测算法 【OpenCV】Canny 边缘检测 分类:【OpenCV】2012-08-08 10:17 490人阅读评论(10) 收藏举报 Canny 边缘检测算法 1986年,JOHN CANNY 提出一个很好的边缘检测算法,被称为Canny编边缘检测器[1]。 Canny边缘检测根据对信噪比与定位乘积进行测度,得到最优化逼近算子,也就是Canny算子。类似与LoG 边缘检测方法,也属于先平滑后求导数的方法。 使用Canny边缘检测器,图象边缘检测必须满足两个条件: 能有效地抑制噪声; 必须尽量精确确定边缘的位置。 算法大致流程: 1、求图像与高斯平滑滤波器卷积: 2、使用一阶有限差分计算偏导数的两个阵列P与Q:

3、幅值和方位角: 4、非极大值抑制(NMS ):细化幅值图像中的屋脊带,即只保留幅值局部变化最大的点。 将梯度角的变化范围减小到圆周的四个扇区之一,方向角和幅值分别为: 非极大值抑制通过抑制梯度线上所有非屋脊峰值的幅值来细化M[i,j],中的梯度幅值屋脊.这一算法首先将梯度角θ[i,j]的变化范围减小到圆周的四个扇区之一,如下图所示: 5、取阈值 将低于阈值的所有值赋零,得到图像的边缘阵列 阈值τ取得太低->假边缘 阈值τ取得太高->部分轮廊丢失 选用两个阈值: 更有效的阈值方案. 相关代码 Canny算法实现:

用高斯滤波器平滑图像(在调用Canny之前自己用blur平滑)用一阶偏导的有限差分来计算梯度的幅值和方向. 对梯度幅值应用非极大值抑制. 用双阈值算法检测和连接边缘.[cpp] view plaincopyprint? void cv::Canny( InputArray _src, OutputArray _dst, double low_thresh, double high_thresh, int aperture_size, bool L2gradient ) { Mat src = _src.getMat(); CV_Assert( src.depth() == CV_8U ); _dst.create(src.size(), CV_8U); Mat dst = _dst.getMat(); if (!L2gradient && (aperture_size & CV_CANNY_L2_GRADIENT) == CV_CANNY_L2_GRADIENT) { //backward compatibility

基于数学形态学的图像边缘检测方法研究文献综述

文献综述 课题:基于数学形态学的图像边缘检测方法研究 边缘检测是图像分割的核心内容,而图像分割是由图像处理到图像分析的关键步骤,在图像工程中占据重要的位置,对图象的特征测量有重要的影响。图像分割及基于分割的目标表达、特征提取和参数测量等将原始图像转化为更抽象更紧凑的形式,使得更高层的图像分析和理解成为可能。从而边缘检测在图像工程中占有重要的地位和作用。因此对边缘检测的研究一直是图像技术研究中热点,人们对其的关注和研究也是日益深入。 首先,边缘在边界检测、图像分割、模式识别、机器视觉等中有很重要的作用。边缘是边界检测的重要基础,也是外形检测的基础。同时,边缘也广泛存在于物体与背景之间、物体与物体之间,基元与基元之间,是图像分割所依赖的重要特征。其次,边缘检测对于物体的识别也是很重要的。第一,人眼通过追踪未知物体的轮廓而扫视一个未知的物体。第二,如果我们能成功地得到图像的边缘,那么图像分析就会大大简化,图像识别就会容易得多。第三,很多图像并没有具体的物体,对这些图像的理解取决于它们的纹理性质,而提取这些纹理性质与边缘检测有极其密切的关系。 理想的边缘检测是能够正确解决边缘的有无、真假、和定向定位。长期以来,人们一直关心这一问题的研究,除了常用的局

部算子及以后在此基础上发展起来的种种改进方法外,又提出了许多新的技术,其中,比较经典的边缘检测算子有Roberts cross 算子、Sobel算子、Laplacian算子、Canny算子等,近年来又有学者提出了广义模糊算子,形态学边缘算子等。这些边缘检测的方法各有其特点,但同时也都存在着各自的局限性和不足之处。 本次研究正是在已有的算法基础上初步进行改进特别是形态学边缘算子,以期找到一个更加简单而又实用的算子,相信能对图像处理中的边缘检测方法研究以及应用有一定的参考价值。 一、课题背景和研究意义: 伴随着计算机技术的高速发展,数字图像处理成为了一门新兴学科,并且在生活中的各个领域得以广泛应用。图像边缘检测技术则是数字图像处理和计算机视觉等领域最重要的技术之一。在实际图像处理中,图像边缘作为图像的一种基本特征,经常被用到较高层次的图像处理中去。边缘检测技术是图像测量、图像分割、图像压缩以及模式识别等图像处理技术的基础,是数字图像处理重要的研究课题之一。 边缘检测是图像理解、分析和识别领域中的一个基础又重要的课题, 边缘是图像中重要的特征之一,是计算机视觉、模式识别等研究领域的重要基础。图像的大部分主要信息都存在于图像的边缘中,主要表现为图像局部特征的不连续性,是图像中灰度

Canny边缘检测算法总结

Canny边缘检测算法总结

一.Canny边缘检测算法原理 JohnCanny于1986年提出Canny算子,属于是先平滑后求导数的方法。其处理过程大体上分为下面四部分。 1. 对原始图像进行灰度化 Canny算法通常处理的图像为灰度图,因此如果获取的是彩色图像,那首先就得进行灰度化。对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。以RGB格式的彩图为例,通常灰度化采用的方法主要有:方法1:Gray=(R+G+B)/3; 方法2:Gray=0.299R+0.587G+0.114B;(这种参数考虑到了人眼的生理特点) 至于其他格式的彩色图像,可以根据相应的转换关系转为RGB然后再进行灰度化;在编程时要注意图像格式中RGB的顺序通常为BGR。 2. 对图像进行高斯滤波

图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现。 1)高斯核实现 上式为离散化的一维高斯函数,确定参数就可以得到一维核向量。 上式为离散化的二维高斯函数,确定参数就可以得到二维核向量。 在求得高斯核后,要对整个核进行归一化处理。 2)图像高斯滤波 对图像进行高斯滤波,其实就是根据待滤波的像素点及其邻域点的灰度值按照一定的参

数规则进行加权平均。这样可以有效滤去理想图像中叠加的高频噪声。 通常滤波和边缘检测是矛盾的概念,抑制了噪声会使得图像边缘模糊,这会增加边缘定位的不确定性;而如果要提高边缘检测的灵敏度,同时对噪声也提高了灵敏度。实际工程经验表明,高斯函数确定的核可以在抗噪声干扰和边缘检测精确定位之间提供较好的折衷方案。 3. 用一阶偏导的有限差分来计算梯度的幅 值和方向 关于图像灰度值得梯度可使用一阶有限差分来进行近似,这样就可以得图像在x和y 方向上偏导数的两个矩阵。常用的梯度算子有如下几种: 1)Roberts算子

图像边缘检测技术的研究和比较

图像边缘检测技术的研究和比较 摘要 边缘描绘对象的边界,因此边缘提取是图像处理的基础而重要的问题。图像边缘检测大大地减少了图像数据量,过滤了无用的信息,而保留了图像重要属性结构。由于边缘检测是对象检测的第一步,因此对边缘检测算法的正确理解是问题的关键。本文对各种各样的图像边缘检测技术进行了比较分析。通过编写MATLAB 70程序,显示在几乎所有情景下Canny边缘检测算法比其他所有的算法的执行效果都好。对处理后图像的评估显示:在有噪声的情况下,LoG算子,Robert算子,Prewitt算子,Sobel算子各自都表现出色。观察Canny边缘检测算法在计算上比LoG算子,Sobel算子、Prewitt算子和Robert 算子代价高。 关键字:边缘检测,噪声,数字图像处理 1 介绍 边缘检测定义为识别和定位图像突变间断性的过程。间断性是描述像素灰度急剧变化的描述对象边界的地方。经典的边缘检测方法包括用算子对图像进行卷积,该算子对图像梯度敏感,当在平坦区域时,返回值为0。现在设计出大量的边缘检测算子,它们各自针对某种特定边缘敏感。在选择边缘检测算子时,要根据边缘取向、噪声环境和边缘结构等的变化而变。算子的几何形状决定了边缘最敏感的特征方向。可以选选择合适的算子来寻找水平,垂直或者对角边缘。由于噪声和边缘信息在高频部分,对有噪声的图像,边缘检测是比较困难的。而尝试减少噪声,又导致边缘模糊和变形。用于有噪声图像的算子通常具有更大的尺寸,因此它能用足够的数据进行均衡,以削弱噪声像元,这个结果使检测出的边缘定位精度降低。不是所有的边缘包含灰度的阶跃变化。例如折射或弱焦点可能导致对象的边界灰度逐渐变化。这些情况下,选择的算子要对这种渐变敏感。因此,就出现了检测为伪边缘、真实的边缘的漏检、边缘定位精度、高计算时间

Canny边缘检测与轮廓提取

摘要...................................................................................I Abstract ..............................................................................II 1 绪论 (1) 2 设计内容与OpenCV简介 (2) 2.1 设计任务内容 (2) 2.2 OpenCV简介 (2) 3 理论分析 (3) 3.1 边缘检测 (3) 3.1.1 图像的边缘 (3) 3.1.2 边缘检测的基本步骤 (3) 3.2 轮廓提取 (4) 4 边缘检测的算法比较 (5) 4.1 Reborts算子 (5) 4.2 Sobel算子 (5) 4.3 Prewitt 算子 (6) 4.4 Kirsch 算子 (7) 4.5 LOG算子 (7) 4.6 Canny算子 (8) 5 实验仿真 (10) 5.1算法设计 (10) 5.2 实验结果 (11) 6 分析与总结 (12) 参考文献 (13) 附录 (14)

边缘检测是图像处理和计算机视觉中的基本问题,它的目的是标识出数字图像中亮度变化明显的点。图像经过边沿检测处理之后,不仅大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。 事实上,边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置。这些轮廓常常是我们在图像边缘检测时,所需要的非常重要的一些特征条件,这就需要我们对一幅图像检测并提取出它的边缘。 可用于图像边缘检测和轮廓提取的方法有很多,其中包括有常见的Robert边缘算子、Prewitt 边缘算子、Sobel边缘算子等等。本文首先将会从数字图像处理的角度,对几种边缘检测算法进行详细的分析,然后会并选择其中一种边缘检测算法进行实验。考虑到以后进一步的学习,本文将会使用openCV对算法进行实现。最后,本文将会把实验获得的实际效果,与理论分析的结果进行比对,并以此对本次实验进行总结。 关键字:边缘检测轮廓提取图像处理openCV

相关文档
最新文档