边缘

在强度图像中查找边缘

描述

BW.=边缘(一世返回二进制图像。BW.包含1S函数在这里查找输入图像中的边一世0.其他地方。默认情况下,边缘采用Sobel边缘检测方法。

您可以选择找到边缘使用GPU(需要并行计算工具箱™)。

例子

BW.=边缘(一世方法检测图像中的边缘一世采用的边缘检测算法方法

BW.=边缘(一世方法临界点返回所有强度的边缘临界点

BW.=边缘(一世方法临界点方向指定要检测的边的方向。Sobel和ProWitt方法可以检测垂直方向,水平方向或两者的边缘。Roberts方法可以从水平,135°或两者从水平,135°处的角度检测边缘。此语法仅在何时有效方法“索贝尔”'Prowitt',或'罗伯茨'

BW.=边缘(___,'没宁')跳过边缘变薄阶段,可以提高性能。此语法仅在何时有效方法“索贝尔”'Prowitt',或'罗伯茨'

BW.=边缘(一世方法临界点Sigma.指定Sigma.,过滤器的标准偏差。此语法仅在何时有效方法'日志'“精明”

BW.=边缘(一世方法临界点H使用该检测边缘“zerocross”方法和过滤器,H,你指定的。此语法仅在何时有效方法“zerocross”

[BW.threshOut] =边缘(___还返回阈值。

[BW.threshOutGV.gh] =边缘(___也返回方向梯度大小。对于Sobel和Prewitt方法,GV.gh对应于垂直和水平梯度。对于Roberts的方法,GV.gh对应于水平45°和135°的角度的梯度。此语法仅在何时有效方法“索贝尔”'Prowitt',或'罗伯茨'

例子

全部收缩

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

我= imread ('circuit.tif');imshow(i)

使用Canny方法查找边缘。

bw1 =边缘(我,“精明”);

使用prowitt方法查找边缘。

bw2 =边缘(我,'Prowitt');

并排显示两个结果。

imshowpair (BW1 BW2,'剪辑'

输入参数

全部收缩

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

'近似扫描'方法、数据类型的图像必须归一化到范围[0,1]。如果一世在范围之外的值[0,1],那么您可以使用rescale.函数以重新划分到预期范围。

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

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

方法 描述
“索贝尔”

在图像梯度的那些点找到边缘一世是最大的,使用Sobel近似的导数。

'Prowitt'

在梯度的那些点找到边缘一世最大限度地,使用prowitt近似到衍生物。

'罗伯茨' 在梯度的那些点找到边缘一世是最大的,使用导数的Roberts近似。
'日志' 通过滤波后的零交叉查找边缘一世用拉普拉斯高斯(LoG)滤波器。
“zerocross” 通过滤波后的零交叉查找边缘一世使用指定的过滤器,H
“精明”

通过寻找梯度的局部极大值来寻找边一世.这边缘功能使用高斯滤波器的衍生来计算梯度。该方法使用两个阈值来检测强度和弱边缘,包括输出中的弱边缘,如果它们连接到强边。通过使用两个阈值,Canny方法不太可能被噪声欺骗的方法,并且更有可能检测真正的弱边缘。

'近似扫描'

使用近似版本的Canny Edge检测算法查找边缘,该算法以牺牲更少的精确检测为代价提供更快的执行时间。浮点图像预计将被标准化为范围[0,1]。

灵敏度阈值,指定为任何数字标量方法或者是一个2元素向量“精明”'近似扫描'方法。边缘忽略所有不强的边缘临界点.有关该参数的详细信息,请参见算法

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

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

  • “精明”'近似扫描'方法使用两个阈值。边缘忽略边缘强度低于较低阈值的所有边缘,并保留具有高于更高阈值的边缘强度的所有边缘。您可以指定临界点作为这种形式的2元素向量[低高]低的范围内的值[0 1]。您也可以指定临界点作为一个数字标量边缘分配给更高的阈值。在这种情况下,边缘用途阈值* 0.4为较低阈值。

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

要检测的边的方向,指定为“水平”“垂直”,或'两个都'.这方向参数仅当方法“索贝尔”'Prowitt',或'罗伯茨'

笔记

如果你选择罗伯茨方法,那么“水平”方向实际上检测从水平的135°角度检测边缘,“垂直”方向检测从水平的45°角度检测边缘。

数据类型:char|字符串

过滤器,指定为数字矩阵。这H参数得到支持金宝app“zerocross”仅限方法。

数据类型:

滤波器的标准偏差,指定为数字标量。这Sigma.参数得到支持金宝app“精明”'日志'唯一的方法。

方法 描述
“精明”

标量值指定高斯滤波器的标准偏差。默认值是SQRT(2)边缘基于的自动选择过滤器的大小Sigma.

'日志'(高斯拉普拉斯算子)

指定高斯滤波器拉普拉斯算子标准差的标量值。默认值是2.过滤器的大小是N-经过-N,在那里n = CEIL(SIGMA * 3)* 2 + 1

数据类型:

输出参数

全部收缩

输出二进制图像,作为大小相同的逻辑数组返回一世, 和1S函数在其中找到边一世0.其他地方。

计算中使用的阈值,作为2元素向量返回“精明”方法,空的矢量([]) 为了'近似扫描'方法,或用于所有其他边缘检测方法的数值标量。

垂直梯度,作为大小相同的数字数组返回一世

笔记

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

水平渐变,返回与相同尺寸的数字数组一样一世

笔记

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

算法

  • 对于梯度幅度边缘检测方法(Sobel, Prewitt, Roberts),边缘用途临界点阈值计算计算的梯度幅度。

  • 对于零交法,包括高斯拉普拉斯法,边缘用途临界点作为零点的阈值。换句话说,跨越零的大跳跃是边缘,而小跳则不是。

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

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

兼容性的考虑

全部展开

行为在R2011a中改变

参考

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

[2] LIM,JAE S.,二维信号和图像处理,Englewood Cliffs,NJ,Prentice Hall,1990,PP。478-488。

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

扩展功能

之前介绍过的R2006a