图像形成(3)理想相机模型

图像形成(3)理想相机模型

前言

  在针孔相机模型和朗伯表面的假设(在此博文中有描述)下,人们可以基本上减少图像形成过程,以追踪从物体上的点到像素的光线。 也就是说,知道空间中的哪个点投影到图像平面上的哪个点允许人们直接将该点处的辐射与其图像的辐照度相关联。

透视投影的几何图形捕获了这个过程的本质,它可以简化为坐标的简单变化和规范投影。

   为了建立三维空间中的点(相对于固定的全局参考系)和它们在二维图像平面中的投影图像(相对于局部坐标系)之间的精确对应,为此建立了数学模型。 过程必须考虑三种类型的转换:

  1. 在相机坐标系与世界坐标系之间的坐标变换;
  2. 将三维坐标投影到二维图像坐标上;
  3. 在图像坐标系的可能选择之间进行坐标变换。

   我们将这种(简化的)图像形成过程描述为一系列坐标变换。 反转这种变换链通常被称为“相机标定”,也是三维重建的关键步骤。

必备知识(回顾)

  考虑正交惯性参考系 { o , X , Y , Z } \{o,X,Y,Z\} {o,X,Y,Z},称为世界坐标系。 我们将世界坐标系中的点 p p p的坐标写为

X w = [ X w , Y w , Z w ] ∈ R 3 {\rm X}_w=[X_w,Y_w,Z_w]\in \mathbb{R}^3 Xw=[Xw,Yw,Zw]R3

  为了相对于另一个参考坐标系(例如相机坐标系 c , X c c,{\rm X}_c c,Xc)写入相同点的坐标,有必要描述世界坐标系和相机坐标系之间的变换。 我们将通过 g w c g_{wc} gwc表明这种变换。 使用此表示法,世界坐标系中的坐标和相机坐标系中的坐标通过以下方式相关:

X w = g w c ( X c ) {\rm X}_w=g_{wc}({\rm X}_c) Xw=gwc(Xc)

  反之亦然 X c = g c w X w {\rm X}_c=g_{cw}{\rm X}_w Xc=gcwXw其中 g c w = g w c − 1 g_{cw}=g_{wc}^{-1} gcw=gwc1是逆变换,它将世界坐标系中的坐标映射到相机坐标系中的坐标。

  标准正交参考坐标系之间的坐标变换以参考帧的刚性运动为特征。 坐标的刚性变化由新坐标系的原点位置和新坐标系相对于旧坐标系的方向描述(回忆一下,博主的这篇文章的刚体内容)。 现在考虑坐标 g w c g_{wc} gwc的变换:

g w c = ( R w c , T w c ) g_{wc}=(R_{wc},T_{wc}) gwc=(Rwc,Twc)

  其中 T w c ∈ R 3 T_{wc}\in \mathbb{R}^3 TwcR3 R w c R_{wc} Rwc是旋转矩阵。这样之后,任意点的坐标变化由下式给出:

X w = g w c ( X c ) = R w c X c + T w c {\rm X}_w=g_{wc}({\rm X}_c)=R_{wc}{\rm X}_c+T_{wc} Xw=gwc(Xc)=RwcXc+Twc

  编写上述等式的更紧凑的方法是使用齐次表示,

X ˉ = ˙ [ X T , 1 ] T ∈ R 4 , g ˉ w c = [ R w c T w c 0 1 ] ∈ R 4 × 4 \bar{\rm X} \dot=[{\rm X}^T,1]^T\in \mathbb{R}^4,\bar{g}_{wc}=\begin{bmatrix}R_{wc}&T_{wc}\\0&1\end{bmatrix}\in \mathbb{R}^{4\times 4} Xˉ=˙[XT,1]TR4,gˉwc=[Rwc0Twc1]R4×4

  然后可以得到:

X ˉ w = ˙ g ˉ w c X ˉ c = [ R w c T w c 0 1 ] [ X c 1 ] \bar{\rm X}_w\dot=\bar{g}_{wc}\bar{\rm X}_c=\begin{bmatrix}R_{wc}&T_{wc}\\0&1\end{bmatrix}\begin{bmatrix}{\rm X}_c\\1\end{bmatrix} Xˉw=˙gˉwcXˉc=[Rwc0Twc1][Xc1]

  将世界坐标系中的坐标映射到相机坐标系中的坐标的逆变换由下式给出

g c w = ( R c w , T c w ) = ( R w c T , − R w c T T w c ) g_{cw}=(R_{cw},T_{cw})=(R_{wc}^T,-R_{wc}^TT_{wc}) gcw=(Rcw,Tcw)=(RwcT,RwcTTwc)

通过求解 [ R w c T w c 0 1 ] \begin{bmatrix}R_{wc}&T_{wc}\\0&1\end{bmatrix} [Rwc0Twc1]其逆容易求得 [ R w c T − R w c T T w c 0 1 ] \begin{bmatrix}R_{wc}^T&-R_{wc}^TT_{wc}\\0&1\end{bmatrix} [RwcT0RwcTTwc1]

  可以很容易地通过以下方式验证:

g ˉ c w g ˉ w c = g ˉ w c g ˉ c w = I 4 × 4 \bar{g}_{cw}\bar{g}_{wc}=\bar{g}_{wc}\bar{g}_{cw}=I_{4\times 4} gˉcwgˉwc=gˉwcgˉcw=I4×4

  这是单位变换,所以 g ˉ c w = g ˉ w c − 1 \bar{g}_{cw}=\bar{g}_{wc}^{-1} gˉcw=gˉwc1

理想的透视相机

  让我们考虑一个一般的点 p p p,其相对于世界参考系的坐标 X w ∈ R 3 {\rm X}_w\in \mathbb{R}^3 XwR3。 如我们刚才所见,相对于摄像机参考系的坐标由 X c = R c w X w + T c w ∈ R 3 {\rm X}_c=R_{cw}{\rm X}_w+T{cw}\in \mathbb{R}^3 Xc=RcwXw+TcwR3给出。 到目前为止,我们使用下标来避免混淆。

  为简单起见,约定 R = R c w , T = T c w R=R_{cw},T=T_{cw} R=Rcw,T=Tcw g = ( R , T ) g=(R,T) g=(R,T)来删除下标。

   我们用 X = [ X , Y , Z ] T {\rm X}=[X,Y,Z]^T X=[X,Y,Z]T表示相对于相机坐标系的点的坐标; X 0 {\rm X}_0 X0表示相对于世界坐标系的相同点的坐标。

   X 0 {\rm X}_0 X0还用于表示相对于相机移动坐标系的初始位置的点的坐标。 这通常是为了方便起见,因为世界坐标系的选择是任意的,并且在特定时间用相机坐标系识别它是方便的。 使用这个约定,我们有:

X = g ( X 0 ) = R X 0 + T ∈ R 3 {\rm X}=g({\rm X}_0)=R{\rm X}_0+T\in \mathbb{R}^3 X=g(X0)=RX0+TR3

  将坐标系附加到投影中心,光轴与 z z z 轴对齐,并采用理想针孔相机模型【参考博主的该博文】,坐标点 X \rm X X投影到图像平面上点坐标【我们假设已经将投影的图像平面位于3D点的同一侧,所以不需要负号】

x = [ x y ] = f Z [ X Y ] {\rm x}=\begin{bmatrix}x\\y\end{bmatrix}=\frac{f}{Z}\begin{bmatrix}X\\Y\end{bmatrix} x=[xy]=Zf[XY]

  其中 [ x , y ] T [x,y]^T [x,y]T是在以主点(光轴和图像平面之间的交点)为中心的二维参考系(视网膜图像坐标系,retinal image frame)中表示的坐标,其中 x x x轴和 y y y轴分别平行于 X X X- 轴和 Y Y Y轴, f f f 表示与图像平面距投影中心的距离对应的焦距。 在齐次坐标中,这种关系可以写成:

Z [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X Y Z 1 ] Z\begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}X\\Y\\Z\\1\end{bmatrix} Zxy1=f000f0001000XYZ1

  我们可以将上述等式重写为

Z x ˉ = [ f 0 0 0 0 f 0 0 0 0 1 0 ] X ˉ Z\bar{\rm x}=\begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0\end{bmatrix}\bar{\rm X} Zxˉ=f000f0001000Xˉ

  其中 X ˉ = ˙ [ X , Y , Z , 1 ] T \bar{\rm X}\dot=[X,Y,Z,1]^T Xˉ=˙[X,Y,Z,1]T是齐次坐标中三维点的表示,并且 x ˉ = ˙ [ x , y , 1 ] \bar{\rm x}\dot=[x,y,1] xˉ=˙[x,y,1]是视网膜平面中点的齐次(投影)坐标。 由于 Z Z Z坐标(或点 p p p的深度)通常是未知的,我们可以简单地将其表示为任意正标量 λ ∈ R + \lambda\in \mathbb{R}_+ λR+。 另请注意,在上面的等式中我们可以将矩阵分解为

[ f 0 0 0 0 f 0 0 0 0 1 0 ] = [ f 0 0 0 f 0 0 0 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 ] \begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0\end{bmatrix}=\begin{bmatrix}f&0&0\\0&f&0\\0&0&1\end{bmatrix}\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{bmatrix} f000f0001000=f000f0001100010001000

  定义两个矩阵

K f = ˙ [ f 0 0 0 f 0 0 0 1 ] ∈ R 3 × 3 , Π 0 = ˙ [ 1 0 0 0 0 1 0 0 0 0 1 0 ] K_f\dot=\begin{bmatrix}f&0&0\\0&f&0\\0&0&1\end{bmatrix}\in \mathbb{R}^{3\times 3},\Pi_0\dot=\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{bmatrix} Kf=˙f000f0001R3×3,Π0=˙100010001000

  矩阵 Π 0 \Pi_0 Π0通常被称为标准(或“正交”)投影矩阵。 从坐标变换我们得到 X ˉ = [ X , Y , Z , 1 ] \bar{\rm X}=[X,Y,Z,1] Xˉ=[X,Y,Z,1]:

[ X Y Z 1 ] = [ R T 0 1 ] [ X 0 Y 0 Z 0 1 ] \begin{bmatrix}X\\Y\\Z\\1\end{bmatrix}=\begin{bmatrix}R&T\\0&1\end{bmatrix}\begin{bmatrix}X_0\\Y_0\\Z_0\\1\end{bmatrix} XYZ1=[R0T1]X0Y0Z01

  总而言之,使用上述表示法,理想相机的几何模型可以描述为:

λ [ x y 1 ] = [ f 0 0 0 f 0 0 0 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 ] [ R T 0 1 ] [ X 0 Y 0 Z 0 1 ] \lambda\begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}f&0&0\\0&f&0\\0&0&1\end{bmatrix}\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}R&T\\0&1\end{bmatrix}\begin{bmatrix}X_0\\Y_0\\Z_0\\1\end{bmatrix} λxy1=f000f0001100010001000[R0T1]X0Y0Z01

  或以矩阵形式,

λ x = K f Π 0 X = K f Π 0 g X 0 \lambda{\rm x}=K_f\Pi_0{\rm X}=K_f\Pi_0g{\rm X}_0 λx=KfΠ0X=KfΠ0gX0

  如果焦距 f f f 是已知的并且因此可以归一化为 1,则该模型简化为欧几里德变换 g g g,接着是标准投影 Π 0 \Pi_0 Π0,即

λ x = Π 0 X = Π 0 g X 0 \lambda{\rm x}=\Pi_0{\rm X}=\Pi_0g{\rm X}_0 λx=Π0X=Π0gX0

具有内参的相机

  公式 λ x = K f Π 0 X = K f Π 0 g X 0 \lambda{\rm x}=K_f\Pi_0{\rm X}=K_f\Pi_0g{\rm X}_0 λx=KfΠ0X=KfΠ0gX0的理想模型是选择相对于非常特殊的参考系(标准视网膜坐标系,canonical retinal frame,以光学中心为中心,其中一个轴与光轴对齐)。

  实际上,当用数码相机拍摄图像时,光轴的坐标或光学中心是未知的,也不是测量单位。 相反当用数码相机捕获图像时,通常可以指定相对于图像的左上角的特定像素的索引 ( i , j ) (i,j) (i,j),以像素 ( i , j ) (i,j) (i,j)的形式获得测量值,图像坐标系的原点通常在图像的左上角。 因此,为了使模型 λ x = K f Π 0 X = K f Π 0 g X 0 \lambda{\rm x}=K_f\Pi_0{\rm X}=K_f\Pi_0g{\rm X}_0 λx=KfΠ0X=KfΠ0gX0可用,我们需要指定视网膜平面坐标系与像素阵列之间的关系。

  第一步包括指定沿 x x x轴和 y y y轴的单位:如果 ( x , y ) (x,y) (x,y)是以公制单位(例如,毫米)指定的,而 ( x s , y s ) (x_s,y_s) (xs,ys)是与像素坐标相对应的缩放版本 ,然后可以通过缩放矩阵来描述变换来描述从 x \rm x x坐标到 x s {\rm x}_s xs坐标的变换

[ x s y s ] = [ S x 0 0 S y ] [ x y ] \begin{bmatrix}x_s\\y_s\end{bmatrix}=\begin{bmatrix}S_x&0\\0&S_y\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix} [xsys]=[Sx00Sy][xy]

  这取决于沿 x x x y y y方向的像素大小(以公制单位表示),见图1。

图1。从标准化坐标转换为以像素为单位的坐标。

  当 S x = S y S_x = S_y Sx=Sy时,每个像素都是正方形。 通常,它们可以是不同的,然后像素是矩形的。 然而,这里仍然相对于主点(其中 z z z 轴与图像平面相交)指定 x s x_s xs y s y_s ys,而像素索引 ( i , j ) (i,j) (i,j)通常相对于左上角指定,通常是正数表示。 因此,我们需要将参考坐标系的原点转换为该角落(如图1所示),

x ′ = x s + o x x^\prime=x_s+o_x x=xs+ox

y ′ = y s + o y y^\prime =y_s+o_y y=ys+oy

  其中 ( o x , o y ) (o_x,o_y) (ox,oy)是主点相对于图像参考系的坐标(以像素为单位)。 因此,实际图像坐标由向量 x ′ = [ x ′ , y ′ , 1 ] T \boldsymbol{x}^\prime=[x^\prime,y^\prime,1]^T x=[x,y,1]T而不是理想图像坐标 x = [ x , y , 1 ] T \boldsymbol{x}=[x,y,1]^T x=[x,y,1]T给出。 上述坐标变换步骤可以用齐次表示写成

(1) x ′ = ˙ [ x ′ y ′ 1 ] = [ s x 0 o x 0 s y o y 0 0 1 ] [ x y 1 ] \boldsymbol{x}^\prime\dot=\begin{bmatrix}x^\prime\\y^\prime\\1\end{bmatrix}=\begin{bmatrix}s_x&0&o_x\\0&s_y&o_y\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}\tag{1} x=˙xy1=sx000sy0oxoy1xy1(1)

  其中 x ′ x' x y ′ y' y是以像素为单位的实际图像坐标。 如图1所示。 在像素不是矩形的情况下,可以考虑更一般形式的缩放矩阵,

[ s x s θ 0 s y ] ∈ R 2 × 2 \begin{bmatrix}s_x&s_\theta\\0&s_y\end{bmatrix}\in \mathbb{R}^{2\times 2} [sx0sθsy]R2×2

  其中 s θ s_\theta sθ被称为倾斜因子(skew factor)并且与 cot ⁡ ( θ ) \cot(\theta) cot(θ)成比例,其中 θ \theta θ是图像轴 x s x_s xs y s y_s ys之间的角度。通常,角度 θ \theta θ非常接近90°,因此 s θ s_\theta sθ非常接近零。因此在(1)中的变换矩阵更一般形式:

K s = ˙ [ s x s θ o x 0 s y o y 0 0 1 ] ∈ R 3 × 3 K_s\dot=\begin{bmatrix}s_x&s_\theta&o_x\\0&s_y&o_y\\0&0&1\end{bmatrix}\in \mathbb{R}^{3\times 3} Ks=˙sx00sθsy0oxoy1R3×3

  在许多实际应用中,通常假设 s θ = 0 s_\theta=0 sθ=0

  除了坐标变换的变化之外,在大视场的情况下,人们经常可以观察到沿径向方向的图像失真。 径向畸变效应通常建模为:

x = x d ( 1 + a 1 r 2 + a 2 r 4 ) x=x_d(1+a_1r^2+a_2r^4) x=xd(1+a1r2+a2r4)

y = y d ( 1 + a 1 r 2 + a 2 r 4 ) y=y_d(1+a_1r^2+a_2r^4) y=yd(1+a1r2+a2r4)

  其中 ( x d , y d ) (x_d,y_d) (xd,yd)是失真点的坐标, r 2 = x d 2 + y d 2 r^2=x_d^2+y_d^2 r2=xd2+yd2 a 1 , a 2 a_1,a_2 a1,a2视为附加的相机参数。 但是,为简单起见,我们将假设径向失真得到了补偿(考虑后一个博文写关于失真)。

  现在,将投影模型与缩放和平移相结合,可以得到一个三维点相对于相机坐标系的齐次坐标和以像素表示的图像的齐次坐标之间的更真实的变换模型,

λ [ x ′ y ′ 1 ] = [ s x s θ o x 0 s y o y 0 0 1 ] [ f 0 0 0 f 0 0 0 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 ] [ X Y Z 1 ] \lambda\begin{bmatrix}x^\prime\\y^\prime\\1\end{bmatrix}=\begin{bmatrix}s_x&s_\theta&o_x\\0&s_y&o_y\\0&0&1\end{bmatrix}\begin{bmatrix}f&0&0\\0&f&0\\0&0&1\end{bmatrix}\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}X\\Y\\Z\\1\end{bmatrix} λxy1=sx00sθsy0oxoy1f000f0001100010001000XYZ1

  请注意,在上面的等式中,真实相机的效果实际上是通过两个阶段进行的:

  • 第一阶段是相对于归一化坐标系的标准透视投影(就好像焦距 f = 1 f=1 f=1一样)。 该投影以标准投影矩阵 Π 0 = [ I , 0 ] \Pi_0=[I,0] Π0=[I,0]为特征。
  • 第二阶段是附加变换(在获得的图像 x \boldsymbol{x} x上),其取决于相机的参数,例如焦距 f f f,缩放因子 s x , s y s_x,s_y sx,sy s θ s_\theta sθ,以及中心偏移 o x , o y o_x,o_y ox,oy

  第二个转换的特点是两个矩阵 K s K_s Ks K f K_f Kf的组合:

K = ˙ K s K f = ˙ [ s x s θ o x 0 s y o y 0 0 1 ] [ f 0 0 0 f 0 0 0 1 ] = [ f s x f s θ o x 0 f s y o y 0 0 1 ] K\dot= K_sK_f\dot=\begin{bmatrix}s_x&s_\theta&o_x\\0&s_y&o_y\\0&0&1\end{bmatrix}\begin{bmatrix}f&0&0\\0&f&0\\0&0&1\end{bmatrix}=\begin{bmatrix}fs_x&fs_\theta&o_x\\0&fs_y&o_y\\0&0&1\end{bmatrix} K=˙KsKf=˙sx00sθsy0oxoy1f000f0001=fsx00fsθfsy0oxoy1

   K s K_s Ks K f K_f Kf的结合允许我们以下列方式写出投影方程:

λ x ′ = K Π 0 X = [ f s x f s θ o x 0 f s y o y 0 0 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 ] [ X Y Z 1 ] \lambda x^\prime=K\Pi_0X=\begin{bmatrix}fs_x&fs_\theta&o_x\\0&fs_y&o_y\\0&0&1\end{bmatrix}\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}X\\Y\\Z\\1\end{bmatrix} λx=KΠ0X=fsx00fsθfsy0oxoy1100010001000XYZ1

   3 × 4 3\times 4 3×4常数矩阵 Π 0 \Pi_0 Π0表示透视投影。 上三角形 3 × 3 3\times 3 3×3矩阵 K K K收集对特定相机“固有”的所有参数,因此称为内在参数矩阵相机的标定矩阵。 矩阵 K K K的元素具有以下几何解释:

  • o x o_x ox: 主点的 x x x坐标,以像素为单位,
  • o y o_y oy:主点的 y y y坐标,以像素为单位,
  • f s x = α x fs_x=\alpha_x fsx=αx:水平像素的单位长度大小,
  • f s y = α y fs_y=\alpha_y fsy=αy:垂直像素中单位长度的大小,
  • α x / α y \alpha_x/\alpha_y αx/αy:长宽比(纵横比) σ \sigma σ
  • f s θ fs_\theta fsθ:像素的偏斜,通常接近于零。

  注意,除非纵横比( σ \sigma σ等于1),否则像素的高度不一定与其宽度相同。

  当标定矩阵 K ​ K​ K 已知时,标定坐标 x ​ x​ x可以通过 K ​ K​ K 的简单的逆运算从像素坐标 x ′ ​ x^\prime​ x获得:

(2) λ x = λ K − 1 x ′ = Π 0 X = [ 1 0 0 0 0 1 0 0 0 0 1 0 ] [ X Y Z 1 ] \lambda x=\lambda K^{-1} x^\prime = \Pi_0X=\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}X\\Y\\Z\\1\end{bmatrix}\tag{2} λx=λK1x=Π0X=100010001000XYZ1(2)

  关于矩阵 K K K的信息可以通过摄像机标定过程获得,一般可能厂商也可能给出,而且相机内参一般在出厂后固定,不排除由于热度等因素导致。在 K K K 补偿的影响下,在归一化坐标系中表示的等式(2)对应于理想的针孔摄像机模型。 图像平面位于投影中心的前方,焦距 f f f 等于 1 1 1

  总而言之,坐标点 X 0 = [ X 0 . Y 0 , Z 0 , 1 ] T \boldsymbol{X}_0=[X_0.Y_0,Z_0,1]^T X0=[X0.Y0,Z0,1]T相对于世界坐标系及其对应的图像坐标 x ′ = [ x ′ , . y ′ , 1 ] x^\prime=[x^\prime,.y^\prime,1] x=[x,.y,1](以像素为单位)之间的几何关系取决于世界坐标系和相机坐标系之间的刚体运动 ( R , T ) (R,T) (R,T)(有时称为外部校准参数),理想投影 Π 0 \Pi_0 Π0和相机固有参数 K K K。 因此,图像形成的整体模型由以下等式捕获:

λ [ x ′ y ′ 1 ] = [ s x s θ o x 0 s y o y 0 0 1 ] [ f 0 0 0 f 0 0 0 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 ] [ R T 0 1 ] [ X 0 Y 0 Z 0 1 ] \lambda\begin{bmatrix}x^\prime\\y^\prime\\1\end{bmatrix}=\begin{bmatrix}s_x&s_\theta&o_x\\0&s_y&o_y\\0&0&1\end{bmatrix}\begin{bmatrix}f&0&0\\0&f&0\\0&0&1\end{bmatrix}\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}R&T\\0&1\end{bmatrix}\begin{bmatrix}X_0\\Y_0\\Z_0\\1\end{bmatrix} λxy1=sx00sθsy0oxoy1f000f0001100010001000[R0T1]X0Y0Z01

  以矩阵形式,我们写

λ x ′ = K Π 0 X = K Π 0 g X 0 \lambda x^\prime=K\Pi_0X= K\Pi_0gX_0 λx=KΠ0X=KΠ0gX0

  或等效地,

λ x ′ = K Π 0 X = [ K R , K T ] X 0 \lambda x^\prime=K\Pi_0X= [KR,KT]X_0 λx=KΠ0X=[KR,KT]X0

  通常,为方便起见,我们称 3 × 4 3\times 4 3×4矩阵 K Π 0 g = [ K R , K T ] K\Pi_0g=[KR,KT] KΠ0g=[KR,KT]为(一般)投影矩阵 Π \Pi Π,用以区别于标准投影矩阵 Π 0 \Pi_0 Π0。 因此,上述等式可以简单地写成

(3) λ x ′ = Π X 0 = K Π 0 g X 0 \lambda x^\prime=\Pi X_0= K\Pi_0gX_0\tag{3} λx=ΠX0=KΠ0gX0(3)

  与理想的相机模型 λ x = Π 0 X = Π 0 g X 0 \lambda{\rm x}=\Pi_0{\rm X}=\Pi_0g{\rm X}_0 λx=Π0X=Π0gX0(前面所述)相比,这里唯一的变化是标准投影矩阵 Π 0 \Pi_0 Π0被一般的 Π \Pi Π取代。

  为了明确地看到透视投影方程的非线性特性,我们可以用方程式(3)除以尺度 λ \lambda λ,得到图像坐标 ( x ′ , y ′ , z ′ ) (x^\prime,y^\prime,z^\prime) (xy,z)的下列表达式,

x ′ = π 1 T X 0 π 3 T X 0 , y ′ = π 2 T X 0 π 3 T X 0 , z ′ = 1 x^\prime=\frac{\pi_1^TX_0}{\pi_3^TX_0},y^\prime=\frac{\pi_2^TX_0}{\pi_3^TX_0},z^\prime=1 x=π3TX0π1TX0,y=π3TX0π2TX0,z=1

  其中 π 1 T , π 2 T , π 3 T \pi_1^T,\pi_2^T,\pi_3^T π1T,π2Tπ3T是投影矩阵 Π \Pi Π的三行。

总结

  空间中的三维点 X X X经过投影映射到相机前方 z = 1 z=1 z=1处的归一化图像平面的像素点 x ′ x^\prime x的变换公式如下:

λ x ′ = K Π 0 X \lambda x^\prime=K\Pi_0X λx=KΠ0X

  其中 λ \lambda λ是三维点的深度(一般未知),是正值。

   K K K是相机内参矩阵(标定),一般是 K s K_s Ks K f K_f Kf的组合。

   Π 0 \Pi_0 Π0是标准(或“正交”)投影矩阵。

对于内参矩阵 K K K:

K = ˙ K s K f = ˙ [ s x s θ o x 0 s y o y 0 0 1 ] [ f 0 0 0 f 0 0 0 1 ] = [ f s x f s θ o x 0 f s y o y 0 0 1 ] K\dot= K_sK_f\dot=\begin{bmatrix}s_x&s_\theta&o_x\\0&s_y&o_y\\0&0&1\end{bmatrix}\begin{bmatrix}f&0&0\\0&f&0\\0&0&1\end{bmatrix}=\begin{bmatrix}fs_x&fs_\theta&o_x\\0&fs_y&o_y\\0&0&1\end{bmatrix} K=˙KsKf=˙sx00sθsy0oxoy1f000f0001=fsx00fsθfsy0oxoy1

矩阵 K K K的元素具有以下几何解释:

  • o x o_x ox: 主点的 x x x坐标,以像素为单位,
  • o y o_y oy:主点的 y y y坐标,以像素为单位,
  • f s x = α x fs_x=\alpha_x fsx=αx:水平像素的单位长度大小,
  • f s y = α y fs_y=\alpha_y fsy=αy:垂直像素中单位长度的大小,
  • α x / α y \alpha_x/\alpha_y αx/αy:长宽比(纵横比) σ \sigma σ
  • f s θ fs_\theta fsθ:像素的偏斜,通常接近于零。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuYunTan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值