批量更改nii文件的层数
程序员文章站
2022-04-01 09:54:50
...
问题描述:
有一批fMRI文件,需要批量更改时间点个数。
思路:
时间点即4D nii文件的时间维度,读取nii文件后更改第4个维度即可。
步骤:
import os
import numpy as np
import nibabel as nib
"""
作用:
读取子文件夹中的nii文件,改变时间点个数,输出nii文件到各个被试子文件夹,覆盖原文件。
说明:
总文件夹和子文件夹中不可包含其他文件,如.mat文件等
操作会覆盖原文件,注意备份。
文件夹结构为:
path - sub001 - 1.nii
- sub002 - 2.nii
...
"""
#读取nii文件
path= (r'C:\Users\FunImg') #nii文件所在路径
fileList = os.listdir(path) #提取文件名为list格式变量
for i in fileList:
path1 = (path + os.sep + i)
fileList2 = os.listdir(path1)
example_filename = os.path.join(path1, fileList2[0])
img = nib.load(example_filename)
img_data = img.get_fdata()
#提取前240个时间点,删除后面的时间点
#预处理时仍需remove first 10 points.
img_data_1 = img_data[:,:,:,:240]
#保存仿射矩阵和头文件
affine = img.affine.copy()
hdr = img.header.copy()
#生成新的nii文件
new_nii = nib.Nifti1Image(img_data_1, affine, hdr)
#保存nii文件,后面的参数是保存的文件名
nib.save(new_nii, path1 + os.sep + fileList2[0])
上一篇: springboot添加新模块的方法过程详解(图文)
下一篇: matlab进行多项式展开