我正在进行一个项目,通过图像来找到车辆的速度。我们从车内拍摄这些图像。我们将在第一张图像中标记某些物体作为参考。使用下一张图像中相同物体的属性,我们必须计算移动车辆的速度。有人可以帮助我吗?我正在使用Python OpenCV。我已经成功地使用光流法找到了第二张图像中标记的像素。有人可以帮我完成剩下的部分吗?
我正在进行一个项目,通过图像来找到车辆的速度。我们从车内拍摄这些图像。我们将在第一张图像中标记某些物体作为参考。使用下一张图像中相同物体的属性,我们必须计算移动车辆的速度。有人可以帮助我吗?我正在使用Python OpenCV。我已经成功地使用光流法找到了第二张图像中标记的像素。有人可以帮我完成剩下的部分吗?
// Algorithm example
MarkerCoords = {Four coordinates of know 3D points}
I1 = take 1st image
F1 = focal(I1)
MarkerPixels1 = {Matching pixels in I1}
Pose1 = posit(MarkerCoords, MarkerPixels1, F1)
I2 = take 2nd image
F2 = focal(I2)
MarkerPixels2 = {Matching pixels in I2 by optical flow}
Pose2 = posit(MarkerCoords, MarkerPixels2, F2)
o1 = origin_of_camera * Pose1 // Origin of camera is
o2 = origin_of_camera * Pose2 // typically [0,0,0]
dist = euclidean_distance(o1, o2)
speed = dist/frequency
编辑2:(回答评论)
"收购频率是什么?"
计算您的车辆速度相当于计算标记的速度。 (在第一种情况下,参考系是附加到地球的标记,在第二种情况下,参考系是附加到车辆的摄像机。)这由以下方程表示:
speed = D/(t2-t1)
使用:
D
距离 [o1 o2]
o1
标记在时间 t1
的位置o2
标记在时间 t2
的位置您可以通过从照片元数据中提取t1
和t2
或从图像设备的采集频率中检索经过的时间:t2-t1 = T = 1/F
。
"标记简单的东西(如海报)不是更好吗?如果这样做,我们可以将其视为二维对象吗?"
这在Posit算法(或据我所知的任何其他姿态估计算法)中是不可能的:它需要四个非共面点。这意味着您不能选择嵌入3D空间的2D对象,而必须选择具有一定深度的对象。
另一方面,只要是体积,您就可以使用非常简单的形状。(例如一个立方体。)