问题标签 [nifti]

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.

0 投票
1 回答
1073 浏览

python - 在 Python 3.7 中更改 NIFTI 的整个图像切片

我实际上正在使用 Python 处理 MRI 图像。图像格式是 NIFTI 格式,我知道如何在 x、y 或 z 轴上可视化切片,但是现在,我想对它们中的每一个使用 Sobel 过滤并用这些切片创建一个新的 NIFTI 图像。

为了那个原因:

  • 我加载主 .nii.gz 图像(img = nib.load(im_path))
  • 我再次使用新名称“img_sobel”(img_sobel = nib.load(im_path))加载主 .nii.gz 图像
  • 为每个切片创建一个循环
  • Sobel 过滤切片
  • 在img_sobel的对应切片上替换这个切片("img_sobel_data[:, :, sl] == np.hypot(sx, sy)")
  • 循环结束后,保存名为“image_XXX_Sobel”的img_sobel

使用 subplot,我看到每个切片上的 sobel 过滤工作,但似乎“img_sobel_data [:, :, sl] == np.hypot(sx, sy)” 行不起作用,为什么?

这是洛普部分:

怎么了 ?我们不能用 Python 替换另一个图像切片吗?有解决这个问题的技巧吗?

谢谢 !

编辑:好的,我明白了为什么我不能这么容易做到这一点:我提取了 NIFTI 图像的切片,过滤了它们,但我没有改变 NIFTI 图像本身!所以我现在的问题是:如何更改从 img_sobel.get_fdata() 获取的 NIFTI 图像?

0 投票
2 回答
119 浏览

python - 将列表转换为 Numpy 数组仅用一个数据集丢失其三个轴中的两个

我有一个使用 SimpleITK 库读取 NIFTI 图像的 python 代码。然后它将图像转换为 Numpy 数组。然后,我将 Numpy 数组扩展为一个列表。

我有 20 个 FLAIR.nii.gz 文件。它们每个都有 48 片。

当我拥有所有 20 个患者的所有 48 个切片时,我将列表转换为 Numpy 数组。

我这样做是因为我是 Python 的新手,而且我不知道有任何其他方法可以做到这一点。

代码是:

此代码生成此输出(所有 FLAIR.nii.gz 文件具有相同的形状):

代码的最终输出是:

我的问题:

我不明白为什么 flair_array 有这种形状:(960,)flair_array dtypeobject

我尝试了相同的代码,没有更改任何内容,并且效果很好。它也有 20 名患者,每个 FLAIR.nii.gz 文件也有 48 个切片。

它的输出:

这是此数据集的最终输出:

有了这第二个数据集,flair_array就是float32.

为什么第一个flair_array形状是(960,)

更新:
在两个数据集中,brain_array.dtype总是float32

0 投票
1 回答
768 浏览

python - 如何将 Nifti 图像中的标题信息写入 csv?

我是医学图像处理的新手。我正在尝试读取 Nifti 图像并将标题信息写入 csv 文件。

现在我如何设法将这些信息保存到 csv 文件中?当我将数据输入 Numpy 时,它是一个 3 维 numpy,但是将这些信息保存为 csv 格式的正确方法是什么。

0 投票
0 回答
146 浏览

python-3.x - Aligning nifti files with different shape and q_offset values in header

I have a whole-body MRI scans with the header below:

Binary label-maps for different organs in the whole-body MRI scan. I need to merge them together as a single label-map nifty file.
One of the label-map has a different shape and q_offset values in its header that make merging difficult. The header of that label-map nifty file below:

When I overlay the individual label-map on top of the whole-body MRI scan using 3dSlicer, it overlayed perfectly for the concerned organ, but as the shape is different, once after merging all label-maps, it does not work [ Yellow label-map for Spleen organ].

This is how it looks in 3dSlicer [ Look for Yellow region.].

enter image description here

But the expected area of visualization is in the bottom right of below pic. (Spleen Organ)

enter image description here

As the voxel resolution is the same, I think this has something to do with different q_offset values.

Kindly, let me know if anyone has a solution.

0 投票
0 回答
95 浏览

python - 将 NIFTI 图像拆分为体素补丁

我正在尝试将一组 3D MRA NIFTI 图像拆分为相同大小的体素补丁(例如 32 x 32 x 32)。
目标是使用体素训练 3D CNN 来检测大脑动脉内的异常。

如何使用 Python 使用 Numpy 之类的库来实现这一点。

0 投票
1 回答
513 浏览

image - 如何在 SimpleITK 中将位移场变换保存为图像?

我想将 DisplacementFieldTransform 保存为 SimpleITK 中的图像。

文档说:

位移场,例如存储在 DisplacementFieldTransform 对象中的位移场,也可以保存为图像(.nrrd、.nhdr、.mha、.mhd、.nii、.nii.gz)。

但是当我这样做时

我收到以下错误:

如何将我的 DisplacementFieldTransform 保存为图像?

0 投票
1 回答
2210 浏览

python - 通过 Nibabel 加载 Nifti 并使用形状函数

我有一个 nifti 文件1.nii.gz

在此处输入图像描述

现在,我从来没有处理过 nifti 文件

所以,只要用这个软件打开它,我就意识到 nii.gz 是一种包含3 个二维图片数组的容器。事实上,如果我滚动鼠标,我可以看到在图片中标记为 1 的“方向”的 448 张 2d 图片,“方向”2 的 448 张 2d 图片和“方向”3 的 25 张 2d 图片。

在此之后,我打开了 shell 并尝试将这个 nii.gz 与 Nibabel 库一起使用

但是,如果我输入

结果我得到 (448,448,25),所以这个 .nii.gz 似乎是一个 3d 矩阵,而不是一个包含 3 个 2d 图片数组的容器。你能给我解释一下吗?

0 投票
0 回答
186 浏览

python - 如何对齐大脑 MRI

我有一个关于对不同患者进行的脑 MRI 的nifti文件数据集,我使用名为 Nibabel 的库将它们加载到 Python 中。

这是从我的数据集中拍摄的 MRI 切片:

在此处输入图像描述

正如你所看到的,这个头部没有完全对齐(在这种情况下稍微向右倾斜)。由于我想将此 nifti 数据集与神经网络一起使用,因此我想正确对齐每一个 Brain MRI。

我找到了Flirt工具(在 FSL 中找到)(我实际上正在使用Python的包装器),你知道它是否可以用来解决我的问题吗?

如果是,该工具的适当设置是什么?这是我第一次使用 nifti 文件:(

在此处输入图像描述

如果此工具不能用于对齐脑 MRI,您知道我可以用于此目的的工具/库吗?

0 投票
0 回答
52 浏览

python - 使用 UNet 分割多种材料

我正在尝试在 nifti 文件 (.nii) 中分割多种材料,但每当我运行我的 UNet 时,它只会分割一种材料并返回 0 和 1(黑色和白色)的标签。我想返回 0、1 和 2 的标签。我n_labels = 3在定义模型时尝试包括在内,但模型仍然返回 0 和 1 的标签。我的训练标签用未标记、内部和外部分段。

0 投票
1 回答
398 浏览

python - 如何从数组中正确提取 PNG 格式的标记掩码?

我有以下格式的文件Nifti其中包含掩码,我编写了以下代码将里面的图像提取为PNG图像,问题是:

这是一个标有 [0. 1. 2. 3.],保存掩码后,PNG掩码图像内的值分布在 [0 --> 255] 范围内,它们不再像以前那样只是 4 个标签!

请问我该如何解决这个问题?

唯一重要的是里面有 4 个独特的标签

提前致谢。