批量更改nii文件的层数

问题描述:
有一批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])
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值