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 29 Python
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
使用python检测主机存活端口及检查存活主机
Oct 12 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 Python
Python实现读取json文件到excel表
Nov 18 Python
django中send_mail功能实现详解
Feb 06 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
python多线程分块读取文件
Aug 29 Python
使用Python进行防病毒免杀解析
Dec 13 Python
django日志默认打印request请求信息的方法示例
May 17 Python
Python3如何使用range函数替代xrange函数
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
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
什么是属性访问器
2015/10/26 面试题
应届生船舶驾驶求职信
2013/10/19 职场文书
教师推荐信范文
2013/11/24 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
行政上诉状范文
2015/05/23 职场文书
丧事主持词
2015/07/02 职场文书
详解SQL报错盲注
2022/07/23 SQL Server