主要内容

边缘

发现在二维灰度图像边缘

描述

BW=边缘()返回一个二进制图像BW包含1s函数发现边缘的灰度或二进制图像0其他地方。默认情况下,边缘使用Sobel边缘检测方法。

提示

在3 d找到边缘灰度或二进制图像,使用edge3函数。

例子

BW=边缘(,方法)边缘检测在图像使用指定的边缘检测算法方法

BW=边缘(,方法,阈值)返回所有比边缘阈值

BW=边缘(,方法,阈值,方向)指定的方向边缘检测。Sobel和普瑞维特方法可以检测边缘方向垂直,水平方向,或两者兼而有之。罗伯茨的方法可以检测边缘在45°水平角度,135°水平,或两者兼而有之。这个语法是有效的只有当方法“索贝尔”,“普瑞维特”,或“罗伯特”

BW=边缘(___“几乎”)跳过edge-thinning阶段,这可以提高性能。这个语法是有效的只有当方法“索贝尔”,“普瑞维特”,或“罗伯特”

BW=边缘(,方法,阈值,σ)指定σ过滤器的标准偏差。这个语法是有效的只有当方法“日志”“精明”

BW=边缘(,方法,阈值,h)检测到的边缘使用“zerocross”方法用一个过滤器,h,你指定。这个语法是有效的只有当方法“zerocross”

(BW,threshOut)=边缘(___)还返回阈值。

(BW,threshOut,Gx,孔侑)=边缘(___)还返回方向梯度。Sobel和普瑞维特的方法,Gx孔侑对应于水平和垂直梯度。罗伯茨的方法,Gx孔侑对应的梯度角度135°和45°逆时针水平,分别。这个语法是有效的只有当方法“索贝尔”,“普瑞维特”,或“罗伯特”

例子

全部折叠

读一个灰度图像到工作区中显示它。

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

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

查找边缘用精明的方法。

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

查找边缘使用普瑞维特的方法。

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

显示两个并排的结果。

imshowpair (BW1 BW2,“蒙太奇”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

输入参数

全部折叠

输入图像,指定为一个二维灰度图像或二维二进制图像。

“approxcanny”的方法,图像数据类型必须规范化区间[0,1]。如果有值在区间[0,1],那么您可以使用重新调节函数来重新价值预期的范围内。

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

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

方法 描述
“索贝尔”

发现在这些点边缘的梯度图像最大,使用Sobel近似导数。

“普瑞维特”

发现在这些点边缘的梯度最大,使用普瑞维特近似导数。

“罗伯特” 发现在这些点边缘的梯度罗伯茨是最大,使用近似导数。
“日志” 发现通过寻找零交叉边缘后过滤拉普拉斯算子的高斯滤波器(日志)。
“zerocross” 发现通过寻找零交叉边缘后过滤您指定的过滤器,h
“精明”

发现边缘通过寻找局部梯度的最大值。的边缘函数的导数计算梯度使用高斯滤波器。这种方法使用两个阈值检测强和弱边缘,包括输出的弱边缘连接到强大的边缘。通过使用两个阈值,精明的方法比其他方法更不可能被噪音,和更容易检测到真正的弱边缘。

“approxcanny”

发现边缘使用近似版本的精明的边缘检测算法,提供更快的执行时间为代价的精确检测。浮点数预计将归一化图像的范围[0,1]。

灵敏度阈值,指定为任何一个数字标量方法,或一个2-element向量“精明”“approxcanny”方法。边缘忽略所有边缘并不比阈值。这个参数的更多信息,请参阅算法

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

  • “日志”“zerocross”方法,如果你指定阈值0,然后输出图像已经关闭了轮廓,因为它包括所有输入图像的零交叉。

  • “精明”“approxcanny”方法使用两个阈值。边缘无视所有边缘边缘强度低于低阈值,并保存所有边缘和边缘强度超过阈值就越高。您可以指定阈值作为一个2-element向量的形式(低高)值在[0,1]。您还可以指定阈值作为一个数字标量,边缘分配到更高的门槛。在这种情况下,边缘使用阈值* 0.4较低的阈值。

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

方向的边缘检测,指定为“水平”,“垂直”,或“两个”。的方向参数时才有效方法“索贝尔”,“普瑞维特”,或“罗伯特”

请注意

如果你选择罗伯茨方法,那么“水平”实际检测边缘的一个角度135°方向逆时针水平,和“垂直”方向边缘检测在一个45°角逆时针水平。

数据类型:字符|字符串

过滤器,指定为一个数字矩阵。的h支持的论点金宝app“zerocross”唯一的方法。

数据类型:

指定的过滤器,标准差数值标量。的σ支持的论点金宝app“精明”“日志”唯一的方法。

方法 描述
“精明”

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

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

标量值指定了标准差的高斯滤波器的拉普拉斯算子。默认值是2。过滤器的大小n——- - - - - -n,在那里n =装天花板(σ* 3)* 2 + 1

数据类型:

输出参数

全部折叠

输出二进制图像,作为一个逻辑数组返回相同的大小,1s函数发现边缘的地方0其他地方。

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

水平梯度,作为数字数组返回相同的大小。一个大的水平梯度大小显示强大的垂直边缘。

请注意

如果你选择罗伯茨方法,然后边缘返回梯度计算在一个角度135°逆时针水平。

垂直梯度,作为数字数组返回相同的大小。大型垂直梯度大小表示强烈的水平边缘。

请注意

如果你选择罗伯茨方法,然后边缘返回梯度计算在一个45°角逆时针水平。

算法

  • 为gradient-magnitude边缘检测方法(索贝尔普瑞维特,罗伯茨),边缘使用阈值阈值计算梯度的大小。

  • 零交点的方法,包括高斯拉普拉斯算子,边缘使用阈值作为一个阈值的零交叉。换句话说,一个大型跳过零是一个优势,而一个小跳。

  • 精明的方法适用于两个梯度阈值:一个高门槛较低的边缘高灵敏度和低阈值边缘敏感。边缘始于低灵敏度的结果,然后生长它包括连接边缘像素的高灵敏度的结果。这有助于填补空白的检测边缘。

  • 在所有情况下,边缘选择默认阈值启发式的,这取决于输入数据。不同阈值的最好办法是运行边缘一次,捕捉计算阈值作为第二个输出参数。然后,从计算的价值边缘少,调整阈值更高的检测边缘像素,或降低检测更多的边缘像素。

引用

[1]精明的,约翰,”计算的边缘检测方法,IEEE模式分析与机器智能,PAMI-8卷,6号,1986年,页679 - 698。

[2]Lim, Jae年代。二维信号和图像处理恩格尔伍德悬崖,新泽西,普伦蒂斯霍尔,1990年,页478 - 488。

[3]帕克,詹姆斯·R。图像处理和计算机视觉算法,纽约约翰·威利& Sons Inc ., 1997, pp。。

扩展功能

版本历史

之前介绍过的R2006a

全部展开

行为改变R2011a