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 相关文章推荐
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
图文详解python安装Scrapy框架步骤
May 20 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
在vscode中配置python环境过程解析
Sep 28 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
Pytorch的mean和std调查实例
Jan 02 Python
jupyter note 实现将数据保存为word
Apr 14 Python
Python使用pdb调试代码的技巧
May 03 Python
django 外键创建注意事项说明
May 20 Python
Python 如何在字符串中插入变量
Aug 01 Python
Python加密技术之RSA加密解密的实现
Apr 08 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中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
Vue程序调试的方法
2019/06/17 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
Python中动态创建类实例的方法
2017/03/24 Python
python机器人行走步数问题的解决
2018/01/29 Python
python读取xlsx的方法
2018/12/25 Python
详解python深浅拷贝区别
2019/06/24 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
python 写一个性能测试工具(一)
2020/10/24 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
主要的Ajax框架都有什么
2013/11/14 面试题
千元咖啡店的创业计划书范文
2013/12/29 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
项目工作说明书
2014/07/29 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
个人总结与自我评价
2015/02/14 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
运动会新闻报道稿
2015/07/22 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
Python 线程池模块之多线程操作代码
2021/05/20 Python
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL