像素坐标转换为3D线(OpenCV)

4
我在屏幕上显示了一张图像,该图像通过cvInitUndistortMap和cvRemap(进行相机校准)未经扭曲地显示,并且用户单击图像中的一个特征。因此,我拥有特征的(u,v)像素坐标,还拥有内部矩阵和畸变矩阵。
我要找的是摄像机/现实世界坐标系中特征所在的三维直线方程。我已经有了相机的图像平面与特征之间的垂直距离,因此可以将其与上述方程结合起来,给出空间中特征的(X,Y,Z)坐标。
听起来很容易(反向内部矩阵之类的东西?),但我无法在任何地方找到逐步说明。首选C++或C#代码。
1个回答

5
这个问题可能有点老了,但仍可能对某些人有用。 所有的线都通过点(0,0,0),所以: 线.x0 = 0; 线.y0 = 0; 线.z0 = 0; 方向向量如下: 线.A = (u/fx) - (cx/fx); 线.B = (v/fy) - (cy/fy); 线.C = 1; 其中cx,cy,fx,fy是来自相机矩阵的参数。 这些方程在“学习OpenCv”书中有详细解释。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接