17 KiB
双目目标测距技术规格(基于对偶检测)
范围:平台无关、语言无关的技术规格。通过立体相机对与目标检测器估计被检测目标的距离(及可选三维位置),不依赖稠密立体匹配或端到端深度网络。
版本: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)。
所需数据:
- 左右相机各自的内参((f_x, f_y, c_x, c_y))与畸变系数;
- 两相机之间的相对旋转与平移;
- 应用于每一帧的校正映射(或等效处理)。
验证方法:校正后收集匹配检测框,统计垂直残差 (|\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 或缩放图像。必须遵守两条约束:
- 左右图像使用完全相同的几何变换(同缩放、同填充)。否则垂直对齐性质被破坏。
- 视差在原始图像坐标系下计算。将检测框映射回原生分辨率后再计算 (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. 开放问题 / 配置检查清单
具体部署前须用真实数值填补以下项:
- 焦距(或完整内参)与畸变模型。
- 出厂立体标定是否可用及其格式;否则规划自标定。
- 采集形态(同帧拼接单流 vs 双流)与同步方式。
- 有损压缩对边缘噪声的实测贡献。
- 目标计算设备上所选检测器的实测时延(并确认左右推理可并发)。
- 可接受的绝对 / 相对距离误差及由此确定的有效工作包络。
- 未来硬件是否考虑更大基线或不同光学配置。
附录 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})。
文档结束。