You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个.nii文件合并为单个.nii.gz文件(Matlab环境)

将多个.nii文件合并为单个.nii.gz文件的Matlab实现

gzip('*.nii')仅对单个NIfTI文件做压缩,无法合并文件内容。要实现合并后压缩,需先合并多个.nii文件的图像数据,再生成单个压缩文件,具体步骤如下:

1. 获取目标.nii文件列表

先获取当前目录下所有待合并的.nii文件:

niiFiles = dir('*.nii'); % 文件在其他目录时,需指定完整路径

2. 读取并合并图像数据

假设所有待合并的.nii文件空间尺寸(x/y/z轴)一致,这里以按第四维(如时间序列、多模态通道)合并为例,若需按其他维度(如z轴切片)合并,调整cat的维度参数即可:

% 初始化合并数据变量
mergedData = [];
% 读取第一个文件的头信息作为基准(确保空间信息统一)
refHeader = niftiinfo(niiFiles(1).name);

for idx = 1:length(niiFiles)
    % 读取当前文件的图像数据
    currData = niftiread(niiFiles(idx).name);
    % 合并数据
    if isempty(mergedData)
        mergedData = currData;
    else
        mergedData = cat(4, mergedData, currData); % 4代表第四维,可按需改为3(z轴)等
    end
end

% 更新头信息的图像尺寸,匹配合并后的数据
refHeader.ImageSize = [refHeader.ImageSize(1:3) size(mergedData, 4)];

3. 保存并压缩为单个.nii.gz文件

提供两种实现方式:

方法1:先保存未压缩文件再压缩

% 保存合并后的未压缩.nii文件
niftiwrite(mergedData, 'merged_result.nii', refHeader);
% 压缩为.nii.gz
gzip('merged_result.nii');
% 可选:删除临时未压缩文件
delete('merged_result.nii');

方法2:直接保存为压缩格式(Matlab R2020b及以上版本支持)

niftiwrite(mergedData, 'merged_result.nii.gz', refHeader);

注意事项

  • 所有待合并的.nii文件必须具有相同的空间分辨率、x/y/z轴尺寸,否则合并会失败。若尺寸不一致,需先做图像配准或重采样处理。
  • 合并维度需根据实际数据类型选择:合并连续切片选第三维(cat(3,...)),合并时间序列选第四维(cat(4,...))。
  • 若文件头信息存在差异(如像素间距、坐标系),需统一头信息后再合并,避免最终文件读取异常。

内容的提问来源于stack exchange,提问作者Ed K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:22:19