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中线程问题的简单讲解
Apr 03 Python
Python OS模块常用函数说明
May 23 Python
Python实现选择排序
Jun 04 Python
Python中实现switch功能实例解析
Jan 11 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
将pip源更换到国内镜像的详细步骤
Apr 07 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
Python内置函数及功能简介汇总
Oct 13 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 Python
python实现简单聊天功能
Jul 07 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 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中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
Python字符串详细介绍
2015/05/09 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
学习python分支结构
2019/05/17 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
Python基于内置函数type创建新类型
2020/10/22 Python
python3中编码获取网页的实例方法
2020/11/16 Python
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
致400米运动员广播稿
2014/02/07 职场文书
班组长竞聘书
2014/03/31 职场文书
消防志愿者活动方案
2014/08/23 职场文书
实习单位证明范例
2014/11/17 职场文书
react中的DOM操作实现
2021/06/30 Javascript