canny边缘检测算子
- 格式:doc
- 大小:61.00 KB
- 文档页数:11
基于sobel和canny的边缘检测原理
Sobel的原理:
Sobel 算子是图像处理中的算子之一,主要用作边缘检测。
它是一种离散性差分算子,用来运算图像亮度函数的梯度之近似值。
在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量.
该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。
以I代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:
由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。
但是Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。
在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。
Canny的原理:
1、图象边缘检测必须满足两个条件:其一必须有效地抑制噪声;其次必须尽量精确确
定边缘的位置。
2、根据对信噪比与定位乘积进行测度,得到最优化逼近算子。
这就是Canny边缘检测
算子。
3、类似于LoG边缘检测方法,属于先平滑后求导数的方法。
Canny边缘检测算法可以分为四个步骤:
1)用高斯滤波器平滑图象;
2)用一阶偏导的有限差分来计算梯度的幅值和方向;3)对梯度幅值进行非极大值抑制
4)用双阈值算法检测和连接边缘。
1、边缘检测原理及步骤在之前的博文中,作者从一维函数的跃变检测开始,循序渐进的对二维图像边缘检测的基本原理进行了通俗化的描述。
结论是:实现图像的边缘检测,就是要用离散化梯度逼近函数根据二维灰度矩阵梯度向量来寻找图像灰度矩阵的灰度跃变位置,然后在图像中将这些位置的点连起来就构成了所谓的图像边缘(图像边缘在这里是一个统称,包括了二维图像上的边缘、角点、纹理等基元图)。
在实际情况中理想的灰度阶跃及其线条边缘图像是很少见到的,同时大多数的传感器件具有低频滤波特性,这样会使得阶跃边缘变为斜坡性边缘,看起来其中的强度变化不是瞬间的,而是跨越了一定的距离。
这就使得在边缘检测中首先要进行的工作是滤波。
1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。
常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核(具体见“高斯滤波原理及其编程离散化实现方法”一文),然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和(具体程序实现见下文)。
2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。
增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。
在具体编程实现时,可通过计算梯度幅值来确定。
3)检测:经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。
实际工程中,常用的方法是通过阈值化方法来检测。
2、Canny边缘检测算法原理JohnCanny于1986年提出Canny算子,它与Marr(LoG)边缘检测方法类似,也属于是先平滑后求导数的方法。
本节对根据上述的边缘检测过程对Canny检测算法的原理进行介绍。
2.1 对原始图像进行灰度化Canny算法通常处理的图像为灰度图,因此如果摄像机获取的是彩色图像,那首先就得进行灰度化。
对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。
matlab 中canny算法什么是Canny算法?Canny算法是一种常用于图像边缘检测的计算机视觉算法。
它由约翰·Canny在1986年提出,目的是在保持最佳信噪比的同时准确地检测出图像中的边缘。
Canny算法的步骤是什么?Canny算法包括以下几个步骤:1. 噪声抑制:由于图像中常常存在噪声,因此第一步是对图像进行平滑处理以抑制噪声。
常用的方法是应用高斯滤波器。
2. 计算梯度:通过计算图像的梯度来确定边缘的强度和方向。
梯度计算通常使用Sobel算子,它可以有效地检测图像中的边缘。
3. 非极大值抑制:在计算梯度之后,需要对梯度幅度图像进行非极大值抑制。
这一步的目的是去除那些不是真正边缘的像素。
4. 双阈值检测:在经过非极大值抑制之后,需要对幅度图像进行阈值处理。
Canny算法使用双阈值检测来确定强边缘和弱边缘。
任何高于高阈值的像素被认为是强边缘,低于低阈值的像素被认为是弱边缘。
5. 边缘跟踪:最后一步是利用边缘跟踪算法来连接强边缘。
边缘跟踪算法基于弱边缘像素与强边缘像素的连接关系,通过追踪弱边缘像素与强边缘像素的路径来确定最终的边缘。
Canny算法的优缺点是什么?Canny算法有以下几个优点:1. 准确性:Canny算法能够准确地检测图像中的边缘,尤其在边缘区域有噪声的情况下。
2. 低错误率:相比于其他边缘检测算法,Canny算法的错误率较低,能够有效地排除非边缘像素。
3. 单一边缘:Canny算法仅提取单一像素的边缘,不会将边缘模糊化。
虽然Canny算法有许多优点,但也存在一些缺点:1. 计算量大:Canny算法需要进行多次计算,包括高斯滤波、梯度计算和非极大值抑制等,因此计算量较大。
2. 参数选择:Canny算法涉及到多个参数的选择,如高斯滤波器的大小和标准差、双阈值检测的高低阈值等。
不同的参数选择可能导致不同的结果。
3. 边缘连接:Canny算法在边缘连接过程中可能会产生断裂的边缘。
医学图像处理中的边缘检测与分割算法边缘检测与分割是医学图像处理中的重要部分,被广泛应用于疾病诊断、医学影像分析和手术辅助等领域。
边缘检测算法用于提取图像中的边缘信息,而分割算法则可以将图像划分为不同的区域,有助于医生对图像进行进一步分析和诊断。
一、边缘检测算法在医学图像处理中,常用的边缘检测算法包括基于梯度的方法、基于模型的方法和基于机器学习的方法。
1. 基于梯度的方法基于梯度的边缘检测算法通过计算图像中像素点的梯度值来确定边缘位置。
常用的算法包括Sobel算子、Prewitt算子和Canny算子。
Sobel算子是一种常用的离散微分算子,通过在图像中对每个像素点应用Sobel算子矩阵,可以得到图像的x方向和y方向的梯度图像。
通过计算梯度幅值和方向,可以得到边缘的位置和方向。
Prewitt算子与Sobel算子类似,也是一种基于梯度的边缘检测算子。
它通过将图像中的每个像素点与Prewitt算子矩阵进行卷积运算,得到图像的x方向和y方向的梯度图像。
进一步计算梯度幅值和方向,可以确定边缘的位置和方向。
Canny算子是一种经典的边缘检测算法,它采用多步骤的方法来检测边缘。
首先,对图像进行高斯滤波来减少噪声。
然后,计算图像的梯度幅值和方向,进一步剔除非最大值的梯度。
最后,通过设置双阈值来确定真正的边缘。
2. 基于模型的方法基于模型的边缘检测算法借助数学模型来描述边缘的形状和特征。
常用的算法包括基于边缘模型的Snake算法和基于边缘模型的Active Contour算法。
Snake算法(也称为活动轮廓模型)是一种基于曲线的边缘检测算法。
它通过将一条初始曲线沿着图像中的边缘移动,使得曲线更好地贴合真实边缘。
Snake算法考虑了边缘的连续性、平滑性和能量最小化,可以获得较为准确的边缘。
Active Contour算法是Snake算法的进一步发展,引入了图像能量函数。
通过最小化能量函数,可以得到最佳的边缘位置。
Active Contour算法可以自动调整曲线的形状和位置,适应复杂的图像边缘。
canny算子边缘检测原理
Canny算子是一种常用的边缘检测算法,其原理如下:
1. 高斯滤波:首先对图像进行高斯滤波,以减少噪声的影响。
高斯滤波是利用高斯函数对图像进行平滑操作,可以抑制高频噪声。
2. 计算梯度幅值和方向:对平滑后的图像进行梯度计算,通过计算像素点的梯度幅值和方向,可以找到图像中的边缘。
常用的梯度算子包括Sobel算子和Prewitt算子。
3. 非极大值抑制:在梯度图像中,对于每个像素点,通过比较其梯度方向上的两个相邻像素点的梯度幅值,将梯度幅值取最大值的点保留下来,其他点置为0。
这样可以剔除非边缘的像素。
4. 双阈值处理:将梯度幅值图像中的像素分为强边缘、弱边缘和非边缘三类。
设置两个阈值:高阈值和低阈值。
如果某个像素的梯度幅值大于高阈值,则将其标记为强边缘。
如果某个像素的梯度幅值小于低阈值,则将其剔除。
对于梯度幅值介于低阈值和高阈值之间的像素,如果其与某个强边缘像素相连,则将其标记为强边缘,否则将其标记为弱边缘。
5. 边缘连接:通过将强边缘和与其相连的弱边缘进行连接,找到完整的边缘。
这里通常使用8连通或4连通算法来判断两个像素是否相连。
通过以上步骤,Canny算子可以得到图像中的边缘信息,并且相对其他算法能够更好地抑制噪声和保持边缘的连续性。
canny边缘检测算子
摘要在图象边缘检测中往往要求所检测到的边缘具有封闭特性,本文详细地分析了目前常用的两种算法:哈夫变换和Canny 边缘检测算法,最后,探讨边缘算子应满足的准则。
关键词边缘检测;闭合性;哈夫变换;Canny算子
1引言
图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较
大的灰度值。
图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特
征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从195 9提出边缘检测以来,经过五十多年的发展,已有许多中不同的边缘检测方法。
在我们常用的
几种用于边缘检测的算子中Laplace算子常常会产生双边界;而其他一些算子如Sobel算子又往往会形成不闭合区域。
本文主要讨论了在边缘检测中,获
取封闭边界区域的算法。
2 图象边缘检测的基本步骤
(1)滤波。
边缘检测主要基于导数计算,但受噪声影响。
但滤波器在降低噪声的同时也导致边缘强度的损失。
(2)增强。
增强算法将邻域中灰度有显著变化的点突出显示。
一般通过计算梯度幅值完成。
(3)检测。
但在有些图象中梯度幅值较大的并不是边缘点。
最简单的边缘检测是梯度幅值阈值判定。
(4)定位。
精确确定边缘的位置。
图1 边缘检测酸法的基本步骤
3 边界闭合的算法
3.1 哈夫变换[3]
由于噪声的存在,用各种算子得到的边缘象素不连续,但是由于边缘象素之间有一定的连续性,我们就可以根据边缘象素在梯度幅度或梯度方向上的连续性把他们连接起来。
具体说来,如果象素(s,t)在象素(x,y)的领域且它们的梯度幅度与梯度方向在给定的阈值下满足:
T是幅度阈值;A是角度阈值;
那么,如对所有的边缘象素都进行上述的判断和连接就可以得到一个闭合的边界。
哈夫变换方法是利用图像得全局特性而对目标轮廓进行直接检测的方法,在已知区域形状的条件下,哈夫变换可以准确地捕获到目标的边界(连续的获不连续的),并最终以连续曲线的形式输出变换结果,该变换可以从强噪声环境中将已知形状的目标准确得分割提取出来。
哈夫变换的核心思想是:
点—线的对偶性(duality)。
通过变换将图象从图像控件转换到参数空
间,在图像空间中一条过点(x,y)的直线方程为y=px+q,通过代数变换可
以转换为另一种形式p=-px+y,即参数空间中过点(p,q)的一条直线,如果在图像空间中保持直线的斜率和截距的不变,其在参数空间必定过点
(p,q),这也就说明,在图像空间中共线的点对应参数空间共点的线.
哈夫变换就是根据上述点—线的对偶性把在图象空间中存在的直线检测问题转换为参数空间中存在的点检测问题,后者的处理要比前者简单易行得多,只需简单地累
加统计即可实现对边缘的检测.
哈夫变换不仅能检测直线等一阶曲线的目标,对于园、椭圆等高阶的曲线都可以检测出来。
如圆的方程为:
其参数空间是一个3D空间A(a,b,r),原理与检测直线上的点相同,只是复杂性增加了。
如果圆的半径r己知,则问题又回到了2D空间A(a,b)
哈夫变换对已知目标的检测过程受随机噪声和曲线中断等不利因素
的影响很小,而且分割出的目标是直接放到另一个“干净”的缓存中的,因此可以做到零噪声,是相当有优势的。
常规的哈夫变换在理论上能对所有可以写出具体解析表达式的曲线进行目标检测,但是在实际处理时,经常待检测的目标不规则或是很难获取甚至根本没有解析式,此时就要采取广义上的哈夫变换来检测目标,
3.2最优的阶梯型边缘检测算法(canny边缘检测)
1.Canny边缘检测基本原理
(1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。
(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。
这就是Canny边缘检测算子。
(3)类似与Marr(LoG)边缘检测方法,也属于先平滑后求导数的方法。
2.Canny边缘检测算法:
step1:用高斯滤波器平滑图象;
step2:用一阶偏导的有限差分来计算梯度的幅值和方向;step3:对梯度幅值进行非极大值抑制;
step4:用双阈值算法检测和连接边缘。
step1:高斯平滑函数
step3:非极大值抑制
仅仅得到全局的梯度并不足以确定边缘,因此为确定边缘,必须保留局部梯度最大的点,而抑制非极大值。
(non-maxima supp ression,NMS)
解决方法:利用梯度的方向。
图2非极大值抑制
四个扇区的标号为0到3,对应3*3邻域的四种可能组合。
在每一点上,邻域的中心象素M与沿着梯度线的两个象素相比。
如果M的梯度值不比沿梯度线的两个相邻象素梯度值大,则令M=0。
即:
step4:阈值化
减少假边缘段数量的典型方法是对N[i,j]使用一个阈值。
将低于阈值的所有值赋零值。
但问题是如何选取阈值?
解决方法:双阈值算法。
双阈值算法对非极大值抑制图象作用两个阈值τ1和τ2,且2τ1≈τ2,从而可以得到两个阈值边缘图象N1[i,j]和N2[i,j]。
由于N2[i,j]使用高阈值得到,因而含有很少的假边缘,但有间断(不闭合)。
双阈值法要在N2[i,j]中把边缘连接成轮廓,当到达
轮廓的端点时,该算法就在N1[i,j]的8邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断地在N1[i,j]中收集边缘,直到将N 2[i,j]连
接起来为止。
4 边缘算子应满足的准则
若满足此准则,就能保证单边缘只有一个响应。
对一个算法的性能评价可分为两个阶段进行:计算假边缘与丢失边缘的数目;测量用于估计位置和方向的误差(或误差分布)。
边缘检测算
法的优劣也可
用品质因数( Figure of Merit)来描述。
Pratt品质因数是其中一种,它着重考虑了丢失了有效的边缘、边缘定位误差和将噪声判断为边缘等三种误差。
5 结束语
边缘检测在图象分割、模式识别、机器视觉等中都有重要作用,人们已研究出很多种边缘检测算法,而哈夫变换和canny边缘算子等是最经典的算法,人们已在这些经典算法基础上提出一些新的改进算法。
参考文献
[1]贾云德.机器视觉[M].北京:科学出版社,2000
[2]章毓晋.图象处理和分析[M].北京:清华大学出版社,1999
[3]郎锐.数字图象处理学.北京:希望电子出版社,2002
[4]王娜,李霞.一种新的改进Canny边缘检测算法.深圳大学学报,2005,4(2),149-152。