0


计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变

目录

0 拍照的死亡角度

拍照死亡角度一般指的是将自己脸盆子拍得特别大,拍出用鼻孔看人的狰狞面目,比如下面这张照片。在拍照的死亡角度下,镜头畸变会产生失真,让你的体态更圆润、厚实,因此部分美颜软件里人像修正中会有“去畸变”这一项功能。本文就从计算机视觉的角度谈一谈镜头畸变原理。

在这里插入图片描述

1 透视相机模型

透视相机模型描述了三维空间中的点与二维图像平面上像素间的映射关系

根据小孔成像原理,透视相机的成像点与空间点之间方向相反,如图所示。为得到与空间点方向相同的成像点,将成像面沿着光轴移动到归一化成像面,接下来的讨论以归一化成像面为准。

在这里插入图片描述
在确定归一化成像面后,从空间点

     W
    
    ⁣
   
    
     X
    
    
     ~
    
   
  
  
   ^W\!\tilde{X}
  
 
WX~到像素点

 
  
   
    
     u
    
    
     ~
    
   
  
  
   \tilde{u}
  
 
u~的映射可分为两步:
  1. 将 W  ⁣ X ~ ^W!\tilde{X} WX映射到归一化成像面的成像点 C  ⁣ x ~ ^C!\tilde{x} Cx,对应的映射关系称为**相机外参(Extrinsic)**;
  2. 将 C  ⁣ x ~ ^C!\tilde{x} Cx映射到像素平面的像素 u ~ \tilde{u} u,对应的映射关系称为**相机内参(Intrinsic)**。上述各点均处于投影空间,采用齐次坐标。

在这里插入图片描述

2 相机矩阵

设世界坐标系

    {
   
   
    W
   
   
    }
   
  
  
   \left\{ \boldsymbol{W} \right\}
  
 
{W}相对于透视相机坐标系

 
  
   
    {
   
   
    C
   
   
    }
   
  
  
   \left\{ \boldsymbol{C} \right\}
  
 
{C}的位姿为

 
  
   
    
     
     
      W
     
     
      C
     
     ⁣
    
     T
    
    
     =
    
    
     
      [
     
     
      
       
        
         
          
           
           
            W
           
           
            C
           
             ⁣ ⁣ ⁣
          
           R
          
         
        
       
       
        
         
          
           
           
            C
           
           ⁣
          
           
            p
           
           
            
             w
            
            
             0
            
           
          
         
        
       
      
      
       
        
         
          0
         
        
       
       
        
         
          1
         
        
       
      
     
     
      ]
     
    
   
   
    _{\boldsymbol{W}}^{\boldsymbol{C}}\!\boldsymbol{T}=\left[ \begin{matrix} _{\boldsymbol{W}}^{\boldsymbol{C}}\;\!\!\!\boldsymbol{R}& ^{\boldsymbol{C}}\!\boldsymbol{p}_{w_0}\\ 0& 1\\\end{matrix} \right]
   
  
 WC​T=[WC​R0​Cpw0​​1​]

考虑到从三维空间降维到二维平面,设世界坐标值

      [
     
     
      
       
        
         
          
           
           
            
             W
             ⁣
           
           ⁣
          
           X
          
         
        
       
       
        
         
          
           
           
            
             W
             ⁣
           
           ⁣ ⁣  ⁣ 
          
           Y
          
         
        
       
       
        
         
          
           
           
            
             W
             ⁣
           
           ⁣
          
           Z
          
         
        
       
       
        
         
          1
         
        
       
      
     
     
      ]
     
    
    
     T
    
   
  
  
   \left[ \begin{matrix} ^{\boldsymbol{W}\!}\!X& ^{\boldsymbol{W}\!}\!\!\:\!\:Y& ^{\boldsymbol{W}\!}\!Z& 1\\\end{matrix} \right] ^T
  
 
[WX​WY​WZ​1​]T,则

 
  
   
    
     
     
      C
     
     ⁣
    
     
      x
     
     
      ~
     
    
    
     =
    
    
     
      [
     
     
      
       
        
         
          1
         
        
       
       
        
         
          0
         
        
       
       
        
         
          0
         
        
       
       
        
         
          0
         
        
       
      
      
       
        
         
          0
         
        
       
       
        
         
          1
         
        
       
       
        
         
          0
         
        
       
       
        
         
          0
         
        
       
      
      
       
        
         
          0
         
        
       
       
        
         
          0
         
        
       
       
        
         
          1
         
        
       
       
        
         
          0
         
        
       
      
     
     
      ]
     
    
    
     
      
       ,
      
     
     
      W
     
     
      C
     
     ⁣
    
     
      T
     
     
        
      
       W
      
     
     ⁣ ⁣
    
     
      X
     
     
      ~
     
    
    
     =
    
    
     
      [
     
     
      
       
        
         
          
           
           
            C
           
           ⁣
          
           X
          
         
        
       
      
      
       
        
         
          
           
           
            C
           
          
          
           Y
          
         
        
       
      
      
       
        
         
          
           
           
            C
           
           ⁣
          
           Z
          
         
        
       
      
     
     
      ]
     
    
   
   
    ^{\boldsymbol{C}}\!\tilde{x}=\left[ \begin{matrix} 1& 0& 0& 0\\ 0& 1& 0& 0\\ 0& 0& 1& 0\\\end{matrix} \right] {\color{white} ,}_{\boldsymbol{W}}^{\boldsymbol{C}}\!\boldsymbol{T}^{\,\,\boldsymbol{W}}\!\!\tilde{X}=\left[ \begin{array}{c} ^{\boldsymbol{C}}\!X\\ ^{\boldsymbol{C}}Y\\ ^{\boldsymbol{C}}\!Z\\\end{array} \right]
   
  
 Cx~=⎣⎡​100​010​001​000​⎦⎤​,WC​TWX~=⎣⎡​CXCYCZ​⎦⎤​

在上述推导过程中,称

      M
     
     
      E
     
    
    
     =
    
    
     
      [
     
     
      
       
        
         
          1
         
        
       
       
        
         
          0
         
        
       
       
        
         
          0
         
        
       
       
        
         
          0
         
        
       
      
      
       
        
         
          0
         
        
       
       
        
         
          1
         
        
       
       
        
         
          0
         
        
       
       
        
         
          0
         
        
       
      
      
       
        
         
          0
         
        
       
       
        
         
          0
         
        
       
       
        
         
          1
         
        
       
       
        
         
          0
         
        
       
      
     
     
      ]
     
    
    
     
      
       ,
      
     
     
      W
     
     
      C
     
     ⁣
    
     T
    
    
     =
    
    
     
      [
     
     
      
       
        
         
          
           
           
            W
           
           
            C
           
             ⁣ ⁣ ⁣
          
           R
          
         
        
       
       
        
         
          
           
           
            C
           
           ⁣
          
           
            p
           
           
            
             w
            
            
             0
            
           
          
         
        
       
      
     
     
      ]
     
    
   
   
    \boldsymbol{M}_{\boldsymbol{E}}=\left[ \begin{matrix} 1& 0& 0& 0\\ 0& 1& 0& 0\\ 0& 0& 1& 0\\\end{matrix} \right] {\color{white} ,}_{\boldsymbol{W}}^{\boldsymbol{C}}\!\boldsymbol{T}=\left[ \begin{matrix} _{\boldsymbol{W}}^{\boldsymbol{C}}\;\!\!\!\boldsymbol{R}& ^{\boldsymbol{C}}\!\boldsymbol{p}_{w_0}\\\end{matrix} \right]
   
  
 ME​=⎣⎡​100​010​001​000​⎦⎤​,WC​T=[WC​R​Cpw0​​​]

相机外参矩阵。通常令尺度因子

     C
    
    ⁣
   
    Z
   
   
    =
   
   
    1
   
  
  
   ^{\boldsymbol{C}}\!Z=1
  
 
CZ=1,

 
  
   
    
    
     C
    
    ⁣
   
    
     x
    
    
     ~
    
   
   
    =
   
   
    
     
      [
     
     
      
       
        
         
          
           
            
            
             C
            
            ⁣
           
            X
           
          
          
           
            
            
             C
            
            ⁣
           
            Z
           
          
         
        
       
       
        
         
          
           
            
            
             C
            
           
           
            Y
           
          
          
           
            
            
             C
            
            ⁣
           
            Z
           
          
         
        
       
       
        
         
          1
         
        
       
      
     
     
      ]
     
    
    
     T
    
   
   
    =
   
   
    
     
      [
     
     
      
       
        
         
          
           
           
            C
           
           ⁣
          
           
            x
           
           
            ^
           
          
         
        
       
       
        
         
          
           
           
            C
           
           ⁣
          
           
            y
           
           
            ^
           
          
         
        
       
       
        
         
          1
         
        
       
      
     
     
      ]
     
    
    
     T
    
   
  
  
   ^{\boldsymbol{C}}\!\tilde{x}=\left[ \begin{matrix} \frac{^{\boldsymbol{C}}\!X}{^{\boldsymbol{C}}\!Z}& \frac{^{\boldsymbol{C}}Y}{^{\boldsymbol{C}}\!Z}& 1\\\end{matrix} \right] ^T=\left[ \begin{matrix} ^{\boldsymbol{C}}\!\hat{x}& ^{\boldsymbol{C}}\!\hat{y}& 1\\\end{matrix} \right] ^T
  
 
Cx~=[CZCX​​CZCY​​1​]T=[Cx^​Cy^​​1​]T

     C
    
    ⁣
   
    
     x
    
    
     ~
    
   
  
  
   ^C\!\tilde{x}
  
 
Cx~到像素

 
  
   
    
     u
    
    
     ~
    
   
  
  
   \tilde{u}
  
 
u~的映射用三维**内参矩阵
  
   
    
     
      K
     
    
    
     K
    
   
  K**来表示,即

 
  
   
    
     
      u
     
     
      ~
     
    
    
     =
    
    
     
      K
     
     
      C
     
     ⁣
    
     
      x
     
     
      ~
     
    
    
     =
    
    
     
      [
     
     
      
       
        
         
          
           f
          
          
           u
          
         
        
       
       
        
         
          s
         
        
       
       
        
         
          
           c
          
          
           u
          
         
        
       
      
      
       
        
         
          0
         
        
       
       
        
         
          
           f
          
          
           v
          
         
        
       
       
        
         
          
           c
          
          
           v
          
         
        
       
      
      
       
        
         
          0
         
        
       
       
        
         
          0
         
        
       
       
        
         
          1
         
        
       
      
     
     
      ]
     
     
    
      
     
      C
     
     ⁣
    
     
      x
     
     
      ~
     
    
   
   
    \tilde{u}=\boldsymbol{K}^C\!\tilde{x}=\left[ \begin{matrix} f_u& s& c_u\\ 0& f_v& c_v\\ 0& 0& 1\\\end{matrix} \right] \,\,^C\!\tilde{x}
   
  
 u~=KCx~=⎣⎡​fu​00​sfv​0​cu​cv​1​⎦⎤​Cx~

其中

  • 如图(a)所示,参数 c u c_u cu​、 c v c_v cv​用于中心映射——将光轴与归一化成像面的交点,即成像面中心点映射到像素平面中心,其取决于拜耳阵列与光轴如何对齐。
  • 如图(b)所示,参数 f u f_u fu​、 f v f_v fv​用于归一化——将矩形的传感器阵列映射为正方形
  • 如图©所示,参数 s s s用于正交化——当传感器阵列不正交或传感器平面与光轴不垂直时,需要引入 纠正畸变。

在这里插入图片描述

3 镜头畸变

上述透视相机模型基于针孔无限小的假设,但在现实中,光线通过镜头将使相机内部复杂化,产生明显的径向失真——场景中的线条在图像中显示为曲线。**径向畸变(Radial Distortion)**有两种类型:

  • 筒体畸变(Barrel Distortion)
  • 枕形失真(Pincushion Distortion)

此外由于相机组装过程中,透镜不能和成像面严格平行,会引入**切向畸变(Tangential Distortion)**。

在这里插入图片描述
针对具有镜头畸变的相机,不能直接应用透视相机模型,通常需要先通过多项式模型修正这种几何偏差,即:

     {
    
    
     
      
       
        
         
          
           x
          
          
           ^
          
         
         
          =
         
         
          x
         
         
          
           (
          
          
           1
          
          
           +
          
          
           
            κ
           
           
            1
           
          
          
           
            r
           
           
            2
           
          
          
           +
          
          
           
            κ
           
           
            2
           
          
          
           
            r
           
           
            4
           
          
          
           )
          
         
         
          +
         
         
          2
         
         
          
           p
          
          
           1
          
         
         
          x
         
         
          y
         
         
          +
         
         
          
           p
          
          
           2
          
         
         
          
           (
          
          
           
            r
           
           
            2
           
          
          
           +
          
          
           2
          
          
           
            x
           
           
            2
           
          
          
           )
          
         
        
       
      
     
     
      
       
        
         
          
           y
          
          
           ^
          
         
         
          =
         
         
          y
         
         
          
           (
          
          
           1
          
          
           +
          
          
           
            κ
           
           
            1
           
          
          
           
            r
           
           
            2
           
          
          
           +
          
          
           
            κ
           
           
            2
           
          
          
           
            r
           
           
            4
           
          
          
           )
          
         
         
          +
         
         
          
           p
          
          
           1
          
         
         
          
           (
          
          
           
            r
           
           
            2
           
          
          
           +
          
          
           2
          
          
           
            y
           
           
            2
           
          
          
           )
          
         
         
          +
         
         
          2
         
         
          
           p
          
          
           2
          
         
         
          x
         
         
          y
         
        
       
      
     
    
   
   
    \begin{cases} \hat{x}=x\left( 1+\kappa _1r^2+\kappa _2r^4 \right) +2p_1xy+p_2\left( r^2+2x^2 \right)\\ \hat{y}=y\left( 1+\kappa _1r^2+\kappa _2r^4 \right) +p_1\left( r^2+2y^2 \right) +2p_2xy\\\end{cases}
   
  
 {x^=x(1+κ1​r2+κ2​r4)+2p1​xy+p2​(r2+2x2)y^​=y(1+κ1​r2+κ2​r4)+p1​(r2+2y2)+2p2​xy​

其中

     r
    
    
     2
    
   
   
    =
   
   
    
     x
    
    
     2
    
   
   
    +
   
   
    
     y
    
    
     2
    
   
  
  
   r^2=x^2+y^2
  
 
r2=x2+y2,

 
  
   
    
     κ
    
    
     1
    
   
  
  
   \kappa _1
  
 
κ1​、

 
  
   
    
     κ
    
    
     2
    
   
  
  
   \kappa _2
  
 
κ2​称为**径向畸变参数**,

 
  
   
    
     p
    
    
     1
    
   
  
  
   p_1
  
 
p1​、

 
  
   
    
     p
    
    
     2
    
   
  
  
   p_2
  
 
p2​称为**切向畸变参数**; 

 
  
   
    (
   
   
    x
   
   
    ,
   
   
    y
   
   
    )
   
  
  
   (x,y)
  
 
(x,y)为畸变坐标,

 
  
   
    (
   
   
    
     x
    
    
     ^
    
   
   
    ,
   
   
    
     y
    
    
     ^
    
   
   
    )
   
  
  
   \left( \hat{x},\hat{y} \right)
  
 
(x^,y^​)为无畸变坐标。

在这里插入图片描述


🚀 计算机视觉基础教程说明

章号 内容
0 色彩空间与数字成像
1 计算机几何基础
2 图像增强、滤波、金字塔
3 图像特征提取
4 图像特征描述
5 图像特征匹配
6 立体视觉
7 项目实战


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《机器人原理与技术》
  • 《机器学习强基计划》
  • 《计算机视觉教程》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇


本文转载自: https://blog.csdn.net/FRIGIDWINTER/article/details/123966382
版权归原作者 Mr.Winter` 所有, 如有侵权,请联系我们删除。

“计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变”的评论:

还没有评论