如何将Dicom目录(一系列dicom图像)转换为3D体积图像?

时间:2015-11-12 01:37:56

标签: matlab image-processing 3d dicom medical

我在一个文件夹中有近80个dicom图像。现在,我想将这些系列的dicom图像转换为3d体积。

下面是加载MRI数据,形成计数器切片然后生成3d体积的代码。但是,它会加载内置的MRI图像。

如何更改此程序以从我的文件夹加载dicom图像并显示3d音量?

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;

1 个答案:

答案 0 :(得分:0)

我们可以使用fullfile返回包含文件完整路径的字符串。和dir返回与字符串名称匹配的文件和文件夹列表。当name是文件夹时,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);