图像边缘检测各种算子MATLAB实现以及实际应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《图像处理中的数学方法》实验报告
学生姓名:***
教师姓名:曾理
学院:数学与统计学院
专业:信息与计算科学
学号:********
联系方式:139****1645
梯度和拉普拉斯算子在图像边缘检测中的应用
一、数学方法
边缘检测最通用的方法是检测灰度值的不连续性,这种不连续性用一阶和二阶导数来检测。
1.(1)一阶导数:一阶导数即为梯度,对于平面上的图像来说,我们只需用到二维函数
的梯度,即:∇f=[g x
g y]=[ðf ðx
ðf
ðy
],该向量的幅值:∇f=mag(∇f)=[g x2+g y2]1/2= [(ðf/ðx)2+(ðf/ðy)2]1/2,为简化计算,省略上式平方根,得到近似值∇f≈g x2+g y2;或通过取绝对值来近似,得到:∇f≈|g x|+|g y|。
(2)二阶导数:二阶导数通常用拉普拉斯算子来计算,由二阶微分构成:
∇2f(x,y)=ð2f(x,y)
ðx2
+
ð2f(x,y)
ðy2
2.边缘检测的基本思想:
(1)寻找灰度的一阶导数的幅度大于某个指定阈值的位置;
(2)寻找灰度的二阶导数有零交叉的位置。
3.几种方法简介
(1)Sobel边缘检测器:以差分来代替一阶导数。Sobel边缘检测器使用一个3×3邻域的行和列之间的离散差来计算梯度,其中,每行或每列的中心像素用2来加
权,以提供平滑效果。∇f=[g x2+g y2]1/2={[(z7+2z8+z9)−(z1+2z2+
z3)]2+[(z3+2z6+z9)−(z1+2z4+z7)]2}1/2
(2)Prewitt边缘检测器:使用下图所示模板来数字化地近似一阶导数。与Sobel检测
器相比,计算上简单一些,但产生的结果中噪声可能会稍微大一些。
g x=(z7+z8+z9)−(z1+z2+z3)
g y=(z3+z6+z9)−(z1−z4−z7)
(3)Roberts边缘检测器:使用下图所示模板来数字化地将一阶导数近似为相邻像素之间的差,它与前述检测器相比功能有限(非对称,且不能检测多种45°倍数的边缘)。
g x=z9−z5
g y=z8−z6
(4)Laplace边缘检测器:二维函数f(x,y)的拉普拉斯是一个二阶的微分定义:
∇2f(x,y)=ð2f(x,y)
ðx2
+
ð2f(x,y)
ðy2
模板算子可分为四邻域和八邻域,如下:
(四邻域)
(八邻域)
(5) LoG 边缘检测器
由于噪声点(灰度与周围点相差很大的像素点)对边缘检测有一定的影响,所以效果更好的是LoG 算子,即Laplacian -Guass 算子。引入高斯函数来平滑噪声:
该函数的Laplace 算子:
它把Guass 平滑滤波器和Laplace 锐化滤波器结合起来,先平滑掉噪声,再进行边缘检测,所以效果比单用Laplace 算子要更为平滑,效果更好。
(6) Canny 边缘检测器
主要分为以下几个步骤:①使用具有指定标准差的一个高斯滤波器来平滑图像,以减少噪声;②在每个点处计算局部梯度和边缘方向;③对步骤②中确定的边缘点产生梯度中的脊线顶部进行追踪,并将实际山不在脊线顶部的像素设置为零,从而在输出中给出一条细线(非最大值抑制),然后使用滞后阈值处理法对这些脊线像素进行阈值处理。最后进行边缘连接。
G (x ,y )=
e −
x 2+y 22σ2
∇2
G (x ,y )=ð2G (x ,y )ðx 2+ð2G (x ,y )
ðy 2
= x 2+y 2−2σ2σ4
e
−x 2+y
2
2σ2
二、实验结果原始图像:
1.Roberts算子
2.Prewitt算子
3.Sobel算子
place算子
(4邻域)
(8邻域)5.LoG
四种结果的比较:(Laplace采用8邻域模板)
图像来源:
/show/05248 591.html(网行天下首页>>设计图库>>文化艺术>>插画集:《牧羊犬灰度》)
图像规格:800×677 格式:SVG 模式:RGB
硬件条件:
软件条件:运行环境:Matlab r2015b
三、讨论
1.各方法优缺点及比较:
(1)Roberts算子:Roberts算子是2×2算子,对具有陡峭的低噪声图像响应最好,并且检测垂直边缘的效果好于斜向边缘,定位精度高。然而,它对噪声敏感,无法抑制噪声的影响。因此,它适用于边缘明显且噪声较少的图像分割。
(2)Prewitt算子:Prewitt算子将两个点的各自一定领域内的灰度值求和,并根据两个灰度值和的差来计算x,y的偏导数。它是平均滤波,对噪声有抑制作用,对于灰度渐变的低噪声图像有较好的检测效果,但是像素平均相当于对图像的低通滤波,所以它对边缘的定位不如Roberts算子。对于混合多复杂噪声的图像,效果不太理想。
(3)Sobel算子:Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,即Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。
(4)Laplace算子:Laplace算子是一种各向同性算子,在只关心边缘的位置而不考虑其周围的象素灰度差值时比较合适。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。
(5)LoG算子:由于二阶导数是线性运算,利用LoG卷积一幅图像与首先使用高斯型平滑函数卷积改图像,然后计算所得结果的拉普拉斯是一样的。所以在LoG公式中使用高斯函数的目的就是对图像进行平滑处理,使用Laplacian算子的目的是提供一幅用零交叉确定边缘位置的图像;图像的平滑处理减少了噪声的影响并且它的主要作用还是抵消由Laplacian 算子的二阶导数引起的逐渐增加的噪声影响。
(6)Canny算子:是一个具有滤波,增强和检测的多阶段的优化算子,在进行处理前,Canny 算子先利用高斯平滑滤波器来平滑图像以消除噪声,Canny分割算法采用一阶偏导的有限差分来计算梯度的幅值和方向。在处理过程中,Canny算法还将经过一个非极大值抑制的过程。最后Canny算法将采用两个阈值来连接边缘。高定位精度、低误判率、抑制虚假边缘,适用于高噪声图像。