如何使用3x3单应性将立方体增强到特定位置

时间:2011-03-17 16:45:49

标签: opengl geometry computer-vision augmented-reality homography

我能够通过计算它们之间的3x3单应性来跟踪同一场景的不同图像上的4个坐标。这样做我可以将其他2D图像叠加到这些坐标上。我想知道我是否可以使用这种单应性来使用opengl将立方体增加到这个位置?我认为3x3矩阵没有提供足够的信息,但如果我知道相机校准矩阵可以让我足够创建一个模型视图矩阵来做到这一点?

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:3)

如果你有摄像机校准矩阵(内在参数)和单应性,由于单应性(在同一平面物体的两个视图之间)被定义为:

H = K[R|T]

其中K是3x3校准矩阵,R(3x3旋转矩阵)和T(3x1平移矢量)是视图变换(从对象坐标到摄像机坐标)。关于如何从H计算R和T有很多话要说。另一种方法是使用一些非线性最小化技术来计算R和T.显然,后一种方法更好,因为它将提供更好的近似解决方案。前者只是开始做增强现实的一种方式;):

让我们看看如何在使用直接方法时导出R和T.如果h1,h2和h3是 H的列向量,以K,R和T的形式定义为:

H = K [r1 r2 t](记住我们说的是z = 0的点)

其中r1是R的第一列向量,r2是第二列,t是平移向量。然后:

r1 = l1 * (K^-1) h1

r2 = l2 * (K^-1) h2

r3 = r1 x r2(r1和r2之间的交叉产品)

t = l3 * (K^-1) h3

其中l1,l2,l3是缩放因子(实际值): l1 = 1 / norm((K^-1)*h1)

l2 = 1 / norm((K^-1)*h2)

l3 = (l1+l2)/2

请记住,此解决方案应使用非线性最小化方法进行细化(例如,您可以使用此解决方案作为起点)。您也可以使用一些扭曲模型来恢复镜头扭曲,但这一步是不必要的(即使没有它也会得到好的结果)。

如果您想使用最小化方法来计算更好的R和T近似值,那么有很多不同的方法。我建议你阅读这篇论文

“视频图像的快速全局收敛姿态估计”,Lu,Hager

为您的目的提供了最好的算法之一。