使用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实现dnspod自动更新dns解析的方法
Feb 14 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
Jan 14 Python
Django实现发送邮件功能
Jul 18 Python
Django模型修改及数据迁移实现解析
Aug 01 Python
在Python中字符串、列表、元组、字典之间的相互转换
Nov 15 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
python如何支持并发方法详解
Jul 25 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新手上路(二)
2006/10/09 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
js实现飞机大战游戏
2020/08/26 Javascript
vue中activated的用法
2021/01/03 Vue.js
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
用Python实现换行符转换的脚本的教程
2015/04/16 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
利用python在excel中画图的实现方法
2020/03/17 Python
如何在python中执行另一个py文件
2020/04/30 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
opencv 阈值分割的具体使用
2020/07/08 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
学生请假条格式
2014/04/11 职场文书
爱情保证书
2015/01/17 职场文书
行政二审代理词
2015/05/25 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书