使用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 相关文章推荐
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
在Python中操作文件之seek()方法的使用教程
May 24 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
Python3离线安装Requests模块问题
Oct 13 Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
Python 实现集合Set的示例
Dec 21 Python
用Python selenium实现淘宝抢单机器人
Jun 18 Python
Python使用DFA算法过滤内容敏感词
Apr 22 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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 面向对象 PHP5 中的常量
2010/05/05 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php递归json类实例
2014/12/02 PHP
php实现简单四则运算器
2020/11/29 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
javascript实现连续赋值
2015/08/10 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
python3生成随机数实例
2014/10/20 Python
python使用7z解压apk包的方法
2015/04/18 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
如何在python中写hive脚本
2019/11/08 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
总经理岗位职责
2013/11/09 职场文书
教师节商场活动方案
2014/02/13 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL