简化迷宫的照片

Simplifying a photo of a maze

我正在做一个项目,我需要拍一张类似于 this and find a path through it to guide a sphero robot through it (a way to find the beginning of the maze already exists). I have filtered the image such that I get the walls of the maze clear and the result is here

简单的方法是在像素上使用 BFS,它可以工作但需要太长时间而不实用。我想做的另一种方法是将迷宫简化为单元格,然后解决它。我已经成功地完成了显示的理想数字 image here and here(理想的意思是一切都是直的,所有的墙都有相同的宽度等)。

我的问题是如何对原始过滤后的照片做类似的事情,因为理想情况下使用的方法使用墙壁的像素宽度,这在实际情况下不是常数?我在 python.

上使用 opencv

你能为迷宫假设一个已知大小的网格吗?你的迷宫是 10x10.

我同意你将图像简化为原理图的建议。假设您知道网格大小,覆盖它并测试正方形角之间的每一面墙 presence/absence。从可能有墙的地方取一个舒适的子区域(numpy slice)。测试像素计数并检查是否足够用于墙壁或非常少的像素(没有墙壁,最多噪音)。

如果您不知道网格的大小,可以测试一下。拍摄平面图片,分别对图像的每一行和每一列求和,并检查代表墙壁的峰值。计算峰值。

你的照片变形了。确保板是平的。然后应用透视变换来纠正迷宫。