如何以数学方式从视频中获取相机跟踪路径



我有一些(大致平坦的)视图的航拍视频(不需要深度图)。

我想获得相机中心经过的地面路径的形状。

路径不必与世界北方相对应,也不必有任何世界坐标。 只是具有大致相同的形状,即使仿射变换。

我已经为每一帧提供了表示该帧与前一帧之间的仿射变换的矩阵,精度很高,这意味着我有一个矩阵,对于帧中的每个像素,给出该像素在连续帧中的位置。

假设相机正在移动,如何获得位于帧中心的地面上点的地面路径的形状(随时间变化)(=迹线)?

更一般地说,问题实际上只是关于知道帧的相对中心,对于每一帧,与第一帧对应。

任何线索以及答案都会使我受益匪浅。

我们称之为帧 ii+1T 之间的转换。让我们看一下第 i 帧中的点 P[i] = (Xi,Yi)。如果我们想知道这个点是否在第 i+1 帧中,我们只需要在点 P[i] 上应用变换 T 并得到一个新的点 P[i+1] = T(P)。

为了获得相机的路径,我们从第 1 帧开始,图像的中心点 P1 = (row/2,col/2) 并计算 P2 = T(P1)。相机在第 1 帧和第 2 帧之间所做的路径大约是连接第 2 帧和 P2 中心之间的线。我们可以通过计算 P3 = T(P2) 等来继续对帧 2 执行此操作......问题是这些点位于图像坐标中,而不是世界坐标中。

为了解决这个问题,我们只需确定我们的"世界坐标系"PW1 = (0,0) 是第一帧的中心。在我们新的"世界坐标系"的第二帧中,相机的中心将是PW2 = ((row/2,col/2) - P2) - PW1。对于第三帧,中心将是 PW3 = ((row/2,col/2) - P3) - PW2,对于第 i 帧,PWi+1 = ((row/2,col/2) - Pi+1) - PWi。这个想法是PW_new = movement_of_the_camera_between_frames - last_location。

最后,您将拥有一组点PW1,PW2,..,PWn,它们是相机中心的路径。拟合样条或其他东西,并获得路径的形状。

最新更新