Files
code-test-drone/docs/双目测距方案.md
T

17 KiB
Raw Blame History

双目目标测距技术规格(基于对偶检测)

范围:平台无关、语言无关的技术规格。通过立体相机对与目标检测器估计被检测目标的距离(及可选三维位置),不依赖稠密立体匹配或端到端深度网络。

版本:1.0(由项目专用路线图抽取并泛化而成)。


1. 目的与定位

1.1 动机

单目目标检测只能给出像素位置,无法提供度量距离。立体相机对提供几何约束,可将对应检测结果转换为距离。该方法适用于:

  • 只需关心少量离散目标(而非稠密环境地图);
  • 稠密立体匹配代价过高或不必要;
  • 已有互补测距传感器(如激光雷达),双目估计可作为次要或近场来源。

1.2 一句话概述

左右图像各自独立运行轻量目标检测器;从对应检测框的边缘(或中心)提取视差;通过经典立体公式 (Z = F \cdot B / D) 将视差转换为度量距离。不生成稠密对应场或深度图。

1.3 能力边界

  • 仅对被检测器报告的目标(如特定类别)测量距离;
  • 有效工作距离由基线、焦距与可接受误差决定(见第 5 章);
  • 不输出稠密深度、实例掩码或目标以外的场景几何;
  • 不替代主远程测距传感器,定位为近中距离的互补来源。

2. 硬件与输入假设

所有数值参数均为配置项,禁止硬编码。

项目 典型/示例值 说明
基线 (B) 0.06 m(示例) 可配置;误差与 (1/B) 成正比
图像分辨率 如 1920×1080 检测流水线支持的任意分辨率
帧率 如 30 fps 流水线须满足所选帧率的周期
焦距 / 视场 / 传感器尺寸 — 须由标定或厂商数据获得
内参与外参 — 立体校正所必需(见第 3 章)
同步方式 优先硬件同步 软件同步可行,但须量化残余误差
检测器输入尺寸 如 640×640 左右目的 letter-box / 缩放变换必须完全一致

3. 前置条件:标定、立体校正与帧同步

3.1 标定与立体校正

本方法假设图像对已完成立体校正,使得:

  • 对应极线水平且对齐(同一物理点在两图中 (y) 坐标相同);
  • 视差纯为水平分量:(D = x_L - x_R)。

所需数据:

  1. 左右相机各自的内参((f_x, f_y, c_x, c_y))与畸变系数;
  2. 两相机之间的相对旋转与平移;
  3. 应用于每一帧的校正映射(或等效处理)。

验证方法:校正后收集匹配检测框,统计垂直残差 (|\Delta y|)。实用接受准则为 P95 (\le 1) px(实测后确定)。若残差过大,须进行离线自标定(如棋盘格)并在线重映射。

3.2 帧同步

若两路曝光时刻不一致,运动目标会产生虚假视差。

采集形态 同步质量 建议处理方式
同帧拼接单流(side-by-side) 硬件保证同曝光 解码一次,裁切为左右图
双独立流 取决于硬件触发或软件时间戳 按序号 + 接收时间窗配对;监测残余时序抖动

无硬件同步时,须在预期目标速度下量化距离误差,必要时限制仅用于低速场景。

3.3 时间戳约定

优先使用处理平台上的单调接收时间戳。不得伪造传输层未提供的采集时间戳。


4. 数学模型

4.1 符号约定

符号 含义 单位
(B) 基线(左右光心间距) m
(F) 像素焦距(校正后 (f_x = f_y)) px
(c_x, c_y) 主点 px
(x_L, y_L) 特征点在**左目(参考目)**图像中的像素坐标 px
(x_R) 同一特征点在右目图像中的像素坐标 px
(D) 视差 (= x_L - x_R) px
(Z) 前向距离(沿光轴分量) m
(X, Y) 左目坐标系下的横向 / 纵向偏移 m
(R) 斜距 (\sqrt{X^2+Y^2+Z^2}) m

约定:校正后以左目为参考系;目标位于相机前方时视差为正。

4.2 核心公式(校正后坐标系)

[ \begin{align*} D &= x_L - x_R \ Z &= \frac{F \cdot B}{D} \ X &= \frac{(x_L - c_x) \cdot Z}{F} \ Y &= \frac{(y_L - c_y) \cdot Z}{F} \ R &= \sqrt{X^2 + Y^2 + Z^2} \end{align*} ]

  • 当主测距传感器同样报告前向距离时,优先使用 (Z)(前向分量);仅在需要真实欧氏距离时使用 (R)。
  • 小角度下 (Z \approx R);大偏航角时二者差异增大。

4.3 检测器预处理后的坐标映射

检测器通常接收固定尺寸的 letter-box 或缩放图像。必须遵守两条约束:

  1. 左右图像使用完全相同的几何变换(同缩放、同填充)。否则垂直对齐性质被破坏。
  2. 视差在原始图像坐标系下计算。将检测框映射回原生分辨率后再计算 (D),可保留传感器的全部像素精度。

内参 (F, c_x, c_y) 同样须对应原生分辨率。

4.4 有损压缩的影响

帧内压缩(如 MJPEG)会在框边缘引入定位噪声。其对视差不确定度 (\delta D) 的贡献应计入第 5.2 节误差预算。若实测影响显著,可提高码流质量档位,或在带宽允许时改用无压缩 / 轻压缩格式。


5. 视差取点与误差分析

5.1 对应点选择

同一目标在两目中的检测框宽度很少严格相等(检测抖动、外观差异)。使用框中心会使宽度差的一半混入视差。

方法 主要误差来源 建议
框中心 宽度差直接进入视差 对照 / 回退方案
同侧边缘(如两框左边缘) 仅边缘定位噪声 主方案
多边缘 + 亚像素精化 实现成本更高 可选后续精化

实用取法:

[ D = x_L^{\text{左边缘}} - x_R^{\text{左边缘}} ]

(若检测器直接给出左上角坐标,该值可直接使用。)当边缘测量被判定不可靠时,回退到中心视差并输出诊断警告(需节流)。

5.2 误差传播

由 (D = F B / Z) 得:

[ \begin{align*} \delta Z &\approx \frac{Z^2 \cdot \delta D}{F B} && \text{(绝对误差)} \ \frac{\delta Z}{Z} &\approx \frac{Z \cdot \delta D}{F B} && \text{(相对误差)} \end{align*} ]

(\delta D) 的构成:

  • 检测框边缘定位噪声;
  • 校正后残余垂直失配;
  • 运动目标的时序不同步;
  • 压缩伪影。

基线与焦距的标定误差线性传递,完成出厂或自标定后通常可忽略。

5.3 示例误差表

下表仅为示意。假设 (B = 0.06,\text{m})、(\delta D = 1,\text{px})、原生宽度 1920 px。给出两种示例水平视场;真实焦距须由标定数据代入。

像素焦距近似:(F = (W/2) / \tan(\text{HFOV}/2))。

距离 (Z) (D) @ (F\approx960,\text{px})(HFOV (\approx90^\circ)) (D) @ (F\approx1663,\text{px})(HFOV (\approx60^\circ)) (\delta Z) @ 90° (\delta Z) @ 60°
5 m 11.5 px 20.0 px 0.43 m 0.25 m
10 m 5.8 px 10.0 px 1.7 m 1.0 m
15 m 3.8 px 6.7 px 3.9 m 2.3 m
20 m 2.9 px 5.0 px 6.9 m 4.0 m
30 m 1.9 px 3.3 px 15.6 m 9.0 m
50 m 1.2 px 2.0 px 43 m 25 m
100 m 0.6 px 1.0 px 174 m 100 m

(\delta D) 加倍则表中所有误差加倍。取得真实焦距后必须重算本表。

5.4 有效工作距离

实用有效性判据(可调):

[ \text{valid} ;\Leftrightarrow; D \ge D_{\min};\text{(如 3 px)} ;\land; \delta Z(\delta D=1,\text{px}) \le Z_{\text{tol}};\text{(如 2 m)}. ]

按上表示例,广角镜头有效域约 (\le 15,\text{m}),较窄视场约 (\le 20,\text{m})。域外估计标记为无效;方位信息仍可发布,距离由其他传感器承担。

敏感性:误差 (\propto 1/B)。基线加倍可使误差减半、有效域约扩大一倍——这是提升远距离能力最直接的杠杆。

5.5 远距离扩展(最小实现范围之外)

  • 亚像素边缘精化(灰度重心、抛物线拟合等);
  • 距离估计的时间滤波;
  • 更大基线或更长焦距;
  • 相对真值传感器拟合的经验修正项;
  • 优雅降级为“仅方位 + 外部距离”。

6. 左右目关联

输入:属于同一逻辑帧的两路检测结果(见第 7 章)。

硬约束(任一不满足即拒绝配对):

  • 类别标识一致;
  • 垂直残差 (|\Delta y| \le \tau_y)(校正后,如 2 px);
  • 视差落在目标距离上下限对应的区间内;
  • 相对高度相近:(|h_L - h_R| / \max(h_L,h_R) \le \tau_h)(如 0.25)。

代价与贪心匹配:

[ \text{cost} = \frac{|\Delta y|}{\tau_y} + \frac{|\Delta h|}{\tau_h\cdot\max(h_L,h_R)}. ]

按代价升序排列候选对;仅当 (\text{cost} < 1) 时接受;强制一一配对。

多数跟踪场景目标数极少(一两个),(O(n^2)) 贪心算法足够。匹配器应通过接口注入,以便后续可替换为匈牙利算法、网络流等而不改动调用方。

失败处理:未匹配的检测本帧不产生距离,方位仍可发布;流水线其余部分继续运行。

可选连续性线索:若存在轨迹标识,优先匹配相同 track id 的框。


7. 单周期数据流水线

目标周期为所选帧率的倒数(如 30 fps 时 (\le 33,\text{ms}))。

采集(优先硬件同步的立体对)
  → 解码 / 去马赛克 / 色彩转换
  → 几何预处理(校正映射、左右完全一致的 letter-box / 缩放)
  → 左右图像并行推理
  → 检测框映射回原生分辨率
  → 关联(第 6 章)
  → 视差 → (Z, X, Y, R)
  → 有效性判定(第 5.4 节)
  → 可选时间滤波
  → 发布结果
  • 配对键:共用帧序号(或序号不可用时采用紧接收时间窗)。
  • 时间滤波(轻量):对 (Z) 做一阶低通,配合跳变重置门限。跨帧关联可用类别 + 最近邻连续性;完整多目标跟踪为可选项。
  • 失败路径:任一阶段失败(解码、推理、关联)导致丢帧或发布 valid = false 消息。失败日志须节流。

8. 图像通路考虑

具体编解码与加速硬件因平台而异,此处仅陈述逻辑要求。

  • 优先从相机缓冲到校正、letter-box 直至检测器输入张量的零拷贝通路。
  • 校正与 letter-box 对左右两目必须位级一致。
  • 若采集格式为有损,须量化其对边缘噪声的贡献(见第 4.4 节)。

9. 性能预算

具体数值取决于所选检测器、加速器与图像尺寸。关键架构要求是:

左右推理必须并发执行。串行执行通常使时延翻倍,可能无法满足帧周期预算。

代表性预算骨架(用实测值填充):

阶段 预算(示意)
采集周期 1 / 帧率
解码 + 预处理 待实测
左目推理 单设备 / 单核上的检测器时延
右目推理 与左目并发
关联 + 测距 少量目标时 < 1 ms
端到端时延 实测;须为控制或融合消费方留有余量

10. 模块分解(语言无关)

以下逻辑模块将算法、I/O 与配置清晰分离。

模块 职责
StereoRanger 纯算法:关联、视差提取、距离计算、有效性、可选滤波。接收检测结果 + 相机参数,输出距离消息。可完全单元测试。
检测前端 两个独立检测实例(或同一实例调用两次),输出原生坐标下的框。
图像采集与预处理 采集、解码、校正、左右完全一致的几何变换。
配置 基线、内参、视差上下限、关联阈值、滤波系数——全部外置。

建议的结果记录(字段名仅为示意):

header                  // 时间戳、序号、健康状态
frame_sequence
class_id
track_id                // 未知时为 0
forward_distance_m      // Z
slant_range_m           // R(可选)
disparity_px
confidence              // [0,1]
valid
centre_pixel_x_mid      // 虚拟双目中心(见第 11.2 节)
bbox_*                  // 参考目框,供诊断

11. 传感器融合与控制接口

11.1 距离源优先级(示例策略)

主传感器有效          → 使用主传感器
主传感器无效 / 超龄,
  双目有效            → 使用双目
双目超出有效距离域    → 标记无效
两者均不可用          → “无距离”降级模式

11.2 交叉校验

两者同时有效且 (|Z_{\text{stereo}} - d_{\text{primary}}|) 超过相对或绝对阈值时,记录节流警告并以主传感器为准。注意 (Z) 为前向分量;大偏航角时与纯径向测量存在差异。

11.3 方位:虚拟双目中心

每枚物理相机相对模组中线偏移 (\pm B/2)。直接使用单目像素偏移会引入恒定角度偏差

[ \beta_{\text{bias}} \approx \arctan\bigl((B/2)/Z\bigr) ]

近距离时不可忽略(如 (B=60,\text{mm}) 时 3 m 处约 0.6°)。

校正后,位于基线中点的虚拟相机对同一目标的投影恰为两目像素的平均值:

[ \begin{align*} x_{\text{mid}} &= \frac{x_L + x_R}{2}, \ y_{\text{mid}} &= y_L = y_R. \end{align*} ]

因此:

  • 存在立体匹配时,发布 (x_{\text{mid}})(及 (y_{\text{mid}}))作为方位源;
  • 仅单目检出时,回退到该目原始坐标(接受偏差),或在存在最近有效距离时施加单侧修正 (\Delta x = F\cdot(B/2)/Z)。

模组中线与机体中轴之间的固定安装偏移属于外参标定问题,与双目几何无关。

11.4 互补工作域

双目测距通常在近中距离最准确,而窄波束主传感器在此区间可能丢靶;主传感器在远距离(双目视差坍缩处)保持优势。简单的优先级或融合规则即可实现全程覆盖。


12. 建议实施阶段

阶段 内容 出口条件
v1.0 同步对采集、一致预处理、双路检测、同侧边缘视差、贪心关联、(Z=F B/D)、有效性标志、结果发布、可选与主测距传感器融合 标定数据可用;实测误差与第 5 章模型一致;基本时延预算满足
v1.1 出厂校正不足时的自标定 / 重映射、亚像素边缘精化、时间滤波、track-id 关联、相对真值的经验偏差修正 具备 v1.0 外场数据
v2.0(可选) 用实例分割掩码替代检测框、评估学习式立体或单目深度网络、更大基线或更长焦距硬件、框内局部稠密精化 单独可行性研究

13. 验证清单

项目 方法 通过标准(示意)
校正质量 静态场景,匹配框 ( \Delta y
测距精度 多个已知距离的静态标靶 + 真值传感器 误差趋势与第 5.3 节一致;有效域内 (\delta Z) 在容限内
同步性 目标快速横向运动 无系统性虚假视差
时延与吞吐 并发负载下的端到端计时 满足所选帧率预算
融合 / 降级 主传感器丢失、超龄、双目超距的回放或仿真 所有降级路径行为符合规格
日志纪律 注入失败 仅输出节流后的诊断信息

14. 设计取舍记录

决策 理由
不做稠密立体匹配 稀疏目标无需;全分辨率对应计算代价高
几何公式而非学习深度 可解释、无需额外训练数据,并为后续网络评估提供干净真值基线
贪心关联 目标基数极小;接口保留后续升级空间
前向分量 (Z) 作为主距离输出 与多数单点测距传感器语义对齐
虚拟双目中心作为方位源 消除物理相机偏移引起的恒定近场角度偏差
同侧边缘视差 抵消两目框宽差
双目作为次要 / 互补源 绝对误差随 (Z^2) 增长;方法在主传感器最弱处价值最大

15. 开放问题 / 配置检查清单

具体部署前须用真实数值填补以下项:

  1. 焦距(或完整内参)与畸变模型。
  2. 出厂立体标定是否可用及其格式;否则规划自标定。
  3. 采集形态(同帧拼接单流 vs 双流)与同步方式。
  4. 有损压缩对边缘噪声的实测贡献。
  5. 目标计算设备上所选检测器的实测时延(并确认左右推理可并发)。
  6. 可接受的绝对 / 相对距离误差及由此确定的有效工作包络。
  7. 未来硬件是否考虑更大基线或不同光学配置。

附录 A – 公式速查

[ \begin{align*} D &= x_L - x_R \ Z &= \frac{F B}{D} \ \delta Z &\approx \frac{Z^2,\delta D}{F B} \ x_{\text{mid}} &= \frac{x_L + x_R}{2} \end{align*} ]

有效性(示例):(D \ge 3,\text{px}) 且 (\delta Z(\delta D=1,\text{px}) \le 2,\text{m})。


文档结束。