问题标签 [ndimage]

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 投票
0 回答
4842 浏览

python - 如何解决...ValueError:无法将浮点 NaN 转换为整数

我正在运行一个相当复杂的代码,所以我不会为细节而烦恼,因为我之前已经让它工作了,但现在我得到了这个错误。

Particle 是一个用 0 或 255 填充的 3D 元组,我正在使用 scipy 质心函数,然后尝试将值转换为最接近的整数(因为我正在处理数组)。在最后一行发现错误......谁能解释为什么会这样?

第二行填充粒子第三行删除任何周围带有不同标签的粒子(这是在所有标签的 for 循环中)

提前致谢。如果您需要更多代码,请询问,但我认为它不会对您有所帮助,而且非常混乱。

################## 更多代码

好的,所以我有一个充满标记粒子的堆栈,我想做两件事,首先找到每个粒子相对于 labelled_stack 的质心,这就是 CoM_big_labelled_stack(和 C)所做的。并将坐标存储在一个名为 info 的列表(元组)中。我也试图在粒子周围创建一个立方体,以它的质心为中心(这与 CoM 变量有关),所以首先我使用 scipy 中的 find objects 函数来查找粒子,然后我使用这些坐标在粒子周围创建一个非立方体盒子,并找到它的质心。然后我找到盒子的最长尺寸并将其命名为 b,创建一个大小为 2b 的立方体盒子,并在正确的位置用粒子填充它。

抱歉,这段代码很乱,我对 Python 很陌生

0 投票
2 回答
6466 浏览

python - 如何在 Python 中使用图像处理找到物体的直径?

给定一个包含一些不规则物体的图像,我想找到它们各自的直径。

感谢这个答案,我知道如何识别对象。但是,是否可以测量图像中显示的物体的最大直径?

我查看了scipy-ndimage文档并没有找到专门的功能。

对象识别代码:

图片: 在此处输入图像描述

0 投票
2 回答
866 浏览

python - 创建 3D 二值图像

我有一个二维数组,a包含一组 100 个 x,y,z 坐标:

我想创建一个 3D 二值图像,b在每个 x、y、z 维度上都有 101 个像素,坐标范围在 0.00 到 1.00 之间。由 定义的位置的a像素应取值为 1,所有其他像素的值应为 0。

我可以用 来创建一个正确形状的零数组b = np.zeros((101,101,101)),但是如何分配坐标并将其切片以使用a

0 投票
1 回答
822 浏览

python - 灰度图像中两点之间的强度加权最小路径

我想确定图像中两个特定点之间的最小路径,即通过像素强度(灰度)加权的相邻像素之间的距离总和将最小化的路径。例如,这张图片显示了输入图像

原始图像

这是(手绘)红色最小路径,从 UL 到 LR 角(黑色边界用作零权重填充):

最小路径示例

我发现matlab为此提供了graydist功能;ndimage/scikit-image/whatever 中有类似的东西吗?我找到了 scipy.ndimage.morphology.distance_transform_edt但我不确定是否以及如何将它用于此目的。如果算法仅返回非唯一最小值之一,则可以。

我对实现提示不感兴趣,它在算法上是一项相当简单的任务(至少是使用例如动态编程的幼稚实现),我正在寻找(组合)已经编码的例程来完成此任务。

0 投票
1 回答
666 浏览

python - 加快应用于 numpy 3-d 的 scipy ndimage 测量

我有多个大型标记的 numpy 二维数组(10 000x10 000)。对于每个标签(具有相同编号的连接单元格),我想根据另一个 numpy 3-d 数组(平均值、标准、最大值等)的值计算多个测量值。如果 3-d numpy 转换为 2-d,则可以使用 scipy.ndimage.labeled_comprehension 工具。然而,由于标签的数量和数组的大小相当大,计算需要相当长的时间。我当前的代码似乎是多余的,因为我现在正在为输入图像的每个 3 维迭代相同的标签。我想知道是否有办法加快我的代码(例如通过将三个 scipy.ndimage.labeled_comprehension 计算组合成一个计算)。

使用形状为 (4200,3000,3) 和 283047 个标签的测试数据集,计算耗时 10:34 分钟


测试数据

当前代码和所需输出

0 投票
1 回答
820 浏览

python - ndimage.label:显示一定大小的补丁

背景:我利用 SVM 分析图像并找到感兴趣的像素。过滤掉不感兴趣的像素(下面的完整代码)后,将生成的二进制掩码存储起来以供稍后显示。同时,我使用ndimage.label二进制掩码生成找到的补丁列表,并跟踪找到的补丁数量(特征数量)

问题/问题:我正在使用的图像是超高分辨率的,这意味着有“噪声”像素组(小于 100)被计算为ndimage.label. 这意味着由于所有这些噪声组和单个像素,可能只有 10 个补丁的图像计数为 1000+。给定原始的二进制掩码和标记的数组,有没有办法修改二进制掩码,以便只包含一定大小的补丁?

0 投票
1 回答
4974 浏览

python - 使用 numpy/scipy 转换和重采样 3D 体积

更新:

我创建了一个有据可查的 ipython 笔记本。如果您只想要代码,请查看第一个答案。

问题

我有一个 40x40x40 的灰度值。这需要旋转/移动/剪切。

这是一个有用的齐次变换集合:http ://www.lfd.uci.edu/~gohlke/code/transformations.py.html

我需要将体积中的每个体素都视为一对(位置向量,值)。然后,我将变换位置并从变换后的向量集中为每个坐标采样新值。

采样似乎相当困难,我很高兴发现: https ://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.ndimage.affine_transform.html#scipy.ndimage.affine_transform

给定的矩阵和偏移量用于通过仿射变换为输出中的每个点找到输入中的相应坐标。这些坐标处的输入值由请求顺序的样条插值确定。根据给定的模式填充输入边界之外的点。

听起来很完美。

但使用非常棘手。这里有人正在使用该代码来旋转图像。他的旋转矩阵是 2x2,所以不是齐次坐标。我尝试将齐次坐标(2D)中的平移矩阵传递给函数:

这会产生错误:

显然这不适用于齐次坐标。如何使用它来转移数据?

这只是 2D,在 3D 中我什至无法旋转音量:

错误信息是一样的:affine matrix has wrong number of rows

是否可以使用这种方法来转换我的音量?

我找到了一组辅助方法,它们提供移位和旋转但不提供剪切: https ://docs.scipy.org/doc/scipy-0.14.0/reference/ndimage.html

但我更喜欢使用自定义转换矩阵。

0 投票
0 回答
1370 浏览

python - 为什么 scipy.ndimage.filters.median_filter 运行如此缓慢

我正在尝试通过 scipy.ndimage 使用 Python 探索 3D 图像分析。当我将中值滤波器应用于scipy.ndimage.filters.median_filter尺寸为 (874、1150、1150) 的 3D 图像时,它运行得非常缓慢。计算速度显然很大程度上取决于足迹大小。下面是一些代码,其中 a 是尺寸为 (874, 1150, 1150) 的 3D 图像,mf 是模块:

当我将大小设置为 5 时,我从未得到结果……因为我认为这种耗时是不可接受的。

你知道为什么会这样吗?我该如何改进它?

0 投票
1 回答
46 浏览

python - 遍历文件夹中的图像会炸毁内存

我正在使用以下代码迭代文件夹中的图像并将它们保存在字典中,并以文件名作为键,但即使文件夹中的图像应该很容易放入内存,它也会迅速增加内存需求。为什么会这样,我该如何解决?

0 投票
1 回答
997 浏览

numpy - 如何通过 3D 图像生成 2D 剪辑?

我有一个包含一些数据的 3D 数组(光栅 3D 图像)。我想使用一些合适的插值(最好是线性的 - 在这种情况下可能是“三线性”)来通过该阵列进行 2D 切割。但是可以方便地描述切割平面,例如使用法线向量和距离。

如果切割平行于其中一个轴,这很简单,只需对 3D 数组进行切片(使用 numpy 索引切片)。但如果切口不平行于轴,我看不出解决这个问题的好方法。唯一想到的是旋转 3D 阵列(可能使用 2D 旋转的组合),以便切割平行于轴,但这似乎非常低效。

我正在使用 numpy、ndimage 和 skimage 在 python 中工作。可以假定任何其他 python 模块可用。