主要内容

边缘

在二维灰度图像中寻找边缘

描述

BW=边缘(返回二值图像BW包含1S,函数在灰度或二值图像中寻找边缘而且0其他地方。默认情况下,边缘采用Sobel边缘检测方法。

提示

若要在3d灰度或二值图像中查找边缘,请使用edge3函数。

例子

BW=边缘(方法检测图像中的边缘所指定的边缘检测算法方法

BW=边缘(方法阈值返回所有强于的边阈值

BW=边缘(方法阈值方向指定要检测的边的方向。Sobel和Prewitt方法可以检测垂直方向、水平方向或两者的边缘。罗伯茨方法可以检测与水平角度为45°的边缘,与水平角度为135°的边缘,或两者同时检测。此语法仅在方法“索贝尔”“普瑞维特”,或“罗伯特”

BW=边缘(___“几乎”)跳过边缘细化阶段,这可以提高性能。此语法仅在方法“索贝尔”“普瑞维特”,或“罗伯特”

BW=边缘(方法阈值σ指定σ,为滤波器的标准差。此语法仅在方法“日志”“精明”

BW=边缘(方法阈值h方法检测边缘。“zerocross”方法与过滤器,h,你指定的。此语法仅在方法“zerocross”

BWthreshOut) =边缘(___也返回阈值。

BWthreshOutGx孔侑) =边缘(___也返回方向梯度。对于Sobel和Prewitt方法,Gx而且孔侑分别对应于水平梯度和垂直梯度。对于罗伯茨的方法,Gx而且孔侑分别对应与水平夹角为135°和45°的梯度。此语法仅在方法“索贝尔”“普瑞维特”,或“罗伯特”

例子

全部折叠

将灰度图像读入工作空间并显示它。

我= imread (“circuit.tif”);imshow(我)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

使用Canny方法找到边缘。

BW1 =边缘(我“精明”);

使用Prewitt方法寻找边缘。

BW2 =边缘(我“普瑞维特”);

并排显示两个结果。

imshowpair (BW1 BW2,“蒙太奇”

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

输入参数

全部折叠

输入图像,指定为二维灰度图像或二维二值图像。

“approxcanny”方法,数据类型的图像必须归一化到范围[0,1]。如果值在[0,1]范围之外,那么可以使用重新调节函数将值缩放到预期范围。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

边缘检测方法,指定为以下之一。

方法 描述
“索贝尔”

在图像的梯度处找到边缘是最大值,用导数的索贝尔近似。

“普瑞维特”

找到这些点上的边是最大值,用导数的Prewitt近似。

“罗伯特” 找到这些点上的边是最大值,用导数的罗伯茨近似。
“日志” 通过寻找滤波后的零交叉点来寻找边缘用拉普拉斯高斯(LoG)滤波器。
“zerocross” 通过寻找滤波后的零交叉点来寻找边缘通过指定的过滤器,h
“精明”

的梯度的局部极大值来寻找边缘.的边缘函数使用高斯滤波器的导数计算梯度。该方法使用两个阈值来检测强边缘和弱边缘,如果它们连接到强边缘,则包括输出中的弱边缘。通过使用两个阈值,Canny方法比其他方法更不容易被噪声欺骗,更容易检测到真实的弱边缘。

“approxcanny”

使用Canny边缘检测算法的近似版本查找边缘,该算法提供了更快的执行时间,但代价是不太精确的检测。浮点图像被期望归一化到范围[0,1]。

灵敏度阈值,指定为任意的数值标量方法的2元向量“精明”而且“approxcanny”方法。边缘忽略所有强度小于的边阈值.有关该参数的更多信息,请参见算法

  • 如果不指定阈值,或者如果指定空数组([]),然后边缘自动选择一个或多个值。

  • “日志”而且“zerocross”方法,如果指定阈值0,则输出图像具有闭合轮廓,因为它包含了输入图像中所有的过零点。

  • “精明”而且“approxcanny”方法使用两个阈值。边缘忽略所有边缘强度低于较低阈值的边缘,并保留所有边缘强度高于较高阈值的边缘。您可以指定阈值作为一个2元向量的形式(低高)而且取值范围为[0,1]。您还可以指定阈值作为一个数值标量边缘分配给较高的阈值。在这种情况下,边缘使用阈值* 0.4作为低阈值。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

要检测的边的方向,指定为“水平”“垂直”,或“两个”.的方向参数仅在方法“索贝尔”“普瑞维特”,或“罗伯特”

请注意

如果你选择罗伯茨方法,那么“水平”方向检测与水平方向成135°角的边缘,而“垂直”方向检测与水平成45°角的边缘。

数据类型:字符|字符串

过滤器,指定为数值矩阵。的h参数支持“zerocross”唯一的方法。

数据类型:

过滤器的标准偏差,指定为数值标量。的σ参数支持“精明”而且“日志”唯一的方法。

方法 描述
“精明”

指定高斯滤波器标准差的标量值。默认值是√6 (2)边缘自动选择过滤器的大小,根据σ

“日志”(高斯拉普拉斯算子)

指定高斯滤波器拉普拉斯函数标准差的标量值。默认值是2.过滤器的尺寸为n——- - - - - -n,在那里n =装天花板(σ* 3)* 2 + 1

数据类型:

输出参数

全部折叠

输出二值图像,作为大小相同的逻辑数组返回,1S是函数找到边的地方而且0其他地方。

在计算中使用的计算阈值,作为2元素向量返回“精明”方法,一个空向量([])“approxcanny”方法,或用于所有其他边缘检测方法的数值标量。

水平渐变,作为大小相同的数值数组返回.较大的水平梯度震级表明垂直边缘较强。

请注意

如果你选择罗伯茨方法,然后边缘返回与水平角度为135°时计算的梯度。

垂直渐变,作为大小相同的数值数组返回.较大的垂直梯度震级表明水平边缘较强。

请注意

如果你选择罗伯茨方法,然后边缘返回与水平角度为45°时计算的梯度。

算法

  • 对于梯度-幅度边缘检测方法(Sobel, Prewitt和Roberts),边缘使用阈值以阈值计算的梯度幅度。

  • 对于过零法,包括拉普拉斯高斯法,边缘使用阈值作为过零的阈值。换句话说,跨越零的大跳跃是一条边,而小跳跃不是。

  • Canny方法对梯度应用两个阈值:低边缘灵敏度的高阈值和高边缘灵敏度的低阈值。边缘从低灵敏度结果开始,然后将其增长,以包括来自高灵敏度结果的连接边缘像素。这有助于填补检测到的边缘的空白。

  • 在所有情况下,边缘根据输入数据启发式地选择默认阈值。改变阈值的最佳方法是运行边缘第一次,捕获计算的阈值作为第二个输出参数。然后,从计算的值开始边缘,将阈值调高以检测更少的边缘像素,或调低以检测更多的边缘像素。

参考文献

[1] Canny, John,“边缘检测的计算方法”,模式分析与机器智能汇刊,第6期,1986年,第679-698页。

[2]林载S;二维信号与图像处理,恩格尔伍德悬崖,新泽西州,普伦蒂斯厅,1990年,第478-488页。

詹姆斯·R·帕克,图像处理与计算机视觉算法,纽约,John Wiley & Sons, Inc., 1997,第23-29页。

扩展功能

版本历史

之前介绍过的R2006a

全部展开

Baidu
map