战斗包子
SLAM-相机与图像

SLAM-相机与图像

相机模型

针孔相机模型

$$X’=f\frac{X}{Z}$$ $$Y’=f\frac{Y}{Z}$$ 20240703203611.png 假设传感器像素屏幕坐标为o-u-v,从左上向游侠。此时像素平面上点P’的坐标为$[u,v]^T$ 如果传感器原点的平移为$[C_x,C_y]^T$

$$\begin{equation} \left\{ \begin{array}{lr} u = f_x\frac{X}{Z}+C_x\\ v = f_y\frac{Y}{Z}+C_y \end{array} \right. \end{equation}$$ $$\begin{bmatrix}u\\v\\1\end{bmatrix} = \begin{bmatrix} f_x/Z&0&c_x\\0&f_y/Z&c_y\\0&0&1/Z \end{bmatrix} \begin{bmatrix} X\\Y\\Z \end{bmatrix} =\frac{1}{Z}KP$$ 其中K为内参矩阵 对于世界坐标系W中的点$P_W$,若相机位姿为R,t(外参),则有

$$z\mathbf {P_{UV}} = K (RP_W+t) = KTP_W$$ 连线射线上的点都可以对应到同一个像素上,因此一般可以用归一化平面上的点进行处理。这也意味着点的深度在投影过程中被丢失了。

畸变的矫正

径向畸变 20240703212738.png 切向畸变 20240703212747.png

对于归一化平面上的任意一点$p = [x,y]^T$,径向畸变可以看作坐标点与原点的距离发生变化,切向畸变可以看成坐标点沿切线方向发生变化(?)。

$$\begin{align} x_{distorted} = x(1+k_1r^2+k_2r^4+k_3r^6) \\ y_{distorted} = y(1+k_1r^2+k_2r^4+k_3r^6) \end{align}$$ 上式的畸变以径向距离r为变量,描述了径向畸变。

$$\begin{align} x_{distorted} = x+2p_1xy+p_2(r^2+2x^2) \\ y_{distorted} = y+p_1(r^2+2y^2)+2p_2xy \end{align}$$ 该式添加了圆锥曲线方程?总之表示的是切向畸变(为什么)

  • 将三维空间点投影到归一化平面$[x,y]^T$
  • 计算畸变

$$\begin{align} x_{distorted} = x(1+k_1r^2+k_2r^4+k_3r^6)+2p_1xy+p_2(r^2+2x^2) \\ y_{distorted} = y(1+k_1r^2+k_2r^4+k_3r^6)+p_1(r^2+2y^2)+2p_2xy \end{align}$$

  • 畸变点在像素平面的位置为

$$\begin{equation} \left\{ \begin{array}{lr} u = f_xx_{distort}+C_x\\ v = f_yy_{distort}+C_y \end{array} \right. \end{equation}$$

对于实际探测而言,如果已经有像素平面上的坐标$[u,v]^T$,可以逆推出实际点的位置。

$$\begin{bmatrix} x\\ y \end{bmatrix}= f(\begin{bmatrix} u\\ v \end{bmatrix})$$

双目相机

解决景深的获取 20240703225710.pngb为基线 世界坐标系中的空间点P在左右相机各成一像PL,PR(位置是归一化平面,O才是像素平面)。(UR是负数)

$$\frac{b-u_L+u_R}{b} = \frac{z-f}{z}$$ $$z = \frac{fb}{u_L-u_R}$$

代码实现

本文作者:战斗包子
本文链接:https://paipai121.github.io/2024/07/03/学习记录/SLAM-相机与图像/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可