基于MATLAB边缘检测系统研究

一.前言

在实际图像边缘检测问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。它在图像识别,图像分割,图像增强以及图像压缩等的领域中有较为广泛的应用,也是它们的基础。

图像边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息。而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置,这些轮廓常常是我们在图像边缘检测时所需要的非常重要的一些特征条件,这就需要我们对一幅图像检测并提取出它的边缘。而边缘检测算法则是图像边缘检测问题中经典技术难题之一,它的解决对于我们进行高层次的特征描述、识别和理解等有着重大的影响;又由于边缘检测在许多方面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造出具有良好性质及好的效果的边缘检测算子的问题。

二.边缘检测于算子


1.边缘检测的定义


图像边缘是图像最基本的特征,边缘在图像分析中起着重要的

用。所谓边缘(edge)是指图像局部特征的不连续性。灰度或结构

信息的突变称为边缘,例如:灰度级的突变、颜色的突变、纹理结

的突变。边缘是一个区域的结束,也是另一个区域的开始,利用该

征可以分割图像。

当人们看一个有边缘 的物体时,首先感觉到的便是边缘,如


c984c52fc971d98fc099608b4b48d8c6.png


一条理想的边缘应该具有如图2.1(a) 所示模型的特性。每个像素

都处在灰度级跃变的一个垂直的台阶上(例如图形中所示的水平线通

过图像的灰度剖面图)。

而实际上,诸如图像采集系统的性能、采样频率和获得图像的照

明条件等因素的影响,得到的边缘往往是模糊的,边缘被模拟成具有

“斜坡面”的剖面,如图2.1(b) 所示,在这个模型中不再有细线(宽

为一个像素的线条),而是出现了边缘的点包含斜坡中任意点的情况。

由此可以看到:模糊的边缘使边缘的“宽度”较大,面清晰的边缘使

边缘的宽度较小。

图像的边缘有方向的幅度两个属性,沿边缘方向像素变化平缓,

垂直于边缘方向像素变化剧烈。边缘上的这种变化可以用微分算子检

测出来,通常用一阶导数或二阶导数来检测边缘,不同的是一阶导数

认为最大值对应边缘位置,而二阶导数以过零点对应边缘位置。实际上,对于图像中的任意方向上的边缘都可以进行类似的分析。图像边

缘检测中对任意点的一阶导数可以利用该点梯度的幅度来获得,二阶

导数可以用拉普拉斯算子得到。


三.边缘检测算子

3.1 Sobel算子


索贝尔算子(Sobel operator)是图像处理中的算子之一,主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量.

该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:

ebfe5f57396422ce4b9067bbc41922a2.png

图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。

1d124d8955c27eec105fc826c3b1e9bf.png

在以上例子中,如果以上的角度Θ等于零,即代表图像该处拥有纵向边缘,左方较右方暗。

Sobel 算子有两个,一个是检测水平边沿的 ;另一个是检测垂直平边沿的 。 Sobel算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边沿的 ,另一个是检测垂直平边沿的 。各向同性Sobel算子比普通Sobel算子的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。

由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有效,因此应用广泛。美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。 在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。Sobel边缘算子的卷积和图3.2所示,图像中的每个像素都用这两个核做卷积。这两个核分别对垂直边缘和水平边缘响应最大,两个卷积的最大值作为该点的输出位。运算结果是一幅边缘幅度图像。


94e5f7e1bf93895059f519b73745750f.png




Sobel算子认为邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越大,产生的影响越小。

3.2 Canny算子


检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。图像边缘检测必须满足两个条件:一是必须能有效地抑制噪声;二是必须尽量精确确定边缘的位置。既要提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感。

1.Canny边缘检测基本原理:

(1)具有既能滤去噪声又保持边缘特性的边缘检测最优滤波器,其采用一阶微分滤波器。采用二维高斯函数的任意方向上的一阶方向导数为噪声滤波器,通过与图像卷积进行滤波;然后对滤波后的图像寻找图像梯度的局部最大值,以此来确定图像边缘。根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny边缘检测算子。

(2)类似与Marr(LOG)边缘检测方法,也属于先平滑后求导数的方法。

2.Canny边缘检测算法

step1:用高斯滤波器平滑图象;

step2:用一阶偏导的有限差分来计算梯度的幅值和方向;

step3:对梯度幅值进行非极大值抑制;

step4:用双阈值算法检测和连接边缘。

其数学描述如下:

step1:

二维为高斯函数为:

71fbc56e5212950770cdefcc46a35cbc.png

在某一方向n上是的一阶方向导数为:

3c4e56b76c3e105b9909d461d24eb244.png

式中:n式方向矢量,▽是梯度矢量。

将图像与作卷积,同时改变n的方向,*取得最大值时的n就是正交于检测边缘的方向。

step2:

4ed1f6321687131839023762bd65c7fc.png

反映了图像(x,y)点处的边缘强度,是图像(x,y)点处的法向矢量。

step3:

仅仅得到全局的梯度并不足以确定边缘,因此为确定边缘,必须保留局部梯度最大的点,而抑制非极大值。(non-MaxiMa suppression,NMS)

解决方法:利用梯度的方向。


6a1c99a3678201b50d19fb026a447586.png
图示--非极大值抑制



四个扇区的标号为0到3,对应3*3邻域的四种可能组合。在每一点上,邻域的中心像素M与沿着梯度线的两个像素相比。如果M的梯度值不比沿梯度线的两个相邻像素梯度值大,则令M=0。

step4:

减少假边缘段数量的典型方法是对G(x,y)使用一个阈值。将低于阈值的所有值赋零值。但问题是如何选取阈值?

解决方法:双阈值算法进行边缘判别和连接边缘。

①首先是边缘判别: 凡是边缘强度大于高阈值的一定是边缘点;凡是边缘强度小于低阈值的一定不是边缘点;如果边缘强度大于低阈值又小于高阈值,则看这个像素的邻接像素中有没有超过高阈值的边缘点,如果有,它就是边缘点,如果没有,它就不是边缘点。

②其次是连接边缘: 双阈值算法对非极大值抑制图像作用两个阈值τ1和τ2,且2τ1≈τ2,从而可以得到两个阈值边缘图像G1(x,y)和G2(x,y)。由于G2(x,y)使用高阈值得到,因而含有很少的假边缘,但有间断(不闭合)。双阈值法要在G2(x,y)中把边缘连接成轮廓,当到达轮廓的端点时,该算法就在G1(x,y)的8邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断地在G1(x,y)中收集边缘,直到将G1(x,y)连接起来为止。

实际上,还有多种边缘点判别方法,如:将边缘的梯度分为四种:水平、竖直、45度方向、135度方向。各个方向用不同的邻接像素进行比较,以决定局部极大值。若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比并不是最大的,那么将该像素置为零,即不是边缘。

此外,在实际应用中,检测效果还与滤波模板大小有关,当时有较好的检测效果。

Canny算子检测方法的优点:①低误码率,很少把边缘点误认为非边缘点;②高定位精度,即精确地把边缘点定位在灰度变化最大的像素上;③抑制虚假边缘。

在这几种算法中除Roberts算子外都使用了图像模板,模板运算是图像的一种处理手段——邻域处理,有许多图像增强效果都可以采用模板运算实现,如平滑效果,中值滤波,油画效果,图像的凹凸效果等等。在模板运算中,首先定义一个模板,模板的大小以3*3的较常见,也有2*2, 5*5或更大尺寸的。运算时,把模板中心对应到图像的每一个像素位置,然后按照模板对应的公式对中心像素和它周围的像素进行数学运算,算出的结果作为输出图像对应像素点的值。

这些经典的边缘提取算子,虽然各自不同,有不同的长处,但是它们也有共同的特点:每种算子对应的预定义的边缘是它们最适合使用的情形,也就是说它们有针对性。这一点在应用中是有优越性的,它们的针对性可以帮助我们完成特定的任务。同时这也是算子的局限性,对于一般的问题或者情况未知的问题,预定义边缘的方法可能不会达到最佳效果。

4、部分参考源码及效果图

qq=imread('lena.jpg');          %读取图像
figure(1)
imshow(qq);
title('原图像');
qq=rgb2gray(qq);
[m,n]=size(qq);                 %用Sobel微分算子进行边缘检测
pp = edge(qq,'sobel');
figure(2)
imshow(pp);
title('sobel边缘检测得到的图像'); 
ww= edge(pp,'canny');          %用canny微分算子进行边缘检测
figure(3)
imshow(ww);
title('canny边缘检测得到的图像');




002f78d25e2d8cdbe67c44c4d563434a.png
原图


d716884b2da412eb4ca6a70ebbef10cc.png
sobel边缘检测




a192f43520346a7a8babcbde4d108e66.png
canny边缘检测



fd3ab758250c2a34f642da58d9c8b1be.png

dc8bfb2c25f1a432a1bebc84fd244ab0.png





984c5af112475a6711b08f01fffb5048.png




分析比较:

1、sobel算子根据像素点上下、左右邻点灰度值加权值,在边缘处打到极大值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高的时候,是一种较为常用的边缘检测的方法。

2.canny算子是边缘检测中最具有代表的一种局部极值边缘检测无论从视觉效果还是客观评价来看,canny算子提取的边缘线性连接程度较好,对此类的边缘提取的比较完整,边缘细腻

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的matlab大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值