emi*_*ish 5 python opencv image-processing triangulation stereoscopy
我有一个使用OpenCV和Python校准的立体校准相机系统.我试图用它来计算图像点的3D位置.我收集了内在和外在矩阵,以及E,F,R和T矩阵.我对如何将2D图像点三角测量到3D对象点感到困惑.我已阅读以下文章,但我对这个过程感到困惑(在校准的立体视觉设备中,如何获得实现3D三角测量算法所需的"相机矩阵"?).有人可以解释如何从2D到3D吗?从阅读开始,我觉得基本矩阵(F)很重要,但我没有找到一种明确的方法将它与投影矩阵(P)联系起来.有人可以指导我完成这个过程吗?
我感谢任何帮助.
BCo*_*nic 10
如果您校准了立体摄像机,则每台摄像机应具有内在函数K1,K2,以及从第一台摄像机到第二台摄像机的旋转R12和平移t12.从这些,你可以形成相机投影矩阵P1和P2如下:
P1 = K1 * [I3 | 0]
P2 = K2 * [R12 | t12]
Run Code Online (Sandbox Code Playgroud)
这里,I3是3x3单位矩阵,符号[R | t]表示水平堆叠R和t.
然后,您可以使用函数triangulatePoints
(文档),它实现两个摄像机矩阵的稀疏立体三角剖分.
如果您需要密集三角测量或深度图估计,那么有几个功能.首先需要使用stereoRectify
(文档)纠正两个图像,然后执行立体匹配,例如使用StereoBM
(文档).