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

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

引言

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

齐次坐标(Homogeneous Coordinates)

什么是齐次坐标?

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

齐次坐标的优势

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

齐次坐标的变换

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

Pc=TPw

P_c = T P_w

Pc​=TPw​

其中:

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

径向失真

什么是径向失真?

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

径向失真模型

基本公式:

[uv]=[fxx′′+cxfyy′′+cy]

\begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} f_x x'' + c_x \\ f_y y'' + c_y \end{bmatrix}

[uv​]=[fx​x′′+cx​fy​y′′+cy​​]

(u, v) 是图像上的坐标。(f_x, f_y) 是相机的焦距。(c_x, c_y) 是主点坐标。(x’‘, y’') 是经过径向失真校正后的坐标。

径向失真校正:

[x′′y′′]=[x′1+k1r2+k2r4+k3r6y′1+k1r2+k2r4+k3r6]

\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+k1​r2+k2​r4+k3​r6x′​1+k1​r2+k2​r4+k3​r6y′​​]

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

图像传感器倾斜

什么是图像传感器倾斜?

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

倾斜模型

基本公式:

[uv]=[fxx′′′+cxfyy′′′+cy]

\begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} f_x x''' + c_x \\ f_y y''' + c_y \end{bmatrix}

[uv​]=[fx​x′′′+cx​fy​y′′′+cy​​]

(x’‘’, y’‘’) 是经过倾斜校正后的坐标。

倾斜校正:

[x′′′y′′′]=[R33(τz,τy)0−R13(τz,τy)0R33(τz,τy)−R23(τz,τy)100][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​)01​0R33​(τz​,τy​)0​−R13​(τz​,τy​)−R23​(τz​,τy​)0​​​x′′y′′1​​

其中,旋转矩阵 (R(\tau_x, \tau_y)) 定义为:

R(τx,τy)=[cos⁡(τy)0−sin⁡(τy)010sin⁡(τy)0cos⁡(τy)][1000cos⁡(τ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​)​010​−sin(τy​)0cos(τy​)​​​100​0cos(τ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​​

应用旋转变换:

[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​​

最终投影公式:

[uv]=[fxx′′′+cxfyy′′′+cy]

\begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} f_x x''' + c_x \\ f_y y''' + c_y \end{bmatrix}

[uv​]=[fx​x′′′+cx​fy​y′′′+cy​​]

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

总结

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

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

相关推荐

《英雄联盟手游》亚索双风要多少攻速?亚索双风攻速介绍
beat365在线体育打不开

《英雄联盟手游》亚索双风要多少攻速?亚索双风攻速介绍

📅 08-08 👁️ 5457
11种纸飞机折法,学会3种就算高手!南航人你会几种?
世界盃桌球賽
365手机卫士

世界盃桌球賽

📅 08-12 👁️ 3699