我有一个栅格值网格,看起来像下面的图像(白色是高值,黑色背景值是零)。

我正在尝试编写某种路径跟踪代码,从一条线的末尾开始,跟踪到另一条线,遍历可能的最高值(即选择在这条线中的像素越白越好),但仍会到达另一端。
我已经在这个问题上挣扎了一段时间,似乎不能得到任何我试图工作的东西。所以我想知道,是否已经为这类问题开发了一种通用算法?我做了很多搜索,但大多数路径算法似乎都是为矢量/网络而设计的,而不是像这样的栅格。
有什么想法吗?
发布于 2010-12-04 05:24:03
最简单的想法可能是使用A* algorithm,其中每个像素都是一个节点,节点的成本是像素的暗度。
更新:找到了一个不错的tutorial。
发布于 2010-12-04 05:24:27
一种方法是:
处的直线拟合样条曲线
需要一些调整才能让它很好地工作,但这样做是可能的。另一种变化是,如果白色部分的宽度超过1或2或3个像素,则勾勒出它们的轮廓,然后组合双线。
发布于 2010-12-04 05:09:26
我认为您不需要遗传算法或任何荒谬的东西;好的老式递归和动态编程应该就足够了。我最初的想法是,你应该能够通过广度优先搜索来实现你的目标。从起点开始,您访问所有得分大于该路径值的邻居--所有单元格从无穷大开始,黑色单元格的成本将是无穷大,这些是您可以修剪的路径)。一旦到达目的地,如果可以到达,您应该能够回溯以找到路径。这是贪婪的,但如果你的路径行为良好,它应该是好的。
对于具有更多灰色和曲折的路径,将光栅图像转换为图形可能是一个好主意,边缘权重是邻居的灰度值(或灰度值的差异,取决于此数据的实际含义)。因此,您应该能够使用基于该解释的任何最短路径算法。
https://stackoverflow.com/questions/4349813
复制相似问题