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多线程扫描端口示例
Jan 16 Python
Python的函数的一些高阶特性
Apr 27 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
Python可迭代对象操作示例
May 07 Python
python实现的config文件读写功能示例
Sep 24 Python
python中bytes和str类型的区别
Oct 21 Python
详解Django admin高级用法
Nov 06 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 Python
QML用PathView实现轮播图
Jun 03 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
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
玩转方法:call和apply
2014/05/08 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
JSON对象转化为字符串详解
2017/08/11 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
python解析html开发库pyquery使用方法
2014/02/07 Python
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Django中的文件的上传的几种方式
2018/07/23 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
python numpy 反转 reverse示例
2019/12/04 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
社区健康教育实施方案
2014/03/18 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
教师外出学习心得体会
2016/01/18 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android