如何从第一台相机获取另一台相机外部参数?

时间:2017-07-14 03:52:45

标签: c++ matlab opencv camera calibration

我尝试进行多相机校准。

在我的情况下,我最终想从第一个相机的参数(内在和外在)获得第二个相机的外部参数或它的投影矩阵。

我在钻机中安装了两个摄像头,它们的距离和角度也是固定的。所以我想我可以找到他们的关系,通过这种关系,我可以从第一个获得第二个相机的参数。

在实际情况下,我在机器人上安装了两个摄像头(固定在钻机中),在那种情况下我无法获得所有参数。 (我可以获得第一台相机的外部参数)。所以在这种情况下,我想从第一台相机及其关系进行第二次相机校准。

目前我发现了第一和第二相机的失真,内在参数和当前的外在参数。当然,外在参数与实际情况不同。我就这样设定了他们的关系。

R_rel = R_2 * inv(R_1) ,  t_rel = -R_rel * t_1 + t_2 

我做了

norimg_2 = R_rel * norimg_1 + t_rel  (norimg_1 = inv(intinsic_1) * img_1, norimg_2 = inv(intrinsic_2) * img_2

然而我无法得到正确答案。我想知道这种关系是否错误或这种方式是错误的。

  • 当然,

    wld = [0, 0, 1];
    imgpoint_1 = K_n.' * extrin_1 * wld.';
    imgpoint_1_ = imgpoint_1/imgpoint_1(3);
    imgpoint_2 = K_f.' * extrin_2 * wld.';
    imgpoint_2_ = imgpoint_2/imgpoint_2(3);
    
像这样,我可以得到正确的答案。但是我无法在实际情况下得到外在参数_2,所以我很困惑。

1 个答案:

答案 0 :(得分:0)

我建议您使用二分法进行工作,例如bisection approach

Bisection approach

您必须为您无法猜测的参数_2尝试不同的值。然后一点一点地,你改变框架内的值越来越少。最后,您可以对相机1的相机2进行校准。

这意味着您可以根据给定的参数值_2来评估结果的不准确性。

如果您没有找到您在SO上寻找的内容,那么您还应该尝试https://photo.stackexchange.com/