数字图像边缘检测及提取算法研究与分析.docx
《数字图像边缘检测及提取算法研究与分析.docx》由会员分享,可在线阅读,更多相关《数字图像边缘检测及提取算法研究与分析.docx(16页珍藏版)》请在冰豆网上搜索。
数字图像边缘检测及提取算法研究与分析
目录
第1章引言1
第2章图像边缘及边缘检测2
2.1边缘的定义及类型2
2.2图像的边缘检测2
第3章几种经典边缘检测算子的理论分析4
3.1Roberts算子4
3.2Sobel算子4
3.3高斯拉普拉斯算子(LaplacianofaGaussian,LoG)5
3.4Canny算子6
第4章试验结果的比较与分析10
总结12
致谢13
参考文献14
数字图像边缘检测及提取算法研究与分析
摘要:
边缘检测在数字图像处理、计算机视觉中有着重要的应用。
本文首先介绍了图像边缘及边缘检测的一些基本概念,然后对数字图像处理中Roberts算子,Sobel算子,LoG算子,Canny算子四种典型的边缘检测算法进行理论分析,并通过VC++编程对各种算法进行实现,通过比较得出了各自的优缺点和适用范围。
这对进一步学习和寻找更好的数字图像边缘检测方法具有一定的指导意义。
关键词:
边缘检测;Roberts算子;Sobel算子;LoG算子;Canny算子
第1章引言
边缘是图像中所要提取目标和背景的分界线,只有提取出边缘才能将背景和目标区分开来。
因此,数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析操作的重要基础,是图像识别中提取图像特征的一个重要步骤。
物体的边缘是由灰度的不连续性所致,因此考察图像每个像素在某个邻域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律即可检测图像边缘。
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。
图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性
。
边缘检测是图像特征提取的重要技术之一,边缘常常意味着一个区域的终结和另一个区域的开始。
图像的边缘包含了物体形状的重要信息,它不仅在分析图像时大幅度地减少了要处理的信息量,而且还保护了目标的边界结构。
因此,边缘检测可以看作是处理许多复杂问题的关键。
边缘检测的传统方法包括Roberts,Sobel,Prewitt,Kirsch,Robbins边缘检测方法以及Laplacian-Gaussian算子方法和Canny最优算子方法等。
这些方法各有其特点,同时也都存在着各自的局限性和不足之处,因此图像的边缘检测领域还有待于进一步的改进和发展。
本文通过对各种边缘检测方法的对比研究,着重选取Roberts算子,Sobel算子,LoG算子,Canny算子四种具有代表性的边缘检测算法进行详细的分析,并用VC++软件实现算法,用实际图像为例比较这些方法的优劣性。
第2章图像边缘及边缘检测
2.1边缘的定义及类型
尽管边缘在数字图像处理和分析中起着重要的作用,但是到目前为止还没有关于边缘的精确且被广泛承认的数学定义。
文献[1]将边缘定义为:
两个具有不同灰度的均匀图像区域的边界,即边界反映局部的灰度变化。
局部边缘是图像中局部灰度级以简单(即单调的)方式作极快变化的小区域
。
这种局部变化可用一定窗口运算的边缘检测算子来检测。
边缘通常存在于目标与背景、目标与目标、区域与区域、基元与基元之间。
边缘的描述包含以下几个方面:
1)边缘法线方向——在某点灰度变化最剧烈的方向,与边缘方向垂直;
2)边缘方向——与边缘法线方向垂直,是目标边界的切线方向;
3)边缘位置——边缘所在的坐标位置;
4)边缘强度——沿边缘法线方向图像局部的变化强度的量度。
一般认为沿边缘方向的灰度变化比较平缓,而边缘法线方向的灰度变化比较剧烈
。
基本的灰度变化可以是阶跃形、屋顶形或脉冲形等,如图2.1所示。
(a)阶跃形(b)屋顶形(c)脉冲形
图2.1 理想的基本灰度变化图
2.2图像的边缘检测
图像边缘检测的基本步骤:
(1)滤波。
边缘检测主要基于导数计算,但受噪声影响。
但滤波器在降低噪声的同时也导致边缘强度的损失。
(2)增强。
增强算法将邻域中灰度有显著变化的点突出显示。
一般通过计算梯度幅值完成。
(3)检测。
但在有些图像中梯度幅值较大的并不是边缘点。
最简单的边缘检测是梯度幅值阈值判定。
(4)定位。
精确确定边缘的位置。
总的说来传统边缘检测的流程如图2.2所示:
图2.2边缘检测的流程图
特征提取作为图像边缘检测的一个重要内容,发展了众多的方法。
这些方法经过实践的检验,成为了经典的内容。
经典的边缘检测算子包括:
Roberts算子,Prewitt算子,Sobel算子,Log(LaplacianofGaussian)算子等。
这些经典的边缘提取算子在使用时都是使用预定义好的边缘模型去匹配。
第3章几种经典边缘检测算子的理论分析
边缘检测算子是利用图像边缘的突变性质来检测边缘的。
它主要分为以下几种类型:
一种是以一阶导数为基础的边缘检测算子,在算法实现过程中,通过2×2或3×3模板作为核与图像中的每个像素点做卷积和运算,然后提取合适的阈值以提取边缘,如Roberts算子,sobel算子,Prewitt算子;一种是以二阶导数为基础的边缘检测算子,通过寻求二阶导数中的过零点来检测边缘,如Laplacian算子;Canny算子是另外一类边缘检测算子,它不是通过微分算子实现边缘检测,而是在一定约束下推导出的最优边缘检测算子。
3.1Roberts算子
Roberts算子是一种利用局部差分算子寻找边缘的算子
,它由(3-1)式
给出:
(3-1)
Roberts算子是2×2算子模板,对具有灰度变化陡峭的低噪声图像响应最好,并且对边缘的定位准确,但由于2×2大小模板没有清楚地中心点所以很难使用。
用卷积模板,上式(3-1)变成:
(3-2)
其中
和
由下面图3.1的模板计算:
图3.1Roberts算子的卷积模板
3.2Sobel算子
Sobel算子是一种一阶微分算子,它利用像素邻近区域的梯度值来计算1个像素的梯度,然后根据一定的阈值来取舍
。
它由(3-3)式给出:
(3-3)
其中的偏导数用下(3-4)式计算:
(3-4)
其中常数
。
和其他的梯度算子一样,
和
可用图3.2中卷积模板来表示:
图3.2Sobel算子的卷积模板
图像中的每个点都用这两个模板做卷积。
一个模板对通常的垂直边缘影响最大,而另一个对水平边缘影响最大。
两个卷积的最大值作为该点的输出值。
运算结果是一幅边缘幅度图像。
Sobel算子认为邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。
一般来说,距离越大,产生的影响越小。
此算子对灰度渐变噪声较多的图像处理得较好。
3.3高斯拉普拉斯算子(LaplacianofaGaussian,LoG)
利用图像强度二阶导数的零交叉点来求边缘点的算法很容易受到噪声干扰,所以在边缘检测前滤除噪声是十分必要的。
为此,Marr和Hildreth将高斯滤波和拉普拉斯边缘检测结合在一起,形成LoG(LaplacianofGaussian,LoG)算法,也称之为拉普拉斯高斯算法。
他的基本特征有
:
(1)平滑滤波器是高斯滤波器;
(2)增强步骤采用二阶导数(二维拉普拉斯函数);
(3)边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值;
(4)使用线性内插方法在子象素分辨率水平上估计边缘的位置。
LoG算子的输出
是通过式(3-5)卷积运算得到的:
(3-5)
又根据卷积求导法可得式(3-6):
(3-6)
其中:
(3-7)
其中
是方差,
,
分别是图像的横坐标和纵坐标。
常用的LoG算子是5×5的模板,如下图3.3所示:
图3.3拉普拉斯算子卷积模板
模板中各点到中心点的距离与位置加权系数的关系用曲线很像一顶墨西哥草帽,如图3.4所示,所以人们常把LoG滤波器叫做墨西哥草帽滤波器。
图3.4LOG到中心点的距离与位置加权系数的关系曲线
由于图像的平滑会引起边缘的模糊。
LOG算法中的高斯平滑运算会导致图像中边缘和其他尖锐不连续部分的模糊。
值越大,噪声滤波效果越好,但同时会丢失一些重要的边缘信息;
值小时又会平滑不完全而留有太多噪声。
即大
值的滤波器产生鲁棒边缘,小
值的滤波器产生精确定位的边缘。
只有当两者结合的很好时才能较好地检测出图像的最佳边缘。
基于高斯拉普拉斯算子的图像边缘检测过程如图3.5所示。
图3.5基于高斯拉普拉斯算子的图像边缘检测过程
3.4Canny算子
传统的边缘检测算子:
Sobel算子,Prewitt算子,Roberts算子,Krich算子等,大部分处理的效果都不很好,在实际处理中不太实用,而Canny算子检测的性能较好,常被作为其他实验的标准来参考。
Canny算子是JohnCanny在1986年发表的论文中首次提出的一种边缘检测算法,当时弥补了其他算法的不太好的缺点,因此Canny算子被认为是边缘检测领域较好的算法,并一直被引用,近几年来,随着研究的深入,性能更加完善的改性型的Canny算子也层出不穷,例如自适应Canny算子等。
用一句话说,就是希望在提高对景物边缘的敏感性的同时,可以抑制噪声的方法才是好的边缘提取方法。
Canny算子检测边缘的实质是求信号函数的极大值问题来判定图像边缘像素点
。
Canny算子三大准则:
1)好的检测性能:
检测出的边缘信息的漏检率最小,误检率最小,评判参数信噪比SNR越大越好,
(3-8)
其中G(-x)表示图像边函数,f(x)滤波器函数,
表示噪声的均方差。
2)高的定位精度:
Location越大越好,
(3-9)
3)边缘响应次数最少:
要保证只有一个像素响应,检测算子的脉冲响应导数的零交叉点平均距离D(f)满足式(3-10):
(3-10)
最后通过以下式(3-11)得出算子的近似实现:
边缘点位于图像被高斯平滑后的梯度值的极大值点。
(3-11)
这里用图3.6的流程图来简单表示Canny算法过程:
图3.6Canny算法过程
Canny算法详细过程
:
(1)高斯函数
(3-12)
(2)偏导数:
使用微分算子求出偏导数
(3)非极大值抑制:
沿幅角方向检测模值的极大值点,即边缘点,如图3.7和图3.8所示。
遍历8个方向图像像素,把每个像素偏导值与相邻像素的模值比较,取其MAX值为边缘点,置像素灰度值为0。
图3.7边缘方向示意图图3.88邻域幅角方向
(4)双阈值检测:
由于单阈值处理时,合适的阈值选择较困难,常常需要采用反复试验,因此采用双阈值检测算法。
对经过非极大值抑制后的图像作用两个阈值th1,th2,th1=0.4th2,两个阈值作用后得到两个图像a、b,较大阈值检测出的图像b去除了大部分噪声,但是也损失了有用的边缘信息。
较小阈值检测得到的图像a则保留着较多的边缘信息,以此为基础,补充图像b中的丢失的信息,连接图像边缘。
(5)链接边缘的具体步骤如下:
a)对图像b进行扫描,当遇到一个非零灰度的像素p(x,y)时,跟踪以p(x,y)为开始点的轮廓线,直到轮廓线的终点q(x,y)。
b)考察图像a中与图像b中q(x,y)点位置对应的点s(x,y)的8邻近区域。
如果在s(x,y)点的8邻近区域中有非零像素s(x,y)存在,则将其包括到图像b中,作为r(x,y)点。
从r(x,y)开始,重复第一步,直到我们在图像a和图像b中都无法继续为止。
c)当完成对包含p(x,y)的轮廓线的连结之后,将这条轮廓线标记为已经访问。
回到第一步,寻找下一条轮廓线。
重复第一步、第二步、第三步,直到图像b中找不到新轮廓线为止。
至此,完成canny算子的边缘检测。
第4章试验结果的比较与分析
在数字图像处理中,对边缘检测主要要求就是运算速度快,边缘定位准确,噪声抑制能力强。
我利用面向对象程序设计语言VisualC++进行数字图像边缘检测实验,分别对上面几种算法进行编程实现,各个算法的试验结果如图4.2,图4.3,图4.4所示:
图4.1试验原图图4.2Roberts算子
图4.3Sobel算子图4.4laplacian算子
从实验结果可以清楚地看到,在做图像的边缘检测时可以根据不同的需要来选择不同的算子进行边缘检测。
Roberts算子利用局部差分算子寻找边缘,边缘定位精度较高,但容易丢失一部分边缘,同时由于没有经过图像平滑计算,因此不能抑制噪声,该算子对具有陡峭的低噪声图像响应最好,如图4.2所示。
Sobel边缘检测算子不但可以产生较好的边缘效果,而且对噪声具有平滑作用,减小了对噪声的敏感性。
但是,Sobel边缘检测算子也检测出了一些伪边缘,使得边缘比较粗糙,降低了检测定位精度,如图4.3.在检测定位精度要求不是很高的情况下,Sobel算子是比较常用的边缘检测算子。
Laplace算子是二阶微分算子,利用边缘点处二阶导函数出现零交叉原理检测边缘。
不具方向性,对灰度突变敏感,定位精度高,同时对噪声敏感,且不能获得边缘方向等信息,如图4.4所示。
综合比较这几种经典算法的优缺点,目前边缘检测最有效的方法是Canny方法,它具有以下的优点:
(1)低误码率,很少把边缘点误认为非边缘点;
(2)高定位精度,即精确地把边缘点定位在灰度变化最大的像素上;
(3)抑制虚假边缘。
经典的边缘检测方法由于引入了各种形式的微分运算,从而必然引起对噪声的极度敏感,执行边缘检测的结果常常是把噪声当作边缘点检测出来,而真正的边缘也由于受到噪声干扰而没有检测出来。
因而对于有噪声图像来说,一种好的边缘检测方法应该具有良好的噪声抑制能力,同时又有完备的边缘保持特性,而这些优点正是Canny算子所具备的。
但以上几种边缘提取算法都是针对性比较强的方法,特别是经过数次试验后发现这几种边缘提取算法提取的精度都不算特别高,而且在边缘提取中存在着抗噪性和检测精度的矛盾。
若要提高检测精度,则会检测到噪声产生伪边缘,从而导致不合理的轮廓。
若要提高抗噪性,则会产生轮廓漏检和位置偏差。
实际图像都含有噪声,并且噪声的分布、方差等信息也都是未知的,同时噪声和边缘都是高频信号,虽然平滑滤波运算可消除噪声,但它导致一些边缘模糊,检测出的边缘往往移位。
由于物理和光照等原因,实际图像中的边缘常常发生在不同的尺度范围上,并且每一边缘像元的尺度信息是未知的,利用单一固定尺度的边缘检测算子不可能同时最佳地检测出这些边缘。
事实上,边缘检测作为视觉的初级阶段,通常认为是一个非良态问题,因而很难从根本上解决。
随着计算机视觉和图像边缘检测技术的发展,迫切需要视觉早期阶段的突破即边缘检测技术的突破,努力寻求算法较简单、能较好解决边缘测精度与抗噪声性能协调问题的边缘检测算法。
随着计算机视觉和图像边缘检测技术地发展,迫切需要视觉早期阶段的突破即边缘检测技术的突破,努力寻求算法较简单、能较好解决边缘测精度与抗噪声性能协调问题的边缘检测算法。
总结
随着人们对图像信息需求的增加,图像边缘的重要性得到人们越来越多的关注。
边缘检测理论作为一个低级视觉处理过程有着较长的研究历史,产生了大量的新理论、新方法。
一般来讲一个好的算法应满足计算精度高,抗噪声能力强,计算简单等特点。
传统的边缘检测算子主要是基于它的频率特性进行设计,算法比较简单,但会增强图像中噪声的干扰,边缘检测和抗噪声干扰之间的矛盾成为这类方法进行图像边缘检测的基本难题。
相对于以上所说的种种经典的边缘检测方法,许多学者基于对理想边缘检测的分析和对边缘特性某一方面的改进,提出了很多卓有成效的新的边缘检测方法,取得了较好的效果。
在本程序的编译设计过程中,产生了句法错误、找不到工具箱函数等错误,经仔细检查和运行,才顺利通过。
调试运行过程不顺利,还是由于对VC语言仍旧不够精通。
本文首先介绍了对图像进行准确的边缘检测对整个图像研究的重要性,然后对几种经典边缘检测算子进行了分析。
通过实验可以证明,roberts算子和sobel算子对噪声较为敏感,它们只是进行简单的边缘检测,而不会对要处理的图像事先进行滤波,得到的往往是断续的、不完整的结构信息,为了能成功地检测到真正的边缘,一般都要先对原图像进行平滑来去除图像中的噪声再进行边缘检测。
高斯拉普拉斯LaplacianofGaussian拉普拉斯边缘检测结合在一起,先对图像进行平滑和积分以滤掉噪声,消除噪声后再进行边缘检测,得到的效果比较好,且实现容易。
canny算子提取的边缘线型连接程度也较好,边缘提取的也较完整,但易受噪声影响,为了获得理想的边缘检测结果,必须与理想滤波器结合用,实现起来比较复杂。
致谢
通过这两个月的努力,我的毕业论文《数字图像边缘检测、提取算法研究与分析》终于完成了。
本论文的写作是枯燥艰辛而又富有挑战性的,我的指导老师卞维新老师倾注了大量的心血,从论文选题到开题报告,从写作提纲,到一遍又一遍地指出每稿中的具体问题,严格把关,循循善诱,没有卞维新老师的辛勤栽培、孜孜教诲,就没有我论文的顺利完成,在此我表示衷心感谢。
同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友。
由于时间的仓促及自身专业水平的不足,整篇论文肯定存在尚未发现的缺点和错误。
恳请阅读此篇论文的老师、同学,多予指正,不胜感激!
参考文献:
[1]唐良瑞,马全明,景晓军等.图像处理实用技术[M].北京:
化学工业出版社,2001.
[2]管宏蕊,丁辉.图像边缘检测经典算法研究综述[J].首都师范大学学报自然科学版.2009,30(4):
66-68.
[3]马艳,张治辉.几种边缘检测算子的比较[J].工矿自动化,2004,
(1):
54-56
[4]谢道平.二维数字图像边缘检测方法研究[J].大众科技,2010,8:
35.
[5]曾友州,胡莹等.提取数字图像边缘的算法比较[J].成都航空职业技术学院学报,2009,4:
71.
[6]李弼程.智能图像处理技术[M].北京:
电子工业出版社,2004,80-81.
[7]周心明,兰赛,徐燕.图像处理中几种边缘检测算法的比较[J].现代电力,2000,17(3):
66-67