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实现异步回调机制代码分享
Jan 10 Python
python抓取网页时字符集转换问题处理方案分享
Jun 19 Python
Python中获取对象信息的方法
Apr 27 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
Python实现比较扑克牌大小程序代码示例
Dec 06 Python
tensorflow更改变量的值实例
Jul 30 Python
Django restframework 源码分析之认证详解
Feb 22 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
如何更优雅地写python代码
Jul 02 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
pd.DataFrame中的几种索引变换的实现
Jun 16 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作的文本留言本的例子(六)
2006/10/09 PHP
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
javascript 计算两个整数的百分比值
2009/12/26 Javascript
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
详解vue v-model
2020/08/31 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
你常见到的runtime exception
2016/09/05 面试题
毕业生自荐书
2014/02/03 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
岗位聘任书范文
2014/03/29 职场文书
违章停车检讨书
2014/10/21 职场文书
检讨书怎么写
2015/01/23 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python