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 相关文章推荐
在Django中使用Sitemap的方法讲解
Jul 22 Python
python并发2之使用asyncio处理并发
Dec 21 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
用Python实现读写锁的示例代码
Nov 05 Python
Python中的取模运算方法
Nov 10 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
pytorch 加载(.pth)格式的模型实例
Aug 20 Python
简单分析python的类变量、实例变量
Aug 23 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
JS location几个方法小姐
2008/07/09 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
对于Python中线程问题的简单讲解
2015/04/03 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
Python3解释器知识点总结
2019/02/19 Python
简单了解Python3里的一些新特性
2019/07/13 Python
python 实现list或string按指定分段
2019/12/25 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
python 实现性别识别
2020/11/21 Python
如何开启linux的ssh服务
2015/02/14 面试题
汽车运用工程毕业生自荐信
2013/10/29 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
党建示范点实施方案
2014/03/12 职场文书
环保倡议书范文
2014/05/12 职场文书
签约仪式策划方案
2014/06/02 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python