想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的。张正友于1998年在论文:”A Flexible New Technique fro Camera Calibration”提出了基于单平面棋盘格的相机标定方法。该方法介于传统的标定方法和自标定方法之间,使用简单实用性强,有以下优点:
- 不需要额外的器材,一张打印的棋盘格即可。
- 标定简单,相机和标定板可以任意放置。
- 标定的精度高。
相机的内参数
设 P=(X,Y,Z) P = ( X , Y , Z ) 为场景中的一点,在针孔相机模型中,其要经过以下几个变换,最终变为二维图像上的像点 p=(μ,ν) p = ( μ , ν ) :
- 将 P P 从世界坐标系通过刚体变换(旋转和平移)变换到相机坐标系,这个变换过程使用的是相机间的相对位姿,也就是相机的外参数。
- 从相机坐标系,通过透视投影变换到相机的成像平面上的像点 。
- 将像点 p p 从成像坐标系,通过缩放和平移变换到像素坐标系上点 。
相机将场景中的三维点变换为图像中的二维点,也就是各个坐标系变换的组合,可将上面的变换过程整理为矩阵相乘的形式:
将矩阵 K K 称为相机的内参数,
其中, α,β α , β 表示图像上单位距离上像素的个数,则 fx=αf,fy=βf f x = α f , f y = β f 将相机的焦距 f f 变换为在x,y方向上像素度量表示。
另外,为了不失一般性,可以在相机的内参矩阵上添加一个扭曲参数
,该参数用来表示像素坐标系两个坐标轴的扭曲。则内参数 K K 变为
对于大多数标准相机来说,可将扭曲参数 γ γ 设为0. Multiple View Geometry in Computer Vision
张氏标定法
在上一篇博文单应矩阵,介绍的单应矩阵表示两个平面间的映射。在张氏标定法中,用于标定的棋盘格是三维场景中的一个平面 Π Π ,其在成像平面的像是另一个平面 π π ,知道了两个平面的对应点的坐标,就可以求解得到两个平面的单应矩阵 H H 。其中,标定的棋盘格是特制的,其角点的坐标是已知的;图像中的角点,可以通过角点提取算法得到,这样就可以得到棋盘平面
和图像平面 π π 的单应矩阵 H H 。
通过上面的相机模型有:
其中 p p 是像点坐标, 是标定的棋盘坐标。 这样就可以得到下面的等式:
H H 表示的是成像平面和标定棋盘平面之间的单应矩阵。通过对应的点对解得 后,则可以通过上面的等式得到相机的内参数 K K ,以及外参旋转矩阵 和平移向量 t t 。
棋盘平面和成像平面间的单应
将一个平面映射到另一个平面,将棋盘格所在的平面映射到相机的成像平面,则有
p p 为棋盘格所成像的像点坐标, 棋盘格角点在世界坐标系的坐标。
设棋盘格所在的平面为世界坐标系中 Z=0 Z = 0 的平面,这样棋盘格的任一角点 P P 的世界坐标为
,根据小孔相机模型: