几种读nii图像方法的轴序比较

news2024/11/28 0:30:49

读 .nii / .nii.gz 图像并转成 numpy 可用 medpy.io、nibabel、itk、SimpleITK 几种方法,然而几种方法读出来的轴序有出入,本篇比较此几种方法。

Datum

所用数据来自 verse,经 iTomxy/data/verse/preprocess.py 预处理,朝向和轴序是 RAI。三视图(可视化:show_nii):
orthogonal-views
其中最短的是 LR = 35,次短 AP = 118,最长 SI = 214,所以如果维持 RAI 轴序,读出来的形状应是 [35, 118, 214],给下面代码结果作参考。

Test

import os
import numpy as np
import itk
import SimpleITK as sitk
import nibabel as nib
import medpy.io as medio

# 所选的一个 verse 数据
f = os.path.expanduser("~/data/verse/processed-verse19/test/sub-verse012_image.nii.gz")

lab_medio, _ = medio.load(f)
print("medpy:", lab_medio.shape)

lab_nib = nib.load(f)
print("nibabel:", lab_nib.shape)

lab_itk = itk.imread(f)
print("itk:", lab_itk.shape)
lab_itk_np = itk.GetArrayViewFromImage(lab_itk)
print("itk -> numpy:", lab_itk_np.shape)

lab_sitk = sitk.ReadImage(f)
print("sitk:", lab_sitk.GetSize())
lab_sitk_np = sitk.GetArrayFromImage(lab_sitk)
print("sitk -> numpy:", lab_sitk_np.shape)

输出:

medpy: (35, 118, 214)
nibabel: (35, 118, 214)
itk: (214, 118, 35)
itk -> numpy: (214, 118, 35)
sitk: (35, 118, 214)
sitk -> numpy: (214, 118, 35)

结论:

  • medpy.io、nibabel 读不改轴序;
  • itk 读会逆转轴序(本例即 RAI 变 IAR);
  • sitk 读不会,但在转 numpy 时逆了,参考 [1,2]。

References

  1. Order of images returned by GetArrayFromImage - where is this this documented? #1088
  2. Conversion between numpy and SimpleITK

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux_apachectl 网页优化

1.1 网页压缩与缓存 在使用 Apache 作为 Web 服务器的过程中,只有对 Apache 服务器进行适当的优化配 置,才能让 Apache 发挥出更好的性能。反过来说,如果 Apache 的配置非常糟糕, Apache 可能无法正常为我们服务。因此&#xff0c…

【技能---500G硬盘-Ubuntu 20.04安装分区参考】

文章目录 Ubuntu 20.04安装分区指导安装分区流程Ubuntu 系统分区关键一步----- 选择安装启动引导器的设备 Ubuntu 20.04安装分区指导 安装Ubuntu 20.04的时候可以自己指定各个内存空间的占用,值得注意的是,这里的分区有一定的技巧!&#xff0…

14:00面试,14:08就出来了,问的问题过于变态了。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到10月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40…

云原生技术专题 | 解密2023年云原生的安全优化升级,告别高危漏洞、与数据泄露说“再见”(安全管控篇)

背景介绍 2023年,我们见证了科技领域的蓬勃发展,每一次技术革新都为我们带来了广阔的发展前景。作为后端开发者,我们深受其影响,不断迈向未来。 随着数字化浪潮的席卷,各种架构设计理念相互交汇,共同塑造了…

工作流自动化:它是什么,常见示例以及如何实现

由于您的组织旨在留住顶尖人才和高价值客户,因此您需要不断为这两个团队提供一流的体验。 就客户而言,它可以实时解决他们的问题和疑虑,并以深思熟虑、可操作的洞察力主动与他们联系;而且,对于员工来说,它可…

微服务之间互相调用出现的错误

场景: 微服务A调用微服务B的接口,微服务B的接口请求方式是get类型,传递的参数是JSON格式。 错误: 1、postman:springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserial…

java数据结构与算法刷题-----LeetCode70. 爬楼梯

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只…

Android Framework | Linux 基础知识:入门指南

Android Framework | Linux 基础知识:入门指南 进行Android Framework开发需要具备基本的Linux基本知识,下面是一份Linux基础知识入门指南,希望对你有所帮助! 1. 简介 Linux 是一种免费、开源的操作系统,它是由芬兰…

分布式之任务调度Elastic-Job学习一

1 E-Job 1.1 任务调度高级需求 Quartz 的不足: 1、 作业只能通过 DB 抢占随机负载,无法协调 2、 任务不能分片——单个任务数据太多了跑不完,消耗线程,负载不均 3、 作业日志可视化监控、统计 1.2 发展历史 E-Job 是怎么来的&…

第11课 实现桌面与摄像头叠加

在上一节,我们实现了桌面捕获功能,并成功把桌面图像和麦克风声音发送给对方。在实际应用中,有时候会需要把桌面与摄像头图像叠加在一起发送,这节课我们就来看下如何实现这一功能。 1.备份与修改 备份demo10并修改demo10为demo11…

Python 快速合并PDF表格转换输出CSV文件

单位的刷脸考勤机后台系统做得比较差,只能导出每个部门的出勤统计表pdf,格式如下: 近期领导要看所有部门的考勤数据,于是动手快速写了个合并pdf并输出csv文件的脚本。 安装模块 pypdf2,pdfplumber,前者用…

切换node.js不同版本

切换node.js不同版本 因新项目用到vite4创建项目,输入命令后报错,经查询得知是node版本过低导致,所以需要升级node版本,但是又有老的项目需要维护,因此需要多个版本的node使用需求。 流程: 卸载原有的node…

金和OA c6 uploadfileeditorsave接口存在任意文件上传漏洞

产品简介 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统升开发平台,电子政务一体化平台智慧电商平合等服务 漏洞概述 金和-c6 uploadfileeditorsave 任意文件上传,攻击者…

MySQL基础篇(四)多表查询

一、多表关系 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: &#…

Hi5 2.0 虚拟手与追踪器(Tracker)的位置修正

问题描述 使用环境与工具:Unity 2022.3.4fc1,steam VR(2.7.3),steamvrSDK(1.14.15),HTC vive pro专业版,Hi5 2.0数据手套 首先按照Hi5 2.0的使用说明(可参考:HI5 2.0 交…

【数据结构—二叉树的链式结构实现】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、二叉树的存储结构 二、二叉树链式结构的实现 2.1手动构建一课树 2.2二叉树的遍历 三、二叉树链式结构的实现 3.1前序遍历(递归) 3.2中序遍历(递归) 3.3后序…

多线程常用信号:ManualResetEvent,AutoResetEvent

1.了解信号 在这两个信号中: 1.Set方法可以将信号置为发送状态; 释放信号,所有等待信号的线程都将获得信号,开始执行WaitOne()后面的语句; 将事件状态设置为中,终止状态许一个或多个的等待线程继续 2.Reset方法将信号置…

【MFC】计算机图形学实验:熟悉开发环境及工具(代码)

实验内容: 【MFC】计算机图形学实验1:熟悉开发环境及工具_绘制多义线mfc-CSDN博客 画笔和字体只给出两处代码: //创建刷子,设置填充色为黑色 CBrush NewBrush; NewBrush.CreateSolidBrush(RGB(0, 0, 0)); pDC->SelectObjec…

静态网页设计——校园官网(HTML+CSS+JavaScript)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 使用技术:HTMLCSSJS 主要内容:对学校官网的结构进行模仿,对布局进行模仿。 主要内容 1、首页 首页以多个div对页面进行分割和布局…

Apache Camel笔记

Apache Camel笔记 1. Apache Camel概念 Apache Camel是一个轻量级的应用集成开发框架,专注于简化集成应用的开发。它基于Enterprise Integration Patterns(企业集成模式,简称EIP)的设计理念,提供了灵活的路由和中介机制…