张正友相机标定方法理解

想要实现简单的人头姿势估计就要先完成相机标定、人脸对齐、人脸建模等等步骤,至于为什么到最后用到的时候就明白了。首先,对前面三个步骤的原理和实现各个击破。

相机标定

相机标定的目的是建立相机成像几何模型并矫正透镜畸变。
建立相机成像几何模型:相机把三维现实场景转换为二维图像的过程损失了很多信息, 因此该过程的函数是不可逆的。相机标定的目标是找一个合适的数学模型来表达复杂的成像 过程,求出该模型的参数,建立物体从三维世界到成像平面上各坐标点的对应关系,找到三 维到二维的过程函数的反函数,该过程如下图所示;从而使得标定之后的相机可以进行三维 场景的重建。必须明确,相机标定得到的内参仅仅是对相机物理特性的近似。
矫正透镜畸变:由于小孔成像的方式只有小孔部分能透过光线,导致物体的成像亮度很 低,人们采用透镜来解决亮度问题;但又由于透镜的制造工艺,会使成像产生多种形式的畸 变,于是为了去除畸变(使成像后的图像与真实世界的景象保持一致),人们计算并利用畸 变系数来矫正这种像差。
这里用的是经典的张正友相机标定方法,也是OpenCV和MATLAB实现相机标定的基础。

相机标定的目的:求相机的内、外参数以及畸变参数畸变参数进行畸变矫正,生成校正后的图像;内外参数一般进行图像三维场景重构;内部参数:有一个参数矩阵(fx,fy,cx,cy)和一个畸变系数(三个径向k1,k2,k3;两个切向p1,p2);内部参数是唯一的,就是一部相机只有一组内部参数。外部参数: 摄像机在世界坐标系中的位姿,由摄像机与世界坐标系的相对位姿关系决定。其参数有:旋转向量R(大小为1x3的矢量或旋转矩阵3x3)和平移向量T(Tx,Ty,Tz);对不同的标定图,外部参数也是不同的,就是外部参数不唯一,你拿了多少不同的图去标定就会有多少不同的外部参数。

网上有很多关于张正友相机标定方法的详解,可以自己搜一下。我觉得主要要理解的地方就是相机模型是如何建立和推导的、几个坐标系之间的变换、其中的参数是怎么求解的(有哪些约束条件、为什么至少需要多少个角度多少张图片、单应矩阵的维度和自由度等等)。这里分享几个我记下来的:
1、论文:链接:https://pan.baidu.com/s/1itP6_KBgFSBkU9vVIaekhg 提取码:jeax
中英文版本的张正友相机标定方法论文都在里面,还有后面用到的3DMM的论文。
2、要对相机的成像原理进行建模,就要先对复杂的透镜成像进行简化,简化成针孔相机模型的推导过程如下:https://www.cnblogs.com/vranger/p/9380499.html
3、从零开始学:https://blog.csdn.net/xiangzi1hao/article/details/89371999 理论篇,这篇博文下面相关链接还有二~五,后面比较详细地讲到了优化算法的部分。
4、相机模型和约束条件那块都用到了齐次坐标系:https://zhuanlan.zhihu.com/p/24651968
5、一篇比较具体的实现:
https://blog.csdn.net/u010925447/article/details/77997735

要先理解原理再尝试动手实践这样可以理解的比较好。网上看到一个相机标定的步骤流程图,觉得很不错:
张正友相机标定方法理解_第1张图片

你可能感兴趣的:(相机标定)