边缘检测原理(内含三种算法)
边缘检测的原理

边缘检测的原理边缘检测是图像处理中的一项重要技术,它可以用于图像分割、物体识别等领域。
本文将从边缘的定义、边缘检测方法、常见算法优缺点等方面详细介绍边缘检测的原理。
一、边缘的定义在图像中,边缘通常被定义为两个不同区域之间的分界线。
这些区域可以是具有不同颜色、纹理或亮度等特征的区域。
在数字图像中,边缘通常表示为像素值突然变化的位置。
二、边缘检测方法目前,常见的边缘检测方法主要包括基于梯度算子、基于模板匹配和基于机器学习等方法。
1. 基于梯度算子基于梯度算子的边缘检测方法是最为常用和经典的方法之一。
该方法通过计算图像灰度值变化率来确定图像中物体与背景之间的分界线。
其中,Sobel算子和Canny算子是最为常用的两种梯度算子。
Sobel算子是一种3x3或5x5大小的卷积核,它可以计算出每个像素点周围8个邻居像素的梯度值,并将这些梯度值进行加权平均。
Sobel 算子通常被用于检测图像中边缘的方向和强度。
Canny算子是一种基于高斯滤波器和非极大值抑制的边缘检测方法。
该算法首先使用高斯滤波器对图像进行平滑处理,然后计算每个像素点的梯度值和方向。
接着,通过非极大值抑制来消除非边缘像素,并使用双阈值法来确定弱边缘和强边缘。
2. 基于模板匹配基于模板匹配的边缘检测方法是一种基于特定形状模板的技术。
该方法通过在图像上移动一个预定义的模板,来寻找与模板匹配的区域。
当模板与图像中某个区域完全匹配时,就可以确定该区域为边缘。
3. 基于机器学习基于机器学习的边缘检测方法是一种新兴技术,它通过训练分类器来自动识别图像中的边缘。
该方法通常需要大量标记数据来训练分类器,并且需要考虑特征选择、分类器设计等问题。
三、常见算法优缺点1. Sobel算子优点:计算简单,速度快,适用于实时处理。
缺点:对噪声敏感,容易产生虚假边缘。
2. Canny算子优点:能够检测到细节和弱边缘,能够消除噪声和虚假边缘。
缺点:计算复杂,速度慢,需要调整参数以获得最佳效果。
图像处理中的边缘检测算法技巧分享

图像处理中的边缘检测算法技巧分享边缘检测是图像处理中的重要步骤之一,它能够有效地提取图像中物体的边缘信息。
在实际应用中,边缘检测算法的准确性和效率对图像处理的结果至关重要。
本文将分享一些图像处理中常用的边缘检测算法技巧,帮助读者了解边缘检测的原理和实际应用。
1. Sobel 算子Sobel 算子是最常用的边缘检测算法之一。
它通过计算图像中每个像素点的梯度,找出图像中的边界。
Sobel 算子基于图像的灰度梯度来识别边缘,它对图像进行卷积操作,通过对图像中每个像素点的邻域像素进行加权求和来计算梯度。
2. Canny 边缘检测算法Canny 算法是一种经典的边缘检测算法,被广泛应用于图像处理领域。
Canny 算法通过多个步骤来提取图像的边缘特征。
首先,它使用高斯滤波器平滑图像,然后计算图像的梯度。
接着,它使用非极大值抑制方法来细化边缘,最后使用双阈值判定法来确定边缘。
3. Laplacian 算子Laplacian 算子是一种基于二阶导数的边缘检测算法。
它通过计算图像中每个像素点的二阶导数来检测边缘。
Laplacian 算子能够检测出图像中的高频变化部分,从而找出图像中的边缘。
4. Roberts 算子Roberts 算子是另一种基于二阶导数的边缘检测算法。
它通过计算图像中每个像素点的一阶导数来检测边缘。
Roberts 算子使用两个模板分别进行水平和垂直方向上的卷积运算,然后通过计算两个方向上的梯度大小来确定边缘。
5. 基于深度学习的边缘检测算法近年来,深度学习在图像处理领域的应用越来越广泛。
许多研究者使用卷积神经网络(CNN)来训练边缘检测模型。
这些模型通过学习大量图像数据,能够准确地识别图像中的边界。
深度学习的边缘检测算法在准确性和鲁棒性上都表现出色,但需要大量的训练数据和计算资源。
6. 非极大值抑制方法在边缘检测中,非极大值抑制方法常用于细化边缘,减少边缘像素的数量。
非极大值抑制方法通过在图像梯度方向上比较像素的梯度值来确定是否为边缘。
(完整版)Canny边缘检测算法总结

一.Canny边缘检测算法原理JohnCanny于1986年提出Canny算子,属于是先平滑后求导数的方法。
其处理过程大体上分为下面四部分。
1. 对原始图像进行灰度化Canny算法通常处理的图像为灰度图,因此如果获取的是彩色图像,那首先就得进行灰度化。
对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。
以RGB格式的彩图为例,通常灰度化采用的方法主要有:方法1:Gray=(R+G+B)/3;方法2:Gray=0.299R+0.587G+0.114B;(这种参数考虑到了人眼的生理特点)至于其他格式的彩色图像,可以根据相应的转换关系转为RGB然后再进行灰度化;在编程时要注意图像格式中RGB的顺序通常为BGR。
2. 对图像进行高斯滤波图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现。
1)高斯核实现上式为离散化的一维高斯函数,确定参数就可以得到一维核向量。
上式为离散化的二维高斯函数,确定参数就可以得到二维核向量。
在求得高斯核后,要对整个核进行归一化处理。
2)图像高斯滤波对图像进行高斯滤波,其实就是根据待滤波的像素点及其邻域点的灰度值按照一定的参数规则进行加权平均。
这样可以有效滤去理想图像中叠加的高频噪声。
通常滤波和边缘检测是矛盾的概念,抑制了噪声会使得图像边缘模糊,这会增加边缘定位的不确定性;而如果要提高边缘检测的灵敏度,同时对噪声也提高了灵敏度。
实际工程经验表明,高斯函数确定的核可以在抗噪声干扰和边缘检测精确定位之间提供较好的折衷方案。
3. 用一阶偏导的有限差分来计算梯度的幅值和方向关于图像灰度值得梯度可使用一阶有限差分来进行近似,这样就可以得图像在x和y 方向上偏导数的两个矩阵。
常用的梯度算子有如下几种:1)Roberts算子上式为其x和y方向偏导数计算模板,可用数学公式表达其每个点的梯度幅值为:2)Sobel算子上式三个矩阵分别为该算子的x向卷积模板、y向卷积模板以及待处理点的邻域点标记矩阵,据此可用数学公式表达其每个点的梯度幅值为:3)Prewitt算子和Sobel算子原理一样,在此仅给出其卷积模板。
边缘检测的原理

边缘检测的原理概述边缘检测是计算机视觉领域中一种常用的图像处理技术,用于检测图像中的边缘信息。
边缘是指图像中灰度级发生突变的区域,通常表示物体的轮廓或对象的边界。
边缘检测在很多图像处理应用中起着重要的作用,如图像分割、目标检测、图像增强等。
基本原理边缘检测的基本原理是利用像素点灰度值的变化来检测边缘。
在数字图像中,每个像素点都有一个灰度值,范围通常是0到255。
边缘处的像素点灰度值变化较大,因此可以通过检测像素点灰度值的梯度来找到边缘。
常用算法1. Roberts算子Roberts算子是一种基于差分的边缘检测算法。
它通过计算相邻像素点之间的差值来检测边缘。
具体计算方式如下:1.将图像转换为灰度图像。
2.将每个像素点与其相邻的右下方像素点(即(i,j)和(i+1,j+1))进行差值计算。
3.将每个像素点与其相邻的右上方像素点(即(i,j+1)和(i+1,j))进行差值计算。
4.对上述两组差值进行平方和再开方得到边缘强度。
5.根据设定的阈值对边缘强度进行二值化处理。
2. Sobel算子Sobel算子是一种基于滤波的边缘检测算法。
它通过使用两个卷积核对图像进行滤波操作,从而获取图像中每个像素点的梯度信息。
具体计算方式如下:1.将图像转换为灰度图像。
2.使用水平和垂直方向上的两个卷积核对图像进行滤波操作。
3.将水平和垂直方向上的滤波结果进行平方和再开方得到边缘强度。
4.根据设定的阈值对边缘强度进行二值化处理。
3. Canny边缘检测算法Canny边缘检测算法是一种基于多步骤的边缘检测算法,被广泛应用于计算机视觉领域。
它在边缘检测的精度、对噪声的抑制能力和边缘连接性上都有很好的表现。
Canny算法的主要步骤包括:1.将图像转换为灰度图像。
2.对图像进行高斯滤波以减小噪声的影响。
3.计算图像的梯度和方向。
4.对梯度进行非极大值抑制,只保留局部极大值点。
5.使用双阈值算法进行边缘连接和边缘细化。
6.得到最终的边缘图像。
边缘检测算法

边缘检测算法边缘检测算法是一种重要的图像处理算法,它的目的是检测和跟踪图像中元素的边缘。
这种算法可以应用于多种图像处理任务,如图像分割、轮廓提取、模式识别和智能对象跟踪等。
本文将简要介绍边缘检测算法的基本原理、分类及典型应用。
一、边缘检测算法的基本原理边缘检测算法的原理是检测图像中的暗线和亮线,这些线形成的边缘是图像中最基本的元素。
因此,边缘检测算法是一种通过检测图像中元素的边缘来提取图像特征的算法。
它通过比较图像中相邻像素的灰度值来确定是否存在边缘,并对边缘位置、方向和强度进行测定。
一般来说,边缘检测包括:分析图像中元素的灰度变化;检测边缘的位置和方向;图像细化和凸性检测来确定形状信息。
二、边缘检测算法的分类边缘检测算法可以分为积分或空间域算法和滤波器或频域算法两大类。
积分或空间域算法通过计算图像像素灰度变化,例如梯度、高斯梯度、灰度梯度等等,来检测边缘;滤波器或频域算法则通过运用滤波器,如Sobel、Roberts、Prewitt、Laplacian等,来检测边缘。
三、边缘检测算法的典型应用边缘检测算法可以应用于多种图像处理任务,如图像分割、轮廓提取、模式识别和智能对象跟踪等。
1.像分割。
边缘检测算法可以用来识别图像中不同的部分,从而实现图像分割。
2.廓提取。
边缘检测算法可以用来检测图像中各个对象的轮廓,从而实现轮廓提取。
3.式识别。
边缘检测算法可以用来识别图像中的模式,从而实现模式识别。
4.能对象跟踪。
边缘检测算法可以用来跟踪动态对象,从而实现智能对象跟踪。
综上所述,边缘检测算法是一种重要的图像处理算法,它可以应用于多种图像处理任务,如图像分割、轮廓提取、模式识别和智能对象跟踪等,从而能够提高图像处理的效率。
随着技术的不断发展,边缘检测算法将越来越受欢迎并被广泛应用于各种图像处理任务中。
边缘检测的原理

边缘检测的原理边缘检测是数字图像处理中的常见任务,它能够识别并提取出图像中物体的边缘信息。
在计算机视觉和模式识别领域,边缘特征对于物体识别、分割以及图像理解非常重要。
本文将介绍边缘检测的原理及其常用的方法。
一、边缘的定义边缘是图像中亮度变化剧烈处的集合。
在图像中,边缘通常表示物体之间的分界线或物体自身的边界轮廓。
边缘通常由亮度或颜色的不连续性引起,可以用于图像分析、特征提取和图像增强等应用中。
二、边缘检测的原理边缘检测的目标是找到图像中的所有边缘,并将其提取出来。
边缘检测的原理基于图像亮度的一阶或二阶变化来进行。
常用的边缘检测原理包括:1. 一阶导数方法一阶导数方法利用图像亮度的一阶导数来检测边缘。
最常见的方法是使用Sobel算子、Prewitt算子或Roberts算子计算图像的梯度,然后通过设置合适的阈值将梯度较大的像素点判定为边缘。
2. 二阶导数方法二阶导数方法通过对图像亮度进行二阶导数运算来检测边缘。
其中,Laplacian算子是最常用的二阶导数算子,它可以通过计算图像的二阶梯度来获取边缘信息。
类似于一阶导数方法,二阶导数方法也需要设定适当的阈值来提取边缘。
3. Canny算子Canny算子是一种广泛使用的边缘检测算法,它综合了一阶和二阶导数方法的优点。
Canny算子首先使用高斯滤波平滑图像,然后计算图像的梯度和梯度方向,并根据梯度方向进行非极大值抑制。
最后,通过双阈值算法检测出真正的边缘。
三、边缘检测的应用边缘检测在计算机视觉和图像处理中具有广泛的应用。
以下是一些常见的应用:1. 物体检测与分割边缘检测可以帮助识别图像中的物体并进行分割。
通过提取物体的边缘,可以实现对图像内容的理解和分析。
2. 图像增强边缘检测可以用于图像增强,通过突出图像中的边缘信息,使图像更加清晰和饱满。
3. 特征提取边缘是图像中最重要的特征之一,可以用于物体识别、图像匹配和目标跟踪等应用中。
通过提取边缘特征,可以实现对图像的自动识别和分析。
图像边缘检测原理及方法

1、差分边缘检测 在处理数字图像的离散域时,可用图像的一阶差分直接代替图像函数的导 数。 二维离散图像函数在 x 方向的一阶差分定义为: f ( x 1, y ) f ( x, y ) , 在y 方 向的一阶差分定义为: f ( x, y 1) f ( x, y ) [4]。 差分边缘检测通过求图像灰度迅速变化处的一阶导数算子的极值来检测奇 异点。某一点的值则代表该点的“边缘强度”,通过对这些值设定阈值进一步得到 边缘图像。同时,差分边缘检测要求差分方向与边缘方向垂直,此时需对图像不 同方向进行差分运算。边缘检测一般分为垂直边缘、水平边缘、对角线边缘, 各 [5] 自方向模版如图 2-1 所示 。
二、图像边缘检测方法
边缘检测算子是利用图像边缘的突变性质来检测边缘的。 主要分为两种类型 :一种是以一阶导数为基础的边缘检测算子,通过计算图像的梯度值来检测图 像边缘,如:差分边缘检测、Roberts 算子、Sobel 算子、Prewitt 算子;一种是 以二阶导数为基础的边缘检测算子,通过寻求二阶导数中的过零点来检测边缘, 如:Laplacian 算子、LOG 算子、Canny 算子。
2 f ( x, y )
2 f ( x, y ) 2 f ( x, y ) x 2 y 2
(2-10)
使用差分方程对x 和y 方向上的二阶偏导数近似如下。
2 f Gx ( f (i, j 1) f (i, j )) f (i, j 1) f (i, j ) x 2 x x x x f (i, j 2) 2 f (i, j 1) f (i, j )
s x { f ( x 1, y 1) 2 f ( x 1, y ) f ( x 1, y 1)} { f ( x 1, y 1) 2 f ( x 1, y ) f ( x 1, y 1)} s y { f ( x 1, y 1) 2 f ( x, y 1) f ( x 1, y 1)} { f ( x 1, y 1) 2 f ( x, y 1) f ( x 1, y 1)}
边缘检测的原理

边缘检测的原理
边缘检测是一种图像处理技术,它的原理是通过分析和识别图像中颜色、灰度或纹理的突变部分,提取出图像中物体轮廓的技术。
边缘检测的基本原理是基于图像的梯度变化。
在一幅图像中,物体的边缘往往表现为像素灰度值的变化。
利用这种像素灰度值的变化可以找到图像中的边缘。
常用的边缘检测算法包括Sobel算子、Prewitt算子和Canny算子。
Sobel算子是一种基于图像灰度梯度的边缘检测算法。
它将图像中每个像素的灰度值与其周围像素的灰度值进行卷积运算,得到图像的梯度值。
通过设置阈值来提取出图像中的边缘。
Prewitt算子是一种类似于Sobel算子的边缘检测算法。
它也是通过对图像中的每个像素进行卷积运算来计算梯度值,然后通过设定阈值来提取边缘。
Canny算子是一种比较高级的边缘检测算法,它结合了图像梯度和非极大值抑制技术。
对图像中每个像素进行梯度计算,并在梯度最大值处绘制边缘。
然后利用阈值来筛选出符合条件的边缘。
边缘检测在计算机视觉、图像处理等领域都有广泛的应用。
通
过边缘检测,可以提取图像中的特征信息,例如物体的轮廓、边界等,从而实现目标检测、图像分割、图像修复等任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
边缘检测原理的论述摘要数字图像处理技术是信息科学中近几十年来发展最为迅速的学科之一。
图像边缘是图像最基本的一种特征,边缘在图像的分析中起着重要的作用。
边缘作为图像的一种基本特征,在图像识别、图像分割、图像增强以及图像压缩等的领域中有较为广泛的应用,其目的就是精确定位边缘,同时更好地抑制噪声。
目前,数字图像处理技术被广泛应用于航空航天、通信、医学及工业生产等领域中。
图像边缘提取的手段多种多样,本文主要通过MATLAB语言编程分别用不同的算子例如Roberts算子、Prewitt算子、Sobel算子、Kirsch算子、Laplacian算子、Log算子和Canny算子等来实现静态图像的边缘检测,并且和检测加入高斯噪声的图像进行对比。
阐述了不同算子在进行图像边缘提取的特点,并在此基础上提出利用小波变换来实现静态图像的边缘检测。
【关键字】图像边缘数字图像边缘检测小波变换背景图像处理就是对图像信息加工以满足人的视觉心理或应用需求的方法。
图像处理方法有光学方法和电子学方法。
从20世纪60年代起随着电子计算机和计算技术的不断提高和普及,数字图像处理进入了高速发展时期,而数字图像处理就是利用数字计算机或其它的硬件设备对图像信息转换而得到的电信号进行某些数学处理以提高图像的实用性。
计算机进行图像处理一般有两个目的:(1)产生更适合人观察和识别的图像。
(2)希望能由计算机自动识别和理解图像。
数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域的重要基础,图像处理和分析的第一步往往就是边缘检测。
边缘是图象最基本的特征.边缘检测在计算机视觉、图象分析等应用中起着重要的作用,是图象分析与识别的重要环节,这是因为子图象的边缘包含了用于识别的有用信息.所以边缘检测是图像分析和模式识别的主要特征提取手段。
所谓边缘是指其周围像素灰度后阶变化或屋顶状变化的那些像素的集合,它存在于目标与背景、目标与目标、区域与区域,基元与基元之间。
因此它是图象分割所依赖的重要的特征,也是纹理特征的重要信息源和形状特征的基础;而图象的纹理形状特征的提取又常常依赖于图象分割。
图象的边缘提取也是图象匹配的基础,因为它是位置的标志,对灰度的变化不敏感,它可作为匹配的特征点。
图象的其他特征都是由边缘和区域这些基本特征推导出来的.边缘具有方向和幅度两个特征.沿边缘走向,像素值变化比较平缓;而垂直与边缘走向,则像素值变化比较剧烈.而这种剧烈可能呈现阶跃状,也可能呈现斜坡状。
边缘上像素值的一阶导数较大;二阶导数在边缘处值为零,呈现零交叉。
经典的、最简单的边缘检测方法是对原始图象按像素的某邻域构造边缘算子.由于原始图象往往含有噪声,而边缘和噪声在空间域表现为灰度有比较大的起落;在频域则反应为同是高频分量,这就给边缘检测带来困难.原理边缘是图像上灰度变化最剧烈的地方,传统的边缘检测就是利用了这个特点,对图像各个像素点进行微分或求二阶微分来确定边缘像素点。
一阶微分图像的峰值处对应着图像的边缘点;二阶微分图像的过零点处对应着图像的边缘点。
根据数字图像的特点,处理图像过程中常采用差分来代替导数运算,对于图像的简单一阶导数运算,由于具有固定的方向性,只能检测特定方向的边缘,所以不具有普遍性。
为了克服一阶导数的缺点,我们定义图像的梯度为梯度算子,它是图像处理中最常用的一阶微分算法。
图像梯度的最重要性质是梯度的方向是在图像灰度最大变化率上,它恰好可以反映出图像边缘上的灰度变化。
1 .Roberts 算子边缘,是指周围像素灰度有阶跃变化或屋顶等变化的那些像素的集合。
图像的边缘对应着图像灰度的不连续性。
显然图像的边缘很少是从一个灰度跳到另一个灰度这样的理想状况。
真实图像的边缘通常都具有有限的宽度呈现出陡峭的斜坡状。
边缘的锐利程度由图像灰度的梯度决定。
梯度是一个向量,∇f 指出灰度变化最快的方向和变化量。
),(f yf x f ∂∂∂∂=∇ 梯度大小由22⎪⎪⎭⎫ ⎝⎛∂∂+⎪⎭⎫ ⎝⎛∂∂=∇y f x f f 确定。
而梯度方向则由⎪⎪⎪⎭⎫ ⎝⎛∂∂∂∂=x f y f θ 确定。
因此最简单的边缘检测算子是用图像的垂直和水平差分来逼近梯度算子:()()))1,(),(,,1,(----=∇y x f y x f y x f y x f f因此当我们寻找边缘的时候,最简单的方法是对每一个像素计算出(2.1.4)的向量,然后求出它的绝对值。
利用这种思想就得到了Roberts 算子:2122})],1()1,([)]1,1(),({[),(y x f y x f y x f y x f y x g +-++++-= 2 .Prewitt 算子Roberts 算子是直观的也是简单的,但是对噪声多的情况显然效果不好。
实践中人们做了大量的实践,总结出了一些经验,后来Prewitt 提出了一个算子,这就是Prewitt 算子。
Prewitt 边缘检测算子使用两个有向算子(一个水平的,一个是垂直的,一般称为模板),每一个逼近一个偏导数:⎪⎪⎪⎭⎫ ⎝⎛---=111000111v p ⎪⎪⎪⎭⎫ ⎝⎛---=101101101h p如果我们用Prewitt 算子检测图像 M 的边缘的话,我们可以先分别用水平算子和垂直算子对图像进行卷积,得到的是两个矩阵,在不考虑边界的情形下也是和原图像同样大小的 M1,M2,他们分别表示图像M 中相同位置处的两个偏导数。
然后把M1,M2 对应位置的两个数平方后相加得到一个新的矩阵G,G 表示M 中各个像素的灰度的梯度值(一个逼近)。
然后就可以通过阀值处理得到边缘图像。
我们假设图像的灰度满足下面这个关系:γβα++=y x M y x ,则梯度是(α,β) 。
显然,当前像素 3×3 邻域内像素值为:⎪⎪⎪⎭⎫ ⎝⎛++++-++-++-+-+--γβαγαγβαγβγγβγβαγαγβα 定义垂直算子和水平算子形如:⎪⎪⎪⎭⎫ ⎝⎛---a b a a b a 000⎪⎪⎪⎭⎫ ⎝⎛---a a b b a a 000 利用这两个模板对当前像素进行卷积,得到的方向导数为 : )2(2)2(2b a g b a g y x +=+=αβ因此当前像素处的梯度的大小为 :22)2(2βα++=b a G显然要有:2(2a+b )= 1我们取 a=b=1/6则得到的模板就是1/6乘Prewitt 算子。
3. Kirsch 算子Kirsch 算子由8个3×3窗口模扳组成、每个模板分别代表一个特定的检测方向,其模板算子如图2.3.1所示。
在进行边缘检测时,把M0-M7所表示的边缘模板(加权矩阵)分别与图像中的一个3×3区域相乘,选取输出值为最大的模板。
然后,把这一最大输出值作为中央像素点上的边缘强度,把取得最大值的边缘模板Mk 的方向k(k 的取值如图2.3.2所示)作为其边缘方向。
假设图像中一点P(i ,j)及其八邻域的灰度如图3.3.3所示,并设Qk(k =0,1,…,7)为图像经过kirsch 算子第k 个模板处理后得到的k 方向上的边缘强度,则P(i,j)的边缘强度为s(i,j)=max|qk|(k=0,1,…,7),而相应的边缘方向D(i ,j)={k|qk 为最大值}⎪⎪⎪⎭⎫ ⎝⎛----+-++⎪⎪⎪⎭⎫ ⎝⎛--+-+--+⎪⎪⎪⎭⎫ ⎝⎛-++-+---⎪⎪⎪⎭⎫ ⎝⎛+++-----⎪⎪⎪⎭⎫⎝⎛++-+----⎪⎪⎪⎭⎫ ⎝⎛+--+-+--⎪⎪⎪⎭⎫ ⎝⎛---+-++-⎪⎪⎪⎭⎫ ⎝⎛-----+++333305355335305335355305333555303333553503333533503533333503553333303555图2.3.1图2.3.2 图2.3.3实验内容1.实验程序清单:<1>Roberts 算子程序:clcclear all close allA = imread('cameraman.tif'); % 读入图像 imshow(A);title('原图');x_mask = [1 0;0 -1]; % 建立X 方向的模板y_mask = rot90(x_mask); % 建立Y方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像即边缘图像title('Roberts')<2>Prewitt算子程序:clcclear all close allA = imread('cameraman.tif');% 读入图像imshow(A);title('原图');y_mask = [-1 -1 -1;0 0 0;1 1 1]; % 建立Y方向的模板x_mask = y_mask'; % 建立X方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像即边缘图像title('Prewitt')<3>Kirsch算子程序clcclear all close allA = imread('cameraman.tif'); % 读入图像imshow(A);title('原图');mask1=[-3,-3,-3;-3,0,5;-3,5,5]; % 建立方向模板mask2=[-3,-3,5;-3,0,5;-3,-3,5]; mask3=[-3,5,5;-3,0,5;-3,-3 ,-3]; mask4=[-3,-3,-3;-3,0,-3;5,5,5]; mask5=[5,5,5;-3,0,-3;-3,-3,-3]; mask6=[-3,-3,-3;5,0,-3;5,5,-3]; mask7=[5,-3, -3;5,0,-3;5,-3,-3];mask8=[5,5,-3;5,0,-3;-3,-3,-3];I = im2double(A); % 将数据图像转化为双精度d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2); d3 = imfilter(I, mask3);d4 = imfilter(I, mask4); d5 = imfilter(I, mask5); d 6 = imfilter(I, mask6);d7 = imfilter(I, mask7); d8 = imfilter(I, mask8);dd = max(abs(d1),abs(d2)); % 取差值变化最大的元素组成灰度变化矩阵dd = max(dd,abs(d3)); dd = max(dd,abs(d4)); dd = ma x(dd,abs(d5)); dd = max(dd,abs(d6));dd = max(dd,abs(d7)); dd = max(dd,abs(d8));grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像,即边缘图像title('Kirsch')2.实验结果以cameraman图片为例,分别用Roberts、Prewitt和Kirsch三种算法,在无噪声(图11)和有高斯白噪声(图12)的环境下,分别给检测结果。