|x₂ᵀEx₁|
便于写公式,但数值随 E 尺度与坐标缩放改变,不适合作为可比较的几何距离。
Problem Contract
本站继续使用右手系、列向量和 target-from-source 记号。相机 pose 写作 world-from-camera;真正投影世界点时使用它的逆 camera-from-world。相对变换必须通过同一个复合链推导,不能凭变量名猜方向。
先去畸变,再由 K₁⁻¹ 得到 bearing x₁
特征、光度、光流或稠密对应提供身份关系
对应 bearing x₂ 必须使用自身 K₂ 与畸变状态
模型选择、relative pose、cheirality 与 triangulation
Epipolar Geometry
同一三维点、两个相机中心和两条观测射线共面,因此第二幅图中的正确对应落在由第一幅图点决定的极线上。Essential matrix 绑定已标定相机的相对刚体运动;Fundamental matrix 把内参也吸收到像素域关系中。
| 模型 | 输入坐标 | 自由度 | 最小对应 | 适用 | 首要退化 |
|---|---|---|---|---|---|
| Essential matrix · E | 已标定归一化坐标 x₁ ↔ x₂ | 5 DoF:R(3) + t direction(2) | 5-point;也常用 normalized 8-point | 一般三维场景中的 calibrated relative pose | 纯旋转时 E=0;低视差深度病态;平面场景存在弱可辨识性 |
| Fundamental matrix · F | 原始像素 u₁ ↔ u₂ | rank-2 projective matrix,整体尺度无意义 | 7-point / 8-point | 未知或尚未使用内参的两视图极线几何 | 不能直接当作 metric pose;坐标预处理与数值归一化非常关键 |
| Homography · H | 同一平面像素或纯旋转下的全图像素 | 8 DoF,整体尺度无意义 | 4 对非退化点 | 平面、纯旋转、图像拼接与退化分支 | 一般三维场景中不同深度不能被同一个 H 正确解释 |
便于写公式,但数值随 E 尺度与坐标缩放改变,不适合作为可比较的几何距离。
用 E x₁ 与 Eᵀx₂ 的前两维归一化代数残差;RANSAC 中常用,但仍不是完整非线性重投影误差。
有了 pose 与三维点后,联合两视图或多视图像素残差最接近最终 BA 目标。
Model Selection & Degeneracy
五点、八点和 Homography 不是互相替代的“算法口味”,而是不同几何假设。一般三维场景由 E/F 约束;单一平面和纯旋转可被 H 解释。可靠初始化会同时比较支持度、残差、视差和 cheirality。
Triangulation
理想无噪声时两条世界射线相交;真实观测中它们通常异面,因此需要最小化代数、射线距离或重投影误差。所有方法都无法绕过几何条件数:视差趋近零时,深度不确定性急剧增长。
由多视图投影方程构造 A X=0 并取最小奇异向量;快速,但代数目标不等同于像素噪声模型。
求两条 3D 射线最近点并取中点;直观且适合教学,但结果依赖所用 frame 与方向噪声模型。
以线性解为初值,在两个或更多视图中最小化 robust reprojection error,并检查正深度。
用 ρ=1/Z 表示深度,远点接近 ρ=0 时数值更平滑;证据不足时不应强行生成 metric point。
Interactive Geometry Lab
第一个视图实际计算 E、Sampson 距离、射线最近点三角化、视差和正深度;第二个视图在四种受控几何中比较 ground-truth E 与 H 残差;第三个视图改变传感器、物体状态和回环,观察 gauge、状态维数、Schur 主系统和漂移。
Interactive · Multi-view Geometry & SLAM
Epipolar
Parallax
Triangulation
Cheirality
Translation
Essential matrix · normalized scale
Essential evidence
Homography evidence
Parallax
Model decision
System mode
Gauge
State
Factors
Schur
Endpoint drift
Visual Odometry → SLAM
持续系统需要管理 keyframe、landmark 生命周期、局部窗口、重定位、回环与地图融合。视觉里程计主要估计连续局部运动;SfM 通常离线恢复相机和结构;SLAM 则在在线定位同时维护可复用且全局一致的地图。
匹配 feature、直接最小化光度误差,或使用 learned correspondence / flow;输出带不确定性的跨帧观测。
在 E 与 H 等模型之间选择,恢复相对运动、做 cheirality,并只三角化有足够视差的点。
用运动、重叠和跟踪质量决定何时插入 keyframe;新点由多视角几何初始化。
联合优化最近相机、landmark 与可选物体状态;鲁棒核、外点剔除和边缘化共同控制窗口。
跟踪失败后,用地点识别取得候选,再通过 2D–3D PnP / geometric verification 恢复相机 pose。
验证非局部相遇,优化 pose graph / essential graph,必要时做全局 BA 与 map merge。
| 前端家族 | 主要观测 / 残差 | 优势 | 风险 |
|---|---|---|---|
| Feature-based | 关键点、描述子、匹配与重投影残差 | 对曝光变化和较大基线通常更稳;图结构清晰 | 低纹理、重复纹理和匹配离散化 |
| Direct / semi-direct | 像素强度、patch 或梯度的光度残差 | 利用更多像素,可在弱纹理下保留连续信号 | 依赖亮度一致性、良好初始化与曝光/响应建模 |
| Dense / learned | 深度、光流、对应场或 neural map residual | 可结合语义与强先验,覆盖传统特征困难区域 | 域偏移、置信度标定、几何一致性和计算成本 |
允许长期漂移;常服务于控制、初始化或 SLAM 前端。
可多轮匹配、全局 BA 和增量/全局重建,不一定满足实时定位约束。
需要重定位、回环、地图维护和失败恢复;“有轨迹输出”并不自动等于 SLAM。
Bundle Adjustment
相机 pose、landmark、内参以及可选物体状态共同影响重投影。BA 在流形上迭代这些变量,利用块稀疏 Jacobian 与 Schur complement 消元大量点变量;鲁棒核只降低外点影响,数据关联和 gauge 仍需单独处理。
Jacobian 极稀疏;忽略结构直接构造稠密 normal equation 会浪费数量级资源。
把主系统缩到相机、内参与物体变量;再回代点增量。
未锚定系统的 Hessian 奇异;首 pose、metric scale 或合适 prior 必须与传感器可观性一致。
滑窗实时化的代价是线性化点和信息固化;外点若进入 prior,会持续污染后续估计。
Scale & Observability
“是否能优化”与“是否能观测”必须区分。优化器可以给任何变量一个数值,但没有独立信息时会存在 gauge、强相关或极大方差。固定变量只选择参考系,不等于创造物理观测。
| 模态 | 直接观测 | 尺度结论 | 对齐 / 工程提醒 |
|---|---|---|---|
| Monocular | bearing / projective geometry | 全局尺度不可观;地图与平移只在同一未知比例下成立 | 评测常需 Sim(3) 对齐;仅固定首帧不能去掉 scale gauge |
| Calibrated stereo | 左右像素 + 已知 baseline | 基线把视差变成度量深度 | 正确标定下使用 SE(3);baseline 误差会直接变成尺度偏差 |
| RGB-D | 彩色像素 + depth / point | 有效深度值提供度量尺度 | 需处理 depth scale、无效值、RGB–Depth 外参与时间同步 |
| Visual–Inertial | 视觉 bearing + IMU specific force / angular rate | 在充分运动激励和正确初始化下可恢复尺度与重力方向 | 静止或特定运动会弱可观;还需时间偏移、bias 与外参标定 |
Object-level & Dynamic SLAM
点地图只保存无语义三维位置;物体级地图显式保存 object frame、类别、尺寸、对称性与不确定性。静态物体可作为大尺度 landmark 帮助相机定位;动态物体则需要每时刻状态、运动模型和跨帧身份关联。
适合相机定位优先、静态背景足够的系统;被剔除物体本身没有可用轨迹。
实例识别与 6D pose 提供强语义约束,但需处理重复实例、对称和模型误差。
需要 per-object trajectory、运动先验、遮挡生命周期和概率数据关联,状态规模显著增大。
多视图提供 pose、深度、重建与跨帧对应。
把局部几何组织成相机轨迹和可复用地图。
将 camera pose 与 base、hand-eye、tool frame 连接。
持续更新 object pose、速度与不确定性,支撑预测性抓取和闭环操作。
Evaluation & Debugging
ATE、RPE 和重投影误差回答不同问题。单目轨迹若用 Sim(3) 对齐,尺度误差已被吸收;stereo / RGB-D 若也随意做 Sim(3) 对齐,会掩盖系统本应负责的 metric scale。任何轨迹数字都应同时报告对齐方式、坐标 frame、时间匹配与跟踪成功率。
评估整体位置一致性;对齐可选 SE(3) 或 Sim(3),必须明确。
更直接反映局部 drift,但不能替代回环后的全局地图质量。
报告 lost frames、重定位时间、初始化成功率,而不是只统计成功片段。
还需覆盖完整度、表面误差、对称感知 pose 误差和 association 指标。
| 失败模式 | 为什么坏 | 应对 / 验证 |
|---|---|---|
| 纯旋转 / 零基线 | E 退化为零,无法恢复 translation direction 或 depth | 走 rotation homography;等待发生平移后再建点 |
| 单平面或近似平面 | H 与 E 均可低残差,初始化分支歧义 | 双模型竞争;保留多解,等非平面点和新视角验证 |
| 低视差 / 远点 | 极线残差很小,但三角化方差巨大 | 延迟建点、inverse depth、扩大 keyframe baseline |
| 错误 K / 畸变状态 | 极线呈系统弯曲或相对 pose 有稳定偏差 | 先用静态多视图检查标定;保持坐标与 K/D 同步 |
| rolling shutter / 时间不同步 | 同一帧不存在单一刚体相机 pose | 使用 RS / continuous-time 模型,校准相机与 IMU/depth 时间 |
| 运动模糊 / 低纹理 | 对应稀少、光度梯度弱、跟踪突然丢失 | 曝光与运动策略、更多模态、质量门控和可靠重定位 |
| 重复纹理 / 感知混淆 | 错误匹配或错误回环也能形成较大共识集 | 局部几何 + 时序 + PnP/Sim(3) 验证;回环采用严格门控 |
| 动态物体占主导 | 前景运动被解释为相机运动,静态世界假设破裂 | 语义/运动分割、静态背景估计,或显式联合优化 object tracks |
| 单目尺度漂移 | 不同子地图的尺度不一致,回环无法只用 SE(3) 接上 | 使用 Sim(3) 回环/地图融合,或引入度量观测 |
| 错误 frame / 变换方向 | 轨迹看似平滑但物体、地图或机器人链整体反向 | 冻结 world-from-camera 约定,逐项验证复合与求逆 |
| 错误回环 | 一次强约束可把整张地图拉坏 | 地点检索只是 proposal;几何验证、switchable constraint 与回滚策略 |
| 边缘化与外点污染 | 旧错误被固化进 prior,之后难以恢复 | 边缘化前清理外点,监控 prior 一致性,必要时重建局部地图 |
打印每帧 WTC、K/D、图像尺寸、时间戳和单位;用真值点检查双视图重投影。
绘制 match tracks、极线距离、空间覆盖和 track lifetime;错误身份不是换求解器能修好的。
同时报告两模型支持、median parallax、cheirality、三角化角与深度方差。
先让最小 VO / local BA 稳定,再逐层加入 loop、IMU、object factors,定位是哪类因子破坏图。
按帧、landmark、图像区域、动态标签和传感器拆分,不让平均值隐藏结构化偏差。
主动注入模糊、遮挡、错误回环和短时丢失,验证质量门控、重定位与地图回滚。