问题标签 [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.
python - 如何在非二进制图像上使用 scipy.label
我需要标记一个已经分类的 img。问题是,图像是非二进制的,我需要分别计算不同值的相邻补丁。
考虑以下数据集:
我想获得(使用 8 个 neigbours 结构元素)以下内容:
但是使用 scipy.label 函数我得到了完全不同的结果:
那么有没有一个技巧来分离不同价值的补丁?
python - 如何使用块标记大图像?
我尝试使用 ndimage.label 标记一个巨大的图像(69940、70935)。因此,标签尝试分配一个对我的计算机来说太大的 int64 ndarray (37 GiB)。
无法为形状为 (69940, 70936) 且数据类型为 uint64 的数组分配 37.0 GiB
有没有办法使用拆分块执行此分析?
scipy - 使用 Python cupyx.scipy.ndimage map_coordinates 时获取零数组
我正在尝试使用 Python cupyx.scipy.ndimage map_coordinates 函数将像素值从一个图像映射到 gpu 上的另一个图像。输出cupy-array全为零。当我使用 scipy.ndimage 运行它的 map_coordinates 时,我得到了插值数组。为什么会发生以及如何解决?
与问题相关的一段代码:
谢谢!
python - 如何在不改变数组形状的情况下旋转图像?
我正在旋转图像。但是,当我使用 scipy.ndimage.rotate() 函数时,我可以旋转整个图像(reshape=True),但数组的形状会改变。例如,作为 scipy.ndimage.rotate() 的示例,我要查找的结果是第三张图片,但与原点 (512, 512) 的数组形状相同,而不是 (724, 724)。
这种类型的旋转还有其他解决方案吗?(我正在使用 python)请帮我解决这个问题。
我提到的示例的链接:https ://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.rotate.html
亲切的问候
python - 在numpy中获取没有循环的集群中元素的坐标
我有一个二维数组,我在其中使用如下ndimage.label()
函数标记集群:
我可以获得元素计数、质心或标记簇的边界框。但我也想获得集群中每个元素的坐标。像这样的东西(数据结构不必是这样的,任何数据结构都可以):
我可以遍历标签列表并调用np.where()
它们中的每一个,但我想知道是否有一种方法可以在没有循环的情况下执行此操作,这样它会更快?
python - scipy ndimage - 来自正向变换的 map_coordinates
我正在模拟点在倾斜平面上的投影。我想保持与缺少 scipy.interpolate 等效项的 cupy 的兼容性。
一般来说,给定一个点p = [x,y,z]^T
和一个nxn
旋转矩阵m
,输出坐标中的点p'
是p' = m p
。换句话说,m
是从输入到输出空间的前向映射。
在 numpy 中,您可以将其实现为pp = m.dot(p)
or pp = m @ p
。同时对于许多点,使用 tensordot 或 einsum 进行投影要快得多:
m
和的样本points
是
应用转换后,输入和输出 x,y 点如下所示:
使用 map_coordinates 会导致在输入网格上查找输出域中的点,从而有效地执行逆映射。有没有办法使用 map_coordinates 执行前向映射?不正确的实现看起来像
不基于 ndimage 的正确实现将使用 interp2 或来自 scipy.interpolate 的 griddata
python - 图片数量> 0
我首先对图像进行二值化,然后在 python 中对其进行过滤。
现在如何将每个像素> 0 添加到 numpy 数组中?
python - 删除所有具有全零邻居的像素
有没有办法在 OpenCV 中执行类似于腐蚀的过程,如果它的任何邻居都不为零,而不是要求它的所有邻居都非零,它会保留给定的像素?
在这里,邻居是指任何具有 的像素abs(x1-x2)+abs(y1-y2)==1
,但这很容易通过腐蚀内核控制。
当然,我总是可以使用 for 循环并从头开始实现这种行为,但我更喜欢 OpenCV 可以通过其库提供的速度。
它可以反转图像,执行腐蚀,然后将其反转回来吗?
我的另一个想法是与具有空中心的内核进行卷积,然后将所有值裁剪到 0 到 1 的范围内。我会使用scipy.ndimage.convolve
它。
我正在使用np.float32
具有形状 (512,512) 的类型(即值 0.0 或 1.0)的二进制 NumPy 数组。
python - 当我在 z 方向上做 Sobel 算子时,我得到两个正边吗?
我正在为体素渲染编写一个贪婪的网格算法,其中很大一部分是找到体积的边缘。我通过旋转体积阵列来做到这一点。然后使用 Scipy 的 Ndimage 将其与 3d 边缘检测内核进行卷积。我基本上是在z方向使用清醒的方法。这应该给我垂直于当前扫描轴的二维横截面。但是,当体积数组未完全填充时,我遇到了问题:由于某种原因,当只有一个边缘时,输出给出了两个边缘。这两个都是正面的方向。
请注意,我使用正 1 或负 1 来跟踪边缘所面对的方向。所有面都是来自任何轴的 90 * 孔整数。
我的问题如下。如何使用卷积检测垂直于 z 轴的 3d 体积阵列中的边缘?我应该使用什么样的内核?有没有其他更好的方法?
这是出局
numpy - 找到立即完全包围 0 区域的 1 像素
从 0 和 1 的 2d 数组开始,我需要确定哪些 1 形成一个联合围栏,完全包围一个或多个相邻的 0。如果它们在侧面或对角线上接触,则这些 0 被认为是相邻的。栅栏也必须存在于相邻的对角线上。
这是二维数组,我想要的是表示围栏的 1,然后其他所有内容都应该为零。这是一个简单的案例,实际上数组是一个 png 图像,我想要其中可能存在的所有栅栏。
ndimage 是需要的模块吗?请有任何建议。