问题标签 [nibabel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - .nii.gz 文件以正确定向灰度图像
我一直在做一些深度学习,通常使用普通的图像数据集,如 jpeg 或 png。最近,我遇到了一个数据集,我在其中提供了 png/jpeg 格式的测试图像,其中包含 .nii.gz 文件中的基本事实。如果我打开 .nii.gz 文件,它包含一个 .nii 文件。现在,作为此类文件的初学者,我仍然能够在 Colab 中绘制测试图像和地面实况。但是,它存在一些问题。
我使用的代码:
打印输出(niiObject):
我已经通过了这个答案,但它在我上面似乎缺少的对象中有一个 img 属性(我的意思不是确切的,而是一个类似的对象)。
图像输出:
现在,在此之前,我尝试在 ImageJ 应用程序中打开 .nii 文件,它看起来像这样:
您可以看到 ImageJ one 在方向和颜色方面与 Colab 地面实况图像不同。ImageJ 一个正确地告诉 Colab 输出左侧组织图像中的细胞核位置(如下所示)。
正确的测试图像与地面实况:
正确的基本事实与不正确的基本事实:
因此,问题分为子问题(如标题所示):
i)如何读取 nii 图像,使其与 ImageJ 图像具有正确的方向?
编辑:我似乎已经纠正了方向问题。看起来图像是沿着 y=x 线镜像的,所以我用这段代码反转了镜像:
但是,我仍然对更好的方法持开放态度,以便更深入地了解为什么会在 nibabel 中发生这种情况,并且是否可以使用我不知道的任何 nibabel 对象参数来解决它。
ii) ImageJ 和 nibabel 加载的图像都不是灰度图像,因为在这些图像中看不到一些突出的核(它们的强度非常低,ImageJ 图像中的最大强度为 40 [对于最亮的核])。如何将其转换为灰度(0 到 255 级,以便低强度核向外扩展并更明显)?
resize - 如何调整 nifti(nii.gz 医学图像)文件的大小
我有一些不同形状的 nii.gz 格式的医学图像。我想将所有的大小调整为相同的形状以供深度学习模型使用,我尝试使用 nibabel 的 resample_img(),但它破坏了我的图像。我想做一些其他功能,只是将其调整为特定形状,例如 (512,512,129)。
有人请在这方面帮助我。我被困在这一步好几天了。
python - 加载 3D Niftii 图像并保存轴向、冠状、矢状的所有切片?
我有一些脑部 MRI 扫描的 3D Niftii 数据集(FLAIR、T1、T2、..)。例如,FLAIR 扫描为 144x512x512,体素大小为 1.1、0.5、0.5,我想从轴向、冠状和矢状视图获得 2D 切片,我将其用作 CNN 的输入。
我想做的事:用 nibabel 读入 .nii 文件,将它们保存为 Numpy 数组,并将轴向、冠状和矢状的切片存储为 2D-PNG。
我尝试了什么:
- 使用 med2image python 库
- 使用 nibabel、Numpy 和 image 编写了自己的 python 脚本
问题:轴向和冠状图像以某种方式向一个方向拉伸。矢状面的效果应该很好。
我尝试调试 python 脚本并使用 Matplotlib 来显示我得到的数组,之后
通过使用例如:
并发现,数据已经延伸到那里。
我可以弄清楚获得所需的输出
但是如何在保存图像时应用“方面”之类的东西?或者是否有可能已经加载带有类似参数的 .nii 文件,以获得我可以使用的数据?
看起来,当 nibabel 加载 .nii 图像时,像素尺寸没有得到照顾。但不幸的是,我没有办法解决这个问题..
python-3.x - 更改 nifti 图像中的体素值并保存
我将读取一个 nifti 图像并更改体素的值并保存与主图像类似但只有不同体素值的新 nifti 图像。换句话说,我希望分割图像中的标签从 0 到 7,而不是具有不同的数字。o 编写了下面的代码,但我收到此错误:
可能的 C/C++ 原型有: itk::simple::WriteImage(itk::simple::Image const &,std::string const &,bool) itk::simple::WriteImage(itk::simple::Image const &,std::vector<std::string,std::allocator<std::string >> const &,bool)
编码:
对于 os.listdir(path) 中的 image_path:
nifti - 使用 nibabel 的图像方向
我已经开始阅读 Nifti 图像的方向,并想澄清一些概念。以下是一些问题:
- 访问图像数据时:
image.get_fdata()
NumPy 数组的轴相对于解剖轴是否始终相同?即第一轴-> 从左到右,第二轴-> 后到前,第三轴-> 从下到上? qform
和sform
RAS+ 扫描仪方向之间有什么关系?- 根据文档,有 4 种类型的
qform code
和sform code
修改坐标的,它们之间有什么变化?
任何关于所有概念如何相关的进一步评论都值得赞赏。
python - 如何将 nift 文件夹转换为 png 图像?
*图书馆
有一个从 NumPy 和 imageio 导入的最知名的库 import NumPy as np import os import nibabel as nib import imageio // 方法我在其中编写代码将 nift 转换为 png
方法 将 nift(.nii) 图像转换为 png 图像def nii_to_image(niifile): filenames = os.listdir(filepath) #读取nii文件夹 slice_trans = [] #filename是nii图片的路径
主要的
deep-learning - 是否可以以漂亮的格式查看任何 3D 图像数据?
我有一个适用于漂亮图像的模型,现在假设我有一个 3D 图像,但实际上不是来自 CT 或 MRI,而是具有一般格式宽度 * 高度 * 深度,我可以从中生成一个漂亮的图像并假装它是格式正确?我应该只使用单位矩阵进行仿射吗?
python - Nibabel 不加载斜率和间参数
我正在使用nibabel
包将一些 nparray 保存为 nifti 格式。我指定了斜率和截距值,以便将数据缩放回其原始格式。但是,当我加载数据时,比例和截距信息不再可用。这是重现该行为的代码片段:
输出是(None,None)
,尽管nii2.header.has_data_slope
和 nii2.header.has_data_intercept
都返回 True。
我用其他 nifti 阅读器(如 mango 和 itk-snap)打开了 nifti 文件,可以检查斜率和截距是否正确显示。
这是一个错误吗?
谢谢您的帮助!
memory - 清理充满记忆的漂亮物体
我正在循环加载 nii.gz 文件,这会填满内存。
目前我正在使用 python 的 del 和 gc.collect 来释放内存,有谁知道 nibabel 是否有自己的方法来关闭/清理内存中的 nii 文件/漂亮的对象?
顺便说一句,我使用 nibabel.load 将对象加载到内存中。
谢谢你们!