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中使用SQLite的简单教程
Apr 29 Python
Django异步任务之Celery的基本使用
Mar 23 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
python 爬取学信网登录页面的例子
Aug 13 Python
python异常处理try except过程解析
Feb 03 Python
python游戏开发的五个案例分享
Mar 09 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
requests在python中发送请求的实例讲解
Feb 17 Python
如何在Python项目中引入日志
May 31 Python
实例详解Python的进程,线程和协程
Mar 13 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
mysql建立外键
2006/11/25 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
php中JSON的使用与转换
2015/01/14 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
大学生党课思想汇报
2013/12/29 职场文书
农村婚礼证婚词
2014/01/10 职场文书
趣味体育活动方案
2014/02/08 职场文书
班长自荐书范文
2014/02/11 职场文书
超市中秋节活动方案
2014/02/12 职场文书
林肯就职演讲稿
2014/05/19 职场文书
法人委托书
2014/07/31 职场文书
工作证明格式及范本
2014/09/12 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
会计电算化实训报告
2014/11/04 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
投标售后服务承诺书
2015/04/29 职场文书
初一年级组工作总结
2015/08/12 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
大学生干部培训心得体会
2016/01/06 职场文书