精华内容
下载资源
问答
  • Python读取医学图象nii格式数据进行裁剪,并保存 本文是通过nibabel和numpy模块实现可视化的。如有不足请多多指教,一起学习。 excel表格为 一 导入模块: import time, os import nibabel as nib import numpy as ...

    Python读取医学图象nii格式数据进行裁剪,并保存

    本文是通过nibabel和numpy模块实现可视化的。如有不足请多多指教,一起学习。


    导入模块:

    import time, os
    import nibabel as nib
    import numpy as np
    


    使用nibabel进行裁剪:
    裁剪指定大小函数:

    def cut_newdata(img_t1_name,img_t1_name1):
        img_t1 = nib.load(img_t1_name)
        img_t1_affine = img_t1.get_affine()
        img_t1_data = img_t1.get_data()
        img_t1_data1 = img_t1_data[10:490,10:470,18:138] # 可改大小,本实验裁成480*460*120
        img_t1 = nib.Nifti1Image(img_t1_data1, img_t1_affine)
        nib.save(img_t1, img_t1_name1)
    


    使用nibabel进行补齐指定大小:
    补齐指定大小函数:
    # 可改大小,原大小145174145,现大小128160128

    def padding_data(img_t1_name,img_t1_name1):
        img_t1 = nib.load(img_t1_name)
        img_t1_affine = img_t1.get_affine()
        img_t1_data = img_t1.get_data()
        img_t1_data = np.squeeze(img_t1_data)
        empty_data = np.zeros([145,174,145])   
        empty_data[10:138,10:170,10:138] = img_t1_data
        img_t1 = nib.Nifti1Image(empty_data, img_t1_affine)
        nib.save(img_t1, img_t1_name1)
    


    主函数

    path = '/media/gll/Work/1/test/'
        dir = os.listdir(path)
        for data in dir:
            data_path = path + data
            cut_newdata(data_path,data_path)
            # cut_newdata(data_path, data_path)
    

    完整程序

    import time, os
    import nibabel as nib
    import numpy as np
    
    
    def cut_newdata(img_t1_name,img_t1_name1):
        img_t1 = nib.load(img_t1_name)
        img_t1_affine = img_t1.get_affine()
        img_t1_data = img_t1.get_data()
        img_t1_data1 = img_t1_data[10:490,10:470,18:138]
        img_t1 = nib.Nifti1Image(img_t1_data1, img_t1_affine)
        nib.save(img_t1, img_t1_name1)
    def padding_data(img_t1_name,img_t1_name1):
        img_t1 = nib.load(img_t1_name)
        img_t1_affine = img_t1.get_affine()
        img_t1_data = img_t1.get_data()
        img_t1_data = np.squeeze(img_t1_data)
        empty_data = np.zeros([145,174,145])
        empty_data[10:138,10:170,10:138] = img_t1_data
        img_t1 = nib.Nifti1Image(empty_data, img_t1_affine)
        nib.save(img_t1, img_t1_name1)
    if __name__ == '__main__':
        path = '/media/xl/Work/1/test/'
        dir = os.listdir(path)
        for data in dir:
            data_path = path + data
            cut_newdata(data_path,data_path)
            # cut_newdata(data_path, data_path)
    
    展开全文
  • ADNI数据集:.nii格式转换为.png格式 1、共有AD_001-AD_015共15个.nii文件 分别查看每个文件的详细信息,以得到shape维度信息 import nibabel as nib file = 'D:\\图像分割\\AD\\AD_015\\AD_015.nii' #你的nii或者...
  • python读取nii格式数据

    如何用python读取医疗影像nii.gz格式的数据

    .nii或.nii.gz

    nii格式数据即为NIFTY格式数据。因为放射学和神经学医生使用软件和使用习惯有一些不同,Data Format Working Group (DFWG)为了方便研究者的工作,提出NIFTI格式图像来统一格式。后面加.gz的实际上是其压缩的格式。

    python读取.nii文件

    我们常用的python读取数据命令是读不了.nii数据的
    首先安装库nibabel

    pip install nibabel;
    
    import nibabel as nib
    import matplotlib.pyplot as plt
    
    
    img_arr = nib.load('1.nii').get_data()
    # plt.imshow(img_arr)
    # plt.pause(3)
    

    这样就能将.nii格式的数据变成一般的数组数据进行后续处理了!
    .nii.gz格式也可以用相同的操作读取。

    展开全文
  • nii格式nii.gz格式详解

    千次阅读 2021-05-12 15:45:57
    文章目录nii基础hdr/headerExtensionImage坐标体素...这部分数据长度是固定的,当然不同版本可能规定的长度不同,但是同一版本的多个nii文件是相同的。 header里包含的信息有: 维度,x,y,z,单位是毫米。还有第四个

    nii基础

    大部分医学领域导出dicom格式,但是太复杂了。很多时候,将dicom转换为nifti格式也就是nii格式。
    在这里插入图片描述
    一个NIFTI格式主要包含三部分:hdr,ext,img。

    hdr/header

    这部分数据长度是固定的,当然不同版本可能规定的长度不同,但是同一版本的多个nii文件是相同的。
    header里包含的信息有:

    • 维度,x,y,z,单位是毫米。还有第四个维度,就是时间。这部分储存的主要是四个数字。
    • voxel size(体素大小):毫米单位的x,y,z大小。
    • 数据类型,一般是int16,这个精度不够,最好使用double类型。
    • Form和转换矩阵,每一个Form都对应一个转换矩阵。暂时不知道Form是什么。

    Extension

    是自己可以随意定义数据的部分,可以自己用。但是通用的软件公司都无法使用这部分。

    Image

    储存3D或者4D的图像数据

    坐标

    dicom和nii格式定义了不同的方向,对于nii格式,坐标原点在大脑中某个部位上,方向可以从图上看出。
    在这里插入图片描述

    体素

    转换矩阵

    转换矩阵可以轻松分清图像的左右。转换矩阵是一个4X4的矩阵,作用是将体素索引(i,j,k)转换为空间位置(x,y,z)。具体使用方法是转换矩阵乘以一个包含(i,j,k)的矩阵,就可以得到一个包含(x,y,z)的矩阵。
    转换矩阵用到了一些概念,在dicom格式上也是一样的。

    转换矩阵内部参数概念

    通过下图来理解这几个概念:
    在这里插入图片描述

    Related DICOM tags:

    • ImageOrientionPatient:[1 0 0 0 1 0]
      • 这个ImageOrientionPatient是一个行向量,主要有6个元素。前三个元素[1 0 0]是图中的c向量,后三个元素[0 1 0]图中的r向量,定义了这个切片图的长和宽的方向。对应于转换矩阵的顺序是[r_x r_y r_z v_x v_y v_z]
    • ImagePositionPatient:[-100 -120 -40.2]
      • 三个元素,x,y,z定义了切片图的坐标顶点。
        ImageOrientionPatient和ImagePositionPatient定义了这个图的位置。
    • PixelSpacing:[3 3]
      • ImageOrientionPatient定义了长宽的方向,但是没有定义大小。对应于转换矩阵的顺序是[v_c v_r]
    • SpaceBetweenSlices(SliceThickness):3
      • 厚度,这个切片总共有多厚。

    转换矩阵组成

    在这里插入图片描述
    通过上面参数的介绍,我们知道了转换矩阵的第一,二列的参数来源,第三列中的n表示切片厚度,x_n就表示第n个切片的顶点的空间坐标。这个矩阵最后一行是[0 0 0 1]的常数。

    转换矩阵应用

    转换矩阵乘以一个包含(i,j,k)的矩阵,就可以得到一个包含(x,y,z)的矩阵。
    在这里插入图片描述
    将体素坐标[i j k]转换为[x y z]

    资源

    nii格式

    后缀名为.nii的文件格式又叫NIfTI-1,它改编自广泛使用的ANALYZE™7.5格式。一些比NIfTI-1发展早的老软件也可以兼容NIfTI-1。 比ANALYZE 7.5新的特性如下:

    • 将体素索引(i,j,k)与空间位置(x,y,z)相关的仿射坐标定义
    • 表示FMRI(核磁共振)的时空切片顺序的代码;
    • “完整”的8-128位数据类型集;
    • 在1-4维域上存储矢量值数据集的标准化方法;
    • 表示数据“含义”的代码;
    • 向标头添加“扩展”数据的标准化方法;
    • 双文件(.hdr和.img)或单文件(.nii)存储;

    还有很多。 目的是在FMRI数据分析软件包之间的文件交换级别上促进互操作性。 AFNI,BrainVoyager,FSL和SPM的作者都致力于支持这种格式的输入和输出。
    注意:该规范现在称为NIfTI-1.1。

    nii官网介绍

    最后

    做医学影像开发的人没那么多,学习的路上难免遇到困难,如果看到文章的你希望有伙伴陪你一起行动!
    请大胆来找我,让我们一起交流!
    公众号名称:三丰杂货铺

    在这里插入图片描述

    展开全文
  • 以下代码展示了如何批量处理nii 转化成npz 数据 import os import numpy as np import SimpleITK as sitk NII_DIR = 'D:/MRIRegistration/Data/' def get_filelist(dir, Filelist): if os.path.isdir

    npy格式:数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

    npz 格式:数组是以压缩的原始二进制格式保存在扩展名为.npy的文件中。

    以下代码展示了如何批量处理nii 转化成npz 数据

    import os
    
    import numpy as np
    import SimpleITK as sitk
    
    NII_DIR = 'D:/MRIRegistration/Data/'
    
    def get_filelist(dir, Filelist):
    
        if os.path.isdir(dir):
    
            for s in os.listdir(dir):
                newDir = os.path.join(dir, s)
                Filelist.append(newDir)
    
        return Filelist
    
    
    
    
    list = get_filelist(NII_DIR, [])
    print(len(list))
    
    for e in list:
        Refimg = sitk.ReadImage(e)
        RefimgArray = sitk.GetArrayFromImage(Refimg)
        fileName = e.split('\\')[-1]
        fileName = fileName.replace('nii','npz')
        outPutDir = 'D:/voxelmorph-master/DataMask/atlas_norm.npz'
        np.savez(outPutDir, vol_data=RefimgArray)
    

     

    展开全文
  • NIFTI格式(.Nii)数据version 1格式分析

    万次阅读 多人点赞 2017-11-27 20:56:44
    NIFTI格式(.Nii)数据读取和存储 NIFTI出现的原因是原来一种图像格式是ANALYZE 7.5 format,但是这个图像格式缺少一些信息,比如没有方向信息,病人的左右方位等,如果需要包括额外的信息,就需要一个额外的文件,...
  • 是的,你可以像操作任何数组一样操纵图像/序列...让我们加载数据集并访问所产生的结构img领域:S = load_nii('filtered_func_data.nii')这里,S是具有以下字段的结构:S =hdr: [1x1 struct]filetype: 2fileprefix: ...
  • 主要介绍了python 读取.nii格式图像实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 然后执行代码:python download_abide_preproc.py -d func_preproc -p cpac -s filt_global -o D:/CHUAN/Dataset 即可下载NII数据集,关于命令的参数可以参考这篇文章。...
  • %利用spm的函数,读取nii格式数据 data=spm_read_vols(dataHeader); surfaceData=isosurface(smooth3(data),0);%首先对读取的数据进行平滑处理,然后提取等值面,的到了表面三角面片有关的一系列数据%得到的...
  • 主要介绍了Pytorch 使用 nii数据做输入数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • .nii格式文件批量读取保存为.png格式 一、内容 在医学图像处理中,经常会遇到.nii格式的文件,如何转换为方便的可视化图片格式经常会用到。 二、代码 # 遍历文件夹 import os # nii格式一般都会用到这个包 import ...
  • nii数据转png图像

    2021-05-26 17:49:50
    pytho将nii数据转PNG图片python将.nii格式转png的方法nii数据解压以后如下图:nii数据读取批量将某个文件夹下3维的转为png代码 python将.nii格式转png的方法 在医疗图像里面MRI图像存储为nii的时候,三维图像。四维...
  • Nibabel库对nii格式图像的读写

    千次阅读 2019-01-24 21:40:20
    因为后期主要的研究方向是医学图像处理,而现有手头的大部分数据都是nii格式或者是hdr,img格式数据,所以首先第一步我们需要解决图像的读写问题。 其实使用OpenCV也可以方便的进行图像读取,但是这里暂时只学习...
  • nii格式图像存为npy格式

    千次阅读 2019-03-01 17:30:30
    import nibabel as nib import os import numpy as np img_path = '/home/lei/train/img/' seg_path = '/home/lei/train/seg/' saveimg_path = '/home/lei/train/npy_img/' saveseg_path = '/home/lei/train/npy_s....
  • 因为后期主要的研究方向是医学图像处理,而现有手头的大部分数据都是nii格式或者是hdr,img格式数据,所以首先第一步我们需要解决图像的读写问题。 其实使用OpenCV也可以方便的进行图像读取,但是这里暂时只学习...
  • python 读取.nii格式图像

    万次阅读 热门讨论 2018-12-16 12:31:55
    查看和显示nii文件 ''' import matplotlib matplotlib.use('TkAgg') from matplotlib import pylab as plt import nibabel as nib from nibabel import nifti1 from nibabel.viewers import OrthoSl...
  • Dicom 医学图像与 nii 标签数据处理

    千次阅读 2020-01-10 09:48:16
    Dicom 医学图像与 nii 标签数据处理Dicom医学图像处理nii标记数据处理综合数据处理code1需要说明code2 Dicom医学图像处理 reference: https://blog.csdn.net/u011764992/article/details/84501300 dicom 图像就长...
  • import skimage.io as io ...NII_Path='F:/BRATS/Testing/HL' MHA_List=os.listdir(MHA_Path) # 输入每个病例的文件名 for MHA_ONE in MHA_List: # 将文件名加入路径中 MHA_ONE_Path=os.path.join(MHA_Path,MHA_

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,078
精华内容 831
关键字:

nii格式数据