使用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在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python 模块EasyGui详细介绍
Feb 19 Python
python3+PyQt5实现柱状图
Apr 24 Python
TensorFlow损失函数专题详解
Apr 26 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
Jul 06 Python
python实现事件驱动
Nov 21 Python
Python 从列表中取值和取索引的方法
Dec 25 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
keras slice layer 层实现方式
Jun 11 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 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下载远程文件类(支持断点续传)
2008/11/14 PHP
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
javascript 动态添加事件代码
2008/11/30 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
深入浅出webpack之externals的使用
2017/12/04 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
Python可变参数函数用法实例
2015/07/07 Python
Python3.4解释器用法简单示例
2019/03/22 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
Python定义函数实现累计求和操作
2020/05/03 Python
单位人事专员介绍信
2014/01/11 职场文书
初中校园之声广播稿
2014/01/15 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
贷款担保书
2015/01/20 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书