2012-10-09 161 views
2

我有2D切片的3D CT圖像。它們的格式爲DICOM,其中有250個。我想用MATLAB重建三維圖像。我怎樣才能做到這一點循環?(MATLAB)通過2D切片重建3D CT圖像

  • 我在我的Ubuntu系統上使用MATLAB R2010b。
  • 形象的位置是:/home/amadeus/Desktop/images
  • 圖像被命名爲:

    IM-0001-0001.dcm 
    IM-0001-0002.dcm 
    IM-0001-0003.dcm 
    ... 
    IM-0001-0250.dcm 
    

回答

4

Apparantly有一個函數只是讀取DICOM文件:dicomread,我建議您使用加載圖像,然後將它們存儲在3D矩陣中。 sprintf可用於構建圖像的文件名(使用%04d生成帶有前導零的四位數字)。

假設所有圖像被對準並且具有相同的大小:

N = 250; 
img_dir = '/home/amadeus/Desktop/images' 

% read the first image separately just to get the size 
strfile = 'IM-0001-0001.dcm'; 
img = dicomread(fullfile(img_dir, strfile)); 
siz_img = size(img); 

% create result matrix: 
ct3d = NaN([siz_img N]); 
ct3d(:,:,1) = img;  

% load all the remaining images and put them in the matrix 
for ii=2:N 
    strfile = sprintf('IM-0001-%04d.dcm',ii); 
    ct3d(:,:,ii)= dicomread(fullfile(img_dir, strfile)); 
end 

編輯: 這假定圖像是灰度圖像(2D)。如果它們是全色(寬x高x 3),則應在分配中添加另一個冒號運算符ct3d

+0

首先我非常感謝你的幫助。這只是我開始使用MATLAB的一天,現在對我來說一切似乎都很複雜。我在代碼中遇到了一些錯誤:第一個是:ct3d = NaN([siz N]); ???未定義的函數或變量'siz'。由於我不知道如何解決這個問題,我直接使用ct3d = NaN([250]);但是:ct3d(:,:,1)= img; ???下標分配尺寸不匹配。我應該如何解決這個錯誤?再次,我非常感謝你的幫助。 – Xentius

+0

是的,我注意到我的錯誤,使用'siz'而不是'siz_img' :(現在修正! –

+0

你是最好的!!最後一個問題:我現在如何查看我的ct3d文件?=)imshow不起作用。 – Xentius