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脚本生成Android SALT扰码的方法
Sep 18 Python
python和C语言混合编程实例
Jun 04 Python
Python判断操作系统类型代码分享
Nov 22 Python
python中pass语句用法实例分析
Apr 30 Python
Python3简单实例计算同花的概率代码
Dec 06 Python
Selenium元素的常用操作方法分析
Aug 10 Python
Django中的ajax请求
Oct 19 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 Python
django 取消csrf限制的实例
Mar 13 Python
python如何删除文件、目录
Jun 23 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
咖啡语言
2021/03/03 咖啡文化
PHP实现Soap通讯的方法
2014/11/03 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
学生评语大全
2014/04/18 职场文书
作风大整顿心得体会
2014/09/10 职场文书
学习心理学的体会
2014/11/07 职场文书
初三语文教学反思
2016/03/03 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书