2026a

# bwconncomp


查找二值图像中的连通分量并对其计数

函数库: TyImageProcessing

# 语法

CC = bwconncomp(BW)
CC = bwconncomp(BW,conn)

# 说明

CC = bwconncomp(BW) 查找二值图像 BW 中的连通分量 CC 并对其计数。CC 输出结构体包含图像中连通分量(如感兴趣区域 (ROI))的总数,以及分配给每个分量的像素索引。bwconncomp 对二维图像使用默认 8 连通。示例


CC = bwconncomp(BW,conn) 为连通分量指定期望的 conn 连通。

# 示例

从图像中擦除最大分量

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

using TyImageProcessing
using TyPlot

BW = imread("text.png");
imshow(BW)

查找图像中连通分量的数量。

CC = bwconncomp(BW)
TyImage_CC - struct with fields:
    Connectivity: 8
       ImageSize: (256, 256)
      NumObjects: 88
    PixelIdxList: 1 x 88 Matrix{Vector{Int64}}

确定图像中的最大分量并将其擦除(将所有像素设置为 0)。

numPixels = Float64[]
for i in 1:size(CC.PixelIdxList,2)
    push!(numPixels, size(CC.PixelIdxList[i],1))
end
biggest,idx = findmax(numPixels);
BW[Int64.(CC.PixelIdxList[idx])] .= 0;

显示图像,注意最大分量正好是单词 differen 中两个连续的 f。

figure()
imshow(BW)

# 输入参数

BW — 二值图像
二维数值矩阵 | 二维逻辑矩阵

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

数据类型: Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64 | Bool

conn — 像素连通性
8 (默认) | 4

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

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

数据类型: Int64

# 输出参数

CC — 连通分量
结构体

连通分量,以具有四个字段的结构体形式返回。

字段 描述
Connectivity 连通分量(对象)的连通性
ImageSize BW 的大小
NumObjects BW 中连通分量(对象)的数量
PixelIdxList 1×NumObjects 矩阵,其中,矩阵中的第 k 个元素是包含第 k 个连通分量中像素的线性索引的向量。

数据类型: TyImage_CC