我有一个校准过的立体相机系统和两个相机视图中同一物体的像素位置。是否有任何简单的方法来计算使用OpenCv对象的3D世界坐标(和内在/外在参数),或者我必须处理为相机和它们之间的转换生成的3D线?CvReprojectImageTo3D可以帮助吗?非常感谢
可以对这些点进行三角测量。对于每个摄像机,你知道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方法或类似的方法来求解。
我没有找到/知道OpenCV中的方法,但如果您知道校准矩阵是什么,则实现上述方法应该是可行的。