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中声明只包含一个元素的元组数据方法
Aug 25 Python
C#返回当前系统所有可用驱动器符号的方法
Apr 18 Python
Python数据类型详解(一)字符串
May 08 Python
python简单实现获取当前时间
Aug 27 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 Python
python3.6数独问题的解决
Jan 21 Python
使用python 写一个静态服务(实战)
Jun 28 Python
postman传递当前时间戳实例详解
Sep 14 Python
python与pycharm有何区别
Jul 01 Python
python 进程池pool使用详解
Oct 15 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 register_shutdown_function()函数的使用示例
2015/06/23 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
PDO::rollBack讲解
2019/01/29 PHP
js或css实现滚动广告的几种方案
2010/01/28 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
2017/02/19 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
vue中组件的3种使用方式详解
2019/03/23 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
python快速查找算法应用实例
2014/09/26 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
python检测某个变量是否有定义的方法
2015/05/20 Python
Django框架模板的使用方法示例
2019/05/25 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
最新英语专业学生求职信范文
2013/09/21 职场文书
高一地理教学反思
2014/01/18 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
单位活动策划方案
2014/08/17 职场文书
考试作弊检讨书
2014/10/21 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
golang import自定义包方式
2021/04/29 Golang
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA