• nii文件在python中的使用


    NIFTI格式图像

    NIFTI(Neuroimaging Informatics Technology Initiative)格式图像是由一个包含头文件元数据和一个包含二进制的图像资料组成的文件。

    读取NIFTI格式图像可以通过软件ITK-SNAP打开

    image-20200913223011437

    可以看到:ITK-SNAP获得了分别来自三个角度的视图(水平面、矢状面、冠状面)

    Inked20190829115918569_LI

    使用Python读取

    2.1 simpleITK

    import SimpleITK as sitk
    from matplotlib import pyplot as plt
    
    
    def showNii(img):
        for i in range(img.shape[0]):
            plt.imshow(img[i, :, :], cmap='gray')
            plt.show()
    
    
    itk_img = sitk.ReadImage('./new_coronary.nii.gz')
    img = sitk.GetArrayFromImage(itk_img)
    print(img.shape)  # (155, 240, 240) 表示各个维度的切片数量
    showNii(img)
    

    可以看到文件中包含的图像信息

    image-20200913232921264

    2.2 Nibabel

    import matplotlib
    matplotlib.use('TkAgg')
     
    from matplotlib import pylab as plt
    import nibabel as nib
    from nibabel import nifti1
    from nibabel.viewers import OrthoSlicer3D
     
    example_filename = './Brats18_2013_2_1_flair.nii.gz'
     
    img = nib.load(example_filename)
    print (img)
    print (img.header['db_name'])   # 输出头信息
    
    # 由文件本身维度确定,可能是3维,也可能是4维 
    width,height,queue=img.dataobj.shape
     
    OrthoSlicer3D(img.dataobj).show()
     
    num = 1
    for i in range(0,queue,10):
     
        img_arr = img.dataobj[:,:,i]
        plt.subplot(5,4,num)
        plt.imshow(img_arr,cmap='gray')
        num +=1
     
    plt.show()
    

    也可看到文件中的图像

    image-20200913233119230

    操作与ITK-SNAP软件类似

  • 相关阅读:
    Java设计模式-装饰器模式
    【c++内存分布系列】单独一个类
    【转】LCS
    快速排序
    冒泡排序
    选择排序
    多线程读取全局变量
    【转】一致性hash算法(consistent hashing)
    【转】五笔的字典序编码与解码
    给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?
  • 原文地址:https://www.cnblogs.com/feyily/p/13748608.html
Copyright © 2020-2023  润新知