问题标签 [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 - 向 nifti 文件添加维度
我有一个形状为 .nii 的 nifti 文件(.nii)(112, 176, 112)
。我想为其添加另一个维度,使其变为(112, 176, 112, 3)
. 当我尝试时,img2 = np.arange(img).reshape(112,176,112,3)
我得到一个错误。是否有可能用np.reshape
或np.arange
或任何其他方式做到这一点?
代码:
错误:
python - 关于 BraTS 数据集的说明
我为我的暑期项目下载了 BraTS 数据集。
数据集由 nii.gz 文件组成,我可以使用 Python 中的 nibabel 库打开这些文件。我使用了以下代码:
这给了我以下输出:
有人可以帮我完成这个。我知道如果有人能告诉我如何从这些数据中获取图像,那将是很多数据。
谢谢你。
numpy - 多处理池卡住
下面的代码是从一个更长的脚本中提取的。顺序版本(没有多处理)工作正常。但是,当我使用 时Pool
,脚本会卡在特定的行中。
我想将相同的功能crop_image
并行应用于从列表中检索到的一组受试者的一些医学成像卷all_subdirs
和all_files
. 该函数从主体体积的路径加载,nib
然后从中提取两个 3D 补丁:第一个补丁的形状为 40x40x40,第二个的形状为 80x80x80。两个补丁具有相同的中心。
在简化的示例中,我只加载了两个主题。两个进程都开始导致print
函数内部确实返回:
tf.image.per_image_standardization
但是,当必须在 80x80x80 补丁上执行时,程序会无限期挂起。我怀疑这是内存/空间问题,因为如果我将大型补丁也设置为 40x40x40(或更低),脚本运行没有问题。
我可以尝试什么?难道我做错了什么?
以下版本实际上有效,但相对于实际无效的版本非常简化:
先感谢您!
volume - 如何计算 nifti 医学图像的单个体素的体积?
我已经使用 nibabel 工具加载了一个 nifti 图像文件,并且我已经使用了一些属性。但我不知道如何计算单个体素的体积(以 mm³ 为单位)。
python - 重新排序 Nifti 文件轴
我有一些尺寸为(50、100、50)的 3D nifti 文件。我想翻转 y 和 z 轴,使尺寸为(50、50、100)。执行此操作的最佳方法是什么,我将如何修改与文件相关的仿射?
目前,我正在将 nifti 文件制作成一个 numpy 数组并像这样交换轴
我对下一步感到困惑。我知道我可以使用该函数nib.Nifti1Image
将 numpy 数组变成一个 nifti 对象,但是我将如何修改仿射以考虑轴的变化?
感谢您的任何帮助。
python - 使用具有不同体素大小的 nifti 图像创建 nifti 卷
我有一个关于为生物医学图像创建 nifti 卷的问题
我通常在 python 中使用 nibabel 来加载和创建 3D nifti 卷,但我最近有一组具有不同切片厚度的图像(奇数切片为 300 微米(0.3 毫米/像素),偶数切片为 60 微米(0.06 毫米/像素)在厚度方面)。
我通常使用以下代码将 nifti 转换为创建 3D numpy 数组文件:
以及创建 3D numpy 数组后我通常会做什么:
但在这种情况下,我认为不会保留每个切片中的厚度信息,切片厚度体素大小将全部设置为 0.232。
是否有另一种方法可以在保留单个切片体素大小的同时堆叠 nifti?还是我必须首先更改单个 nifti 厚度才能首先获得统一的体素大小?(例如将 0.3 毫米/像素的 nifti 更改为 0.01 毫米/像素,厚度为 30,0.06 毫米/像素更改为 0.01 毫米/像素,厚度为 6)
提前致谢
python - 是否可以将 3D 数组转换为坐标系?
是否可以采用 3D 数组并将其转换为坐标系?我的数组由 0 和 1 组成。如果值为 1 我想采用 xyz 坐标。最后,我想将所有坐标输出到 csv 文件。
test.nii 数组:
python - 训练 3dconv 神经网络失败;损失收敛于 .6931
我编写了一个脚本来训练神经网络使用 .nii 文件作为输入,使用来自 TensorFlow 的教程https://www.tensorflow.org/tutorials/load_data/images。我稍微改变了它以使用 NiBabel 和 .nii 文件,但它仍然遵循相同的基本结构。然而,我遇到了一个问题,我的损失收敛到 0.6931,我认为这是因为模型开始猜测相同的东西,而不管输入、图像形状或批量大小。因此,我认为该模型没有学习。任何人都可以识别我的代码的任何致命缺陷吗?我已经累了:
- 更改 LR 的回调
- 更改数据、清理数据和重组数据
- 改变每类数量的比例
- 使用不同的优化器和损失函数
- 使用简单的密集、密集、密集模型,但这似乎不起作用,因为它甚至不想开始训练
- 使用重复数据集和固定大小(虽然我不清楚这有什么区别)
我正在使用这些函数来处理我的数据并将其映射到我的列表文件数据集以处理我的数据。
我直接从 TensorFlow 教程中提取了这个。
这是我的模型,我使用 3dconv 类似于在传统图像分类中使用 2dconv。
任何意见,将不胜感激!
python - 使用 nibabel 以“SPM”样式保存 nifti
我使用 python 分析了一些 fMRI 数据,现在想将我的结果保存为 niftis,然后我可以在 SPM 分析中使用它。
我的数据分数是一个 float64 形状的数组(97、115、97)。我使用以下代码保存它:
但是,当我将数据加载到 SPM 中时,我注意到原点和比例都不同于 SPM 的预期: 我的 scores.nii(上图)和标准 SPM nifti 的比较
有谁知道哪个代码会自动保存我的分数变量,其来源和大小与 SPM 期望的相同?
更新:这是 SPM 图像的标题,其中突出显示它与我自己的图像不同:
python - 如何在数组中找到组?
我有一个二进制 3d 数组,其中包含小组1
和大组1
. 我想搜索数组,当1
找到 a 时,我想搜索x,y,z
方向上的周围值并计算1
连接的数量。x
如果数量少于1
我想将该组设置为 0。整个 3d 数组由1
和组成0
。
数组示例:
在 x,y,z 方向有一组1
直接相邻。在我的这个场景的代码中,该组是num_group = 4
. 由于该组小于 10,因此我想创建该组0
。
我的数组中有 1-2 个非常大且不同的组。我只想在我的最终数组中包含这些大组。