单摄像头视觉测绘系统


17

前段时间,我看到了一个演示“小型玩具坦克”的演示,上面装有一个摄像头。该坦克能够在地面上行驶并检测物体,然后移动/转向以避开它们。有趣的是,它使用了单个摄像头视觉系统,据我所知,它利用的是平坦的地板。然后使用比率将要素在场景中相对于电机和行进方向的运动进行评估,从而绘制场景地图。

任何人都可以向我发送要搜索的内容的指针,以获得有关此内容的更多信息,或指向可以执行此操作的代码库的指针。

我问的原因是,这是几年前(5年以上)的单摄像头系统,因此(据我所记得)是相对较低的计算负载。我打算在Raspberry PI上尝试此方法,以构建可映射一个房间或一组房间的汽车/坦克。


2
欢迎来到Ben 机器人。请查看“ 如何提问”,浏览一些有关如何根据实际遇到的问题写出实用的,可回答的问题的提示。谢谢,
Mark Booth

Answers:


4

很难确切地说出他们在做什么,但是您在这里可能想要的术语是“ 光流 ”和“ 自我运动 ”。听起来好像已经进行了某些特征检测和匹配(例如SURF或SIFT之类的东西)或前景/背景分割。

OpenCV可能是计算机视觉中使用最广泛的代码库,它们具有许多用于运动分析功能。OpenCV应该在Raspberry Pi上运行,尽管您的算法可能会受到计算能力的限制。


4

基于WildCrustcean的响应,另一种可能性立体视觉。尽管我们经常将立体视觉视为使用两个摄像机,但这些技术实际上只需要在空间中位移的图像和位移模型即可。换句话说,我可以拍摄一张图像,然后移动,然后拍摄另一张图像。只要我知道这两个图像之间的转换,便可以使用立体视觉技术计算到图像中某个点的距离。


2
我认为您正在谈论的技术称为“运动构造”。
Kozuch '16

1

可能已经使用了Parellel跟踪和映射PTAM。PTAM是同时定位和制图(SLAM)问题的实现,该问题使用单个摄像头构建世界3D地图并通过跟踪视觉特征进行定位。

我的团队曾经尝试在ROS中使用PTAM软件包

我们在Intel Atom上运行Ubuntu,而我记得它并没有占用太多处理器。但是,我们最终并未使用,主要是因为我们无法在机器人将要运行的环境中让它找到足够的功能。


0

通常,除非您具有有关该世界的额外信息,否则您无法从单个图像中提取公制距离测量值。例如,如果您知道世界是平面的(或者您可以检测到地板,它是一个平面区域),则可以估算单应性。

单应性是平面(3x3矩阵)之间的投影变换。给定相机的固有校准,您可以将此平面感应的单应性分解为旋转和平移。翻译是按比例的。您可以通过了解相机到地面(平面)的距离来解决此比例尺的歧义。

一旦有了单应性,就可以检测不在平面上的对象。单应性可以将第一个图像变形为第二个图像。平面上的对象将对齐,并且会有一个小的误差。不在平面上的对象将无法对齐。这称为视差。

一种实现方式可能是

  1. 从两个图像中提取特征。
  2. 匹配功能,或对其进行跟踪。
  3. 使用RANSAC估算单应性。
  4. 使用校准将单应性分解为旋转和平移。
  5. 将第一个图像变形为第二个图像
    。误差较大的像素不在地面上,可能会成为
    障碍。

大部分构件都是在opencv中实现的(请参见http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)。

祝好运。

PS单应性分解也将为您提供平面法线。但是,由于您假设这是地平面,因此我们有法线指向上方。可以在校准过程中完成更精确的解决方案。您可以使用棋盘格目标并估计其姿势。该姿势将具有一个平面法线并与摄影机保持一定距离。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.