【数据处理】Python解析nii.gz文件

  最近又接触了一种影像数据格式:nii.gz文件,记录一下python读取方式。

  数据处理系列篇:
  【数据处理】Python读取.mat文件的方法
  【数据处理】Python读取.dcm文件的方法
  【数据处理】Python解析json文件
  【数据处理】Python解析多类别分割标签的json文件
  【数据处理】nii文件解析


  采用nibabel库:

pip install nibabel

  示例选用2019年肾肿瘤分割挑战赛nii.gz数据:KITS数据集下载

import numpy as np
import nibabel as nib
import matplotlib.pyplot as plt

image_path = "H:/datasets_deeplearning/KITS/case_00000/imaging.nii.gz"
mask_path = "H:/datasets_deeplearning/KITS/case_00000/segmentation.nii.gz"

# 数据加载
image_obj = nib.load(image_path)
mask_obj = nib.load(mask_path)
print("数据加载格式:", type(image_obj), '\n')
print("图像成像信息:", image_obj.header.keys(), '\n')

# 查看图像平面与空间分辨率
pixdim = image_obj.header['pixdim']
print(f"平面×空间:[{pixdim[2]}×{pixdim[3]}{pixdim[1]}\n")

# 获得numpy数据
image_data = image_obj.get_fdata()
mask_data = mask_obj.get_fdata()
print("numpy数据格式:", type(image_data), '\n')

# 查看图像大小, 层数及像数值
depth, height, width = image_data.shape
print(f"The image object height: {height}, width:{width}, depth:{depth}\n")
print(f'image value range: [{image_data.min()}, {image_data.max()}]\n')

# 选一层来画图
i = 160
plt.figure(dpi=300)
plt.subplot(1, 2, 1)
plt.imshow(image_data[i, :, :], cmap='gray')
plt.title(f"image of {i}th layer")
plt.axis('off')
plt.subplot(1, 2, 2)
plt.imshow(mask_data[i, :, :], cmap='gray')
plt.title(f"mask of {i}th layer")
plt.axis('off')
plt.show()

输出为:

数据加载格式: <class 'nibabel.nifti1.Nifti1Image'> 

图像成像信息: ['sizeof_hdr', 'data_type', 'db_name', 'extents', 'session_error', 'regular', 'dim_info', 'dim', 'intent_p1', 'intent_p2', 'intent_p3', 'intent_code', 'datatype', 'bitpix', 'slice_start', 'pixdim', 'vox_offset', 'scl_slope', 'scl_inter', 'slice_end', 'slice_code', 'xyzt_units', 'cal_max', 'cal_min', 'slice_duration', 'toffset', 'glmax', 'glmin', 'descrip', 'aux_file', 'qform_code', 'sform_code', 'quatern_b', 'quatern_c', 'quatern_d', 'qoffset_x', 'qoffset_y', 'qoffset_z', 'srow_x', 'srow_y', 'srow_z', 'intent_name', 'magic'] 

平面×空间:[0.919921875×0.919921875]×0.5

numpy数据格式: <class 'numpy.ndarray'> 

The image object height: 512, width:512, depth:611

image value range: [-1024.0, 1413.0]

画图为:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/412971.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

日更【系统架构设计师知识总结3】存储系统

【原创精华总结】自己一点点手打、总结的脑图&#xff0c;把散落在课本以及老师讲授的知识点合并汇总&#xff0c;反复提炼语言&#xff0c;形成知识框架。希望能给同样在学习的伙伴一点帮助&#xff01;

HTTP与HTTPS-HTTPS 的应用数据是如何保证完整性的?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTPS 的应用数据是如何保证完整性的? TLS 在实现上分为握手协议和记录协议两层 TLS 握手协议就是我们前面说的 TLS 四次握手的过程&#xff0c;负责协商加密算法和生成对称密钥&#xff0c;后续用此密…

信息安全计划

任何管理人员或人力资源专业人士都知道&#xff0c;除非彻底记录标准和实践&#xff0c;否则永远无法真正实施和执行标准和实践。正如您可能想象的那样&#xff0c;在保护您的网络、技术和数据系统免受网络威胁以及在发生这些事件时规划最及时、高效和有效的响应时&#xff0c;…

iview碰到的一些问题总结

iview tabs嵌套使用问题 tabs嵌套使用的时候不是直接套用行了&#xff0c;直接套用会出现内层tab都集成到一级tab去&#xff0c;需要设置该属性指向对应 Tabs 的 name 字段(需要版本大于3.3.1) <Tabs name"tab1" ><TabPane label"标签1" tab&qu…

荣耀手机如何开启地震预警功能

1、打开荣耀手机&#xff0c;进入“设置”&#xff0c;在搜素栏输入“地震”。 2、进入“安全-应急预警通知”功能栏。 3、开启“地震预警”。 4、查看“预警演示教程”。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e207e356bb634c11adf926c6a53e48cc.png…

Git 突破 文件尺寸限制

前言 当Git本地存储里右超过50MB&#xff0c;却又确实需要上传的时候&#xff0c;就需要用到了不是 解决 本代码就是把大文件进行拆解成小文件&#xff0c;然后上传。 等到拉取下来的时候&#xff0c;可以直接再进行合并&#xff0c;合并成原文件 代码如下&#xff0c;仅供…

深度学习基础(一)神经网络基本原理

之前的章节我们初步介绍了机器学习相关基础知识&#xff0c;目录如下&#xff1a; 机器学习基础&#xff08;一&#xff09;理解机器学习的本质-CSDN博客 机器学习基础&#xff08;二&#xff09;监督与非监督学习-CSDN博客 机器学习基础&#xff08;四&#xff09;非监督学…

python Matplotlib Tkinter-->tab切换2

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 pillow 10.1.0 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.ttk as ttk# 创建自定义工具栏类 c…

mapbox高德地图与相机

mapbox高德地图与相机 演示效果引入 CDN 链接地图显示 创建地图实例定义地图数据源配置地图图层 设置地图样式实现代码 1. 演示效果 本案例使用Mapbox GL JavaScript库创建高德地图。 2. 引入 CDN 链接 <script src"https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbo…

uniapp 使用安卓模拟器运行调试

uniapp 启动方式有很多种,这里介绍使用模拟器启动uniapp 要使用模拟器启动uniapp肯定少不了安装模拟器(废话) 这里选着浏览器推荐的第一个模拟器mumu模拟器 下载好了mumu安装包后就是安装了,这个过于小白,就不介绍了 2. 查看模拟器的adb端口号, mumu的adb查看端口号与众不同…

设计模式浅析(九) ·模板方法模式

设计模式浅析(九) 模板方法模式 日常叨逼叨 java设计模式浅析&#xff0c;如果觉得对你有帮助&#xff0c;记得一键三连&#xff0c;谢谢各位观众老爷&#x1f601;&#x1f601; 模板方法模式 概念 模板方法模式&#xff08;Template Method Pattern&#xff09;在Java中是…

探针台有哪些优势

探针台广泛应用于半导体、光电以及集成电路等行业&#xff0c;用于测试、调试和维修电子设备、电路板和芯片。 探针台具有以下优势&#xff1a; 1.能够确保相关产品研发的质量。 2.能够有效缩短研发时间和资金成本。 3.可以缩减器件的制作工艺成本。 4.具有更加可靠和省时…

开源大数据集群部署(十二)Ranger 集成 hive

作者&#xff1a;櫰木 1、解压安装 在hd1.dtstack.com主机上执行&#xff08;一般选择hiveserver2节点&#xff09; 解压ranger-2.3.0-hive-plugin.tar.gz [roothd1.dtstack.com software]#tar -zxvf ranger-2.3.0-hive-plugin.tar.gz修改install.properties配置 [roothd1…

代码随想录Leetcode474. 一和零

题目&#xff1a; 代码(首刷看解析 2024年2月26日&#xff09; class Solution { public:// 二维 0 1背包int findMaxForm(vector<string>& strs, int m, int n) {// 1 二维 [i]表示 0 的个数&#xff0c;上限m; [j]表示 1 的个数&#xff0c;上限nvector<vector…

QYYB-01 无线雨量报警仪 集监测 采集 记录 报警一体机

产品概述 无线雨量报警仪&#xff0c;又名简易雨量报警器、遥测雨量报警仪&#xff0c;是一款可以实时测量并显示降雨量的仪器&#xff0c;支持无线传输数据、同步显示新数据、数据超标自动报警、自动存储数据、查询和导出数据等多项功能&#xff0c;由翻斗式雨量传感器、数据采…

【ArcGIS】基于DEM/LUCC等数据统计得到各集水区流域特征

基于DEM/LUCC等数据统计得到各集水区流域特征 提取不同集水区各类土地利用类型比例步骤1&#xff1a;划分集水区为独立面单元步骤2&#xff1a;批量掩膜提取得到各集水区土地利用类型比例步骤3&#xff1a;导入各集水区LUCC数据并统计得到各类型占比 提取坡度特征流域面坡度河道…

安防视频监控平台EasyNVR级联视频上云管理平台EasyNVS,出现报错“i/o deadline reached”该如何解决?

上云网关管理平台EasyNVS视频综合管理系统具备汇聚与管理EasyGBS、EasyNVR等平台的能力&#xff0c;系统可以将接入的视频资源实现视频能力统一输出&#xff0c;并能进行远程可视化运维等管理功能&#xff0c;还能解决设备现场没有固定公网IP却需要在公网直播的需求。 有用户反…

11个Linux性能分析命令

Linux性能分析命令有很多&#xff0c;不同的命令可以用来监控不同的系统资源和活动。根据您的问题&#xff0c;我为您推荐以下11个常用的Linux性能分析命令&#xff1a; uptime&#xff1a;显示系统的运行时间和平均负载。dmesg&#xff1a;显示系统的启动信息和内核的日志信息…

ADC制剂生产过程中的微粒控制-隧道烘箱在线粒子监测系统 中邦兴业

ADC制剂生产过程中的污染和交叉污染控制需要从多个方面入手&#xff0c;包括生产环境、设备、原辅料、生产过程、人员卫生和培训以及微生物监控等。只有全面、有效地实施这些控制措施&#xff0c;才能确保ADC制剂的质量和安全性。 ADC制剂生产过程中的微粒控制 ADC制剂生产中的…

4 种策略让 MySQL 和 Redis 数据保持一致

先阐明一下 MySQL 和 Redis 的关系&#xff1a;MySQL 是数据库&#xff0c;用来持久化数据&#xff0c;一定程度上保证数据的可靠性&#xff1b;Redis 是用来当缓存&#xff0c;用来提升数据访问的性能。 关于如何保证 MySQL 和 Redis 中的数据一致&#xff08;即缓存一致性问…