python 相机标定的原理、步骤、实现

本文详细介绍了相机标定的原理,包括相机坐标系、图像坐标系和像素坐标系,以及相机标定的目的和总体过程。文章还阐述了从世界坐标系到图像坐标系的刚体变换、透视投影、畸变矫正和数字化图像的步骤,并讨论了相机参数标定的方法,特别提到了张正友平面标定法。此外,文章还涵盖了数据准备、Python+OpenCV的实现代码和运行结果,展示了反投影误差和去畸变图像的效果。
摘要由CSDN通过智能技术生成
一、相机标定的原理
1.1 相机如何成像:

相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。
相机成像的原理:

在这里插入图片描述

1.1.1 世界坐标系:

世界坐标系(world coordinate),也称为测量坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。

1.1.2 相机坐标系:

相机坐标系(camera coordinate),也是一个三维直角坐标系,原点位于镜头光心处,x、y轴分别与相面的两边平行,z轴为镜头光轴,与像平面垂直

1.1.3 像素坐标系、图像坐标系:

在这里插入图片描述
像素坐标系(pixel coordinate)
如上图,像素坐标系是一个二维直角坐标系,反映了相机CCD/CMOS芯片中像素的排列情况。原点位于图像的左上角,轴、轴分别于像面的两边平行。像素坐标系中坐标轴的单位是像素(整数)。

像素坐标系不利于坐标变换,因此需要建立图像坐标系,其坐标轴的单位通常为毫米(mm),原点是相机光轴与相面的交点(称为主点),即图像的中心点,轴、轴分别与轴、轴平行。故两个坐标系实际是平移关系,即可以通过平移就可得到。

1.2 相机标定的目的:

求出相机的内、外参数,以及畸变参数。

标定相机后通常是想做两件事:一个是由于每个镜头的畸变程度各不相同,通过相机标定可以校正这种镜头畸变矫正畸变,生成矫正后的图像;另一个是根据获得的图像重构三维场景。

1.2 相机标定的总体原理:

摄像机标定(Camera calibraTIon)简单来说就是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵的过程。

1.3 步骤:
1.3.1 刚体变换(从世界坐标系到相机坐标系)

这一步是三维点到三维点的转换,包括相机外参;
刚体变换只改变物体的空间位置(平移)和朝向(旋转),而不改变其形状,可用两个变量来描述:旋转矩阵R和平移向量t:
在这里插入图片描述
其中为33的旋转矩阵,为31的平移矢量,为相机坐标系的齐次坐标,为世界坐标系的齐次坐标。

齐次坐标下可写为:
在这里插入图片描述
旋转矩阵R是正交矩阵,可通过罗德里格斯(Rodrigues)变换转换为只有三个独立变量的旋转向量:
在这里插入图片描述
因此,刚体变换可用6个参数来描述,这6个参数就称为相机的外参(Extrinsic),相机外参决定了空间点从世界坐标系转换到相机坐标系的变换,也可以说外参描述了相机在世界坐标系中的位置和朝向。

1.3.2 透视投影(从相机坐标系到图像坐标系)

我们可以将透镜的成像简单地抽象成下图所示:
在这里插入图片描述

针孔成像原理
如图中,空间任意一点与其图像点之间的关系,p与相机光心 的连线为op,与像面的交点即为空间点在图像平面上的投影。 该过程为透视投影,由上图的矩阵表示。

其中,Zc为比例因子(Zc不为0),为有效焦距(光心到图像平面的距离),是空间点在相机坐标系中的齐次坐标,是像点在图像坐标系中的齐次坐标。

1.3.3 畸变矫正

理想的针孔成像模型确定的坐标变换关系均为线性的,而实际上,现实中使用的相机由于镜头中镜片因为光线的通过产生的不规则的折射,镜头畸变(lens distortion)总是存在的,即根据理想针孔成像模型计算出来的像点坐标与实际坐标存在偏差。畸变的引入使得成像模型中的几何变换关系变为非线性,增加了模型的复杂度,但更接近真实情形。畸变导致的成像失真可分为径向失真和切向失真两类:
在这里插入图片描述
畸变类型很多,总体上可分为径向畸变和切向畸变两类,径向畸变的形成原因是镜头制造工艺不完美,使得镜头形状存在缺陷,包括枕形畸变和桶形畸变等,可以用如下表达式来描述:
在这里插入图片描述
切向畸变又分为薄透镜畸变和离心畸变等,薄透镜畸变则是因为透镜存在一定的细微倾斜造成的;离心畸变的形成原因是镜头是由多个透镜组合而成的,而各个透镜的光轴不在同一条中心线上。切向畸变可以用如下数学表达式来描述:
在这里插入图片描述
在引入镜头的畸变后,成像点从理想图像坐标系到真实图像坐标系的变换关系可以表示为:
在这里插入图片描述
实际计算过程中,如果考虑太多高阶的畸变参数,会导致标定求解的不稳定。

1.3.4 数字化图像

光线通过相机镜头后最终成像在感光阵列(CCD或CMOS)上,然后感光阵列将光信号转化为电信号,最后形成完整的图像。我们用dx和dy分别表示感光阵列的每个点在x和y方向上物理尺寸,即一个像素是多少毫米,这两个值一般比较接近,但由于制造工艺的精度问题,会有一定误差,同样的,感光阵列的法向和相机光轴也不是完全重合,即可以看作成像平面与光轴不垂直。
在这里插入图片描述
我们用仿射变换来描述这个过程,如上图,O点是图像中心点,对应图像坐标(u0,v0),Xd - Yd是真实图像坐标系,U-V是数字化图像坐标系,有:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值