我对视频文件进行了对象检测,并对每个像素被激活的秒数求和,以求出该区域中显示对象的时间,这给了我二维的时间值数组。由于这些对象大多数时候都位于视频的同一位置,因此导致屏幕上的某些区域具有比其他区域更高的激活性。现在,我想找到一种自动检测“群集”而无需事先知道群集数量的方法。我考虑过使用类似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
我没有做太多的尝试,因为我不知道从哪里开始,并且对方法的任何建议(包括代码示例或链接到我可以在其中找到的方法的建议)将不胜感激! :)