第4章 多视图几何与相机模型:对极几何、三角化、相机标定

多视图几何是SLAM前端初始化的核心数学工具——对极几何用于恢复帧间运动,三角化用于恢复特征点深度,相机标定则提供投影所需的精确内参。面试中这一章常考察数学原理与工程落地的结合,重点在于理解退化场景处理(纯旋转、平面场景)和鲁棒估计(RANSAC、五点法)。

对极几何与三角化 → 面试回答框架 特征匹配 orb / sift / superpoint 本质矩阵估计 八点法 / 五点法 + RANSAC 矩阵分解 SVD → R, t 候选 恢复 R, t 三角化验证正解 三角化 DLT / 最小二乘 加分点 • 退化场景判别(纯旋转/平面) • 单应矩阵 vs 本质矩阵选择 相机标定(张正友法)→ 面试回答流程 打印棋盘格 已知方格尺寸 多角度采集 ≥10张不同位姿 角点检测 亚像素精度 单应性矩阵 每张图解算 求解内参外参 闭解+非线性优化 ⚠ 避坑要点 • 畸变参数(k1,k2,k3,p1,p2)必须在优化中同时求解; • 棋盘格不要仅出现在图像边缘,否则畸变估计不稳定。

面试问答卡片

📌 面试问题 1

问题:请解释对极几何中本质矩阵与基础矩阵的区别,并说明如何估计本质矩阵?

面试官考察点:①是否理解归一化坐标与像素坐标的关系;②是否掌握八点法与五点法的适用场景;③是否了解RANSAC在鲁棒估计中的必要性。

回答框架:先定义矩阵含义(本质矩阵E用于归一化坐标,基础矩阵F用于像素坐标)→ 简述关系 E = K^T F K → 估计步骤:特征匹配 → 五点法(已知内参)或八点法(未知内参)→ 强制奇异值约束 → SVD分解获得R,t候选 → 三角化验证选择正解。

简短示例回答:本质矩阵E描述归一化坐标下的对极约束,rank=2且奇异值相等。我通常使用五点法+RANSAC:先ORB匹配,再随机采样5点求解E多项式,内点最多的一组奇异值分解得到R,t,最后三角化剔除退化情况。

可能追问:①纯旋转时对极几何失效,如何检测?②平面场景为什么改用单应矩阵?③五点法相比于八点法的优势体现在哪里?

避坑提醒:不要直接回答“八点法”而对退化场景没有判断;面试官很看重你对平面场景/纯旋转的警觉性。

📌 面试问题 2

问题:如何进行三角化?如何判断一个三角化得到的3D点是否可靠?

面试官考察点:①是否掌握线性三角化(DLT)与非线性优化的区别;②能否从几何角度分析深度不确定性(视差角);③是否了解多帧融合中如何剔除异常点。

回答框架:定义问题(已知两个相机位姿和匹配点,求3D坐标)→ 解法:齐次坐标下的线性最小二乘(DLT),或构建重投影误差优化 → 可靠性判断:视差角(角度>2°)、重投影误差阈值、Z值是否在相机前方且合理范围内。

简短示例回答:我使用DLT求解,然后检查重投影误差<1像素且视差角>3°,同时排除Z值为负或巨大值(>100m)。多帧时通过滑动窗口BA再次优化并剔除outlier。

可能追问:①视差角太小会导致什么后果?②如何用奇异值判断解的质量?③当三角化点位于无穷远时怎么处理?

避坑提醒:避免回答“直接DLT就算出来了”而不提异常值剔除;面试官希望看到你对病态条件(接近零视差)有处理方案。

📌 面试问题 3

问题:简述张正友相机标定法的主要步骤,你如何看待棋盘格角点精度对标定结果的影响?

面试官考察点:①是否理解单应矩阵与内参约束之间的关系;②是否了解亚像素角点检测方法;③是否关注过标定误差的传播。

回答框架:步骤:打印棋盘格并测量方格尺寸 → 多角度采集图像(≥10张)→ 亚像素角点检测 → 通过单应矩阵计算内参初值 → 考虑畸变,用LM优化全部参数 → 角点精度直接影响单应矩阵精度,从而影响内参准确性;建议使用亚像素提取+边缘梯度增强。

简短示例回答:我用OpenCV calibrateCamera()实现,关键步骤:先对每张图检测棋盘角点至亚像素精度,然后基于封闭解求内参和畸变初值,最后用重投影误差最小化优化全部参数。角点精度高可以降低内参偏差约5%~15%。

可能追问:①畸变参数如果估计不准,会对SLAM产生什么影响?②标定板不共面会怎样?③为什么要求标定图像覆盖图像边缘?

避坑提醒:不要只背诵流程而忽略了畸变模型和优化过程;另外要强调图像数量、位姿变化范围对标定稳定性的影响。

项目案例:室内自主导航机器人 SLAM 初始化模块

项目名称室内物流机器人视觉SLAM初始化与建图模块
业务背景在5000m²仓库中,机器人需在无GPS环境下自主建图导航,初始化阶段依赖多视图几何恢复运动与稀疏地图。
规模指标单目相机(720P/30fps);特征点数量每帧200~500;运行在Jetson TX2上;初始化成功率>95%,初始化时间<3秒。
技术栈ORB-SLAM2框架(修改初始化模块)、OpenCV、Eigen、G2O、D435i(用于验证真值)
核心难点①仓库环境纹理弱,特征匹配不稳定;②机器人启动时运动平缓,视差小导致三角化深度噪声大;③地面纯旋转(转弯)容易使对极几何退化。
面试高频追问①如何处理弱纹理场景下的初始化?②运动太慢导致视差不足时,你们做了什么策略?③怎么判断初始化成功?失败后如何重试?
可迁移回答话术“对于弱纹理环境,我采用自适应特征阈值+图像金字塔增强匹配;当视差≤1°时,等待机器人继续运动或主动提示用户走一段直线增加位移;初始化成功标准是:三角化得到≥30个高质量3D点且平均重投影误差<0.5像素。”同时可提“使用单应矩阵与本质矩阵同时估计,根据得分选择模型以应对平面场景。”该话术直接体现鲁棒工程思维。

💡 本章小结

  • 背熟五点法和八点法的数学原理及退化条件。
  • 三角化一定要提视差角阈值和异常值剔除。
  • 相机标定强调亚像素角点和畸变联合优化。
  • 项目回答聚焦初始化成功率和工程优化细节。