3

我有一个立体配对,照片 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 上找过它,但没有找到(或不明白:))

4

3 回答 3

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”的光学射线矢量(像素位置)。

所以你在空间中有 2 个位置,以及来自这些位置的 2 条光线。这些光线的交点就是您的 3D 答案。

请注意,在实践中,光线永远不会完全相交(3D 中的 2 条线很少会相交),因此您需要进行近似。使用 opencv 函数 triangulatePoints(),使用立体校准的输入和与标签 A 相关的像素索引。

于 2015-03-04T14:36:52.607 回答
-1

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

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

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

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

于 2014-06-10T08:11:02.517 回答
-4

你需要理解数学。

如果页面不够,那么你应该看看opencv 书——它用了几章来讨论这个问题。然后有很多教科书对此进行了更详细的介绍

于 2011-05-05T16:33:54.350 回答