2015-11-12 93 views
-1

我在一個文件夾中有近80個dicom圖像。現在,我想將這些dicom系列圖像轉換爲三維圖像。如何將Dicom目錄(一系列dicom圖像)轉換爲3D捲圖像?

下面是加載MRI數據,形成計數器切片,然後生成三維體積的代碼。但是,它會加載內置的MRI圖像。

如何更改此程序從我的文件夾加載dicom圖像並顯示三維體積?

load mri 
D = squeeze(D); 
%figure 
colormap(map) 
image_num = 8; 
image(D(:,:,image_num)) 
axis image 
x = xlim; 
y = ylim; 
cm = brighten(jet(length(map)),-.5); 
figure 
colormap(cm) 
contourslice(D,[],[],image_num) 
axis ij 
xlim(x) 
ylim(y) 
daspect([1,1,1]) 
figure 
colormap(cm) 
contourslice(D,[],[],[1,12,19,27],8); 
view(3); 
axis tight 
figure 
colormap(map) 
Ds = smooth3(D); 
hiso = patch(isosurface(Ds,5),... 
    'FaceColor',[1,.75,.65],... 
    'EdgeColor','none'); 
    isonormals(Ds,hiso) 
hcap = patch(isocaps(D,5),... 
    'FaceColor','interp',... 
    'EdgeColor','none'); 
view(35,30) 
axis tight 
daspect([1,1,.4]) 
lightangle(45,30); 
lighting gouraud 
hcap.AmbientStrength = 0.6; 
hiso.SpecularColorReflectance = 0; 
hiso.SpecularExponent = 50; 

回答

0

我們可以使用fullfile返回包含完整的文件路徑的字符串。和dir,它返回與字符串名稱匹配的文件和文件夾列表。當名稱是文件夾時,dir會列出文件夾的內容。使用絕對或相對路徑名稱指定名稱。名稱可以包含通配符(*)。 其餘的東西在程序中都有很好的評論。

clear all; 
    close all; 
    clc; 
    fileFolder = fullfile('series 9'); 
    files = dir (fullfile (fileFolder, '*.dcm')); 
    fileNames = {files.name}; 

    %examine file header (metadata , from dicom stack) 

    info = dicominfo(fullfile(fileFolder,fileNames{1})); 

    %extract size info from metadata 
    voxel_size = [info.PixelSpacing;info.SliceThickness]; 

    %read one file to get size 
    I = dicomread(fullfile(fileFolder,fileNames{1})); 
    classI = class(I); 
    sizeI = size(I); 
    numImages = length(fileNames); 

    %read slice images populate 3d matrix 
    hWaitBar = waitbar(0,'reading dicom files'); 

    %create array 
    mri= zeros(sizeI(1),sizeI(2), numImages , classI); 
    for i=length(fileNames):-1:1 
     fname = fullfile(fileFolder, fileNames{i}); 
     mri(:,:,i) = uint16(dicomread(fname)); 
     waitbar((length(fileNames)-i+1)/length(fileNames)) 
    end 

    delete(hWaitBar);