主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

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 hidden 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 hidden axes object contains an object of type image.

输入参数

全部折叠

要滤波的二值图像,指定为逻辑矩阵。

数据类型: logical

面积的最小值和最大值,指定为 [low high] 形式的二元素数值向量。

数据类型: 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 中推出

全部展开