使用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中用altzone()方法处理时区的教程
May 22 Python
Python实现栈的方法
May 26 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
基于python的socket实现单机五子棋到双人对战
Mar 24 Python
python绘制评估优化算法性能的测试函数
Jun 25 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 Python
Python configparser模块常用方法解析
May 22 Python
python适合做数据挖掘吗
Jun 16 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
python基于openpyxl生成excel文件
Dec 23 Python
基于Python实现天天酷跑功能
Jan 06 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
2019十大人气国漫
2020/03/13 国漫
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Python self用法详解
2020/11/28 Python
html5 标签
2009/07/16 HTML / CSS
极简的HTML5模版
2015/07/09 HTML / CSS
Myholidays美国:在线旅游网站
2019/08/16 全球购物
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
新闻专业个人自我评价
2013/09/21 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
《我的信念》教学反思
2014/02/15 职场文书
国庆节活动总结
2014/08/26 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
个人原因辞职信模板
2015/05/13 职场文书
活动经费申请报告
2015/05/15 职场文书
Redis分布式锁的7种实现
2022/04/01 Redis