如何在可步行的路径上找到两点之间的路径[关闭]

Posted

技术标签:

【中文标题】如何在可步行的路径上找到两点之间的路径[关闭]【英文标题】:How to find a path between the 2 points on a walkable path [closed] 【发布时间】:2021-12-14 23:41:22 【问题描述】:

在类似上面的图像中,也假设二值化(1 代表白色,0 代表黑色)。 白色区域代表可步行区域,2个红点只是为了告诉你起点和终点在哪里(但实际上2个红点的像素值仍然是1)。

如何找到从起点(可能是这两个红点中的任何一个)到另一个红点的路径?

搜索了一段时间,发现很多文章只讨论找到 2 个点之间的最短路径,但没有运气在可步行区域连接点。

我对这个问题的最初想法是使用所谓的“注水”方法来找出路径,但它需要递归调用,这很慢且内存密集。 由于路径是在 RPi 上的视频流中,因此需要非常快速地绘制路径,因此计算能力并不强。

欢迎任何想法和代码。

更新

为了更清楚:

    作为起点的点将始终是底部(固定位置)并且

    另一个点在同一个分支迷宫中。

    让我们假设必然存在一条现有路径。

    可以有多个路径,但我正在寻找最短路径

    路径不太靠近可步行区域的边缘,这意味着路径与边缘有一个边距 X(宽度)。(可选)

【问题讨论】:

您应该提供其他示例和限制条件。其中一个点可能位于分支迷宫的中间吗?是否一定存在现有路径?可以有(非平凡相同的)多条路径吗? 使用 BFS 或 A* 在像素上查找路径,如果像素路径不够好,则使用高斯/拉格朗日插值来查找曲线 嗨@Photon 谢谢,是的,我找到了一个可以进行 BFS 或 A* 路径查找的库,但我发现它需要很多依赖项。您对小型且有效的库有什么建议吗? 嗨@mozway 一个点作为起点将始终是底部(固定位置),另一个点在同一个分支迷宫中。是的,它必然是一条现有的路径。是的,可以有多条路径,但我正在寻找一条不会太靠近可步行区域边缘的最短路径。 我有一个解决这个问题的想法。 1-您已经知道红点在哪里,计算红点到其行中的黑色区域有多远。 2- 将这些长度相互缩放 3- 将此比例用于每个白色行并确定点,直到到达另一个红点 【参考方案1】:

您可以使用 A* 等路径规划算法的任何实现,并在搜索矩阵时使用每个像素,其中 0 是可步行路径,1 是不可步行(墙壁)

这里是实现的要点 https://gist.github.com/ryancollingwood/32446307e976a11a1185a5394d6657bc

以及您需要根据需要导入和子类化的通用解决方案 https://github.com/jrialland/python-astar

【讨论】:

以上是关于如何在可步行的路径上找到两点之间的路径[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

移动应用程序上的 Google 路线,两点之间的步行距离 - 最小化响应

Boost Geometry 多边形内两点之间的路径

使用 Google Maps Android API v2 在两点之间绘制路径

求两点间所有路径

如何求有向图两点间的所有路径

【python实战】批量获得路径规划——高德地图API