我就废话不多说了,大家还是直接看代码吧~

# 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显示结果:

ADNI数据维度(256,256,170)分段显示:

补充知识: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 读取.nii格式图像实例相关推荐

  1. python 读取大文件_Python读取大文件

    1. 前言 前几天在做日志分析系统,需要处理几十G的文件,我尝试用原来的for line in open(filepath).readlines()处理,但停顿好久也没变化,可见占用不小的内存.在网上 ...

  2. python 读取mat文件_python读取mat或npy文件以及将mat文件保存为npy文件(或npy保存为mat)的方法...

    numpy h5py scipy 读取mat文件并存为npy格式文件 具体见代码,注意h5py的转置问题 import numpy as np from scipy import io mat = i ...

  3. python保存为mat文件_Python读取mat文件保存为pickle格式的实例代码

    Python使用pickle模块储存对象操作 Python读取mat文件,并保存为pickle格式的方法 这两天在搞Theano,要把mat文件转成pickle格式载入Python. Matlab是把 ...

  4. python怎么保存为nii文件_python处理nii文件

    第一步安装nibabel,可以使用命令:pip install nibabel 之后: from nibabel.viewers import OrthoSlicer3D as osd import ...

  5. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  6. python 读取yml文件_Python 读取 yaml 配置文件 | 文艺数学君

    摘要这一篇介绍 Python 中使用 yaml 的方式加载配置文件,包含关于 pyyaml 的简单使用,读入和写入配置文件. 简介 之前我们介绍过使用 configparser 来读取配置文件(Pyt ...

  7. python生成表格文件_python读取和生成excel文件

    1.用python读取csv文件: csv是逗号分隔符格式 一般我们用的execl生成的格式是xls和xlsx 直接重命名为csv的话会报错: Error: line contains NULL by ...

  8. python保存mat文件_python读取文件——python读取和保存mat文件

    首先我们谈谈MarkDown编辑器,我感觉些倒是挺方便的,因为用惯了LaTeX,对于MarkDown还是比较容易上手的,但是我发现,MarkDown中有这样几个问题一直没能找到具体的解决方法:图片大小 ...

  9. python导入mat文件_python读取并写入mat文件的方法

    先给大家介绍下python读取并写入mat文件的方法 用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); sav ...

最新文章

  1. python如何定义类_Python 面向对象
  2. Spring复习笔记:4
  3. Android音频播放实例
  4. CentOS6.5编译安装apache2.4--有软件包!
  5. android4.3 截屏功能的尝试与失败分析
  6. boost::hana::take_back_c用法的测试程序
  7. 计算机e盘拒绝访问,电脑中的D盘与E盘拒绝访问是为什么?
  8. Vue使用Vuex一步步封装并使用store
  9. 对java的final,finally,finalize应用场景,你用对了吗
  10. rest-framework框架的基本组件
  11. 69篇关于微博的研究论文和报告
  12. 人脸数据集汇总(附百度云盘链接)
  13. 接线端子冲击和振动测试要求
  14. Scrapy入门案例,抓取美剧天堂的前100最新
  15. 一壶浊酒尽余欢、今宵别梦寒!
  16. python我国有13亿人口、假定按人口年增长0.8%计算_2000年世界人口50亿.按年增长率8%0计算.多少年后.世界人口超过100亿.请设计出一个算法.并画出程序框图....
  17. 弘辽科技:信息层面售假排查逻辑
  18. MongoDB——MongoDB安装和增删改查操作
  19. Windows Print Spooler CVE-2021-1675 漏洞复现
  20. php 0xef 0xbb 0xbf,utf-8编码的csv文件,用excel打开乱码,解决办法,在输出前加 0xEF,0xBB,0xBF三个char...

热门文章

  1. android图片分辨率改变,android 通过修改图片像素实现CircleImageView
  2. 工业相机和普通相机的区别详解_机器视觉网:工业相机与普通相机的四大区别...
  3. 悲观锁和乐观锁_浅谈数据库悲观锁和乐观锁
  4. 论文写作思路_2018年的16个写作思路
  5. linus为什么开源_Linus Torvalds谈个性崇拜,美国最好的开源学校等等
  6. (39) gulp开发服务器
  7. Spring Boot 应用监控
  8. 设计模式 迪米特法则
  9. JSON语法之JSON 对象
  10. java代码着色_给java代码着色源码