基于单相机单投影仪的结构光系统的标定——相机标定
1、张标定算法内外参具体求解
知乎文章对该标定法和齐次坐标做了很详细的介绍。
2、张算法解释
对相机的标定仍然使用的是张正友的标定方法,棋盘格作为标定板,标定的工业相机参数为相机的内参矩阵,外参矩阵和镜面畸变系数。
内参矩阵的参数主要包括:一个像素的物理尺寸dx和dy;焦距f(fx=fy);图像物理坐标的扭曲因子r,一般默认为0;图像原点相对于光心成像点的纵横偏移量u和v(像素为单位)。
外参矩阵:世界坐标系转换到相机坐标系的旋转矩阵R和平移向量T。
畸变系数:包括相机的径向畸变系数k1,k2,k3,相机的切向畸变系数p1,p2。
对于张的相机标定原理这里不作详细的介绍,只给一张图说明几个坐标系之间的转换关系以及对应的转换矩阵
对于张的标定就是通过像素坐标系下的(u,v)坐标和世界坐标系下的(Xw,Yw,Zw)进行求解,将三个矩阵求出,即可求得我们所需要的内参矩阵和外参矩阵,这里不对求解过程作详细的介绍,因为这是属于数学的优化求解问题,但是需要清楚的是虽然只要已知2D和3D坐标就可以求解出这些参数,但是并不是直接将三个矩阵中的内外参数同时求出,而是将内参和外参单独求解的,由于求解过程中存在多处近似,然后对求解出的内参和外参构建最大似然估计函数,利用LM优化求解出最优的内外参矩阵。这里只对物理意义进行分析和解释。
首先(u,v)是什么?是相机拍到的标定板的图像中检测出的某一个角点的像素坐标。
(Xw,Yw,Zw)又是什么?是标定板上对应于(u,v)点在世界坐标系中的三维点坐标。在张的标定中,世界坐标的原点和xoy平面是在标定板上的,z轴垂直于标定板,所以将标定板上左上角角点作为世界坐标系的原点,标定板上的任意点的z值均为0,根据标定板上角点与角点之间的实际距离即可求得标定板上所有角点的世界坐标,即(x,y,0)。
3、相机外参的深层理解
世界坐标的原点和xoy平面是在标定板上的,z轴垂直于标定板。
在相机外参的旋转矩阵R的第三列n为该标定板平面的法向量,平移向量p可以定为标定板左上角角点的三维坐标。具体的分析如下:
平移向量是指相机坐标系与世界坐标系的平移变换,(tx,ty,tz)。
以相机坐标系原点(0,0,0)为参照点,则左上角角点就是(0,0,0)经过平移向量平移得到的,角点坐标为(X,Y,Z)。
(X,Y,Z)=(0,0,0)+(tx,ty,tz)=(tx,ty,tz) ,即平移向量可以看作左上角角点的三维坐标。
所以当xoy平面与标定板平面重合时,旋转矩阵的第三列就是标定板平面的法向量。
最后没有对畸变的标定进行说明,是因为畸变的标定比较简单,只是两个公式对5个参数的求解,如下:
透镜的畸变主要分为径向畸变和切向畸变(还有薄透镜畸变等等,但都没有径向和切向畸变影响显著,所以我们在这里只考虑径向和切向畸变)。
径向畸变是由于透镜形状的制造工艺导致。且越向透镜边缘移动径向畸变越严重。实际情况中我们常用r=0处的泰勒级数展开的前几项来近似描述径向畸变。矫正径向畸变前后的坐标关系为:
由此可知对于径向畸变,我们有3个畸变参数需要求解。
切向畸变是由于透镜和CMOS或者CCD的安装位置误差导致。切向畸变需要两个额外的畸变参数来描述,矫正前后的坐标关系为:
由此可知对于切向畸变,我们有2个畸变参数需要求解。
需要5个畸变参数(k1、k2、k3、p1和p2 )来描述透镜畸变。
具体的实现过程在另一篇相最详细、最完整的相机标定讲解机标定的博文里。