文章目录
- 为什么要校准相机?
- 1. 成像几何
-
- 1.1 坐标系统
- 1.2 坐标转换
-
- 1.2.1 世界坐标系转换为相机坐标系
- 1.1.3 相机坐标系到图像坐标系
- 1.1.4 图像物理坐标,像素坐标
- 1.1.5 世界坐标系
- 1.2 相机畸变
-
- 1.2.1 径向畸变
- 1.2.2 切向畸变
- 1.2.3 径向畸变模型
- 1.2.4 方向畸变模型
- 1.2.5 畸变系数
- 2. 相机标定
-
- 2.1 标定参数
-
- 2.1.1 相机内参
- 2.1.2 相机外参
- 2.1.3 畸变系数
- 2.2 标定流程
- 2.3 opencv 相机校准代码
-
- 2.3.1 相机校准(内参、畸变系数和这些图像对应的外参)
- 2.3.2 整图畸变校正
- 2.3.3 2D点转3D点
-
- (1) 获取相关参数
- (2) 构造测试用2D点
- (3) 校正试验点畸变
- (4) 2D转3D
- 2.3.4 3D点转2D点
- 2.4 标定相关函数
-
- 2.4.1 相机标定
- 2.4.2 畸变校正
- 2.4.3 外参求解
- 2.4.4 2D-3D映射
- 参考
为什么要校准相机?
相机的功能是将真实的三维世界拍摄成二维图片。因此,相机成像过程可以被视为函数。输入是三维场景,输出是二维图片。然而,当我们想将二维图片反映成三维场景时,很明显,我们不能仅仅通过二维图片获得真实的三维场景。换句话说,上述函数是不可逆转的。
相机校准的目标是使用特定的数学模型来模拟复杂的成像过程,并解决数学模型中的一些参数,包括相机的内部参数、畸变系数和外部参数。这样,我们就可以类似于从三维到二维的过程,然后找到该函数的反函数,并从获得二维重建三维。
一旦这些参数被校准,我们将获得一个完整的相机成像数学模型,广泛应用于机器视觉、图像测量、摄影测量、三维重建等应用。
- (1)纠正相机拍摄的图片;
- (2)确定空间物体表面某一点的三维几何位置与图像对应点之间的关系;
- (3)确定物理尺寸和像素间的换算关系;
- (4)用多个相机拍摄图片进行三维重建;
- (5)以及其他计算机视觉应用。
1. 成像几何
1.1 坐标系统
- 世界坐标系( O W ? X W Y W Z W O_W-X_WY_WZ_W OW?XWYWZW):用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入。世界坐标系的原点位置可以根据需要调整。单位 m m m;
- 相机坐标系( O C − X C Y C Z C O_C-X_CY_CZ_C OC−XCYCZC):以摄像机光心为原点(在针孔模型中也就是针孔为光心), Z Z Z轴与光轴重合(与成像平面垂直),X 轴和Y 轴分别平行于图像物理坐标系(CCD)的X轴和 Y 轴, f f f为摄像机的焦距。单位 m m m;
- 图像物理坐标系( o − x y o-xy o−xy):用物理单位表示像素的位置,坐标原点为摄像机光轴与图像物理坐标系的交点位置。单位是 m m mm mm。单位毫米的原因是此时由于相机内部的CCD传感器是很小的,比如8mm x 6mm。
- 像素坐标系( u v uv uv):以像素为单位,坐标原点在左上角。举个例子,CCD传感上上面的8mm x 6mm,转换到像素大小是640x480,此时dx表示像素坐标系中每个像素的物理大小就是1/80mm,也就是说毫米与像素点的之间关系是piexl/mm.
1.2 坐标转换
1.2.1 世界坐标系转换到相机坐标系
从世界坐标系变换到相机坐标系属于刚体变换,即物体不会发生形变,只需要进行旋转和平移。
[ X C Y C Z C ] = R [ X W Y W Z W ] + T \begin{bmatrix} X_C \\ Y_C \\ Z_C \end{bmatrix} = R \begin{bmatrix} X_W \\ Y_W \\ Z_W \end{bmatrix} + T ⎣⎡XCYCZC⎦⎤=R⎣⎡XWYWZW⎦⎤+T
R ∈ R 3 × 3 R \in R^{3 \times3} R∈R3×3: 旋转矩阵; T ∈ R 3 × 1 T \in R^{3 \times 1} T∈R3×1: 平移向量;
[ X C Y C Z C 1 ] = [ R T 0 1 ] [ X W Y W Z W 1 ] \begin{bmatrix} X_C \\ Y_C \\ Z_C \\ 1 \end{bmatrix} = \begin{bmatrix} R & T \\ 0 & 1 \\ \end{bmatrix} \begin{bmatrix} X_W \\ Y_W \\ Z_W \\ 1 \end{bmatrix} ⎣⎢⎢⎡XCYCZC1⎦⎥⎥⎤=[R0T1]⎣⎢⎢⎡XWYWZW1⎦⎥⎥⎤
这里就是相机的外参矩阵,一旦世界坐标系发生变化,外参矩阵也要随之变化。
1.1.3 相机坐标系到图像坐标系
从相机坐标系到图像坐标系,属于透视投影关系,从3D转换到2D。根据图中的相似三角形可以得出以下对应关系: Δ A B O C ∼ Δ o C O C Δ P B O C ∼ Δ p C O C \Delta ABO_C \sim \Delta oCO_C \\ \Delta PBO_C \sim \Delta pCO_C \\ ΔABOC∼ΔoCOCΔPBOC∼ΔpCOC A B o C = A O C o O C = P B p C = X C x = Z C f = Y C y \frac{AB}{oC} = \frac{AO_C}{oO_C} = \frac{PB}{pC}=\frac{X_C}{x} = \frac{Z_C}{f} = \frac{Y_C}{y} oCAB=oOCAOC=pCPB=xXC=fZC=yYC
此处的 f f f对应相机焦距,最终,图像物理坐标系中的一点和相机坐标系中的对应点的转换关系便可以表示如下:
{ x = f X C Z C y = f Y C Z C \left\{ \begin{gathered} x = f \frac{X_C}{Z_C} \\ y = f \frac{Y_C}{Z_C} \end{gathered} \right. ⎩⎪⎪⎨⎪⎪⎧x=fZCXCy=fZCYC
其矩阵表示如下:
Z C [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X C Y C Z C 1 ] Z_C \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} X_C \\ Y_C \\ Z_C \\ 1 \end{bmatrix} ZC⎣⎡xy1⎦⎤=⎣⎡