第一步安装nibabel,可以使用命令:pip install nibabel

之后:

from nibabel.viewers import OrthoSlicer3D as osd

import nibabel as nib

filename = 'image.nii'

img = nib.load(filename)

#输出文件信息

print(img)

w,h,q = img.dataobj.shape

#显示3D图像

osd(img.dataobj).show()

结果:

data shape (512, 512, 333)

affine:

[[  -0.82617199    0.            0.          204.01400757]

[   0.           -0.82617199    0.          211.5       ]

[   0.            0.            1.25       -431.97399902]

[   0.            0.            0.            1.        ]]

metadata:

object, endian='

sizeof_hdr      : 348

data_type       : b''

db_name         : b''

extents         : 0

session_error   : 0

regular         : b'r'

dim_info        : 0

dim             : [  3 512 512 333   1   1   1   1]

intent_p1       : 0.0

intent_p2       : 0.0

intent_p3       : 0.0

intent_code     : none

datatype        : int32

bitpix          : 32

slice_start     : 0

pixdim          : [1.       0.826172 0.826172 1.25     0.       0.       0.       0.      ]

vox_offset      : 0.0

scl_slope       : nan

scl_inter       : nan

slice_end       : 0

slice_code      : unknown

xyzt_units      : 2

cal_max         : 0.0

cal_min         : 0.0

slice_duration  : 0.0

toffset         : 0.0

glmax           : 0

glmin           : 0

descrip         : b''

aux_file        : b''

qform_code      : scanner

sform_code      : unknown

quatern_b       : 0.0

quatern_c       : 0.0

quatern_d       : 1.0

qoffset_x       : 204.014

qoffset_y       : 211.5

qoffset_z       : -431.974

srow_x          : [0. 0. 0. 0.]

srow_y          : [0. 0. 0. 0.]

srow_z          : [0. 0. 0. 0.]

intent_name     : b''

magic           : b'n+1'

各字段意义:

sizeof_hdr:sizeof_hdr 是保存文件的头文件大小,如果是NIFTI-1或者ANALYZE格式的文件sizeof_hdr=348.

dim_info:dim_info字段存储着频率编码方向(1,2,3),相位编码方向(1,2,3)和采集期间层选择方向(1,2,3),对于径向采集来讲,频率编码和相位编码都设置为0。

dim:short dim[8]保存着前面提到的图像的维度信息。如果第0维不是(1-7)之间的数字,那么这个数据具有相反的字节顺序,所以应该进行字节交换(NIFTI标准没有提供字节顺序的字段,提倡使用dim[0])。

intent系列(影响到图像数据的读取和存储)

datatype和bitpix

datatype中存储的是数据的类型,可接受类型如下:

而bitpix字段必须与datatype中的代码所对应的bit(s)/pix的大小相等。

slice切片信息

包含字段:slice_start,slice_end, slice_code, slice_duration

slice_duration是存储功能磁共振成像采集的时间相关信息,需要与dim_info字段一起使用。

pixdim体素维度:每个体素维度信息都保存在pixdim[8]中,各自对应dim[8],但pixdim[0]有特殊意义,其值只能是-1或1。前四个维度将在xyzt_units字段中指定。

vox_offset体素偏移量:vox_offset指 单个文件(.nii)图像数据的字节偏移量。

scl_slope和scl_inter数据缩放的斜率和截距

存储在每个体素中的值可以线性缩放到不同的单位。字段float scl_slope和float scl_inter定义一个斜率和一个线性函数的截距。数据缩放功能允许存储在比数据类型所允许的范围更广的范围内。但是,可以在相同的数据类型中使用缩放。对于rgb数据的存储,两个缩放字段都应该被忽略。对于复杂类型,它应用于实部和虚部。

cal_max 和cal_min数据显示

存储标量数据的文件,这两个字段用来图像打开时默认显示范围。体素值小于等于cal_min的像素显示为显示范围中的最小值(灰度范围内通常为黑),大于等于cal_max的值显示为显示范围中的最大值(通常为白色),注意:这里并不是真实改变数据大小,而是改变显示大小。

xyzt_units 度量单位

在dim[1]和dim[4]中用到的空间和时间测量单元(对应各自的pixdim[1]和pixdim[4]),编码在xyzt_units字段中,1-3 bit用来存储空间维度,4-6 bit用来存储时间维度,6-7 bit没有使用。时间偏移量放在float toffset字段中,xyzt_units十进制编码如下:

descrip描述

该字段char descrip[80]可以包含最多80个字符的文本。标准中没有指定这个字符串是否需要被空字符终止

aux_file附加文件

包含额外信息的补充文件可放在该字段中

magic

该字符串声明文件符合NIFTI标准。

理想情况下,应该先检查该字段,如果字段中存储为”ni1”(或者是16进制的‘6E 69 31 00’),那么是.hdr/.img文件对形式;如果是’n+1’(或’6E 2B 31 00’),那么就是单一的.nii文件;而如果缺少字符串,那么就按照ANALYZE格式处理。

python怎么保存为nii文件_python处理nii文件相关推荐

  1. python不同数据的读入_python读写不同编码txt文件_python读写txt文件

    python读写不同编码txt文件_python读写txt文件 以后整理规范 [python] view plaincopy import os import codecs filenames=os. ...

  2. python本地读csv文件_python读写csv文件方法详细总结

    python提供了大量的库,可以非常方便的进行各种操作,现在把python中实现读写csv文件的方法使用程序的方式呈现出来. 在编写python程序的时候需要csv模块或者pandas模块,其中csv ...

  3. python中表头格式错误导入_python读csv文件时指定行为表头或无表头的方法

    pd.read_csv()方法中header参数,默认为0,标签为0(即第1行)的行为表头.若设置为-1,则无表头.示例如下: (1)不设置header参数(默认)时: df1 = pd.read_c ...

  4. python下的所有文件_python批量复制文件夹下所有文件大小

    python复制文件夹下所有文件 Python---进阶---文件操作---获取文件夹下所有文件的数量和大小 一.####编写一个程序,统计当前目录下每个文件类型的文件数 ####思路: - 打开当前 ...

  5. python读写xlsx文件_python读写Excel文件--使用xlrd模块读取,xlwt模块写入

    一.安装xlrd模块和xlwt模块 1. 下载xlrd模块和xlwt模块 到python官网http://pypi.python.org/pypi/xlrd下载模块.下载的文件例如:xlrd-0.9. ...

  6. python 读取文件_python读取docx文件,就是如此简单

    扫码加入千人跳槽求职QQ群或微信圈子,每日都有全国招聘信息哦     中文编码问题总是让人头疼(尤其是mac本),想要用Python读取word中的内容.用open()经常报错,通过百度搜索+问身边小 ...

  7. python多线程下载多个文件_python多线程下载文件 练习1

    ***今天在我BF的帮助下完成了小小的程序,也是我第一次写博客呢,谢谢他哦嘎嘎 1.首先,计算出下载文件的长度. conn = urllib.urlopen(url) headers = conn.i ...

  8. python读取手机文件_python 读取 网络 文件

    Python之pandas数据加载.存储 Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 ...

  9. python docx 合并文档 图片_Python检查Word文件中包含特定关键字的所有页码

    推荐教材:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社图书详情:配套资源:用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系 ...

  10. python如何实现下载文件_python实现下载文件的三种方法

    python实现下载文件的三种方法 Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件. ...

最新文章

  1. Ubuntu之make:make命令行工具的简介、安装、使用方法之详细攻略
  2. Python命令行解析:IDE内点击Run运行代码直接得出结果、基于TF flags(或argparse、sys.argv)在Dos内命令行(一条命令)调用代码文件得出结果
  3. MongoDB解决“Error parsing YAML config file: yaml-cpp: error at line 2, column value(安装服务)
  4. Excel自动换行、Export2Excel 自动换行
  5. UBUNTU安装 SSH 服务
  6. 马克龙宣布15亿欧元投资AI,DeepMind拥吻巴黎
  7. db2v9/9.5高级应用开发_11月26日 l FloMASTER元器件开发及高级应用公开课
  8. 关键词分词工具_运用表格宏对阿里国际站关键词库进行分组
  9. 小学计算机课老师能教什么,小学信息技术试讲教案怎么写?抽到理论课怎么讲?...
  10. 第二十期 U-Boot添加web failsafe功能《路由器就是开发板》
  11. centOS安装libX11
  12. 在雨雾中穿行--张家界之旅103
  13. 【神操作】网络分线器短路导致公司网络瘫痪
  14. 统一用户认证和单点登录和授权的原理与流程
  15. 计算机网络技术中,分组交换技术在计算机网络技术中的作用及特点是什么?
  16. C++基本功和 Design Pattern系列 Operator 下
  17. 计算机弹奏大家来跳舞,大家来跳舞.PPT
  18. 洛伦茨方程的运动图像画法,可以控制播放速度
  19. TCPUDP 常见的错误码
  20. Delphi Class of

热门文章

  1. Stack-JPress免费博客模板
  2. 探究 Xcode 命令行用法三:xcodebuild 打包实践(上)
  3. 图像加密算法——Logistic混沌置乱
  4. Android之PopupMenu
  5. 爱立信四面楚歌断臂自救能否通过5G续写传奇?
  6. Ubuntu下使用C语言和MySQL模拟一个银行管理系统
  7. 机器学习和深度学习为什么感觉越学越不会,怎么解决这个问题?
  8. iOS 命令行安装app - ideviceinstaller
  9. mac 关于idevice的用法,查看连接设备的信息
  10. 华为无线AP4030,FIA--FAT模式更改