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之for循环语句
Oct 02 Python
python创建和删除目录的方法
Apr 29 Python
浅谈Python的文件类型
May 30 Python
基于Django的ModelForm组件(详解)
Dec 07 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
python按行读取文件,去掉每行的换行符\n的实例
Apr 19 Python
windows下添加Python环境变量的方法汇总
May 14 Python
Python pandas库中的isnull()详解
Dec 26 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
Python中Yield的基本用法
Oct 18 Python
python实现定时发送邮件
Dec 23 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
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
python else语句在循环中的运用详解
2020/07/06 Python
Python连接Impala实现步骤解析
2020/08/04 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
生日宴会答谢词
2014/01/09 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
体操比赛口号
2014/06/10 职场文书
党员个人对照检查材料
2014/10/01 职场文书
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python
muduo TcpServer模块源码分析
2022/04/26 Redis