资讯详情

相机标定原理与实战【python-opencv】

文章目录

  • 为什么要校准相机
  • 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 坐标系统

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 ⎣⎡​XC​YC​ZC​​⎦⎤​=R⎣⎡​XW​YW​ZW​​⎦⎤​+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} ⎣⎢⎢⎡​XC​YC​ZC​1​⎦⎥⎥⎤​=[R0​T1​]⎣⎢⎢⎡​XW​YW​ZW​1​⎦⎥⎥⎤​

这里就是相机的外参矩阵,一旦世界坐标系发生变化,外参矩阵也要随之变化。

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​=oOC​AOC​​=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=fZC​XC​​y=fZC​YC​​​

其矩阵表示如下:

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​⎦⎤​=⎣⎡

标签: py2系列位移传感器py2ss系列磁致伸缩位移传感器py3直线位移传感器磁制伸缩直线位移传感器1060s2ao接近传感器0931s3pc接近传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台