3、双目测距原理:视差计算、三角测量原理、深度公式推导、基线长度与焦距对测距的影响
双目测距(Stereo Vision Ranging)是模拟人类双眼视觉机制,通过两台水平放置的相机同时采集同一场景图像,利用两幅图像中对应像素点的位置差异(即视差)来反推物体深度信息的技术。在工业测量、机器人导航、自动驾驶和三维重建等领域,双目测距因其被动式、高帧率、成本适中的特点,成为最主流的深度感知方案之一。本章将系统拆解双目测距的数学内核——从视差计算到三角测量,从深度公式推导到系统参数对测距精度的影响,帮助学员建立从像素坐标到物理距离的完整映射逻辑。
3.1 视差计算:从像素匹配到视差图
核心原理:视差(Disparity)是双目测距的原始观测值,定义为同一三维空间点在左右两幅图像中成像位置的横坐标之差。在理想的双目系统中,两台相机严格平行共面放置,且光轴平行、成像平面共面,此时同名点只存在水平方向的偏移,即 d = xL - xR。视差计算的核心任务是在左右图像中找到正确的对应点匹配关系,这一过程称为立体匹配(Stereo Matching)。
判断方法或操作流程:实际工程中,视差计算通常遵循以下流程:
- 图像校正(Rectification):利用标定得到的内外参数,对左右图像进行极线校正,使同名点位于同一水平扫描线上,将二维搜索降为一维搜索。
- 代价计算(Cost Computation):对每个像素,在视差范围内计算匹配代价。常用代价函数包括差(SAD)、平方差(SSD)、归一化互相关(NCC)以及基于Census变换的汉明距离等。
- 代价聚合(Cost Aggregation):在局部窗口或全局框架下对代价进行平滑,抑制噪声和弱纹理区域的歧义。局部方法如Block Matching,全局方法如Graph Cut、Semi-Global Matching(SGM)。
- 视差优化与细化:通过左右一致性检查(LRC)、唯一性约束、亚像素插值(如抛物线拟合)等步骤,剔除错误匹配并提高视差精度。
| 匹配方法 | 代价函数 | 精度 | 计算量 | 适用场景 |
|---|---|---|---|---|
| Block Matching (BM) | SAD / SSD | 中(整像素) | 低 | 实时性要求高的嵌入式平台 |
| Semi-Global Matching (SGM) | Census + 互信息 | 高(亚像素) | 中 | 自动驾驶、工业测量主流方案 |
| Graph Cut / Belief Propagation | 全局能量函数 | 极高 | 高 | 离线高精度三维重建 |
3.2 三角测量原理与深度公式推导
核心原理:三角测量(Triangulation)是双目测距的几何基础。当两台相机观察到同一空间点P时,P与左右光心OL、OR构成一个三角形。已知基线长度b(两光心距离)和两个投影角度,即可通过相似三角形关系解算出P点的深度Z。
深度公式推导:设左相机坐标系为世界坐标系,P点坐标为(X, Y, Z),左右相机焦距均为f(单位:像素),成像点横坐标分别为xL和xR。根据针孔相机模型:
左相机投影:xL = f × X / Z
右相机投影:xR = f × (X - b) / Z
两式相减得视差:d = xL - xR = f × b / Z
整理得深度公式:Z = (f × b) / d
该公式揭示了双目测距的本质:深度与视差成反比,与焦距和基线长度成正比。值得注意的是,公式中的f和d均以像素为单位,因此Z的单位与b的单位一致(通常为毫米或米)。
3.3 基线长度与焦距对测距的影响
核心原理:基线长度b和焦距f是双目系统的两个核心设计参数,它们共同决定了测距的量程、精度和视场范围。理解这两个参数的影响规律,是进行双目系统硬件选型和结构设计的关键。
判断方法或操作流程:
- 基线长度b的影响:增大基线可以显著提升深度精度(因为Z与b成反比),但同时会带来两个问题:一是近距离盲区增大——当目标太近时,可能只被一台相机看到,无法形成有效视差;二是系统体积和重量增加,且左右视角差异变大,匹配难度上升。
- 焦距f的影响:增大焦距相当于“放大”了成像细节,同样视差误差对应的深度误差更小,因此精度更高。但长焦镜头视场角变窄,可观测范围缩小,且镜头畸变通常更明显,对标定精度要求更高。
- 综合权衡:工程上通常根据最小工作距离、最大测量距离和精度要求来反推b和f。经验公式为:
b ≥ Z_min × d_min / f,其中d_min为可接受的最小视差(通常取1~2像素)。
| 参数 | 增大时的收益 | 增大时的代价 | 典型取值范围 |
|---|---|---|---|
| 基线 b | 深度精度↑,远距离测距能力↑ | 盲区↑,体积↑,匹配难度↑ | 数厘米(室内)~ 数米(自动驾驶) |
| 焦距 f | 深度精度↑,角度分辨率↑ | 视场角↓,畸变↑,近距盲区↑ | 8mm~50mm(工业镜头) |
3.4 常见误区与总结复盘
常见误区:
- 误区一:认为视差越大精度越高。实际上,视差增大意味着目标更近,深度误差与Z²成正比,近距离精度确实更高,但视差本身存在匹配精度上限(亚像素插值通常只能做到0.1~0.2像素),且大视差往往伴随遮挡和匹配歧义。
- 误区二:忽略基线-焦距的耦合关系。有些工程师只关注f×b的乘积,认为乘积相同则精度相同。但f和b对系统体积、视场、盲区的影响完全不同,必须分开考量。
- 误区三:将标定焦距直接用于深度计算。标定得到的焦距是等效焦距(含像素尺寸换算),而镜头畸变会导致边缘像素的实际焦距偏离标称值,因此必须使用去畸变后的校正图像进行视差计算。
- 误区四:忽视温度对基线的影响。在温度变化大的环境中,金属结构件的热胀冷缩会导致基线长度变化,进而引入系统性深度误差。高精度应用需采用恒温结构或在线基线校正。
总结复盘:双目测距的本质是一个“像素差→物理深度”的确定性映射,其精度受限于视差量化误差、标定残差和系统结构稳定性。在实际项目中,建议遵循以下设计流程:
- 明确测距范围(Z_min ~ Z_max)和精度要求(ΔZ_max);
- 根据精度公式反推所需的视差分辨率,进而确定f和b的组合;
- 验证视场角覆盖和盲区是否满足应用场景;
- 选用高精度标定板(如棋盘格或圆点阵),进行立体标定并评估重投影误差(应小于0.1像素);
- 在目标距离处放置标准尺寸物体,实测深度并对比理论值,进行系统级验证。