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

欢迎批斗~~~

猜你喜欢

转载自blog.csdn.net/weixin_42338058/article/details/84589826
Mat