自瞄教程
02 识别

取图分辨率与观测精度

同一块装甲板在不同焦距下占据多少像素,以及四个角点如何影响 PnP。

取图是识别链路的起点:相机给出图像,识别模块在图像上框出装甲板的四个角点,角点再被送入 PnP 计算位姿。取图分辨率和镜头焦距直接决定这四个点能有多清楚、多稳定。

这一节只关心一条链路:同一块装甲板在画面中占据的像素 → 四个框角的定位误差 → PnP 位姿误差。实车上最常调的曝光和增益,则决定这四个点是否会因为拖尾、过曝或噪声而抖动。

1. 镜头焦距决定画面能看见多大范围

在同一颗相机上更换镜头时,规律很直观:短焦看到的范围更大,长焦看到的范围更小;同一距离上的装甲板,在长焦画面里会占据更多像素。

不同焦距镜头的视场范围示意:短焦覆盖范围大,长焦覆盖范围小

若图像水平分辨率为 Nx、水平视场角为 FOVx,针孔模型下的像素焦距近似为:

fx ≈ Nx / (2 · tan(FOVx / 2))

将焦距换成“像素焦距”后,真实宽度为 W、距离为 Z 的装甲板在图像中的投影宽度可近似写成:

w_px ≈ fx · W / Z

这两个式子用于建立量级概念即可。实际系统应以最终标定得到的内参、畸变参数和实际工作分辨率为准,而不是把镜头铭牌上的焦距直接送入 PnP。

视场的取舍

  • 宽视场能保留更大的场景范围,但同一装甲板的投影更小;
  • 窄视场让远处目标占据更多像素,但画面覆盖范围随之减小;
  • 在固定焦距下,提高取图分辨率会把同一块装甲板采样为更多像素;镜头解析力、对焦和图像传输共同决定这些像素能否形成清晰边缘。

2. 同一块装甲板:像素数、框角误差与 PnP

从 PnP 的角度看,输入不是整张图,而是框出的四个二维角点。相同的 1 px 角点扰动,落在小目标上时占装甲板尺寸的比例更大;落在大目标上时相对影响更小。这个差异会继续传给 PnP。

同一块装甲板在 6 毫米和 16 毫米等效视场中的四个 PnP 角点、像素宽度和一像素扰动引起的 PnP 误差示意

图中采用一组固定取图记录:1440 × 1080、距离约 5.95 m、同一块小装甲板。6 mm 画面中的 PnP 外框宽度为 25.8 px;按 16 mm 等效视场重投影后为 68.8 px。将四个角点同时向外扰动 1 px 后,PnP 的深度变化分别约为 347.7 mm 和 135.7 mm,总位置变化分别约为 348.3 mm 和 135.9 mm。

这组数值把焦距、取图分辨率和角点误差放到了同一条线上:同样的像素级误差,在装甲板投影更小的画面中占比更高,因此传给 PnP 的位姿变化也更大。

水平方向的角点偏移 Δu 与近似角误差的关系为:

Δθ ≈ Δu / fx

若用目标投影宽度估计深度:

Z ≈ fx · W / w_px
ΔZ / Z ≈ -Δw_px / w_px

因此,左右角点向相反方向偏移会改变投影宽度,深度通常比“整块装甲板在画面里一起平移”更敏感。四个角点一起平移、分别抖动、长期偏向同一方向,或者发生角点语义交换,对 PnP 的影响也完全不同。

3. 实车取图时最常调的两个参数:曝光和增益

实车调试中,最常主动调整的是曝光时间和增益。先区分两个容易混淆的时间量:

  • 帧周期是两帧开始曝光之间的时间间隔;例如 120 FPS 对应约 8.33 ms 的帧周期;
  • 曝光时间是单帧传感器累积光子的时长;相机在这段时间内“开着快门”收集光线;
  • 曝光不是取图间隔。它是一个帧周期中的采光窗口;当曝光时间接近或超过当前帧周期允许的范围时,才会限制可达到的帧率。

曝光:用时间换亮度,也可能换来拖尾

提高曝光时间,传感器可以收集更多光子,画面通常会更亮,暗处的信噪比也往往更好。但相机在曝光期间并不会停止观察运动:装甲板、云台或车体一旦相对运动,亮边缘会在图像上拉成拖尾,角点就不再是清晰的几何交点。

运动模糊长度 b_px ≈ fx · ω · t_exp

其中 ω 是相对角速度,t_exp 是曝光时间。这个式子只用于估算趋势:焦距更长、相对运动更快、曝光更久,像素拖尾都会更明显。长曝光也更容易让高亮灯条或反光区域饱和,边缘信息会被压成一片亮白。

增益:让信号变大,不会让光子变多

增益会放大传感器读出的电信号,使图像看起来更亮。它不会增加曝光期间进入传感器的光子数量,因此通常不会像延长曝光那样增加运动模糊,也通常不会直接降低设定帧率。代价是信号和噪声一起被放大:暗处颗粒、读出噪声和颜色抖动都会更明显,可用动态范围也可能减小。

调整项画面变亮的原因常见收益常见副作用
增大曝光时间累积更多光子暗场信噪比通常更好运动拖尾、亮区饱和;曝光占满帧周期时会压低可达帧率
增大增益放大传感器电信号在不延长曝光的情况下补亮度噪声和颗粒变强,亮暗细节更容易丢失

实车中的设置顺序

  1. 先确定希望运行的帧率,由帧周期确定曝光时间的上限;
  2. 在该帧率下设置曝光时间;
  3. 再调整增益,使取图质量符合当前识别方案的需要;
  4. 最终记录曝光、增益、帧率、分辨率和镜头状态。更换镜头、改变对焦或分辨率后,重新检查标定和取图效果。

神经网络和传统视觉对亮度、噪声、颜色和边缘的利用方式不同,因此曝光和增益的最终数值应在各自的识别链路中确定。

不同工业相机对曝光、模拟增益和数字增益的命名、量纲和上限并不完全一致。调参时以相机 SDK 中的实际单位为准,曝光通常以 µs 表示。

4. 哪些是选型参数,哪些是实车运行参数

镜头焦距、传感器分辨率、快门类型和数据接口通常在硬件确定时决定;曝光和增益则会随着赛场亮度、补光与运动状态进行实车调整。

参数更常出现的阶段对后续链路的直接影响
焦距选型与装车视场与装甲板投影大小
取图分辨率相机与采集配置同一块装甲板的采样像素数、带宽与传输负载
全局/卷帘快门选型快速运动下的几何形变
光圈、对焦、锁焦装车与维护进光量、清晰度、标定长期稳定性
帧率运行配置时间采样密度与端到端时序
曝光、增益赛场实车调参亮度、拖尾、噪声、角点稳定性
时间戳、触发方式系统集成图像与云台姿态是否对应同一时刻

动态自瞄通常会优先使用全局快门:全局快门在同一时间窗口内曝光整幅图像;卷帘快门逐行记录,快速相对运动时矩形装甲板可能出现倾斜或形变。全局快门并不能消除曝光期间的运动拖尾,曝光和光照仍需要单独调好。关于两类快门的差异可参考 Teledyne Vision Solutions 的说明。

5. PnP 的二维输入精度从哪里来

PnP 接收的是二维点和对应的三维点,但二维点已经经过完整的观测链:

真实装甲板
  → 镜头投影与畸变
  → 传感器曝光和采样
  → 图像传输与颜色处理
  → 缩放、补边或 ROI
  → 网络预测关键点
  → 坐标还原与角点排序
  → PnP

下面几类问题都会进入 PnP:

  • 成像:失焦、拖尾、过曝、暗场噪声、边缘像差和卷帘形变;
  • 模型与标注:标签中“角点”的定义、关键点回归能力、输入缩放、遮挡与距离分布;
  • 坐标还原:letterbox 比例、padding、ROI 偏移,以及角点顺序;
  • 标定:PnP 使用的图像坐标、内参和畸变系数是否对应同一分辨率与镜头状态;
  • 时间:图像的曝光时刻与云台姿态是否对齐。

检测框准确不等于角点准确。一个模型即使检测框稳定,也可能把四个角点整体向外推一两个像素;这对检测指标影响很小,却可能显著改变 PnP 的距离和朝向。标定完成后应检查重投影误差,并在真实距离、画面中心和边缘分别验证。OpenCV 的 Camera Calibration and 3D Reconstruction 给出了内参、畸变与投影关系的定义。

6. 一组焦距—角点—PnP 对照数据

下表使用与上图相同的取图和四角点。16 mm 列由同一帧的中心 ROI 做等效重投影,保持输出分辨率 1440 × 1080;它让我们只观察“焦距使同一装甲板放大”这一件事。

焦距取图分辨率距离PnP 外框宽度四角同时向外 1 pxPnP 深度变化PnP 总位置变化
6 mm1440 × 10805.95 m25.8 px宽度的 3.88%347.7 mm348.3 mm
16 mm 等效视场1440 × 10805.95 m68.8 px宽度的 1.45%135.7 mm135.9 mm

这不是“每个场景都固定为这些毫米数”的结论。它固定同一装甲板、同一距离和同一种角点扰动,展示投影尺寸变化后 PnP 对角点误差的响应。实际记录时可沿用这一张表,替换为自己的焦距、分辨率、距离和角点扰动结果。

7. 验收时应一起记录什么

不要只比较静态样张。让每个候选方案运行同一模型、同一 PnP 与同一记录程序,再按距离、亮度和运动状态分组统计:

指标建议记录方式
目标像素尺寸各距离下宽高的均值与范围
取图质量曝光、增益、饱和比例、帧率和连续丢帧长度
角点精度每个语义角点的平均、P95、系统偏差与帧间抖动
PnP 精度横向、深度、yaw 与重投影误差
动态表现不同曝光下的拖尾、姿态偏差和检测连续性
标定稳定性中心/边缘误差,以及重新上电、升温、振动后的变化
资源开销相机带宽、CPU/GPU 占用和模型吞吐

8. 本节检查清单

  • 能解释焦距与视场、目标投影大小之间的关系;
  • 能根据焦距、距离和取图分辨率,解释装甲板外框为什么会变大或变小;
  • 能区分帧周期和曝光时间,并说明高曝光与高增益各自带来的影响;
  • 能列出角点从成像、模型、坐标还原到 PnP 的误差链;
  • 能将角点误差、重投影误差和最终位姿误差放在同一张记录表里比较;
  • 能在最终分辨率、镜头与对焦状态下完成并复查标定。

接下来进入传统视觉:从灯条到装甲板,编写第一个识别程序。

On this page