【摄影测量】一文弄懂张正友标定法(含针孔相机模型/透视投影模型、相机畸变、相机的内方位元素(内参)与外方位元素(外参)、相机标定介绍)

张正友标定法是张正友博士在1999年发表在国际顶级会议ICCV上的论文《Flexible Camera Calibration By Viewing a Plane From Unknown Orientations》中,提出的一种利用平面棋盘格进行相机标定的实用方法。

其后,他2000年的这篇论文《A flexible new technique for camera calibration》的引用数更是达到了13885次,其重要性可见一斑。

该方法介于摄影标定法和自标定法之间,既克服了摄影标定法需要的高精度三维标定物的缺点,又解决了自标定法鲁棒性差的难题。标定过程仅需使用一个打印出来的棋盘格,并从不同方向拍摄几组图片即可,任何人都可以自己制作标定图案,不仅实用灵活方便,而且精度很高,鲁棒性好。因此很快被全世界广泛采用,极大的促进了三维计算机视觉从实验室走向真实世界的进程。
(参考资料:张正友标定法-完整学习笔记-从原理到实战
摄像机成像模型
(上图参考资料:张正友标定法

1 针孔相机模型(透视投影模型)

(本节参考资料:相机系列——透视投影:针孔相机模型
三维相机是对真实世界成像的模拟,为了让三维物体在计算机屏幕上呈现出来的图像符合人眼观察效果,通常采用透视投影方式模拟相机成像,为了简化计算,可以用针孔相机模型来描述透视投影成像过程。

针孔相机模型是一种简化的光学成像模型,基本原理是中心透视投影,将三维空间中的物体通过针孔投影到二维成像平面上。这种模型忽略了镜头畸变、光线衍射等复杂因素,使得计算和分析变得相对简单,因此也广泛应用于计算机视觉和图形学领域。

针孔相机模型

1.1 四个坐标系

为了能够用数学语言来描述针孔相机模型,需要建立四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系,三维物体在二维图像上的成像过程通过坐标系变换来表达。

请添加图片描述
1、世界坐标系

世界坐标系是描述客观世界的绝对坐标系,由于相机可以位于客观世界中的任意位置,需要建立一个基准坐标系来描述相机的位置,并且用它来描述环境中任意空间点的位置,用(Xw, Yw, Zw)表示世界坐标值。

2、相机坐标系

相机坐标系是以相机光心为参考点建立起的三维坐标系,用于描述任意空间点在相机空间中的位置,建立方式为:以相机光心为坐标原点,相机主光轴为Z轴,平行于图像平面水平方向作为X轴,平行于图像平面垂直方向作为Y轴,用(Xc, Yc, Zc)表示相机坐标值。

3、图像坐标系

图像坐标系是定义在成像平面上的二维平面坐标系,以实际物理单位(mm)表示,建立方式为:以相机主光轴与图像平面的交点为原点,交点称为像主点,X轴平行于图像水平方向向右,Y轴平行于图像垂直方向向下,用(x, y)表示图像坐标值。

4、像素坐标系

在计算机中数字图像是经离散化处理后以像素矩阵方式进行存储的,因此建立像素坐标系以描述相机图像,像素坐标可以理解为像素在图像平面中的位置索引。建立方式为:以图像平面左上角为原点,u轴平行于图像坐标系的X轴,水平向右,v轴平行于图像坐标系的Y轴,垂直向下,用(u,v)表示像素坐标值。

1.2 四个坐标系之间的坐标变换

坐标变换

相机成像可以理解为是将三维空间中的物体投影到二维图像平面上的过程,投影过程最终在三维空间点和图像平面点之间建立映射关系,因此可以通过三维空间点与二维图像平面点之间的坐标转换来表达投影过程。

坐标转换流程包括:

1、世界坐标系 → 相机坐标系

世界坐标系转换到相机坐标系的过程是刚体变换,通常采用平移矩阵R和旋转矩阵T来表示变换过程。齐次坐标以及矩阵变换可以参考博文:用矩阵表述变换与齐次坐标 - 简书

旋转平移变换

2、相机坐标系 → 图像坐标系

相机坐标系到图像坐标系是真正的投影过程,基本原理是中心透视投影,根据三角形相似原理,可推知空间点与它的像点关系如下:投影变换

3、图像坐标系 → 像素坐标系

数字图像是经离散化处理后以像素矩阵方式进行存储的,图像坐标在图像平面以物理单位表示,像素坐标在图像平面以像素坐标表示,图像坐标与像素坐标的转换关系为:

像素离散化
其中dx、dy表示单个像素实际物理尺寸的宽和高。

图像坐标系到像素坐标系的转换用矩阵表示为:

图像坐标系到像素坐标系的转换用矩阵

1.3 内方位元素(内参)与外方位元素(外参)

综合1.1、1.2中所述的变换,可以得到完整的坐标变换过程如下:

针孔相机模型(透视投影模型)
其中,透视投影过程(相机坐标系 → 图像坐标系)像素离散过程(图像坐标系 → 像素坐标系)组合后的变换矩阵称为相机内参矩阵(内方位元素,K)
平移、旋转过程(世界坐标系→相机坐标系)的变换矩阵称为相机外参矩阵(外方位元素,R和t)

针孔相机模型(透视投影模型)

2 相机畸变

(本节参考资料:相机系列——透视投影:针孔相机模型

实际的相机成像过程受镜头影响,往往无法遵循严格的线性变换,这会导致最终的图像产生畸变(失真),镜头引起的畸变主要分为径向畸变切向畸变

2.1 径向畸变

越远离光轴的光线越向内弯曲,导致正方形成像后变成桶形,称为桶形畸变
反之,如果越远离光轴的光线越向外弯曲则为枕形畸变

径向畸变

2.2 切向畸变

切向畸变是透镜与成像平面不完全平行的制造缺陷造成的。

在实际应用中,通常采用多项式拟合模型来表示相机畸变,通用公式表示为:

多项式拟合模型
其中,图像坐标通过归一化平面坐标表示,(x,y)表示实际图像坐标,(Xdistorted, Ydistorted)表示畸变后的图像坐标。
(归一化平面坐标可以参考:什么是归一化的平面坐标

常用的多项式拟合畸变模型为:

多项式拟合畸变模型
其中: r 2 = x 2 + y 2 r^2=x^2+y^2 r2=x2+y2

基于畸变模型,可以对图像进行畸变校正,即通过同名点计算多项式拟合畸变模型中的参数,从而根据已知参数的多项式拟合畸变模型计算畸变图像点的正确位置,对图像进行像素重映射和插值处理,以纠正图像畸变导致的变形现象。
畸变纠正(左:畸变图像,右:畸变纠正图像)

3 相机标定

(本节参考资料:相机标定(Camera calibration)原理、步骤
相机标定
(上图参考资料:张正友标定法

进行像机标定的目的是:求出第1、2节中所述的:①相机的内参;②相机外参;③畸变参数

通过标定板(如上图)可以得到 n 个对应的世界三维点坐标对应的图像二维点坐标,这些三维点到二维点的转换都可以通过第1、2节中提到的相机内参 K 、相机外参 R 和 t 、畸变参数 D ,经过一系列的矩阵变换得到。

标定板可以做成三维的(如上图的右上角),但是没必要,通过调整二维标定版的位置拍摄多张图片(如上图的右下角)可以实现同样的效果。

4 张正友标定法

在上一篇博文单应矩阵,介绍的单应矩阵表示两个平面间的映射。在张氏标定法中,用于标定的棋盘格是三维场景中的一个平面Π,其在成像平面的像是另一个平面π,知道了两个平面的对应点的坐标,就可以求解得到两个平面的单应矩阵H。其中,标定的棋盘格是特制的,其角点的坐标是已知的;图像中的角点,可以通过角点提取算法得到,这样就可以得到棋盘平面Π和图像平面π的单应矩阵H。
通过上面的相机模型有:
我来详细解释张正友标定法(Zhang’s Camera Calibration Method)。

张正友标定法是由张正友(Zhengyou Zhang)在1999年提出的一种相机标定方法,它使用平面标定板(通常是棋盘格图案)来获取相机的内部和外部参数。这种方法因其简单实用而被广泛应用于计算机视觉领域。

4.1 张正友标定法的基本原理

张正友标定法基于以下假设:

  1. 标定板是平面的(通常设定为Z=0平面)
  2. 相机遵循针孔模型
  3. 需要至少两个不同姿态的标定板图像

4.2 数学模型和公式

4.2.1 针孔相机模型

相机成像过程可以表示为:
s [ u v 1 ] = A [ R t ] [ X Y Z 1 ] s \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = A \begin{bmatrix} R & t \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix} s uv1 =A[Rt] XYZ1

其中:

  • ( u , v ) (u, v) (u,v) 是像素坐标
  • ( X , Y , Z ) (X, Y, Z) (X,Y,Z) 是世界坐标
  • s s s 是尺度因子
  • A A A 是相机内参矩阵
  • [ R ∣ t ] [R|t] [Rt] 是外参矩阵( R R R 是旋转矩阵, t t t 是平移向量)

4.2.2 相机内参矩阵

A = [ f x γ u 0 0 f y v 0 0 0 1 ] A = \begin{bmatrix} f_x & \gamma & u_0 \\ 0 & f_y & v_0 \\ 0 & 0 & 1 \end{bmatrix} A= fx00γfy0u0v01

其中:

  • f x , f y f_x, f_y fx,fy 是焦距(以像素为单位)
  • ( u 0 , v 0 ) (u_0, v_0) (u0,v0) 是主点坐标
  • γ \gamma γ 是两个坐标轴之间的倾斜系数(通常假设为0)

4.2.3 单应性矩阵

由于标定板在Z=0平面上,世界坐标系中的点可以表示为 ( X , Y , 0 , 1 ) T (X, Y, 0, 1)^T (X,Y,0,1)T。因此,成像方程简化为:

s [ u v 1 ] = A [ r 1 r 2 r 3 t ] [ X Y 0 1 ] = A [ r 1 r 2 t ] [ X Y 1 ] s \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = A \begin{bmatrix} r_1 & r_2 & r_3 & t \end{bmatrix} \begin{bmatrix} X \\ Y \\ 0 \\ 1 \end{bmatrix} = A \begin{bmatrix} r_1 & r_2 & t \end{bmatrix} \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} s uv1 =A[r1r2r3t] XY01 =A[r1r2t] XY1

其中 r 1 , r 2 , r 3 r_1, r_2, r_3 r1,r2,r3 是旋转矩阵 R R R 的三列。

定义单应性矩阵 H H H 为:

H = A [ r 1 r 2 t ] = [ h 1 h 2 h 3 ] H = A \begin{bmatrix} r_1 & r_2 & t \end{bmatrix} = \begin{bmatrix} h_1 & h_2 & h_3 \end{bmatrix} H=A[r1r2t]=[h1h2h3]

则有:

s [ u v 1 ] = H [ X Y 1 ] s \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = H \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} s uv1 =H XY1

4.2.4 约束条件

由于旋转矩阵的正交性,有:
r 1 T r 2 = 0 r_1^T r_2 = 0 r1Tr2=0
r 1 T r 1 = r 2 T r 2 = 1 r_1^T r_1 = r_2^T r_2 = 1 r1Tr1=r2Tr2=1

从单应性矩阵可以得到:
r 1 = λ A − 1 h 1 r_1 = \lambda A^{-1} h_1 r1=λA1h1
r 2 = λ A − 1 h 2 r_2 = \lambda A^{-1} h_2 r2=λA1h2
t = λ A − 1 h 3 t = \lambda A^{-1} h_3 t=λA1h3

其中 λ \lambda λ 是尺度因子。

因此可以得到两个约束:
h 1 T ( A − 1 ) T A − 1 h 2 = 0 h_1^T (A^{-1})^T A^{-1} h_2 = 0 h1T(A1)TA1h2=0
h 1 T ( A − 1 ) T A − 1 h 1 = h 2 T ( A − 1 ) T A − 1 h 2 h_1^T (A^{-1})^T A^{-1} h_1 = h_2^T (A^{-1})^T A^{-1} h_2 h1T(A1)TA1h1=h2T(A1)TA1h2

4.2.5 定义 B = ( A − 1 ) T A − 1 B = (A^{-1})^T A^{-1} B=(A1)TA1

B B B 是一个对称矩阵,可以表示为:

B = [ B 11 B 12 B 13 B 12 B 22 B 23 B 13 B 23 B 33 ] B = \begin{bmatrix} B_{11} & B_{12} & B_{13} \\ B_{12} & B_{22} & B_{23} \\ B_{13} & B_{23} & B_{33} \end{bmatrix} B= B11B12B13B12B22B23B13B23B33

4.2.6 求解过程

  1. 对每张标定板图像,计算单应性矩阵 H H H
  2. 利用约束条件建立线性方程组
  3. 求解线性方程组得到 B B B 的参数
  4. B B B 恢复相机内参 A A A
  5. 计算每张图像的外参 [ R ∣ t ] [R|t] [Rt]
  6. 考虑畸变参数进行非线性优化

4.2.7 畸变模型

考虑径向畸变和切向畸变:

x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) x_{distorted} = x(1 + k_1 r^2 + k_2 r^4 + k_3 r^6) + 2p_1xy + p_2(r^2 + 2x^2) xdistorted=x(1+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)
y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y y_{distorted} = y(1 + k_1 r^2 + k_2 r^4 + k_3 r^6) + p_1(r^2 + 2y^2) + 2p_2xy ydistorted=y(1+k1r2+k2r4+k3r6)+p1(r2+2y2)+2p2xy

其中:

  • ( x , y ) (x, y) (x,y) 是归一化的相机坐标
  • r 2 = x 2 + y 2 r^2 = x^2 + y^2 r2=x2+y2
  • k 1 , k 2 , k 3 k_1, k_2, k_3 k1,k2,k3 是径向畸变系数
  • p 1 , p 2 p_1, p_2 p1,p2 是切向畸变系数

张正友标定法的优点在于它不需要特定的标定装置,只需要一个平面标定板(如棋盘格)在不同位置拍摄多张照片即可完成标定。它结合了传统标定方法的优点,既有灵活性又有较高的精度,因此成为计算机视觉领域中最常用的相机标定方法之一。

### 张正友相机标定方法原理 张正友相机标定法是一种基于二维平面模板的摄像机标定技术,该方法利用了一个简单易制备的棋盘格图案作为标定板。此方法通过拍摄多幅不同位置和角度下的棋盘格图像来获取足够的约束条件以求解摄像机内参矩阵以及向量。 具体来说,在每一张图片中可以找到若干个角点坐标,并将其映射到世界坐标系下对应的已知物理尺寸的位置上形成对应关系。这些匹配点对提供了关于投影变换的信息,从而能够估计出摄像机模型中的未知数[^1]。 #### 关键特点 - **简化硬件需求**:只需要普通的打印机即可制作高质量的标定板; - **提高灵活性**:可以在任意环境中方便地进行多次重复实验; - **增强鲁棒性**:即使存在镜头畸变也能得到较为准确的结果; ### 流程概述 以下是张正友相机标定算法的主要步骤: 1. 准备一个具有固定间距特征点阵列的标准图形(如黑白相间的方格纸),并将它放置在一个平坦表面上。 2. 使用待校准摄像头从多个视角对该标准图形拍照,确保覆盖整个视场范围内的各个区域。 3. 对采集到的所有图像执行亚像素级精确定位处理,提取出所有可见交界处的精确位置。 4. 利用上述获得的数据集构建线性方程组并求得最优解——即内部数(焦距f, 主点cx,cy)和其他可能存在的径向/切向失真系数k1,k2,p1,p2等。 5. 验证所得结果的有效性和准确性,必要时调整输入数据重新计算直至满意为止。 ```mermaid graph TD; A[准备棋盘格标定板] --> B{拍摄多张不同方位的照片}; B --> C[检测角点]; C --> D[建立世界坐标图像坐标的关联]; D --> E[最小二乘法拟合内数]; E --> F[验证并优化结果]; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值