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中subprocess的简单使用示例
Jul 28 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
Python异常的检测和处理方法
Oct 26 Python
Python判断以什么结尾以什么开头的实例
Oct 27 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
django query模块
Apr 20 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
TensorFlow基本的常量、变量和运算操作详解
Feb 03 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 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实现PDO的mysql数据库操作类
2014/12/12 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
PHP7新特性
2021/03/09 PHP
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
js中DOM三级列表(代码分享)
2017/03/20 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python实现按日期归档文件
2021/01/30 Python
实习教师个人的自我评价
2013/11/08 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
刑事法律意见书
2015/06/04 职场文书
小平小道观后感
2015/06/09 职场文书
客户答谢会致辞
2015/07/30 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
详解Nginx 工作原理
2021/03/31 Servers
matlab xlabel位置的设置方式
2021/05/21 Python
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android