张正友相机标定法
文章目录
1、实验需求
1.制作棋盘格(每个格子的大小可测量),最好是打印出来,贴在平面上(实在不行就用我刚才演示的黑白棋盘格方法)
2.根据棋盘格,采集10-20张图片,提取角点
3.解算出内外参数,内参截图放在博客中,外部参数最好能可视化
2、语言和平台
语言:python2.7.13 (anaconda2)
平台:pycharm 2018.2
3、拍摄设备
小米6 6G 128G
4、基本原理
1、畸变
相机标定指建立相机图像像素位置与场景点位置之间的关系,根据相机成像模型,由特征点在图像中坐标与世界坐标的对应关系,求解相机模型的参数。相机需要标定的模型参数包括内部参数和外部参数。我们相机拍摄照片是将3维世界中的图像通过相机的转化为2维的图像。在世界坐标中的一条直线上的点在相机上只呈现出了一个点,实际中,镜头并非理想的透视成像,带有不同程度的畸变。
常见的畸变如下
2、模型求解
(该次实验涉及到的公式较多,因此这次实验采用截图的方式)
方程和约束
2D 图像点: m = [ u , v ] T m=[u,v]^T m=[u,v]T
3D 空间点: M = [ X , Y , Z ] T M=[X,Y,Z]^T M=[X,Y,Z]T
齐次坐标:
描述空间坐标到图像坐标的映射
s: 世界坐标系到图像坐标系的尺度因子
K: 相机内参矩阵
(u0,v0): 像主点坐标
α, β: 焦距与像素横纵比的融合
γ: 径向畸变参数
不妨设棋盘格位于Z = 0
定义旋转矩阵R的第i列为 ri, 则有:
于是空间到图像的映射可改为:
其中H是描述Homographic矩阵,可通过最小二乘 ,从角点世界坐标到图像坐标的关系求解
令 H 为 H = [h1 h2 h3]
Homography 有 8 个自由度(其中,H为一个3*3的矩阵,并且有一个元素作为齐次坐标),通过上述等式的矩阵运算,根据r1和r2正交,以及 归一化的约束可以得到如下等式:
校正过程
根据上面两个约束条件,可得:
即每个单应性矩阵能提供两个方程,而内参数矩阵包含5个参数,要求解,至少需要3个单应性矩阵。为了得到三个不同的单应性矩阵,我们使用至少三幅棋盘格平面的图片进行标定。通过改变相机与标定板之间的相对位置来得到三个不同的图片。为了方便计算,定义如下:
B 是对称阵,其未知量可表示为6D 向量 b
b = [ b 11 b 12 b 22 b 13 b 23 b 33 ] T b=[b_{11} b_{12} b_{22} b_{13} b_{23} b_{33}]^T b=