matlab里根据roi在原图中截取矩形ROI


clc;clear;
root_dir='D:\test_rec';
fileList=dir(root_dir);
n=length(fileList);
cntpic=0;
files={};
%±éÀúÎļþ¼Ð
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);%Ï൱ÓÚ³õʼ»¯
img_sort=label(:,:,1);
img_out=label(:,:,1);
%ÅжÏmaskÊÇ·ñΪÁ㣬²»ÎªÁãÊä³öi,±£´æͼƬÏàÓ¦²ãÃæ
[x y m]=size(label)

j=1;
%l=1;
for k = 1:m % ¿ªÊ¼ÇÐƬÊý¾ÝÂÖÑ°
z(:,:,k)=label(:,:,k);
if sum(sum(z(:,:,k)))~=0
d(:,:,j)=label(:,:,k);%±£´æd£¬dΪº¬ÓÐROIµÄͼƬ
img_sort(:,:,j)=img(:,:,k);
A=d(:,:,j);
%d1=label(:,:,1);
[r,c]=find(A==1);
for i1=min(r):max(r)%Ö±½ÓÊÇС¾ØÐÎ,×óÓÒÀ©Õ¹64¸öÏñËص㣬Ҳ¿ÉÒÔÈ¡ROIÖÐÐĵ㣬ȻºóÉÏÏÂ
%×óÓÒÀ©Õ¹128¸öÏñËصÈ
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);
%дÈëniiÎļþ
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

posted @ 2021-12-01 18:40  编程coding小白  阅读(302)  评论(0编辑  收藏  举报