【发布时间】:2019-09-04 14:50:29
【问题描述】:
我在视频文件上运行了对象检测,并对每个像素被激活的秒数求和,以找到对象在该区域中显示的时间量,这给了我一个二维时间值数组。由于这些对象大部分时间都位于视频的相同位置,因此会导致屏幕的某些区域比其他区域具有更高的激活度。现在我想找到一种方法来自动检测“集群”,而无需事先知道集群的数量。我考虑过使用 k-means 之类的东西,但也阅读了一些关于查找局部最大值的信息,但我不太清楚如何将所有这些放在一起,或者哪种方法最适合使用。另外,对象的大小各不相同,所以我不确定我是否可以使用局部最大值方法?
最终结果将是每个集群的 id 和最大时间值列表。
[[3, 3, 3, 0, 0, 0, 0, 0, 0]
[3, 3, 3, 0, 0, 0, 2, 2, 2]
[3, 3, 3, 0, 0, 0, 2, 2, 2]
[0, 0, 0, 0, 0, 0, 2, 2, 2]]
从这个示例数组中,我会得到一个列表:
id | Seconds
1 | 3
2 | 2
我没有尝试太多,因为我不知道从哪里开始,任何带有代码示例的方法建议或我可以在哪里找到它来完成此操作的链接将不胜感激! :)
【问题讨论】:
-
有 很多 的方法来解决这个问题,具体取决于您未包含的细节。我建议阅读 mixture modelling 而不是聚类,因为您的问题听起来更接近前者。从一维混合物开始,然后继续进行二维
-
@SamMason 非常感谢,我会看看 :)
标签: python machine-learning computer-vision