时间:2011-05-05 15:44:51

标签: opencv camera-calibration calibration photogrammetry

我有一个立体空间, 照片1:http://savepic.org/1671682.jpg 照片2:http://savepic.org/1667586.jpg

每张图片中都有坐标系。如何使用OpenCV库在此系统中找到A点的坐标。很高兴看到示例代码。 我在opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html上找了它,但还没找到(或者还没有理解:))

3 个答案:

答案 0 :(得分:4)

你的“立体声”图片很好。您已经完成的工作是解决通信问题:在两个图像中,您都指出了点'A'。这意味着您知道哪个像素对应于另外的标记点'A'。

您想要做的是三角测量您的相机。您只能通过首先校准相机来完成此操作。这已经在OpenCV内了。 http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html

这为您提供了每个矢量的精确矢量/光线,以及光线通过的光学中心。此外,您需要立体声校准。这确定了每个摄像机相互之间的方向和位置。

从那时起,您的三角测量很简单,知道点'A'的两个图像中的像素位置。

  • 相机1和相机2的位置和方向
  • 从相机到标签'A'的Otical Ray Vector(像素位置)。

因此,您在太空中有2个位置,并且这些位置有2个光线。这些光线的交叉点是你的3D答案。

请注意,在练习中,光线永远不会完全相交(3D中很少有2条线),所以你需要近似。使用opencv函数triangulatePoints(),使用立体声校准的输入和与标签A相关的像素索引。

答案 1 :(得分:-1)

首先,这并不是真正的立体声对。一个漂亮的立体声对需要有60%-80%的重叠,通常是图像之间的小旋转差异。即使这对由于极大的kappa旋转而具有必要的BASE成为良好的立体对,因此产生的极线图像将毫无用处。

其次,您应该看看OpenCV支持的相机校准和共线性方程

http://en.wikipedia.org/wiki/Camera_resectioning

http://en.wikipedia.org/wiki/Collinearity_equation

答案 2 :(得分:-2)

你需要了解数学。

如果页面不够,那么你应该看一下opencv book - 它专门用了几章。然后有很多教科书更详细地介绍它