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中使用dict和set方法的教程
Apr 27 Python
Python 3中的yield from语法详解
Jan 18 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
Python深度优先算法生成迷宫
Jan 22 Python
用python与文件进行交互的方法
Mar 01 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
使用Python获取网段IP个数以及地址清单的方法
Nov 01 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
python实现人脸签到系统
Apr 13 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
基于Keras的格式化输出Loss实现方式
Jun 17 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中使用Oracle数据库(3)
2006/10/09 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
js form action动态修改方法
2008/11/04 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
Vue数组更新及过滤排序功能
2017/08/10 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
使用Python的判断语句模拟三目运算
2015/04/24 Python
python开发中module模块用法实例分析
2015/11/12 Python
Python实现的归并排序算法示例
2017/11/21 Python
python定位xpath 节点位置的方法
2019/08/27 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Python-for循环的内部机制
2020/06/12 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
医院标语大全
2014/06/23 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle