【立体视觉(一)】之成像原理与相机畸变
- 一、成像原理
- 一)针孔模型
- 二)坐标系转换
- 1. 世界坐标系到相机坐标系
- 2. 相机坐标系到图像坐标系
- 3. 图像坐标系到像素坐标系
- 4. 相机坐标系到像素坐标系
- 5. 世界坐标系到像素坐标系
 
 
- 二、相机畸变
- 一)径向畸变
- 径向畸变矫正
 
- 二)切向畸变
- 切向畸变校正
 
- 三)总畸变校正
 
此为个人学习笔记,在各处借鉴了不少好图好文(参考文献在文末),主要是对相关知识进行梳理,以期形成自己的体系。文字表述东拼西凑,符号公式手动输入,若有错误烦请指出。
一、成像原理
一)针孔模型
在科学研究中,一个现象内部的过程总是复杂而难以清晰看透,而聪明的学者们总会用最简单的模型去做初始描述,提出一个相对简单的模型。成像过程亦不例外,他们将三维世界中的坐标点映射到二维图像平面的过程用一个几何模型进行描述,这个模型有很多种,其中最简单的称为针孔模型。
 
 注意,在探究成像过程中,常使用虚拟成像平面进行分析。
二)坐标系转换

 从真实世界(世界坐标系)中一点到相片(像素坐标系)上的成像点涉及以下四个坐标系间的转换。
- 世界坐标系(World Coordinate System, WCS):点在真实世界中的位置,描述相机位置,单位m。
- 相机坐标系(Camera Coordinate System, CCS):相机sensor中心为原点,建立相机坐标系,单位m。
- 图像坐标系(Film Coordinate System, FCS):以主点为原点的二维坐标系,单位mm。
- 像素坐标系(Pixel Coordinate System, PCS):原点为相片左上角的二维坐标系,单位无或pixel。
接下来按以下步骤介绍相机成像过程中某点在各个坐标系间的变换。
 
1. 世界坐标系到相机坐标系
世界坐标系到相机坐标系(World to Camera,W2C),就是简单的三维坐标系转换(三个坐标轴方向与原点的变化)。世界坐标系上一点 P w ( U , V , W ) {P_{w}(U,V,W)} Pw(U,V,W) 到相机坐标系上一点 P c ( X , Y , Z ) {P_{c}(X,Y,Z)} Pc(X,Y,Z):
[ X Y Z ] = [ R 3 × 3 T 3 × 1 ] [ U V W 1 ] \begin{bmatrix} {X}\\ {Y}\\ {Z}\\ \end{bmatrix}= \begin{bmatrix} {R_{3\times3}}&{T_{3\times1}}\\ \end{bmatrix} \begin{bmatrix} {U}\\ {V}\\ {W}\\ {1}\\ \end{bmatrix} XYZ =[R3×3T3×1] UVW1 
或使用其次矩阵表达:
[ X Y Z 1 ] = [ R 3 × 3 T 3 × 1 O 1 ] [ U V W 1 ] \begin{bmatrix} {X}\\ {Y}\\ {Z}\\ {1}\\ \end{bmatrix}= \begin{bmatrix} {R_{3\times3}}&{T_{3\times1}}\\ {O}&{1}\\ \end{bmatrix} \begin{bmatrix} {U}\\ {V}\\ {W}\\ {1}\\ \end{bmatrix} XYZ1 =[R3×3OT3×11] UVW1 
其中, [ R 3 × 3 T 3 × 1 ] \begin{bmatrix} {R_{3\times3}}&{T_{3\times1}}\\ \end{bmatrix} [R3×3T3×1] (或 [ R 3 × 3 T 3 × 1 O 1 ] \begin{bmatrix} {R_{3\times3}}&{T_{3\times1}}\\ {O}&{1}\\ \end{bmatrix} [R3×3OT3×11])被称为相机的外参矩阵(Extrinsic Matrix),描述的是世界坐标中相机的位置( T 3 × 1 T_{3\times1} T3×1),及其指向方向( R 3 × 3 R_{3\times3} R3×3)。
2. 相机坐标系到图像坐标系
相机坐标系到图像坐标系( Camera to Film,C2F),这里由三维坐标  
     
      
       
        
        
          P 
         
        
          c 
         
        
       
         ( 
        
       
         X 
        
       
         , 
        
       
         Y 
        
       
         , 
        
       
         Z 
        
       
         ) 
        
       
      
        {P_{c}(X,Y,Z)} 
       
      
    Pc(X,Y,Z) 降维到二维坐标  
     
      
       
       
         p 
        
       
         ( 
        
       
         x 
        
       
         , 
        
       
         y 
        
       
         ) 
        
       
      
        {p(x,y)} 
       
      
    p(x,y) 。
 
根据相似三角,得:
x X = y Y = f Z \frac{x}{X}=\frac{y}{Y}=\frac{f}{Z} Xx=Yy=Zf
则:
  
      
       
        
         
         
           [ 
          
          
           
            
             
             
               x 
              
             
            
           
           
            
             
             
               y 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
              
                Z 
               
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                f 
               
              
                Z 
               
              
             
            
            
             
             
               0 
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
              
              
                1 
               
              
                Z 
               
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               X 
              
             
            
           
           
            
             
             
               Y 
              
             
            
           
           
            
             
             
               Z 
              
             
            
           
          
         
           ] 
          
         
        
       
         \begin{bmatrix} {x}\\ {y}\\ {1}\\ \end{bmatrix}= \begin{bmatrix} {\frac{f}{Z}}&{0}&{0}\\ {0}&{\frac{f}{Z}}&{0}\\ {0}&{0}&{\frac{1}{Z}}\\ \end{bmatrix} \begin{bmatrix} {X}\\ {Y}\\ {Z}\\ \end{bmatrix} 
        
       
      
              xy1 
              = 
              Zf000Zf000Z1 
               
              XYZ 
              
3. 图像坐标系到像素坐标系
图像坐标系到像素坐标系(Film to Pixel,F2P)是一个简单的仿射变换 (Affine Transformation)过程,主要包括原点的移动和尺度的变换。
 
 有:
  
      
       
        
        
          u 
         
        
          = 
         
         
         
           x 
          
          
          
            d 
           
          
            x 
           
          
         
        
          + 
         
         
         
           u 
          
         
           0 
          
         
        
          , 
         
        
          v 
         
        
          = 
         
         
         
           y 
          
          
          
            d 
           
          
            y 
           
          
         
        
          + 
         
         
         
           v 
          
         
           0 
          
         
        
       
         u=\frac{x}{d_x}+u_0, v=\frac{y}{d_y}+v_0 
        
       
     u=dxx+u0,v=dyy+v0
矩阵形式:
  
      
       
        
         
         
           [ 
          
          
           
            
             
             
               u 
              
             
            
           
           
            
             
             
               v 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
              
              
                1 
               
               
               
                 d 
                
               
                 x 
                
               
              
             
            
            
             
             
               0 
              
             
            
            
             
              
              
                u 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                1 
               
               
               
                 d 
                
               
                 y 
                
               
              
             
            
            
             
              
              
                v 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               x 
              
             
            
           
           
            
             
             
               y 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
       
         \begin{bmatrix} {u}\\ {v}\\ {1}\\ \end{bmatrix}= \begin{bmatrix} {\frac{1}{d_x}}&{0}&{u_0}\\ {0}&{\frac{1}{d_y}}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix} \begin{bmatrix} {x}\\ {y}\\ {1}\\ \end{bmatrix} 
        
       
      
              uv1 
              = 
              dx1000dy10u0v01 
               
              xy1 
              
4. 相机坐标系到像素坐标系
现在开始回溯,接上一步,相机坐标系到像素坐标系(Camera to Film, C2F)有:
  
      
       
        
         
         
           [ 
          
          
           
            
             
             
               u 
              
             
            
           
           
            
             
             
               v 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
              
              
                1 
               
               
               
                 d 
                
               
                 x 
                
               
              
             
            
            
             
             
               0 
              
             
            
            
             
              
              
                u 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                1 
               
               
               
                 d 
                
               
                 y 
                
               
              
             
            
            
             
              
              
                v 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
              
                Z 
               
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                f 
               
              
                Z 
               
              
             
            
            
             
             
               0 
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
              
              
                1 
               
              
                Z 
               
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               X 
              
             
            
           
           
            
             
             
               Y 
              
             
            
           
           
            
             
             
               Z 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           1 
          
         
           Z 
          
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
               
               
                 d 
                
               
                 x 
                
               
              
             
            
            
             
             
               0 
              
             
            
            
             
              
              
                u 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                f 
               
               
               
                 d 
                
               
                 y 
                
               
              
             
            
            
             
              
              
                v 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               X 
              
             
            
           
           
            
             
             
               Y 
              
             
            
           
           
            
             
             
               Z 
              
             
            
           
          
         
           ] 
          
         
        
       
         \begin{bmatrix} {u}\\ {v}\\ {1}\\ \end{bmatrix}= \begin{bmatrix} {\frac{1}{d_x}}&{0}&{u_0}\\ {0}&{\frac{1}{d_y}}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix} \begin{bmatrix} {\frac{f}{Z}}&{0}&{0}\\ {0}&{\frac{f}{Z}}&{0}\\ {0}&{0}&{\frac{1}{Z}}\\ \end{bmatrix} \begin{bmatrix} {X}\\ {Y}\\ {Z}\\ \end{bmatrix}=\frac{1}{Z} \begin{bmatrix} {\frac{f}{d_x}}&{0}&{u_0}\\ {0}&{\frac{f}{d_y}}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix} \begin{bmatrix} {X}\\ {Y}\\ {Z}\\ \end{bmatrix} 
        
       
      
              uv1 
              = 
              dx1000dy10u0v01 
               
              Zf000Zf000Z1 
               
              XYZ 
              =Z1 
              dxf000dyf0u0v01 
               
              XYZ 
              
其中, 
     
      
       
        
        
          f 
         
         
         
           d 
          
         
           x 
          
         
        
       
         、 
        
        
        
          f 
         
         
         
           d 
          
         
           y 
          
         
        
       
      
        \frac{f}{d_x}、\frac{f}{d_y} 
       
      
    dxf、dyf 即焦距除以像素尺寸,单位为pixel,表示焦距在两个像元方向上的像素单位值。由于在相机标定过程中  
     
      
       
       
         f 
        
       
         、 
        
        
        
          d 
         
        
          x 
         
        
       
         、 
        
        
        
          d 
         
        
          y 
         
        
       
      
        {f}、{d_x}、{d_y} 
       
      
    f、dx、dy 是不能直接测量的,而其组合值  
     
      
       
        
        
          f 
         
         
         
           d 
          
         
           x 
          
         
        
       
         、 
        
        
        
          f 
         
         
         
           d 
          
         
           y 
          
         
        
       
      
        \frac{f}{d_x}、\frac{f}{d_y} 
       
      
    dxf、dyf 可通过标定得到,故可用  
     
      
       
        
        
          f 
         
        
          x 
         
        
       
         = 
        
        
        
          f 
         
         
         
           d 
          
         
           x 
          
         
        
       
         、 
        
        
        
          f 
         
        
          y 
         
        
       
         = 
        
        
        
          f 
         
         
         
           d 
          
         
           y 
          
         
        
       
      
        {f_x}=\frac{f}{d_x}、{f_y}=\frac{f}{d_y} 
       
      
    fx=dxf、fy=dyf 来表示两个组合值。那么:
  
      
       
        
         
         
           [ 
          
          
           
            
             
             
               u 
              
             
            
           
           
            
             
             
               v 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           1 
          
         
           Z 
          
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
              
                x 
               
              
             
            
            
             
             
               0 
              
             
            
            
             
              
              
                u 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                f 
               
              
                y 
               
              
             
            
            
             
              
              
                v 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               X 
              
             
            
           
           
            
             
             
               Y 
              
             
            
           
           
            
             
             
               Z 
              
             
            
           
          
         
           ] 
          
         
        
       
         \begin{bmatrix} {u}\\ {v}\\ {1}\\ \end{bmatrix}= \frac{1}{Z} \begin{bmatrix} {f_x}&{0}&{u_0}\\ {0}&{f_y}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix} \begin{bmatrix} {X}\\ {Y}\\ {Z}\\ \end{bmatrix} 
        
       
      
              uv1 
              =Z1 
              fx000fy0u0v01 
               
              XYZ 
              
若像素坐标系中两坐标轴不垂直(此时像元不是矩形,而是平行四边形),那么相机内参中还有一个偏斜系数 s s s(skew coefficient), s = f x t a n ( α ) s=f_x tan(\alpha) s=fxtan(α),有兴趣可以推导一下。

 此时:
  
      
       
        
         
         
           [ 
          
          
           
            
             
             
               u 
              
             
            
           
           
            
             
             
               v 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           1 
          
         
           Z 
          
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
              
                x 
               
              
             
            
            
             
             
               s 
              
             
            
            
             
              
              
                u 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                f 
               
              
                y 
               
              
             
            
            
             
              
              
                v 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               X 
              
             
            
           
           
            
             
             
               Y 
              
             
            
           
           
            
             
             
               Z 
              
             
            
           
          
         
           ] 
          
         
        
       
         \begin{bmatrix} {u}\\ {v}\\ {1}\\ \end{bmatrix}= \frac{1}{Z} \begin{bmatrix} {f_x}&{s}&{u_0}\\ {0}&{f_y}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix} \begin{bmatrix} {X}\\ {Y}\\ {Z}\\ \end{bmatrix} 
        
       
      
              uv1 
              =Z1 
              fx00sfy0u0v01 
               
              XYZ 
              
其中, 
     
      
       
       
         [ 
        
        
         
          
           
            
            
              f 
             
            
              x 
             
            
           
          
          
           
           
             s 
            
           
          
          
           
            
            
              u 
             
            
              0 
             
            
           
          
         
         
          
           
           
             0 
            
           
          
          
           
            
            
              f 
             
            
              y 
             
            
           
          
          
           
            
            
              v 
             
            
              0 
             
            
           
          
         
         
          
           
           
             0 
            
           
          
          
           
           
             0 
            
           
          
          
           
           
             1 
            
           
          
         
        
       
         ] 
        
       
      
        \begin{bmatrix} {f_x}&{s}&{u_0}\\ {0}&{f_y}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix} 
       
      
     
             fx00sfy0u0v01 
              为相机的内参矩阵(Intrinsics Matrix),描述相机坐标系到像素坐标系的变换关系,反应了相机自身的属性,通常用符号 
     
      
       
       
         K 
        
       
      
        K 
       
      
    K表示(注意,很多版本里的内参矩阵不含偏斜系数,即默认其为0)。在相机坐标系中, 
     
      
       
       
         Z 
        
       
      
        Z 
       
      
    Z 对应为三维点的深度,常被称为尺度因子 
     
      
       
       
         λ 
        
       
      
        \lambda 
       
      
    λ,则相机坐标系到像素坐标系:
  
      
       
        
        
          λ 
         
         
         
           [ 
          
          
           
            
             
             
               u 
              
             
            
           
           
            
             
             
               v 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
              
                x 
               
              
             
            
            
             
             
               s 
              
             
            
            
             
              
              
                u 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                f 
               
              
                y 
               
              
             
            
            
             
              
              
                v 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               X 
              
             
            
           
           
            
             
             
               Y 
              
             
            
           
           
            
             
             
               Z 
              
             
            
           
          
         
           ] 
          
         
        
       
         \lambda\begin{bmatrix} {u}\\ {v}\\ {1}\\ \end{bmatrix}= \begin{bmatrix} {f_x}&{s}&{u_0}\\ {0}&{f_y}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix} \begin{bmatrix} {X}\\ {Y}\\ {Z}\\ \end{bmatrix} 
        
       
     λ 
              uv1 
              = 
              fx00sfy0u0v01 
               
              XYZ 
              
 令:
  
      
       
        
        
          K 
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
              
                x 
               
              
             
            
            
             
             
               s 
              
             
            
            
             
              
              
                u 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                f 
               
              
                y 
               
              
             
            
            
             
              
              
                v 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
       
         K=\begin{bmatrix} {f_x}&{s}&{u_0}\\ {0}&{f_y}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix} 
        
       
     K= 
              fx00sfy0u0v01 
              
 有:
  
      
       
        
        
          λ 
         
        
          p 
         
        
          = 
         
        
          K 
         
         
         
           P 
          
         
           c 
          
         
        
       
         \lambda p=KP_c 
        
       
     λp=KPc
补充: Z = 1 Z=1 Z=1 的平面称为归一化平面,归一化平面上的坐标称为归一化坐标。
5. 世界坐标系到像素坐标系
世界坐标系到像素坐标系(World to Pixel,W2P),整个串起来:
  
      
       
        
        
          λ 
         
         
         
           [ 
          
          
           
            
             
             
               u 
              
             
            
           
           
            
             
             
               v 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
              
                x 
               
              
             
            
            
             
             
               s 
              
             
            
            
             
              
              
                u 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                f 
               
              
                y 
               
              
             
            
            
             
              
              
                v 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               X 
              
             
            
           
           
            
             
             
               Y 
              
             
            
           
           
            
             
             
               Z 
              
             
            
           
          
         
           ] 
          
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
              
              
                f 
               
              
                x 
               
              
             
            
            
             
             
               s 
              
             
            
            
             
              
              
                u 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
              
              
                f 
               
              
                y 
               
              
             
            
            
             
              
              
                v 
               
              
                0 
               
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
              
              
                R 
               
               
               
                 3 
                
               
                 × 
                
               
                 3 
                
               
              
             
            
            
             
              
              
                T 
               
               
               
                 3 
                
               
                 × 
                
               
                 1 
                
               
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               U 
              
             
            
           
           
            
             
             
               V 
              
             
            
           
           
            
             
             
               W 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
       
         \lambda\begin{bmatrix} {u}\\ {v}\\ {1}\\ \end{bmatrix}= \begin{bmatrix} {f_x}&{s}&{u_0}\\ {0}&{f_y}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix} \begin{bmatrix} {X}\\ {Y}\\ {Z}\\ \end{bmatrix}=\begin{bmatrix} {f_x}&{s}&{u_0}\\ {0}&{f_y}&{v_0}\\ {0}&{0}&{1}\\ \end{bmatrix}\begin{bmatrix} {R_{3\times3}}&{T_{3\times1}}\\ \end{bmatrix} \begin{bmatrix} {U}\\ {V}\\ {W}\\ {1}\\ \end{bmatrix} 
        
       
     λ 
              uv1 
              = 
              fx00sfy0u0v01 
               
              XYZ 
              = 
              fx00sfy0u0v01 
              [R3×3T3×1] 
              UVW1 
              
世界坐标系到像素坐标系的转换实际上表达的是透视投影中空间点到像点的投影关系,所以把该转换矩阵叫做投影矩阵(Projection Matrix),常用 M M M表示 ,通过矩阵运算可知投影矩阵是一个3x4的矩阵,它是内参矩阵和外参矩阵的乘积。
λ p = K [ R 3 × 3 T 3 × 1 ] [ P w 1 ] = M [ P w 1 ] \lambda {p}=K \begin{bmatrix} {R_{3\times3}}&{T_{3\times1}}\\ \end{bmatrix} \begin{bmatrix} {P_w}\\ {1}\\ \end{bmatrix}=M\begin{bmatrix} {P_w}\\ {1}\\ \end{bmatrix} λp=K[R3×3T3×1][Pw1]=M[Pw1]
另外,若使用其次矩阵表达,矩阵维度会有所变化。
 
二、相机畸变
由于相机透镜的固有特性(凸透镜汇聚光线、凹透镜发散光线)导致成像直线会变成曲线。
相机畸变主要有径向畸变(radial distortion)和切向畸变 (tangential distortion)。
畸变特性:
- 径向畸变主要由于透镜的几何形状改变了直线的形状。
- 切向畸变主要由于透镜安装的时候没有与图像平面完美平行。
- 实际经验中,图像几何更加关注径向畸变,因此有时候畸变图像校正的过程可能会忽略切向畸变。
  
一)径向畸变
径向畸变主要包括:
- 桶形畸变 (barrel distortion)
- 枕形畸变 (pincushion distortion)
- 八字胡畸变 (mustache distortion)
  
可以看出,径向畸变图像的特点是:
- 中心对称
- 直线变曲
| 畸变 | 特点 | 场景 | 
|---|---|---|
| 桶形畸变 | 中心放大了,离光心越远,图像放大率越小 | 鱼眼镜头,广角/全景图片 | 
| 枕形畸变 | 枕形畸变挤压了图片,(就像压扁的枕头) | 长焦镜头经常会出现枕形畸变,以消除球体效应 | 
| 八字胡畸变 | 上述两种类型的混合,它开始时是靠近光轴的桶形畸变,然后逐渐向图像边缘枕形畸变 | 
径向畸变矫正
一般情况下,图像的径向畸变可用一个低阶多项式模型来表示:
x u n d i s t = x d i s t ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y u n d i s t = y d i s t ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) x_{undist}=x_{dist}(1+k_1r^2+k_2r^4+k_3r^6) \\ y_{undist}=y_{dist}(1+k_1r^2+k_2r^4+k_3r^6) xundist=xdist(1+k1r2+k2r4+k3r6)yundist=ydist(1+k1r2+k2r4+k3r6)
其中 r 2 = x d i s t 2 + y d i s t 2 r^2=x_{dist}^2+y_{dist}^2 r2=xdist2+ydist2, ( x d i s t , y d i s t ) (x_{dist},y_{dist}) (xdist,ydist) 是归一化后的相机坐标系的点,即坐标原点已经移到主点,并且像素坐标除以焦距, x d i s t = X Z = u − u o f x x_{dist}=\frac{X}{Z}=\frac{u-u_o}{f_x} xdist=ZX=fxu−uo , y d i s t = Y Z = v − v o f y y_{dist}=\frac{Y}{Z}=\frac{v-v_o}{f_y} ydist=ZY=fyv−vo,可以从畸变的图像中得到。 k 1 、 k 2 、 k 3 k_1、k_2、k_3 k1、k2、k3 是径向畸变参数(一般可使用多项式前两项,如鱼眼等畸变较大的相机会使用第三项,默认用三项总是没错的),可以用过棋盘格标定得到。
二)切向畸变
切向畸变由相机senser与透镜不平行导致。
 
切向畸变校正
图像的切向畸变也可用一个低阶多项式模型来表示:
  
      
       
        
         
         
           x 
          
         
           undist  
          
         
        
          = 
         
         
         
           x 
          
         
           dist  
          
         
        
          + 
         
         
         
           [ 
          
         
           2 
          
          
          
            p 
           
          
            1 
           
          
          
          
            x 
           
          
            dist  
           
          
          
          
            y 
           
          
            dist  
           
          
         
           + 
          
          
          
            p 
           
          
            2 
           
          
          
          
            ( 
           
           
           
             r 
            
           
             2 
            
           
          
            + 
           
          
            2 
           
           
           
             x 
            
           
             dist  
            
           
             2 
            
           
          
            ) 
           
          
         
           ] 
          
         
         
         
         
           y 
          
         
           undist  
          
         
        
          = 
         
         
         
           y 
          
         
           dist  
          
         
        
          + 
         
         
         
           [ 
          
          
          
            p 
           
          
            1 
           
          
          
          
            ( 
           
           
           
             r 
            
           
             2 
            
           
          
            + 
           
          
            2 
           
           
           
             y 
            
           
             dist  
            
           
             2 
            
           
          
            ) 
           
          
         
           + 
          
         
           2 
          
          
          
            p 
           
          
            2 
           
          
          
          
            x 
           
          
            dist  
           
          
          
          
            y 
           
          
            dist  
           
          
         
           ] 
          
         
        
       
         x_{\text {undist }}=x_{\text {dist }}+\left[2 p_{1} x_{\text {dist }} y_{\text {dist }}+p_{2}\left(r^{2}+2 x_{\text {dist }}^{2}\right)\right]\\y_{\text {undist }}=y_{\text {dist }}+\left[p_{1}\left(r^{2}+2 y_{\text {dist }}^{2}\right)+2 p_{2} x_{\text {dist }} y_{\text {dist }}\right ] 
        
       
     xundist =xdist +[2p1xdist ydist +p2(r2+2xdist 2)]yundist =ydist +[p1(r2+2ydist 2)+2p2xdist ydist ]
p 1 p_1 p1 和 p 2 p_2 p2 为切向畸变参数。
三)总畸变校正
同时考虑径向畸变和切向畸变:
 
      
       
        
         
         
           x 
          
          
          
            u 
           
          
            n 
           
          
            d 
           
          
            i 
           
          
            s 
           
          
            t 
           
          
         
        
          = 
         
         
         
           x 
          
          
          
            d 
           
          
            i 
           
          
            s 
           
          
            t 
           
          
         
        
          ( 
         
        
          1 
         
        
          + 
         
         
         
           k 
          
         
           1 
          
         
         
         
           r 
          
         
           2 
          
         
        
          + 
         
         
         
           k 
          
         
           2 
          
         
         
         
           r 
          
         
           4 
          
         
        
          + 
         
         
         
           k 
          
         
           3 
          
         
         
         
           r 
          
         
           6 
          
         
        
          ) 
         
        
          + 
         
         
         
           [ 
          
         
           2 
          
          
          
            p 
           
          
            1 
           
          
          
          
            x 
           
           
           
             d 
            
           
             i 
            
           
             s 
            
           
             t 
            
           
          
          
          
            y 
           
           
           
             d 
            
           
             i 
            
           
             s 
            
           
             t 
            
           
          
         
           + 
          
          
          
            p 
           
          
            2 
           
          
          
          
            ( 
           
           
           
             r 
            
           
             2 
            
           
          
            + 
           
          
            2 
           
           
           
             x 
            
            
            
              d 
             
            
              i 
             
            
              s 
             
            
              t 
             
            
           
             2 
            
           
          
            ) 
           
          
         
           ] 
          
         
         
         
         
           y 
          
          
          
            u 
           
          
            n 
           
          
            d 
           
          
            i 
           
          
            s 
           
          
            t 
           
          
         
        
          = 
         
         
         
           y 
          
          
          
            d 
           
          
            i 
           
          
            s 
           
          
            t 
           
          
         
        
          ( 
         
        
          1 
         
        
          + 
         
         
         
           k 
          
         
           1 
          
         
         
         
           r 
          
         
           2 
          
         
        
          + 
         
         
         
           k 
          
         
           2 
          
         
         
         
           r 
          
         
           4 
          
         
        
          + 
         
         
         
           k 
          
         
           3 
          
         
         
         
           r 
          
         
           6 
          
         
        
          ) 
         
        
          + 
         
         
         
           [ 
          
          
          
            p 
           
          
            1 
           
          
          
          
            ( 
           
           
           
             r 
            
           
             2 
            
           
          
            + 
           
          
            2 
           
           
           
             y 
            
            
            
              d 
             
            
              i 
             
            
              s 
             
            
              t 
             
            
           
             2 
            
           
          
            ) 
           
          
         
           + 
          
         
           2 
          
          
          
            p 
           
          
            2 
           
          
          
          
            x 
           
           
           
             d 
            
           
             i 
            
           
             s 
            
           
             t 
            
           
          
          
          
            y 
           
           
           
             d 
            
           
             i 
            
           
             s 
            
           
             t 
            
           
          
         
           ] 
          
         
        
       
         x_{{undist }}=x_{dist}(1+k_1r^2+k_2r^4+k_3r^6)+\left[2 p_{1} x_{{dist }} y_{{dist }}+p_{2}\left(r^{2}+2 x_{dist }^{2}\right)\right]\\ y_{ {undist }}=y_{dist}(1+k_1r^2+k_2r^4+k_3r^6)+\left[p_{1}\left(r^{2}+2 y_{{dist }}^{2}\right)+2 p_{2} x_ {dist }y_{ {dist }}\right] 
        
       
     xundist=xdist(1+k1r2+k2r4+k3r6)+[2p1xdistydist+p2(r2+2xdist2)]yundist=ydist(1+k1r2+k2r4+k3r6)+[p1(r2+2ydist2)+2p2xdistydist]
 共有5个畸变参数 
     
      
       
        
        
          k 
         
        
          1 
         
        
       
         、 
        
        
        
          k 
         
        
          2 
         
        
       
         、 
        
        
        
          k 
         
        
          3 
         
        
       
         、 
        
        
        
          p 
         
        
          1 
         
        
       
         、 
        
        
        
          p 
         
        
          2 
         
        
       
      
        k_1、k_2、k_3、p_1、p_2 
       
      
    k1、k2、k3、p1、p2,这5个畸变参数与内参矩阵一起,都是需要进行相机标定。但是在OpenCV相机标定时输出顺序是  
     
      
       
        
        
          k 
         
        
          1 
         
        
       
         、 
        
        
        
          k 
         
        
          2 
         
        
       
         、 
        
        
        
          p 
         
        
          1 
         
        
       
         、 
        
        
        
          p 
         
        
          2 
         
        
       
         、 
        
        
        
          k 
         
        
          3 
         
        
       
      
        k_1、k_2、p_1、p_2、k_3 
       
      
    k1、k2、p1、p2、k3,因为  
     
      
       
        
        
          k 
         
        
          3 
         
        
       
      
        k_3 
       
      
    k3 不重要,很多情况下不需要。(是不是很真实?)
参考:
 [1] CSE/EE486 Computer Vision I
 [2] 一文详解相机标定算法原理
 [3] 立体视觉入门指南(1):坐标系与相机参数
 [4] 相机标定(Camera calibration)原理及步骤



















