教程
相机标定分类
相机标定分为内参标定和外参标定。
内参则包括相机固有参数的标定和畸变系数的标定。
外参则是为了获取(标定)旋转矩阵和平移矩阵。
相机成像畸变
标定
内参
相机内参通常用一个 3×3 矩阵(内参矩阵,K)表示,形式如下:
(1)焦距(Focal Length)
-
fx,fy:
-
表示相机在图像坐标系 x和 y 方向上的单位长度所对应的像素的大小(单位:像素)。
-
如果 fx=fy,说明像素是正方形的;若不相等(如 fx≠fy),则像素是矩形的(常见于某些工业相机)。
-
-
f 是物理焦距,即光心到成像平面的距离,单位:mm;
-
sx:单个像素在水平方向(图像宽度方向)的物理尺寸(单位:mm/μm)。
-
sy:单个像素在垂直方向(图像高度方向)的物理尺寸。
-
-
s是内参矩阵中描述像素轴倾斜程度的参数,多数情况下为0。
-
理想情况:当 s=0时,表示图像传感器的像素是完全正交排列的(即 x 轴和 y 轴垂直)。
-
实际情况:
-
如果 s≠0,说明像素网格存在倾斜(例如,传感器制造或安装时存在微小偏差)。
-
这种倾斜会导致图像坐标系中 x和 y 方向不完全独立,存在一定的耦合关系。
-
(2) 主点(Principal Point)
-
cx,cy:
-
图像坐标系中的光轴中心(即图像中心)的像素坐标。
-
理想情况下,主点位于图像的正中心(如 640×480 图像的主点为 (320,240)),但实际可能因镜头安装偏差存在微小偏移。
-
考虑畸变和不考虑畸变
考虑畸变:
考虑畸变则应该是
不考虑畸变:
在不考虑畸变的情况下,相机内参可直接乘以理想的归一化坐标系中的x,y,也就是上图的直接使用
。
目的
直接目的:
间接目的:
求取将三维空间中的一个点,即世界坐标系下的一个点变换到像素坐标系下的变换矩阵。
包括内参矩阵和外参矩阵。
作用
获取正确的相机内参和外参之后,后续的机器人对三维世界的操作基于这些正确的内参和外参进行定位,导航等才能达到更精准的需求。
原理
相机标定的内参是如何标定获得的?
DLT直接线性变换--相机标定法
DLT利用已知的3D空间点(如标定板角点)与其在图像中的2D投影点,建立线性方程,直接求解内参和外参。
z:是尺度,实际上是这个点到相机坐标系下的 深度 (距离)。
不要去考虑公式的具体含义,这些公式是点在世界坐标系中转换到像素坐标系的过程他推算得出。
1,一组点可以列出两个方程:
2,需要求解出12个值,所以最少需要6个点:
3,变换公式计算出12个参数:
4,从结果中分离内参和外参:
张氏标定
标定数据给定
DLT利用已知的3D空间点(如标定板角点)与其在图像中的2D投影点,建立线性方程,直接求解内参和外参。
2D点,即像素坐标系中的点(u,v),可以通过相机拍摄得到图像之后从像素坐标系得到;
但是3D点,即点在世界坐标系下的xyz怎么获取呢?
这些点又如何给到程序?
把这些点放入文件中,标定的时候从文件读取传入文件即可。
程序从文件读取这些给定的世界坐标系下的点之后,怎么知道这个点和哪个像素点对应组成两个等式呢?
外参标定
外参
变换矩阵=旋转矩阵+平移矩阵。
目的
获取世界坐标系到相机坐标系的变换矩阵,即相机坐标系在世界坐标系下的表示,也就是相机在世界坐标系下的位姿。