计算机视觉7——齐次坐标与相机内外参

一、透视投影

透视投影(Perspective Projection)是计算机视觉和图形学中描述三维物体在二维平面成像的基础模型,其核心思想是模拟人类视觉系统的成像原理------中心投影。具体而言,三维空间中的点通过一个固定的投影中心(相机光心)投射到成像平面上,形成近大远小的视觉效果。

(一)透视投影的性质

1.中心投影特性

透视投影的所有投影线(从物体点到投影中心的连线)交汇于一点,即投影中心 O c O_c Oc(在相机模型中对应光心)。设成像平面为 Z = f Z = f Z=f(焦距为 f f f),投影中心位于原点 ( 0 , 0 , 0 ) (0,0,0) (0,0,0),则三维点 P ( X , Y , Z ) P(X,Y,Z) P(X,Y,Z) 在成像平面的投影点 p ( x , y ) p(x,y) p(x,y) 满足:
x = f X Z , y = f Y Z x = f \frac{X}{Z}, \quad y = f \frac{Y}{Z} x=fZX,y=fZY

其中 Z Z Z 是点 P P P 到投影中心的深度值,决定了投影的缩放比例。

2.非线性比例变换

透视投影对不同深度的物体产生非线性缩放:深度 Z Z Z 越大(物体越远),投影后的尺寸越小。例如,两个相同大小的物体,距离相机更远的那个在图像中显得更小,这符合人类视觉的近大远小直觉。

3.平行线汇聚于消逝点

三维空间中平行于某一方向的直线,在透视投影下会汇聚于图像平面上的一个点,称为消逝点(Vanishing Point)。例如,铁轨在远处汇聚于地平线的一点,这是透视投影最典型的视觉特征。

4.保直线性

三维空间中的直线经过透视投影后仍为直线,但曲线可能变为曲线(如圆可能投影为椭圆)。

5.有限视野与透视缩短

透视投影的视野范围由成像平面的大小和焦距决定,超出视野的物体不会被投影。此外,与成像平面不垂直的物体(如倾斜的长方体)会发生"透视缩短",即物体在深度方向的尺寸在图像中被压缩。

(二)消逝点的概念

1. 消逝点的定义

消逝点是三维空间中一组平行直线在透视投影下的汇聚点。数学上,设三维空间中平行直线的方向向量为 d = ( d x , d y , d z ) \mathbf{d} = (d_x, d_y, d_z) d=(dx,dy,dz),则其对应的消逝点是该方向向量在投影平面上的"无穷远点"的投影。

2. 消逝点的计算

假设相机光心在原点,成像平面为 Z = f Z = f Z=f,平行直线的方向向量为 d = ( d x , d y , d z ) \mathbf{d} = (d_x, d_y, d_z) d=(dx,dy,dz)。由于直线平行,其参数方程可表示为 P ( t ) = P 0 + t d P(t) = P_0 + t\mathbf{d} P(t)=P0+td( t t t 为参数)。当 t → ∞ t \to \infty t→∞ 时,点 P ( t ) P(t) P(t) 的投影坐标为:
x = f d x d z , y = f d y d z ( 假设 d z ≠ 0 ) x = f \frac{d_x}{d_z}, \quad y = f \frac{d_y}{d_z} \quad (\text{假设 } d_z \neq 0) x=fdzdx,y=fdzdy(假设 dz=0)

若 d z = 0 d_z = 0 dz=0(即直线平行于成像平面),则消逝点位于无穷远处,对应齐次坐标系中的无穷远点(见第二部分齐次坐标系)。

3. 消逝点的应用

消逝点在计算机视觉中具有重要作用:

  • 相机标定:通过检测场景中的消逝点(如建筑物的平行线),可以估计相机的内参和外参。
  • 场景理解:利用消逝点判断物体的方向和空间结构,例如区分水平、垂直和深度方向的平行线。
  • 三维重建:通过多个消逝点的几何关系,恢复场景的三维结构。

(三)数学推导

1. 针孔相机模型的几何推导

透视投影的数学基础是针孔相机模型(Pinhole Camera Model),假设光线通过一个无限小的针孔投射到成像平面,忽略镜头畸变。设:

  • 世界坐标系中的点 P w = ( X w , Y w , Z w ) P_w = (X_w, Y_w, Z_w) Pw=(Xw,Yw,Zw)
  • 相机坐标系以光心 O c O_c Oc 为原点,成像平面位于 Z = f Z = f Z=f 处(焦距 f f f),图像坐标系以光心在成像平面的垂足为原点 O i O_i Oi,像素坐标系以图像左上角为原点 O u O_u Ou,像素尺寸为 ( d x , d y ) (dx, dy) (dx,dy)。

根据相似三角形原理(图1),相机坐标系下的点 P c = ( X , Y , Z ) P_c = (X, Y, Z) Pc=(X,Y,Z) 在成像平面的投影为:
x = − f X Z , y = − f Y Z x = -f \frac{X}{Z}, \quad y = -f \frac{Y}{Z} x=−fZX,y=−fZY

(负号表示成像平面位于光心后方,实际计算中常将成像平面置于光心前方,符号取正,即"虚拟成像平面")

2. 齐次坐标下的透视投影矩阵

为了将平移、旋转等变换统一为矩阵乘法,并处理无穷远点(如消逝点),引入齐次坐标系(见第二部分)。三维点的齐次坐标为 P c = ( X , Y , Z , 1 ) T \mathbf{P}_c = (X, Y, Z, 1)^T Pc=(X,Y,Z,1)T,投影到二维图像平面的齐次坐标为 p = ( x , y , z ) T \mathbf{p} = (x, y, z)^T p=(x,y,z)T,满足:
p = K [ I ∣ 0 ] P c \mathbf{p} = \mathbf{K} [\mathbf{I} \mid \mathbf{0}] \mathbf{P}_c p=K[I∣0]Pc

其中 K \mathbf{K} K 是相机内参矩阵(见第三部分), [ I ∣ 0 ] [\mathbf{I} \mid \mathbf{0}] [I∣0] 表示相机坐标系到图像平面的投影。更一般地,考虑世界坐标系到相机坐标系的外参变换(旋转矩阵 R \mathbf{R} R 和平移向量 t \mathbf{t} t),透视投影的完整变换为:
p = K [ R ∣ t ] P w \mathbf{p} = \mathbf{K} [\mathbf{R} \mid \mathbf{t}] \mathbf{P}_w p=K[R∣t]Pw

其中 [ R ∣ t ] [\mathbf{R} \mid \mathbf{t}] [R∣t] 是外参矩阵, P w = ( X w , Y w , Z w , 1 ) T \mathbf{P}_w = (X_w, Y_w, Z_w, 1)^T Pw=(Xw,Yw,Zw,1)T 是世界坐标系下的齐次坐标。

展开矩阵运算,透视投影的坐标变换可表示为:
{ u = f u X c Z c + u 0 v = f v Y c Z c + v 0 \begin{cases} u = f_u \frac{X_c}{Z_c} + u_0 \\ v = f_v \frac{Y_c}{Z_c} + v_0 \end{cases} {u=fuZcXc+u0v=fvZcYc+v0

其中 ( u , v ) (u, v) (u,v) 是像素坐标, f u , f v f_u, f_v fu,fv 是焦距在像素单位下的尺度因子, ( u 0 , v 0 ) (u_0, v_0) (u0,v0) 是主点坐标(见第三部分相机内参)。

(四)正投影与弱透视投影

1. 正投影(Orthographic Projection)

正投影是透视投影的特例,假设投影中心位于无穷远处,所有投影线互相平行且垂直于成像平面。其数学表达式为:
x = X , y = Y x = X, \quad y = Y x=X,y=Y

忽略深度信息 Z Z Z,适用于工业设计、工程制图等需要保持物体真实尺寸的场景。正投影矩阵为:
P ortho = [ 1 0 0 0 0 1 0 0 0 0 0 1 ] \mathbf{P}_{\text{ortho}} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} Portho= 100010000001

但实际应用中,正投影常包含平移和缩放变换,以适配不同的坐标系范围。

2. 弱透视投影(Weak Perspective Projection)

弱透视投影是透视投影的近似,适用于物体距离相机较远且深度变化较小的场景(如航拍图像)。其假设:

  1. 物体到相机的距离远大于物体自身尺寸,即深度 Z ≈ Z 0 Z \approx Z_0 Z≈Z0(常数);
  2. 忽略深度引起的缩放差异,用平均深度 Z 0 Z_0 Z0 代替所有点的深度。

弱透视投影的变换过程分为两步:

  • 首先将三维点正投影到与成像平面平行的平面(忽略深度),得到 ( X , Y ) (X, Y) (X,Y);
  • 然后按比例 f / Z 0 f / Z_0 f/Z0 缩放到成像平面,即:
    x = f Z 0 X , y = f Z 0 Y x = \frac{f}{Z_0} X, \quad y = \frac{f}{Z_0} Y x=Z0fX,y=Z0fY
    弱透视投影的误差来源于深度变化 Δ Z = Z − Z 0 \Delta Z = Z - Z_0 ΔZ=Z−Z0,当 Δ Z ≪ Z 0 \Delta Z \ll Z_0 ΔZ≪Z0 时,近似效果较好。相比透视投影,弱透视投影计算更简单,广泛应用于人脸检测、人体姿态估计等任务。

二、齐次坐标系

(一)齐次坐标系的定义

1. 为什么引入齐次坐标系?

在欧几里得几何中,平移、旋转、缩放等变换可通过矩阵乘法表示,但平移变换对向量的作用是加法( p ′ = p + t \mathbf{p}' = \mathbf{p} + \mathbf{t} p′=p+t),无法用单一矩阵乘法实现。齐次坐标系通过在n维空间中引入第n+1维坐标,将平移转换为矩阵乘法,并统一处理无穷远点(如透视投影中的消逝点)。

2. 定义

  • n维点的齐次坐标 :将n维点 ( x 1 , x 2 , ... , x n ) (x_1, x_2, \dots, x_n) (x1,x2,...,xn) 表示为n+1维向量 ( x 1 , x 2 , ... , x n , w ) (x_1, x_2, \dots, x_n, w) (x1,x2,...,xn,w),其中 w ≠ 0 w \neq 0 w=0,且齐次坐标 ( x 1 w , x 2 w , ... , x n w , w ) (x_1w, x_2w, \dots, x_nw, w) (x1w,x2w,...,xnw,w) 与 ( x 1 , x 2 , ... , x n , 1 ) (x_1, x_2, \dots, x_n, 1) (x1,x2,...,xn,1) 表示同一点(通过除以 w w w 归一化)。
  • 无穷远点 :当 w = 0 w = 0 w=0 时,齐次坐标表示无穷远点,例如二维空间中方向向量 ( a , b ) (a, b) (a,b) 对应无穷远点 ( a , b , 0 ) (a, b, 0) (a,b,0)。

3. 齐次坐标的等价性

两个齐次坐标 ( x 1 , y 1 , w 1 ) (x_1, y_1, w_1) (x1,y1,w1) 和 ( x 2 , y 2 , w 2 ) (x_2, y_2, w_2) (x2,y2,w2) 表示同一点,当且仅当存在非零常数 k k k 使得 x 2 = k x 1 , y 2 = k y 1 , w 2 = k w 1 x_2 = kx_1, y_2 = ky_1, w_2 = kw_1 x2=kx1,y2=ky1,w2=kw1。

(二)齐次坐标系下的点、线、几何变换

1. 二维齐次坐标系中的点与线

  • :二维点 ( u , v ) (u, v) (u,v) 的齐次坐标为 ( u , v , 1 ) (u, v, 1) (u,v,1),无穷远点为 ( a , b , 0 ) (a, b, 0) (a,b,0)。
  • 线 :二维直线方程 a x + b y + c = 0 ax + by + c = 0 ax+by+c=0 的齐次表示为 ( a , b , c ) (a, b, c) (a,b,c),满足 a u + b v + c w = 0 a u + b v + c w = 0 au+bv+cw=0(点 ( u , v , w ) (u, v, w) (u,v,w) 在直线上)。
  • 点与线的关系 :点 p = ( u , v , w ) T \mathbf{p} = (u, v, w)^T p=(u,v,w)T 在直线 l = ( a , b , c ) T \mathbf{l} = (a, b, c)^T l=(a,b,c)T 上,当且仅当 l T p = 0 \mathbf{l}^T \mathbf{p} = 0 lTp=0。

2. 几何变换的齐次矩阵表示

在二维空间中,常见几何变换可表示为3×3矩阵对齐次坐标的作用:

  • 平移(Translation)
    T ( t x , t y ) = [ 1 0 t x 0 1 t y 0 0 1 ] , p ′ = T p T(t_x, t_y) = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix}, \quad \mathbf{p}' = T \mathbf{p} T(tx,ty)= 100010txty1 ,p′=Tp
  • 缩放(Scaling)
    S ( s x , s y ) = [ s x 0 0 0 s y 0 0 0 1 ] S(s_x, s_y) = \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix} S(sx,sy)= sx000sy0001

  • 旋转(Rotation)

    绕原点旋转角度 θ \theta θ:
    R ( θ ) = [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} R(θ)= cosθsinθ0−sinθcosθ0001

  • 剪切(Shearing)
    H ( s x y , s y x ) = [ 1 s x y 0 s y x 1 0 0 0 1 ] H(s_{xy}, s_{yx}) = \begin{bmatrix} 1 & s_{xy} & 0 \\ s_{yx} & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} H(sxy,syx)= 1syx0sxy10001

  • 投影变换(Projective Transformation)

    更一般的线性变换,包括透视变换,如二维透视变换矩阵:
    P = [ a b c d e f g h i ] , 其中 p ′ = P p , 归一化后 ( u ′ , v ′ , 1 ) = ( a u + b v + c g u + h v + i , d u + e v + f g u + h v + i , 1 ) P = \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix}, \quad \text{其中} \mathbf{p}' = P \mathbf{p}, \text{归一化后} (u', v', 1) = \left( \frac{a u + b v + c}{g u + h v + i}, \frac{d u + e v + f}{g u + h v + i}, 1 \right) P= adgbehcfi ,其中p′=Pp,归一化后(u′,v′,1)=(gu+hv+iau+bv+c,gu+hv+idu+ev+f,1)

3. 三维齐次坐标系

三维点 ( X , Y , Z ) (X, Y, Z) (X,Y,Z) 的齐次坐标为 ( X , Y , Z , 1 ) (X, Y, Z, 1) (X,Y,Z,1),无穷远点为 ( X , Y , Z , 0 ) (X, Y, Z, 0) (X,Y,Z,0)。三维几何变换(如旋转、平移、缩放)通过4×4矩阵表示,例如:

  • 三维平移矩阵:
    T ( t x , t y , t z ) = [ 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 ] T(t_x, t_y, t_z) = \begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} T(tx,ty,tz)= 100001000010txtytz1
  • 绕x轴旋转 θ \theta θ 的矩阵:
    R x ( θ ) = [ 1 0 0 0 0 cos ⁡ θ − sin ⁡ θ 0 0 sin ⁡ θ cos ⁡ θ 0 0 0 0 1 ] R_x(\theta) = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta & 0 \\ 0 & \sin\theta & \cos\theta & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} Rx(θ)= 10000cosθsinθ00−sinθcosθ00001

(三)其他变换的齐次坐标表示

1. 透视投影变换矩阵

在三维到二维的透视投影中,齐次坐标的变换矩阵可表示为:
P persp = [ f 0 0 0 0 f 0 0 0 0 1 0 ] \mathbf{P}_{\text{persp}} = \begin{bmatrix} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} Ppersp= f000f0001000

该矩阵将相机坐标系下的点 ( X , Y , Z , 1 ) (X, Y, Z, 1) (X,Y,Z,1) 投影到图像平面,得到齐次坐标 ( f X , f Y , Z , 1 ) (fX, fY, Z, 1) (fX,fY,Z,1),归一化后为 ( f X / Z , f Y / Z , 1 ) (fX/Z, fY/Z, 1) (fX/Z,fY/Z,1),即像素坐标的基础。

2. 仿射变换与投影变换的区别

  • 仿射变换(Affine Transformation) :齐次矩阵的最后一行为 ( 0 , 0 , 0 , 1 ) (0, 0, 0, 1) (0,0,0,1),保持直线和平行性,包含平移、旋转、缩放、剪切。
  • 投影变换(Projective Transformation):最后一行可为任意值,允许透视变形,如消逝点的生成,是更一般的变换(仿射变换是投影变换的特例)。

三、相机参数

(一)世界、相机、图像平面、图像坐标系

在计算机视觉中,坐标系的转换是理解相机成像的关键。以下定义四种主要坐标系:

1. 世界坐标系(World Coordinate System, O w X w Y w Z w O_wX_wY_wZ_w OwXwYwZw)

用户自定义的三维坐标系,用于描述场景中物体的位置,原点和坐标轴方向可任意选择(如场景中的某一角点)。

2. 相机坐标系(Camera Coordinate System, O c X c Y c Z c O_cX_cY_cZ_c OcXcYcZc)

以相机光心 O c O_c Oc 为原点,通常定义 Z c Z_c Zc 轴为相机光轴(垂直于成像平面), X c X_c Xc 和 Y c Y_c Yc 轴平行于成像平面的行列方向。

3. 图像平面坐标系(Image Plane Coordinate System, O i X i Y i O_iX_iY_i OiXiYi)

位于相机坐标系的 Z = f Z = f Z=f 处(假设成像平面在光心前方),原点 O i O_i Oi 是光轴与成像平面的交点(主点),单位为物理长度(如毫米)。

4. 像素坐标系(Pixel Coordinate System, O u v O_uv Ouv)

以图像左上角为原点, u u u 轴向右, v v v 轴向下,单位为像素。像素坐标系与图像平面坐标系通过缩放和平移转换(考虑像素尺寸和主点偏移)。

(二)相机外参、相机内参

1. 相机外参(Extrinsic Parameters)

相机外参描述世界坐标系到相机坐标系的刚体变换,包括旋转和平移,即将世界点 P w \mathbf{P}_w Pw 转换为相机点 P c \mathbf{P}_c Pc:
P c = R P w + t \mathbf{P}_c = \mathbf{R} \mathbf{P}_w + \mathbf{t} Pc=RPw+t

其中:

  • R \mathbf{R} R 是3×3正交旋转矩阵(满足 R T R = I \mathbf{R}^T \mathbf{R} = \mathbf{I} RTR=I),描述相机的朝向(俯仰、偏航、滚转角度);
  • t \mathbf{t} t 是3×1平移向量,描述相机光心在世界坐标系中的位置 t = − R O w \mathbf{t} = - \mathbf{R} \mathbf{O}_w t=−ROw( O w \mathbf{O}_w Ow 是世界坐标系原点在相机坐标系中的位置)。

用齐次坐标表示为:
P c h = [ R t 0 T 1 ] P w h \mathbf{P}_c^h = \begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1 \end{bmatrix} \mathbf{P}_w^h Pch=[R0Tt1]Pwh

其中 P c h = ( X c , Y c , Z c , 1 ) T \mathbf{P}_c^h = (X_c, Y_c, Z_c, 1)^T Pch=(Xc,Yc,Zc,1)T, P w h = ( X w , Y w , Z w , 1 ) T \mathbf{P}_w^h = (X_w, Y_w, Z_w, 1)^T Pwh=(Xw,Yw,Zw,1)T。

2. 相机内参(Intrinsic Parameters)

相机内参描述相机坐标系到像素坐标系的转换,包括焦距、主点位置、像素畸变等,与相机硬件相关,不随相机外部位置变化。

(1)理想针孔模型(无畸变)

假设成像平面与相机坐标系的 Z c Z_c Zc 轴垂直,主点 O i O_i Oi 在图像平面中心,像素为正方形:

  • 焦距(Focal Length) : f f f(物理单位,如毫米),转换为像素单位为 f u = f / d x f_u = f / dx fu=f/dx, f v = f / d y f_v = f / dy fv=f/dy,其中 d x , d y dx, dy dx,dy 是像素在 X , Y X, Y X,Y 方向的物理尺寸(如毫米/像素)。
  • 主点(Principal Point) : ( u 0 , v 0 ) (u_0, v_0) (u0,v0),即光轴与成像平面的交点在像素坐标系中的坐标(通常位于图像中心附近)。

转换过程:

  1. 相机坐标系下的点 P c = ( X c , Y c , Z c ) \mathbf{P}_c = (X_c, Y_c, Z_c) Pc=(Xc,Yc,Zc) 投影到图像平面,得到物理坐标 ( x , y ) = ( f X c / Z c , f Y c / Z c ) (x, y) = (f X_c / Z_c, f Y_c / Z_c) (x,y)=(fXc/Zc,fYc/Zc);
  2. 转换为像素坐标 ( u , v ) (u, v) (u,v):
    u = x d x + u 0 = f u X c Z c + u 0 , v = y d y + v 0 = f v Y c Z c + v 0 u = \frac{x}{dx} + u_0 = f_u \frac{X_c}{Z_c} + u_0, \quad v = \frac{y}{dy} + v_0 = f_v \frac{Y_c}{Z_c} + v_0 u=dxx+u0=fuZcXc+u0,v=dyy+v0=fvZcYc+v0
    用齐次矩阵表示为:

    u v 1 \] = \[ f u 0 u 0 0 f v v 0 0 0 1 \] \[ X c / Z c Y c / Z c 1 \] \\begin{bmatrix} u \\\\ v \\\\ 1 \\end{bmatrix} = \\begin{bmatrix} f_u \& 0 \& u_0 \\\\ 0 \& f_v \& v_0 \\\\ 0 \& 0 \& 1 \\end{bmatrix} \\begin{bmatrix} X_c / Z_c \\\\ Y_c / Z_c \\\\ 1 \\end{bmatrix} uv1 = fu000fv0u0v01 Xc/ZcYc/Zc1 内参矩阵 K \\mathbf{K} K 为: K = \[ f u 0 u 0 0 f v v 0 0 0 1 \] \\mathbf{K} = \\begin{bmatrix} f_u \& 0 \& u_0 \\\\ 0 \& f_v \& v_0 \\\\ 0 \& 0 \& 1 \\end{bmatrix} K= fu000fv0u0v01

实际相机中,像素可能存在倾斜(如传感器排列不严格正交),引入倾斜因子 s s s(描述 X , Y X, Y X,Y 方向的耦合)。此时内参矩阵变为:
K = [ f u s u 0 0 f v v 0 0 0 1 ] \mathbf{K} = \begin{bmatrix} f_u & s & u_0 \\ 0 & f_v & v_0 \\ 0 & 0 & 1 \end{bmatrix} K= fu00sfv0u0v01

其中 s = − f u cot ⁡ θ s = -f_u \cot\theta s=−fucotθ, θ \theta θ 是像素行与列之间的夹角(理想情况 θ = 9 0 ∘ , s = 0 \theta = 90^\circ, s = 0 θ=90∘,s=0)。

(3)镜头畸变(Distortion)

实际镜头存在畸变,主要分为径向畸变(Radial Distortion)和切向畸变(Tangential Distortion):

  • 径向畸变 :由镜头曲率引起,离图像中心越远畸变越明显,包括桶形畸变(Barrel Distortion)和枕形畸变(Pincushion Distortion)。径向畸变后的坐标为:
    { x distorted = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y distorted = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) \begin{cases} x_{\text{distorted}} = x \left( 1 + k_1 r^2 + k_2 r^4 + k_3 r^6 \right) \\ y_{\text{distorted}} = y \left( 1 + k_1 r^2 + k_2 r^4 + k_3 r^6 \right) \end{cases} {xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6)
    其中 r 2 = x 2 + y 2 r^2 = x^2 + y^2 r2=x2+y2, k 1 , k 2 , k 3 k_1, k_2, k_3 k1,k2,k3 是径向畸变系数。
  • 切向畸变 :由镜头安装误差引起,导致像素点沿切线方向偏移:
    { x distorted = x + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y distorted = y + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y \begin{cases} x_{\text{distorted}} = x + 2 p_1 xy + p_2 (r^2 + 2 x^2) \\ y_{\text{distorted}} = y + p_1 (r^2 + 2 y^2) + 2 p_2 xy \end{cases} {xdistorted=x+2p1xy+p2(r2+2x2)ydistorted=y+p1(r2+2y2)+2p2xy
    其中 p 1 , p 2 p_1, p_2 p1,p2 是切向畸变系数。

畸变校正过程:首先通过畸变模型计算理想坐标到畸变坐标的映射,然后反向求解畸变坐标到理想坐标的逆映射,用于图像校正。

(三)完整投影过程

结合外参和内参,世界坐标系下的点 P w \mathbf{P}_w Pw 到像素坐标系 p = ( u , v , 1 ) T \mathbf{p} = (u, v, 1)^T p=(u,v,1)T 的变换为:
p h = K [ R ∣ t ] P w h \mathbf{p}^h = \mathbf{K} [\mathbf{R} \mid \mathbf{t}] \mathbf{P}_w^h ph=K[R∣t]Pwh

其中:

  • P w h = ( X w , Y w , Z w , 1 ) T \mathbf{P}_w^h = (X_w, Y_w, Z_w, 1)^T Pwh=(Xw,Yw,Zw,1)T 是世界点的齐次坐标;
  • R ∣ t \] \[\\mathbf{R} \\mid \\mathbf{t}\] \[R∣t\] 是3×4外参矩阵,将世界点转换为相机坐标;

展开后为:

u v 1 \] = K \[ R t \] \[ X w Y w Z w 1 \] = K ( R P w + t ) \\begin{bmatrix} u \\\\ v \\\\ 1 \\end{bmatrix} = \\mathbf{K} \\begin{bmatrix} \\mathbf{R} \& \\mathbf{t} \\end{bmatrix} \\begin{bmatrix} X_w \\\\ Y_w \\\\ Z_w \\\\ 1 \\end{bmatrix} = \\mathbf{K} \\left( \\mathbf{R} \\mathbf{P}_w + \\mathbf{t} \\right) uv1 =K\[Rt\] XwYwZw1 =K(RPw+t) 其中 P w = ( X w , Y w , Z w ) T \\mathbf{P}_w = (X_w, Y_w, Z_w)\^T Pw=(Xw,Yw,Zw)T 是世界点的三维坐标,除法操作(除以 Z c Z_c Zc)隐含在齐次坐标的归一化过程中。

相关推荐
新智元1 分钟前
硅谷 AI 初创要让 60 亿人失业,网友痛批人类叛徒!Jeff Dean 已投
人工智能·openai
haochengxia9 分钟前
vLLM V1 KV Cache Manager 源码学习
人工智能
黑心萝卜三条杠14 分钟前
解锁高性能,YOLOv8 部署至 Jetson Orin Nano 开发板的全攻略
人工智能
小oo呆14 分钟前
【自然语言处理与大模型】Linux环境下Ollama下载太慢了该怎么处理?
linux·服务器·人工智能
CoovallyAIHub14 分钟前
YOLO版本迷信终结!11领域398万实例实测:告诉你的场景该用哪个版本?
opencv·算法·计算机视觉
ljd21032312418 分钟前
opencv函数展示
人工智能·opencv·计算机视觉
0x21123 分钟前
[论文阅读]Making Retrieval-Augmented Language Models Robust to Irrelevant Context
论文阅读·人工智能·语言模型
新加坡内哥谈技术24 分钟前
大语言模型推理能力的强化学习现状理解GRPO与近期推理模型研究的新见解
人工智能·语言模型·自然语言处理·chatgpt
玛哈特-小易32 分钟前
玛哈特整平机:工业制造中的关键设备
人工智能·制造·精密校平机·精密矫平机·钢板矫平机
智享食事1 小时前
数字化时代下的工业物联网智能体开发平台策略
人工智能