使用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 相关文章推荐
Python Property属性的2种用法
Jun 21 Python
详解Python中的from..import绝对导入语句
Jun 21 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
pytorch索引查找 index_select的例子
Aug 18 Python
Python request操作步骤及代码实例
Apr 13 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
Python 列表中的修改、添加和删除元素的实现
Jun 11 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实现观察者模式(Observer)
2015/12/09 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
js 数值项目的格式化函数代码
2010/05/14 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
js切换光标示例代码
2013/10/10 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
js验证上传图片的方法
2015/05/12 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
python 域名分析工具实现代码
2009/07/15 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
python模块之re正则表达式详解
2017/02/03 Python
python实现解数独程序代码
2017/04/12 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
Python decimal模块使用方法详解
2020/06/08 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
PHP如何调用MYSQL存储过程
2014/05/30 面试题
信用社员工先进事迹材料
2014/02/04 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL