使用Emgu CV从一幅道路网络图像的轮廓中提取出一组封闭多边形。这些多边形代表了道路的轮廓线。下图显示了结果,在OpenStreetMaps地图上绘制(Emgu CV中的'pixel'形式的多边形已被转换为纬度/经度形式以便绘制)。
我尝试计算由集合中所有多边形定义的点的Voronoi图(每个多边形都是一个点列表),但是这给我带来了非常复杂的Voronoi图,正如我们所预期的那样。
我面临的另一个潜在问题是,正如您可以从第一幅图中看出的那样,有些多边形位于其他多边形的内部,因此我们不处于标准的一组不相交的封闭多边形的情况下。也就是说,有时道路位于一个多边形的外边界和另一个多边形的内边界之间。
表示道路轮廓线的多边形集:
我现在想计算这个多边形集的Voronoi图,以帮助我找到道路的中心线。但是在Emgu CV中,我只能找到获取一组点的Voronoi图的方法。这可以通过找到一组点的Delaunay三角剖分(使用Subdiv2D类)然后使用GetVoronoiFacets计算voronoi面得到。我尝试计算由集合中所有多边形定义的点的Voronoi图(每个多边形都是一个点列表),但是这给我带来了非常复杂的Voronoi图,正如我们所预期的那样。
一组点的Voronoi图:
这张图片显示了第一张图片的一个较小部分(为了清晰起见,因为它非常复杂)。确实,图中的一些线条似乎代表道路的中心线,但还有很多其他线条,很难找到提取“好”线条的标准。我面临的另一个潜在问题是,正如您可以从第一幅图中看出的那样,有些多边形位于其他多边形的内部,因此我们不处于标准的一组不相交的封闭多边形的情况下。也就是说,有时道路位于一个多边形的外边界和另一个多边形的内边界之间。
我正在寻求关于如何使用Emgu CV(或Open CV)计算多边形集合的Voronoi图的建议,希望能够解决我所提出的第二个问题。如果没有使用Emgu CV的其他方法来实现这一点,我也很乐意接受建议。