张正友相机标定实例
相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。
相机标定的输入:标定图像上所有内角点的图像坐标,标定板图像上所有内角点的空间三维坐标(一般情况下假定图像位于Z=0平面上)。
相机标定的输出:摄像机的内参、外参系数
流程
1. 准备标定图片
2. 对每一张标定图片,提取角点信息
3. 对每一张标定图片,进一步提取亚像素角点信息
4. 在棋盘标定图上绘制找到的内角点(非必须,仅为了显示)
5. 相机标定
6. 对标定结果进行评价
7. 查看标定效果——利用标定结果对棋盘图进行矫正
标定图片需要使用标定板在不同位置、不同角度、不同姿态下拍摄,最少需要3张,以10~20张为宜。标定板需要是黑白相间的矩形构成的棋盘图,制作精度要求较高,如下图所示:
在张氏标定法中,用于标定的棋盘格是三维场景中的一个平面II,其在成像平面的像是另一个平面π,知道了两个平面的对应点的坐标,就可以求解得到两个平面的单应矩阵H。其中,标定的棋盘格是特制的,其角点的坐标是已知的;图像中的角点,可以通过角点提取算法得到,这样就可以得到棋盘平面II和图像平面π的单应矩阵H。
通过上面的相机模型有:
其中p是像点坐标,P是标定的棋盘坐标。 这样就可以得到下面的等式:
H表示的是成像平面和标定棋盘平面之间的单应矩阵。通过对应的点对解得H后,则可以通过上面的等式得到相机的内参数K,以及外参旋转矩阵R和平移向量t。
棋盘平面和成像平面间的单应
将一个平面映射到另一个平面,将棋盘格所在的平面映射到相机的成像平面,则有
p为棋盘格所成像的像点坐标,P棋盘格角点在世界坐标系的坐标。
设棋盘格所在的平面为世界坐标系中Z=0的平面,这样棋盘格的任一角点P的世界坐标为(X,Y,0),根据小孔相机模型:
、
根据平面间的单应性,有
将上面两个等式进行整合,则可以得到单应矩阵H和相机矩阵(包含内参和外参)的相等,如下:
这样就可以使用棋盘平面和成像平面间的单应矩阵来约束相机的内参和外参。单应矩阵H可以通过棋盘平和成像平面上对应的点计算出来。
内参的约束条件
通过平面间的单应,可以得到如下的等式
将旋转矩阵R的各个列向量和平移向量t使用H的列向量表示,
又由于,R是旋转矩阵,则其是正交矩阵,也就是其任意两个列向量的内积为0,列向量的模为1。故有:
则对于一幅棋盘标定版的图像(一个单应矩阵)可以获得两个对内参数的约束等式:
求解内参数
通过一幅标定板的图像可以的得到关于内参数的两个等式,令
注意,矩阵B是一个对称矩阵,其未知量只有6个,将6个未知量写为向量的形式
令hi为单应矩阵H的第i个行向量,则有
故:
有了上边的等式,再来看从一幅标定板图像得到的等式