一、相机标定

对双目相机进行双目标定,通过视差恢复深度,可对相机拍摄的图进行三维重建,

内参矩阵

$$ K = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} $$

畸变系数

$$ D = [k_1, k_2, p_1, p_2, k_3] $$

外参(相对左目)

$$ R, T $$

其中:

  • R:旋转矩阵
  • T:平移向量

二、立体匹配视差计算

对左目图像坐标 (uL, vL) 与右目图像坐标 (uR, vR),定义视差为:

$$ d = u_L - u_R $$

通过 SGBM (Semi-Global Block Matching)Block Matching 算法获取 全局优化的稠密视差矩阵

$$ D(u, v) $$

此矩阵包含了在每个像素下的视差信息,用于后续深度计算。

三、像素坐标归一化

去畸变并计算归一化像素坐标:

$$ x = \frac{u - c_x}{f_x}, \quad y = \frac{v - c_y}{f_y} $$

得到归一化相机坐标:

$$ \tilde{p} = [x, y, 1]^T $$

用于构建:

$$ s \cdot \tilde{p} = R [X, Y, Z]^T + T $$

进行三维空间坐标重建时使用。

四、深度恢复(Z 坐标计算)

由双目标定得出的基线:

$$ B = ||T|| $$

深度计算公式:

$$ Z = \frac{f_x \cdot B}{d} $$

若使用重投影矩阵 Q,则:

$$ [X, Y, Z, W]^T = Q [u, v, d, 1]^T $$

进而:

$$ X = \frac{X}{W}, \quad Y = \frac{Y}{W}, \quad Z = \frac{Z}{W} $$

完成像素域->三维空间点云域映射

五、十字提取

  • 在 AR/VR 显示屏显示高对比度 十字测试图,确保中心交点具有 亚像素可检测性
  • 使用亚像素质心法 / Harris + 亚像素角点优化等方法精确提取:

    • 左目十字中心:(uL, vL)
    • 右目十字中心:(uR, vR)

六、空间点恢复

  • 使用已知标定参数计算深度:

    $$ d = u_L - u_R $$

    结合归一化坐标和深度恢复:

    $$ Z = \frac{f_x \cdot B}{d}, \quad X = \frac{(u_L - c_x) \cdot Z}{f_x}, \quad Y = \frac{(v_L - c_y) \cdot Z}{f_y} $$

    获得十字中心在空间中的重建点:

    $$ P = (X, Y, Z) $$

七、投影到 XZ 平面

  • 将空间点 (X, Y, Z) 投影到 XZ 平面:

    $$ P_{XZ} = (X, Z) $$

    进一步计算:

    • 水平汇聚角(vergence angle): 水平面内左右目射线夹角
    • 垂直视差(垂直发散度): 上下方向视差所恢复的角度
    • 水平度(虚像水平偏差): 左右目重建点相对于水平面的偏移角度
最后修改:2025 年 07 月 02 日
如果觉得我的文章对你有用,请随意赞赏