https://blog.youkuaiyun.com/xuelabizp/article/details/50314633(该作者很慷慨的分享了代码)
多图与公式直接摘录自以上博客
参考:学习Opencv 中文版 清华大学出版社
相机标定的作用:
传统相机标定假设相机是小孔成像模型,一般使用两种畸变来模拟镜片的物理畸变。但实际相机的物理特性很可能没办法通过上述假设来得到完全的拟合。所以需要意识到,每一次相机标定仅仅只是对物理相机模型的一次近似,再具体一点来说,每一次标定仅仅是对相机物理模型在采样空间范围内的一次近似。所以当你成像物体所在的空间跟相机标定时的采样空间不一样的时候,你可能永远都没办法得到足够的精度,当你大幅改变相机与成像物体的距离的时候,你最好重新标定相机。如果你想在一个空间里得到更高的精度,你可以在空间里分层多次标定,实际计算的时候通过其他方式得到成像距离,从而选择合适的标定参数。
摄像机标定的重要性还在于它是摄像机测量与真实三维世界的联系桥梁,场景不仅仅是三维的,也是用物理单位度量的空间。因此,摄像机的自然单位(像素)和物理世界的单位(米)的关系对三维场景的重构至关重要。摄像机的标定的过程既给出了摄像机的几何模型,也给出了透镜的即便模型。这两个模型定义了摄像机的内参数。
以下摘自百度百科解释:
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。
单双目摄像机标定参数说明:
复制过来有点瑕疵,建议各位读者本部分移歩原作;
1.针孔摄像机模型
在介绍摄像机标定参数之前,需要先简单说一下针孔摄像机的原理。投影平面到小孔的距离为焦距f,物体到小孔的距离为Z,其中物体和投影是倒立相似的关系,下图为针孔摄像机的投影示意图:
如果按照实际的投影关系建立坐标系,那么投影坐标和物体坐标的符号总是相反的,考虑起来不太方便,于是在“数学上”把投影平面平移到其关于小孔对称的位置,这样投影坐标和物体坐标符号就相同了,示意图如下:
根据三角形相似的原理,可以列出如下等式:
fZ=l投影l物体fZ=l投影l物体
2.摄像机中的坐标系
摄像机中的坐标系有4个,均为右手坐标系,分别记为{world},{camera},{picture},{pixel},下图所示列出了{camera},{picture}和{pixel}坐标系:
{world},{camera},{picture}和{pixel}坐标系的坐标用下标来区分,分别是W,c,p,pix
- {world},{camera},{picture}坐标系单位为长度,一般为mm;{pixel}坐标系单位为像素,一般为pix
- {world}坐标系为世界坐标系,可以任意指定,其他坐标系都有明确的定义
- {camera}坐标系为摄像机坐标系,原点在小孔的位置,z轴与光轴重合,Xc轴和Yc轴分别和投影面两边平行
- {picture}坐标系为图像坐标系,光轴和投影面的交点为原点,Xp轴和Yp轴分别和投影面两边平行
- {pixel}坐标系为像素坐标系,从小孔向投影面方向看,投影面的左上角为原点Opix,Xpix轴和Ypix轴和投影面两边重合
3.各个坐标系的坐标转换
3.1{world}到{camera}
设某点在{world}坐标系中的坐标为 PW=[xW,yW,zW,]T PW=[xW,yW,zW,]T,该点在{camera}坐标系中的坐标为Pc=[xc,yc,zc,]TPc=[xc,yc,zc,]T,则有
其中R是正交旋转矩阵:
T是平移矩阵: