【发布时间】:2023-04-02 12:28:01
【问题描述】:
我half-answered a question about finding clusters of mass in a bitmap。我说一半是因为我把它留在了位图中的所有点都按质量排序的条件下,然后留给读者过滤从同一簇中删除点的列表。
然后在考虑这一步时,我发现解决方案并没有像我想象的那样突然出现。所以现在我向你们寻求帮助。我们有一个具有类似质量的点列表(元组的 Python 列表,但您可以用任何语言表示它):
[ (6, 2, 6.1580555555555554),
(2, 1, 5.4861111111111107),
(1, 1, 4.6736111111111107),
(1, 4, 4.5938888888888885),
(2, 0, 4.54),
(1, 5, 4.4480555555555554),
(4, 7, 4.4480555555555554),
(5, 7, 4.4059637188208614),
(4, 8, 4.3659637188208613),
(1, 0, 4.3611111111111107),
(5, 8, 4.3342191043083904),
(5, 2, 4.119574829931973),
...
(8, 8, 0.27611111111111108),
(0, 8, 0.24138888888888888) ]
每个元组的形式为:
(x, y, mass)
请注意,列表在此处排序。如果您的解决方案不希望对它们进行排序,那完全可以。
挑战,if you recall,是找到主要的质量团。集群的数量是未知的。但是您知道位图的尺寸。有时,一个簇中的几个点的质量比下一个(按大小)簇的中心更大。所以我想做的是从质量较高的点出发,并删除同一簇中的点(附近的点)。
当我尝试这样做时,我最终不得不一遍又一遍地遍历列表的某些部分。我有一种感觉,我对此很愚蠢。你会怎么做?伪代码或真实代码。当然,如果您可以使用 Python 代码从我在那个答案中留下的地方开始,那么我更容易尝试它。
下一步是计算位图中真正有多少簇。我仍在努力定义该问题,因此我可能会返回有关它的问题。
编辑:我应该澄清一下,我知道这个问题没有“正确”的答案。问题的名称是关键。我的集群的第一阶段已经完成。 我正在寻找一种快速、准确“足够”的方法来过滤掉附近的点。
如果您知道我可以如何使问题更清楚,请告诉我。
【问题讨论】:
-
聚集质量有点令人困惑,因为我不确定它是否与高度或温度等标量值正确相关。例如,如果我有一个质量为 1 点的给定区域,这与具有质量为 1/10 的 10 个点的相同区域相同。也许澄清一下?
-
我问的原因是,如果它是一个标量值,比如温度,你可以用轮廓来挑选温度相等的区域。
-
抱歉回复晚了。是的,我想说我们正在处理单元格中的标量数据。毕竟是质量。
标签: python algorithm language-agnostic bitmap filtering