用摄像机进行车道跟踪:如何获取摄像机到车道的距离?

问题描述

我正在做最后一年的项目,使用相机进行车道跟踪。现在最具挑战性的任务是如何测量摄像头(实际装有摄像头的汽车)与车道之间的距离。

虽然车道很容易识别(霍夫线变换),但我发现无法测量到车道的距离。

考虑到有一种方法可以根据对象的像素宽度来测量到摄像头前的对象的距离,但这在这里不起作用,因为线的最近点在摄像头中是盲点。 / p>

解决方法

您想要的是使用单眼相机直接推断深度图。 你可以在这里参考我的答案 https://stackoverflow.com/a/64687551/11530294


通常,我们需要从世界上的不同位置进行光度测量,以形成对世界的 geometric 理解(也就是深度图)。对于单个图像,不可能测量几何形状,但是可以根据事先的理解来推断深度。

一种工作方式是使用基于深度学习的方法来指导推断深度。通常,基于深度学习的方法都是基于python的,因此,如果您只熟悉 python ,那么这是您应该采用的方法。如果图像足够小,我认为可以实现实时性能。有许多使用CAFFE,TF,TORCH等的此类工作。您可以在git hub上搜索更多选项。我在这里发布的是我最近使用的

enter image description here

参考: 戈达德,克莱门特等人。 “研究自我监督的单眼深度估计。” IEEE计算机视觉国际会议论文集。 2019。

源代码:https://github.com/nianticlabs/monodepth2

另一种方法是将大型FOV视频用于单个基于相机的SLAM。这其中有多种限制,例如需要良好的功能,较大的FOV,慢动作等。您可以找到许多这样的工作,例如DTAM,LSDSLAM,DSO等。HKUST或ETH还有其他一些软件包可以给定位置的地图(例如,如果您有GPS /罗盘),其中一些著名的名称是REMODE + SVO open_quadtree_mapping等。

基于单个相机的SLAM的一个典型示例是LSDSLAM。这是实时 SLAM。

这是基于ROS-C ++实现的,我记得他们确实发布了深度图。而且,您可以编写一个 python 节点以直接订阅深度或全局优化的点云,并将其投影到任何视角的深度图中。

enter image description here

参考:恩格尔,雅各布,托马斯·斯科普斯和丹尼尔·克雷默斯。 “ LSD-SLAM:大规模直接单目SLAM。”欧洲计算机视觉会议。占卜·斯普林格,2014年。

源代码:https://github.com/tum-vision/lsd_slam

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...