gpt4 book ai didi

opencv - Emgu CV(或 OpenCV)中多边形集的 Voronoi 图

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:16 29 4
gpt4 key购买 nike

我使用 Emgu CV 从道路网络图像的轮廓中提取了一组闭合多边形。多边形代表道路轮廓。结果如下所示,绘制在 OpenStreetMaps map 上(来自 Emgu CV 的“像素”形式的多边形已转换为要绘制的纬度/经度形式)。

表示道路轮廓的多边形集:

enter image description here

我现在想计算这组多边形 的 Voronoi 图,这将帮助我找到道路的中心线。但在 Emgu CV 中,我只能找到一种方法来获取一组点集的 Voronoi 图。这是通过查找点集的 Delaunay 三角剖分(使用 Subdiv2D 类)然后使用 GetVoronoiFacets 计算 voronoi 面来完成的。

我已经尝试计算集合中所有多边形定义的 的 Voronoi 图(每个多边形都是一个点列表),但这给了我一个极其复杂的 Voronoi 图,作为一个可能期望:

点集的 Voronoi 图:

enter image description here

这张图片显示了第一张图片的一小部分(为清楚起见,因为它太复杂了)。确实图中的一些线似乎代表了道路中心线,但其他线太多了,很难找到提取“好”线的标准。

我面临的另一个潜在问题是,正如您应该能够从第一张图片中看出的那样,一些多边形位于其他多边形的内部,因此我们不处于一组不相交的标准情况中 封闭的多边形。也就是说,有时道路位于一个多边形的外边界和另一个多边形的内边界之间。

我正在寻找有关如何使用 Emgu CV(或 Open CV)计算多边形集的 Voronoi 图的建议,希望能克服我已经概述的第二个问题。我也愿意接受其他关于如何在不使用 Emgu CV 的情况下实现这一目标的建议。

最佳答案

如果您已经有了多边形,您可以尝试计算 Straight Skeleton .

我没试过,但 CGAL 有一个 implementation .请注意,此特定功能 license是 GPL。

一个可能的问题可能是:

The current version of this CGAL package can only construct the straight skeleton in the interior of a simple polygon with holes, that is it doesn't handle general polygonal figures in the plane.

可能有解决方法。例如,您可以将所有多边形包含在一个更大的矩形中(这样原始多边形将成为新矩形的孔)。如果原始多边形有孔,这可能效果不佳。为了解决这个问题,您可以对每个有孔的多边形执行算法,然后将所有多边形放在一个矩形中,移除所有孔并再次执行算法。

关于opencv - Emgu CV(或 OpenCV)中多边形集的 Voronoi 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501788/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com