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通过线程实现定时器timer的方法
Mar 16 Python
Python3.2中的字符串函数学习总结
Apr 23 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
python中PIL安装简单教程
Apr 21 Python
在python image 中安装中文字体的实现方法
Aug 22 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
python函数中将变量名转换成字符串实例
May 11 Python
python 模拟登陆github的示例
Dec 04 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 Python
Python 实现进度条的六种方式
Jan 06 Python
基于python的matplotlib制作双Y轴图
Apr 20 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语法(3)
2006/10/09 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
php获取操作系统语言代码
2013/11/04 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
基于python实现雪花算法过程详解
2019/11/16 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
python实现人机五子棋
2020/03/25 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
应届生保险求职信
2013/11/11 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
挂科检讨书范文
2014/02/20 职场文书
红色影片观后感
2015/06/18 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
nginx结合openssl实现https的方法
2021/07/25 Servers
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL
PHP RabbitMQ消息列队
2022/05/11 PHP