几种典型的图像边缘检测算法的分析比较_谭艳
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ë
∂f ∂x
ù ú
ú ú û
(3)
为了得到一幅图像的梯度,在图像的每一个像素位置处都需要计算偏导数 ∂f ∂x 和 ∂f ∂y ,因此,可以使用小区域模板卷积来
进行近似计算[5]。于是研究者们根据这个模板大小及其元素值选择的不同提出了许多不同的边缘检测算子,它们对边缘检测的效
果有不同的特性。主要包括了 Roberts 算子、Prewitt 算子、Sobel 算子,以及 Canny[5]在其硕士论文中提出的基于一阶微分滤波器的三
1604 人工智能及识别技术
本栏目责任编辑:唐一东
第 8 卷第 7 期 (2012 年 3 月)
Computer Knowledge and Technology 电脑知识与技术
用 α(x,y) 表示梯度的方向,即
ຫໍສະໝຸດ Baidu
α(
x,
y)
=
arctan
éëêggyxùûú
=
é ê arctan ê ê
∂f ∂y
g(x,y) = ∇2(G(x,y)∗f (x,y))
(13)
其中,∗为卷积符号,
∇2
=
∂2 ∂x2
+
∂2 ∂y2
由卷积的可交换性得:
g(x,y) = ∇2G(x,y)∗f (x,y)
(14)
其中,∇2G(x,y) 即为 LOG 算子:
LOG ( x, y )
=
∇2G ( x, y )
=
1 πδ4
éx2 + y2
g
x
=
é-1 êê 0
-2 0
-1ù 0 úú
ë1 2 1û
gy
=
é-1 êê-2
0 0
1ù 2úú
ë-1 0 1û
(9)
1.1.4 Canny 算子
Canny 算子也是一种基于一阶微分的边缘检测方法,但它所拥有的三条最优化准则使其性能优于其他方法。它的基本原理是
首先用高斯滤波器平滑图像,再用一阶偏导的有限差分来计算梯度的幅值和方向,接着对梯度幅值进行非极大值抑制,最后用双阈
(4)
M(x,y) =
g
2 x
+
g2y
=
( f (x + 1,y + 1) - f (x,y))2 + ( f (x,y + 1) - f (x + 1,y))2
(5)
可以用两个 2×2 大小的模板代替该算子梯度幅值的计算,即
g
x
=
é1 ë0
0ù -1û
g
y
=
é0 ë1
-01ùû
(6)
该算子的梯度方向可以由公式(3)算出。由于该算子没有对图像进行平滑,因此对噪声的抑制能力不强。另外,该算子检测到
条最优化准则的 Canny 算子。
1.1.1 Roberts 算子
Roberts 算子是利用局部图像像素中交叉对角线方向的相邻两像素之差来近似梯度幅值检测图像边缘。该算子定义为:
gx
=
∂f ∂x
=
f
(x
+
1, y
+
1)
-
f
( x, y )
gy
=
∂f ∂y
=
f
( x, y
+
1)
-
f
(x
+
1, y )
该算子的梯度幅值为:
ê ë
2δ2
-
x2 + y2
1ùúe 2δ2 û
(15)
2 实验结果比较分析
2.1 原图像灰度化及加噪声
该文是调用 Matlab 中集成的各种算子对一幅图像进行边缘提取,然后对各种算法性能进行比较分析。首先对原图像进行灰度 化处理,因为各种边缘检测算子只能对灰度图像进行操作。然后再给灰度图加入均值为 0、方差为 0.002 的高斯噪声,为后面各种边 缘检测算法准备好输入图像。下面给出载入原图像及灰度化和加噪声的程序。
M(x,y) = mag(∇f ) =
g2x + g2y =
æ
ç
è
∂f ∂x
ö2
÷
ø
+
æ
ç
è
∂f ∂y
ö2
÷
ø
(2)
收稿日期:2011-12-29 作者简介:谭艳(1987-),女,重庆人,在读硕士研究生,主要研究方向为图像处理;王宇俊(1966-),男,教授,主要研究方向为人工智
能,机器人学,工业机器人,被动机器人等。
I=imread('g:\fruits.jpg');%载入原图像
算子。
LOG 算子,即高斯-拉普拉斯算子,它是先用高斯滤波器将灰度图像进行平滑处理,然后再用拉普拉斯算子对平滑后的图像进
行变换,根据二阶导数的过零点来检测图像的边缘。
首先,假设原图像为 f(x,y),高斯滤波函数为 G(x,y),拉普拉斯算子为∇2 ,输出的图像为 g(x,y),则 LOG 算子的推导如下[7]:
的图像边缘比较细,但是连续性较弱。
1.1.2 Prewitt 算子
Prewitt 算子由 Roberts 算子 2×2 大小的模板扩展为 3×3 大小的模板来计算差分算子,它是利用像素点上下、左右邻点的灰度差,
在边缘处达到最大值来检测边缘[6,11]。该算子利用两个方向的模板,即检测水平边缘的模板和检测垂直边缘的模板,图像中的每个
图像边缘包含了图像最重要的信息,图像边缘检测是计算机视觉和数字图像处理等领域研究的重要内容之一。边缘是指图像 周围像素灰度有阶跃变化或屋顶变化的那些像素的集合,它存在于目标与背景、目标与目标、区域与区域、基元与基元之间,是图像 最基本的特征,以及图像分析与识别的重要环节[1]。边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。我 们将边缘定义为图像中灰度发生急剧变化的区域边界,图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此可以用局部 图像微分来获得边缘检测算子[2]。该文主要分析了几种典型的边缘检测算子,Roberts 边缘检测算子、Prewitt 边缘检测算子、Sobel 边 缘检测算子、LOG 边缘检测算子、Canny 边缘检测算子,并用 Matlab 对这几种算法分别进行了仿真,并且还在对灰度图加入高斯噪声 后这几种算法的仿真,以便能更清楚地看出这几种算法对含有噪声的图像的抑制情况,然后分别对得到的各种效果图进行比较分 析,为人们在实际情况中选择适当的算子提供参考。
ISSN 1009-3044 CCoommppuutteerrKKnnoowwleleddggeeaannddTTeecchhnnoolologgyy电电脑脑知知识识与与技技术术
Vol.8, No.7, March 2012.
E-mail: eduf@cccc.net.cn 第 8 卷第ht7tp期://ww(2w0.d1n2z年s.n3et月.cn) Tel:+86-551-5690963 5690964
1 几种经典的边缘检测算法
图像边缘检测算法是根据图像边缘存在的突变性质来检测的。主要分为两种类型[3,4]:一种是以一阶微分为基础的边缘检测算 子,通过计算一阶导数局部最大值来检测图像边缘,如:Roberts 算子、Prewitt 算子、Sobel 算子、Canny 算子;另一种是以二阶微分为基 础的边缘检测算子,通过寻求二阶导数中的过零点来检测边缘,如:LOG 算子。
几种典型的图像边缘检测算法的分析比较
谭 艳,王宇俊,李飞龙,葛耿育
(西南大学 计算机与信息科学学院,重庆 400715)
摘要:图像的边缘检测技术是计算机视觉和数字图像处理等领域研究的重要内容,因为图像的边缘包含了图像最重要的信息,它主 要存在于目标与目标、目标与背景、区域与区域之间。该文主要分析了几种典型的图像边缘检测算法,并用 Matlab 对各种算法进行 仿真,其中包括了没有加噪声和人为加入高斯噪声两种情况,对这两种情况下各种检测算法得到的结果进行比较分析,最后可以看 出各种算法的特性以及它们各自的适用情况。 关键词: 边缘检测;图像处理;边缘检测算子;梯度;图像边缘 中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2012)07-1604-05 Analysis and Comparison for Several of Typical Image Edge Detection Algorithms TAN Yan,WANG Yu-jun,LI Fei-long,GE Geng-yu
像素点都要用这两个模板做卷积,最后输出两个卷积中的最大值。该算子的定义为:
[gx
=
∂f ∂x
=
fx
-
1, y
-
1
+
fx, y
-
1
+
fx
+
1, y
-
1
-
fx
-
1, y
+
1
+
fx, y
+
1
+
fx
+
1, y
+
1]
[gy
=
∂f ∂y
=
fx
+
1, y
+
1
+
fx
+
1, y
+
fx
+
1, y
-
1
-
fx
-
1, y
+
1
第 8 卷第 7 期 (2012 年 3 月)
1.2 二阶微分算子
基于二阶微分的算子是通过计算二阶导数中过零的点来检查图像边缘的,在一阶微分算子中,当所求的一阶导数高于某一阈
值时,就确定该点为边缘点,但是,这样的检测结果有时并不是唯一的。对于阶跃边缘,其二阶导数在边缘点出现零交叉,即边缘两
旁二阶导数取异号。这样寻找图像灰度的二阶导数的零交叉就能找到精确边缘点。二阶微分算子中主要用于边缘检测的是 LOG
1.1 一阶微分算子
基于一阶微分的算子是通过计算图像的梯度值来检测图像边缘的,利用梯度去寻找一幅图像 f 的(x,y)位置处边缘的强度和方
向,梯度用∇f 来表示,用向量定义为[2]:
é∂f ù
∇f
=
grad(
f
)
=
égxù ëêgyûú
=
êê∂∂xf úú ëê∂yûú
(1)
其中梯度值是一个矢量,因此它有大小和方向,用 M(x,y)表示梯度的大小,即
(College of Computer and Information Science,SouthWest University,Chongqing 400715,China) Abstract:Image edge detection is one of the most important part of computer vision and digital image processing and so on,because the image edge include that the image’s the most important information,it mainly exists between in goal and target,target and background,re⁃ gion and region.The paper mainly analysis for several of typical image edge detection algorithms,and uses MATLAB to evaluate these edge detection algorithms,including two kinds of cases of no noise and added a gaussian noise,then comparison and analysis the result of the vari⁃ ous detection algorithms in that both cases, finally we can know its characterist ics and suitable application of these various algorithms. Key words:edge detection;image processing;edge detection operator;gradient;image edge
值算法检测和连接边缘[8]。
假设原图像为 f(x,y),高斯函数为 G(x,y),平滑后的图像为 h(x,y),则
h(x,y) = G(x,y)*f (x,y)
(10)
其中,∗为卷积符号,
G(x,
y)
=
e-
x2 + y2 2σ2
然后再根据公式(2)和(3)计算梯度幅值和方向,即
M(x,y) =
g2x + g2y =
æ è
∂h ∂x
2
ö ø
+
æ
ç
è
∂h ∂y
ö2
÷
ø
(11)
α( x, y )
= arctanéëêggyxùûú
é ∂h = arctanêêêê∂y
ë
∂h ∂x
ù úúúú û
(12)
本栏目责任编辑:唐一东
人工智能及识别技术 1605
Computer Knowledge and Technology 电脑知识与技术
+
fx
-
1, y
+
fx
-
1, y
-
1]
(7)
该算子的两个模板为:
g
x
=
é-1 êê 0
-1 0
-1ù 0 úú
ë1 1 1û
其梯度幅值由公式(2)算出,梯度方向由公式(3)算出。
g
y
=
é-1 êê-1
0 0
1ù 1úú
ë-1 0 1û
(8)
1.1.3 Sobel 算子
Sobel 算子与 Prewitt 算子很相似,不同之处在于 Sobel 算子只是在中心系数上使用了一个权值 2。该算子的两个模板为: