计算机视觉教程(第2版)
上QQ阅读APP看书,第一时间看更新

2.4 摄像机标定

成像模型建立了根据给定的世界坐标点WXYZ)计算它的图像平面坐标(xy)的表达式。实际中,摄像机采集到的图像是存储在计算机中的,以像素为单位表示的。这中间,不同摄像机的自身特点和摆放情况都对世界坐标点与计算机图像像素间的联系有决定作用。这些自身特点和摆放情况都可用一系列参数来描述。尽管这些参数可以通过对摄像机的直接测量得到,但用摄像机作为测量装置来确定它们通常更为方便。为此需要先知道一组基准点(它们在对应坐标系中的坐标都已知),借助这些已知点获取摄像机参数的计算过程常称为摄像机标定(也称为摄像机定标、校准或校正)。

2.4.1 标定程序和步骤

下面先介绍摄像机标定的一般程序和步骤。

1.标定程序

在2.2.1小节中讨论的几何成像模型中,重合模型是分离模型的一种特例。对分离模型的摄像机标定可讨论如下。参考式(2.2.23),令A = PRTA中的元素包括摄像机平移、旋转和投影参数,则有Ch= AWh。如果在齐次表达中令k = 1,可得到

基于对齐次坐标的讨论,笛卡儿形式的摄像机坐标(图像平面坐标)为

将以上两式代入式(2.4.1)并展开矩阵积得到

其中Ch3的展开式因其与z相关而略去。

Ch4代入式(2.4.4)中的前两个方程,可得到共有12个未知量的两个方程。

由此可见,一个标定程序应该包括:① 获得M ≥ 6个具有已知世界坐标(XiYiZi),i = 1,2,…,M的空间点(实际应用中常取25个以上的点,再借助最小二乘法拟合来减小误差);② 用摄像机在给定位置拍摄这些点以得到它们对应的图像平面坐标(xiyi),i = 1,2,…,M;③ 把这些坐标代入式(2.4.5)和式(2.4.6)以解出未知系数。

2.标定步骤

为实现上述的标定程序,需要获得具有对应关系的空间点和像点。为精确地确定这些点,需要利用标定靶,其上有固定的标记点(参考点)图案。最常用的标定靶上有一系列规则排列的正方形图案(类似国际象棋棋盘),这些正方形的顶点可作为标定的参考点。如果采用共平面参考点标定的算法,则标定靶对应一个平面;如果采用非共平面参考点标定的算法,则标定靶一般对应两个正交的平面。

前面讨论成像模型时,考虑的是从世界坐标系统到图像平面坐标系统的变换。实际进行摄像机标定时,需要建立的是从世界坐标系统到计算机图像坐标系统的联系。这时,除了要考虑世界坐标系统、摄像机坐标系统以及像平面坐标系统的不重合外,还有两个因素要考虑。一是摄像机镜头会有失真,所以在像平面上的成像位置会与用前述理想公式算出的透射投影结果有偏移。二是计算机中使用的图像坐标单位是存储器中离散像素的个数,所以对像平面上的坐标还需取整转换,且计算机图像坐标系统与像平面坐标系统也是不重合的。

从理论上讲,摄像机镜头会有两类失真,即径向失真和切向失真。实际机器视觉应用中只需考虑径向失真,且径向失真常与图像中一点与该点到镜头光轴点的距离成正比,所以需要引入一个镜头径向失真系数k。它帮助建立了(无失真)图像平面坐标系统xy′与失真图像平面坐标系统x*y*之间的联系。

计算机图像坐标系统MN也是一个笛卡尔坐标系统,其中MN对应计算机存储器中像素的行数和列数。该坐标系统的原点为(OmOn),它们分别为计算机存储器中心像素的行数和列数。根据传感器的工作原理,逐行扫描时由于图像获取硬件和摄像机扫描硬件间存在时间差或摄像机扫描本身时间上的不精确性而会引入某些不确定性因素。这些不确定性因素可通过引入一个不确定性图像尺度因子µ来描述。它帮助建立了失真图像平面坐标系统x*y*与计算机图像坐标系统MN之间的联系。

如果考虑到这些参数,从世界坐标系统到计算机图像坐标系统的成像变换共有4步,如图2.4.1所示。其中每步都有需标定的参数。

第1步:需标定的参数是旋转矩阵R和平移矢量T

第2步:需标定的参数是焦距λ

第3步:需标定的参数是镜头径向失真系数k

第4步:需标定的参数是不确定性图像尺度因子µ

图2.4.1 从3-D世界坐标到计算机图像坐标的4步变换和需标定的参数

图2.4.1所示的变换中需标定的参数可分成外部参数和内部参数两类。

(1)外部参数(在摄像机外部)

图2.4.1中的第1步是从3-D世界坐标系统变换到其中心在摄像机光学中心的3-D坐标系统,其变换参数称为外部参数,即摄像机姿态参数。旋转矩阵R一共有9个元素,但实际上只有3个自由度,可借助刚体转动的3个欧拉角来表示。如图2.4.2所示(这里视线逆X轴),其中XY平面和xy平面的交线AB称为节线,ABx轴间的夹角 θ 是一个欧拉角,称为自转角(也称为偏转角 yaw),这是绕 z 轴旋转的角;ABX轴间的夹角 ψ 是另一个欧拉角,称为进动角(也称为倾斜角tilt),这是绕Z轴旋转的角;Zz轴间的夹角φ是第3个欧拉角,称为章动角(也称为俯仰角pitch/slant),这是绕节线旋转的角。

图2.4.2 欧拉角示意图

利用欧拉角可将旋转矩阵表示成θφψ 的函数:

这样共有6个独立的外部参数,即R中的3个欧拉角θφψT中的3个元素TxTyTz

(2)内部参数(在摄像机内部)

图2.4.1中的后3步是从摄像机坐标系统中的3-D坐标变换到计算机图像坐标系统中的2-D坐标,其变换参数称为内部参数,即摄像机自身参数。这里一共有 5 个内部参数:焦距 λ,镜头失真系数k,不确定性图像尺度因子µ,图像平面原点的计算机图像坐标OmOn

区分外部参数和内部参数的主要意义:当用一个摄像机在不同位置和方向获取多幅图像时,各幅图像所对应的摄像机外部参数可能是不同的,但内部参数不会变化,所以移动摄像机后只需重新标定外部参数而不必再标定内部参数。

例2.4.1 摄像机标定中的内外参数

摄像机标定就是要将摄像机的坐标系统与世界坐标系统对齐。从这个观点出发,另一种描述摄像机标定中内外参数的方式如下。将一个完整的摄像机标定变换矩阵 C 分解为内部参数矩阵Ci和外部参数矩阵Ce的乘积:

Ci在通用情况下是一个4×4的矩阵,但一般可简化成一个3×3的矩阵:

其中sxsy分别是沿XY轴的缩放系数,pxpy分别是沿XY轴的偏斜系数(源自实际摄像机光轴的非严格正交性,反映在图像上就是像素的行和列之间没有形成严格的90°),txty分别是沿XY轴的平移系数(帮助将摄像机的投影中心移到合适的位置),λ是镜头的焦距。

Ce的通用形式也是一个4×4的矩阵,可写成:

其中,R1R2R3分别是3×3旋转矩阵(只有3个自由度)的3行矢量,而T是3-D的平移矢量。

由上可见Ci有6个内部参数而Ce有6个外部参数。但注意到两个矩阵都有旋转参数,所以可将内部矩阵的旋转参数归入外部矩阵。因为旋转是缩放和偏斜的组合,将旋转从内部矩阵中除去后,pxpy就相同了(px= py= p),所以内部矩阵中只有5个参数,即sxsyptxty。这样一来,一共有11个校正参数,与其他方法一致。在特殊情况下,如果摄像机很精确,则p = 0,且sx= sy,此时内部参数只有3个。进一步,如果将摄像机对齐,则tx= ty= 0。这样就剩1个内部参数,即s = sx= sy,或

2.4.2 两级标定法

根据前面的讨论,可采用两级的方法对摄像机进行标定(先外部参数,后内部参数)[Tsai 1987]。该方法已广泛应用于工业视觉系统,对3-D测量的精度最好可达1/4000。标定可分为两种情况。如果µ已知,标定时只需用一幅含有一组共面基准点的图像即可。此时第1步计算RTxTy,第2步计算λkTz。这里因为k是镜头的径向失真,所以对R的计算可不考虑k。同样,对TxTy的计算也可不考虑k,但对Tz的计算需考虑kTz变化带来的对图像的影响与k的影响类似),所以放在第2步。另外如果 µ 未知,标定时需用一幅含有一组不共面基准点的图像。此时第1步计算RTxTy以及 µ,第2步仍计算λkTz

下面讨论具体的标定方法。先计算一组参数sii = 1,2,3,4,5),或s = [s1s2s3s4s5]T,借助这组参数可进一步算出摄像机的外部参数。设给定M个(M ≥ 5)已知其世界坐标(XiYiZi)和它们对应的图像平面坐标(xiyi)的点,i = 1,2,…,M,可构建一个矩阵A,其中的行ai可表示如下:

再设si与旋转参数r1r2r4r5和平移参数TxTy有如下的联系:

设矢量u = [x1x2xM]T,则由线性方程组

可解出s。然后可根据下列步骤计算各个旋转和平移参数。

(1)设,计算

(2)设,即取正的平方根,计算

(3)选一个世界坐标为(XYZ)的点,要求其图像平面坐标(xy)离图像中心较远,计算

这相当于将算出的旋转参数应用于点(XYZ)的XY。如果pXx的符号一致,且pYy的符号一致,则说明Ty已有正确的符号,否则对Ty取负。

(4)如下计算其他旋转参数:

如果r1r4+r2r5的符号为正,则r6要取负,而r7r8的符号要在计算完焦距λ后调整。

(5)建立另一组线性方程来计算焦距λz方向的平移参数Tz。可先构建一个矩阵B,其中的行bi可表示为

式中,└·┘表示向下取整。

设矢量v的行vi可表示为

则由线性方程组

可解出t = [λ Tz]T。注意这里得到的仅是对t的估计。

(6)如果λ < 0,要使用右手坐标系统,需将r3r6r7r8λTz取负。

(7)利用对t的估计来计算镜头的径向失真k,并改进对λTz的取值。这里使用参考文献[Tsai 1987]给出的失真模型。利用包含失真的透视投影方程,可得到如下非线性方程。

用非线性回归方法解出上述方程即可得到k,λTz的值。

例2.4.2 摄像机外部参数的标定示例

表2.4.1所示为5个已知其世界坐标和它们对应的图像平面坐标的基准点。

表2.4.1 5个基准点的坐标

图 2.4.3(a)所示为上述 5 个基准点在世界坐标系里的位置,它们在图像平面坐标系里的位置如图2.4.3(b)所示。

图2.4.3 5个基准点在世界坐标系和图像平面坐标系里的位置

由表2.4.1所示的数据和式(2.4.8),可得到矩阵A和矢量u如下。

由式(2.4.10)可得

其他计算步骤分别如下。

(1)因为,所以由式(2.4.11)得

(2)取Ty= 5,分别得到r1= s1Ty= -0.87,r2= s2Ty= 0,r4= s3Ty= 0,r5= s4Ty= -1.0,Tx= s5Ty= 4.33。

(3)选取与图像中心距离最远的、世界坐标为(10.0,7.5,0.0)的点,其图像平面坐标为(1.73,1.0),计算得到pX= r1X + r2Y + Tx= -4.33,pY= r4X + r5Y + Ty= -2.5。

由于pXpY的符号与xy的符号不一致,因此对Ty取负,再回到步骤(2),得到r1= s1Ty= 0.87,r2= s2Ty= 0,r4= s3Ty= 0,r5= s4Ty= 1.0,r2= s2Ty= 0,Tx= s5Ty= -4.33。

(4)继续计算其他参数,可得到。因为r1r4+ r2r5= 0,不为正,所以r6不需取负。

(5)建立第2组线性方程,由式(2.4.16)和式(2.4.17)得到以下矩阵和矢量。

解线性方程组,由式(2.4.18),得t = [λ Tz]T= [-1.0 -7.5]T

(6)由于λ 为负,表明不是右手坐标系统,为反转Z坐标轴,需将r3r6r7r8λTZ取负,最后得到λ = 1,以及如下结果。

(7)本例没有考虑镜头的径向失真k,所以上述结果即为最终结果。