使用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 相关文章推荐
Windows8下安装Python的BeautifulSoup
Jan 22 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
Nov 15 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
Python字符串逆序的实现方法【一题多解】
Feb 18 Python
python使用selenium实现批量文件下载
Mar 11 Python
详解Django CAS 解决方案
Oct 30 Python
python 实现list或string按指定分段
Dec 25 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
python从ftp获取文件并下载到本地
Dec 05 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
使用python统计文件行数示例分享
2014/02/21 Python
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Django视图和URL配置详解
2018/01/31 Python
代码分析Python地图坐标转换
2018/02/08 Python
PyQt5实现拖放功能
2018/04/25 Python
Python 修改列表中的元素方法
2018/06/26 Python
python之文件读取一行一行的方法
2018/07/12 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
pandas 空数据处理方法详解
2019/11/02 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
计算机毕业生自荐信
2014/06/12 职场文书
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
使用scrapy实现增量式爬取方式
2022/06/21 Python