【发布时间】:2020-02-24 12:23:11
【问题描述】:
我正在尝试根据从校准的立体相机图像中获取的立体对应关系来重建棋盘的位置。根据this answer,我经历了整个过程
- 校准立体相机
- 计算投影矩阵
- 对未失真的点进行三角剖分
我不明白一个步骤,即为什么我应该在stereoCalibration期间使用openCV的cv2::stereoRectify()或Matlab的rectifyStereoImages校正立体图像。或者更好:如何我应该得到投影矩阵 - 通过立体校正或简单地作为
P = K×[R|t]
来自 R、t 和 K 来自 stereoCalib / cameraCalib 函数。
据我了解,立体校正对于制作深度图在某种程度上很重要,但由于我只使用过三角测量的 3D 估计,我不确定它在这种情况下是否有用。我有点困惑,因为我发现的每一个立体声校准演示都包含这个校正步骤。
欢迎更复杂的答案,因为我想我认为答案只是通过提供的方程式计算它,但我想更多地了解这个更正是关于什么的。
【问题讨论】:
-
立体校准告诉您如何将一台摄像机的一个点转换为下一个摄像机的不同点。它允许您不进行 3D 估计,因为您已对其进行了校准。不需要任何类型的估计。这样你就有了准确的 3D 表示,而不仅仅是猜测。如果你想要任何类型的精度,这是基本的(注意现在大多数系统如何将相机相互连接,以避免估计和校准)。
-
在非线性优化的世界里,你总是只有猜测。我会非常小心使用 accurate 之类的词。
-
除此之外,我什至没有声称 Stereo Calibration 是帖子中的估计(用术语清楚)。如果帖子本身具有误导性,请告诉我,我会尽力使其更清楚。
-
我认为这与在极地几何中做数学更容易的事实有关,但我已经有太多年没有玩这个了
标签: matlab opencv camera-calibration triangulation 3d-reconstruction