机器视觉
摘要
在许多基于摄像机的应用中,需要通过几何相机标定(GCC)找到入射光线和图像像素之间的几何关系,即投影模型。
为了提供实用的标定指南,本文调查和评估了现有的GCC工具,综述涵盖了这些工具中使用的摄像机模型、标定目标和算法,突出它们的特性以及GCC发展的趋势,评估比较了六种基于目标的GCC工具,分别为BabelCalib、Basalt、Camodocal、Kalibr、MATLAB标定工具和基于OpenCV的ROS标定工具,使用了宽角和鱼眼镜头描述的三种传统投影模型的模拟和实际数据。
这些测试揭示了这些相机模型的优缺点,以及这些GCC工具的可重复性,根据调查和评估,还讨论了GCC的未来研究方向。
主要贡献
相机在从遥感、测绘、机器人技术到内窥镜等一系列应用中都是不可或缺的。这些应用通常需要了解相机中真实世界点和它们在图像中的几何关系(图1)。为了解决这种几何映射问题,引入了几何相机标定(GCC),作为计算机视觉、物联网和机器人技术的交汇点之一,自20世纪70年代以来,GCC一直受到广泛关注,并且至今仍然在积极研究,可能是由于各种应用需求不断发展的推动。
图1 几何相机标定及评估工具 根据工作原理的不同,有传统相机、深度相机、事件相机、热像相机等。
根据视场角(AOV),相机可以粗略地分为传统相机(通常《64°)、广角相机(《100°)、鱼眼相机和全景相机(≥ 180°),相邻组之间存在模糊的边界。传统和广角相机通常通过针孔模型(即透视模型)很好地表示。全景相机包括视场角≥ 180°的鱼眼相机,以及由镜头和镜子(“cata”表示镜子反射,“dioptric”表示透镜折射)组成的反射折射相机。还有由多个相机组成的相机架,通过拼接图像实现较大的视场角。根据所有入射光线是否经过单个点,相机可以分为中心相机(具有单个有效视点,即光学中心)和非中心相机。中心相机包括传统相机、视场角≤ 195°的鱼眼相机,以及通过组合针孔相机和双曲线、抛物线或椭圆镜子构建的许多反射折射相机。非中心相机的实例包括使用球面镜构建的反射折射相机。
目前已经提出了许多几何相机模型,从几十个参数的具体全局模型到数千个参数的通用局部模型不等。传统的几何相机模型是针对特定镜头类型量身定制的,通常由通常《100个参数的封闭形式函数表示。它们是全局模型,因为参数的变化会影响每个入射光线的投影。这些模型得到了现有标定工具和运动结构(SfM)软件包的良好支持。相反,通用模型可以通过使用大量参数来建模广泛范围的相机,每个参数确定了局部区域内入射光线的投影,例如B样条模型。已经开发了许多用于进行GCC的工具,每个工具都具有一组独特的功能。它们通常以专有程序的形式提供,例如MATLAB中的相机标定器和Agisoft Metashape,或者是开源程序,例如Kalibr。就相似性而言,现有工具通常支持全局相机模型和一些平面目标的标定。值得注意的是,许多工具都基于相同的基础包,例如OpenCV,因此它们往往具有类似的限制。
总的来说,目前缺乏对现有GCC工具的定性概述和定量比较,以阐明选择适当的相机模型和标定工具,为了填补这一空白,我们从几个实践角度广泛审查了现有的GCC工具,并使用模拟和真实数据对几个流行的工具进行了基准测试。为了限制范围并迎合广大读者,本文重点关注传统的近距离灰度或彩色单目相机,因为我们认为它们是受到积极研究的,并且它们的标定方法通常可以适应其他类型的相机。
本文的贡献总结如下:首先,本综述将GCC工具中使用的相机模型、标定目标和标定算法进行了分类,为这些方面提供了简明的参考。然后从定性上揭示了这些标定工具的优势和相似之处,希望能够避免未来的重复开发工作。其次,通过模拟和实际数据测试,在不同视场角的内部相机上对六种标定工具进行了评估,以展示它们的准确性和可重复性。该评估清楚地显示了三种流行的全局几何相机模型的优势和劣势,并指出了哪种标定工具适用于近距离应用。第三,基于审查和评估,我们强调了GCC的未来研究方向。
内容概述
2.1 相机标定组件
相机标定过程中涉及的一些关键概念和定义,其中包括:
· 焦距(Focal Length):被定义为相机光学中心与传感器之间的距离,对于中心相机而言,焦距是一个重要参数。
· 主光轴/光学轴(Principal/Optical Axis):被定义为通过光学中心并垂直于传感器芯片的线,是相机成像的中心线。
· 图像平面(Image Plane):对于针孔相机而言,传感器经常被倒置并放置在光学中心的前方,形成成像平面。
· 镜面轴(Mirror Axis):对于反射折射相机,指的是镜子的对称轴。
· 视场角(Angle of View,AOV):是进入镜头的光线形成的最大角度,对于相机而言,是指与传感器曝光像素对应的光线形成的最大角度,通常分为水平视场角、垂直视场角和对角视场角。
2.2 相机模型
这里描述了在近距离应用中使用的各种相机模型,这些模型已经在本文调查的几何相机标定工具中采用。用于遥感的相机模型,例如仿射相机模型 、RPC模型、检测器方向模型。我们从中心相机的全局模型开始,这些模型主导了几何相机标定工具,最后介绍通用模型。这些全局模型通常以(正向)投影方式定义,即给定世界点或射线,制定图像点,尽管相同的公式也可以反过来使用,即给定图像点得到射线,即反向投影/反向投影/反投影,然而,对于局部模型,反向投影通常用于表达相机模型,因为正向投影可能非常复杂。对于下面在图3中列出的相机模型,除非两者都是闭合的形式,我们描述正向模型或反向模型,理解到进行反向操作通常需要迭代优化。
图2 相机模型 宽角相机的全局模型:通常和宽角相机的AOV 《100°,通常畸变很小,并且很好地符合针孔模型。
全局鱼眼相机模型:鱼眼相机通常具有AOV ≥ 100°,可以达到280°。它们非常常见,但是显示出很大的畸变,因此提出了相当多的全局模型。最流行的可能是KB模型和FOV模型。
全局全景相机模型:全景相机的HAOV ≥ 180°,DAOV可达360°。已经为这样的相机开发了几种模型。
局部通用相机模型:前述的全局相机模型可能在各种几何相机标定工具中都可用,可能是因为它们简单,但是它们的准确性也受到限制。为了推动准确度的极限,提出了具有数千个参数的通用模型,但笼统地说,它们在几何相机标定工具中的可用性以及下游应用的支持方面仍然落后于全局模型。
2.3 标定板
几何相机标定通常依赖于被动或主动的人工对象,例如遥感中的地面控制点或近距离标定中的平面目标。最近的自动标定方法,利用机遇性的环境特征,而基础设施为基础的方法则使用先前对环境的地标地图。由于人工目标仍然普遍用于更好的准确度控制,因此本节调查了几何相机标定工具支持的目标,如图4所列。
图3 用于几何摄影机校准的目标类别 棋盘格:棋盘格是最常见的标定目标之一,通常由黑白交替的方块组成。检测棋盘格的角点可以通过在图像中找到黑白方块的交界处来完成。棋盘格的一个缺点是需要保证所有角点在图像中完全可见,以便准确确定其坐标。通常为了避免在180°旋转后看起来相同,会采用奇数行偶数列或偶数行奇数列的布局。
圆形网格:圆形网格通常由圆心对称或不对称分布的圆组成。检测圆形网格的目标点可以通过圆心的几何特征,如面积、圆形度等来实现。但圆形网格的缺点是要求图像中所有的圆都必须是可见的,并且由于透视效应和镜头畸变,检测到的圆心可能存在偏心误差。
Charuco板:Charuco板是将棋盘格与Aruco标记结合起来的标定目标。它利用棋盘格的方便检测与Aruco标记的唯一性,来应对不准确的角点位置和遮挡的情况。
AprilGrid:AprilGrid是一种由AprilTag标记组成的数组,标记之间由黑色方块连接。AprilGrid具有抗遮挡能力,并且其角点位置准确,因为角点被两个黑色方块包围。
Deltille网格:Deltille网格是由交替颜色填充的相邻正三角形组成的图案。相较于棋盘格,Deltille网格的优点是角点密度更高、角点位置更精确。但它的广泛应用受到了现有标定工具接口调整的限制。
图4 标定板:(a) 8×11 棋盘格,(b) 8×11 圆形网格,(c) 8×11 非对称圆形网格,(d) 8×11 Charuco,(e) 7×10 AprilGrid,(f) 10×11 Deltille
2.4 标定算法
传统几何方法和基于学习的方法:传统几何方法以及基于学习的方法是几何相机标定算法的两大类别。传统几何方法通常具有较高的解释性和精度,而基于学习的方法则更加灵活和鲁棒。
标定目标类型:根据标定目标的类型,几何相机标定算法可以分为三类:基于人工目标、基于映射自然场景以及无目标的自标定算法。基于人工目标的方法是最常见和广泛支持的,通常包括线性初始化和迭代非线性精细化两个阶段。基于映射自然场景的方法需要进行准确的三维重建,并提供相机的粗略内在参数值。自标定算法通过观察机会性地标记进行标定,包括递归精细化方法、仅恢复相机内在参数的方法以及恢复结构、运动和相机内在参数的方法。
算法示例:传统几何方法的示例包括DLT方法以及迭代精细化方法。基于学习的方法通常更加灵活和鲁棒,但也可能更加复杂。自标定算法通常利用捆绑调整,因此具有更高的准确性,常用于结构从运动软件包中。
2.5 标定工具
这一部分审查了用于几何相机标定(GCC)的工具,这些工具主要实现了使用人工目标或无目标捆绑调整的算法,几个基于学习的GCC工具也被引用作为这个活跃研究领域的示例。
1)BabelCalib是一款单目相机标定工具,采用反投影模型作为各种相机模型的代理,支持多种相机模型,处理异常值的方式是使用Huber损失。
2)Basalt是一个能够进行单目相机标定的软件包,支持多种相机模型,采用Levenberg-Marquardt算法进行标定,处理异常值的方式也是使用Huber损失。
3)calio.io是一款商业标定工具,具备直观的图形用户界面,支持多种相机模型和标定目标,处理异常值的方式也是使用Huber损失。
4)Camodocal是一个支持单目和立体GCC的软件包,采用Cauchy损失处理异常值,对标定目标相对容易扩展。
5)Kalibr是一个流行的GCC工具,可以选择信息丰富的图像进行标定,支持多种投影和畸变模型,处理异常值的方式是移除超过一定阈值的重投影误差的角点。
6)MATLAB相机标定器支持单目和立体相机标定,拥有易于跟随的GUI和许多可视化功能,支持多种标定目标,处理异常值的方式是使用Huber损失。
7)ROS相机标定工具
· 介绍了OpenCV库提供的相机标定函数,包括用于单目和立体相机的针孔理性径向切向模型、鱼眼相机的KB-8模型以及全向相机的Mei模型。
· 指出了OpenCV中全向模块的功能,支持多相机设置,并可看作是对MATLAB工具的重新实现。
· 强调了OpenCV中KB-8模型的局限性,不支持非正深度点。
· 描述了ROS相机标定器的特点,是对OpenCV标定函数的简单包装,支持交互式和批处理模式,并提供对棋盘格、圆格和Charuco板的支持。
· 提及了基于OpenCV的其他程序,包括MRPT相机标定器,后者扩展了棋盘格检测以支持多个棋盘格。
8)自标定工具与SfM:
· 介绍了自标定工具通常基于SfM流水线实现,在商业软件或开源程序中都有代表性。
· 概述了几个专业摄影测量软件,如Agisoft的Metashape、PhotoModeler和Pix4D mapper,它们支持自标定,并提供了不同的相机模型和标定方法。
· 提及了流行的开源SfM软件包,如colmap和最近的SCNeRF,它们也支持相机自标定,提供了不同的相机模型和标定算法。
总结
鉴于不断发展的GCC,我们从相机模型、校准目标和算法的角度对最近的GCC工具进行了调查,概述了这些工具的优势和局限性。我们还评估了六种知名的校准工具,包括BabelCalib、Basalt、Camodocal、Kalibr、MATLAB校准器和基于OpenCV的ROS校准器,以研究它们在模拟和真实数据上的一致性和重复性。从回顾和实验中,我们总结了几个发现:
1)异常值处理对于基于优化的相机校准工具至关重要。这些异常值通常是检测到的角点与其实际图像位置相差几个像素,在某种程度上模糊的图像中经常发生。幸运的是,大多数GCC工具都可以处理异常值。
2)GCC工具Camodocal、Kalibr和MATLAB校准器很好地支持针孔径径向切向模型。BabelCalib和Camodocal很好地支持KB-8模型,而TartanCalib则针对DAOV 《 180◦的相机很好地支持KB-8模型。Camodocal、TartanCalib和OpenCV很好地支持Mei模型,但该模型存在参数不稳定性和冗余性。此外,针孔径径向切向模型对于DAOV 》 100◦的相机可能不足够。在需要获得全局相机模型时,KB-8模型通常更受欢迎,因为它在大DAOV的相机上具有广泛的支持和良好的准确性。
基于这项研究指出了几个未来的研究方向:
1)交互式校准:众所周知,优质的数据和信息性的数据对于GCC至关重要。图像模糊可能是由于快速运动或对焦不足引起的,数据不足是另一个问题。确保数据质量和信息的一种方法是交互式校准,它提供了质量检查,选择了优质数据,并实时给出下一步建议,无论是基于目标还是无目标的校准。AprilCal是一种用于基于目标的校准的工具。
2)静态校准:基于目标的校准通常涉及不可重复的繁重移动,可以通过至少两种方式来避免,即使用程序化机器人手臂进行校准和静态校准。机器人手臂校准已在文献中进行了研究。静态校准通常依赖于主动目标。这方面的方法已经在文献中开发出来,并具有应用特定的设置。我们认为静态校准仍有很大的发展空间。
3)场景重建的标定:实验室校准的设置通常与原位设置不同,例如,在对焦距离(景深)、曝光、拍摄模式(快照或视频)、光圈和感兴趣对象的大小上。已经有一些工作在减轻差异方面取得了进展。最终的解决方案将是自校准或基于先前地图的校准。这些方法依赖于支持校准的重建引擎。一个基于传统捆绑调整的引擎是colmap。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !