我可以通过计算它们之间的 3x3 单应性来跟踪同一场景的不同图像上的 4 个坐标。这样做我可以将其他 2D 图像叠加到这些坐标上。我想知道我是否可以使用这个单应性将一个立方体增加到这个位置而不是使用opengl?我认为 3x3 矩阵没有提供足够的信息,但如果我知道相机校准矩阵,我能否获得足够的信息来创建模型视图矩阵来执行此操作?
感谢您提供的任何帮助。
我可以通过计算它们之间的 3x3 单应性来跟踪同一场景的不同图像上的 4 个坐标。这样做我可以将其他 2D 图像叠加到这些坐标上。我想知道我是否可以使用这个单应性将一个立方体增加到这个位置而不是使用opengl?我认为 3x3 矩阵没有提供足够的信息,但如果我知道相机校准矩阵,我能否获得足够的信息来创建模型视图矩阵来执行此操作?
感谢您提供的任何帮助。
如果您有相机校准矩阵(内在参数)和单应性,则由于单应性(同一平面对象的两个视图之间)定义为:
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
它为您的目的提供了最好的算法之一。