按照Hartley/Zisserman的Multiview Geometery,算法12:最佳三角测量方法(p318),我得到了相应的图像点xhat1和xhat2(步骤10).在步骤11中,需要计算3D点Xhat.一种这样的方法是直接线性变换(DLT),在12.2(p312)和4.1(p88)中提到.
同质方法(DLT),p312-313,表明它找到一个解作为对应于A的最小奇异值的单位奇异向量,因此,
A = [xhat1(1) * P1(3,:)' - P1(1,:)' ;
xhat1(2) * P1(3,:)' - P1(2,:)' ;
xhat2(1) * P2(3,:)' - P2(1,:)' ;
xhat2(2) * P2(3,:)' - P2(2,:)' ];
[Ua Ea Va] = svd(A);
Xhat = Va(:,end);
plot3(Xhat(1),Xhat(2),Xhat(3), 'r.');
Run Code Online (Sandbox Code Playgroud)
但是,A是16x1矩阵,导致Va为1x1.
在获取3D点时我做错了什么(以及修复)?
对于它值得的样本数据:
xhat1 =
1.0e+009 *
4.9973
-0.2024
0.0027
xhat2 =
1.0e+011 *
2.0729
2.6624
0.0098
P1 =
699.6674 0 392.1170 0
0 701.6136 304.0275 0
0 0 1.0000 0
P2 =
1.0e+003 *
-0.7845 0.0508 -0.1592 1.8619
-0.1379 0.7338 …Run Code Online (Sandbox Code Playgroud) 我有一个使用OpenCV和Python校准的立体校准相机系统.我试图用它来计算图像点的3D位置.我收集了内在和外在矩阵,以及E,F,R和T矩阵.我对如何将2D图像点三角测量到3D对象点感到困惑.我已阅读以下文章,但我对这个过程感到困惑(在校准的立体视觉设备中,如何获得实现3D三角测量算法所需的"相机矩阵"?).有人可以解释如何从2D到3D吗?从阅读开始,我觉得基本矩阵(F)很重要,但我没有找到一种明确的方法将它与投影矩阵(P)联系起来.有人可以指导我完成这个过程吗?
我感谢任何帮助.