最近做项目要用到标定,因为是小白,很多东西都不懂,于是查了一堆的博客,但没有一个博客能让我完全能看明白整个过程,绝大多数都讲的不全面,因此自己总结了一篇博客,给自己理一下思路,也能够帮助大家。(张正友标定的详细求解还未完全搞明白,后面再加) 参考博客: 相机标定内容详解 (转载自祥的博客) 张正友标定介绍 [图像]摄像机标定(2) 张正友标定推导详解 MATLAB–相机标定教程 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数(内参、外参、畸变参数)的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。 畸变(distortion)是对直线投影(rectilinear projection)的一种偏移。简单来说直线投影是场景内的一条直线投影到图片上也保持为一条直线。畸变简单来说就是一条直线投影到图片上不能保持为一条直线了,这是一种光学畸变(optical aberration),可能由于摄像机镜头的原因。 相机的畸变和内参是相机本身的固有特性,标定一次即可一直使用。但由于相机本身并非理想的小孔成像模型以及计算误差,采用不同的图片进行标定时得到的结果都有差异。一般重投影误差很小的话,标定结果均可用。 坐标转换基础在视觉测量中,需要进行的一个重要预备工作是定义四个坐标系的意义,即 摄像机坐标系 、 图像物理坐标系、图像像素坐标系 和 世界坐标系(参考坐标系) 。 一、图像坐标系(x,y)至像素坐标系(u,v)1.两坐标轴互相垂直此时有 2.一般情况,两轴不互相垂直 此时有 写成矩阵形式为: 二、相机坐标系(Xc,Yc,Zc)至图像坐标系(x,y)(根据小孔成像原理,图像坐标系应在相机坐标系的另一边,为倒立反向成像,但为方便理解和计算,故投影至同侧。) 根据三角形相似性原理得: 三、世界坐标系(Xw,Yw,Zw)至相机坐标系(Xc,Yc,Zc)###四、合并公式
畸变畸变一般可以分为:径向畸变、切向畸变
畸变还有其他类型的畸变,但是没有径向畸变、切向畸变显著,所以忽略不计。 径向畸变(桶形畸变和枕形畸变): 对于径向畸变,成像仪中心(光学中心)的畸变为0,随着向边缘移动,畸变越来越严重。 切向畸变(薄透镜畸变和离心畸变): 切向畸变是由于透镜制造上的缺陷使得透镜本身与图像平面不平行而产生的。 切向畸变可以通过如下公式来矫正:
opencv畸变模型径向畸变模型: xc= xd (1+k1r^2 +k2r^4 +k3r^6+⋯) 切向畸变模型: xc= 2p1xdyd+p2 (r^2 +2xd^2 ) 可得: xc= xd (1+k1r^2 +k2r^4 )+2p1xdyd+p2 (r^2 +2xd^2 ) xd,yd为图像中的点(存在畸变),xc,yc是畸变校正后的点。 标定方法1、传统相机标定最简单的相机标定为线性标定,即不考虑相机的畸变而只考虑空间坐标转换。 2、非线性标定当镜头畸变明显时必须考虑畸变,一般较为便宜的网络摄像头畸变特别大,而价格较贵的工业摄像头则畸变很小,因为其中已经嵌入了许多消除畸变的程序。这时线性模型转化为非线性模型,需要通过非线性标定方法求解。有最速下降法,遗传算法,高斯牛顿法和神经网络算法等。 3、张正友标定介绍(张正友标定只考虑了径向畸变,没有考虑切向畸变) 由上面的坐标转换可得:
H为3x3矩阵,并且有一个元素作为齐次坐标,则有8个未知元素,一组坐标对应两个方程,则至少需要四组对应的点即可算出单应性矩阵H。 矩阵A包含5个元素,需要3组H方可解出A的唯一封闭解,因此在标定时需拍摄3组以上的图片。由A可计算出相应的外参矩阵。在上述计算中,忽略了相机畸变的影响。对内外参应用最小二乘方法估计实际存在的径向畸变的畸变系数(忽略切向畸变),最后通过极大似然法进行优化,得到精度较高的解。 标定过程相机标定步骤:
Matlab工具箱标定:1、应用程序中找到Camera Calibration 2、添加标定板拍摄图片(按Ctrl可一次添加多张) 3、输入棋盘格每格的尺寸大小 4、显示已检测出的棋盘格,点击Calibration,开始标定。 5、得到标定结果(平均误差小于0.5即可认为结果可靠,这个地方我还不是很清楚) 6、可查看标定结果和程序 opencv标定1、循环读取图片 标定结果:matlab标定的内参经过转置与VS标定的内参基本一致。 ps:如上图opencv标定结果中内参矩阵里的2168和2174并不是焦距,而是焦距/每个像素大小,否则数量级不会这么大,焦距一般只有几毫米或几十毫米。刚看到国内的硕士论文里有人写错了。 |
|
来自: 昵称67837330 > 《机器视觉》