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

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

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

首先我有 19 个 .nii 文件,需要转成 .mat 文件进行输出查看。
Matlab批量将.nii文件保存为.mat文件_第1张图片
基本思路是使用 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 啦~
Matlab批量将.nii文件保存为.mat文件_第2张图片
这里就是读取 .mat 文件输出的 19 个图像,如果需要对图像进行其他处理就另外再讲。
Matlab批量将.nii文件保存为.mat文件_第3张图片

你可能感兴趣的:(工具使用,#,MATLAB)