四个坐标系
世界坐标系:世界坐标系可以任意选择,为假想坐标系,在被指定后随即不变且唯一,即为绝对坐标系。除此之外的其他三个坐标系均为相对坐标系,是随着相机位姿的变化而变化的。因此当一张图像只包含有限信息,需要综合多张图片信息的时候,需要世界坐标系这样一个绝对坐标系将串联起所有图片的位置。通常选定第一张图像中的相机坐标系为世界坐标系。
相机坐标系:以相机光心位置为坐标原点,X 轴和Y 轴分别平行于图像坐标系的X轴和 Y 轴,Z轴为相机的光轴
图像坐标系:原点在成像的中心,X 轴和Y 轴分别平行于相机坐标系的X轴和 Y 轴
像素坐标系:原点在成像的左上角,U 轴和V 轴分别平行于相机坐标系的X轴和 Y 轴
世界坐标系( X w , Y w , Z w X_w,Y_w,Z_w Xw,Yw,Zw) → \rightarrow → 相机坐标系( X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc)
通过旋转和平移,将世界坐标系与相机坐标系重合,目的是将物体的点从用世界坐标系来表示转换为用相机坐标系来表示
二维坐标系旋转
点A在X-Y坐标系中的坐标为(a,b),坐标系旋转
θ
\theta
θ后,点A坐标为(m,n)
则有
[
m
n
]
=
[
c
o
s
θ
s
i
n
θ
−
s
i
n
θ
c
o
s
θ
]
[
a
b
]
\begin{bmatrix}m\\n\\\end{bmatrix}= \begin{bmatrix}cos\theta&sin\theta\\-sin\theta&cos\theta\\\end{bmatrix} \begin{bmatrix}a\\b\\\end{bmatrix}
[mn]=[cosθ−sinθsinθcosθ][ab]
三维坐标系旋转
坐标系绕X轴旋转
θ
\theta
θ后,点坐标的转换可以表示为
[
x
′
y
′
z
′
]
=
[
1
0
0
0
c
o
s
θ
s
i
n
θ
0
−
s
i
n
θ
c
o
s
θ
]
[
x
y
z
]
=
R
X
[
x
y
z
]
\begin{bmatrix}x^{'}\\y^{'}\\z^{'}\end{bmatrix}= \begin{bmatrix}1&0&0\\ 0&cos\theta&sin\theta\\ 0&-sin\theta&cos\theta\\\end{bmatrix} \begin{bmatrix}x\\y\\z\end{bmatrix} =R_X\begin{bmatrix}x\\y\\z\end{bmatrix}
x′y′z′
=
1000cosθ−sinθ0sinθcosθ
xyz
=RX
xyz
同理,绕Y轴和Z轴旋转后
[
x
′
y
′
z
′
]
=
[
c
o
s
θ
0
s
i
n
θ
0
1
0
−
s
i
n
θ
0
c
o
s
θ
]
[
x
y
z
]
=
R
Y
[
x
y
z
]
\begin{bmatrix}x^{'}\\y^{'}\\z^{'}\end{bmatrix}= \begin{bmatrix}cos\theta&0&sin\theta\\ 0&1&0\\ -sin\theta&0&cos\theta\\\end{bmatrix} \begin{bmatrix}x\\y\\z\end{bmatrix} =R_Y\begin{bmatrix}x\\y\\z\end{bmatrix}
x′y′z′
=
cosθ0−sinθ010sinθ0cosθ
xyz
=RY
xyz
[ x ′ y ′ z ′ ] = [ c o s θ s i n θ 0 − s i n θ c o s θ 0 0 0 1 ] [ x y z ] = R Z [ x y z ] \begin{bmatrix}x^{'}\\y^{'}\\z^{'}\end{bmatrix}= \begin{bmatrix}cos\theta&sin\theta&0\\ -sin\theta&cos\theta&0\\ 0&0&1\\\end{bmatrix} \begin{bmatrix}x\\y\\z\end{bmatrix} =R_Z\begin{bmatrix}x\\y\\z\end{bmatrix} x′y′z′ = cosθ−sinθ0sinθcosθ0001 xyz =RZ xyz
因此,三维坐标系中的旋转矩阵可以表示为
R
=
R
X
R
Y
R
Z
R = R_XR_YR_Z
R=RXRYRZ
再加上平移矩阵
T
=
[
t
x
,
t
y
,
t
z
]
T
T=[t_x,t_y, t_z]^T
T=[tx,ty,tz]T,可以得到
[
X
c
Y
c
Z
c
]
=
R
[
X
w
Y
w
Z
w
]
+
T
=
[
r
11
r
12
r
13
r
21
r
22
r
23
r
31
r
32
r
33
]
[
X
w
Y
w
Z
w
]
+
[
t
x
t
y
t
z
]
\begin{aligned} \begin{bmatrix}X_c\\Y_c\\Z_c\end{bmatrix} &= R\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}+T\\ &=\begin{bmatrix}r_{11}&r_{12}&r_{13}\\r_{21}&r_{22}&r_{23}\\r_{31}&r_{32}&r_{33}\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}+\begin{bmatrix}t_x\\t_y\\t_z\end{bmatrix} \end{aligned}
XcYcZc
=R
XwYwZw
+T=
r11r21r31r12r22r32r13r23r33
XwYwZw
+
txtytz
将其写为齐次坐标形式,可以表示为
[
X
c
Y
c
Z
c
1
]
=
[
r
11
r
12
r
13
t
x
r
21
r
22
r
23
t
y
r
31
r
32
r
33
t
z
0
0
0
1
]
[
X
w
Y
w
Z
w
1
]
=
[
R
t
0
1
∗
3
1
]
[
X
w
Y
w
Z
w
1
]
\begin{aligned} \begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix} &=\begin{bmatrix}r_{11}&r_{12}&r_{13}&t_x\\r_{21}&r_{22}&r_{23}&t_y\\r_{31}&r_{32}&r_{33}&t_z\\0&0&0&1\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix}\\ &=\begin{bmatrix}R&t\\0_{1*3}&1\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix} \end{aligned}
XcYcZc1
=
r11r21r310r12r22r320r13r23r330txtytz1
XwYwZw1
=[R01∗3t1]
XwYwZw1
相机坐标系( X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc) → \rightarrow → 图像坐标系( X , Y X,Y X,Y)
利用小孔成像原理和相似三角形完成转换
Z
C
f
=
X
C
x
=
Y
C
y
x
=
f
Z
C
X
C
,
y
=
f
Z
C
Y
C
\frac{Z_C}{f}=\frac{X_C}{x}=\frac{Y_C}{y}\\ x=\frac{f}{Z_C}X_{C},\quad y=\frac{f}{Z_C}Y_{C}
fZC=xXC=yYCx=ZCfXC,y=ZCfYC
写成矩阵形式:
[
x
y
1
]
=
[
f
Z
C
0
0
0
f
Z
C
0
0
0
1
Z
C
]
[
X
C
Y
C
Z
C
]
Z
C
[
x
y
1
]
=
[
f
0
0
0
0
f
0
0
0
0
1
0
]
[
X
C
Y
C
Z
C
1
]
\begin{aligned} \begin{bmatrix}x\\y\\1\end{bmatrix} &= \begin{bmatrix}\frac{f}{Z_C}&0&0\\ 0&\frac{f}{Z_C}&0\\ 0&0&\frac{1}{Z_C}\\\end{bmatrix} \begin{bmatrix}X_C\\Y_C\\Z_C\end{bmatrix}\\ Z_C\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_C\\Y_C\\Z_C\\1\end{bmatrix} \end{aligned}
xy1
ZC
xy1
=
ZCf000ZCf000ZC1
XCYCZC
=
f000f0001000
XCYCZC1
图像坐标系( X , Y X,Y X,Y) → \rightarrow → 像素坐标系( U , V U,V U,V)
像素坐标系u-v的单位是pixel,图像坐标系x-y的单位是mm,令 d x / d y dx/dy dx/dy为一个pixel在 x / y x/y x/y轴上的物理尺寸(单位是mm/pixel), ( u 0 , v 0 ) (u_0, v_0) (u0,v0)为图像坐标系的原点在u-v坐标系下的位置,则这两个坐标系的换算公式为
u
=
1
d
x
x
+
u
0
v
=
1
d
y
y
+
v
0
u=\frac{1}{dx} x + u_{0} \quad v=\frac{1}{dy} y + v_0
u=dx1x+u0v=dy1y+v0
写成矩阵形式:
[
u
v
1
]
=
[
1
d
x
0
u
0
0
1
d
y
v
0
0
0
1
]
[
x
y
1
]
\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx}&0&u_0\\0&\frac{1}{dy}&v_0\\0&0&1\\\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}
uv1
=
dx1000dy10u0v01
xy1
综上
Z
C
[
u
v
1
]
=
[
1
d
x
0
u
0
0
1
d
y
v
0
0
0
1
]
[
f
0
0
0
0
f
0
0
0
0
f
0
]
[
R
t
0
1
∗
3
1
]
[
X
w
Y
w
Z
w
1
]
=
[
f
d
x
0
u
0
0
0
f
d
y
v
0
0
0
0
1
0
]
[
R
t
0
1
∗
3
1
]
[
X
w
Y
w
Z
w
1
]
Z_C\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx}&0&u_0\\0&\frac{1}{dy}&v_0\\0&0&1\\\end{bmatrix}\begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&f&0\\\end{bmatrix}\begin{bmatrix}R&t\\0_{1*3}&1\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix}=\begin{bmatrix}\frac{f}{dx}&0&u_0&0\\0&\frac{f}{dy}&v_0&0\\0&0&1&0\\\end{bmatrix}\begin{bmatrix}R&t\\0_{1*3}&1\\\end{bmatrix}\begin{bmatrix}X_w\\Y_w\\Z_w\\1\end{bmatrix}
ZC
uv1
=
dx1000dy10u0v01
f000f000f000
[R01∗3t1]
XwYwZw1
=
dxf000dyf0u0v01000
[R01∗3t1]
XwYwZw1
[
f
d
x
0
u
0
0
0
f
d
y
v
0
0
0
0
1
0
]
\begin{bmatrix}\frac{f}{dx}&0&u_0&0\\0&\frac{f}{dy}&v_0&0\\0&0&1&0\\\end{bmatrix}
dxf000dyf0u0v01000
被称为内参,其中含有5个未知参数:
f
,
d
x
,
d
y
,
u
0
,
v
0
f,dx,dy,u0,v0
f,dx,dy,u0,v0
[ R t 0 1 ∗ 3 1 ] \begin{bmatrix}R&t\\0_{1*3}&1\\\end{bmatrix} [R01∗3t1]被称为外参,其中含有6个未知参数: θ x , θ y , θ z , t x , t y , t z \theta_x,\theta_y,\theta_z,t_x,t_y,t_z θx,θy,θz,tx,ty,tz
畸变
个人感觉SLAM十四讲里面讲的比较详细了,就不复制粘贴了。
参考文章
相机模型中的世界坐标系究竟指什么
坐标系旋转与点旋转的变换公式
《视觉SLAM十四讲》
第六节、双目视觉之相机标定