图像边缘检测算子

合集下载

sobel算子计算过程详解

sobel算子计算过程详解

sobel算子计算过程详解Sobel算子是一种用于图像边缘检测的算法,其基本原理是通过计算像素点周围的像素点梯度值来确定图像中的边缘信息。

以下是Sobel算子的具体计算过程。

1. 定义Sobel算子模板Sobel算子模板是一个3×3的矩阵,如下所示:|-1 0 1||-2 0 2||-1 0 1|其中,中间一行和一列的元素值为0,其余各元素值根据上述矩阵填充。

2. 对图像进行卷积操作将Sobel算子模板与图像进行卷积操作,具体过程为:(1)将3×3的模板矩阵与图像中的某个像素点对应位置进行对齐;(2)求出模板矩阵与该像素点周围8个像素点的加权平均值,即:Gx = -I(p-1,q-1) - 2I(p,q-1) - I(p+1,q-1) + I(p-1,q+1) + 2I(p,q+1) +I(p+1,q+1)Gy = -I(p-1,q-1) - 2I(p-1,q) - I(p-1,q+1) + I(p+1,q-1) + 2I(p+1,q) +I(p+1,q+1)其中,Gx和Gy分别为水平和竖直方向上的边缘梯度值,I为图像像素值,p和q为像素点的位置坐标。

3. 计算像素点的边缘梯度值将Gx和Gy的平方和求平方根,即可得到像素点的边缘梯度值:G = sqrt(Gx^2 + Gy^2)4. 根据梯度值进行二值化处理对于像素点的边缘梯度值,如果超过了设定的阈值,则将其二值化为白色(255),否则为黑色(0),从而形成边缘检测后的图像。

以上便是Sobel算子的基本计算流程,通过该算法可以有效地提取图像的边缘信息,并应用于图像分割、医学影像处理、目标跟踪等领域。

几种常用边缘检测算法的比较

几种常用边缘检测算法的比较

几种常用边缘检测算法的比较边缘检测是在数字图像上寻找图像亮度变化的过程,它对于图像处理和计算机视觉任务非常重要。

常见的边缘检测算法有Sobel算子、Prewitt算子、Roberts算子和Canny边缘检测算法。

本文将对这几种算法进行比较。

1. Sobel算子:Sobel算子是一种常见的边缘检测算法,它通过计算图像像素点与其邻域像素点之间的差异来检测边缘。

Sobel算子具有简单、快速的优点,可以检测水平和垂直方向的边缘,但对于斜向边缘检测效果较差。

2. Prewitt算子:Prewitt算子也是一种常用的边缘检测算法,它类似于Sobel算子,通过计算图像像素点与其邻域像素点之间的差异来检测边缘。

Prewitt算子可以检测水平、垂直和斜向边缘,但对于斜向边缘的检测结果可能不够精确。

3. Roberts算子:Roberts算子是一种简单的边缘检测算法,它通过计算图像像素点与其对角线方向上的邻域像素点之间的差异来检测边缘。

Roberts算子计算简单,但对于噪声敏感,容易产生干扰边缘。

4. Canny边缘检测算法:Canny边缘检测算法是一种经典的边缘检测算法,它包含多个步骤:高斯滤波、计算梯度、非最大抑制和双阈值处理。

Canny算法具有良好的边缘定位能力,并且对于噪声和细节边缘具有较好的抑制效果。

但Canny算法计算复杂度较高,在处理大规模图像时可能较慢。

综上所述,不同的边缘检测算法具有各自的优缺点。

若要选择适合应用的算法,需要综合考虑图像特点、计算复杂度和应用需求等因素。

如果对图像边缘的方向要求不高,可以选择Sobel或Prewitt算子;如果对图像边缘的方向要求较高,可以选择Canny算法。

另外,为了获得更好的边缘检测结果,通常需要进行适当的预处理,如灰度化、滤波和阈值处理等。

最后,对于不同的应用场景,可能需要使用不同的算法或算法组合来满足特定需求。

sobel算子计算梯度

sobel算子计算梯度

sobel算子计算梯度
Sobel算子是一种常用的边缘检测算子,用于计算图像中像素点的梯度值。

该算子由两个3x3的卷积核组成,分别用于计算图像中水平和竖直方向的梯度。

具体而言,Sobel算子可以通过以下公式来计算梯度值:
Gx = [-1 0 1 Gy = [-1 -2 -1
-2 0 2 0 0 0
-1 0 1] 1 2 1]
其中Gx和Gy分别代表水平和竖直方向的梯度值,[-1 0 1]和[-1 -2 -1; 0 0 0; 1 2 1]分别代表水平和竖直方向的卷积核矩阵。

在计算梯度值时,可以通过将Sobel算子与图像进行卷积运算,然后取得卷积结果中的梯度值来实现。

具体而言,可以采用以下步骤来计算Sobel算子的梯度值:
1. 将原图像转换为灰度图像,以方便进行计算。

2. 对灰度图像进行填充,以避免卷积结果的边角处出现不完整的像素值。

3. 将Sobel算子矩阵与填充后的灰度图像进行卷积运算,即可得到水平和竖直方向的梯度值。

4. 根据得到的梯度值,可以进一步计算出每个像素点的梯度大小和梯度方向。

通过计算图像中像素点的梯度值,可以有效地检测出图像中的边缘和轮廓,为后续的图像处理和分析提供有价值的信息。

简述sobel算子的原理

简述sobel算子的原理

简述sobel算子的原理
Sobel算子是一种二维边缘检测算子,常用于图像处理中的边缘检测。

其原理基于图像中的亮度值在边缘处发生较大变化的观察。

Sobel算子分为水平和垂直两个方向的算子,分别用于检测图像中水平和垂直方向的边缘。

水平方向的Sobel算子如下:
-1 0 1
-2 0 2
-1 0 1
垂直方向的Sobel算子如下:
-1 -2 -1
0 0 0
1 2 1
Sobel算子的原理是将图像中每个像素点的亮度值与Sobel算子进行卷积操作,得到对应方向上的边缘强度。

以水平方向的Sobel算子为例,对图像上的每个像素点进行操作时,将其与周围3x3范围内的像素点进行加权平均。

对应的Sobel算子中的权重将被应用于周围像素的亮度值。

具体地,对应像素点的水平边缘强度定义为该像素点左右两侧像素亮度值的差的绝对值乘以对应的Sobel算子的权重。

同样,垂直方向上的边缘强度定义为上下两侧像素亮度的差的绝对值乘以对应的Sobel算子的权重。

最终,水平和垂直方向上的边缘强度可以通过将两个方向的边缘强度进行平方和的方式得到一个最终的边缘强度值。

这个边缘强度值越大,代表该点越有可能是图像中的边缘。

基于Sober算子的图像边缘检测

基于Sober算子的图像边缘检测

1 引言图像边缘是一种重要的视觉信息,图像边缘检测是图像处理、图像分析、模式识别、计算机视觉以及人类视觉的基本步骤。

其结果的正确性和可靠性将直接影响到机器视觉系统对客观世界的理解。

实现边缘检测有很多不同的方法,也一直是图像处理中的研究热点,人们期望找到一种抗噪强、定位准、不漏检、不误检的检测算法。

经典的算法中主要用梯度算子,最简单的梯度算子是Roberts算子,比较常用的有Prewitt算子和Sober算子,其中Sober算子效果较好,但是经典Sober算子也存在不足,其边缘具有很强的方向性,只对垂直与水平方向敏感,其他方向不敏感,这就使得那些边缘检测不到j。

对后续的图像处理有很的影响。

本文在此基础提出了一种新的算法,该算子该算法提高了传统Sober检测算子的性能,具有良好的检测精度。

对数字图像{f(x,y)}的每个像素,考察它上下左右邻点灰度的加权差,与之接近的邻点的权大。

据此,定义Sober算子如下:其卷积算子:适当取门限TH,作如下判断:s(i,j)>TH,(i,j)为阶跃状边缘点,{s(i,j)}为边缘图像。

Sober算子很容易在空问上实现,Sober边缘检测器不但产生较好的边缘检测效果,而且受噪声影响也比较小。

当使用大的邻域时,抗噪性能会更好,但这样会增加计算量,并且得出的边缘也会相应变粗。

Sober算子利用像素点上下、左右邻点的灰度加权算法,根据在边缘点处达到极值这一现象进行边缘的检测。

Sober算子对噪声具有平滑作用,提供较为精确的边缘方向信息,是一种较为常用的边缘检测方法。

2 算法设计针对经典Sober算子对边缘具有很强的方向性特点,提出了一种在Sober算子上改进的算法,其主要思想是先对图像进行全局阈值的分割处理,因为分割后的图像是二值图像,此时进行边缘提取,这就可以使各个方向的边缘都可以检测到。

但也可能会丢失原本可直接用Sober算子检测到的边缘。

因此,用处理后所得的图像与用Sober算子直接对原始图像进行边缘检测的图像相加,这一步就得尤为重要。

医学图像处理中的边缘检测与分割算法

医学图像处理中的边缘检测与分割算法

医学图像处理中的边缘检测与分割算法边缘检测与分割是医学图像处理中的重要部分,被广泛应用于疾病诊断、医学影像分析和手术辅助等领域。

边缘检测算法用于提取图像中的边缘信息,而分割算法则可以将图像划分为不同的区域,有助于医生对图像进行进一步分析和诊断。

一、边缘检测算法在医学图像处理中,常用的边缘检测算法包括基于梯度的方法、基于模型的方法和基于机器学习的方法。

1. 基于梯度的方法基于梯度的边缘检测算法通过计算图像中像素点的梯度值来确定边缘位置。

常用的算法包括Sobel算子、Prewitt算子和Canny算子。

Sobel算子是一种常用的离散微分算子,通过在图像中对每个像素点应用Sobel算子矩阵,可以得到图像的x方向和y方向的梯度图像。

通过计算梯度幅值和方向,可以得到边缘的位置和方向。

Prewitt算子与Sobel算子类似,也是一种基于梯度的边缘检测算子。

它通过将图像中的每个像素点与Prewitt算子矩阵进行卷积运算,得到图像的x方向和y方向的梯度图像。

进一步计算梯度幅值和方向,可以确定边缘的位置和方向。

Canny算子是一种经典的边缘检测算法,它采用多步骤的方法来检测边缘。

首先,对图像进行高斯滤波来减少噪声。

然后,计算图像的梯度幅值和方向,进一步剔除非最大值的梯度。

最后,通过设置双阈值来确定真正的边缘。

2. 基于模型的方法基于模型的边缘检测算法借助数学模型来描述边缘的形状和特征。

常用的算法包括基于边缘模型的Snake算法和基于边缘模型的Active Contour算法。

Snake算法(也称为活动轮廓模型)是一种基于曲线的边缘检测算法。

它通过将一条初始曲线沿着图像中的边缘移动,使得曲线更好地贴合真实边缘。

Snake算法考虑了边缘的连续性、平滑性和能量最小化,可以获得较为准确的边缘。

Active Contour算法是Snake算法的进一步发展,引入了图像能量函数。

通过最小化能量函数,可以得到最佳的边缘位置。

Active Contour算法可以自动调整曲线的形状和位置,适应复杂的图像边缘。

halcon 边缘检测算子

halcon 边缘检测算子

halcon 边缘检测算子摘要:1.边缘检测的定义和意义2.常见的边缘检测算子3.Halcon 边缘检测算子的特点和应用4.Halcon 边缘检测算子的优缺点5.结论正文:边缘检测是计算机视觉和图像处理领域的重要技术之一,其目的是从图像中提取出物体边缘的信息。

边缘检测的定义是:使用数学方法提取图像像元中具有亮度值(灰度)空间方向梯度大的边、线特征的过程。

边缘,是指周围像素灰度有阶跃变化或屋顶等变化的那些像素的集合。

图像的边缘对应着图像灰度的不连续性。

显然图像的边缘很少是从一个灰度跳到另一个灰度的理想状况。

真实图像的边缘通常都具有有限的宽度呈现出陡峭的斜坡状。

边缘的锐利程度由图像灰度的梯度决定。

梯度是指灰度变化的最快的方向和数量。

常见的边缘点有三种,分别是阶梯形边缘、脉冲形边缘和屋顶形边缘。

在边缘检测中,有许多常见的边缘检测算子,如Sobel 算子、Prewitt 算子、Roberts 算子和Canny 算子等。

这些算子都有各自的特点和适用场景。

Sobel 算子主要用来检测边缘,其技术上是以离散型的差分算子,用来运算图像亮度函数的梯度的近似值。

Prewitt 算子和Roberts 算子也是常用的边缘检测算子,它们通过计算图像的梯度来检测边缘。

Canny 算子则是一种多步骤的边缘检测算法,能够检测出更加精确的边缘。

Halcon 边缘检测算子是Halcon 图像处理库中的一种边缘检测算子。

Halcon 边缘检测算子的特点是能够自适应地调整边缘检测的参数,如边缘检测的阈值、边缘检测的类型等。

这使得Halcon 边缘检测算子能够更好地适应不同的图像和应用场景。

Halcon 边缘检测算子的应用主要包括机器视觉、工业自动化、医学影像处理等领域。

Halcon 边缘检测算子的优缺点如下。

优点:首先,Halcon 边缘检测算子具有较高的检测精度和鲁棒性,能够检测出图像中的细小边缘和噪声干扰;其次,Halcon 边缘检测算子具有自适应的参数调整能力,能够适应不同图像和应用场景;最后,Halcon 边缘检测算子的计算效率较高,能够在较短的时间内完成边缘检测任务。

canny算子原理

canny算子原理

canny算子原理
Canny算子是一种边缘检测算法,可以用于在图像中提取出显
著的边缘。

它是由约翰·Canny在1986年提出的,并且被广泛
应用于计算机视觉和图像处理领域。

Canny算子的原理可以分为以下几个步骤:
1. 噪声抑制:首先,需要对图像进行预处理以降低噪声的影响。

一种常见的方法是使用高斯滤波器对图像进行平滑处理,从而减少噪声的干扰。

2. 梯度计算:接下来,需要计算图像中每个像素点的梯度强度和方向。

为此,常用的方法是使用Sobel算子对图像进行卷积
操作,得到每个像素点的水平和垂直方向的梯度值。

3. 非最大抑制:通过对梯度强度和方向进行检测,可以找到图像中局部最大的边缘强度。

在这个过程中,对于每个像素点,需要判断其梯度方向所对应的像素值是否是局部最大值,如果是,则保留该像素,否则抑制。

4. 高低阈值选取:根据阈值的设定,将图像中的像素点分为边缘和非边缘。

一般来说,如果像素点的梯度值超过了高阈值,则被认为是强边缘;如果梯度值介于高低阈值之间,则被认为是弱边缘;如果梯度值低于低阈值,则被认为是非边缘。

5. 非最大值抑制:最后一步是通过非最大值抑制来进一步细化边缘。

在这个过程中,对于每个弱边缘像素,判断其周围8邻
域内的强边缘像素是否存在,如果存在,则保留,否则抑制。

通过以上步骤,Canny算子可以提取出图像中的显著边缘,并
且抑制掉噪声和不显著的边缘。

它具有较好的准确性和鲁棒性,在很多图像处理任务中得到了广泛应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书学院信息科学与工程专业电子信息工程学生姓名*** 班级学号09*******课程设计题目图像边缘检测算子课程设计目的与要求:设计目的:1.熟悉几种经典图像边缘检测算子的基本原理。

2.用Matlab编程实现边缘检测,比较不同边缘检测算子的实验结果。

设计要求:1.上述实验内容相应程序清单,并加上相应的注释。

2.完成目的内容相应图像,并提交原始图像。

3.用理论对实验内容进行分析。

工作计划与进度安排:2012年 06月29 日选题目查阅资料2012年 06月30 日编写软件源程序或建立仿真模块图2012年 07月01 日调试程序或仿真模型2012年 07月01 日结果分析及验收2012年 07月02 日撰写课程设计报告、答辩指导教师:2012年 6月29日专业负责人:2012年 6月29日学院教学副院长:2012年 6月29日摘要边缘检测是数字图像处理中的一项重要内容。

本文对图像边缘检测的几种经典算法(Roberts算子、Sobel算子、Prewitt算子)进行了分析和比较,并用MATLAB实现这几个算法。

最后通过实例图像对不同边缘检测算法的效果进行分析,比较了不同算法的特点和适用范围。

关键词:图像处理;边缘检测;Roberts算子;Sobel算子;Prewitt算子目录第1章相关知识 (IV)1.1 理论背景 (1)1.2 数字图像边缘检测意义 (1)第2章课程设计分析 (3)2.1 Roberts(罗伯特)边缘检测算子 (3)2.2 Prewitt(普瑞维特)边缘检测算子 (4)2.3 Sobel(索贝尔)边缘检测算子 (5)第3章仿真及结果分析 (7)3.1 仿真 (7)3.2 结果分析 (8)结论 (10)参考文献 (11)第1章相关知识边缘检测是数字图像处理中的一项重要内容。

本文对图像边缘检测的几种经典算法(Roberts算子、Sobel算子、Prewitt算子)进行了分析和比较,并用MATLAB实现这几个算法。

最后通过实例图像对不同边缘检测算法的效果进行分析,比较了不同算法的特点和适用范围。

1.1 理论背景图像处理就是对图像信息加工以满足人的视觉心理或应用需求的方法。

图像处理方法有光学方法和电子学方法。

从20世纪60年代起随着电子计算机和计算技术的不断提高和普及,数字图像处理进入了高速发展时期,而数字图像处理就是利用数字计算机或其它的硬件设备对图像信息转换而得到的电信号进行某些数学处理以提高图像的实用性。

图像处理在遥感技术,医学领域,安全领域,工业生产中有着广泛的应用,其中在医学应用中的超声、核磁共振和CT等技术,安全领域的模式识别技术,工业中的无损检测技术尤其引人注目。

计算机进行图像处理一般有两个目的:(1)产生更适合人观察和识别的图像。

(2)希望能由计算机自动识别和理解图像。

数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域的重要基础,图像处理和分析的第一步往往就是边缘检测。

物体的边缘是以图像的局部特征不连续的形式出现的,也就是指图像局部亮度变化最显著的部分,例如灰度值的突变、颜色的突变、纹理结构的突变等,同时物体的边缘也是不同区域的分界处。

图像边缘有方向和幅度两个特性,通常沿边缘的走向灰度变化平缓,垂直于边缘走向的像素灰度变化剧烈。

根据灰度变化的特点,图像边缘可分为阶跃型、房顶型和凸缘型。

1.2 数字图像的边缘检测意义边缘是图像上灰度变化最剧烈的地方,传统的边缘检测就是利用了这个特点,对图像各个像素点进行微分或求二阶微分来确定边缘像素点。

一阶微分图像的峰值处对应着图像的边缘点;二阶微分图像的过零点处对应着图像的边缘点。

根据数字图像的特点,处理图像过程中常采用差分来代替导数运算,对于图像的简单一阶导数运算,由于具有固定的方向性,只能检测特定方向的边缘,所以不具有普遍性。

为了克服一阶导数的缺点,我们定义图像的梯度为梯度算子,它是图像处理中最常用的一阶微分算法。

图像梯度的最重要性质是梯度的方向是在图像灰度最大变化率上,它恰好可以反映出图像边缘上的灰度变化。

数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域十分重要的基础,是图像识别中提取图像特征的一个重要属性。

图像理解和分析的第一步往往就是边缘检测。

目前它已成为机器视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。

第2章 课程设计分析图像的边缘对人的视觉具有重要的意义,一般而言,当人们看一个有边缘的物体时,首先感觉到的便是边缘。

灰度或结构等信息的突变处称为边缘。

边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。

需要指出的是,检测出的边缘并不等同于实际目标的真实边缘。

由于图像数据时二维的,而实际物体是三维的,从三维到二维的投影必然会造成信息的丢失,再加上成像过程中的光照不均和噪声等因素的影响,使得有边缘的地方不一定能被检测出来,而检测出的边缘也不一定代表实际边缘。

图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。

边缘上的这种变化可以用微分算子检测出来,通常用一阶或两阶导数来检测边缘,如下图所以。

不同的是一阶导数认为最大值对应边缘位置,而二阶导数则以过零点对应边缘位置。

(a )图像灰度变化(b )一阶导数(c )二阶导数基于一阶导数的边缘检测算子包括Roberts 算子、Sobel 算子、Prewitt 算子等,在算法实现过程中,通过2×2(Roberts 算子)或者3×3模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。

拉普拉斯边缘检测算子是基于二阶导数的边缘检测算子,该算子对噪声敏感。

一种改进方式是先对图像进行平滑处理,然后再应用二阶导数的边缘检测算子,其代表是LOG 算子。

前边介绍的边缘检测算子法是基于微分方法的,其依据是图像的边缘对应一阶导数的极大值点和二阶导数的过零点。

Canny 算子是另外一类边缘检测算子,它不是通过微分算子检测边缘,而是在满足一定约束条件下推导出的边缘检测最优化算子。

2.1 Roberts (罗伯特)边缘检测算子景物的边缘总是以图像中强度的突变形式出现的,所以景物边缘包含着大量的信息。

由于景物的边缘具有十分复杂的形态,因此,最常用的边缘检测方法是所谓的“梯度检测法”。

设(,)f x y 是图像灰度分布函数;(,)s x y 是图像边缘的梯度值;(,)x y 是梯度的方向。

则有[][]{}1222(,)(,)(,)(,)(,)s x y f x n y f x y f x y n f x y =+-++-(2.1.1)[][]{}1(,)tan (,)(,)/(,)(,)x y f x y n f x y f x n y f x y ϕ-=+-+- (2.1.2)其中,n=1,2。

式(2.1.1)与式(2.1.2)可以得到图像在(x,y )点处的梯度大小和梯度方向。

将式(2.1.1)改写为:{}1222(,)(,)(1,1)(1,)(,1)g x y f x y f x y f x y f x y ⎡⎤⎡⎤=-++++-+⎣⎦⎣⎦(2.1.3)(,)g x y 称为Roberts 边缘检测算子。

式中对(,)f x y 等的平方根运算使该处理类似于人类视觉系统的发生过程。

事实上Roberts 边缘检测算子是一种利用局部差分方法寻找边缘的算子,Robert 梯度算子所采用的是对角方向相邻两像素值之差,所以用差分代替一阶偏导,算子形式可表示如下:(,)(,)(1,1)(,)(1,)(,1)x y f x y f x y f x y f x y f x y f x y ∆=---⎧⎪⎨∆=---⎪⎩ (2.1.4) 上述算子对应的两个2×2模板如图2.1所示。

实际应用中,图像中的每个像素点都用这两个模板进行卷积运算,为避免出现负值,在边缘检测时常提取其绝对值。

1 0 0-10 1 -1(a )(b )图2.1 Robert 算子模板2.2 Prewitt (普瑞维特)边缘检测算子Prewitt 边缘检测算子就是一种利用局部差分平均方法寻找边缘的算子,它体现了三对像素点像素值之差的平均概念,因为平均能减少或消除噪声,为此我们可以先求平均,再求差分,即利用所谓的平均差分来求梯度。

用差分代替一阶偏导可得算子形式如下:[][][][](,)(1,1)(,1)(1,1)(1,1)(,1)(1,1)(,)(1,1)(1,)(1,1)(1,1)(1,)(1,1)x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y ⎧∆=+++++-+-+-+-+--⎪⎨∆=--+-+-+-+-+++++⎪⎩(2.2.5)Prewitt 边缘检测算子的两个模板如图2.2所示,它的使用方法同Sobel 算子一样,图像中的每个点都用这两个核进行卷积,取得最大值作为输出。

Prewitt 算子也产生一幅边缘图像。

-1 -1 -1 0 0 0 1111 0 -1 1 0 -1 1-1(a )(b )图2.2 Prewitt 算子模板2.3 Sobel (索贝尔)边缘检测算子该算子是由两个卷积核1(,)g x y 与2(,)g x y 对原图像(,)f x y 进行卷积运算而得到的。

其数学表达式为:121111(,)(,)(,),(,)(,)M N M Nm n m n S x y MAX f m n g i m j n f m n g i m j n ====⎡⎤=----⎢⎥⎣⎦∑∑∑∑(2.3.6)实际上Sobel 边缘算子所采用的算法是先进行加权平均,然后进行微分运算,我们可以用差分代替一阶偏导,算子的计算方法如下:[][][][](,)(1,1)2(,1)(1,1)(1,1)2(,1)(1,1)(,)(1,1)2(1,)(1,1)(1,1)2(1,)(1,1)x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y f x y ⎧∆=-++++++---+-++-⎪⎨∆=--+-+-+-+-+++++⎪⎩(2.3.7)Sobel 算子垂直方向和水平方向的模板如图2.3所示,前者可以检测出图像中的水平方向的边缘,后者则可以检测图像中垂直方向的边缘。

实际应用中,图像中的每一个像素点都用这两个卷积核进行卷积运算,取其最大值作为输出。

运算结果是一幅体现边缘幅度的图像。

-1 -2 -10 0 01 2 1 -1 0 1 -2 0 2 -3 0 1(a)(b)图2.3 Sobel算子模板第3章仿真及结果分析3.1仿真%利用Roberts、Prewitt和Sobel算子对zhixuetang.bmp进行边缘检测function jianceclc;I=imread('zhixuetang.bmp');%读入灰度图像I1=im2double(I); %将彩图序列变成双精度f=rgb2gray(I1); %将彩色图变成灰色图[L,R]=size (f);%图像大小GR=f;GP=f;GS=f;for x=2:L-1for y=2:R-1GRx(x,y)=f(x,y)-f(x+1,y+1);GRy(x,y)=f(x,y+1)-f(x+1,y);GR(x,y)=sqrt((GRx(x,y)).^2+(GRy(x,y)).^2);%roberts图像边缘提取GPx(x,y)=(f(x-1,y+1)+f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+f(x,y-1)+f(x+1,y-1))/3; GPy(x,y)=(f(x-1,y-1)+f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+f(x+1,y)+f(x+1,y+1))/3; GP(x,y)=sqrt((GPx(x,y)).^2+(GPy(x,y)).^2);%prewitt图像边缘提取GSx(x,y)=(f(x-1,y+1)+2*f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+2*f(x,y-1)+f(x+1,y-1))/ 3;GSy(x,y)=(f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+2*f(x+1,y)+f(x+1,y+1))/ 3;GS(x,y)=sqrt((GSx(x,y)).^2+(GSy(x,y)).^2);%sobel图像边缘提取endendfigure; %subplot(2,2,1);imshow(f,[]);title('原图象');figure;%subplot(2,2,2);imshow(GR,[]);title('Roberts算子边缘提取');figure;%subplot(2,2,3);imshow(GP,[]);title('Prewitt算子边缘提取');figure;%subplot(2,2,4);imshow(GS,[]);title('Sobel算子边缘提取');3.2结果分析图3.2 不同边缘检测算子的实验结果比较从以上结果可以看出:Roberts算子定位精度较高,但对噪声较为敏感;Sobel 算子和Prewitt算子对噪声具有较好的平滑作用。

相关文档
最新文档