【问题标题】:stereo rectification with measured extrinsic parameters使用测量的外部参数进行立体声整流
【发布时间】:2014-08-31 10:38:47
【问题描述】:

我正在尝试纠正两个图像序列以进行立体匹配。使用带有棋盘图案的 stereoCalibrate() 的常用方法对我来说没有用,因为我只处理素材。

我拥有的是各个相机的正确校准数据(相机矩阵和失真参数)以及它们之间的距离和角度的测量值。

如何构造 stereoRectify() 所需的旋转矩阵和平移向量?

幼稚的使用方法

Mat T = (Mat_<double>(3,1) << distance, 0, 0);
Mat R = (Mat_<double>(3,3) << cos(angle), 0, sin(angle), 0, 1, 0, -sin(angle), 0, cos(angle));

导致图像严重扭曲。这些矩阵是否需要与我不知道的不同原点相关?或者我是否需要以某种方式将距离/角度值转换为取决于像素大小?

任何帮助将不胜感激。

【问题讨论】:

    标签: opencv


    【解决方案1】:

    目前尚不清楚您是否有足够的有关相机姿势的信息来执行准确的校正。 T 和 R 都是 3D 测量的,但在你的情况下:

    • T 是一维的(仅沿 x 轴),这意味着您确信两个相机沿其他轴完美对齐(特别是,您在 y 轴上的像素误差小于 1 ,即按照今天的标准是几微米);
    • R 保持 Y 坐标不变。因此,您所拥有的只是围绕该轴旋转,它是否与您的实验设置相匹配?

    最后,您需要检查用于平移和旋转的单位的一致性,以与内在数据中的单位匹配。

    如果可行,您可以通过在两个相机之间找到一些匹配点并进行投影校准来检查您的结果:校准点的 3D 位置的准确知识仅用于度量重建。其他任务依赖于基本矩阵或基本矩阵,这些矩阵可以从图像到图像的点对应关系中计算出来。

    【讨论】:

      【解决方案2】:

      如果已知内在和外在,我推荐这种方法:http://link.springer.com/article/10.1007/s001380050120#page-1

      很容易实现。基本上,您旋转右相机,直到两个相机具有相同的方向,这意味着它们共享一个共同的 R。然后 Epipols 被转换为无穷大,并且您有平行于图像 x 轴的极线。

      新 R (x) 的第一行只是基线,例如两个相机中心的减法。第二行 (y) 基线与旧左 z 轴的叉积。第三行 (z) 等于前两行的叉积。

      最后你需要计算上面链接中描述的 3x3 单应性,并使用 warpPerspective() 得到一个修正版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 2018-09-14
        • 2013-01-09
        • 2019-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多