MATLAB遍历文件夹及其子文件夹,读取多幅相关图像画图

问题描述:4个模态的nii数据以及其中三个模态对应的mask,每个模态的数据维度均为121*145*121,现按照Z方向,将每个模态的121层都利用ITK-SNAP保存为png格式,总共有18个受试者。为了展示每个受试者、每个模态的数据情况,想每人每模态抽取对应的5层,贴在PPT里,总共需要 18 * 7 * 5 = 630 张图片,如果手动粘贴复制将非常繁琐,故利用MATLAB实现这一过程。

数据保存格式:

MATLAB代码:

clear;clc;close all
DirData = 'C:\Users\Desktop\load_code\data_summary';
Modalityinfo=dir(fullfile(DirData,'*'));
ModalityName={Modalityinfo.name}';
%% input the selected slice number for each subject
SliceNum = {
    '050','055','060','065','070';%10
    '040','047','054','061','068';%31
    '046','054','061','068','076';%36
    '042','046','052','061','066';%47
    '046','059','068','075','079';%48
    '056','060','064','068','072';%54
    '042','050','059','063','072';%64
    '050','060','063','066','072';%66
    '042','047','056','067','076';%67
    '052','059','065','070','080';%68
    '054','065','070','075','081';%69
    '038','042','051','063','071';%72
    '047','055','062','070','078';%73
    '040','046','055','060','064';%76
    '049','058','062','066','070';%77
    '040','055','069','082','090';%78
    '053','057','063','067','072';%79
    '064','068','072','081','088';%80
    };
Selected_slice = {};
% Selected_slice{sub,mod,slice} 
slice = 1;
sub = 1;
mod = 1;
%% selecte data
for i = 3:length(ModalityName)
    ModalityDir = fullfile([DirData,'/',ModalityName{i}]);
    Subinfo = dir(ModalityDir);
    SubName={Subinfo.name}';
    for j = 3:length(SubName)
        SubDir = fullfile([ModalityDir,'/',SubName{j}]);
        imageinfo = dir(SubDir);
        ImageName={imageinfo.name}';
        for k = 3:length(ImageName)
            if strcmp(ImageName{k}(7:9),SliceNum{j-2,1})||strcmp(ImageName{k}(7:9),SliceNum{j-2,2})||strcmp(ImageName{k}(7:9),SliceNum{j-2,3})||strcmp(ImageName{k}(7:9),SliceNum{j-2,4})||strcmp(ImageName{k}(7:9),SliceNum{j-2,5})
                Selected_slice{sub,mod,slice}={[SubDir,'\',ImageName{k}]}; 
                slice = slice+1;
            end
        end 
        slice=1;
        sub = sub+1;
    end
    sub=1;
    mod = mod+1;
end
SubNum = length(SubName) - 2; % 人
ModalityNum = length(ModalityName) - 2;  % 模态
sub_slice_num = size(SliceNum,2); % 每人 张

%% plot selected data
width = roundn(1/ModalityNum,-2);
heigh = roundn(1/sub_slice_num,-2);
for m = 1:SubNum
    img=1;
    figure(m)
    for n = 1:sub_slice_num
        for p = 1:ModalityNum
%             subplot(sub_slice_num,ModalityNum,img)
            subplot('position',[(p-1)*width,1-n*heigh,width,heigh])
            imshow(char(Selected_slice{m,p,n}))
            img = img+1;
        end
    end
    saveas(gca,['image_',num2str(m),'.jpg'])
end
发布了30 篇原创文章 · 获赞 2 · 访问量 9855

猜你喜欢

转载自blog.csdn.net/Sweety_Lin/article/details/104353063