python读取nii文件_python 读取.nii格式图像实例
我就废话不多说了,大家还是直接看代码吧~
# 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格式图像实例相关推荐
- python 读取大文件_Python读取大文件
1. 前言 前几天在做日志分析系统,需要处理几十G的文件,我尝试用原来的for line in open(filepath).readlines()处理,但停顿好久也没变化,可见占用不小的内存.在网上 ...
- 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 ...
- python保存为mat文件_Python读取mat文件保存为pickle格式的实例代码
Python使用pickle模块储存对象操作 Python读取mat文件,并保存为pickle格式的方法 这两天在搞Theano,要把mat文件转成pickle格式载入Python. Matlab是把 ...
- python怎么保存为nii文件_python处理nii文件
第一步安装nibabel,可以使用命令:pip install nibabel 之后: from nibabel.viewers import OrthoSlicer3D as osd import ...
- python生成表格文件_python 读取excel文件生成sql文件实例详解
python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...
- python 读取yml文件_Python 读取 yaml 配置文件 | 文艺数学君
摘要这一篇介绍 Python 中使用 yaml 的方式加载配置文件,包含关于 pyyaml 的简单使用,读入和写入配置文件. 简介 之前我们介绍过使用 configparser 来读取配置文件(Pyt ...
- python生成表格文件_python读取和生成excel文件
1.用python读取csv文件: csv是逗号分隔符格式 一般我们用的execl生成的格式是xls和xlsx 直接重命名为csv的话会报错: Error: line contains NULL by ...
- python保存mat文件_python读取文件——python读取和保存mat文件
首先我们谈谈MarkDown编辑器,我感觉些倒是挺方便的,因为用惯了LaTeX,对于MarkDown还是比较容易上手的,但是我发现,MarkDown中有这样几个问题一直没能找到具体的解决方法:图片大小 ...
- python导入mat文件_python读取并写入mat文件的方法
先给大家介绍下python读取并写入mat文件的方法 用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); sav ...
最新文章
- python如何定义类_Python 面向对象
- Spring复习笔记:4
- Android音频播放实例
- CentOS6.5编译安装apache2.4--有软件包!
- android4.3 截屏功能的尝试与失败分析
- boost::hana::take_back_c用法的测试程序
- 计算机e盘拒绝访问,电脑中的D盘与E盘拒绝访问是为什么?
- Vue使用Vuex一步步封装并使用store
- 对java的final,finally,finalize应用场景,你用对了吗
- rest-framework框架的基本组件
- 69篇关于微博的研究论文和报告
- 人脸数据集汇总(附百度云盘链接)
- 接线端子冲击和振动测试要求
- Scrapy入门案例,抓取美剧天堂的前100最新
- 一壶浊酒尽余欢、今宵别梦寒!
- python我国有13亿人口、假定按人口年增长0.8%计算_2000年世界人口50亿.按年增长率8%0计算.多少年后.世界人口超过100亿.请设计出一个算法.并画出程序框图....
- 弘辽科技:信息层面售假排查逻辑
- MongoDB——MongoDB安装和增删改查操作
- Windows Print Spooler CVE-2021-1675 漏洞复现
- php 0xef 0xbb 0xbf,utf-8编码的csv文件,用excel打开乱码,解决办法,在输出前加 0xEF,0xBB,0xBF三个char...
热门文章
- android图片分辨率改变,android 通过修改图片像素实现CircleImageView
- 工业相机和普通相机的区别详解_机器视觉网:工业相机与普通相机的四大区别...
- 悲观锁和乐观锁_浅谈数据库悲观锁和乐观锁
- 论文写作思路_2018年的16个写作思路
- linus为什么开源_Linus Torvalds谈个性崇拜,美国最好的开源学校等等
- (39) gulp开发服务器
- Spring Boot 应用监控
- 设计模式 迪米特法则
- JSON语法之JSON 对象
- java代码着色_给java代码着色源码