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获取文件后缀名及批量更新目录下文件后缀名的方法
Nov 11 Python
Python监控主机是否存活并以邮件报警
Sep 22 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
学生信息管理系统python版
Oct 17 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
详解python 中in 的 用法
Dec 12 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
Python面向对象之成员相关知识总结
Jun 24 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
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
php中使用sftp教程
2015/03/30 PHP
PHP异常处理浅析
2015/05/12 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
详解python解压压缩包的五种方法
2019/07/05 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
python分布式编程实现过程解析
2019/11/08 Python
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
物业管理公司实习生自我鉴定
2013/09/19 职场文书
生产厂厂长岗位职责
2013/12/25 职场文书
规划编制实施方案
2014/03/15 职场文书
《恐龙》教学反思
2014/04/27 职场文书
大型营销活动计划书
2014/04/28 职场文书
毕业评语大全
2014/05/04 职场文书
社区志愿者活动总结
2014/06/26 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
golang import自定义包方式
2021/04/29 Golang
深入浅析React中diff算法
2021/05/19 Javascript
Python实现智慧校园自动评教全新版
2021/06/18 Python