Matlab批量将.nii文件保存为.mat文件

批量处理需要用到 for 循环,那就有个基本的要求:文件名起码得统一。

参考:用 MATLAB 批量修改文件名

首先我有 19 个 .nii 文件,需要转成 .mat 文件进行输出查看。
在这里插入图片描述
基本思路是使用 for 循环处理,将每个 .nii 文件保存为 .mat 文件然后绘制在画布上,最终的效果是输出 19 张图像。

MATLAB 代码:

clc;
clear all;

% 读取所有.nii文件
file = dir('*.nii');
% 获取文件个数
len = length(file);

for i = 1:len
    % 获取nii文件名
    nii_file = file(i).name;
    % 加载nii文件
    nii = load_nii(nii_file);
    % 存储img部分
    img = nii.img;
    % 定义mat文件名
    mat_name = strcat('img_', int2str(i), '.mat');
    % 存储mat文件
    save(mat_name);
    % 加载mat文件
    load(mat_name);
    
    figure(1)
    subplot(4,5,i), imshow(img(:,:,1),[]), title(i)
end
  • load_nii() 函数可以加载 .nii 文件,将其保存在变量 nii
  • img 存储 nii 文件的 image 部分
  • save()load() 函数分别是保存为 .mat 文件和读取 .mat 文件
  • subplot(4,5,i) 在一张画布上绘制子图,表示 4 行 5 列,i 是子图序号,从左到右、从上到下依次递增,这个可以自己实验看看
  • imshow() 显示图像
  • img(:,:,1) 是因为我的数据结构是 160*120*1 的,第三维是图像切片,前两维是图像的宽高,所以输出时前两维都需要输出,第三维选择一个图像切片进行输出,所以这个参数需要根据自己数据结构的实际情况进行修改
  • title() 设置每个子图的标题

运行一下就 OK 啦~
在这里插入图片描述
这里就是读取 .mat 文件输出的 19 个图像,如果需要对图像进行其他处理就另外再讲。
在这里插入图片描述
2020/3/9 更新:

.nii 文件读取后如果有多个变量,若直接 save.mat 格式,则会把变量区的所有变量都保存在 mat 文件。如果只需要保存 nii 文件中的 img 变量,只需要在 save 时指定一下:

% 加载nii文件
nii = load_nii(file);

% 存储img部分
img = nii.img;

% 定义mat文件名
mat_name = strcat('img_', int2str(i), '.mat');

% 存储mat文件
save(mat_name, 'img');

需要特别注意的是,save 函数是根据字符串查找变量的,所以 save 第二个输入参数必须是 'img' 而非 img。如果使用 save(mat_name, img) 就会出现如下错误:

错误使用 save
必须为字符串标量或字符向量。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃饭就会放大招

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值