如何在Matlab

时间:2018-02-09 07:42:07

标签: matlab 3d 3d-reconstruction

我有大约200张来自患者的CT幻灯片,需要重建它们并分割出眼睛轨道。在Matlab中,我读取了原始的DICOM图像,使用imbinarize(I,T)将它们更改为二进制图像,然后将它们堆叠起来形成3D轨道图像(参见下面的附图)。

原始DICOM enter image description here

二进制图像enter image description here

3D重建轨道 enter image description here

然而,正如你所看到的,轨道内有许多洞。为了解决这个问题,我使用bwmorph()来加厚'和'桥接',然后使用imclose()和'磁盘'参数:

for i = 30 : 160  
    info = dicominfo(dirOutput(i).name,'UseDictionaryVR',true);
    imgTemp = dicomread(info);
    imgCropped = imcrop(imgTemp,bboxCrop);
    imgCroppedBin = imbinarize(imgCropped,0.51728);
    img_thick = bwmorph(imgCroppedBin,'thicken');
    img_bridge = bwmorph(img_thick,'bridge',Inf);
    se = strel('disk',1);
    I(:,:,i) = imclose(img_bridge,se);
end;

I(:,:,i)是生成的3D数组。然后我使用fv = isosurface(I,ISOVALUE)和patch()将3D数组重建为3D图像(如上所述)。

生成的3D图像仍有许多未填充的孔。增加STREL元素尺寸或降低ISOVALUE将使最终模型变粗和粗糙(例如,内部有楼梯盒)。

请问如何在3D模型中填充生成的孔并仍然保留图像的原始平滑度?我应该在3D图像中执行此操作还是在重建之前在2D二进制图像中执行此操作?

我也尝试使用alphaShape填充孔,结果比isosurface()和patch()更令人满意并且更容易控制。但是具有大的#alpha; alpha值"例如8,输出模型变得丢失细节,例如"下眶裂"也被平滑了。

使用alpha值为8的alphaShape重建图像 enter image description here

感谢任何人都可以提出解决方案。谢谢!

0 个答案:

没有答案