我得到了两个摄像机之间的基本矩阵。我还把它们的内部参数放在一个3 X 3矩阵中,这是我早些时候通过棋盘得到的。利用基本矩阵,得到了P1和P2
P1 = [I | 0]和P2 = [ [e']x * F | e']
这些投影矩阵在获得精确的3D位置方面并不真正有用。因为我有内部参数K1和K2,所以我将P1和P2更改为
P1 = K1 * [I | 0]和P2 = K2 * [ [e']x * F | e']
发布于 2013-11-14 22:06:23
一本好的参考书是Hartley和Zisserman的“计算机视觉中的多视图几何”。首先,你的P公式是错误的。如果你想要里面有K的公式,那就是
P = K * [R | t]或
P = [ [e']x * F | e']但不是两者兼而有之。
如果你从8点算法中计算F,那么你只能恢复投影几何,直到三维的同形(即4x4变换)。
要升级到欧氏空间,有两种可能性,都是从计算基本矩阵开始的。
第一种可能性是从F: e=转置(K2)*F*K1中计算本质矩阵。
第二种可能性是直接估计这两种观点的基本矩阵:
一旦你得到了基本矩阵,我们就可以用这种形式来计算投影矩阵。
P = K * [R | t]由于E的SVD元素(参考前面提到的书),可以找到r和t。然而,您将有4种可能性。它们中只有一个在两个摄像机前面突出点,所以你应该测试一个点(如果你确定的话),以消除4点之间的模糊性。在这种情况下,你将能够把相机和它的方向(投影的R和t)放置在你的3D场景中。
不太明显,确实.
发布于 2021-12-03 13:38:21
只是遇到了这个问题,想要给出一个更直接的答案。
当P1 = [I, 0]是你的第一个投影矩阵但它应该是P1 = K1 * [I, 0]时,那么你的“世界”就会被4x4矩阵M = [K1, 0; 0, 1]扭曲。世界上的任何一点X都投射到x1 = P1 * X = (P1 * M) * (M^-1 * X) = P1' * X',其中X'现在是“未扭曲世界”中的点(请注意,X = M * X'又是“扭曲世界”中的点),而P1' = P1 * M = [I, 0] * [K1, 0; 0, 1] = K1 * [I, 0]是非扭曲世界中的投影矩阵。
类似地,P2' = P1 * M是非扭曲世界中的投影矩阵,具有形式P2' = [ [e']x * F | e'] * [K1, 0; 0, 1] = [ [e']x * F * K1 | e']。
请注意,P2 = [ [e']x * F | e']只是一个可能的投影矩阵,但是在一般情况下,对于一些实s和一个3向量v,它的形式是P2 = [ [e']x * F + e' * v^T | s * e']。进一步注意,如果您想为某些旋转矩阵P2' ~ K2 * [R, t]找到一个投影矩阵,最好使用基于Damien概述的基本矩阵并在Hartley&Zisserman(2.Ed) Sec中描述的算法。9.6.2.
https://stackoverflow.com/questions/18018924
复制相似问题