已知双目相机内参K矩阵,如何计算空间点在相机坐标系下的x,y,z坐标
平行双目配置下空间点三维坐标计算步骤
首先默认以左相机C1的光心为基准坐标系原点:x轴沿基线方向指向右相机C2,z轴沿光轴向外(朝向拍摄场景),y轴垂直向下,基线物理长度记为b,两台相机的内参矩阵统一表述为:
K = [ [f_x, 0, c_x], [0, f_y, c_y], [0, 0, 1] ]
其中f_x、f_y为x、y方向的等效焦距(单位:像素),c_x、c_y为成像平面主点的像素坐标。如果两台相机内参不同,需先完成极线校正再使用以下步骤计算。
步骤1:计算视差值
记空间点在C1成像面的像素坐标为(u1, v1),在C2成像面的像素坐标为(u2, v2)。平行光轴配置下理想匹配点的行坐标相等(v1 = v2),视差计算为:d = u1 - u2
视差d必须为正,否则对应点在相机后方属于无效值。步骤2:计算深度z坐标
基准坐标系(C1)下的z坐标(深度)计算公式为:z = (f_x * b) / d
计算得到的z的单位和基线b的物理单位一致。步骤3:计算x、y坐标
代入C1的像素坐标和深度值计算剩余两个坐标:x = z * (u1 - c_x) / f_xy = z * (v1 - c_y) / f_y
补充说明:如果需要获取C2相机坐标系下的坐标,仅需对x轴做平移变换即可:
x_c2 = x_c1 - b,y、z坐标和C1坐标系下的数值完全相同。
内容的提问来源于stack exchange,提问作者Vignesh V
相关产品推荐
相关产品推荐

