M:
- intrinsic matrix
 [ f x s c x 0 f y c y 0 0 1 ] \begin{bmatrix}f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1\end{bmatrix} fx00sfy0cxcy1 
 
     
      
       
       
         ( 
        
        
        
          c 
         
        
          x 
         
        
       
         , 
        
        
        
          c 
         
        
          y 
         
        
       
         ) 
        
       
      
        (c_x, c_y) 
       
      
    (cx,cy): camera center in pixels
  
     
      
       
       
         ( 
        
        
        
          f 
         
        
          x 
         
        
       
         , 
        
        
        
          f 
         
        
          y 
         
        
       
         ) 
        
       
      
        (f_x, f_y) 
       
      
    (fx,fy): focal length in pixels
 
 
     
      
       
        
        
          X 
         
        
          Z 
         
        
       
         = 
        
        
        
          u 
         
         
         
           f 
          
         
           x 
          
         
        
       
      
        \frac{X}{Z} = \frac{u}{f_x} 
       
      
    ZX=fxu
 其中  
     
      
       
        
        
          f 
         
        
          x 
         
        
       
         = 
        
        
        
          f 
         
         
         
           p 
          
         
           x 
          
         
        
       
      
        f_x = \frac{f}{p_x} 
       
      
    fx=pxf,  
     
      
       
       
         f 
        
       
      
        f 
       
      
    f 是focal length in world unites (millimeters),  
     
      
       
        
        
          p 
         
        
          x 
         
        
       
      
        p_x 
       
      
    px像素宽度, 通过胶片宽度除以像素X方向的个数得到.
下面来看skew
s = f x t a n α s = f_x tan \alpha s=fxtanα
假设每 
     
      
       
        
        
          p 
         
        
          y 
         
        
       
      
        p_y 
       
      
    py在 
     
      
       
        
        
          p 
         
        
          x 
         
        
       
      
        p_x 
       
      
    px上面的偏移是  
     
      
       
       
         b 
        
       
      
        b 
       
      
    b
 那么 
     
      
       
       
         t 
        
       
         a 
        
       
         n 
        
       
         α 
        
       
         = 
        
        
         
         
           b 
          
          
          
            p 
           
          
            x 
           
          
         
         
         
           p 
          
         
           y 
          
         
        
       
      
        tan \alpha = \frac{bp_x}{p_y} 
       
      
    tanα=pybpx
 
那么 [ f x s c x 0 f y c y 0 0 1 ] ∗ [ X Z Y Z 1 ] \begin{bmatrix}f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1\end{bmatrix} *\begin{bmatrix} \frac{X}{Z} \\ \frac{Y}{Z} \\ 1 \end{bmatrix} fx00sfy0cxcy1 ∗ ZXZY1 
第一行可得 f x ∗ X Z + s ∗ Y Z + c x = f x ∗ X Z + f x t a n α ∗ Y Z + c x f_x * \frac{X}{Z} +s * \frac{Y}{Z} + c_x = f_x * \frac{X}{Z} + f_x tan \alpha * \frac{Y}{Z} + c_x fx∗ZX+s∗ZY+cx=fx∗ZX+fxtanα∗ZY+cx
这里 f x t a n α ∗ Y Z f_x tan \alpha * \frac{Y}{Z} fxtanα∗ZY有两种理解方式, 第一种是通过 t a n α ∗ Y tan \alpha *Y tanα∗Y将在世界坐标系中将 Y Y Y转成 X X X方向的偏移 b X bX bX, 然后将这个偏移通过乘以 f x z \frac{f_x}{z} zfx转成x方向的像素偏移
第二种是 f x t a n α ∗ Y Z = f p x ∗ b p x p y ∗ Y Z = b f y ∗ Y Z f_x tan \alpha * \frac{Y}{Z} = \frac{f}{p_x}*\frac{bp_x}{p_y} * \frac{Y}{Z} = bf_y*\frac{Y}{Z} fxtanα∗ZY=pxf∗pybpx∗ZY=bfy∗ZY 先算在y方向有多少像素, 再乘以 b b b得到偏移
第二行注意如果有skew, 那么 f y f_y fy得用 f y c o s α \frac{f_y}{cos\alpha} cosαfy代替, 因为y轴变斜了, 相应也变长了
https://towardsdatascience.com/camera-calibration-fda5beb373c3
https://towardsdatascience.com/what-are-intrinsic-and-extrinsic-camera-parameters-in-computer-vision-7071b72fb8ec


















