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用pickle模块实现“增删改查”的简易功能
Jun 07 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
详解python中的 is 操作符
Dec 26 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
python实现linux下抓包并存库功能
Jul 18 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
Python用字典构建多级菜单功能
Jul 11 Python
Python 脚本的三种执行方式小结
Dec 21 Python
Selenium自动化测试工具使用方法汇总
Jun 12 Python
Python类型转换的魔术方法详解
Dec 23 Python
Python 阶乘详解
Oct 05 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
thinkphp3.x中cookie方法的用法分析
2016/05/19 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
详解node.js 事件循环
2020/07/22 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
Python编程中的异常处理教程
2015/08/21 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
python字典与json转换的方法总结
2020/12/28 Python
如何用python 操作zookeeper
2020/12/28 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
售后服务承诺书模板
2014/05/21 职场文书
啦啦队口号大全
2014/06/16 职场文书
教师节活动总结
2014/08/29 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
vue2实现provide inject传递响应式
2021/05/21 Vue.js