问题描述: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
来源:CSDN
作者:要奋斗的人儿~
链接:https://blog.csdn.net/Sweety_Lin/article/details/104353063