前言
研0学生,放假宅家,本科期间对其感兴趣,故开始学习。
一个人学有点无聊,可以一起来学呀!参考书:高翔《slam十四讲》第二版
我会在我的笔记中,结合自己的理解复述内容,并对代码部分完成复现。有问题的可以留言或者私信噢!
开发环境:虚拟机Ubuntu22.04+Vscode。
一、相机模型
针孔相机模型
设
O
−
x
−
y
−
z
O-x-y-z
O−x−y−z为相机坐标系,
O
O
O是相机光心,物理成像平面是
O
′
−
x
′
−
y
′
O^{'}-x^{'}-y^{'}
O′−x′−y′。
注:此图应从左往右看。
设
P
P
P点的坐标是
[
X
,
Y
,
Z
]
T
[X,Y,Z]^{T}
[X,Y,Z]T,
P
′
P^{'}
P′点的坐标是
[
X
′
,
Y
′
,
Z
′
]
T
[X^{'},Y^{'},Z^{'}]^{T}
[X′,Y′,Z′]T,物理成像平面到光心的距离为
f
f
f(焦距)。根据相似三角形的知识可以得到:
Z
f
=
−
X
X
′
=
−
Y
Y
′
\frac{Z}{f}=-\frac{X}{X^{'}}=-\frac{Y}{Y^{'}}
fZ=−X′X=−Y′Y
负号的原因是因为在小孔成像模型中,所呈现的像是倒像,为更符合实际,把成像平面等价地移至相机前方,去掉负号,并完成归一化,如下图所示。
整理得到一组更为简单的式子:
X
′
=
f
X
Z
X^{'}=f\frac{X}{Z}
X′=fZX
Y
′
=
f
Y
Z
Y^{'}=f\frac{Y}{Z}
Y′=fZY
为了描述传感器将感受到的光线转换成图像像素的过程,我们设在物理成像平面上固定着一个像素平面
o
−
u
−
v
o-u-v
o−u−v,原点
o
o
o位于物理成像平面左上角,
u
u
u轴向左平行于
x
x
x轴,v轴向下平行于
y
y
y轴。此时得到了像素坐标系下的
P
′
P^{'}
P′的坐标
(
u
,
v
)
(u,v)
(u,v)。
像素坐标系和成像平面之间,相差了一个缩放和一个原点的平移,设像素坐标系在
u
u
u轴缩放了
α
\alpha
α倍,
v
v
v轴缩放了
β
\beta
β倍,原点平移了
[
c
x
,
c
y
]
T
[c_{x},c_{y}]^{T}
[cx,cy]T,可以得到像素坐标系下的
P
′
P^{'}
P′的坐标
(
u
,
v
)
(u,v)
(u,v)为:
{
u
=
α
X
′
+
c
x
v
=
β
Y
′
+
c
y
\left\{\begin{matrix} u=\alpha X^{'}+c_{x}\\ v=\beta Y^{'}+c_{y} \end{matrix}\right.
{u=αX′+cxv=βY′+cy
将
X
′
X^{'}
X′和
Y
′
Y^{'}
Y′代入,得:
{
u
=
α
f
X
Z
+
c
x
v
=
β
f
Y
Z
+
c
y
\left\{\begin{matrix} u=\alpha f\frac{X}{Z}+c_{x}\\ v=\beta f\frac{Y}{Z}+c_{y} \end{matrix}\right.
{u=αfZX+cxv=βfZY+cy将
α
f
\alpha f
αf合并成
f
x
f_{x}
fx,将
β
f
\beta f
βf合并成
f
y
f_{y}
fy,得:
{
u
=
f
x
X
Z
+
c
x
v
=
f
y
Y
Z
+
c
y
\left\{\begin{matrix} u=f_{x}\frac{X}{Z}+c_{x}\\ v=f_{y}\frac{Y}{Z}+c_{y} \end{matrix}\right.
{u=fxZX+cxv=fyZY+cy
把上述式子改写成矩阵形式:
(
u
v
1
)
=
1
Z
(
f
x
0
c
x
0
f
y
c
y
0
0
1
)
(
X
Y
Z
)
=
1
Z
K
P
\begin{pmatrix} u\\ v\\ 1 \end{pmatrix}=\frac{1}{Z} \begin{pmatrix} f_{x}&0&c_{x}\\ 0& f_{y} &c_{y} \\ 0 & 0 &1 \end{pmatrix}\begin{pmatrix} X\\ Y\\ Z \end{pmatrix}=\frac{1}{Z} KP
⎝
⎛uv1⎠
⎞=Z1⎝
⎛fx000fy0cxcy1⎠
⎞⎝
⎛XYZ⎠
⎞=Z1KP
至此,我们得到得矩阵
K
K
K即相机得内参矩阵,通常情况,相机生产好时,厂商会将其告诉你,如果没有,则需要自己标定,现在这个标定也很成熟,如张正友标定法。
相机既然有内参就会有外参,外参得概念是,观察上一个式子的
P
P
P是相机坐标系下的坐标,在实际过程中相机是在运动的,所以
P
P
P的相机坐标是它的世界坐标
P
w
P_{w}
Pw经过平移旋转得到的。那么有:
Z
P
u
v
=
Z
[
u
v
1
]
=
K
(
R
P
w
+
t
)
=
K
T
P
w
ZP_{uv}=Z\begin{bmatrix} u \\ v\\ 1 \end{bmatrix}=K(RP_{w}+t)=KTP_{w}
ZPuv=Z⎣
⎡uv1⎦
⎤=K(RPw+t)=KTPw其中
R
,
T
R,T
R,T称为相机的外参。
畸变模型
待更新
双目相机模型
待更新
RGB-D相机模型
待更新
二、图像
待更新
三、代码复现
待更新