Main Content

bwareafilt

按大小从二值图像中提取对象

说明

示例

BW2 = bwareafilt(BW,range) 从二值图像 BW 中提取对象面积在指定 range 内的所有连通分量(对象),并生成另一个二值图像 BW2bwareafilt 返回仅包含符合条件的那些对象的二值图像 BW2

示例

BW2 = bwareafilt(BW,n) 保留 n 个最大对象。如果第 n 个位置出现结值,则 BW2 中仅包含前 n 个对象。

BW2 = bwareafilt(BW,n,keep) 指定是保留 n 个最大对象还是 n 个最小对象。

BW2 = bwareafilt(___,conn) 指定定义对象的像素连通性。

示例

全部折叠

读取图像。

BW = imread('text.png');

对图像进行滤波,只保留那些面积在 40 到 50 之间的对象。

BW2 = bwareafilt(BW,[40 50]);

并排显示原始图像和滤波后的图像。

imshowpair(BW,BW2,'montage')

Figure contains an axes object. The axes object contains an object of type image.

读取图像。

BW = imread('text.png');

对图像进行滤波,只保留面积最大的 5 个对象。

BW2 = bwareafilt(BW,5);

并排显示原始图像和滤波后的图像。

imshowpair(BW,BW2,'montage')

Figure contains an axes object. The axes object contains an object of type image.

输入参数

全部折叠

要滤波的图像,指定为二值图像。

数据类型: logical

面积的最小值和最大值,指定为 [low high] 形式的 1×2 数值向量。

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

按大小对图像对象进行滤波时要包含的对象数量,指定为数值标量。

数据类型: double

要包含在输出图像中的对象的大小,指定为 'largest''smallest'。如果第 n 个位置出现结值,则 bwareafilt 仅包括前 n 个对象。

数据类型: char | string

像素连通性,指定为下列值之一。

意义

二维连通

4

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

Center pixel connected to four pixels

当前像素以灰色显示。

8

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

Center pixel connected to eight pixels

当前像素以灰色显示。

也可以通过指定由 01 组成的 3×3 矩阵,以更通用的方式定义连通性。值为 1 的元素定义相对于 conn 的中心元素的邻域位置。矩阵必须关于其中心元素对称。

数据类型: double | logical

输出参数

全部折叠

滤波后的图像,以与输入图像 BW 大小和类相同的二值图像形式返回。

版本历史记录

在 R2014b 中推出