matlab 将多个.nii转换为一个.nii.gz

kd3sttzy  于 2023-06-06  发布在  Matlab
关注(0)|答案(1)|浏览(439)

我需要将多个.nii文件转换成一个. ni.gz文件。
在Matlab中,我使用了gzip('*. nii '),但它为每个nii文件创建了多个ni.gz文件。如何从许多.nii文件中创建一个组合的nii.gz文件?
先谢谢你了

4zcjmb1e

4zcjmb1e1#

如果您将Tools for NIfTI and Analyze Images库下载到/tmp/tools4nifti并从FSL目录中复制两个T1 MNI模板示例,* 例如 *:
/tmp$ cp $FSLDIR/data/standard/MNI152_T1_2mm.nii.gz ./copy1.nii.gz
/tmp$ cp $FSLDIR/data/standard/MNI152_T1_2mm.nii.gz ./copy2.nii.gz
然后你可以使用标准的matlab函数连接二进制数据,并使用库编写结果:

addpath ( 'tools4nifti' );                               % add library

NII = load_untouch_nii ( 'copy1.nii.gz' );               % 1st copy
im1 = double ( NII.img );                                % load binary
NII = load_untouch_nii ( 'copy2.nii.gz' );               % 2nd copy
im2 = 10000 - double ( NII.img );                        % load binary, inverted
im  = cat ( 4, im1, im2 );                               % join along dim 4

NII.hdr.dime.dim = [ length( size(im) ) size(im) ];      % update NIfTI record
NII.hdr.dime.dim ( end+1:8 ) = 1;                        % give 8 dimensions
NII.img = im;                                            % put binary data in

save_untouch_nii ( NII, 'twocopies.nii.gz' );            % write the file

您可以加载任意数量的im,也可以向cat命令添加任意数量的参数,或者将整个操作放在for循环中。
这个库不是我的,但我经常使用它,因为它可以加载.nii.gz文件,而不需要额外的显式(反)压缩命令。

相关问题