跳到主要内容

阶段四:跨相机重投影

这是整个练习中最重要的一步。跑通这一步,才算真正理解 point-map 如何参与多视图几何。

基本流程

从相机 1 得到世界点:

Pw=Tc1wPc,1P_w=T_{c1\rightarrow w}P_{c,1}

变换到相机 2:

Pc,2=Twc2PwP_{c,2}=T_{w\rightarrow c2}P_w

投影到图像 2:

p~2KPc,2\tilde{p}_2 \sim KP_{c,2}

其中:

  • Pc,1P_{c,1} 来自相机 1 的 depth / point-map。
  • Tc1wT_{c1\rightarrow w} 把相机 1 坐标变到世界坐标。
  • Twc2T_{w\rightarrow c2} 把世界坐标变到相机 2 坐标。
  • KK 是相机 2 的内参。如果两台相机内参不同,应写成 K2K_2

任务 7:跨视角颜色重投影

使用相机 1 的深度,将图像 2 warp 到图像 1,或者反过来。

计算 photometric error:

Ephoto=I1(u1,v1)I2(u2,v2)E_{photo} = \left| I_1(u_1,v_1)-I_2(u_2,v_2) \right|

这里 (u2,v2)(u_2,v_2) 由相机 1 的 3D 点投影到相机 2 得到。

必须处理的问题

跨相机重投影时必须处理:

  • 越界点
  • Z0Z \le 0
  • 遮挡
  • 动态物体
  • 非朗伯表面

其中前两个是几何有效性问题,后面三个是可见性和成像假设问题。

必须实现 z-buffer

多个三维点可能投影到相机 2 的同一个像素。应保留相机 2 中 ZZ 最小的点:

Zmin(u,v)Z_{min}(u,v)

否则会把被遮挡点错误地当作可见点。

z-buffer 的核心规则是:

同一个目标像素里,只保留离相机最近的那个 3D 点。

跑通后的意义

当这一步跑通后,你就能把下面这些概念串起来:

  1. 像素通过 depth 变成相机坐标点。
  2. 相机坐标点通过 SE(3) 变成世界点。
  3. 世界点再变换到另一个相机坐标系。
  4. 新相机坐标点投影到另一个图像平面。
  5. 使用 z-buffer 判断哪些点在另一个视角可见。
  6. 用颜色误差验证多视角几何是否一致。

待补内容

  • 相机 1 到世界的点云生成
  • 世界点到相机 2 的变换
  • 相机 2 投影与边界 mask
  • z-buffer 实现
  • 图像 warp 可视化
  • photometric error 可视化
  • 遮挡和错误案例记录