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

计算机视觉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[I0]Pc
其中 K \mathbf{K} K 是相机内参矩阵(见第三部分), [ I ∣ 0 ] [\mathbf{I} \mid \mathbf{0}] [I0] 表示相机坐标系到图像平面的投影。更一般地,考虑世界坐标系到相机坐标系的外参变换(旋转矩阵 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[Rt]Pw
其中 [ R ∣ t ] [\mathbf{R} \mid \mathbf{t}] [Rt] 是外参矩阵, 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 ZZ0(常数);
  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=ZZ0,当 Δ Z ≪ Z 0 \Delta Z \ll Z_0 ΔZZ0 时,近似效果较好。相比透视投影,弱透视投影计算更简单,广泛应用于人脸检测、人体姿态估计等任务。

在这里插入图片描述

二、齐次坐标系

(一)齐次坐标系的定义

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θ0sinθ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θ00sinθ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
(2)考虑像素倾斜(非正方形像素)

实际相机中,像素可能存在倾斜(如传感器排列不严格正交),引入倾斜因子 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[Rt]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}] [Rt] 是3×4外参矩阵,将世界点转换为相机坐标;
  • K \mathbf{K} K 是3×3内参矩阵,将相机坐标投影到像素坐标。

展开后为:
[ 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
  • 【Python笔记 01】变量、标识符
  • Eureka搭建
  • Vue3 + TypeScript,关于item[key]的报错处理方法
  • 2025年4月19日-得物算法岗春招笔试题-第一题
  • HBase安装与基本操作指南
  • 【21天学习打卡挑战赛】如何学习WEB安全:逼自己在短时间掌握WEB安全核心内容
  • 【Linux我做主】GDB调试工具完全指南
  • CSS值和单位
  • 跟我学C++中级篇——程序中的临时文件的处理
  • [原创](现代C++ Builder 12指南): [4]如何使用VCL的TStringBuilder?
  • Java 网络编程性能优化:高吞吐量的实现方法
  • MAC-QueryWrapper中用的exists,是不是用join效果更好
  • 【OSG学习笔记】Day 4: 相机与视口——控制观察视角
  • 生成对抗网络(Generative adversarial network——GAN)
  • 深度学习相关技术
  • 在 Anaconda 上安装多版本 Python 解释器并在 PyCharm 中配置
  • 《汽车理论》第四章作业MATLAB部分
  • 第 28 场 蓝桥月赛
  • C++ MySQL数据库访问工具类设计与操作流程详解
  • 美商界报告:全美超86万岗位依赖对华出口,关税将重创美国出口商
  • 先去上海后赴北京,苏中城市泰州为何接连拥抱顶流“大城”?
  • 全文丨中华人民共和国传染病防治法
  • 力箭二号火箭成功进行满载起竖试验,计划今年首飞发射轻舟飞船
  • 海尔·2025青岛马拉松两选手被终身禁赛:违规转让号码、穿戴他人号码
  • 河北:开展领导干部任性用权等形式主义官僚主义问题专项整治