python使用nibabel和sitk读取保存nii.gz文件实例


Posted in Python onJuly 01, 2020

nii.gz格式是医学图像常用的压缩格式,python中可用nibabel和sitk来读取保存。

使用nibabel

由于使用nibabel图像会旋转90度,所以读取保存的时候还得保存映射信息,3维图像格式为(z, y, x)

读取nii.gz文件

img = nib.load('xxxxx.nii.gz')
img_affine = img.affine
img = img.get_data()

保存nii.gz文件

nib.Nifti1Image(img,img_affine).to_filename('xxxxx.nii.gz')

使用sitk

使用sitk读取nii时,读取出来的还是图片格式,可以使用他自带的函数进行处理,不过速度比较慢,建议使用GetArrayFromImage转换成numpy格式再处理,3维图像格式为(x, y, z)

读取nii.gz文件

img = sitk.ReadImage('xxxxx.nii.gz')

img = sitk.GetArrayFromImage(img)

保存nii.gz文件

out = sitk.GetImageFromArray(img)

sitk.WriteImage(out,'xxxxx.nii.gz')

在numpy数组和nibabel或sitk中相互转换时,要注意数据的格式,一般保存为int或uint类型。比如输入nii为16位有符号整型时,我们可能需要转换成0~255灰度图,可用如下代码:

img = sitk.ReadImage('xxxxx.nii.gz')
img = sitk.Cast(sitk.RescaleIntensity(img),sitk.sitkUInt8)
img = sitk.GetArrayFromImage(img)

补充知识:SimpleITK保存Nii文件与错误处理方式

Reason:

把处理好的分割结果保存为nii文件,用ITKsnap读取时出现了如下错误。

python使用nibabel和sitk读取保存nii.gz文件实例

SimpleITK读取和保存Nii文件

1. 读取

import SimpleITK as sitk
filename = './xxx.nii'
ct = sitk.ReadImage(filename)
ct_array = sitk.GetArrayFromImage(ct)

origin =ct.GetOrigin()
direction = ct.GetDirection()
space = ct.GetSpacing()

2. 保存

savedImg = sitk.GetImageFromArray(ct_array)
savedImg.SetOrigin(origin)
savedImg.SetDirection(direction)
savedImg.SetSpacing(space)
sitk.WriteImage(savedImg, saved_name)

Note:被保存的ct_array数组一定是ndarray,float类型的才能被ITKsnap正确读取,如果是int类型的,就会出现上图中的错误。

以上这篇python使用nibabel和sitk读取保存nii.gz文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
python获取beautifulphoto随机某图片代码实例
Dec 18 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
详解Python Socket网络编程
Jan 05 Python
使用python实现rsa算法代码
Feb 17 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
用python写爬虫简单吗
Jul 28 Python
python中取整数的几种方法
Nov 07 Python
.img/.hdr格式转.nii格式的操作
Jul 01 #Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
Jul 01 #Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
Jul 01 #Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 #Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 #Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 #Python
python 读取.nii格式图像实例
Jul 01 #Python
You might like
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
php微信开发接入
2016/08/27 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
php输出图像的方法实例分析
2017/02/16 PHP
动态加载iframe
2006/06/16 Javascript
JavaScript Date对象使用总结
2009/05/14 Javascript
自己的js工具 Cookie 封装
2009/08/21 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
企业给企业的表扬信
2014/01/13 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
员工保密协议书
2014/09/27 职场文书
Python基础之条件语句详解
2021/06/16 Python