Matlab 基本矩阵的投影矩阵
我得到了两个摄像机之间的基本矩阵。我也在一个Matlab 基本矩阵的投影矩阵,matlab,opencv,computer-vision,camera-calibration,Matlab,Opencv,Computer Vision,Camera Calibration,我得到了两个摄像机之间的基本矩阵。我也在一个3x3矩阵中有它们的内部参数,这是我之前通过棋盘获得的。通过使用基本矩阵,我得到了P1和P2 P1=[I|0]和P2=[[e']x*F|e'] 这些投影矩阵在获得精确的三维位置时并没有真正的用处。 因为我有内部参数K1和K2,所以我将P1和P2更改为 P1=K1*[I|0]和P2=K2*[[e']x*F|e'] 这是获得真实投影矩阵的正确方法吗?真实投影矩阵给出了3D世界和图像之间的实际关系 如果没有,请帮助我了解正确的方法以及我的错误所在 如果这是
3x3
矩阵中有它们的内部参数,这是我之前通过棋盘获得的。通过使用基本矩阵,我得到了P1
和P2
P1=[I|0]
和P2=[[e']x*F|e']
这些投影矩阵在获得精确的三维位置时并没有真正的用处。
因为我有内部参数K1
和K2
,所以我将P1
和P2
更改为
P1=K1*[I|0]
和P2=K2*[[e']x*F|e']
- 这是获得真实投影矩阵的正确方法吗?真实投影矩阵给出了3D世界和图像之间的实际关系李>
- 如果没有,请帮助我了解正确的方法以及我的错误所在李>
- 如果这是正确的方法,我如何验证这些矩阵 哈特利和齐瑟曼的《计算机视觉中的多视图几何》是一本很好的参考书。 首先,你的P公式是错误的。如果你想要里面有K的公式,它是
P = K * [R | t]
或
但不是两者兼而有之
如果从8点算法计算F,则只能将投影几何体恢复到三维单应(即4x4变换)
要升级到欧几里德空间,有两种可能性,都是从计算基本矩阵开始的
第一种可能性是从F:E=转置(K2)*F*K1计算基本矩阵
第二种可能性是直接估计这两种视图的基本矩阵:
- 通过预乘以每个图像的K的倒数(“标准化图像坐标”),对2D点进行标准化
- 在这些标准化点上应用(与F相同)8点算法
- 通过SVD分解和强制对角线值,强制本质矩阵的2个奇异值等于1,最后一个奇异值为0
P = K * [R | t]
R和t可以通过E的SVD元素找到(参见前面提到的书)。
但是,您将有4种可能性。其中只有一个在两个摄像机前投影点,因此您应该测试一个点(如果您确定),以消除这4个点之间的模糊性。
在这种情况下,您将能够在3D场景中放置摄影机及其方向(使用投影的R和t)
不太明显,事实上…如果你没有摄像机参数K1,K2怎么办?那么你必须计算基本矩阵F
P = K * [R | t]