python 读取.nii格式图像实例


Posted in Python onJuly 01, 2020

我就废话不多说了,大家还是直接看代码吧~

# encoding=utf8
'''
查看和显示nii文件
'''
import matplotlib
matplotlib.use('TkAgg')
 
from matplotlib import pylab as plt
import nibabel as nib
from nibabel import nifti1
from nibabel.viewers import OrthoSlicer3D
 
example_filename = '../ADNI_nii/ADNI_002_S_0413_MR_MPR____N3__Scaled_2_Br_20081001114937668_S14782_I118675.nii'
 
img = nib.load(example_filename)
print (img)
print (img.header['db_name'])  #输出头信息
width,height,queue=img.dataobj.shape
OrthoSlicer3D(img.dataobj).show()
 
num = 1
for i in range(0,queue,10):
 
  img_arr = img.dataobj[:,:,i]
  plt.subplot(5,4,num)
  plt.imshow(img_arr,cmap='gray')
  num +=1
plt.show()

3D显示结果:

python 读取.nii格式图像实例

ADNI数据维度(256,256,170)分段显示:

python 读取.nii格式图像实例

补充知识:python nii图像扩充

我就废话不多说了,大家还是直接看代码吧~

import os
import nibabel as nib
import numpy as np
import math
 
src_us_folder = 'F:/src/ori'
src_seg_folder = 'G:/src/seg'
 
aug_us_folder = 'G:/aug/ori'
aug_seg_folder = 'G:/aug/seg'
 
img_n= 10
rotate_theta = np.array([0, math.pi/2])
 
# augmentation
aug_cnt = 0
for k in range(img_n):
  src_us_file = os.path.join(src_us_folder, (str(k) + '.nii'))
  src_seg_file = os.path.join(src_seg_folder, (str(k) + '_seg.nii'))
  # load .nii files
  src_us_vol = nib.load(src_us_file)
  src_seg_vol = nib.load(src_seg_file)
  # volume data
  us_vol_data = src_us_vol.get_data()
  us_vol_data = (np.array(us_vol_data)).astype('uint8')
  seg_vol_data = src_seg_vol.get_data()
  seg_vol_data = (np.array(seg_vol_data)).astype('uint8')
  # get refer affine matrix
  ref_affine = src_us_vol.affine
 
  ############### flip volume ###############
  flip_us_vol = np.fliplr(us_vol_data)
  flip_seg_vol = np.fliplr(seg_vol_data)
  # construct new volumes
  new_us_vol = nib.Nifti1Image(flip_us_vol, ref_affine)
  new_seg_vol = nib.Nifti1Image(flip_seg_vol, ref_affine)
  # save
  aug_us_file = os.path.join(aug_us_folder, (str(aug_cnt) + '.nii'))
  aug_seg_file = os.path.join(aug_seg_folder, (str(aug_cnt) + '_seg.nii'))
  nib.save(new_us_vol, aug_us_file)
  nib.save(new_seg_vol, aug_seg_file)
 
  aug_cnt = aug_cnt + 1
 
  ############### rotate volume ###############
  for t in range(len(rotate_theta)):
    print 'rotating %d theta of %d volume...' % (t, k)
    cos_gamma = np.cos(t)
    sin_gamma = np.sin(t)
    rot_affine = np.array([[1, 0, 0, 0],
                [0, cos_gamma, -sin_gamma, 0],
                [0, sin_gamma, cos_gamma, 0],
                [0, 0, 0, 1]])
    new_affine = rot_affine.dot(ref_affine)
    # construct new volumes
    new_us_vol = nib.Nifti1Image(us_vol_data, new_affine)
    new_seg_vol = nib.Nifti1Image(seg_vol_data, new_affine)
    # save
    aug_us_file = os.path.join(aug_us_folder, (str(aug_cnt) + '.nii'))
    aug_seg_file = os.path.join(aug_seg_folder, (str(aug_cnt) + '_seg.nii'))
    nib.save(new_us_vol, aug_us_file)
    nib.save(new_seg_vol, aug_seg_file)
 
    aug_cnt = aug_cnt + 1

以上这篇python 读取.nii格式图像实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中的内置函数getattr()介绍及示例
Jul 20 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
利用python修改json文件的value方法
Dec 31 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
Python中*args和**kwargs的区别详解
Sep 17 Python
Python 将 QQ 好友头像生成祝福语的实现代码
May 03 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
Python+OpenCV图像处理——实现轮廓发现
Oct 23 Python
Python自然语言处理之切分算法详解
Apr 25 Python
基于Python实现的购物商城管理系统
Apr 27 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
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 #Python
You might like
php输出1000以内质数(素数)示例
2014/02/16 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
js变换显示图片的实例
2013/04/16 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
JavaScript驾驭网页-DOM
2016/03/24 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
python将图片转base64,实现前端显示
2020/01/09 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
课程设计心得体会
2013/12/28 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
电子商务专业求职信
2014/07/10 职场文书
教师党员自我评价范文
2015/03/04 职场文书
优质服务标语口号
2015/12/26 职场文书
mysql查找连续出现n次以上的数字
2022/05/11 MySQL