我有一些(大致平坦的) View 的航拍视频(不需要深度图)。
我想获取相机中心经过的地面路径的形状。
路径不必与世界北方相对应,也不必具有任何世界坐标。只是具有大致相同的形状,即使仿射变换也是如此。
我已经为每一帧准备了一个矩阵,表示该帧和前一帧之间的仿射变换,精度很高,这意味着我有一个矩阵,对于帧中的每个像素,给出了该像素在连续的帧。
鉴于相机在移动,我如何获得位于帧中心(=轨迹)的地面点的地面路径的形状(随时间变化)?
更一般地说,问题实际上只是关于了解每个帧的帧的相对中心,以及与第一帧的对应关系。
任何线索和答案都会让我受益匪浅。
最佳答案
我们称帧 i 和 i+1 T 之间的转换. 让我们看一下 i 框架中的一个点 P[i] = (Xi,Yi)。如果我们想知道这个点是否在 i+1 帧中,我们只需要应用变换 T 在点 P[i] 上得到一个新点 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 ) - 普维。 这个想法是 PW_new = movement_of_the_camera_between_frames - last_location。
最后,您将得到一组点 PW1、PW2、..、PWn,它们是相机中心的路径。拟合样条曲线或其他东西并获得路径的形状。
关于algorithm - 如何从视频中以数学方式获取相机跟踪路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38328950/