如何在OpenCV中计算点的3D坐标

时间:2011-04-06 07:03:57

标签: image image-processing opencv computer-vision

我有一个校准的立体摄像系统和两个摄像头视图中同一物体的像素位置。有没有简单的方法使用OpenCv(和内在/外在参数)计算对象的3D世界坐标,还是我必须处理为两个摄像机生成的3D线和它们之间的转换? CvReprojectImageTo3D可以提供帮助吗? 非常感谢

1 个答案:

答案 0 :(得分:1)

您可以对这些点进行三角测量。对于每个相机,您知道x = IP * EP * X,x = 2D同质屏幕坐标,IP =内在相机矩阵,EP =外在相机矩阵和X 3D同质世界坐标。该公式将为每个摄像机产生2个线性方程,导致线性问题A * X = B.对于每个摄像机,附加到A:

Ps = IP * EP
A(row 1) = x.x * Ps(row 3) - Ps(row 1)
A(row 2) = x.y * Ps(row 3) - Ps(row 2)
B(row 1 & 2) = 0

有4个未知数。为避免0作为解决方案,将[0 0 0 1]附加到A,将[1]附加到B。

可以使用Jacobi method或类似的东西来解决问题。

我没有在OpenCV中找到/知道某个方法,但如果您知道校准矩阵是什么,那么实现上述方法应该是可行的。