用Matlab计算三维体中连通构件的质心



我正在尝试在3D脑MRI上实现脑肿瘤分割。

初步分割后,我使用26邻连通分量算法(使用bwconncomp),通过获得体积最大的分量来获得最大的连通分量,然后我需要计算合成分量的质心。

我不确定我计算最大连接分量和质心的方法是否正确,因为得到的质心及其附近的voxels都有值0

我也对3D voxel坐标的表示感到困惑。如。如果是centroid=(x,y,z),是否对应x=rowy=columnz=2D切片?

任何帮助都会很感激。下面是我的代码和相关部分。

CC=bwconncomp(Ibin,26);  %Input Black & White 3D data of size 240x240x155
Pixelid=regionprops(CC,'PixelIdxList');
[prow pcol]=size(Pixelid);
maxval=numel(Pixelid(1).PixelIdxList);
index=1;
for i=1:prow
 number=numel([Pixelid(i).PixelIdxList]);
 if (number>maxval)  %calculating the component with max number of voxels
  maxval=number;
  index=i;
 end
end
for i=1:prow
 if i~=index
   Ibin(Pixelid(i).PixelIdxList)=0;
 end
end
CC1=bwconncomp(Ibin,26); 
Cent=regionprops(CC1,'Centroid');

我把你的代码改成如下:

CC=bwconncomp(Ibin,26);
PixelIdxList = CC.PixelIdxList;
maxval = numel(PixelIdxList{1});
index = 1;
for ii = 1:length(PixelIdxList)
    number = numel(PixelIdxList{ii});
    if number > maxval
        maxval = number;
        index = ii;
    end
end
[y,x,z] = ind2sub(size(Ibin),PixelIdxList{index})
centroid = [mean(x), mean(y), mean(z)];

bwconncomp已经给了你一个PixelIdxList,所以你不必使用regionpropsPixelIdxList通过它们的线性索引列出像素,因此您必须将它们转换为下标以获得x, y和z坐标。MATLAB矩阵中的第一维表示y坐标,第二维表示x坐标,第三维表示z坐标。质心是通过取对象中包含的所有像素的x、y和z坐标的平均值来计算的。

相关内容

  • 没有找到相关文章

最新更新