Skip to content

相机内参数据要求

相机内参不是“为了跑标定算法才需要的附属文件”。它定义了一张图里的像素,究竟对应相机前方的哪一条三维视线。没有这层关系,图像当然仍可用于二维分类或语言模型;但一旦任务需要深度、三维重建、跨相机对齐、SLAM、抓取、位姿标注或把视觉结果交给机器人执行,像素位置就不再足够。

相机内参将相机坐标中的三维点映射到图像像素,并受到畸变模型影响

相机把三维世界压成二维图像时,丢掉了距离和尺度。内参提供了这台相机的投影规则:同样位于相机前方一米的物体,使用广角镜头和长焦镜头会落在完全不同的像素位置;即使是同一镜头,图像经过裁剪或缩放后,像素中心和有效焦距也会改变。

最常用的针孔近似是:

u = fx * X / Z + cx
v = fy * Y / Z + cy

其中 (X, Y, Z) 是相机坐标系中的三维点,(u, v) 是像素坐标;fx、fy 是以像素表示的有效焦距,cx、cy 是主点。真实镜头还会使直线弯曲或视角被压缩,因此公式前后通常还要按畸变模型处理。相关术语见相机内参、畸变模型和重投影误差。

对具身智能数据而言,内参解决的是“这条视觉证据从哪里来”的问题:

  • 三维几何:由深度图、双目视差或多帧匹配恢复点云、物体尺寸和表面位置。
  • 空间对齐:将图像中的 2D 框、关键点或分割区域投成相机射线,再与相机外参、机器人基座或世界坐标系相连。
  • 定位与建图:SLAM 与视觉惯性系统用内参解释特征点的观测方向;内参错误会表现为轨迹漂移、地图弯曲或边缘特征难以匹配。
  • 操作学习:将“画面中杯子的位置”变成可比较的空间目标,或复核相机看到的手、夹爪和物体是否与动作、位姿标签一致。
  • 公平评估:不同镜头、分辨率和预处理方式下,不能直接比较像素误差;内参可将误差归一到可解释的视角或三维关系中。

内参不是只保存一个 3x3 矩阵。数据集需要同时保存“数值是什么”和“它对哪一种图像有效”。下表是一份面向采集与交付的最小契约。

字段 数据要求 为什么要保存
camera_id / sensor_serial 稳定、可追溯的相机身份;多摄时不可用文件名代替 防止把一台相机的参数用于另一台
image_width, image_height 参数生效时的实际像素尺寸 焦距和主点以像素为单位,尺寸变了就可能失效
model 明确模型名称、实现来源、参数顺序 k1...k4 在不同模型中含义不一定相同
fx, fy, cx, cy 浮点值、像素单位、明确坐标原点与轴方向 支撑基础投影、反投影与几何标注
distortion 全量畸变系数及其顺序;无畸变也显式声明 避免边缘区域出现系统性偏差
image_state 原始、裁剪、缩放、旋转或去畸变后的图像状态 防止标定文件与训练帧不是同一像素坐标
calibration_version 标定日期、工具/配置版本、适用硬件配置 支撑回溯、重跑和设备改装后的隔离
quality 重投影误差统计、样本覆盖与验收结论 让下游知道能否用于三维任务

内参应与图像尺寸、预处理状态、畸变模型和版本一起构成可追溯的数据契约

一个便于交换的记录可以是:

{
"camera_id": "wrist_rgb_01",
"image_size_px": [1920, 1080],
"projection_model": "pinhole_radtan",
"K": [[1418.2, 0.0, 960.4], [0.0, 1416.8, 538.7], [0.0, 0.0, 1.0]],
"distortion": { "order": ["k1", "k2", "p1", "p2", "k3"], "values": [-0.12, 0.03, 0.001, -0.0007, 0.0] },
"image_state": "raw_sensor_orientation",
"calibration_version": "calib-2026-08-14",
"quality": { "mean_reprojection_error_px": 0.31, "p95_reprojection_error_px": 0.74 }
}

数值本身不应被当作通用模板。不同设备、分辨率、去畸变管线和标定模型的参数都不同;尤其不要把示例数值复制到新相机上。

标定一次并不意味着从此永久有效。以下变化会使“原有参数 + 新图像”不再是同一套几何:

  • 切换相机、镜头、对焦距离或可变焦档位。
  • 改变传感器输出分辨率、binning、数字变焦、裁剪或稳定模式。
  • 将原始画面旋转、缩放、裁剪、拼接,或使用了不同的去畸变流程。
  • 更换防水壳、加装镜头、碰撞后镜头位置变化,或设备报告了新的标定版本。

其中缩放和裁剪最容易被忽略。若原图整体按 sx、sy 缩放,新的 fx、fy、cx、cy 也应按相同因子缩放;若从左上角裁掉 (x0, y0),主点应变为 cx - x0、cy - y0。旋转、镜像和去畸变则不应靠猜测改矩阵,应记录变换并用与图像处理一致的相机模型。

对于鱼眼、全景或多相机拼接图,优先使用设备或工具链明确声明的模型。把鱼眼当作普通针孔相机,中心可能“看起来能用”,但画面边缘的空间定位会持续偏离。

二维标签可以直接附着在像素上,但若要复用为三维监督,标注记录必须知道它基于哪种图像状态和哪版内参。例如标注员在已去畸变的 1280×720 预览上圈出的物体,不能直接拿原始 1920×1080 鱼眼帧的内参反投影。

建议每条几何相关标注至少关联:frame_id、camera_id、image_state、calibration_version 和坐标约定。深度、姿态、点云、机器人 TCP 或世界坐标等派生结果,还要关联相机外参和时间戳。这样在发现内参错误时,才能精确定位需要重算的标注、训练分片和评估结果。

从原始帧到标注、三维派生数据和训练评估,内参版本应全程可追溯

训练和评估可按内参质量分桶:分别报告标定正常、边缘误差偏高、参数缺失和预处理不明的样本表现。这样可区分模型本身的泛化问题与数据几何问题,也能避免把有系统性投影误差的样本当成可靠监督。

检查 合格证据 常见风险
身份匹配 camera_id、序列号、硬件配置与标定记录一致 多相机文件名相似导致串用
尺寸匹配 标定尺寸等于实际解码后尺寸,或存在已验证的变换 视频转码、裁剪后仍沿用原参数
模型完整 模型名、参数顺序、畸变系数和图像状态齐全 只留 K,丢失鱼眼模型
标定覆盖 标定板角点覆盖中心、四角和不同距离/姿态 只在中心取样,边缘误差被掩盖
重投影残差 保存均值、分位数和空间分布,不只保存一个均值 局部失败被平均值掩盖
现场复核 用已知尺寸或固定标记板重投影检查 运输、改装或设置变化后继续使用旧参数
版本追溯 派生帧、标签和样本能定位到内参版本 内参修正后无法判断哪些数据需重算

验收阈值应服务于下游任务,不宜套用一个通用像素数。抓取、三维测量和高精度定位应依据工作距离、容许的末端误差和画面边缘使用比例制定更严格阈值;只做粗粒度二维识别的资料可降低几何要求,但仍应明确标注“不可用于空间换算”。

内参回答“相机如何看”;外参回答“相机相对机器人、另一台相机或世界坐标系在哪里”;时间戳回答“这张图对应什么时候”。三者缺一不可:内参正确而外参错误,三维点仍会落在错误位置;内外参正确而图像和动作不同步,动态操作的标签仍会错位。

在数据集发布时,建议将内参视为每个相机流的必备元数据,并将外参、时间对齐、图像预处理和质量标记作为可连接的独立记录。有关多传感器记录的版本与坐标契约,可继续参考 Meta VRS 多传感器数据规范;有关视觉定位的输入与质量问题,可参考 视觉惯性 SLAM 数据整理。