相机校准是一个备受讨论的话题,但由于缺乏强大的特征检测算法,使自动校准过程的构建变得困难。校准模式识别是一项艰巨的任务,其中照明问题和高度歧义是主要挑战。因此,相机校准的应用程序通常需要用户干预才能可靠地检测校准。
虽然深度学习在很大程度上取代了用于对象检测的经典计算机视觉,但对于许多机器人应用,我们仍然需要将图像中的像素映射到世界的物理几何形状。那么相机就需要校准。估计相机参数的过程称为相机校准或者相机标定。
一、为什么要进行相机标定?
1.物体在实际空间中的位置
2.物体在图像中对应点的位置
为了将1、2联系起来,必须找到一个纽带,这个纽带就是相机的参数(内参、外参、畸变系数)
二、相机标定用到的坐标系
世界坐标系(3D)——>相机坐标系(3D)——>图像坐标系(2D)
世界坐标系:定义物体在真实世界的具体位置
相机坐标系:以相机的角度去描述物体的位置
图像坐标系:描述物体3D——>2D的映射关系,即找到3D物体在平面上的对应位置
所以,相机标定的本质是坐标之间的转换。
进行标定的目的:求出相机的内、外参数,以及畸变参数,以确定现实世界中的3D 点与其在该校准相机捕获的图像中对应的 2D 投影(像素)之间的准确关系。
内部参数:例如相机/镜头系统的镜头的焦距、光学中心和径向畸变系数。
外部参数:这是指相机相对于某个世界坐标系的方向(旋转和平移)。
相机标定方法有:传统相机标定法、主动视觉相机标定方法、相机自标定法。
不同摄像机的自身特点和摆放情况都对世界坐标点与计算机图像像素间的联系有决定作用。这些自身特点和摆放情况都可用一系列参数来描述。尽管这些参数可以通过对摄像机的直接测量得到,但用摄像机作为测量装置来确定它们通常更为方便。为此需要先知道一组基准点(它们在对应坐标系中的坐标都已知),借助这些已知点获取相机的参数。
很多流行的库都包含相机标定,比如halcon、matlab、opencv等,都有函数支持。比较流行的标定法是张友正的棋盘标定法,主要是针对针孔相机模型的,不适合鱼眼、广角/全景相机模型。