我试图从映射数据构建导航网格。其中一个步骤涉及将二进制图像(其中0表示占用空间,1表示自由空间)转换为平面直线图。
我试图找到一种方法来做到这一点,这有点可靠。我目前的想法是使用Canny边缘检测器,然后通过OpenCV的Hough线变换运行它。但是,这并不能保证检测到的线路以代表原始形状的方式连接。
可以安全地假设地图相对平滑,并且没有任何区域彼此接触。
编辑 - 以下是一个示例图片:
白色区域代表自由空间
黑色区域代表占用空间
答案 0 :(得分:3)
边缘检测对此二进制图像不必要/有害,只需使用contour following。
然后通过Douglas-Peucker线简化方法将Freeman链转换为折线。