我正在研究一种基于立体相机的移动机器人避障系统。它将在室内使用,所以我假设地平面是扁平的。我们也可以设计自己的环境,因此我可以避免产生误报或否定的特定类型的障碍。
我已经找到了大量资源来校准相机并使图像排成一行,以及有关生成视差图/深度图的信息。我正在努力的是从中检测障碍的技术。通过检测地平面而工作的技术同样有用。
我正在使用openCV,并使用Learning OpenCV作为参考书。
谢谢,所有
答案 0 :(得分:12)
从我读过的文献中,有三种主要方法:
地平面接近根据立体声数据确定地平面,并假设所有不在平面上的点都是障碍物。如果您假设地面是图像中的主要平面,那么您可以使用强大的模型拟合算法(例如RANSAC)将其简单地找到重建点云的平面。
视差图方法跳过将立体声输出转换为点云。我见过的最流行的算法叫做v-disparity和uv-disparity。两者都在视差图中寻找相同的属性,但是uv-disparity可以检测到v-disparity本身无法解决的某些类型的障碍。
点云方法将视差图投影到三维点云中并处理这些点。一个例子是“倒锥算法”,它使用最小障碍物高度,最大障碍物高度和最大地面倾斜度来检测任意非平坦地形上的障碍物。
在这三种方法中,检测地平面是最简单和最不可靠的。如果您的环境有稀疏的障碍物和有纹理的地面,那就足够了。我对视差图方法没有多少经验,但结果看起来很有希望。最后,Manduchi算法在最广泛的条件下工作得非常好,包括在不平坦的地形上。不幸的是,它实现起来非常困难并且计算成本非常高。
<强>参考文献:强>
有一些关于地平面障碍物检测算法的论文,但我不知道我的头脑中有一个好的。如果您只需要一个起点,您可以在{4.2}节和this design report的第4.3.4节中了解我最近项目的实施情况。没有足够的空间来讨论完整的实现,但它确实解决了您可能遇到的一些问题。