当前位置: 首页 > news >正文

探索相机成像的奥秘 - 齐次坐标、径向失真和图像传感器倾斜

引言

大家好!今天我们将一起探索相机成像背后的一些关键技术概念:齐次坐标、径向失真和图像传感器倾斜。这些概念对于理解相机如何捕捉和处理图像至关重要。我们将通过简单易懂的语言和严谨的公式来详细解释这些概念。

齐次坐标(Homogeneous Coordinates)

什么是齐次坐标?

齐次坐标是射影几何中使用的一种坐标系统,它允许我们用有限的坐标表示无穷远的点,并且简化了许多几何变换的公式。在齐次坐标中,我们通过在n维笛卡尔向量后面添加一个1来获得齐次向量。

齐次坐标的优势

  1. 表示无穷远点:在齐次坐标中,无穷远点可以用有限的坐标表示。例如,在2D空间中,点 ((x, y, 0)) 表示一个无穷远点,其方向由 ((x, y)) 确定。
  2. 简化公式:齐次坐标可以简化许多几何变换的公式。例如,仿射变换(包括平移、旋转、缩放等)可以用一个线性齐次变换矩阵来表示。

齐次坐标的变换

齐次坐标允许我们用矩阵乘法来表示各种几何变换。例如,一个3D点 (P_w = (X_w, Y_w, Z_w, 1)) 可以通过一个4×4的齐次变换矩阵 (T) 变换到另一个坐标系:

P c = T P w P_c = T P_w Pc=TPw

其中:

  • (P_c) 是变换后的点。
  • (T) 是齐次变换矩阵,包含了旋转、平移、缩放等变换信息。

径向失真

什么是径向失真?

实际镜头通常会有失真,主要是径向失真和切向失真。径向失真是指图像边缘的点偏离直线路径的现象。

径向失真模型

  1. 基本公式
    [ u v ] = [ f x x ′ ′ + c x f y y ′ ′ + c y ] \begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} f_x x'' + c_x \\ f_y y'' + c_y \end{bmatrix} [uv]=[fxx′′+cxfyy′′+cy]

    • (u, v) 是图像上的坐标。
    • (f_x, f_y) 是相机的焦距。
    • (c_x, c_y) 是主点坐标。
    • (x’‘, y’') 是经过径向失真校正后的坐标。
  2. 径向失真校正
    [ x ′ ′ y ′ ′ ] = [ x ′ 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 y ′ 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ] \begin{bmatrix} x'' \\ y'' \end{bmatrix} = \begin{bmatrix} \frac{x'}{1 + k_1 r^2 + k_2 r^4 + k_3 r^6} \\ \frac{y'}{1 + k_1 r^2 + k_2 r^4 + k_3 r^6} \end{bmatrix} [x′′y′′]=[1+k1r2+k2r4+k3r6x1+k1r2+k2r4+k3r6y]

    • (r^2 = x’^2 + y’^2)
    • (k_1, k_2, k_3) 是径向失真系数。

图像传感器倾斜

什么是图像传感器倾斜?

在某些情况下,图像传感器可能会倾斜,导致透视失真。这种失真可以通过旋转变换来校正。

倾斜模型

  1. 基本公式
    [ u v ] = [ f x x ′ ′ ′ + c x f y y ′ ′ ′ + c y ] \begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} f_x x''' + c_x \\ f_y y''' + c_y \end{bmatrix} [uv]=[fxx′′′+cxfyy′′′+cy]

    • (x’‘’, y’‘’) 是经过倾斜校正后的坐标。
  2. 倾斜校正
    [ x ′ ′ ′ y ′ ′ ′ ] = [ R 33 ( τ z , τ y ) 0 − R 13 ( τ z , τ y ) 0 R 33 ( τ z , τ y ) − R 23 ( τ z , τ y ) 1 0 0 ] [ x ′ ′ y ′ ′ 1 ] \begin{bmatrix} x''' \\ y''' \end{bmatrix} = \begin{bmatrix} R_{33}(\tau_z, \tau_y) & 0 & -R_{13}(\tau_z, \tau_y) \\ 0 & R_{33}(\tau_z, \tau_y) & -R_{23}(\tau_z, \tau_y) \\ 1 & 0 & 0 \end{bmatrix} \begin{bmatrix} x'' \\ y'' \\ 1 \end{bmatrix} [x′′′y′′′]= R33(τz,τy)010R33(τz,τy)0R13(τz,τy)R23(τz,τy)0 x′′y′′1

    其中,旋转矩阵 (R(\tau_x, \tau_y)) 定义为:
    R ( τ x , τ y ) = [ cos ⁡ ( τ y ) 0 − sin ⁡ ( τ y ) 0 1 0 sin ⁡ ( τ y ) 0 cos ⁡ ( τ y ) ] [ 1 0 0 0 cos ⁡ ( τ z ) sin ⁡ ( τ z ) 0 − sin ⁡ ( τ z ) cos ⁡ ( τ z ) ] R(\tau_x, \tau_y) = \begin{bmatrix} \cos(\tau_y) & 0 & -\sin(\tau_y) \\ 0 & 1 & 0 \\ \sin(\tau_y) & 0 & \cos(\tau_y) \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos(\tau_z) & \sin(\tau_z) \\ 0 & -\sin(\tau_z) & \cos(\tau_z) \end{bmatrix} R(τx,τy)= cos(τy)0sin(τy)010sin(τy)0cos(τy) 1000cos(τz)sin(τz)0sin(τz)cos(τz)

    简化后的旋转矩阵:
    R ( τ x , τ y ) = [ cos ⁡ ( τ y ) cos ⁡ ( τ z ) − sin ⁡ ( τ y ) cos ⁡ ( τ z ) sin ⁡ ( τ z ) cos ⁡ ( τ y ) sin ⁡ ( τ z ) sin ⁡ ( τ y ) sin ⁡ ( τ z ) − cos ⁡ ( τ z ) − sin ⁡ ( τ y ) cos ⁡ ( τ y ) 0 ] R(\tau_x, \tau_y) = \begin{bmatrix} \cos(\tau_y) \cos(\tau_z) & -\sin(\tau_y) \cos(\tau_z) & \sin(\tau_z) \\ \cos(\tau_y) \sin(\tau_z) & \sin(\tau_y) \sin(\tau_z) & -\cos(\tau_z) \\ -\sin(\tau_y) & \cos(\tau_y) & 0 \end{bmatrix} R(τx,τy)= cos(τy)cos(τz)cos(τy)sin(τz)sin(τy)sin(τy)cos(τz)sin(τy)sin(τz)cos(τy)sin(τz)cos(τz)0

  3. 应用旋转变换
    [ x ′ ′ ′ y ′ ′ ′ 1 ] = [ cos ⁡ ( τ y ) cos ⁡ ( τ z ) cos ⁡ ( τ y ) sin ⁡ ( τ z ) − sin ⁡ ( τ y ) − sin ⁡ ( τ y ) cos ⁡ ( τ z ) sin ⁡ ( τ y ) sin ⁡ ( τ z ) cos ⁡ ( τ y ) sin ⁡ ( τ z ) − cos ⁡ ( τ z ) 0 ] [ x ′ ′ y ′ ′ 1 ] \begin{bmatrix} x''' \\ y''' \\ 1 \end{bmatrix} = \begin{bmatrix} \cos(\tau_y) \cos(\tau_z) & \cos(\tau_y) \sin(\tau_z) & -\sin(\tau_y) \\ -\sin(\tau_y) \cos(\tau_z) & \sin(\tau_y) \sin(\tau_z) & \cos(\tau_y) \\ \sin(\tau_z) & -\cos(\tau_z) & 0 \end{bmatrix} \begin{bmatrix} x'' \\ y'' \\ 1 \end{bmatrix} x′′′y′′′1 = cos(τy)cos(τz)sin(τy)cos(τz)sin(τz)cos(τy)sin(τz)sin(τy)sin(τz)cos(τz)sin(τy)cos(τy)0 x′′y′′1

  4. 最终投影公式
    [ u v ] = [ f x x ′ ′ ′ + c x f y y ′ ′ ′ + c y ] \begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} f_x x''' + c_x \\ f_y y''' + c_y \end{bmatrix} [uv]=[fxx′′′+cxfyy′′′+cy]

通过上述步骤,我们可以得到校正后的图像坐标 ((u, v)),从而消除由于图像传感器倾斜引起的透视失真。

总结

  • 齐次坐标:通过在笛卡尔坐标后面添加一个1来获得齐次向量,简化了许多几何变换的公式。
  • 径向失真校正:通过径向失真系数 (k_1, k_2, k_3) 校正图像边缘的失真。
  • 图像传感器倾斜校正:通过旋转变换矩阵 (R(\tau_x, \tau_y)) 校正由于传感器倾斜引起的透视失真。

希望这篇文章能帮助你更好地理解相机中的齐次坐标、径向失真和传感器倾斜校正!

相关文章:

  • ROS:录制相机、IMU、GNSS等设备数据
  • 扫地机产品认证--黑名单制裁公司能否拿到美国产品准入许可(FCC认证)
  • 疲劳检测与行为分析:工厂智能化实践
  • gemini-cli 踩坑实录
  • vue a-table自定义表头颜色+合并表格
  • 如何对sqlserver数据库中存储JOSN数据字段进行更新
  • Vue3项目引入高德地图【超详细教程】
  • VB.NET,C#字典对象来保存用户数据,支持大小写
  • 关于汉语和英语哪个更先进、历史更久的争论
  • 【系统分析师】2020年真题:案例分析-答案及详解
  • java代码规范
  • Object
  • Linux系统(信号篇)信号的保存
  • 信任边界的人生智慧
  • 创建一个基于YOLOv8+PyQt界面的驾驶员疲劳驾驶检测系统 实现对驾驶员疲劳状态的打哈欠检测,头部下垂 疲劳眼睛检测识别
  • 相机-IMU联合标定:IMU更新频率
  • 过USB-IF认证——Chrontel 昆泰CH7213D DP转Type C 双向做线材
  • Spring Boot 项目问题:while constructing a mapping found duplicate key api
  • 四大高频设计题深度解析:【LRU缓存】、【LFU缓存】、最大频率栈、餐盘栈
  • 【容器】容器平台初探 - k8s整体架构