使用nibabel合并多个MRI图像时复制标题

时间:2015-11-16 14:04:11

标签: python image-processing nifti

我收到了单个fMRI会话的多个Nifti-Images,其中每个卷扫描已保存到单个3D-Nifti文件中。这些名称命名为foobar_001.nii',...,' foobar_187.nii'。我想合并这些并编写以下for循环来执行此操作。

import numpy as np
import nibabel as ni

def merge_nii_files (sfile, ns):
    # This will load the first image for header information
    img = ni.load(sfile % (3, ns[0]))
    dshape = list(img.shape)
    dshape.append(len(ns))
    data = np.empty(dshape, dtype=img.get_data_dtype())

    header = img.header
    equal_header_test = True

    # Now load all the rest of the images
    for n, i in enumerate(ns):
        img = ni.load(sfile % (3,i))
        equal_header_test = equal_header_test and img.header == header
        data[...,n] = np.array(img.dataobj)

    imgs = ni.Nifti1Image(data, img.affine, header=header)
    if not equal_header_test:
        print("WARNING: Not all headers were equal!")
    return(imgs)

nii_files = "example_%0*d.nii"
images = merge_nii_files(nii_files, range(1,187))

如您所见,我想确保标题信息也被复制。我的问题:这是' header = header'真的够吗?我问,因为imgs有4元组的形状,但我使用的标题来自3元组的形状。我对nibabel或Nifti文件格式的内部结构并不太熟悉。我错过了什么,即我需要复制其他内容吗?

1 个答案:

答案 0 :(得分:0)

不,我没有错过任何东西。以上作品。