Matlab 中 imregionalmax函数 和 bwconncomp函数的使用
imregionalmax函数
找出当前连通区域内元素大于或等于强度t的元素,将其置为1,,其他像素都设置为0。返回二值图像。
举例说明
三种用法如下:
BW = imregionalmax(I)
BW = imregionalmax(I,conn)
gpuarrayBW = imregionalmax(gpuarrayI,___)
-
BW = imregionalmax(I) 默认2维数据为8联通,3维数据为26联通。
假设A如下:A =
10 10 10 10 10 10 10 10 10 10 10 22 22 22 10 10 44 10 10 10 10 22 22 22 10 10 10 45 10 10 10 22 22 22 10 10 10 10 44 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 33 33 33 10 10 10 10 10 10 10 33 33 33 10 10 10 10 10 10 10 33 33 33 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
regmax = imregionalmax(A)
上述命令的结果为:
regmax =
10×10 logical array0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
若A(3,3) = 23,则相同命令结果为:
regmax =
10×10 logical array
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
若A(3,3) = 20,则相同命令结果为:
regmax =
10×10 logical array
0 0 0 0 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0
0 1 0 1 0 0 0 1 0 0
0 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
- BW = imregionalmax(I,conn)
conn:指定函数中使用的连通度。 - gpuarrayBW = imregionalmax(gpuarrayI,___)
gpuarrayBW = imregionalmax(gpuarrayI,___) 在GPU上执行该操作,输入图像必须是一个gpuArray,函数返回一个gpuArray。需要支持 Parallel Computing Toolbox™ .
bwconncomp函数
找出二值图像中所有的连通区域。
举例说明
用法如下:
CC = bwconncomp(BW)
CC = bwconncomp(BW,conn)
-
BW = imregionalmax(I) 默认2维数据为8联通,3维数据为26联通。
假设S如下:
S =0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0
D = bwconncomp(S);
上述命令的结果为:
D=1*1 struct
D.Connectivity 使用的连通度
D.ImageSize 图像大小
D.NumObjects 连通区域数
D.PixelIdxList 连通区域的索引
这里具体看看 D.PixelIdxList:
因为是默认的8联通,所以7,8,12,13和19,24为一个连通区域,若使用4连通,这里就是两个连通区域。