阶段四:跨相机重投影
这是整个练习中最重要的一步。跑通这一步,才算真正理解 point-map 如何参与多视图几何。
基本流程
从相机 1 得到世界点:
变换到相机 2:
投影到图像 2:
其中:
- 来自相机 1 的 depth / point-map。
- 把相机 1 坐标变到世界坐标。
- 把世界坐标变到相机 2 坐标。
- 是相机 2 的内参。如果两台相机内参不同,应写成 。
任务 7:跨视角颜色重投影
使用相机 1 的深度,将图像 2 warp 到图像 1,或者反过来。
计算 photometric error:
这里 由相机 1 的 3D 点投影到相机 2 得到。
必须处理的问题
跨相机重投影时必须处理:
- 越界点
- 遮挡
- 动态物体
- 非朗伯表面
其中前两个是几何有效性问题,后面三个是可见性和成像假设问题。
必须实现 z-buffer
多个三维点可能投影到相机 2 的同一个像素。应保留相机 2 中 最小的点:
否则会把被遮挡点错误地当作可见点。
z-buffer 的核心规则是:
同一个目标像素里,只保留离相机最近的那个 3D 点。
跑通后的意义
当这一步跑通后,你就能把下面这些概念串起来:
- 像素通过 depth 变成相机坐标点。
- 相机坐标点通过 SE(3) 变成世界点。
- 世界点再变换到另一个相机坐标系。
- 新相机坐标点投影到另一个图像平面。
- 使用 z-buffer 判断哪些点在另一个视角可见。
- 用颜色误差验证多视角几何是否一致。
待补内容
- 相机 1 到世界的点云生成
- 世界点到相机 2 的变换
- 相机 2 投影与边界 mask
- z-buffer 实现
- 图像 warp 可视化
- photometric error 可视化
- 遮挡和错误案例记录