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中精确输出JSON浮点数的方法
Apr 18 Python
Python中的异常处理学习笔记
Jan 28 Python
python读取文本中的坐标方法
Oct 14 Python
用pycharm开发django项目示例代码
Jun 13 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 Python
基于python实现模拟数据结构模型
Jun 12 Python
python中有帮助函数吗
Jun 19 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
使用Composer安装Yii框架的方法
2016/03/15 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
PHP中常用的魔术方法
2017/04/28 PHP
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
新手简单了解vue
2019/05/29 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
进一步了解Python中的XML 工具
2015/04/13 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
python实现最大优先队列
2019/08/29 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
使用索引有什么好处
2016/07/27 面试题
教师校本培训方案
2014/02/26 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python