我有一个平面图,墙上是黑色的,门是橙色的,目标是红色的。我想要的是制作一个应用程序,在图像上给定一个特定的点,计算并显示到达目标的路线。我已经有了一个路由方法,但它在matlab中,每个位置和对象都在代码中定义,并且不使用图像。我想知道的是如何扫描图像,通过颜色识别墙壁、门和目标,以便应用路线方法,然后在地图图像上显示路线(我想我应该使用drawable)。
这是从图像中实现寻路算法的一些步骤。
- 上传您的图片
- 应用颜色检测HSV(在现实生活中最容易控制光线随此格式变化)算法来获得对象单独
- 制作一个新的二进制矩阵,其中1代表您的楼层,0代表障碍
- 将占用网格算法应用于该二进制矩阵(这减少了你的矩阵,因为在寻路算法中你需要处理)
- 以及现在的路径查找算法。在这两种情况下,我建议使用diijistrak或A星算法你需要构造一个邻接矩阵
图论将帮助你更好地理解。祝你好运
您可以在处理IDE中进行快速prototipyng,并将所有处理IDE核心迁移到eclipse,您需要在eclipse项目中实现PApplet类,并可以将您的应用程序编译到Android。
我会使用某种占用网格/映射,其中每个网格单元=一个像素(或者可能是像2x2 3x3这样的小像素集合),然后在图像上进行k-means聚类。k 有几个选择
k=2
你有墙是一组(黑线)
其他一切都被视为开放空间(这是假设门可以打开)。
你需要知道红点的位置,但它不需要在地图上可见。这只是你地图上的另一块空地。程序内部知道的是端点。
k=4
所有事物的一组黑色=墙壁(已占用),橙色=门(根据是否可以打开,可能看起来像已占用的单元),红色=目标(未占用),白色=开放空间(未占用。
在这两种情况下,都可以为集群生成标签,并在地图中使用这些标签。我不确定你的路径查找算法到底是什么,但通常的目标是最小化一些成本函数,因此你给墙分配了极高的成本(这样它们就永远不会被穿过),可能给门分配了中等成本(以防它们无法打开)。只是一些想法,祝好运