确定图像中车辆的距离(Matlab,OpenCV)

时间:2017-04-03 07:01:32

标签: image matlab opencv distance vision

我有2张图片:

1我检测到汽车时的初始图像。

enter image description here

当我将图像转换为另一个计划时,

2 IPM图像。 enter image description here

我没有关于相机参数的任何信息。 我知道汽车在原始图像和IPM图像中的位置,我想知道如何确定汽车和摄像机之间的距离。我们可以假设相机的高度是1米。

是否存在任何公式或算法?

1 个答案:

答案 0 :(得分:0)

从您的问题来看,您似乎处于单眼情况,其中深度/比例信息自然不可用。我担心没有简单的方法来实现你想要的。在我的头顶,这里有几个选项:

1-使用神经网络。这是最便宜的选择(从材料和开发工作的角度来看)。此外,如果您没有视频流但只有单个图像(虽然我猜这不是您的情况),它会工作。如果性能不是问题,您可以采用或多或少的卷积神经网络,并根据深度数据进行训练。否则,快速搜索将带您进入更快的先进网络,您可以满足您的需求。但是,包含深度图基本事实的数据库有点稀缺,您通常必须自己为您的训练数据构建深度图。在这种情况下,会想到here底部列出的许多开源方法。获得深度图后,您可以训练单眼深度估计。

2-您可以使用立体相机。那些通过简单的三角测量自然地给你深度。

3-您有视频流,可以使用IMU或汽车里程计。在这种情况下,您可以使用许多(多传感器)同时定位和映射(SLAM)方法。关于这个问题的文献很丰富,但IMU校准通常有点噩梦。

4-您可以使用便宜的GPS接收器(ublox EVK *系列)。在这种情况下,您仍然需要使用一些SLAM变体(例如约束捆绑调整或任何基于kalman的方法)。假设GPS偏差较低(因为你只显示了不受多径影响的城市周边图像),这将给你一个不错的尺度近似值。

请注意,方法3和方法4将为您提供重建的估计值,因此如果您使用稀疏(基于特征的)SLAM方法,您将最终必须密集您的汽车所在的区域被检测到(除非粗略的估计是可以的)。