使用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代码写的12306订票代码
Dec 20 Python
python使用matplotlib绘制折线图教程
Feb 08 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
Apr 02 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
python使用tkinter库实现五子棋游戏
Jun 18 Python
python分数表示方式和写法
Jun 26 Python
python 绘制拟合曲线并加指定点标识的实现
Jul 10 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
Python3 A*寻路算法实现方式
Dec 24 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 Python
Keras 使用 Lambda层详解
Jun 10 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
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
php分页函数完整实例代码
2014/09/22 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
深入理解javascript动态插入技术
2013/11/12 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
工作自我评价怎么写
2014/01/29 职场文书
《问银河》教学反思
2014/02/19 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
Django drf请求模块源码解析
2021/06/08 Python