个人笔记梳理。
坐标系
世界坐标系
一个相机是在3D空间中,如果我们想描述这个相机或者物品在空间中的位置,那么就是使用这个坐标系来描述相机的位置。 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw,Yw,Zw)
相机坐标系
顾名思义,就是以相机为原点建立一个坐标系。
(
X
,
Y
,
Z
)
(X, Y, Z)
(X,Y,Z).
图像坐标系
图中以图像中心为原点建立的坐标系就是图像坐标系。
像素坐标系
图中以图像左上角为原点建立的坐标系就是像素坐标系。
坐标变换
一般来说对应的转换关系包括
相机坐标系 到 图像坐标系 到 像素坐标系
相机坐标系到图像坐标系
投影相机的一个特殊情况(理想模型)是透视(或中心)投影,当我们变换矩阵按焦距进行如下缩放时,就对应了我们熟悉的针孔相机:
已知相机坐标系是
(
X
,
Y
,
Z
)
(X,Y,Z)
(X,Y,Z) 图像坐标系是
(
x
,
y
)
(x,y)
(x,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}
Z⎣⎡xy1⎦⎤=⎣⎡f000f0001000⎦⎤⎣⎢⎢⎡XYZ1⎦⎥⎥⎤
所以
x
=
f
X
Z
x = \frac{fX}{Z}
x=ZfX
y
=
f
Y
Z
y = \frac{fY}{Z}
y=ZfY
这是如何来的呢?
首先说可以简单把焦距理解为相机到图像空间的距离:
因此,对于下图中,
O
O
O即代表了相机位置为,
f
f
f即为焦距,
B
B
B处是图像空间,
P
P
P处是真实的物体,
P
′
P'
P′ 是该物体经过相机对应在图像空间的点,
Z
Z
Z是相机原点到物体的垂直距离。
因此有:
变换后得到:(注意这里的
x
,
y
x,y
x,y就是上图的
X
′
,
Y
′
X',Y'
X′,Y′)
x
=
f
X
Z
x = \frac{fX}{Z}
x=ZfX
y
=
f
Y
Z
y = \frac{fY}{Z}
y=ZfY
图像坐标系到像素坐标系
对于图像坐标系(x,y)和像素坐标系(u,v)
u
=
x
d
x
+
u
0
u
=
y
d
y
+
v
0
(1)
\begin{matrix} u = \frac{x}{dx}+u_0\\ \\ u = \frac{y}{dy}+v_0\\ \end{matrix} \tag{1}
u=dxx+u0u=dyy+v0(1)
此公式可以写到其次坐标系下:
[
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⎦⎤
(u0, v0)是图像坐标系原点在像素坐标系中的坐标,dx 和 dy相当于缩放因子,是每个像素在图像平面x和y方向上的尺寸比例。
综合上述:可以得到像素坐标系与相机坐标系的关系。(注意这里的
X
′
,
Y
′
X',Y'
X′,Y′就是图像坐标。)
其次坐标系表达为:
世界坐标系到相机坐标系
给定一个物体或者说一个坐标。我们知道,在世界坐标系下他对应了一个坐标,但是他在相机坐标系下也对应了一个坐标。下面的公式将这两者统一。
这里下标为c的就是相机坐标,下标为w的就是世界坐标,其中
R
R
R为
3
×
3
3 \times 3
3×3的旋转矩阵,
t
t
t是三维的平移向量。
这个
R
,
t
R,t
R,t 是相机的外部参数,一般用
T
T
T表示。
综合上述,世界坐标系与像素坐标系之间的关系为:
小结
综合上述:可以得到像素坐标系与相机坐标系的关系。(注意这里的
X
′
,
Y
′
X',Y'
X′,Y′就是图像坐标。)
其次坐标系表达为:
影响投影结果的参数可以分为内外两类:内部/外部参数(intrinsic and/or extrinsic parameters)。内部参数指相机的内生特性,比如焦距、倾斜度、失真、画布中心等。外部参数指相机旋转矩阵、平移向量等。
回顾我们之前的公式:
x
=
f
X
Z
x = \frac{fX}{Z}
x=ZfX
y
=
f
Y
Z
y = \frac{fY}{Z}
y=ZfY
这意味着我们在进行从相机坐标到图像坐标进行变换的时候我们是对每个点的深度Z进行放缩,投影到图像上。
但是在实际的应用中,最常见的假设其弱透视相机(weak perspective camera)。
在弱透视相机(weak perspective camera)中,从相机坐标到图像坐标进行变换时:
我们使用的是一个平均深度
Z
a
v
e
Z_{ave}
Zave。使用一个constant深度
Z
a
v
e
Z_{ave}
Zave去代替了每个点的深度
Z
i
Z_i
Zi ,从而使得分析变得简单。但是要满足弱透视的要求,需要满足几个假设:
- 沿着光轴上的,物体的深度的平均差别 Δ Z \Delta Z ΔZ,需要远远小于 Z a v e Z_{ave} Zave。
- 视角场(filed of view)(也就是观察某个物体点的夹角, X Z a v e , Y Z a v e \frac{X}{Z_{ave}}, \frac{Y}{Z_{ave}} ZaveX,ZaveY)必须足够小。
这样假设的好处是:
补充
上述为基本的相机模型,但是实际中会有畸变问题,可以进一步参考:
https://blog.csdn.net/lsh_2013/article/details/47615309
Camera system的内容,pls refer to:
https://blog.csdn.net/loseinvain/article/details/102883243 写的非常好。
Ref
- https://blog.csdn.net/lsh_2013/article/details/47615309
- https://zhuanlan.zhihu.com/p/47994715
- https://zhuanlan.zhihu.com/p/67662499
- https://blog.csdn.net/loseinvain/article/details/102883243