(转)相机标定原理(无代码)
最近新接触到机器视觉方面,涉及到相机标定的问题,发现了一篇较为不错的讲解文章,于是自己也试着整理,以供后面自己翻阅使用。
参考博客
最详细、最完整的相机标定详解
什么是相机标定
相机标定就是通过确立空间中的物体点的三维坐标与图像中对应点的像素坐标之间的相互关系,建立而成的相机成像模型。标定得到的参数分为内参(f/vo/uo)和外参(R/T)。
图像畸变简单理解是指一条直线投影到图像上不能保持仍为一条直线,通常是由于镜头或者安装导致的。
坐标转换基础
在视觉测量中,需要进行的一个重要预备工作是定义四个坐标系的意义,即 摄像机坐标系 、 图像物理坐标系、 像素坐标系 和 世界坐标系(参考坐标系) 。
- 世界坐标系(Xw,Yw,Zw)到相机坐标系(Xc,Yc,Zc)
- 相机坐标系(Xc,Yc,Zc)到图像坐标系(x,y)
依据三角形相似原理可得
- 图像坐标系(x,y)到像素坐标系(u,v)
(此处只讨论垂直情况,不垂直情况可去原博客中查看学习)可以得到
合并后可以得到
畸变
畸变主要有径向畸变(枕形畸变)和切向畸变(离心畸变)
径向畸变来自于透镜形状。
切向畸变来自于整个摄像机的组装过程。
径向畸变
实际摄像机的透镜总是在成像仪的边缘产生显著的畸变,这种现象来源于“筒形”或“鱼眼”的影响。
如下图,光线在原理透镜中心的地方比靠近中心的地方更加弯曲。对于常用的普通透镜来说,这种现象更加严重。筒形畸变在便宜的网络摄像机中非常厉害,但在高端摄像机中不明显,因为这些透镜系统做了很多消除径向畸变的工作。
对于径向畸变,成像仪中心(光学中心)的畸变为0,随着向边缘移动,畸变越来越严重。
对于径向畸变可以通过下面的泰勒级数展开式进行校正:
这里的x、y是图像中的畸变后的位置坐标,通过校正得到真实坐标。r是该点距成像中心的距离。
切向畸变
切向畸变是由于透镜制造上的缺陷使得透镜本身与图像平面不平行而产生的。
切向畸变可以通过如下公式来矫正:
这里的x、y是图像中的畸变后的位置坐标,通过校正得到真实坐标。r是该点距成像中心的距离。
(更为详细的OpenCV、MATLAB等库的模型可在原链接中查阅)