我目前正在尝试从iPhone视频拍摄的一系列图像中重建落下的物体(如球或岩石)的3D轨迹。
我应该从哪里开始寻找?我知道我必须校准相机(我想我将使用Jean-Yves Bouguet的matlab校准工具箱),然后从相同的序列中找到消失点,但后来我真的卡住了。
答案 0 :(得分:4)
除非您有立体相机,否则即使使用经过校准的相机,也无法确定位置。因为你不知道球是小而且接近或大而且很远。
基于具有不同焦点的一系列图像,还有其他单相机方法。但我怀疑你能以这种方式控制你手机的相机。
修改(1):强> 正如@GuntherStruyf指出的那样,如果你的一个输入是球的大小,你可以知道位置。
答案 1 :(得分:4)
请阅读:http://www.cs.auckland.ac.nz/courses/compsci773s1c/lectures/773-GG/lectA-773.htm 它解释了使用两个相机的三维重建。现在,对于一个简单的摘要,请查看该站点的图:
你只知道pr / pl,图像点。通过从它们各自的焦点Or / Ol跟踪一条线,你得到两条线(Pr / Pl),它们都包含P点。因为你知道2个摄像机的原点和方向,你可以为这些线构造3d方程。因此,它们的交点是3d点,瞧,就这么简单。
但是当你丢弃一台摄像机(让我们说左边的摄像机)时,你只能确定线路Pr。缺少的是深度。幸运的是,您知道球的半径,这些额外的信息可以为您提供缺失的深度信息。见下图(不介意我的绘画技巧):
了解深度我看到最后一个问题:在一个角度下投射时球的形状会发生变化(即在捕捉平面上不垂直)。但是你确实知道角度,所以补偿是可能的,但我把它留给你:p
编辑:@ripkars'评论(评论框太小)
1)好的
2)aha,对应问题:D通常通过相关分析或匹配特征(大部分匹配,然后跟踪视频)来解决。 (也存在其他方法) 我自己没有使用过图像/视觉工具箱,但肯定会有一些东西可以帮助你。
3)=校准相机。通常,在安装摄像机时(以及每次更改其相对姿势时),您应该只执行一次
4)是的,只需将Longuet-Higgins方程用于工作,即:求解
P = C1 + mu1*R1*K1^(-1)*p1
P = C2 + mu2*R2*K2^(-1)*p2
与 P = 3D点找 C =摄像机中心(矢量) R =表示世界帧中第一相机的方向的旋转矩阵。 K =摄像机的校准矩阵(包含摄像机的内部参数,不要与R和C包含的外部参数混淆) p1和p2 =图像点 mu =表示从摄像机中心C到P的投影线上P的位置的参数(如果我是正确的R * K ^ -1 * p表示从C到P指向的线方程/矢量)
这些是包含5个未知数的6个方程:mu1,mu2和P
编辑:@ripkars'评论(评论框再次太小) 我脑海中浮现的唯一计算机视觉库是OpenCV(http://opencv.willowgarage.com/wiki)。但这是一个C库,而不是matlab ......我猜谷歌是你的朋友;)
关于校准:是的,如果这两个图像包含足够的信息以匹配某些功能。如果你改变相机的相对姿势,你当然必须重新校准。
世界框架的选择是任意的;只有当你想要在之后分析检索到的三维数据时才变得很重要:例如,你可以将一个世界平面与运动平面对齐 - >如果你想要一个简化的运动方程。 这个世界框架只是一个参考框架,可以通过“更改参考框架转换”(平移和/或旋转转换)进行更改