首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Emgu CV (或OpenCV)中多边形集的Voronoi图

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

Stack Overflow用户
提问于 2016-04-08 14:09:04
回答 1查看 1K关注 0票数 11

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

代表道路轮廓的一套多边形:

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

我尝试过计算由集合中的所有多边形定义的点的Voronoi图(每个多边形是一个点列表),但这给了我一个极其复杂的Voronoi图,正如人们可能会想到的那样:

数据集的Voronoi图:

这张图片显示了第一张图片的一小部分(为了清晰起见,因为它是如此复杂)。事实上,图中的一些线似乎代表了道路中线,但是还有那么多其他的线,很难找到一个标准来提取“好”线。

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-01-24 09:50:19

如果您已经拥有多边形,您可以尝试计算直骨架

我还没有试过,但是CGAL有一个实现。注意,这个特殊的函数许可证是GPL。

一个可能的问题可能是:

目前版本的CGAL软件包只能在有孔的简单多边形内部构造直线骨架,即不处理平面上的一般多边形图形。

也许有办法解决这个问题。例如,您可以将所有多边形包含在一个较大的矩形中(这样,原始多边形将成为新矩形的孔)。如果原来的多边形有洞的话,这可能不太好。要解决这个问题,您可以对每个有洞的多边形执行算法,然后将所有多边形放置在一个矩形中,删除所有的孔,然后再次执行该算法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36501788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档