python使用nibabel和sitk读取保存nii.gz文件实例
作者:小鹿学长 发布时间:2021-03-11 16:12:53
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读取时出现了如下错误。
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类型的,就会出现上图中的错误。
来源:https://blog.csdn.net/u010409517/article/details/103816549


猜你喜欢
- 现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率。今天说下用python结合adb命令去实现安卓手机端的通话压力测试
- 1.什么是ORMORM 全拼Object-Relation Mapping.中文意为 对象-关系映射.在MVC/MVT设
- 准备工作我准备了两个表格数据,以此展示本期的表格的合并的工作。数据示例如下:表格1表格2接着将这两个表格的数据分别导入python中,导入代
- 最终的目标是想这样的,在JavaScript里写一个swing来实现确定取消,来决定是否执行这个功能的,但是在执行的过程中,出现了一点问题,
- 元组Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并
- openpyxlopenpyxl是⼀个Python库,用于读取/写⼊Excel 2010 xlsx / xlsm / xltx / xltm
- 因为生活中老是忘记各种事情,刚好又在学python,便突发奇想通过python实现提醒任务的功能(尽管TIM有定时功能),也可定时给好友、群
- 直接上代码图片就使用我家爽妹子的吧如果没有安装pil模块的话先cmd安装下输入:pip install pillow# -*- coding
- 在路上发现好多人都喜欢用耳机听小说,同事居然可以一整天的带着一只耳机听小说。小编表示非常的震惊。今天就用 Python 下载听小说 
- 本文实例为大家分享了JS实现拖动模糊框特效的具体代码,供大家参考,具体内容如下需求:在图片上拖动按钮,图片蒙层慢慢覆盖,当蒙层边缘碰到左右下
- 本文实例讲述了go语言日志记录库简单使用方法。分享给大家供大家参考。具体实现方法如下:package mainimport ( &
- 前言:大家在写代码的时候,经常会使用print打印日志方便排查问题,然而print的问题就是太过简单,缺少时间、日志级别等格式化信息。Pyt
- 1.关系模型序列化1.1 什么是序列化?什么是反序列化?序列化的意思是把字典的形式转化成Json格式。当我们展示数据的时候需要使用。反序列化
- 用比较笨的方法来做abc ="AlkjA;lkjlkjAlkAkjAlkjAAAA" if instr(abc,&quo
- 直接以数值固定大小根据屏幕大小固定大小禁止最大化按钮MainWindow.setWindowFlags(QtCore.Qt.WindowMi
- 1.下载mysql网址: https://dev.mysql.com/downloads/mysql/2.选择源码包,通用版点击下载直接下载
- 场景产品中有一张图片表pics,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化表结构很简单,主要字段:u
- Python 3中的File对象不支持next()方法。 Python 3有一个内置函数next(),它通过调用其next ()方法从迭代器
- 一、前言恭喜你,学明白类,你已经学会所有基本知识了。这章算是一个娱乐篇,十分简单,了解一下pyautogui模块,这算是比较好学还趣味性十足
- 最近在看吴恩达的机器学习课程,自己用python实现了其中的logistic算法,并用梯度下降获取最优值。logistic分类是一个二分类问