首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nibabel合并多个MRI图像时复制标头

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

Stack Overflow用户
提问于 2015-11-16 14:04:10
回答 1查看 1.7K关注 0票数 1

我已经收到了一个fMRI会话的多个Nifti图像,其中每个卷扫描都被保存到一个3D-Nifti文件中。它们的名字是'foobar_001.nii',…,'foobar_187.nii‘。我想合并这些,并编写了下面的for-循环这样做。

代码语言:javascript
复制
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元组的形状,但我使用的标题来自一个三元组的形状。我不太熟悉nibabel的内部结构或Nifti文件格式。我错过了什么吗,也就是说,我还需要复制什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-21 08:11:26

不,我什么都没错过。上面的方法很有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33737282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档