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获取指定文件夹下的文件名的方法
Feb 06 Python
python使用Flask操作mysql实现登录功能
May 14 Python
Python开启线程,在函数中开线程的实例
Feb 22 Python
如何使用Python实现自动化水军评论
Jun 26 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
Django Python 获取请求头信息Content-Range的方法
Aug 06 Python
python 并发编程 非阻塞IO模型原理解析
Aug 20 Python
Django自带日志 settings.py文件配置方法
Aug 30 Python
Python列表切片常用操作实例解析
Mar 10 Python
keras:model.compile损失函数的用法
Jul 01 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
Django cookie和session的应用场景及如何使用
Apr 29 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
用javascript实现自定义标签
2007/05/08 Javascript
js常见表单应用技巧
2008/01/09 Javascript
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
一些技巧性实用js代码小结
2009/10/14 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
护理专业大学生自我推荐信
2014/01/25 职场文书
大学生英语演讲稿
2014/04/24 职场文书
阳光体育活动总结
2014/04/30 职场文书
搞笑车尾标语
2014/06/23 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
儿子满月酒致辞
2015/07/29 职场文书
《实心球》教学反思
2016/02/23 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书