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 相关文章推荐
vc6编写python扩展的方法分享
Jan 17 Python
Django中的“惰性翻译”方法的相关使用
Jul 27 Python
Python数据库的连接实现方法与注意事项
Feb 27 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
Mac 上切换Python多版本
Jun 17 Python
Python人脸识别初探
Dec 21 Python
python删除某个字符
Mar 19 Python
Python处理CSV与List的转换方法
Apr 19 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
Python 实现Mac 屏幕截图详解
Oct 05 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中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
PHP多态代码实例
2015/06/26 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
自定义jQuery选项卡插件实例
2013/03/27 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
工作中常用到的ES6语法
2018/09/04 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python3实现基于用户的协同过滤
2018/05/31 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
投标担保书范文
2014/04/02 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
单身证明格式样本
2015/06/15 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
导游词之镇江焦山
2019/11/21 职场文书
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技