matlab里根据roi在原图中截取矩形ROI
clc;clear;
root_dir='D:\test_rec';
fileList=dir(root_dir);
n=length(fileList);
cntpic=0;
files={};
%񂅣???t?D
for i=1:n
if strcmp(fileList(i).name,'.')==1||strcmp(fileList(i).name,'..')==1
continue;
else
fileList(i).name;
full_name=[root_dir,'\',fileList(i).name];
cntpic=cntpic+1;
files(cntpic)={full_name};
end
end
filename={};
c=0;
for i=1:length(files)
Modalityinfo=dir(fullfile(files{i},'*.nii.gz'));
c=c+1;
filename(c,:)={Modalityinfo.folder,Modalityinfo.name};
end
[num s]=size(filename);
for i=1:num
path=filename{i,1};
path_T2=char(strcat(path,'/',filename{i,3}));
path_label=char(strcat(path,'/',filename{i,4}));
T2=load_untouch_nii(path_T2);
label=load_untouch_nii(path_label);
img=double(T2.img);
label=double(label.img);
z=label(:,:,1);
d=label(:,:,1);%?àμ±óú3?ê??ˉ
img_sort=label(:,:,1);
img_out=label(:,:,1);
%?D??maskê?·??aá?£?2??aá?ê?3?i,±£′?í????àó|2???
[x y m]=size(label)
j=1;
%l=1;
for k = 1:m % ?aê??D??êy?Y???°
z(:,:,k)=label(:,:,k);
if sum(sum(z(:,:,k)))~=0
d(:,:,j)=label(:,:,k);%±£′?d£?d?ao?óDROIμ?í???
img_sort(:,:,j)=img(:,:,k);
A=d(:,:,j);
%d1=label(:,:,1);
[r,c]=find(A==1);
for i1=min(r):max(r)%?±?óê?D???D?,×óóòà??164??????μ?£?ò2?éò?è?ROI?DD?μ?£?è?oóé???
%×óóòà??1128??????μè
for j1=min(c):max(c)
d(i1,j1,j)=1;
img_out(:,:,j)=img_sort(:,:,j).*d(:,:,j);
end
end
j=j+1;
%l=l+1;
end
end
str=filename{i,3};
A=isstrprop(str,'digit');
B=str(A);
%D′è?nii???t
path1=char(strcat('D:\mask'));
path_mask=char(strcat(path1,'\',B,'_recROI.nii.gz'));
mask_nii=make_nii(img_out);
save_nii(mask_nii,path_mask);
end