图像处理之四种边缘检测算子比较
- 格式:pdf
- 大小:1019.64 KB
- 文档页数:14
图像处理中的边缘检测算法使用比较边缘检测算法是图像处理领域中一种重要的技术,用于detecting 出图像中物体的边缘。
它在计算机视觉、图像识别、医学图像处理等领域具有广泛的应用。
本文将介绍几种常用的边缘检测算法,并对它们进行比较。
1. Sobel 算子Sobel 算子是一种基于梯度运算的边缘检测算法。
它通过计算图像的梯度来检测边缘的位置和方向。
Sobel 算子在图像的噪声较少的情况下表现良好,但当图像存在噪声时,结果可能会受到噪声的干扰。
2. Prewitt 算子Prewitt 算子也是一种梯度运算的边缘检测算法。
与 Sobel 算子类似,Prewitt 算子也可以计算图像的梯度来检测边缘。
与 Sobel 算子不同的是,Prewitt 算子采用了不同的权重分配,可以更好地检测出图像中的水平和垂直边缘。
3. Roberts 算子Roberts 算子是一种基于差分运算的边缘检测算法。
它通过计算图像中像素点的差异来检测边缘。
Roberts 算子简单直观,并且对噪声不敏感,但它对图像的边缘宽度有一定的限制,可能会造成边缘断裂的情况。
4. Canny 算子Canny 算子是一种综合性边缘检测算法,被广泛应用于图像处理领域。
Canny 算子通过多个步骤进行边缘检测,包括高斯滤波、计算图像梯度、非极大值抑制和双阈值处理。
Canny 算子能够有效地检测图像中的边缘,并具有较好的鲁棒性和准确性。
5. Laplacian 算子Laplacian 算子是一种基于二阶微分的边缘检测算法。
它通过计算图像的二阶导数来检测边缘。
Laplacian 算子可以有效地检测出图像中的变化率最大的位置,适合用于检测曲线和角点等特征。
在比较这些边缘检测算法时,我们可以从以下几个方面进行考察:1. 检测准确性:算法是否能够准确地检测出图像中的边缘,且边缘位置和形状是否与真实边缘一致。
2. 鲁棒性:算法对图像噪声的敏感程度。
在现实应用中,图像会受到不同程度的噪声干扰,算法能否在噪声环境下依然有效检测边缘。
图像边缘检测的方法图像边缘检测是在计算机视觉领域中一项重要的任务,它可以用来提取图像中物体的轮廓或边界信息。
常用的图像边缘检测方法包括基于梯度的方法、基于边缘模型的方法和基于机器学习的方法。
1. 基于梯度的方法基于梯度的方法通过计算图像中灰度的梯度来检测图像的边缘。
常用的基于梯度的方法包括Sobel算子、Prewitt算子和Canny算子。
(1)Sobel算子:Sobel算子是一种常用的边缘检测算子,它通过在图像中滑动一个3x3的卷积核来计算图像灰度的梯度。
它分别计算水平和垂直方向上的梯度,并将两个方向上的梯度相加得到最终的边缘强度。
(2)Prewitt算子:Prewitt算子与Sobel算子类似,也是通过计算图像灰度的水平和垂直方向上的梯度来检测边缘。
不同之处在于Prewitt算子使用了不同的卷积核,其效果也有所差异。
(3)Canny算子:Canny算子是一种边缘检测算法,它通过多个步骤来获得较为准确的边缘结果。
首先,它使用高斯滤波器对图像进行平滑处理,然后计算图像灰度梯度的幅值和方向。
接着,通过非极大值抑制来细化边缘。
最后,使用双阈值处理来检测和连接真正的边缘。
2. 基于边缘模型的方法基于边缘模型的方法是利用边缘在图像中的几何特征来进行检测。
常用的基于边缘模型的方法包括Hough变换和边缘跟踪算法。
(1)Hough变换:Hough变换是一种广泛应用于边缘检测的方法,它可以将图像中的边缘表示为参数空间中的曲线或直线。
通过在参数空间中寻找曲线或直线的交点,可以得到图像中的边缘。
(2)边缘跟踪算法:边缘跟踪算法是一种基于像素领域关系的边缘检测方法。
它首先选择一个起始点作为边缘点,然后根据一定的规则选择下一个与当前点相邻的点作为新的边缘点,并将其加入到边缘集合中。
通过不断跟踪边缘点,可以得到完整的边缘。
3. 基于机器学习的方法基于机器学习的方法是近年来较为流行的一种图像边缘检测方法。
它利用大量的已标注的训练数据来训练模型,然后使用训练好的模型对新的图像进行边缘检测。
几种常用边缘检测算法的比较边缘检测是在数字图像上寻找图像亮度变化的过程,它对于图像处理和计算机视觉任务非常重要。
常见的边缘检测算法有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算法。
另外,为了获得更好的边缘检测结果,通常需要进行适当的预处理,如灰度化、滤波和阈值处理等。
最后,对于不同的应用场景,可能需要使用不同的算法或算法组合来满足特定需求。
常用的检测算子有:(1)微分算子(2)拉普拉斯高斯算子(3)canny算子微分算子Sobel算子, Robert算子,prewitt算子比较Sobel算子是滤波算子的形式来提取边缘。
X,Y方向各用一个模板,两个模板组合起来构成1个梯度算子。
X方向模板对垂直边缘影响最大,Y方向模板对水平边缘影响最大。
Robert算子是一种梯度算子,它用交叉的差分表示梯度,是一种利用局部差分算子寻找边缘的算子,对具有陡峭的低噪声的图像效果最好。
prewitt算子是加权平均算子,对噪声有抑制作用,但是像素平均相当于对图像进行地同滤波,所以prewitt算子对边缘的定位不如robert算子。
源程序:i=imread('tanke.jpg');i2=im2double(i);ihd=rgb2gray(i2);[thr,sorh,keepapp]=ddencmp('den','wv',ihd);ixc=wdencmp('gbl',ihd,'sym4',2,thr,sorh,keepapp);figure,imshow(ixc),title('消噪后图像');k2=medfilt2(ixc,[7 7]);figure,imshow(k2),title('中值滤波');isuo=imresize(k2,0.25,'bicubic');%sobert、robert和prewitt算子检测图像边缘esobel=edge(isuo,'sobel');erob=edge(isuo,'roberts');eprew=edge(isuo,'prewitt');subplot(2,2,1);imshow(isuo);title('前期处理图像');subplot(2,2,2);imshow(esobel);title('sobel算子提取');subplot(2,2,3);imshow(erob);title('roberts算子提取');subplot(2,2,4);imshow(eprew);title('prewitt 算子提取'); 程序运行结果:拉普拉斯高斯算子拉普拉斯高斯算子是一种二阶导数算子,将在边缘处产生一个陡峭的零交叉。
图像处理中的边缘检测算法分析与比较边缘检测是图像处理领域中的一项重要任务,它主要用于识别图像中物体的轮廓以及边缘的提取。
本文将从边缘检测的基本原理出发,分析和比较几种常见的边缘检测算法,包括Sobel算子、Prewitt算子、Canny算子和Laplacian算子。
1. Sobel算子Sobel算子是一种基于灰度差分的边缘检测算法,它通过对灰度图像进行卷积运算来计算图像的一阶梯度,进而得到边缘信息。
Sobel算子分别使用水平和垂直两个3×3的卷积核进行运算,然后将两个方向上的梯度幅值相加得到最终的梯度幅值图像。
Sobel算子简单快速,适用于实时性要求较高的应用场景,但对于一些复杂的边缘情况无法准确检测。
2. Prewitt算子Prewitt算子与Sobel算子类似,也是基于灰度差分的边缘检测算法。
不同之处在于Prewitt算子使用了更为简单的卷积核,即[-1,0,1]和[-1,0,1]的转置,分别对图像进行水平和垂直方向上的卷积运算。
Prewitt算子的计算速度较快,但对于边缘的定位相对不够精确。
3. Canny算子Canny算子是一种经典的边缘检测算法,通过多个步骤的处理来提取图像的边缘。
首先,Canny算子利用高斯滤波器对图像进行平滑处理,以减少噪声对边缘检测的影响。
然后,计算图像的梯度幅值和方向,并利用非极大值抑制来细化边缘。
最后,通过设置高低阈值来进行边缘的二值化,将边缘与其他噪声区分开。
Canny算法具有较高的边缘定位准确性和低的误检率,但计算量较大,适用于复杂场景下的边缘检测。
4. Laplacian算子Laplacian算子是一种基于二阶导数的边缘检测算法,它通过计算图像的拉普拉斯算子来提取边缘。
Laplacian算子可通过二阶Sobel算子的变换来实现,即对图像进行两次卷积运算后求和。
该算法对边缘的定位比较敏感,但容易受到噪声的影响,并且会导致边缘加倍。
综上所述,不同的边缘检测算法在边缘定位准确性、计算速度和抗噪能力等方面存在差异。
图像处理中的边缘检测算法技巧分享边缘检测是图像处理中的重要步骤之一,它能够有效地提取图像中物体的边缘信息。
在实际应用中,边缘检测算法的准确性和效率对图像处理的结果至关重要。
本文将分享一些图像处理中常用的边缘检测算法技巧,帮助读者了解边缘检测的原理和实际应用。
1. Sobel 算子Sobel 算子是最常用的边缘检测算法之一。
它通过计算图像中每个像素点的梯度,找出图像中的边界。
Sobel 算子基于图像的灰度梯度来识别边缘,它对图像进行卷积操作,通过对图像中每个像素点的邻域像素进行加权求和来计算梯度。
2. Canny 边缘检测算法Canny 算法是一种经典的边缘检测算法,被广泛应用于图像处理领域。
Canny 算法通过多个步骤来提取图像的边缘特征。
首先,它使用高斯滤波器平滑图像,然后计算图像的梯度。
接着,它使用非极大值抑制方法来细化边缘,最后使用双阈值判定法来确定边缘。
3. Laplacian 算子Laplacian 算子是一种基于二阶导数的边缘检测算法。
它通过计算图像中每个像素点的二阶导数来检测边缘。
Laplacian 算子能够检测出图像中的高频变化部分,从而找出图像中的边缘。
4. Roberts 算子Roberts 算子是另一种基于二阶导数的边缘检测算法。
它通过计算图像中每个像素点的一阶导数来检测边缘。
Roberts 算子使用两个模板分别进行水平和垂直方向上的卷积运算,然后通过计算两个方向上的梯度大小来确定边缘。
5. 基于深度学习的边缘检测算法近年来,深度学习在图像处理领域的应用越来越广泛。
许多研究者使用卷积神经网络(CNN)来训练边缘检测模型。
这些模型通过学习大量图像数据,能够准确地识别图像中的边界。
深度学习的边缘检测算法在准确性和鲁棒性上都表现出色,但需要大量的训练数据和计算资源。
6. 非极大值抑制方法在边缘检测中,非极大值抑制方法常用于细化边缘,减少边缘像素的数量。
非极大值抑制方法通过在图像梯度方向上比较像素的梯度值来确定是否为边缘。
图像处理中的边缘检测算法综述与比较引言:图像边缘检测是计算机视觉和图像处理领域中的重要任务之一。
边缘检测有助于提取图像中的重要信息,用于分割、物体识别、目标跟踪等应用。
随着计算机技术的不断发展,边缘检测算法也得到了不断改进和发展。
本文将综述和比较常用的图像处理中的边缘检测算法,包括传统的算子方法和基于深度学习的方法。
一、传统的边缘检测算子方法1.1 Sobel算子Sobel算子是一种基于梯度的边缘检测算子,通过计算图像灰度值在水平和垂直方向上的一阶导数来检测边缘。
Sobel算子简单易于实现,但容易受到图像噪声的干扰,且对边缘方向敏感性较差。
1.2 Prewitt算子Prewitt算子与Sobel算子类似,同样是一种基于梯度的边缘检测算子。
Prewitt算子与Sobel算子在计算上有所区别,但其效果相对较差,对噪声敏感。
1.3 Roberts算子Roberts算子是一种基于两个2x2的模板的边缘检测算子,通过计算图像中每个像素与其对角线相邻像素的差值来检测边缘。
Roberts算子简单但容易产生较多的噪声响应。
1.4 Canny边缘检测算法Canny算法是一种经典的边缘检测算法,具有较好的性能和鲁棒性。
相比于其他算子方法,Canny算法首先对图像进行高斯滤波,然后计算图像梯度和梯度方向,接着通过非极大值抑制和双阈值处理来提取边缘。
二、基于深度学习的边缘检测方法2.1 基于全卷积神经网络(FCN)的方法全卷积神经网络是一种能够接受任意尺寸输入并输出相同尺寸的神经网络。
基于FCN的边缘检测方法将图像视为一个整体,通过多层卷积和上采样操作来提取边缘特征并生成边缘图像。
2.2 基于U-Net的方法U-Net是一种使用对称的编码器-解码器结构进行图像分割的神经网络。
基于U-Net的边缘检测方法将图像分割任务转化为像素级分类问题,并通过使用跳跃连接来融合浅层和深层特征,提高了边缘检测的准确性。
2.3 基于深度Lab颜色空间的方法Lab颜色空间是一种将颜色分离和亮度信息分离的颜色空间,具有较好的色彩分辨率。
图像处理中的边缘检测方法与性能评估边缘检测是图像处理和计算机视觉领域中的一项重要任务。
它主要用于提取图像中物体和背景之间的边界信息,便于后续的图像分割、目标识别和物体测量等应用。
在图像处理领域,边缘被定义为亮度、颜色或纹理等属性上的不连续性。
为了实现准确且可靠的边缘检测,许多不同的方法和算法被提出并广泛应用。
在本文中,我们将介绍几种常见的边缘检测方法,并对它们的性能进行评估。
1. Roberts 算子Roberts 算子是一种基于差分的边缘检测算法,它通过对图像进行水平和垂直方向的差分运算来检测边缘。
这种算法简单且易于实现,但对噪声比较敏感。
2. Sobel 算子Sobel 算子是一种常用的基于梯度的边缘检测算法。
它通过在图像上进行卷积运算,计算像素点的梯度幅值和方向,从而检测边缘。
Sobel 算子可以有效地消除噪声,并在边缘方向上提供更好的响应。
3. Canny 边缘检测Canny 边缘检测是一种经典的边缘检测算法。
它包括多个步骤,包括高斯滤波、计算梯度幅值和方向、非极大值抑制和双阈值处理。
Canny 边缘检测算法具有较高的准确性和鲁棒性,广泛应用于实际图像处理中。
除了以上提到的方法外,还存在许多其他的边缘检测算法,如拉普拉斯算子、积分图像算法等。
这些算法各有优缺点,选择合适的算法需要根据具体应用情况和要求来确定。
对于边缘检测方法的性能评估,通常使用以下几个指标来衡量:1. 精确度精确度是评估边缘检测算法结果与真实边缘之间的差异的指标。
可以通过计算检测结果与真实边缘的重叠率或者平均绝对误差来评估。
2. 召回率召回率是评估边缘检测算法是否能够正确检测到真实边缘的指标。
可以通过计算检测结果中的边缘与真实边缘的重叠率或者正确检测到的边缘像素数量与真实边缘像素数量的比值来评估。
3. 噪声鲁棒性噪声鲁棒性是评估边缘检测算法对图像噪声的抗干扰能力的指标。
可以通过在含有不同噪声水平的图像上进行测试,并比较检测到的边缘结果与真实边缘的差异来评估。
图像处理技术中的边缘检测方法介绍边缘检测是图像处理领域中的一个重要任务,它在许多应用中扮演着关键的角色。
边缘是图像中颜色、亮度或纹理等变化的地方,通过检测图像中的边缘,我们可以提取出物体的轮廓信息,进行目标检测、图像分割、计算图像的梯度等。
本文将介绍图像处理中常用的边缘检测方法,包括基于梯度的方法和基于模板的方法。
1. 基于梯度的边缘检测方法基于梯度的边缘检测方法是最常用且经典的边缘检测方法之一。
其基本思想是通过计算图像的梯度来识别图像中的边缘。
常用的基于梯度的边缘检测算法有Sobel算子、Prewitt算子和Canny算子。
- Sobel算子:Sobel算子使用一个3x3的卷积核计算图像的水平和垂直梯度,然后根据计算得到的梯度值来确定边缘的位置和方向。
- Prewitt算子:Prewitt算子与Sobel算子类似,也是使用一个3x3的卷积核计算图像的梯度。
不同之处在于Prewitt算子使用了不同的卷积核来计算水平和垂直方向上的梯度。
- Canny算子:Canny算子是一种效果较好且广泛应用的边缘检测算法。
它通过多阶段的处理过程来提取图像中的边缘,包括高斯滤波、计算梯度幅值和方向、非最大抑制和双阈值处理等步骤。
2. 基于模板的边缘检测方法基于模板的边缘检测方法是另一类常见的边缘检测方法,它通过匹配图像中的模板来寻找边缘。
常用的基于模板的边缘检测算法有Laplacian算子和Canny算子的模板匹配方法。
- Laplacian算子:Laplacian算子使用一个4或8邻域模板对图像进行卷积操作,然后通过计算卷积结果的二阶导数来检测边缘。
Laplacian算子可以提供更为精确的边缘信息,但同时也更容易受到噪声的干扰。
- Canny算子的模板匹配方法:在Canny算子中,我们可以通过将导数变换为模板匹配的方式来进行边缘检测。
这种方法可以减少噪声对边缘检测结果的干扰,同时保留边缘的细节信息。
综上所述,图像处理技术中的边缘检测方法主要包括基于梯度的方法和基于模板的方法。
图像处理中的边缘检测算法与性能对比引言:在现代图像处理中,边缘检测算法是一项重要而又基础的研究课题。
边缘检测算法能够有效地提取图像中的边缘信息,帮助我们理解图像的结构、辨识物体以及进行目标识别等应用。
本文将对几种常见的边缘检测算法进行介绍,并对它们的性能进行对比分析,以了解不同算法在不同场景下的应用效果。
一、Sobel算子Sobel算子是一种基于局部像素点梯度的边缘检测算法。
它通过计算图像中每个像素点周围像素的灰度差异来获得边缘信息。
Sobel算子既可以在水平方向上检测边缘(Sobel-X),也可以在竖直方向上检测边缘(Sobel-Y)。
通过对Sobel梯度的两个分量进行组合,即可获得最终的边缘图像。
Sobel算子主要有以下优点:计算简单,运算速度快,适用于实时应用。
然而,Sobel算子对图像中边缘的方向性和精细度要求较高,在边缘方向变化的地方容易失真。
二、Canny算子Canny算子是一种经典的边缘检测算法,被广泛应用于图像处理领域。
相比于Sobel算子,Canny算子具有更高的灵敏度和更好的噪声抑制能力。
Canny算子主要包含四个步骤:噪声抑制、梯度计算、非极大值抑制和双阈值分割。
首先,对图像进行高斯滤波以减少噪声干扰;然后,计算图像的梯度幅值和梯度方向;接着,对梯度幅值进行非极大值抑制,只保留局部极大值点;最后,利用双阈值分割来确定最终的边缘。
Canny算子的优点在于准确地定位边缘、低噪声敏感性和较好的连接能力。
然而,Canny算子的计算复杂度较高,在一些对实时性要求较高的场景下可能不适用。
三、Laplacian算子Laplacian算子是一种基于图像的二阶导数运算的边缘检测算法。
Laplacian算子能够检测出图像中的局部极大和局部极小,从而确定边缘。
Laplacian算子的优点在于能够捕捉到更多边缘细节和纹理信息。
然而,Laplacian算子对噪声比较敏感,容易产生边缘断裂和误检测的问题。
数字图像处理
第三次作业
SpadesQ,
Sun Yat-sen University
2017/4/27
1.边缘检测
边缘一般是指图像在某一局部强度剧烈变化的区域。
强度变化一般有两种情况:
●阶跃变化
●屋顶变化
边缘检测的任务:
找到具有阶跃变化或者屋顶变化的像素点的集合。
边缘检测基本原理:
既然边缘是灰度变化最剧烈的位置,最直观的想法就是求微分。
对于第一种情况:一阶微分的峰值为边缘点,二阶微分的零点为边缘点。
对于第二种情况:一阶微分的零点为边缘点,二阶微分的峰值为边缘点。
2.matlab内置函数
分析:通过对Roberts,Sobel,Prewitt,Log和Canny进行MATLAB 仿真实验对比,结果表明,Sobel,Prewitt和Roberts算子的算法简单,但检测精度不高,Log和Canny算子的算法复杂,但检测精度较高。
在应用中应根据实
际情况选择不同的算子。
3.四种算子对比分析
3.1 Sobel算子
Sobel算子在边缘检测算子扩大了其模版,在边缘检测的同时尽量削弱了噪声。
其模版大小为3×3,其将方向差分运算与局部加权平均相结合来提取边缘。
在求取图像梯度之前,先进行加权平均,然后进行微分,加强了对噪声的一致。
Sobel 算子所对应的卷积模版为:
图像中的每个像素点和以上水平和垂直两个卷积算子做卷积运算后,再计算得到梯度幅值G ( x,y),然后选取适当的阈值τ,若G ( x,y)>τ,则(i ,j)为边缘点,否则,判断(i,j)为非边缘点。
由此得到一个二值图像{ g (i,j)},即边缘图像。
Sobel 算子在空间上比较容易实现,不但产生较好的边缘检测效果,同时,由于其引入了局部平均,使其受噪声的影响也较小。
若使用较大的邻域,抗噪性会更好,但也增加了计算量,并且得到的边缘比较粗。
在对精度要求不是很高的场合下,
3.2 Prewitt算子
同Sobel 算子相似,Prewitt 算子也是一种将方向的差分运算和局部平均相结合的方法,也是取水平和垂直两个卷积核来分别对图像中各个像素点做卷积运算,所不同的是,Sobel 算子是先做加权平均然后再微分,Prewitt 算子是先平均后求微分,其对应的卷积模版为:
图像中的每个像素点和以上水平和垂直两个卷积算子做卷积运算后,再计算得到梯度幅值G ( x,y),然后选取适当的阈值τ,若G ( x,y)>τ,则(i ,j)为边缘点,否则,判断(i ,j)为非边缘点。
由此得到一个二值图像{g (i,j)},即边缘图像。
3.3 Roberts算子
Reboerts算子是一种利用局部差分来寻找边缘的算子,Roberts 梯度算子所采用的是对角方向相邻两像素值之差,算子形式如下:
Gx = f(i,j) - f(i-1,j-1)
Gy = f(i-1,j) - f(i,j-1)
|G(x,y)| = sprt(Gx^2-Gy^2)
Roberts梯度算子对应的卷积模版为:
用以上两个卷积算子与图像运算后,可求出图像的梯度幅值G ( x,y),然后选择适当的阈值τ ,若G (x,y)>τ,则(i,j)为边缘点,否则,判断(i,j)为非边缘点。
由此得到一个二值图像{g(i,j)},即边缘图像。
Roberts 算子采用的是用对角线方向上相邻两像素的差近似梯度幅值来检测边缘,它的定位精度高,对于水平和垂直方向的边缘,检测效果较好,而对于有一定倾角的斜边缘,检测效果则不理想,存在着许多的漏检。
另外,在含噪声的情况下,Roberts 算子不能有效的抑制噪声,容易产生一些伪边缘。
因此,该算子适合于对低噪声且具有陡峭边缘的图
像提取边缘。
3.4 LOG算子
LOG算子基本思想是:先在一定的范围内做平滑滤波,然后再利用差分算子来检测在相应尺度上的边缘。
滤波器的选择要考虑以下两个因素:其一是滤波器在空间上要求平稳,即要求空间位置误差Δx要小;其二是平滑滤波器本身要求是带通滤波器,并且在有限的带通内是平稳的,即要求频域误差Δω要小。
根据信号处理中的测不准原理,Δx和Δω是相互矛盾的,而达到测不准下限的滤波器就是高斯滤波器。
Marr 和Hildreth 提出的这种差分算子是各向同性的拉普拉斯二阶差分算子。
该边缘检测器的基本特征是:
(1)所用的平滑滤波器是高斯滤波器
(2)增强步骤采用的是二阶导数(即二维拉普拉斯函数)
(3)边缘检测的判据是二阶导数过零点并且对应一阶导数的极大值
该方法的特点是先用高斯滤波器与图像进行卷积,既平滑了图像又降低了噪声,使孤立的噪声点和较小的结构组织被滤除。
然而由于对图像的平滑会导致边缘的延展,因此只考虑那些具有局部梯度极大值的点作为边缘点,这可以用二阶导数的零交叉来实现。
拉普拉斯函数可用作二维二阶导数的近似,因为它是一种标量算子。
为了避免检测出非显著的边缘,所以应该选择一阶导数大于某一阈值的零
交叉点来作为边缘点。
实际应用中,常用的LOG算子的模版为:
高斯平滑运算不但可以滤除噪声,还会导致图像中的边缘和其它尖锐不连续部分模糊,而模糊程度取决于空间尺度因子σ的大小。
σ越大,高斯滤波对噪声的滤除效果越好,但同时也会丢失重要的边缘信息,影响到边缘检测器的性能。
如果σ较小,又可能导致平滑作用不完全而留有较多的噪声。
因此在实际应用中,要根据情况选择适当的σ。