Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 在图像中确定到车辆的距离(Matlab、OpenCV)_Image_Matlab_Opencv_Distance_Vision - Fatal编程技术网

Image 在图像中确定到车辆的距离(Matlab、OpenCV)

Image 在图像中确定到车辆的距离(Matlab、OpenCV),image,matlab,opencv,distance,vision,Image,Matlab,Opencv,Distance,Vision,我有两张照片: 当我检测到汽车时的初始图像 将图像转换为其他平面时的IPM图像。 我没有任何关于相机参数的信息。 我知道汽车在原始图像和IPM图像中的位置,我想知道如何确定汽车和摄像头之间的距离。我们能假设照相机的高度是1米吗 是否存在任何公式或算法?从您的问题来看,您似乎处于单眼情况,深度/比例信息自然不可用。恐怕没有简单的方法可以达到你想要的。在我脑海中,有几个选择: 1-使用神经网络。这是最便宜的选择(从材料和开发工作的角度来看)。另外,如果你没有视频流,只有一张图片,它也能工作(尽管

我有两张照片:

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

将图像转换为其他平面时的IPM图像。

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


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

从您的问题来看,您似乎处于单眼情况,深度/比例信息自然不可用。恐怕没有简单的方法可以达到你想要的。在我脑海中,有几个选择:

1-使用神经网络。这是最便宜的选择(从材料和开发工作的角度来看)。另外,如果你没有视频流,只有一张图片,它也能工作(尽管我猜这不是你的情况)。如果性能不是问题,您可以或多或少地使用任何卷积神经网络,并在深度数据上对其进行训练。否则,快速搜索将引导您找到更快的最先进的网络,您可以根据自己的需要进行搜索。然而,包含深度图地面真相的数据库有点稀缺,通常您必须自己为训练数据构建深度图。在这种情况下,我们会想到本文底部列出的许多开源方法。一旦你有了深度图,你就可以训练单目深度估计

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

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

4-您可以使用便宜的GPS接收机(想到ublox EVK*系列)。在这种情况下,您仍然需要使用一些SLAM变量(例如约束束调整或任何基于卡尔曼的方法)。假设GPS偏差较低(因为您只显示不受多径影响的近郊图像),这将为您提供一个适当的近似比例


请注意,方法三和方法四将为您提供重建的估计,因此,如果您使用稀疏(即基于特征的)SLAM方法,您将不得不加密检测到您的汽车的区域(除非粗略估计可以).

如果要计算到另一个已知大小对象的距离,则需要知道已知距离处特征的大小。这是唯一一种在不知道摄像机的情况下获得物体距离的方法。@Pigge知道车道的宽度会有帮助,对吗?我不认为这会有帮助,因为当车道投影到图像中时,较近的部分(底部像素行)会占用很多像素,而较远的部分会占用很多像素(更高的像素行)将占用更少的像素。因此,在这个间隔中,我们将在哪里测量车道的长度(以像素为单位),并说“N个像素的长度将相当于世界空间中K米的长度”?否则单目SLAM会容易得多。事实上,我之前的评论并不完全正确。对于一幅图像来说,这是正确的。但是给定一个视频流,理论上你可以使用车道宽度来推断比例,但这需要我)SLAM算法来准确地重建3d车道边界(这在非城市环境中更难),例如通过将边界限制在已知宽度。II)区分(例如分割)车道边界点和非车道边界点之间的3d点。但是,这将导致一个可以说是复杂的管道(不要忘记异常值拒绝)。