Main Content

bwperim

找出二值图像中对象的边界

说明

示例

BW2 = bwperim(BW) 返回一个二值图像,该图像仅包含输入图像 BW 中对象的边界像素。如果某像素非零并且与至少一个零值像素连通,则该像素是边界的一部分。

BW2 = bwperim(BW,conn) 还指定像素连通性 conn

不带输出参量的 bwperim(___) 在新图窗窗口中显示边界的二值图像。要使用此语法,BW 必须为二维二值图像。

示例

全部折叠

将二值图像读入工作区。

BW = imread('circles.png');

计算图像中对象的周长。

BW2 = bwperim(BW,8);

并排显示原始图像和周长。

imshowpair(BW,BW2,'montage')

此示例说明如何使用 bwperim 函数在二值图像中查找边界像素。

将二值图像读入工作区。

BW1 = imread('circbw.tif');

找出图像中对象的边界。

BW2 = bwperim(BW1);

并排显示原始图像和显示边界的图像。

montage({BW1,BW2},'BackgroundColor','blue','BorderSize',5)

输入参数

全部折叠

输入二值图像,指定为任意维度的数值或逻辑数组。对于数值输入,任何非零像素都被视为 1 (true)。

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

像素连通性,指定为下表中的值之一。对于二维图像,默认连通性是 4,对于三维图像,默认连通性是 6

意义

二维连通

4

如果像素的边缘相互接触,则这些像素具有连通性。如果两个相邻像素都为 on 并在水平或垂直方向上连通,则它们是同一对象的一部分。

Center pixel connected to four pixels

当前像素以灰色显示。

8

如果像素的边缘或角相互接触,则这些像素具有连通性。如果两个相邻像素都为 on 并在水平、垂直或对角线方向上连通,则它们是同一对象的一部分。

Center pixel connected to eight pixels

当前像素以灰色显示。

三维连通

6

如果像素的面接触,则这些像素具有连通性。如果两个相邻像素都为 on 并以如下方式连通,则它们是同一对象的一部分:

  • 在所列方向之一上连通:内、外、左、右、上、下

Center pixel connected to the faces of 6 pixels

当前像素是立方体的中心。

18

如果像素的面或边缘接触,则这些像素具有连通性。如果两个相邻像素都为 on 并以如下方式连通,则它们是同一对象的一部分:

  • 在所列方向之一上连通:内、外、左、右、上、下

  • 在两个方向的组合上连通,如右下或内上

Center pixel connected to the faces of 6 pixels and the edges of 12 pixels

当前像素是立方体的中心。

26

如果像素的面、边缘或角接触,则这些像素具有连通性。如果两个相邻像素都为 on 并以如下方式连通,则它们是同一对象的一部分:

  • 在所列方向之一上连通:内、外、左、右、上、下

  • 在两个方向的组合上连通,如右下或内上

  • 在三个方向的组合上连通,如内右上或内左下

Center pixel connected to the faces of 6 pixels, the edges of 12 pixels, and the corners of 8 pixels

当前像素是立方体的中心。

对于更高的维度,bwperim 使用默认值 conndef(ndims(BW),"minimal")

也可以通过指定由 01 组成的 3×3×...×3 矩阵,以更通用的方式来定义任意维度的连通性。值为 1 的元素定义相对于 conn 的中心元素的邻域位置。请注意,conn 必须关于其中心元素对称。有关详细信息,请参阅指定自定义连通性

数据类型: double | logical

输出参量

全部折叠

仅包含对象的边界像素的输出图像,以逻辑数组形式返回。

数据类型: logical

扩展功能

版本历史记录

在 R2006a 之前推出