传统单目相机标定:原理简介与实现

一、相机标定原理简介

1.1 相机成像系统

相机成像系统中,包含四个坐标系,分别是世界坐标系、相机坐标系、图像坐标系、像素坐标系。

世界坐标系:代表物体在真实世界里的三维坐标。

相机坐标系:代表以相机光学中心为原点的坐标系,光轴与Z轴重合。

图像坐标系:代表相机拍摄图像的坐标系,原点为相机光轴与成像平面的交点,是图像的中心点。

像素坐标系:由于图像的基本单位是像素,所以该坐标系是图像上点在图像储存矩阵中的像素位置,坐标原点在左上角。

前三个坐标系的单位是毫米,而最后一个坐标系的单位是像素。

这四个坐标系之间的转换关系如下:

用矩阵表示就是:

其中,\left ( U, V, W \right )为世界坐标系下的一点的物理坐标,\left ( u, v \right )为该点对应于像素坐标系下的像素坐标,Z为尺度因子。

我们将矩阵:

称为相机的内参矩阵,内参矩阵由相机内部的参数决定。其中,f为焦距,dXdY分别表示XY方向上的一个像素在相机感光板上的物理长度(即一个像素在感光板上是多少毫米),u_{0}v_{0}分别表示相机感光板中心在像素坐标系下的坐标,\theta表示感光板的横边和纵边之间的角度(90^{\circ}表示无误差)。

我们将矩阵:\begin{pmatrix} R & T\\ 0& 1 \end{pmatrix}称为相机的外参矩阵,外参矩阵取决于相机坐标系和世界坐标系的相对位置,R表示旋转矩阵,T表示平移矢量。

即单点无畸变的相机成像模型如下:

相机标定的第一个目的就是获得相机的内参矩阵和外参矩阵。

1.2 相机畸变

由于相机制造工艺的原因,其成像过程中难免存在畸变。畸变主要分为两类,分别是径向畸变和切向畸变。

径向畸变公式(3阶)如下:

切向畸变公式如下:

将径向畸变和切向畸变合并,只需要将两个畸变矫正直接加起来即可,公式如下:

合并考虑畸变的原因也很简单,两种畸变同时发生在成像过程中,发生的原因也是相互独立的。

其中,\left ( x, y \right )\left ( \hat{x}, \hat{y} \right )分别为理想的无畸变的归一化图像坐标、畸变后的归一化图像坐标,r为图像像素点到图像中心点的距离,即r^{2}= x^{2}+y^{2}

相机标定的第二个目的就是获得相机的畸变参数,进而对拍摄的图片进行去畸变处理。

二、利用OpenCV实现张正友标定法

2.1 张正友标定法简介

张正友标定法利用黑白棋盘格标定板,在得到一张标定板的图像后,用Harris角点检测算法得到每一个角点的像素坐标\left ( u, v \right )

张正友标定法将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标W=0,由于标定板的世界坐标系是人为事先定义好的,标定板上每一个格子的大小是已知的,我们可以计算得到每一个角点在世界坐标系下的物理坐标\left ( U, V, W=0 \right )

我们将利用这些信息:每个角点的像素坐标,每个角点在世界坐标系下的物理坐标,来进行相机的标定,获得相机的内外参矩阵、畸变参数。

2.2 利用OpenCV进行张正友标定法

OpenCV内置了张正友相机标定法,通过calibrateCamera可以直接调用,输入已知量得到未知量。

函数模型:

ret, mtx, dist, revecs, tvecs = cv2.calibrateCamera(objectPoints, imagePoints, imageSize, cameraMatrix, distCoeffs)

输入参数:

objectPoints:np.ndarray世界坐标系下的角点坐标,维度img_num * corner_num * 3

imagePoints:np.ndarray角点在图像中的坐标,维度img_num * corner_num * 1 * 2

imageSize:tuple图像尺寸,格式(图像宽度,图像高度)

cameraMatrix:np.ndarray相机内参初始值,如果没有初始值,则设置为None

distCoeffs:np.ndarray相机畸变系数初始值,如果没有初始值,则设置为None

输出参数:

retval:bool相机标定是否正确

cameraMatrix:np.ndarray相机内参矩阵

distCoeffs:np.ndarray相机畸变系数

rvecs:np.ndarray相机外参-旋转向量,可以通过罗德里格斯公式转换为旋转矩阵_{board}^{cam}\textrm{R}

tvecs:np.ndarray相机外参-平移向量_{board}^{cam}\textrm{t}

三、参考资料

1. 计算机视觉—— 相机标定

2. 一文图解单目相机标定算法

3. 相机标定之张正友标定法数学原理详解(含python源码)

4. OpenCV相机标定

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值