2022-11-26
——————————
本文将涉及 3 个坐标系——相机、图像和世界坐标系。
相机:透视投影(perspective projection)
[
x
c
y
c
f
]
=
λ
[
X
c
Y
c
Z
c
]
\begin{bmatrix} x_c \\y_c \\ f \end{bmatrix}= \lambda\begin{bmatrix} X_c \\Y_c\\ Z_c \end{bmatrix}
⎣⎡xcycf⎦⎤=λ⎣⎡XcYcZc⎦⎤
上面的式子,是要取向量相等,则各元素相等。并不是齐次坐标的 up to a scale。
其中,
X
c
=
[
X
c
Y
c
Z
c
]
\mathbf{X}_c =\begin{bmatrix} X_c \\Y_c\\ Z_c \end{bmatrix}
Xc=⎣⎡XcYcZc⎦⎤
是三维场景下的点
X
\mathbf{X}
X 在相机坐标系下的坐标。
λ
=
f
Z
\lambda=\frac{f}{Z}
λ=Zf
这可以用一个关于齐次坐标的线性映射来表示(等式左右两边相差一个常数,the equation is only up to a scale factor)
[
x
c
y
c
f
]
⋍
[
1
0
0
0
0
1
0
0
0
0
1
0
]
[
X
c
Y
c
Z
c
1
]
\begin{bmatrix} x_c \\y_c \\ f \end{bmatrix} \backsimeq \begin{bmatrix} 1& 0 & 0& 0\\ 0&1&0&0\\ 0&0&1&0 \end{bmatrix} \begin{bmatrix} X_c \\Y_c \\ Z_c\\1 \end{bmatrix}
⎣⎡xcycf⎦⎤⋍⎣⎡100010001000⎦⎤⎣⎢⎢⎡XcYcZc1⎦⎥⎥⎤
图像(相机内部参数,intrinsic/internal camera parameters)
注意,上面的
[
x
c
,
y
c
]
\begin{bmatrix} x_c ,y_c \end{bmatrix}
[xc,yc]
是在图 2 中
y
c
p
x
c
y_c p x_c
ycpxc坐标系下的二维坐标。
k
u
x
c
=
u
−
u
0
k_u x_c=u-u_0
kuxc=u−u0
k
v
y
c
=
v
0
−
v
k_v y_c=v_0-v
kvyc=v0−v
其中
k
k
k 的单位是
[
p
i
x
e
l
s
/
l
e
n
g
t
h
]
[pixels/length]
[pixels/length]
pixels是指高度或者宽度方向上的像素数目,length是指图像的高度值或宽度值(单位为米)。
注意:上面的 u , v , u 0 , v 0 u,v,u_0,v_0 u,v,u0,v0 是同一个点在 uv 坐标系下的坐标。
x c , y c x_c,y_c xc,yc 是在 x c p y c x_c p y_c xcpyc 坐标系下的坐标。在一个等式中,出现了同一个点在不同坐标系下的坐标。
上式可以表示为
x
=
[
u
v
1
]
=
[
f
k
u
0
u
0
0
−
f
k
v
v
0
0
0
1
]
[
x
c
y
c
f
]
=
C
[
x
c
y
c
f
]
\mathbf{x}=\begin{bmatrix} u \\ v\\1 \end{bmatrix}= \begin{bmatrix} fk_u & 0 & u_0\\ 0 & -fk_v & v_0\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x_c \\ y_c \\f \end{bmatrix}= \mathbf{C}\begin{bmatrix} x_c\\y_c\\f \end{bmatrix}
x=⎣⎡uv1⎦⎤=⎣⎡fku000−fkv0u0v01⎦⎤⎣⎡xcycf⎦⎤=C⎣⎡xcycf⎦⎤
C
\mathbf{C}
C 是一个
3
×
3
3\times3
3×3上三角矩阵,称作相机标定矩阵。
C
=
[
α
u
0
u
0
0
α
v
v
0
0
0
1
]
\mathbf{C}=\begin{bmatrix} \alpha_u & 0 & u_0 \\ 0 &\alpha_v & v_0\\ 0 & 0 &1 \end{bmatrix}
C=⎣⎡αu000αv0u0v01⎦⎤
其中, α u = f k u , α v = − f k v \alpha_u=fk_u,\alpha_v=-fk_v αu=fku,αv=−fkv
- C \mathbf{C} C 提供了在一个 image 点和一条射线( ( x c , y c , f ) (x_c,y_c,f) (xc,yc,f))在 3 维欧几里得空间中的变换。注:一个三维坐标 ( x c , y c , f ) (x_c,y_c,f) (xc,yc,f) 既可以表示一个三维坐标系中三位点的坐标,也可以表示该从原点出发指向该点的向量。
- 一共有 4 个参数:1. 沿着图像 x , y x,y x,y 方向的放缩参数 α u , α v \alpha_u,\alpha_v αu,αv。主点(principal point( u 0 , v 0 u_0,v_0 u0,v0)),是光轴(optic axis)和图像平面的交点。高宽比(sapect ratio)是 α v . α u \alpha_v.\alpha_u αv.αu
- 如果 C \mathbf{C} C已知,就称相机已经标定
- 校准摄像机是一个方向传感器,能够测量射线的方向。
世界(相机外部参数,extrinsic/external camera parameters)相机与世界坐标系之间的欧几里得变换是 X c = R X W + t X_c=RX_W+t Xc=RXW+t
[
X
c
Y
c
Z
c
1
]
=
[
R
t
0
T
1
]
[
X
w
Y
w
Z
w
1
]
\begin{bmatrix} X_c\\ Y_c \\ Z_c\\1 \end{bmatrix}= \begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0}^T &1 \end{bmatrix} \begin{bmatrix} X_w\\ Y_w \\ Z_w\\1 \end{bmatrix}
⎣⎢⎢⎡XcYcZc1⎦⎥⎥⎤=[R0Tt1]⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤
总结
最终,
x
=
[
u
v
1
]
=
C
[
1
0
0
0
0
1
0
0
0
0
1
0
]
[
R
t
0
T
1
]
[
X
w
Y
w
Z
w
1
]
=
C
[
R
∣
t
]
[
X
w
Y
w
Z
w
1
]
\mathbf{x}=\begin{bmatrix} u \\ v\\1 \end{bmatrix} = \mathbf{C}\begin{bmatrix} 1& 0 & 0& 0\\ 0&1&0&0\\ 0&0&1&0 \end{bmatrix} \begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0}^T &1 \end{bmatrix} \begin{bmatrix} X_w\\ Y_w \\ Z_w\\1 \end{bmatrix}= \mathbf{C} [\mathbf{R}\mid\mathbf{t}]\begin{bmatrix} X_w\\ Y_w \\ Z_w\\1 \end{bmatrix}
x=⎣⎡uv1⎦⎤=C⎣⎡100010001000⎦⎤[R0Tt1]⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤=C[R∣t]⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤
上面定义了
3
×
4
3\times4
3×4投影矩阵:从 3 维欧几里得空间到一张图像
x
=
P
[
X
1
]
\mathbf{x}=\mathbf{P}\begin{bmatrix} \mathbf{X}\\1 \end{bmatrix}
x=P[X1]
P = C [ R ∣ t ] \mathbf{P}=\mathbf{C} [\mathbf{R}\mid\mathbf{t}] P=C[R∣t]
参考资料
- https://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/EPSRC_SSAZ/node3.html
- 《视觉SLAM十四讲》