目标:
- 针孔相机模型、内参、径向畸变参数
- 一个空间点如何投影到相机成像平面
- OpenCV图像存储与表达方式
- 摄像头标定方法
观测方程部分
机器人如何观测外部世界(视觉SLAM中指相机成像过程)
相机模型
投影关系的描述、相机内参
双目成像、RGB-D相机原理
二维照片像素基本操作
点云拼接
光线通过针孔之后,在针孔背面投影成像的关系
1 | 点P与它的像之间的空间关系 |
$\frac{Z}{f}=-\frac{X}{X^{\prime}}=-\frac{Y}{Y^{\prime}}$
负号表示:成像倒立;简化模型:
$$
\frac{Z}{f}=\frac{X}{X^{\prime}}=\frac{Y}{Y^{\prime}}
$$
$$
\begin{aligned}
&X^{\prime}=f \frac{X}{Z} \
&Y^{\prime}=f \frac{Y}{Z}
\end{aligned}
$$
内参数矩阵
猫述传感器将感受到的光线转换成图像像素的过程
$P^{\prime}$ 坐标与像素坐标关系:
$$
\left{\begin{array}{l}
u=\alpha X^{\prime}+c_{x} \
v=\beta Y^{\prime}+c_{y}
\end{array}\right.
$$
$$
\begin{aligned}
&X^{\prime}=f \frac{X}{Z} \
&Y^{\prime}=f \frac{Y}{Z}
\end{aligned}
$$
$$
\left{\begin{array}{l}
u=f_{x} \frac{X}{Z}+c_{x} \
v=f_{y} \frac{Y}{Z}+c_{y}
\end{array}\right.
$$
变为齐次坐标及矩阵表示:
$$
\left(\begin{array}{l}
u \
v \
1
\end{array}\right)=\frac{1}{Z}\left(\begin{array}{ccc}
f_{x} & 0 & c_{x} \
0 & f_{y} & c_{y} \
0 & 0 & 1
\end{array}\right)\left(\begin{array}{l}
X \
Y \
Z
\end{array}\right) \triangleq \frac{1}{Z} \boldsymbol{K} \boldsymbol{P}
$$
把Z挪到左侧:
$$
Z\left(\begin{array}{l}
u \
v \
1
\end{array}\right)=\left(\begin{array}{ccc}
f_{x} & 0 & c_{x} \
0 & f_{y} & c_{y} \
0 & 0 & 1
\end{array}\right)\left(\begin{array}{l}
X \
Y \
Z
\end{array}\right) \triangleq \boldsymbol{K} \boldsymbol{P}
$$
$K$ 内参数矩阵 $\rightarrow$ 相机出厂后固定
外参数矩阵
$P$ 的相机坐标, 应该是其世界坐标 $\left(P_{w}\right)$ 根据相机当前位姿变换到相机坐标系下的结 果, 即:
$$
Z \boldsymbol{P}{u v}=Z\left[\begin{array}{l}
u \
v \
1
\end{array}\right]=\boldsymbol{K}\left(\boldsymbol{R} \boldsymbol{P}{w}+\boldsymbol{t}\right)=\boldsymbol{K} \boldsymbol{T} \boldsymbol{P}_{w}
$$
注意:
相机镜头上透镜的存在,使得光线投影到成像平面过程中产生畸变
1 | 畸变类型 |
畸变类型 | 原因 | 描述 | 二级分类 |
---|---|---|---|
径向畸变 | 透镜形状引起 | 坐标点沿着长度方向发生变化 | 桶形畸变 |
枕形畸变 | |||
切向畸变 | 透镜与成像面不严格平行 | 坐标点沿着切线方向发生变化 |
纠正方法
纠正流程
相机坐标系中的一点 $P(X, Y, Z)$, 通过五个畸变系数找到这个点在像素平面上的正确 位置:
1 | 畸变校正两方法 |
小结
1 | 空间点位置的确定 |
当P的深度确定时,我们才能确切知道它的空间位置
1 | 双目相机成像模型 |
空间点左右眼成像分别为 $P_{L}, P_{R}, \mathrm{x}$ 轴上位移对应到 $\mathrm{u}$ 轴上的 $u_{L}, u_{R}$, 由 $\Delta P P_{L} P_{R} \sim \Delta P O_{L} O_{R}$
整理后得到
$$
\frac{z-f}{z}=\frac{b-u_{L}+u_{R}}{b}
$$
$$
z=\frac{f b}{d}, \quad d=u_{L}-u_{R}
$$
1 | 不同方法对比 |
方法 | 原理 | 例子 |
---|---|---|
红外结构光(Structured Light) | 返回的结构光图案 | Kinect 1,Project Tango 1,Intel RealSense |
飞行时间法(Time-of-flight,ToF) | 脉冲光往返时间 | Kinect 2…… |
1 | ToF与激光扫描对比 |
方法 | 原理 | 处理 |
---|---|---|
ToF | 可获得整个图像像素深度 | 图像、点云 |
激光 | 逐点扫描 | 点云不同方法对比 |
1 | 描述 |
数学:矩阵
计算机:连续的磁盘或内存空间(二维数组)
计算机中图像的表示
$$
\boldsymbol{I}(x, y) \in \mathbb{R}^{w \times h}
$$
$(x, y)$ 像素位置, $I(x, y)$ 对应位置上的灰度值, $w, h$ 宽度和高度
1 | unsigned char image[480][640] *//width=640,height=480* |
1 | unsigned char pixel = image[y][x] |