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

读 .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.hqwc.cn/news/321297.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【普中开发板】基于51单片机的篮球计分器液晶LCD1602显示( proteus仿真+程序+设计报告+讲解视频)

基于普中开发板51单片机的篮球计分器液晶LCD1602显示 1.主要功能:讲解视频:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接(可点击): 基于51单片机的篮球计分器液晶LCD1602显示 ( pr…

不使用Pycharm专业版也可以创建Django项目

何为django? Django 是一个开源的高级Web应用程序框架,用于使用 Python 构建强大、可扩展和安全的 Web 应用程序。它遵循了 MVC(Model-View-Controller)的设计模式,并提供了一套丰富的工具和库,帮助开发人员更快速、更高效地构建 Web 应用程序。 实现细节 1.安装Pytho…

交换机03_基本配置

一、思科设备的命令行基础 1、进入设备的命令行界面 设备支持命令行 去查看设备上的接口,是否有console口需要有console线 右击此电脑设备管理器需要通过超级终端软件进行连接,如putt、secret CRT、xshell等软件 (1)思科模拟器…

居然在Web上就可以体验下苹果电脑的操作系统啦?

发现一款宝藏项目 MacOS ,在Web上打造一款原汁原味的 MacOS系统,不同于以外的仿操作系统的web应用,该应用底层基于 HTML5的 FileSystem 和 IndexedDB 构建了文件系统,理论上可以基于这套系统实现任何的上层应用。作者还制定了可以…

D50|单调栈

739.每日温度 初始思路&#xff1a; 暴力解法但是会超时。 class Solution {public int[] dailyTemperatures(int[] temperatures) {int[] answer new int[temperatures.length];for(int i 0;i<temperatures.length;i){for(int j i;j<temperatures.length;j){if(te…

VMWare安装Ubuntu

1.下载地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ 此处记录一些重要的截图&#xff0c;主要是按照史上最全最新Ubuntu20.04安装教程&#xff08;图文&#xff09;进行 安装完成之后&#xff0c;进行清华源配置&#xff0c;参考&#xff1…

二维码门牌管理系统:让生活更便捷

文章目录 前言一、数字化管理解决多居住地管理难题二、多功能服务提升生活便利性三、加强小区安全保障 前言 在现代社会的快节奏生活中&#xff0c;管理多个居住地成为许多人的现实。而频繁切换不同小区可能给人们的生活带来不便。二维码门牌管理系统应运而生&#xff0c;通过…

chromium在中文用户名下无法编译的问题

新电脑没有太注意&#xff0c;起用户名的时候用了中文。 在编译chromium104的代码时&#xff0c;因为环境变量有中文导致编译失败&#xff1a; 因为我的电脑默认是使用gbk编码&#xff0c;而不是utf-8编码。 这个问题有三种解决办法&#xff1a; &#xff08;一&#xff09;把…

三段式电流保护与自动重合闸MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 前加速、后加速的区别&#xff1a; 前加速是保护装置不判别是永久性故障还是瞬时故障&#xff0c;直接跳闸&#xff0c;然后经重合闸装置来纠正&#xff1b;后加速是保护装置是先判别故障类型有选择性跳闸 …

【智慧地球】星图地球 | 星图地球超算数据工场

当前空天信息处理涉及并发并行的大量计算问题&#xff0c;需要高性能计算、智能计算联合调度&#xff0c;以此来实现多算力融合&#xff1b;而我国算力产业规模快速增长&#xff0c;超算算力资源正需要以任务驱动来统筹。 基于此&#xff0c;中科星图与郑州中心展开紧密合作&a…

数据结构学习笔记——查找算法中的树形查找(B树、B+树)

目录 前言一、B树&#xff08;一&#xff09;B树的概念&#xff08;二&#xff09;B树的性质&#xff08;三&#xff09;B树的高度&#xff08;四&#xff09;B树的查找&#xff08;五&#xff09;B树的插入&#xff08;六&#xff09;B树的删除 二、B树&#xff08;一&#xf…

Python常用模块之hashlib

常用模块 - hashlib模块 一、简介 Python的hashlib提供了常见的摘要算法&#xff0c;如MD5、SHA1、SHA224、SHA256、SHA384、SHA512等算法。 什么是摘要算法呢&#xff1f;摘要算法又称哈希算法、散列算法。它通过一个函数&#xff0c;把任意长度的数据转换为一个长度固定的…