【转载】OpenCV-Python系列之相机校准理论(六十一)

其实大家可能已经发现,越到后面,所涉及的跟视频处理都有很大的关系,包括特征点,目标跟踪以及光流等等这些东西。

在本次教程中,我们将介绍:

· 由相机引起的失真类型,

· 如何找到相机的固有和非固有特性

· 如何根据这些特性使图像不失真

一些针孔相机会给图像带来明显的失真。两种主要的变形是径向变形和切向变形。径向变形会导致直线出现弯曲。

距图像中心越远,径向畸变越大。例如,下面显示一个图像,其中棋盘的两个边缘用红线标记。但是,我们会看到棋盘的边框不是直线,并且与红线不匹配,所有预期的直线都凸出。
在这里插入图片描述

径向变形可以表示成如下:
在这里插入图片描述

同样,由于摄像镜头未完全平行于成像平面对齐,因此会发生切向畸变。因此,图像中的某些区域看起来可能比预期的要近。切向畸变的量可以表示为:
在这里插入图片描述

简而言之,我们需要找到五个参数,称为失真系数,公式如下:
在这里插入图片描述

除此之外,我们还需要其他一些信息,例如相机的内在和外在参数。内部参数特定于摄像机。它们包括诸如焦距(f_x,f_y)和光学中心(c_x,c_y)之类的信息。焦距和光学中心可用于创建相机矩阵,该相机矩阵可用于消除由于特定相机镜头而引起的畸变。相机矩阵对于特定相机而言是唯一的,因此一旦计算出,就可以在同一相机拍摄的其他图像上重复使用。它表示为3x3矩阵:
在这里插入图片描述

外在参数对应于旋转和平移矢量,其将3D点的坐标平移为坐标系。

对于立体声应用,首先需要纠正这些失真。要找到这些参数,我们必须提供一些定义良好的图案的示例图像(例如国际象棋棋盘)。我们找到一些已经知道其相对位置的特定点(例如棋盘上的四角)。我们知道现实世界空间中这些点的坐标,也知道图像中的坐标,因此我们可以求解失真系数。为了获得更好的结果,我们至少需要10个测试模式。

相机校准原理

首先先简单的了解一下相机标定的原理。
摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵 P 的过程。

一般来说,标定的过程分为两个部分:

· 第一步是从世界坐标系转换为相机坐标系,这一步是三维点到三维点的转换,包括 R,t (相机外参)等参数;

· 第二部是从相机坐标系转为图像坐标系,这一步是三维点到二维点的转换,包括 K(相机内参)等参数;

世界坐标系转换为相机坐标系:
在这里插入图片描述

公式表达如下:
在这里插入图片描述

其中:
在这里插入图片描述

相机坐标系转换为图像坐标系:
在这里插入图片描述

其中:

· C点表示camera centre,即相机的中心点,也是相机坐标系的中心点;

· Z 轴表示principal axis,即相机的主轴;

· p 点所在的平面表示image plane,即相机的像平面,也就是图片坐标系所在的二维平面;

· p点表示principal point,即主点,主轴与像平面相交的点;

· C 点到 p 点的距离,也就是右边图中的f 表示focal length,即相机的焦距;

· 像平面上的 x 和 y 坐标轴是与相机坐标系上的 X 和 Y 坐标轴互相平行的;

· 相机坐标系是以 X, Y, Z三个轴组成的且原点在 C 点,度量值为米(m);

· 像平面坐标系是以 x,y(小写)两个轴组成的且原点在 p 点,度量值为米(m);

· 图像坐标系一般指图片相对坐标系,在这里可以认为和像平面坐标系在一个平面上,不过原点是在图片的角上,而且度量值为像素的个数(pixel);

通过对上面坐标系的介绍,可以得到以下的转换公式:
在这里插入图片描述

加上偏移量:
在这里插入图片描述

如上图所示,其中主点 p 是像平面坐标系的原点,但在图像坐标系中的位置为 (px,py),在这里,图形坐标系的原点是图片的左下角,所以可以得到:
在这里插入图片描述
把这个换成矩阵计算:在这里插入图片描述
整理一下:
在这里插入图片描述
最后,可以得到矩阵K,就是相机内参:
在这里插入图片描述

投影矩阵P(在这里可以认为旋转矩阵 R 为单位矩阵 I,平移矩阵 t 都为0):
在这里插入图片描述
从上面两个转换的过程,我们可以得到从世界坐标轴转换到图像的过程可以把投影矩阵P表示为:
在这里插入图片描述
其中:
在这里插入图片描述
在这里,K 一般称为相机内参,描述了相机的内部参数,包括焦距 f、主点 p 的位置、以及像素与真实环境的大小比例等,这个是固有属性,是提供好的;R 和 t 称为相机外参,R 在这里是旋转矩阵,可以转换为三维的旋转向量,分别表示绕x,y,z 三个轴的旋转角度,t 目前就是一个平移向量,分别表示在x,y,z 三个方向上的平移量。

了解完一定原理之后,我们在下个教程中将开始实践一下。
查看文章汇总页https://blog.csdn.net/weixin_44237705/article/details/107864965
更多openvino技术信息可以入群交流~
申请备注:CSDN
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值