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

标签 algorithm image-processing computer-vision affinetransform image-registration

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

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

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

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

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

更一般地说,问题实际上只是关于了解每个帧的帧的相对中心,以及与第一帧的对应关系。

任何线索和答案都会让我受益匪浅。

最佳答案

我们称帧 ii+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/

相关文章:

python - TensorFlow 中图像分类的输入/输出形状错误

objective-c - 使用OpenCV和iOS创建封闭区域时将任何图像转换为可着色

python - 如何在 TensorFlow 中将顺序操作与副作用结合起来

algorithm - 确定 "least valuable"pair out of a set of pairs,具体约束

c++ - 通过减去具有不同背景的两个图像来获得 alpha

algorithm - Alyona 和 Copybooks : what's wrong with this code

javascript - 使用 OpenCV.JS 进行颜色检测

opencv - SURF 描述符的值是多少?

Java 按制造商、型号和年份升序查找最旧的汽车型号?

algorithm - 向右展开按位算法