【问题标题】:How to merge close points in 2d list python如何在二维列表python中合并关闭点
【发布时间】:2020-09-16 22:07:48
【问题描述】:

我在合并 Voronoi 图的闭合点时遇到了麻烦,情况如下:

  1. 我从图像加载地图
  2. 地图被转换为仅包含表示障碍物的点的数组
  3. Voronoi 图是根据这个数组计算的

然后是我在“障碍物”内有顶点的问题,如图

我的想法是将包含许多点的障碍物转换为一个点。

点列表如下所示:

map = [[11, 29], [11, 30], [11, 31], [12, 28], [12, 29], [12, 30]]

我想取一组点并将这些点合并为一个。

我找到了这个Fast fuse of close points in a numpy-2d (vectorized)

考虑到不是“点状”的障碍物,我不知道如何融合这些点

【问题讨论】:

  • 你知道有多少障碍物,一个簇内或簇间的距离有多长?
  • 回答如下,但不,我不知道计数/形状/大小它可以在很大范围内变化

标签: python numpy voronoi kdtree


【解决方案1】:

我建议你不要将map 作为变量名,因为有一个同名的函数。您在流派中的问题是找到与您的链接中的问题相似的集群,但基于数据 k-Dtree 可能不是很好。我会推荐scikit 的其他聚类算法:

  • KMeans,如果您知道障碍物的数量
  • DBSCAN,如果您知道障碍物的最大尺寸

从 sklearn.cluster 导入 KMeans、DBSCAN 将 numpy 导入为 np

obstacle_list = [[0, 0], [0, 1], [1, 0], [1, 1], [3, 3], [4, 3],[3,4]]
obstacle_array = np.array(obstacle_list) # for easier handling

#if you know the number of obstacles
number_of_obstacles=2
cluster_values = KMeans(n_clusters=number_of_obstacles).fit_predict(obstacle_array)
print(cluster_values) # those are the cluster MeanShift found

#if you know the maximal size of an obstacle
max_size_of_obstacle = 3
db_values = DBSCAN(eps=max_size_of_obstacle).fit_predict(obstacle_array)
print(cluster_values)# those are the cluster DBSCAN found

如果您希望它仅由可能在中心某处的 1 个点表示)您可以遍历 cluster_values 来计算它。我会取 x 和 y 值的平均值,但您的数据似乎只是整数,所以您可能想要取其他值。

【讨论】:

  • 谢谢,我会尝试DBSCAN,可能会更好,用例是从jpg/png地图创建导航2d的Voronoi图,障碍物的大小/数量/形状也可以各不相同。我发现 shapefile 可能很有用,但仍然没有找到任何可以将表单图像转换为 shapefile 的开源项目
  • 您能否提供完整的示例文件或链接?我认为 .png 到 voronoi 的地图是很有可能的。
  • 我快速创建了一个原型,问题是我必须手动获取圆角半径值。我发现可见性图可能就是我要寻找的,但是聚类图像也存在问题,并且所有多边形角都按顺时针顺序描述。 github.com/adamkrawczyk/image_to_voronoi 和可见性图:docs.nvidia.com/isaac/isaac/packages/navigation/doc/…
  • 不幸的是,我无法获得 voronoi 包(尝试了您在自述文件中放入的内容,但在 pip 上找不到它)。但是,如果发现此算法可能对您有很大帮助:github.com/spwhitt/cclabel。它不是最新的,因此您必须将依赖关系 import image, ImageDraw 更改为 from PIL import Image, ImageDraw,但随后它会显示正确集群的所有对象
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 2013-09-04
  • 2022-01-05
  • 1970-01-01
  • 2020-02-04
  • 2019-02-25
  • 2021-11-29
  • 2021-10-25
相关资源
最近更新 更多