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

现在我要计算这个多边形集的Voronoi图,它将帮助我找到道路的中心线。但在Emgu中,我只能找到一种获得点集的Voronoi图的方法。这是通过找到点集的Delaunay三角剖分(使用Subdiv2D类),然后用GetVoronoiFacets计算voronoi面来完成的。
我尝试过计算由集合中的所有多边形定义的点的Voronoi图(每个多边形是一个点列表),但这给了我一个极其复杂的Voronoi图,正如人们可能会想到的那样:
数据集的Voronoi图:

这张图片显示了第一张图片的一小部分(为了清晰起见,因为它是如此复杂)。事实上,图中的一些线似乎代表了道路中线,但是还有那么多其他的线,很难找到一个标准来提取“好”线。
我面临的另一个潜在问题是,你应该能够从第一张图片中看出,一些多边形在其他的内部,所以我们不是处于一组不相交的封闭多边形的标准情况下。也就是说,有时道路是介于一个多边形的外部边界和另一个多边形的内部边界之间。
我正在寻找关于如何使用Emgu CV (或Open )计算多边形集合的Voronoi图的建议,希望能够克服我所描述的第二个问题。我也愿意接受其他关于如何在不使用Emgu简历的情况下实现这一目标的建议。
https://stackoverflow.com/questions/36501788
复制相似问题