1. 程式人生 > >Matlab 之 mat 轉 nii 以及 nii 轉 mat

Matlab 之 mat 轉 nii 以及 nii 轉 mat

mat 資料是matlab的標準資料格式

但是我用的醫學影象都是 nii序列

資料處理完需要將 mat 轉 nii 格式,matlab 果然比普通程式易懂~~~

首先需要下載matlab官網的load_nii資料夾

 

#mat2nii
clear all;
path = 'H:\data'
#mat資料所在路徑
dirfile = dir(path);
#mat資料檔名
filename={dirfile.name};
#這裡i從2開始是因為我手動轉了第一個資料
for i=2:length(filename)
    #獲取所有mat資料的絕對路徑
    dirzip=dir(fullfile(path, filename{i}, '*.mat'))
    #帶副檔名的檔名稱
    zipname={dirzip.name};
        #需要轉換的資料量
        for j=1:length(zipname)
            #載入mat資料,並轉換成nii,副檔名為.nii.gz
            mat=load(fullfile(path,filename{i},zipname{j}(1:end-3)));
            b=mat.f;
            c=make_nii(b);
            savepath=fullfile(path,filename{i},strcat(zipname{j}(1:end-4),'.nii.gz'))
            save_nii(c,savepath)
        end
end


#nii2mat
clear all;
path = 'G:\Brats17-master\Brats17ValidationData'
dirfile = dir(path);
filename={dirfile.name};
for i=3:length(filename) #從3開始是因為filename變數裡有效檔名從3開始
    dirzip=dir(fullfile(path, filename{i}, '*.gz'))
    zipname={dirzip.name};
        for j=1:length(zipname)
            %gunzip(fullfile(path,filename{i},zipname{j}));
            nii=load_nii(fullfile(path,filename{i},zipname{j}));
            zipname{j}(1:end-3)
            a=nii.img;
            %a=strcat(zipname{j}(1:end-7),'.mat')
            savepath=fullfile(path,filename{i},strcat(zipname{j}(1:end-7),'.mat'))
            save(savepath,'a')
        end
end

 

 

 

歡迎批鬥~~~