我正在尝试在3D脑MRI(.mha数据类型)上实施脑肿瘤分割。
在初步分割之后,我正在应用26邻居连通分量算法(使用bwconncomp)通过获得具有最大体积的分量来获得最大连通分量,之后我需要计算所得分量的质心。
我不确定我的计算最大连通分量和质心的方法是否正确,因为获得的质心及其附近的voxels
都具有值0
。
此外,我对3D voxel
坐标的表示感到困惑。例如。如果centroid=(x,y,z)
,它是否与x=row
,y=column
和z=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');
答案 0 :(得分:0)
我将您的代码更改为以下内容:
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
,因此您不必使用regionprops
。 PixelIdxList
按线性索引列出像素,因此您必须将它们转换为下标以获取x,y和z坐标。 MATLAB矩阵中的第一个维度表示y
坐标,第二个维度表示x
,而第三个维度表示z
。通过获取对象中包含的所有像素的平均x,y和z坐标来计算质心。