从给定的 2D numpy 数组中删除集群

Posted

技术标签:

【中文标题】从给定的 2D numpy 数组中删除集群【英文标题】:Removal of a cluster from a given 2D numpy array 【发布时间】:2022-01-20 21:50:19 【问题描述】:

我有一个二进制二维 np 数组,其中包含下图(示例)中的信息。如何检测数据点簇(此处为黑色),以便我可以从数组中一一删除点簇?在这里,将其视为根据用户的任务需要控制并相应地从图像中删除圆圈。

任务:从一个 numpy 数组中检测和删除任何一个 n-cluster 数据点

任何线索将不胜感激。 [图片供参考]

【问题讨论】:

您是否需要按特定顺序删除集群?另外,每个集群是否都是完全球形的并且具有相同的半径? 没有这样的排序顺序来删除集群。簇形状可能并不总是球形,并且半径也可能不同。寻找检测集群的通用方法。 我推荐使用opencv,blob检测功能听起来最适合这个:learnopencv.com/blob-detection-using-opencv-python-c 【参考方案1】:

opencv 确实是一个不错的选择。但是,我建议不要使用 blob 检测,而是找到“连接的组件”,这可以为您提供更多的灵活性。这个答案应该会引导你走向正确的方向:connected component labeling in python

【讨论】:

以上是关于从给定的 2D numpy 数组中删除集群的主要内容,如果未能解决你的问题,请参考以下文章

Numpy - 使用另一个数组的行从一个数组中删除行

如何从 numpy nd 数组中删除特定元素?

使用索引同时从 numpy 2D 数组的行中减去多个值

给定两个 2D numpy 数组 A 和 B,如何有效地将采用两个 1D 数组的函数应用于 A 和 B 行的每个组合?

有没有比使用 np.where 更快的方法来迭代一个非常大的 2D numpy 数组?

numpy 从索引列表创建 2D 掩码 [+ 然后从掩码数组中绘制]