计算机视觉——相机标定
文章目录
-
-
一、相机标定目的及目标
-
- 1、为什么要进行相机标定
- 2、目标
-
二、相机标定原理
-
- 1、关于坐标系
-
- 1.1四个坐标系
-
1.2坐标系转换
- 2、内参矩阵与外参矩阵
-
- 2.1内参矩阵
-
2.2外参矩阵
- 3、畸变
-
- 3.1径向畸变
-
4.2切向畸变
- 4、标定方法
-
- 4.1 线性标定
-
- 4.1.1 原理
- 4.1.2优缺点
-
4.2 非线性标定
-
4.3 张正友标定
-
- 4.3.1 标定原理
- 4.3.2 优缺点
-
三、术语
-
四、实验步骤
-
五、实验操作
-
- 1、实验环境及配置
- 2. 数据集
- 3、实验操作
-
六、实验结果
-
七、总结
-
一、相机标定目的及目标
1、为什么要进行相机标定
在生产前完成相机标定过程对于消除因成像过程中产生的桶形和枕状变形至关重要;不同类型的镜头组件由于制造工艺的不同,在生产或组装过程中所引起的畸变程度也有所差异;利用相机标定技术能够有效消除镜头组件在制造或组装过程中所带来的成像失真问题;通过软件算法对图像进行校正处理从而确保最终输出的图片质量得到显著提升;

2、目标
相机标定的核心目标是建立一个合适的数学模型,并确定该数学模型的具体参数。通过这一过程实现对三维到二维映射关系的近似;从而使得该映射关系具备反函数特性。这一逼近过程被称为相机标定;通过简单的数学模型模拟复杂的成像机制,并求解成像系统的逆变换关系。经过标定后的相机系统能够实现空间深度感知功能,在计算机视觉领域占据重要地位

二、相机标定原理
1、关于坐标系
1.1四个坐标系
世界坐标系:
以米为单位的三维直角坐标系统也被称作测量坐标系,在该系统下可对相机及其待测物体的空间位置进行描述。基于该系统可以对相机及其待测物体的空间位置进行描述。其单位为米。
相机坐标系:
基于镜头成像原理,在照相机内部显示世界坐标,则构成一个三维坐标系。
以光心为坐标系的原点,并采用米作为单位长度。
图像平面坐标系:
将相机输出的三维坐标数据投影至屏幕上,并构建一个新的平面坐标系(不包含高程信息),其原点位于成像平面中心位置,并以毫米为单位表示。
像素坐标系:
通过离散采样获取投影图像的坐标点形成一种图片。这种图片是一个二维坐标系,其原点位于图像左上角,单位为px。
1.2坐标系转换
①世界坐标(Xw,Yw,Zw)- >相机坐标(Xc,Yc,Zc)

②将相机坐标(Xc, Yc, Zc)转换为图像平面坐标系(x, y)
基于小孔成像理论的基础之上,我们建立了如下的针孔相机模型。

由上图模型,

③图像平面坐标(x,y)- >像素坐标(u,v)

u0,v0是图像平面中心(像主点)
总结四个坐标系之间存在着下述关系:


2、内参矩阵与外参矩阵
由以上坐标系间转换关系,可得出
2.1内参矩阵
表示空间中一点到像平面一点坐标的映射

2.2外参矩阵
表示空间坐标系到相机坐标系的映射关系

3、畸变
3.1径向畸变
沿着透镜半径方向分布的光程梯度现象称为径向畸变...其成因是光线在镜头中心区域的路径比周边区域更为曲折...对于普通镜头尤其是成本较低的产品而言...常见的类型包括桶形和 barrel 畸变更以及枕形或 shake 畸变更...图示部分展示了两种典型形态: barrel 畸变更与 shake 畸变更

在实际应用中, 通常情况下, r=0处的泰勒展开式前几项被用来近似描述径向畸变;用于建立径向畸变前后坐标之间的关系

4.2切向畸变
切向畸变通常是由于透镜本身与相机传感器平面(像平面)或图像平面之间存在不平行现象所导致的现象。这种不平行通常是由镜头粘贴至镜头模块时造成的安装偏差所引起的。为了描述这种现象的复杂性以及其对图像质量的影响程度,在数学模型中我们通常会引入两个额外参数p₁和p₂来进行建模:

其中,

4、标定方法
4.1 线性标定
4.1.1 原理
基于最小二乘法建立超定方程模型中内参数包含五个未知量外参数包括平移向量和旋转矩阵各三个分量总计有11个待估计参数通常情况下需要至少6组对应点来进行解算每组特征点可提供两个独立的观测方程通过引入过参数化的方法以求解相机标定参数
4.1.2优缺点
优点 :
- 相机参数被整合到一个矩阵中,从而方便地进行计算
- 利用矩阵能够清晰地表达三维空间中的点与二维图像平面之间的投影关系
缺点 :
- 难以确切获取详细的内参数和外参数
- 求解得到的11个未知量数量上超过了标定参数的数量(9个),可能存在部分参数之间存在依赖关系的问题
4.2 非线性标定
主要采用的方法包括:首先通过随机设定变化参数的初始值;然后利用优化标定参数矩阵M的似然函数来确定最优参数值;最后选择合适的优化算法以实现目标函数的最大化求解。其中常用的优化方法包括梯度下降法、牛顿法以及高斯-牛顿法等。
4.3 张正友标定
4.3.1 标定原理
计算单应性矩阵H
单应性:在计算机视觉中被定义为一个平面到另一个平面的投影映射。首先确定,图像平面与标定物棋盘格平面的单应性。
设三维世界坐标的点为X=[X,Y,Z,1]T,,二维相机平面像素坐标为m=[u,v,1]T,所以标定用的棋盘格平面到图像平面的单应性关系为:s0m=K[R|T]X (其中,K为相机的内参矩阵,R为外部参数矩阵(旋转矩阵),T为平移向量。令

,设棋盘格位于Z=0的平面,定义旋转矩阵R的第i列为 ri, 则有:

通过以下公式可以将空间中的点映射至图像中:H = λK [r1 r2 t] ,其中H代表的是成像平面与标定棋盘平面之间的单应关系,并且该矩阵可以通过最小二乘法基于角点的世界坐标与其在图像上的投影坐标来估计。
确定内参数矩阵

也就是说,每一个单应性矩阵都能够提供两个方程,而内参数矩阵则包含五个参数,从而解之,至少需要三个单应性矩阵才能建立足够的方程组求解内参数. 为了获取三个不同的单应性矩阵,我们采用三幅或更多棋盘格平面图像进行标定. 通过改变相机与标定板之间的相对位置以便获得三副不同角度的图像. 便于后续计算处理,我们定义:

B 中的未知量可表示为6D 向量 b

,
设H中的第i列为 hi,

,根据b的定义,可以推导出公式

,

,最后推到出

由上述公式可得,在观测平面n满足n≥3时(即至少需要3幅棋盘格图像来获取),我们可以解得变量b具有唯一解,并进而确定相机的内参数矩阵K
计算外参数矩阵
外部参数可通过Homography求解,由 H = [h1 h2 h3] = λA[r1 r2 t] ,可推出

最大似然估计
这一部分的推导结果建立在理论环境下。然而,在实际应用中可能存在潜在影响因素的影响下(即存在潜在干扰),因此采用最大似朗机估计算法进行优化。假设采集了n张棋盘格图像(其中每张图像包含m个角点)。最终获得的最大机估计算法公式为

4.3.2 优缺点
优点:
张正友的平面标定方法是介于传统标定方法和自标定方法之间的一种方法。它既避免了传统方法设备要求高,操作繁琐等缺点,又较自标定方法精度高。
缺点:
需要确定模板上点阵的物理坐标以及图像和模板之间的点的匹配。
三、术语
| 内部参数 (Intrinsics) | |
|---|---|
| 内参矩阵 | IntrinsicMatrix |
| 焦距 | FocalLength |
| 像主点(投影中心) | PrincipalPoint |
| 偏斜参数 | Skew |
| 径向畸变 | RadialDistortion |
| 切向畸变 | TangentialDistortion |
| 外部参数(Extrinsics) | |
|---|---|
| 旋转矩阵 | RotationMatrices |
| 平移向量 | TranslationVectors |
| 估计精准度(Accuracy of Estimation) | |
|---|---|
| 平均重投影误差 | MeanReprojectionError |
| 重投影误差 | ReprojectionErrors |
| 重投影点 | ReprojectedPoints |
| 校准设置(Calibration Settings) | |
|---|---|
| 估计偏斜参数 | EstimateSkew |
| 径向变形系数 | NumRadialDistortionCoefficients |
| 估计切向畸变 | EstimateTangentialDistortion |
四、实验步骤
根据黑白间距的要求,在A4纸上打印一张棋盘格,并粘贴到一个平板上。
在棋盘格图像中拍摄了大约10至20张照片。
通过Harris角点检测算法,在图像中定位特征点。
基于角点的位置信息和图像坐标数据,求解Homographic矩阵。
通过解析解估计方法计算出相机内部参数和外部参数的总和。
采用极大似然估计策略构建优化目标函数,并通过迭代优化算法实现相机参数的校准。
五、实验操作
1、实验环境及配置
软件:应用软件
成像设备:华为P30系列后置摄像头
棋盘单元尺寸(手动测量)为20厘米×20厘米
2. 数据集
打印并粘贴于纸板上的实验中的棋盘图像被稳固地安放于桌面上。随后通过智能手机从不同角度进行拍摄,总共拍摄了12幅图像。(如下)

3、实验操作
- 打开matlab工具箱,找到图像和计算机视觉模块下的CameraCalibrator

在实验中,请将文件夹内的清晰拍摄好的棋盘图片插入到项目文件中,并配置棋盘方块尺寸为手动测量后确定的2厘米。


- 点击Calibrate分析

执行Export Parameters到Workspace操作后,在命令行窗口中可查看相机参数结果。\n生成MATLAB脚本后即可调用相关代码。

六、实验结果
角点检测结果(前6张):

所有参数:

内参矩阵: (输入cameraParams.IntrinsicMatrix命令)

径向畸变: (输入cameraParams.RadialDistortion命令)

外部参数(旋转矩阵):

外部参数(平移向量):

误差可视化:

外部参数可视化:

分析:
- 由结果可知此相机的焦距为fx=639.1390,fy=637.1721;像主点的坐标u0=281.2347,v0=377.3512;平均误差为0.35;
- 误差可视化图中展示了重投影后,每张图片存在的误差。由柱形图可见误差最小的在0.18左右,而误差最大的达到0.65,在对比4和11原图后,能发现图4为正向拍照角度拍摄,棋盘格子畸变程度小,因而重投影后,误差也小;而图11为倾斜角度拍摄,棋盘格子存在径向畸变,因而重投影后,误差大。
- 网上资料显示,误差小于0.5,则准确度较高,实现显示此相机平均误差为0.35,可见相机精准度还是较高的。
七、总结
- 相机标定的主要目标是矫正镜头畸变并生成校正后的图像。
- 线性标定法被用来方便地求解相机参数。它通过矩阵描述了三维空间中的点与二维图像平面之间的映射关系。然而这种方法无法直接确定相机的内参数和外参数。
- 张正友方法采用带有方格的模板进行标定。通过拍摄不同姿态下的图片并识别角点坐标来计算初始内、外参。随后应用非线性最小二乘优化畸变系数,并使用极大似然估计进一步精算出各参数。该方法操作简便且精度高,在多数情况下都能适用。
- 基于matlab开发的工具箱能够有效地完成棋盘格图像用于相机校准的任务,并提供直观的数据可视化结果。
