我正在写一个iOS照片管理应用。
我想通过GPS信息将照片分组。然后我可以获得一个组的平均GPS信息,并给该组命名,例如:前往纽约。
是否有任何方便的算法可以通过GPS信息将附近的照片收集到群组中?
答案 0 :(得分:11)
忘记k-means的通常回复。这很简单,但根本不适合这项任务。
看看DBSCAN (Wikipedia)。它正确的目标是你需要的。您可以指定半径(如果使用大圆距离,则可以使用米!)和最小簇大小。如果你的集群密度差异很大,而且DBSCAN合并了集群,那么你可以尝试OPTICS (Wikipedia),它甚至不需要epsilon参数,只需要最小的集群大小。但它会产生分层集群。所以你会有例如一组埃菲尔铁塔图片,在一组巴黎图片中。
DBSCAN的 nice 属性是它具有噪声概念。 不的对象属于群集。
答案 1 :(得分:0)
我建议使用平方网格的空间索引或空间填充曲线。它类似于四叉树,您可以为每个gps对计算四核或geohash。这是一个平铺算法并细分平面。它也是一个分层集群。