在去除畸变的情况下,相机标定就是求intrinsic matrix——K,因为3D点可以用(X,Y,Z,1)表示,2D点可以用(X,Y,1)来表示,因此3*3的矩阵K就包含了全部相机模型的内部参数(intrinsic matrix),K[R|t]就是三维点到二维点的线性变化关系(R是3-by-3 Rotation,t是translation,如果以其中一个相机C0为Reference Camera,那么R=eyes(3),t=[0,0,0]',其他的R和t都是关于C0的R和t)。
在去除畸变的理想情况下,K的参数可以一一对应到针孔相机的焦距f,offset (x0,y0)以及skew s四个参数上,具体关系为K=[fx,s,x0;0,fy,y0;0,0,1]。理想情况的针孔相机,fx=fy,但是在大部分实测情况下,fx和fy之间仍然会有误差。
理想状态下,Zhang's method的二维标定板的摆放不影响标定结果。但考虑到三维点实际投射到相机sensor上的误差符合Gaussian distribution,因此尽量把所有网格包含在图像内,不要角度过于偏,过于远乃至偏到了toolbox无法精确提取calibration board的边界即可。
畸变模型可以是高阶线性甚至非线性的,通常相机厂商已经内置了去畸变的方法,输出的图像很精准了,当然如果有再次去畸变的要求可以阅读相关论文,反正我最高也只实现过三次线性畸变移除。
20张当然不是定数,但理论上张数越多,normalize之后解中间那个矩阵误差越小,上课时老师讲过误差分析,具体的我一时想不起来,Berkeley的课件上应该有。
当然也有三维的标定方法(拿一组三维的,互成90度的黑白格放在一起,并提取其中若干点),一维的标定(也是张正友提出的方法,在一根木棒上标定若干点,然后把一端放在桌子上,另一端做圆锥形运动,拍下若干张。这也是我上这门课的final project)等等等等。总之都是用几何关系尽可能地找到K。