如何利用立体三角剖分从二维图像点计算三维目标点?

2024-05-21 12:54:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个立体校准相机系统校准使用OpenCV和Python。我试图用它来计算图像点的三维位置。我收集了内禀矩阵和外禀矩阵,以及E、F、R和T矩阵。我对如何将二维图像点三角化为三维对象点感到困惑。我读过下面的文章,但是我对这个过程(In a calibrated stereo-vision rig, how does one obtain the "camera matrices" needed for implementing a 3D triangulation algorithm?)感到困惑。有人能解释一下如何从二维到三维吗?通过阅读,我觉得基本矩阵(F)很重要,但我还没有找到一个清晰的方法将其与投影矩阵(P)联系起来。有人能带我走过这个过程吗?

我很感谢你能帮我。


Tags: 对象in图像过程系统文章矩阵opencv
1条回答
网友
1楼 · 发布于 2024-05-21 12:54:43

如果你校准了立体相机,你应该有每台相机的内部函数K1,K2,以及从第一台到第二台相机的旋转R12和平移t12。由此,可以按如下方式形成相机投影矩阵P1和P2:

P1 = K1 * [I3 | 0]
P2 = K2 * [R12 | t12]

这里,I3是3x3恒等矩阵,符号[R | t]表示水平叠加R和t。

然后,您可以使用函数triangulatePointsdocumentation),它从两个相机矩阵实现稀疏立体三角剖分。

如果您想要稠密三角剖分或深度映射估计,有几个函数可以实现。首先需要使用stereoRectifydocumentation)校正这两个图像,然后执行立体匹配,例如使用StereoBMdocumentation)。

相关问题 更多 >