• 针孔相机投影模型


    2022-11-26

    为什么图像降采样后,相机内参需要等比例变换

    ——————————
    本文将涉及 3 个坐标系——相机、图像和世界坐标系。

    相机:透视投影(perspective projection)

    [ x c y c f ] = λ [ X c Y c Z c ]

    [xcycf]" role="presentation" style="position: relative;">[xcycf]
    = \lambda
    [XcYcZc]" role="presentation" style="position: relative;">[XcYcZc]
    xcycf=λXcYcZc
    上面的式子,是要取向量相等,则各元素相等。并不是齐次坐标的 up to a scale。
    其中,
    X c = [ X c Y c Z c ] \mathbf{X}_c =
    [XcYcZc]" role="presentation" style="position: relative;">[XcYcZc]
    Xc=XcYcZc

    是三维场景下的点 X \mathbf{X} X相机坐标系下的坐标。
    λ = f Z \lambda=\frac{f}{Z} λ=Zf
    在这里插入图片描述
    这可以用一个关于齐次坐标线性映射来表示(等式左右两边相差一个常数,the equation is only up to a scale factor)
    [ x c y c f ] ⋍ [ 1 0 0 0 0 1 0 0 0 0 1 0 ] [ X c Y c Z c 1 ]
    [xcycf]" role="presentation" style="position: relative;">[xcycf]
    \backsimeq
    [100001000010]" role="presentation" style="position: relative;">[100001000010]
    [XcYcZc1]" role="presentation" style="position: relative;">[XcYcZc1]
    xcycf100010001000XcYcZc1

    图像(相机内部参数,intrinsic/internal camera parameters)

    注意,上面的 [ x c , y c ]

    [xc,yc]" role="presentation" style="position: relative;">[xc,yc]
    [xc,yc]
    是在图 2 中 y c p x c y_c p x_c ycpxc坐标系下的二维坐标。
    k u x c = u − u 0 k_u x_c=u-u_0 kuxc=uu0
    k v y c = v 0 − v k_v y_c=v_0-v kvyc=v0v
    其中 k k k 的单位是
    [ p i x e l s / l e n g t h ] [pixels/length] [pixels/length]
    pixels是指高度或者宽度方向上的像素数目,length是指图像的高度值或宽度值(单位为米)。

    注意:上面的 u , v , u 0 , v 0 u,v,u_0,v_0 u,v,u0,v0 是同一个点在 uv 坐标系下的坐标。

    x c , y c x_c,y_c xc,yc 是在 x c p y c x_c p y_c xcpyc 坐标系下的坐标。在一个等式中,出现了同一个点在不同坐标系下的坐标。

    在这里插入图片描述

    上式可以表示为
    x = [ u v 1 ] = [ f k u 0 u 0 0 − f k v v 0 0 0 1 ] [ x c y c f ] = C [ x c y c f ] \mathbf{x}=

    [uv1]" role="presentation" style="position: relative;">[uv1]
    =
    [fku0u00fkvv0001]" role="presentation" style="position: relative;">[fku0u00fkvv0001]
    [xcycf]" role="presentation" style="position: relative;">[xcycf]
    = \mathbf{C}
    [xcycf]" role="presentation" style="position: relative;">[xcycf]
    x=uv1=fku000fkv0u0v01xcycf=Cxcycf

    C \mathbf{C} C 是一个 3 × 3 3\times3 3×3上三角矩阵,称作相机标定矩阵。
    C = [ α u 0 u 0 0 α v v 0 0 0 1 ] \mathbf{C}=

    [αu0u00αvv0001]" role="presentation" style="position: relative;">[αu0u00αvv0001]
    C=αu000αv0u0v01

    其中, α u = f k u , α v = − f k v \alpha_u=fk_u,\alpha_v=-fk_v αu=fku,αv=fkv

    • C \mathbf{C} C 提供了在一个 image 点和一条射线( ( x c , y c , f ) (x_c,y_c,f) (xc,yc,f))在 3 维欧几里得空间中的变换。:一个三维坐标 ( x c , y c , f ) (x_c,y_c,f) (xc,yc,f) 既可以表示一个三维坐标系中三位点的坐标,也可以表示该从原点出发指向该点的向量。
    • 一共有 4 个参数:1. 沿着图像 x , y x,y x,y 方向的放缩参数 α u , α v \alpha_u,\alpha_v αu,αv。主点(principal point( u 0 , v 0 u_0,v_0 u0,v0)),是光轴(optic axis)和图像平面的交点。高宽比(sapect ratio)是 α v . α u \alpha_v.\alpha_u αv.αu
    • 如果 C \mathbf{C} C已知,就称相机已经标定
    • 校准摄像机是一个方向传感器,能够测量射线的方向。

    世界(相机外部参数,extrinsic/external camera parameters)相机与世界坐标系之间的欧几里得变换是 X c = R X W + t X_c=RX_W+t Xc=RXW+t

    [ X c Y c Z c 1 ] = [ R t 0 T 1 ] [ X w Y w Z w 1 ]

    [XcYcZc1]" role="presentation" style="position: relative;">[XcYcZc1]
    =
    [Rt0T1]" role="presentation" style="position: relative;">[Rt0T1]
    [XwYwZw1]" role="presentation" style="position: relative;">[XwYwZw1]
    XcYcZc1=[R0Tt1]XwYwZw1
    在这里插入图片描述

    总结

    最终,

    x = [ u v 1 ] = C [ 1 0 0 0 0 1 0 0 0 0 1 0 ] [ R t 0 T 1 ] [ X w Y w Z w 1 ] = C [ R ∣ t ] [ X w Y w Z w 1 ] \mathbf{x}=

    [uv1]" role="presentation" style="position: relative;">[uv1]
    = \mathbf{C}
    [100001000010]" role="presentation" style="position: relative;">[100001000010]
    [Rt0T1]" role="presentation" style="position: relative;">[Rt0T1]
    [XwYwZw1]" role="presentation" style="position: relative;">[XwYwZw1]
    = \mathbf{C} [\mathbf{R}\mid\mathbf{t}]
    [XwYwZw1]" role="presentation" style="position: relative;">[XwYwZw1]
    x=uv1=C100010001000[R0Tt1]XwYwZw1=C[Rt]XwYwZw1
    上面定义了 3 × 4 3\times4 3×4投影矩阵:从 3 维欧几里得空间到一张图像
    x = P [ X 1 ] \mathbf{x}=\mathbf{P}
    [X1]" role="presentation" style="position: relative;">[X1]
    x=P[X1]

    P = C [ R ∣ t ] \mathbf{P}=\mathbf{C} [\mathbf{R}\mid\mathbf{t}] P=C[Rt]

    参考资料

    • https://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/EPSRC_SSAZ/node3.html
    • 《视觉SLAM十四讲》
  • 相关阅读:
    【文件系统】硬盘分区-挂载-内核参数调优-VFS
    【笔记】RabbitMq常见消息模型-SpringAMQP-helloWord-工作队列-发布订阅模式-消息幂等,消息堆积,顺序消费
    函数式组件中实现Antd打开Modal后其Input框自动聚焦(focus)到文字的最后
    异常处理之EnhancedServiceNotFoundException
    C语言,求两个数的二进制表达中,有多少个位数不同
    idea 无法识别vue3语法
    Tapdata 与 Apache Doris 完成兼容性互认证,共建新一代数据架构
    算法自学__扫描线
    【flask】服务端获取客户端请求的文件
    PostGIS学习教程六:几何图形(geometry)
  • 原文地址:https://blog.csdn.net/OrdinaryMatthew/article/details/126547351