2011-04-06 159 views
2

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

回答

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中找到/了解一种方法,但是如果您知道哪些校准矩阵是实现上述方法应该是可行的。

相关问题