# 双目目标测距技术规格(基于对偶检测) > **范围**:平台无关、语言无关的技术规格。通过立体相机对与目标检测器估计被检测目标的距离(及可选三维位置),不依赖稠密立体匹配或端到端深度网络。 > > **版本**: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|\) 直方图 | P95 \(\le 1\) px(实测后调整) | | 测距精度 | 多个已知距离的静态标靶 + 真值传感器 | 误差趋势与第 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}\)。 --- *文档结束。*