当前位置: 首页 > news >正文

Infrastructure-Based Calibration of a Multi-Camera Rig

Infrastructure-Based Calibration of a Multi-Camera Rig

  • 摘要
  • I. 引言
    • A. 相关工作(Related Work)
  • II. 系统平台(Platform)
  • III. 相机内参标定(Intrinsic Camera Calibration)
  • IV. 基于基础设施的标定流程
    • A. 建立稀疏特征地图
    • B. 视觉定位(Visual Localization)
    • C. 推断相机外参与平台位姿
    • D. 非线性优化(Non-Linear Refinement)
    • E. 手眼标定(Hand-Eye Calibration)(可选)
  • V. 实现细节(Implementation)
  • 参考文献

摘要

在自动驾驶等复杂自动化系统部署前,实现多传感器系统的在线重标定是一个必须解决的基础性问题。在此类应用中,标定参数的准确性对系统的安全运行至关重要。然而,目前大多数多传感器系统的标定方法计算成本高、需要已知标定板,并且通常需要专家监督。
本文提出一种替代方案:基础设施标定方法(Infrastructure-Based Calibration)。该方法高效、无需更改基础设施,且完全无监督。在“建图阶段”,我们使用计算量较大的同时定位与地图构建(SLAM)算法构建一个高精度的标定区域地图。一旦该地图建立,其他车辆便可将其视为已知标定板进行快速标定。
我们展示了该方法在多相机系统外参标定中的有效性。该方法不要求相机间视场重叠,也不依赖初始值。在相机平台通过该区域时,我们将同步采集的图像与地图中的特征进行匹配,并推算相机位姿与二维-三维点对。在此基础上估算相机外参与平台位姿,并通过非线性优化进一步精化。

I. 引言

许多公司正大力投入机器人与自动化系统的研发,未来几年这些系统将在面向消费者的市场广泛部署。随之而来的是一系列与长期自主运行相关的核心问题 —— 如在无需专家持续监督的前提下,系统能否持续运行数月。其中一个关键问题是复杂系统的标定。
在自动驾驶或辅助驾驶系统中,所谓的“标定参数”(如传感器之间的变换关系、比例因子、相机内参等)需具备极高精度,才能在存在行人与其他车辆的复杂环境中实现系统的稳定可靠运行。虽然工厂可进行初始标定,但长时间使用过程中,部分参数会因磨损、温度等原因发生漂移。在研发领域,多传感器/多执行器系统的标定与重标定是一项持续性的难题,通常依赖专业人员、专用设备与特定动作操作。因此,亟需一种无需人工干预的鲁棒且精确的在线自标定算法。
一种方法是在特定区域布设“标定场地”,配备已知标定图案(如棋盘格)或结构(如激光反射板)。例如,Geiger 等人通过布设棋盘格图案,覆盖所有视场,并在每次数据采集前对车辆进行标定。这种方法虽然可行,但需要改造实际环境,部署成本高,且不适合大规模使用。
本文提出的“基础设施标定”方法借鉴上述方案的优点,但无需更改环境基础设施。我们利用已标定的机器人平台通过 SLAM 建立高精度地图,其他车辆随后可将此地图用于标定。SLAM 虽然计算量大,但只需构建一次地图,后续标定计算成本极低。我们还展示如何通过无需特殊动作的先进自标定算法来引导建图过程,从而降低整个流程的部署成本。基础设施标定在财务与计算上均为高效方案,特别适用于大量自动驾驶车辆的无人值守标定需求。
我们通过对图1中的多相机系统进行外参标定验证该方法的准确性。多相机系统应用日益广泛,但其效果高度依赖于准确的标定,尤其是相机的外参会随时间因环境变化(如震动、温度)发生偏移。因此,本文聚焦于外参估计,默认内参在时间上保持不变。若能获取车体的里程计信息(如轮速、GPS/IMU 或 Vicon),还可估算相机与车体/里程计坐标系间的转换关系。
在这里插入图片描述

A. 相关工作(Related Work)

我们关注于在无视场重叠假设下进行多相机系统标定的研究。现有多数方法 [11,12,13] 都依赖于标定板。例如:Kumar 等人 [11] 使用镜子辅助标定,但其限制是:镜子必须出现在相机视野中,同时整个图案也需处于视野中;Lebraly 等人 [12] 使用两个标定板,并要求系统运动使得每个相机在不同时间都能看到两个标定板;Li 等人 [13] 要求相邻相机必须在同一时刻看到标定图案的一部分。由此可见,使用标定板的方法存在操作复杂、场景限制多等问题,使得多相机系统标定并不简单。我们进一步考察了不依赖专用标定图案的无监督方法。其中与本文最相近的是 Carrera 等人 [2] 与 Heng 等人 [8] 的工作:Carrera 等人 [2] 为每个相机构建稀疏特征地图,并通过匹配各地图对找出3D相似变换与内点集合,最终执行全局 BA(Bundle Adjustment)。但在户外场景中,由于多数特征点距离相机较远,导致3D点估计不准,影响匹配质量。Heng 等人 [8] 提出了更鲁棒的处理方式:对于每张图像,使用里程计提供的航向角将图像对进行图像平面对齐,再执行特征匹配,从而提高匹配质量。这两种方法都不使用先验地图,需在图像间搜索特征匹配,并依赖回环检测,但回环检测并非总能成功。相比之下,我们的方法依赖预先构建的高精度地图,从而避免了相机间特征匹配与回环检测的需求,也无需执行全局 BA,因而更简单、鲁棒、计算量更低。

我们的方法可被理解为:一次性地图构建成本较高,但后续多次标定的成本非常低。适用于需要短时间内完成大量标定的应用场景。简而言之,这种方法背后的理念是:“世界就是一个巨大的棋盘格”。我们将环境地图作为一个虚拟的三维棋盘板,用来快速精确推算相机姿态。这类似于传统相机标定中使用棋盘格推算相机内参和外参的方法。

II. 系统平台(Platform)

如下图所示(图2),我们的实验平台是一辆配备了4个鱼眼相机的 Toyota Prius。所有相机均为 Matrix Vision 的 mvBlueCOUGAR 型号,分辨率为 1280×960;使用鱼眼镜头;一台相机作为主触发源,控制其他相机同步采集;
实时里程计信息通过轮速和方向盘角度估算车辆的位置与朝向。在后续图示中,我们使用如下颜色标识各相机:
前视相机:红色
左视相机:绿色
后视相机:蓝色
右视相机:黄色
在这里插入图片描述

III. 相机内参标定(Intrinsic Camera Calibration)

此部分略过

IV. 基于基础设施的标定流程

在开始标定之前,我们首先使用结构光重建(Structure-from-Motion)方法,建立一张稀疏特征地图,该地图将在之后用于所有标定流程中,只要环境没有发生实质性变化。
我们假设参与标定的相机都已经完成了内参标定。之后,平台在环境中行驶时,我们记录所有相机的同步图像,同时(如果可用)也记录里程计数据。随后运行如下流程,以估计每个相机相对于相机平台(rig)的外参。
这个流程如图 3 所示,主要包括以下几个步骤:

  • 视觉定位(Visual Localization)
  • 相机外参与平台位姿初估(Infer Camera Extrinsics and Rig Poses)
  • 非线性优化(Non-Linear Refinement)
  • (可选)手眼标定(Hand-Eye Calibration)
    最终输出的是每个相机相对于平台参考系的变换关系(外参),如果使用了里程计,还可以获得相机与里程计坐标系之间的变换关系。
    在这里插入图片描述

A. 建立稀疏特征地图

我们使用常规的 SfM 实现来构建稀疏地图(例如 Wu 的 VisualSFM【16】)。甚至可以使用其他相机配置(如双目)构建地图。地图结构为图结构(Graph),其中:节点表示图像、2D 特征点或 3D 场景点;边表示图像到图像内特征点的连接,特征点到对应 3D 点的连接。之后,我们将地图中的每张图像转化为词袋(bag-of-words)向量,并加入词汇树(vocabulary tree)用于后续检索。

B. 视觉定位(Visual Localization)

输入:多相机图像帧 + 稀疏特征地图
输出:图像帧中每个相机在地图坐标系下的位姿
流程如下:

  1. 使用词汇树,对每张图像检索最相似的 n 张地图图像;
  2. 在当前图像与候选图像之间匹配 2D 特征点;
  3. 候选图像中的特征点有对应的 3D 点 → 获得 2D–3D 匹配;
  4. 使用 EPnP【15】+ RANSAC 求解相机位姿与内点集;
  5. 选择内点数最多的候选图像对应的位姿作为最终结果;
    若最大内点数不足阈值(设为25),则该图像的位姿视为未知。我们将多个相机的同步图像组成一帧“相机位姿集”。只有当:至少有2个相机成功定位;当前位姿集与前一帧的所有相机位姿之间的最小距离超过0.3米,时才保留这一帧的位姿集。第二条规则用于避免过多静止帧(如车辆静止或缓慢移动)引入偏差。

C. 推断相机外参与平台位姿

在此步骤中,我们利用视觉定位得到的相机位姿序列,反推出:

  • 各相机相对于平台的外参(rig–camera 变换);
  • 每帧平台的位姿(rig pose)。

基本思想如下:

  • 所有相机相对于地图的位姿 = 平台相对于地图的位姿 × 相机相对于平台的外参;
  • 相机是固定在 rig 上的刚体,因此这些变换之间是共约束的。

步骤

  1. 将第一个相机的参考系作为初始平台参考系(无损一般性);
  2. 仅使用完整帧(即所有相机均有成功位姿)进行估计;
  3. 每个完整帧中,尝试不同的外参假设,反推出平台位姿;
  4. 使用**四元数平均法【14】**求平台旋转,位置用普通均值;
  5. 对所有帧求总重投影误差,选择误差最小的外参作为初值;
  6. 同时得到外参与平台位姿初估。

D. 非线性优化(Non-Linear Refinement)

在初估基础上进行优化,目标是:最小化所有重投影误差。
优化变量:

  • 每帧平台位姿 P i P_{i} Pi
  • 每个相机的外参 T c T_{c} Tc

目标函数如下:
min ⁡ P i , T c ∑ c , i , p ρ ( ∥ π ( C c , P i , T c , X p ) − p c i p ∥ 2 ) \min_{P_{i},T_{c}} \sum_{c,i,p}^{} \rho \left ( \left \| \pi \left ( C_{c},P_{i},T_{c},X_{p} \right )-p_{cip} \right \|^{2} \right ) Pi,Tcminc,i,pρ(π(Cc,Pi,Tc,Xp)pcip2)
其中:

  • π ( ) \pi \left ( \right ) π():投影函数,预测三维点 X p X_{p} Xp在第 c 个相机第 i 帧图像上的像素位置;
  • C c C_{c} Cc:第 c 个相机的内参;
  • p c i p p_{cip} pcip:观测到的像素坐标;
  • ρ \rho ρ:鲁棒核函数(本文使用 Cauchy 核),用于降低异常值的影响。
    注意:优化过程中,3D 点坐标保持不变。

E. 手眼标定(Hand-Eye Calibration)(可选)

如果具备里程计数据,可进一步估计平台坐标系与里程计坐标系之间的刚体变换,从而得到相机与里程计的相对变换。
方法:

  • 若平台具备 6 自由度运动,使用 双四元数法【3】;
  • 若为平面 3 自由度运动(常见于车辆),使用 Guo 等人方法【7】。
  • 否则,跳过本步骤,直接输出相机–平台的外参。

V. 实现细节(Implementation)

我们在实现过程中使用了以下组件与库:

  • 特征提取与描述:使用 OpenCV 中的 SURF 特征点检测与描述子生成;
  • 稀疏特征地图构建:使用 CamOdoCal 库【8】;
  • 图像检索与视觉定位:使用 DBoW2 词袋模型实现【4】;
  • 非线性优化:使用 Ceres Solver【1】进行最小化重投影误差的非线性优化。

参考文献

[3] K. Daniilidis. Hand-eye calibration using dual quaternions. International Journal of Robotics
Research(IJRR), 18(3):286–298, 1999.
[7] C. Guo, F. Mirzaei, and S. Roumeliotis. An analytical least-squares solution to the odometer-camera extrinsic calibration problem. In International Conference on Robotics and Automation (ICRA), 2012.
[14] F. Markley, Y. Cheng, J. Crassidis, and Y. Oshman. Averaging quaternions. Journal of Guidance, Control, and Dynamics, 30(1):12–28, 2007.
[15] F. Moreno-Noguer, V. Lepetit, and P. Fua. Accurate non-iterative o(n) solution to the pnp problem. In International Conference on Computer Vision (ICCV), 2007.
[16] C. Wu. Visualsfm: A visual structure from motion system, 2011. http://homes.cs.washington. edu/˜ccwu/vsfm.

相关文章:

  • 基于TurtleBot3在Gazebo地图实现机器人远程控制
  • SQL注入篇-sqlmap的配置和使用
  • 拟合问题处理
  • 【C++进阶篇】智能指针
  • Java并发编程实战 Day 15:并发编程调试与问题排查
  • 论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
  • LeetCode - 199. 二叉树的右视图
  • 动态元素绑定事件总失效?通过AI 对话框的开发,详解绑定逻辑!
  • stm32wle5 lpuart DMA数据不接收
  • 机器人模仿学习调研(二)
  • 使用Spring Cloud Stream 模拟生产者消费者group destination的介绍(整合rabbitMQ)
  • Spring AMQP
  • 什么是日内融?日内融交易系统开发全解析
  • crackme006
  • 在WSL2的Ubuntu镜像中安装Docker
  • modelscope下载gguf格式模型
  • libfmt: 现代C++的格式化工具库介绍与酷炫功能
  • 中国高等职业教育(专科)专业划分
  • 算法从0到1 Day 17 二叉树part 06
  • Axure设计案例之词云图设计
  • 深圳企业网站设/如何快速推广app
  • centos系统怎么做网站/拼多多seo怎么优化
  • 淘宝客怎么做网站导购/seo概念的理解
  • 自己做产品网站/电商数据分析
  • 腾讯免费企业邮箱注册/潍坊网站建设seo
  • 有没有做汽车维修记录网站/网络营销案例分析