使用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采集博客中上传的QQ截图文件
Jul 18 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
浅析Python中return和finally共同挖的坑
Aug 18 Python
Python2/3中urllib库的一些常见用法
Dec 19 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
想学python 这5本书籍你必看!
Dec 11 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 Python
基于FME使用Python过程图解
May 13 Python
Django contrib auth authenticate函数源码解析
Nov 12 Python
Python 实现集合Set的示例
Dec 21 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来检测proxy
2006/10/09 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
[原创]php使用curl判断网页404(不存在)的方法
2016/06/23 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
python遍历小写英文字母的方法
2019/01/02 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
中间件分为哪几类
2016/09/18 面试题
CAD制图设计师自荐信
2014/01/29 职场文书
2015年测量员工作总结
2015/05/23 职场文书
python3操作redis实现List列表实例
2021/08/04 Python
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js