从二进制图像中提取形状/多边形?

时间:2015-12-01 13:22:46

标签: python python-2.7 opencv computer-vision computational-geometry

我试图从映射数据构建导航网格。其中一个步骤涉及将二进制图像(其中0表示占用空间,1表示自由空间)转换为平面直线图。

我试图找到一种方法来做到这一点,这有点可靠。我目前的想法是使用Canny边缘检测器,然后通过OpenCV的Hough线变换运行它。但是,这并不能保证检测到的线路以代表原始形状的方式连接。

可以安全地假设地图相对平滑,并且没有任何区域彼此接触。

编辑 - 以下是一个示例图片:

sample map

白色区域代表自由空间

黑色区域代表占用空间

1 个答案:

答案 0 :(得分:3)

边缘检测对此二进制图像不必要/有害,只需使用contour following

然后通过Douglas-Peucker线简化方法将Freeman链转换为折线。