我有一个二进制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]

10-08 12:09