我有一个二进制3D图像,也就是说,它只包含0和1现在我要找到所有1的簇(即只包含值1的体素簇)最后,对于每个簇,我应该知道属于该簇的体素的坐标。
怎么能做到当然,我可以遍历所有体素,但困难在于检测簇并提取簇内的所有体素。
我想在Matlab中做这个。
最佳答案
将regionprops
与'PixelIdxList'
属性一起使用默认情况下,它使用8向连接区域得到了便于计算的线性指标。
例子:
A = false(4,4,3);
A(1,1,1) = true;
A(3,3,3) = true;
rp = regionprops(A,'PixelIdxList');
EDU>> A(rp(1).PixelIdxList)
ans =
1
EDU>> A(rp(2).PixelIdxList)
ans =
1
您还可以使用
'PixelList'
来获取三维坐标:EDU>> rp = regionprops(A,'PixelList');
EDU>> rp
rp =
2x1 struct array with fields:
PixelList
EDU>> rp(1)
ans =
PixelList: [1 1 1]
EDU>> rp(2)
ans =
PixelList: [3 3 3]