Sobel边缘检测算子

合集下载

基于sobel和canny的边缘检测原理

基于sobel和canny的边缘检测原理

基于sobel和canny的边缘检测原理
Sobel的原理:
Sobel 算子是图像处理中的算子之一,主要用作边缘检测。

它是一种离散性差分算子,用来运算图像亮度函数的梯度之近似值。

在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量.
该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。

以I代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:
由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。

但是Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。

在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。

Canny的原理:
1、图象边缘检测必须满足两个条件:其一必须有效地抑制噪声;其次必须尽量精确确
定边缘的位置。

2、根据对信噪比与定位乘积进行测度,得到最优化逼近算子。

这就是Canny边缘检测
算子。

3、类似于LoG边缘检测方法,属于先平滑后求导数的方法。

Canny边缘检测算法可以分为四个步骤:
1)用高斯滤波器平滑图象;
2)用一阶偏导的有限差分来计算梯度的幅值和方向;3)对梯度幅值进行非极大值抑制
4)用双阈值算法检测和连接边缘。

图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)

图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
{
iHeight=PicHeight;
iWidth=PicWidth;
iData=PicData;
sigma=PicSigma;
dRatioLow=PicRatioLow;
dRatioHigh=PicRatioHigh;
}
Canny::~Canny()
{
}
void Canny::CannyArith(int **iEdgePoint)
{
int i;
int **iGradX ; //指向x方向导数的指针
int **iGradY ; //指向y方向导数的指针
int **iExtent ; //梯度的幅度
iGradX=new int *[iHeight];
for(i=0;i<iHeight;i++)
iGradX[i]=new int[iWidth];
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Canny::Canny(int PicHeight,int PicWidth,double ** PicData,double PicSigma,double PicRatioLow,double PicRatioHigh)
1sobel其主要用于边缘检测在技术上它是以离散型的差分算子用来运算图像亮度函数的梯度的近似值缺点是sobel算子并没有将图像的主题与背景严格地区分开来换言之就是sobel算子并没有基于图像灰度进行处理由于sobel算子并没有严格地模拟人的视觉生理特征所以提取的图像轮廓有时并不能令人满意算法具体实现很简单就是的两个不同方向上的模板运算这里不再写出

图像识别中的轮廓提取算法探索(七)

图像识别中的轮廓提取算法探索(七)

图像识别中的轮廓提取算法探索引言:图像识别技术如今已经广泛应用于各个领域,其关键之一就是图像中的轮廓提取算法。

轮廓提取的准确与否直接影响到图像识别的效果。

本文将探索图像识别中常用的轮廓提取算法,并对其原理和优缺点进行分析。

一、边缘检测算法边缘检测是图像处理中最基础的一步,是进行轮廓提取的前提。

常用的边缘检测算法有Sobel算子、Laplacian算子和Canny算子等。

1. Sobel算子Sobel算子是一种基于梯度的边缘检测算法,其原理是通过计算每个像素点的梯度值来判断其是否为边缘点。

然后根据梯度值的大小确定边缘的强度,进而提取轮廓。

Sobel算子的优点是计算简单,对噪声鲁棒性强。

但其缺点也较为明显,容易产生边缘断裂的情况,并且对角线边缘检测效果较差。

2. Laplacian算子Laplacian算子是一种基于二阶导数的边缘检测算法,其原理是通过计算图像中每个像素点的二阶导数来判断其是否为边缘点。

Laplacian算子的优点是能够检测出边缘的交叉点,能够更精准地定位边缘。

但其缺点是对噪声比较敏感,容易产生误检。

3. Canny算子Canny算子是一种综合考虑多种因素的边缘检测算法,其原理是通过梯度计算、非极大值抑制和阈值处理来提取目标轮廓。

Canny算子的优点是能够提取清晰且连续的边缘,对噪声抑制效果好。

但其缺点是计算量较大,算法较为复杂。

二、区域生长算法区域生长算法是一种基于种子点的轮廓提取方法,其原理是在图像中选择若干个种子点,然后通过像素点之间的相似性判断来逐渐生长成为一个完整的区域。

区域生长算法的优点是能够提取出连续且相似的轮廓,适用于要求较高的图像识别任务。

但其缺点是对种子点的选择比较敏感,容易受到图像质量和噪声的影响。

三、边缘跟踪算法边缘跟踪算法是一种基于边缘连接的轮廓提取方法,其原理是通过追踪边缘点的连接关系,形成完整的轮廓。

边缘跟踪算法的优点是能够提取出精细的轮廓,并且对噪声抑制效果好。

Sobel边缘检测算子

Sobel边缘检测算子

经典边缘检测算子比较一各种经典边缘检测算子原理简介图像的边缘对人的视觉具有重要的意义,一般而言,当人们看一个有边缘的物体时,首先感觉到的便是边缘。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【OpenCV】边缘检测:Sobel、拉普拉斯算子 .

【OpenCV】边缘检测:Sobel、拉普拉斯算子 .

【OpenCV】边缘检测:Sobel、拉普拉斯算子转自:/xiaowei_cqu/article/details/7829481边缘边缘(edge)是指图像局部强度变化最显著的部分。

主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征和形状特征等图像分析的重要基础。

图像强度的显著变化可分为:∙阶跃变化函数,即图像强度在不连续处的两边的像素灰度值有着显著的差异;∙线条(屋顶)变化函数,即图像强度突然从一个值变化到另一个值,保持一较小行程后又回到原来的值。

图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈.边缘上的这种变化可以用微分算子检测出来,通常用一阶或二阶导数来检测边缘。

(a)(b)分别是阶跃函数和屋顶函数的二维图像;(c)(d)是阶跃和屋顶函数的函数图象;(e)(f)对应一阶倒数;(g)(h)是二阶倒数。

一阶导数法:梯度算子对于左图,左侧的边是正的(由暗到亮),右侧的边是负的(由亮到暗)。

对于右图,结论相反。

常数部分为零。

用来检测边是否存在。

梯度算子 Gradient operators 函数f(x,y)在(x,y)处的梯度为一个向量:计算这个向量的大小为:近似为:梯度的方向角为:Sobel算子sobel算子的表示:梯度幅值:用卷积模板来实现:【相关代码】接口[cpp]view plaincopyprint?1.CV_EXPORTS_W void Sobel( InputArray src, OutputArray dst, int ddepth,2.int dx, int dy, int ksize=3,3.double scale=1, double delta=0,4.int borderType=BORDER_DEFAULT );使用[cpp]view plaincopyprint?1./////////////////////////// Sobe l////////////////////////////////////2./// Generate grad_x and grad_y3.Mat grad_x, grad_y;4.Mat abs_grad_x, abs_grad_y;5./// Gradient X6.//Scharr( src_gray, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT );7.//Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator.8.Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );9.convertScaleAbs( grad_x, abs_grad_x );10./// Gradient Y11.//Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );12.Sobel( src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT );13.convertScaleAbs( grad_y, abs_grad_y );14./// Total Gradient (approximate)15.addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad );二阶微分法:拉普拉斯二阶微分在亮的一边是负的,在暗的一边是正的。

边缘检测的原理

边缘检测的原理

边缘检测的原理概述边缘检测是计算机视觉领域中一种常用的图像处理技术,用于检测图像中的边缘信息。

边缘是指图像中灰度级发生突变的区域,通常表示物体的轮廓或对象的边界。

边缘检测在很多图像处理应用中起着重要的作用,如图像分割、目标检测、图像增强等。

基本原理边缘检测的基本原理是利用像素点灰度值的变化来检测边缘。

在数字图像中,每个像素点都有一个灰度值,范围通常是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算子计算例题

sobel算子计算例题

sobel算子计算例题Sobel算子是一种常用的边缘检测算法,它能够通过计算图像中像素点的梯度来找到图像中的边缘。

本文将介绍一个使用Sobel算子计算边缘的例子,并拓展讨论Sobel算子的原理和应用。

假设我们有一幅灰度图像,我们想要找到图像中的水平边缘。

首先,我们需要将图像转化为灰度图像,这可以通过常见的方法如将RGB图像的三个通道取平均值来实现。

接下来,我们需要应用Sobel算子来计算每个像素点的梯度。

Sobel算子分为水平和垂直两个方向的算子,分别用于计算像素点在水平方向和垂直方向上的梯度。

在这个例子中,我们只关注水平边缘,所以我们只需要使用水平方向的Sobel算子。

水平方向的Sobel算子如下:```-1 0 1-2 0 2-1 0 1```我们需要将该算子与图像中的每个像素进行卷积运算。

卷积运算的过程是将算子与图像的局部区域进行元素级别的乘法,并将乘积相加,最后得到一个新的像素值。

这个新的像素值表示了该位置上的梯度大小。

我们可以使用以下公式来计算每个像素点的梯度:```Gx = (P1 * -1) + (P2 * 0) + (P3 * 1) +(P4 * -2) + (P5 * 0) + (P6 * 2) +(P7 * -1) + (P8 * 0) + (P9 * 1)```其中,P1到P9表示了图像中某个像素点周围的8个像素点。

计算完所有像素点的梯度之后,我们可以将梯度值进行阈值处理,以确定哪些像素点属于边缘。

一种简单的方法是将梯度值与一个预先设定的阈值进行比较,大于阈值的像素点被认为是边缘点,小于阈值的像素点被认为是非边缘点。

除了边缘检测之外,Sobel算子还可以用于图像的模糊处理、图像增强等。

在图像模糊处理中,我们可以通过计算图像的梯度来减少图像中的高频噪声,从而实现图像的平滑效果。

在图像增强中,我们可以通过增加图像的梯度来强化图像的边缘信息,使图像更加清晰。

总结而言,Sobel算子是一种常用的边缘检测算法,它可以通过计算图像中像素点的梯度来找到图像中的边缘。

cvinvoke.sobel原理

cvinvoke.sobel原理

cvinvoke.sobel原理Sobel算子是一种常用的边缘检测算法,它利用图像的空间梯度来识别不同区域之间的边界。

本文将详细介绍Sobel算子的原理及其在图像处理中的应用。

第一部分:Sobel算子的背景和原理在介绍Sobel算子之前,我们先来了解一下边缘检测的概念。

边缘通常是图像中颜色、亮度或纹理等视觉特征的突变之处。

在图像处理中,我们经常需要识别和提取出图像中的边缘信息,例如在物体检测、图像分割和特征提取等领域。

Sobel算子是一种基于梯度的边缘检测算法,它利用图像中的亮度变化来寻找边缘。

Sobel算子构建了两个卷积核,分别用于计算图像中水平和垂直方向的梯度。

这两个卷积核分别为:Gx = [-1 0 1 Gy = [-1 -2 -1-2 0 2] 0 0 0-1 0 1] 1 2 1]其中Gx和Gy分别表示水平和垂直方向的梯度运算。

Sobel算子通过将这两个卷积核与图像进行卷积操作,得到了两个梯度图像分量,即水平方向梯度图像和垂直方向梯度图像。

然后,通过对这两个梯度图像进行平方和开方运算,我们可以得到最终的边缘图像。

第二部分:Sobel算子的实现步骤接下来,我们将详细说明Sobel算子的实现步骤。

步骤一:灰度变换在使用Sobel算子进行边缘检测之前,首先需要将原始图像转换为灰度图像。

这是因为灰度图像只包含亮度信息,而不包含颜色信息,这样有助于提取边缘信息。

步骤二:图像卷积接下来,我们需要将卷积核与灰度图像进行卷积操作。

这一步骤可以通过使用卷积运算的公式来实现。

对于每个像素点,我们需要用卷积核中的数值与其周围像素点的数值相乘,并将结果相加,最后再除以一个标准化因子。

这个过程可以通过遍历整个图像来完成,对于每个像素点(i, j):1. 获取像素点(i, j)的8邻域像素值。

2. 用Gx卷积核与该像素点的8邻域进行卷积运算,得到水平方向梯度值Gx(i, j)。

3. 用Gy卷积核与该像素点的8邻域进行卷积运算,得到垂直方向梯度值Gy(i, j)。

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

经典边缘检测算子比较一 各种经典边缘检测算子原理简介图像的边缘对人的视觉具有重要的意义,一般而言,当人们看一个有边缘的物体时,首先感觉到的便是边缘。

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

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

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

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

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

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

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

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

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

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

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

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

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 =+-++- (1)(n=1,2,...) [][]{}1(,)tan (,)(,)/(,)(,)x y f x y n f x y f x n y f x y ϕ-=+-+- (2)式(1)与式(2)可以得到图像在(x,y )点处的梯度大小和梯度方向。

将式(1)改写为:{}1222(,)g x y =+ (3)(,)g x y 称为Roberts 边缘检测算子。

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

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

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

(a )(b ) 图(A )Robert 算子模板2 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 ====⎡⎤=----⎢⎥⎣⎦∑∑∑∑(5)实际上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 ⎧∆=-++++++---+-++-⎪⎨∆=--+-+-+-+-+++++⎪⎩ (6)Sobel 算子垂直方向和水平方向的模板如图(B )所示,前者可以检测出图像中的水平方向的边缘,后者则可以检测图像中垂直方向的边缘。

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

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

(a ) (b ) 图(B )Sobel 算子模板3 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 ⎧∆=+++++-+-+-+-+--⎪⎨∆=--+-+-+-+-+++++⎪⎩ (7) Prewitt 边缘检测算子的两个模板如图(C )所示,它的使用方法同Sobel 算子一样,图像中的每个点都用这两个核进行卷积,取得最大值作为输出。

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

(a ) (b )图(C )Prewitt 算子模板4 Laplacian (拉普拉斯)边缘检测算子对于阶跃状边缘,其二阶导数在边缘点出现过零交叉,即边缘点两旁的二阶导数取异号,据此可以通过二阶导数来检测边缘点。

拉普拉斯边缘检测算子正是对二维函数进行二阶导数运算的标量算子,它的定义是:22222(,)(,)(,)f x y f x y f x y x y∂∂∇=+∂∂ (8)用差分代替二阶偏导时,与前述三个一阶导数算子不同,拉普拉斯算子的形式可表示如下:22(,)(1,)(1,)(,1)(,1)4(,)(,)(1,1)(,1)(1,1)(1,)(1,)(1,1)(,1)(1,1)8(,)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 f x y f x y ⎧∆=++-+++--⎪⎨∆=--+-++-+-++⎪⎩+-++++++-(9)拉普拉斯边缘检测算子的模板如图(D )所示,模板的基本特征是中心位置的系数为正,其余位置的系数为负,且模板的系数之和为零。

它的使用方法是用图中的两个点阵之一作为卷积核,与原图像进行卷积运算即可。

拉普拉斯算子又是一个线性的移不变算子,它的传递函数在频域空间的原点为零,因此,一个经拉普拉斯滤波过的图像具有零平均灰度。

拉普拉斯检测模板的特点是各向同性,对孤立点及线端的检测效果好,但边缘方向信息丢失,对噪声敏感,整体检测效果不如梯度算子。

因此,它很少直接用于边缘检测。

但注意到与Sobel 算子相比,对图像进行处理时,拉普拉斯算子能使噪声成分得到加强,对噪声更敏感。

(a ) (b ) 图(D )Laplace 算子模板5 Marr-Hildreth (马尔)边缘检测算子实际应用中,由于噪声的影响,对噪声敏感的边缘检测点检测算法(如拉普拉斯算子法)可能会把噪声当边缘点检测出来,而真正的边缘点会被噪声淹没而未检测出。

为此Marr 和Hildreth 提出了马尔算子,因为是基于高斯算子和拉普拉斯算子的,所以也称高斯-拉普拉斯(Laplacian of Gaussian,LoG )边缘检测算子,简称LoG 算子。

该方法是先采用高斯算子对原图像进行平滑又降低了噪声,孤立的噪声点和较小的结构组织将被滤除由于平滑会导致边缘的延展,因此在边缘检测时仅考虑那些具有局部最大值的点为边缘点,这一点可以用拉普拉斯算子将边缘点转换成零交叉点,然后通过零交叉点的检测来实现边缘检测。

所谓零交叉点就是:如果一个像素处的值小于一0θ,而此像素8-连通的各个像素都是大于0θ (0θ是一个正数),那么这个像素就是零交叉点。

这样还能克服拉普拉斯算子对噪声敏感的缺点,减少了噪声的影响。

二维高斯函数为222(,)()2x y h x y exp σ+=-(10) 则连续函数(,)f x y 的LoG 边缘检测算子定义为[]2(,)(,)(,)G x y h x y f x y =-∇*2(,)*(,)h x y f x y ⎡⎤=-∇⎣⎦(,)*(,)H x y f x y = (11)222242(,)(,)exp()2r r H x y h x y σσσ-=-∇=- (12) 其中222,r x y σ=+是标准差。

算子(,)H x y 是一个轴对称函数,其横截面如图(E )所示。

由于它相当的平滑,能减少噪声的影响,所以当边缘模糊或噪声较大时,利用(,)H x y 检测过零点能提供较可靠的边缘位置。

图(E )H (x,y )的截面图LoG 算子在(x,y )空间具有以原点为中心旋转的对称性,LoG 滤波器具有如下三个显著特点:✧ 该滤波器中的高斯函数部分对图像具有平滑作用,可有效地消除尺度远小于高斯分布因子σ的噪声信号。

✧ 高斯函数在空域和频域都具有平滑作用。

✧ 该滤波器采用拉普拉斯算子2∇可以减少计算量。

马尔算子用到的卷积模板一般比较大(典型半径为8-32个像素),不过这些模板可以分解为一维卷积来快速计算。

常用的LoG 算子是55⨯模板,如图(F )。

与其他边缘检测算子一样,LoG 算子也是先对边缘做出假设,然后再这个假设下寻找边缘像素。

但LoG 算子对边缘的假设条件最少,因此它的应用围更广。

另外,其他边缘检测算子检测得到的边缘时不连续的,不规则的,还需要连接这些边缘,而LoG 算子的结果没有这个缺点。

对于LoG 算子边缘检测的结果可以通过高斯函数标准偏差σ来进行调整。

即σ值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测的性能;σ值越小,又有可能平滑不完全而留有太多的噪声。

因此,在不知道物体尺度和位置的情况下,很难准确确定滤波器的σ值。

相关文档
最新文档