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解析文件示例
Jan 23 Python
python用字典统计单词或汉字词个数示例
Apr 22 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
基于python实现聊天室程序
Jul 27 Python
利用python实现对web服务器的目录探测的方法
Feb 26 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
Python Pandas实现数据分组求平均值并填充nan的示例
Jul 04 Python
Python函数装饰器原理与用法详解
Aug 16 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
Python selenium实现断言3种方法解析
Sep 08 Python
matplotlib制作雷达图报错ValueError的实现
Jan 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
笑谈配置,使用Smarty技术
2007/01/04 PHP
PHP加密技术的简单实现
2016/09/04 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
js select常用操作控制代码
2010/03/16 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
使用Vue-Router 2实现路由功能实例详解
2017/11/14 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
Python调用C语言开发的共享库方法实例
2015/03/18 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
Python输出指定字符串的方法
2020/02/06 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
促销活动策划方案
2014/01/12 职场文书
婚假请假条怎么写
2014/04/10 职场文书
2014年服务员工作总结
2014/11/18 职场文书
骨干教师申报材料
2014/12/17 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis