【Matlab】批处理 mat2nii 及 nii2mat

本文介绍如何在MATLAB环境下实现MAT数据格式与医学图像NII格式之间的转换,包括使用load_nii工具包的具体步骤和代码示例。

mat 数据是matlab的标准数据格式

但是我用的医学图像都是 nii序列

数据处理完需要将 mat 转 nii 格式,matlab 果然比普通程序易懂~~~

首先需要下载matlab官网的load_nii文件夹(ps:这个程序要放在load_nii文件夹里)

如果只需处理一张(17-21)行即可完成mat2nii,(36、38、40、41)行可完成nii2mat,load后面直接放入path即可

#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;#f为工作区内mat数据的命名,同下面的a
            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

 

 

 

欢迎批斗~~~

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值