Sobel边缘检测算子
halcon边缘检测例子

halcon边缘检测例子Halcon是一款功能强大的机器视觉库,其边缘检测功能可以帮助我们在图像中找出物体的边缘,从而实现目标检测和分割。
下面将以Halcon边缘检测例子为题,列举一些常用的边缘检测方法和技巧。
一、Sobel算子边缘检测Sobel算子是一种常用的边缘检测算法,它通过计算图像的一阶导数来寻找边缘。
Halcon中可以使用函数SobelA来实现Sobel算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
二、Canny算子边缘检测Canny算子是一种经典的边缘检测算法,它结合了高斯滤波、梯度计算和非最大值抑制等步骤,可以得到更准确的边缘检测结果。
Halcon中可以使用函数EdgesSubPix来实现Canny算子的边缘检测,可以设置不同的参数来调整检测结果的质量和灵敏度。
三、Laplacian算子边缘检测Laplacian算子是一种基于二阶导数的边缘检测算法,它可以检测出图像中的高频变化,从而找到边缘。
Halcon中可以使用函数Laplace来实现Laplacian算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
四、Roberts算子边缘检测Roberts算子是一种简单但有效的边缘检测算法,它通过计算图像中像素点的灰度差来判断是否存在边缘。
Halcon中可以使用函数RobertsA来实现Roberts算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
五、Prewitt算子边缘检测Prewitt算子是一种基于一阶导数的边缘检测算法,它通过计算图像中像素点的灰度变化来寻找边缘。
Halcon中可以使用函数PrewittA来实现Prewitt算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
六、Scharr算子边缘检测Scharr算子是一种改进的Sobel算子,它可以更好地抵抗噪声干扰,提供更准确的边缘检测结果。
Halcon中可以使用函数ScharrA来实现Scharr算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
图像处理中的边缘检测算法分析与优化

图像处理中的边缘检测算法分析与优化随着数字图像处理技术的不断发展,边缘检测在计算机视觉、模式识别和图像分割等领域中扮演着重要的角色。
边缘是图像中灰度变化较大的区域,通过检测边缘,我们可以提取图像的形状和结构信息,从而实现图像分析和理解。
本文将对常用的图像处理边缘检测算法进行分析,并探讨优化策略。
一、边缘检测算法概述1.1 Sobel算法Sobel算法是一种基于梯度的边缘检测算法,它通过计算图像梯度的大小和方向来确定边缘位置。
Sobel算法具有计算简单、鲁棒性较高的优点,但对噪声比较敏感,在图像边缘不够明显或存在噪声时容易引入误检。
1.2 Canny算法Canny算法是一种经典的边缘检测算法,它通过多个步骤来实现高效的边缘检测。
首先,通过高斯滤波器对图像进行平滑处理,以减少噪声的影响。
然后,计算图像的梯度幅值和方向,并进行非极大值抑制,以精确地定位边缘。
最后,通过滞后阈值法来进行边缘的连接和细化。
Canny算法具有良好的边缘定位能力和抗噪能力,在实际应用中被广泛使用。
1.3 Laplacian算子Laplacian算子是一种基于二阶导数的边缘检测算子,它通过计算图像的二阶导数来检测图像中的边缘。
Laplacian算子具有对灰度变化较大的边缘敏感的优点,但对噪声比较敏感,容易产生边缘断裂和误检。
为了提高Laplacian算子的效果,常常与高斯滤波器结合使用,以减少噪声的干扰。
二、边缘检测算法优化2.1 参数选择在边缘检测算法中,参数的选择对于最终的结果具有重要的影响。
例如,对于Canny算法来说,高斯滤波器的大小和标准差的选择直接影响到边缘的平滑程度和定位精度。
因此,在优化边缘检测算法时,需要根据具体的应用场景和图像特点选择合适的参数。
2.2 非极大值抑制非极大值抑制是Canny算法中的一种重要步骤,用于精确地定位边缘位置。
然而,在进行非极大值抑制时,会产生边缘断裂和不连续的问题。
为了解决这个问题,可以考虑使用像素邻域信息进行插值,从而减少边缘的断裂,并得到更连续的边缘。
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边缘检测算子

经典边缘检测算子比较一各种经典边缘检测算子原理简介图像的边缘对人的视觉具有重要的意义,一般而言,当人们看一个有边缘的物体时,首先感觉到的便是边缘。
灰度或结构等信息的突变处称为边缘。
边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。
需要指出的是,检测出的边缘并不等同于实际目标的真实边缘。
由于图像数据时二维的,而实际物体是三维的,从三维到二维的投影必然会造成信息的丢失,再加上成像过程中的光照不均和噪声等因素的影响,使得有边缘的地方不一定能被检测出来,而检测出的边缘也不一定代表实际边缘。
图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。
边缘上的这种变化可以用微分算子检测出来,通常用一阶或两阶导数来检测边缘,如下图所以。
不同的是一阶导数认为最大值对应边缘位置,而二阶导数则以过零点对应边缘位置。
(a )图像灰度变化(b )一阶导数(c )二阶导数基于一阶导数的边缘检测算子包括Roberts 算子、Sobel 算子、Prewitt 算子等,在算法实现过程中,通过22⨯(Roberts 算子)或者33⨯模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。
拉普拉斯边缘检测算子是基于二阶导数的边缘检测算子,该算子对噪声敏感。
一种改进方式是先对图像进行平滑处理,然后再应用二阶导数的边缘检测算子,其代表是LOG 算子。
前边介绍的边缘检测算子法是基于微分方法的,其依据是图像的边缘对应一阶导数的极大值点和二阶导数的过零点。
Canny 算子是另外一类边缘检测算子,它不是通过微分算子检测边缘,而是在满足一定约束条件下推导出的边缘检测最优化算子。
1 Roberts (罗伯特)边缘检测算子景物的边缘总是以图像中强度的突变形式出现的,所以景物边缘包含着大量的信息。
由于景物的边缘具有十分复杂的形态,因此,最常用的边缘检测方法是所谓的“梯度检测法”。
设(,)f x y 是图像灰度分布函数;(,)s x y 是图像边缘的梯度值;(,)x y ϕ是梯度的方向。
用sobel算子计算梯度例题

用sobel算子计算梯度例题Sobel算子是一种简单而常用的边缘检测算法,可以用于计算图像灰度值的一阶差分,从而得到图像领域的梯度。
Sobel算子基于离散卷积操作,对图像的每个像素点应用一个3x3的卷积核,计算其在x和y方向上的梯度,最终得到梯度幅值和方向。
下面是一个使用Sobel算子计算梯度的例题。
假设我们有一个灰度图像,如下所示:```23 44 56 34 1240 41 65 21 1719 32 43 71 2926 38 79 74 3653 31 68 25 47```我们首先需要定义两个Sobel卷积核,一个用于计算x方向上的梯度,另一个用于计算y方向上的梯度。
这两个卷积核如下所示:```Sx = [[-1, 0, 1],[-2, 0, 2],[-1, 0, 1]]Sy = [[-1, -2, -1],[ 0, 0, 0],[ 1, 2, 1]]```接下来,我们将这两个卷积核分别应用于原始图像,计算每个像素点在x和y方向上的梯度。
对于x方向上的梯度,我们通过将Sx卷积核与原始图像进行离散卷积操作,得到如下结果:```-34 -34 -77 -51 22-30 -24 -135 -50 3214 -9 -106 -17 4219 -41 -85 -59 1322 -37 -57 9 50```对于y方向上的梯度,我们通过将Sy卷积核与原始图像进行离散卷积操作,得到如下结果:```-95 -132 -9 37 -1225 82 -120 -57 -64-58 -56 -43 -7 2811 -6 36 35 -222 -7 41 42 5```接下来,我们可以使用计算得到的梯度值来得到梯度幅值。
梯度幅值可以简单地通过计算每个像素点在x和y方向上梯度值的模来得到。
```104 150 86 65 2252 102 144 72 5364 59 113 74 5029 43 95 84 1531 43 71 44 52```最后,我们还可以计算梯度方向,通过计算每个像素点在x和y方向上梯度值的反正切来得到。
边缘检测的原理

边缘检测的原理概述边缘检测是计算机视觉领域中一种常用的图像处理技术,用于检测图像中的边缘信息。
边缘是指图像中灰度级发生突变的区域,通常表示物体的轮廓或对象的边界。
边缘检测在很多图像处理应用中起着重要的作用,如图像分割、目标检测、图像增强等。
基本原理边缘检测的基本原理是利用像素点灰度值的变化来检测边缘。
在数字图像中,每个像素点都有一个灰度值,范围通常是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算子python代码实现

Sobel算子是一种常用的边缘检测算法,它利用卷积运算来寻找图像中的边缘。
以下是使用Python和NumPy库实现Sobel算子的简单示例代码:```pythonimport cv2import numpy as npfrom matplotlib import pyplot as plt# 读取图像image = cv2.imread('input_image.jpg', cv2.IMREAD_GRAYSCALE)# 使用Sobel算子进行边缘检测sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3)sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3)# 计算梯度幅值和方向gradient_magnitude = np.sqrt(sobel_x**2 + sobel_y**2)gradient_direction = np.arctan2(sobel_y, sobel_x)# 将梯度幅值映射到0-255范围gradient_magnitude_normalized = cv2.normalize(gradient_magnitude, None, 0, 255, cv2.NORM_MINMAX)# 显示原图和边缘检测结果plt.subplot(2, 2, 1), plt.imshow(image, cmap='gray')plt.title('Original Image'), plt.xticks([]), plt.yticks([])plt.subplot(2, 2, 2), plt.imshow(sobel_x, cmap='gray')plt.title('Sobel X'), plt.xticks([]), plt.yticks([])plt.subplot(2, 2, 3), plt.imshow(sobel_y, cmap='gray')plt.title('Sobel Y'), plt.xticks([]), plt.yticks([])plt.subplot(2, 2, 4), plt.imshow(gradient_magnitude_normalized, cmap='gray')plt.title('Gradient Magnitude'), plt.xticks([]), plt.yticks([])plt.show()```确保你已经安装了NumPy、OpenCV和Matplotlib库。
sobel检验原理

sobel检验原理
Sobel算子是一种图像边缘检测算法,使用它可以识别图像中的边缘信息,分为水平方向和垂直方向两个方向。
此算法的原理是将图像中的每个像素点与其邻域像素点按指定的权值进行加权求和,得到一个新的像素值作为该像素点的边缘强度。
然后,将水平方向和垂直方向的结果进行平方和再开方,即可得到该像素点的最终边缘强度。
具体的,以水平方向为例,对于一个像素点的水平方向边缘强度的计算公式如下:
Gx = P(x-1,y-1)*(-1) + P(x-1,y)*(-2) + P(x-1,y+1)*(-1) + P(x+1,y-1)*(1) + P(x+1,y)*(2) + P(x+1,y+1)*(1)
其中,P(x,y)表示图像中坐标为(x,y)的像素值。
Sobel算子使用了一组预先确定的权值,将该像素点的相邻6个像素点按照权值进行加权求和,从而得到像素点的水平边缘强度。
同理,垂直方向的边缘强度计算公式如下:
然后,将Gx和Gy的平方和进行开方,得到像素点的最终边缘强度:
G = sqrt(Gx^2 + Gy^2)
这样,我们就得到了该像素点的水平和垂直方向的边缘强度,并且将其平方和再开方得到了最终的边缘强度。
Sobel算子通常用于图像的前期处理,例如边界检测、目标检测等。
其优点在于计算简单,效率高,同时能够保留边缘的结构信息。
但是,它也有一定的缺点,例如对于图像噪声比较敏感,容易受到光照变化等因素的影响,误检率较高。
因此,在实际应用中必须针对具体的场景进行参数的调整和优化,才能得到比较好的结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S o b e l边缘检测算子-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN经典边缘检测算子比较一各种经典边缘检测算子原理简介图像的边缘对人的视觉具有重要的意义,一般而言,当人们看一个有边缘的物体时,首先感觉到的便是边缘。
灰度或结构等信息的突变处称为边缘。
边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。
需要指出的是,检测出的边缘并不等同于实际目标的真实边缘。
由于图像数据时二维的,而实际物体是三维的,从三维到二维的投影必然会造成信息的丢失,再加上成像过程中的光照不均和噪声等因素的影响,使得有边缘的地方不一定能被检测出来,而检测出的边缘也不一定代表实际边缘。
图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。
边缘上的这种变化可以用微分算子检测出来,通常用一阶或两阶导数来检测边缘,如下图所以。
不同的是一阶导数认为最大值对应边缘位置,而二阶导数则以过零点对应边缘位置。
(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 算子边缘检测的结果可以通过高斯函数标准偏差σ来进行调整。
即σ值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测的性能;σ值越小,又有可能平滑不完全而留有太多的噪声。