使用2D相机进行3D位置估计


9

我有一个摄像头(iPhone),图像中有一个3D控制对象,我非常了解它的属性。(我的控制对象)。运动中还有第二个物体。最终目标是建立给定时间段内运动对象的3D轨迹。(跟踪)

我想问一下,我能找出答案吗?

  • 手机到控制对象的距离(为便于讨论,我们假设摄像头处于一定高度,并且一定距离两者都不是已知的,但是摄像头垂直于已知的表面)

  • 我可以在每个后续帧中找到对象的辅助对象。我的目标是如上所述评估其3D轨迹。

还有一个问题,我们可以将系统设置为可以设置手机到控制对象的距离(尽管不是首选),这对我的第二点有帮助吗?


您熟悉这方面的文献吗?如果没有,我可以推荐一些论文,但要警告:涉及数学。
Emre'3

@emre如果您可以提供一些指示,那就太好了。数学没问题,我们喜欢数学。
Ktuncer 2012年


@emre我确实快速看过审稿纸。.这更多是为了跟踪,我可以轻松地跟踪对象,这不是问题。我可以指出对象在哪个像素中。问题是对象在3D空间中的位置。这可能吗?基本上,我在3D空间中还有另一个对象,我知道可以用作参考框架的属性,仅此而已。
Ktuncer 2012年

抱歉,纸张写错了。也许您可以将基于视觉的3D轨迹跟踪应用于未知环境 [PDF]?他们使用立体声相机;你有可能吗?
Emre'3

Answers:


15

如果对象具有6个已知点(已知3D坐标,和),则可以计算与对象坐标系有关的摄影机位置。žX,YZ

首先是一些基础知识。

均匀坐标是欧几里得坐标矢量表示,其中我们附加了所谓的比例因子,使得均匀坐标为。在您自己的计算中,尝试尽可能使不变(这意味着您可以通过将均匀坐标除以最后一个元素来对其进行“归一化”:)。我们还可以对2D点使用同质表示,例如(请注意,这些和ω X = ω [ X ÿ ž 1 ] Ť ω = 1 XX(X,Y,Z)ωX=ω[XYZ1]Tω=1 X=ω[ X ÿ 1 ]ωXÿžXXωx=ω[XY1]ω,X,YZ每个点都不同(无论是2D还是3D点)。均质的坐标表示使数学更容易。

相机矩阵是从3D世界到图像传感器的投影矩阵:3×4

x=PX

其中是图像传感器上的点(以像素为单位),是投影的3D点(可以说它以毫米为单位)。XxX

我们记得两个3向量之间的叉积可以定义为矩阵向量乘法,这样:

v×u=(v)xu=[0v3v2v30v1v2v10]u

注意交叉生产也很有用。v×v=0

现在,让我们尝试根据先前的方程式求解投影矩阵让我们将左侧的投影方程式与的叉积矩阵相乘:Px

(x)xx=(x)xPX=0

啊哈!结果必须为零向量。如果现在打开等式,我们得到:

[0wyw0xyx0][P1,1P1,2P1,3P1,4P2,1P2,2P2,3P2,4P3,1P3,2P3,3P3,4]X=[P3,4WyP2,1XwP2,2YwP2,4Ww+P3,1XyP2,3Zw+P3,2Yy+P3,3ZyP1,4Ww+P1,1XwP3,4Wx+P1,2YwP3,1Xx+P1,3ZwP3,2YxP3,3ZxP2,4Wx+P2,1XxP1,4WyP1,1Xy+P2,2YxP1,2Yy+P2,3ZxP1,3Zy]=0

只需进行少量重构,我们就可以在矩阵之外获得投影矩阵:P

[0000XwYwZwWwXyYyZyWyXwYwZwWw0000XxYxZxWxXyYyZyWyXxYxZxWx0000][P1P2P3]=0

其中是的转置:摄像机矩阵的第i行。前一个(大)矩阵方程的最后一行是前两行的线性组合,因此不会带来任何其他信息,因此可以忽略。PnnP

稍作停顿,以便我们集中精力。请注意,必须为每个已知的3D-> 2D对应关系形成前一个矩阵方程(必须至少有6个)。

现在,对于每一个点对应,计算上述矩阵的前两行,可堆叠在彼此的顶部矩阵,你会得到新的矩阵为其2×12A

A[P1P2P3]=0

由于我们有12个未知数和(至少)12个方程式,因此可以解决。唯一的问题是我们不想得到简单的答案,其中

[P1P2P3]=0

幸运的是,我们可以使用奇异值分解(SVD)强制

[P1P2P3]=1

因此,为了求解方程式,计算矩阵 SVD 并选择对应于最小特征值的奇异矢量。该向量是矩阵A的零向量,也是相机矩阵。只需堆叠并形成。AP[P1P2P3]TP

现在您想知道到物体的距离。定义为:P

P=K[RRC]

其中是相对于对象原点的相机位置。可以通过计算 s零向量从求解。CPP

(Zarterman的Hartley-计算机视觉中的多视图几何)

最后,当您计算两帧的摄像机位置时,可以通过求解两个方程来计算未知对象的位置(或对象某些点的位置):X

x1=P1Xx2=P2X

与我们解决相机矩阵的方式几乎相同:

(x1)xP1X=0(x2)xP2X=0

等等。


说您计算摄像机3D位置的方式等效于OpenCV SolvePnp是否正确?docs.opencv.org/2.4/modules/calib3d/doc/…(在页面中搜索SolvePnP。我无法使用#粘贴URL)
gregoiregentil
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.