我有一些由'折线'组成的地图文件(每条线只是一个顶点列表)代表隧道,我想尝试找到隧道“中心线”(粗略地显示在下面的红色)。
我过去使用Delaunay triangulation取得了一些成功,但我想避免使用该方法,因为它(通常)不允许轻松/频繁地修改我的地图数据。
关于我如何能够做到这一点的任何想法?
答案 0 :(得分:22)
答案 1 :(得分:4)
这是一个非常经典的骨架化问题;有很多算法可用。一些算法原则上在轮廓轮廓上工作,但由于几乎每个人都在图像上使用它们,我不确定这样的事情会有多少可用。无论如何,如果你只是绘制和填充下水道轮廓然后使用骨架化算法,你可以得到接近中线的东西(在像素分辨率内)。
然后你可以沿着这些线走,并用圆圈进行二元搜索,直到你至少击中两个单独的线段(如果你在分支点,则为三个)。你第一次击中的两个点的中点,或者一个圆圈的中心触及你第一次击中的三个点,是对中心的一个很好的估计。
答案 2 :(得分:3)