我有一个立体声对,图1:http://savepic.org/1671682.jpg图二:http://savepic.org/1667586.jpg
每个图像中都有坐标系。如何使用 OpenCV 库在此系统中找到 A 点的坐标。很高兴看到示例代码。我在 opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html 找过它,但没有找到(或不明白:))
您的"立体"图像很好。您已经做的是解决对应问题:在两个图像中,您都指出了点"A"。这意味着您知道哪个像素对应于彼此的标记点"A"。
你要做的,是三角测量你的相机在哪里。您只能通过首先校准相机来执行此操作。这已经在OpenCV内部了。http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.htmlhttp://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html
这为您提供了每个矢量的精确矢量/光线,以及光线通过的相机光学中心。此外,您需要立体声校准。这通过相互尊重建立了每个摄像机的方向和位置。
从那时起,您的三角测量很简单,知道点"A"的两个图像中的像素位置。你有
- 相机 1 和相机 2 的位置和方向 从
- 相机到标签"A"的耳射线矢量(像素位置)。
所以你在空间中有 2 个位置,距离这些位置有 2 条射线。这些光线的交点是您的3D答案。
请注意,在实践中,光线永远不会完全相交(3D 中的 2 条线很少相交),因此您需要近似。使用 opencv 函数 triangulatePoints(),使用立体校准的输入和与标签 A 相关的像素索引。
这不是真正的立体声对。一个好的立体声对需要有60%-80%的重叠,通常图像之间的旋转差异很小。即使由于极 kappa 旋转,这对具有成为良好立体声对的必要 BASE,由此产生的极性图像也将毫无用处。
其次,您应该查看OpenCV支持的相机校准和共线性方程
。http://en.wikipedia.org/wiki/Camera_resectioning
http://en.wikipedia.org/wiki/Collinearity_equation
你需要理解数学。
如果页面还不够,那么你应该看看opencv书 - 它用了几章来讨论这个问题。然后有很多教科书更详细地涵盖了它