使用Nibabel库对nii格式图像的读写操作


Posted in Python onJuly 01, 2020

因为后期主要的研究方向是医学图像处理,而现有手头的大部分数据都是nii格式或者是hdr,img格式的数据,所以首先第一步我们需要解决图像的读写问题。

其实使用OpenCV也可以方便的进行图像读取,但是这里暂时只学习Nibabel这个库,后面有时间的话再研究OpenCV在python中的使用。

Nibabel的安装

可以通过pip进行安装

pip install nibabel

简单的图像读取和存储操作

import os
import nibabel as nib

# 读取图像
path='C:\Users\Darren\Desktop\example.nii.gz'
img=nib.load(path)
# 查看图像的长宽高
img.shape
# 图像进行仿射变换
img.affine.shape
# 保存图像
path_save='C:\Users\Darren\Desktop\example_save.nii.gz'

img.to_filename(path_save)
或者
nib.save(img,path_save)

补充知识:使用SimpleITK读取NII格式三维图像注意事项

SimpleITK

Python中SimpleITK被广泛用于医学图像的处理任务中,功能非常强大,但是使用的时候还需注意,尤其在图像读取时一定要注意维度。

读取NII格式的图像

#读取并显示NII图像文件
from matplotlib import pyplot as plt
import SimpleITK as sitk

img_path = 'res.nii.gz'
I = sitk.ReadImage(img_path)
img = sitk.GetArrayFromImage(I)
plt.imshow(img[1,...], cmap='gray', interpolation='bicubic')
plt.xticks([]), plt.yticks([]) and Y axis
plt.show()

上面的代码很简单,不多做解释,加入我们在最后加上

print(img.shape)

如果输出(300,200,120),其中分别表示该三维体数据在Z轴,Y轴,X轴上的尺寸,这和MATLAB以及ImageJ都有点不同,后续处理一定要注意。

以上这篇使用Nibabel库对nii格式图像的读写操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 Python
实例解析Python中的__new__特殊方法
Jun 02 Python
mac系统安装Python3初体验
Jan 02 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
python之文件读取一行一行的方法
Jul 12 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
Python中的特殊方法以及应用详解
Sep 20 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
Python数据分析入门之教你怎么搭建环境
May 13 Python
python 读取.nii格式图像实例
Jul 01 #Python
使用npy转image图像并保存的实例
Jul 01 #Python
python实现npy格式文件转换为txt文件操作
Jul 01 #Python
python与pycharm有何区别
Jul 01 #Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 #Python
浅谈TensorFlow之稀疏张量表示
Jun 30 #Python
tensorflow图像裁剪进行数据增强操作
Jun 30 #Python
You might like
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
firefox下input type="file"的size是多大
2011/10/24 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
Python内置函数的用法实例教程
2014/09/08 Python
Python内建模块struct实例详解
2018/02/02 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
python getpass实现密文实例详解
2019/09/24 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
数控专业毕业生求职信范文
2013/09/21 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
单位单身证明样本
2014/10/11 职场文书
校长师德表现自我评价
2015/03/05 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
公安忠诚教育心得体会
2016/01/23 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
解决python3安装pandas出错的问题
2021/05/20 Python
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python
Go语言grpc和protobuf
2022/04/13 Golang