4

我在屏幕上显示了一张通过 cvInitUndistortMap 和 cvRemap 未失真的图像(已完成相机校准),并且用户单击图像中的一个特征。所以我有特征的(u,v)像素坐标,我也有内在矩阵和失真矩阵。

我正在寻找的是相机/真实世界坐标中的 3D 线方程,用户单击的特征必须位于该坐标上。我已经有了相机图像平面和特征之间的垂直距离,所以我可以将它与上述方程结合起来,得到空间中特征的 (X,Y,Z) 坐标。

听起来很简单(逆内在矩阵之类的?),但我在任何地方都找不到分步说明。首选 C++ 或 C# 代码。

4

1 回答 1

5

这是一个有点老的问题,但仍然可能对某人有用。所有的线都经过点 (0,0,0),所以:

线.x0 = 0; 线.y0 = 0; 线.z0 = 0;

方向向量如下:line.A = (u/fx) - (cx/fx); line.B = (v/fy) - (cy/fy); 线.C = 1;

cx,cy,fx,fy 是相机矩阵的参数。方程式在“Learning OpenCv”一书中进行了解释。

于 2011-04-15T19:29:57.967 回答