五分钟读完一篇文章之相机标定

相机标定(Camera Calibration)简单来说就是,求解世界坐标系->相机坐标系->图像(物理)坐标系->像素坐标系之间转换关系(参数)的过程。

为什么要进行相机标定?

先说结论:建立相机成像几何模型并矫正透镜畸变。

相机成像几何模型

计算机视觉的首要任务就是要通过拍摄到的图像信息获取到物体在真实三维世界里相对应的信息,于是,建立物体从三维世界映射到相机成像平面这一过程中的几何模型就显得尤为重要。

矫正镜头畸变

由于透镜的制造工艺,会使成像产生多种形式的畸变,为了去除畸变(使成像后的图像与理论上映射的图像保持一致),人们计算并利用畸变系数来矫正这种像差。(虽然理论上可以设计出不产生畸变的透镜,但实际上受限与制造工艺等因素,大部分镜头畸变还是需要使用算法层面进行解决)

四个主要的坐标系

坐标系名称 坐标系描述
世界坐标系(3D) 描述目标在真实世界中的位置(Xw,Yw,Zw)
相机坐标系(3D) 联系世界坐标系与图像坐标系,相机光轴为Z轴(Xc,Yc,Zc)
图像(物理)坐标系(2D) 相机坐标系经过透视投影转换到图像坐标系,单位为毫米,相机光轴与图像坐标系交点为坐标原点(x,y)
像素坐标系(2D) 图像坐标系中的中的单位距离(mm)转换为像素,左上角为坐标原点(u,v)

坐标变换基本流程
图 坐标变换基本流程

相机标定的结果
坐标变换矩阵
公式 坐标变换矩阵

1.外参(数)矩阵:世界坐标系上的点通过旋转和平移,转换到相机坐标系上的相应位置(刚性变换);

刚性变换
图 刚性变换

主要标定外参数:R(旋转矩阵) 、T(平移矩阵)。

2.内参(数)矩阵:相机坐标系上的点通过透视投影,转换到图像(物理)坐标系上的相应位置,进而电子化为相应的像素;
透视变换
图 透视变换

主要标定内参数:fx fy(单位距离像素个数)、 cx cy(图像坐标系原点在像素坐标系下的坐标)、s(尺度因子)。

3.镜头畸变:透镜制造精度(径向畸变,k1 k2 k3)、组装工艺(切向畸变,p1 p2)与线性畸变(“近大远小”)的偏差导致原始图像的失真(“图像”为什么没在理论位置,而在当前位置)。简单来说就是理想图像坐标系与实际图像坐标系之间的“差距”。

镜头畸变矫正

常见畸变类型
图 常见畸变类型

畸变校正公式
公式 畸变校正公式

如公式所示,我们一般使用多项式拟合畸变规律,并进行校正。切向畸变影响很小,一般情况下不考虑,所以我们一般只需要求出k1 k2 k3(有时k3也不考虑,使用k1 k2得出的校正效果也满足工程需要)。

常用相机标定方法

不考虑畸变的目标函数
公式 不考虑畸变的目标函数

考虑畸变的目标函数
公式 考虑畸变的目标函数

其中:n为图片数量,m为单张图片坐标点数。直接使用最优化方法计算,容易陷入局部最优(初始值不好的情况下更加容易)。张氏标定法的主要意义是通过数值解法解出了一个比较准确的初始值(如考虑畸变则包含畸变系数),然后通过目标函数使用最优化方法进行微调。

更加详细的内容请参考作者论文:Flexible Camera Calibration By Viewing a Plane From Unknown Orientations
链接:https://pan.baidu.com/s/1XlDrL-p5e7mUOlj__412Rw 提取码:0t7y

总结

我们可以使用OpenCV的cv2.calibrateCamera()函数进行相机标定。本文主要介绍一个相机标定的概念与简要流程,详细的相机标定过程请按照实际工程需要进行。

参考

1.https://zhuanlan.zhihu.com/p/24651968

猜你喜欢

转载自blog.csdn.net/weixin_41006390/article/details/105477966
今日推荐