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操作列表之List.insert()方法的使用
May 20 Python
目前最全的python的就业方向
Jun 05 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
20行python代码实现人脸识别
May 05 Python
python如果快速判断数字奇数偶数
Nov 13 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
Jan 14 Python
Python如何进行时间处理
Aug 06 Python
如何基于Python pygame实现动画跑马灯
Nov 18 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
python3处理word文档实例分析
Dec 01 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
JsRender实用入门教程
2014/10/31 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
财务主管的岗位职责
2013/12/30 职场文书
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers