SLAM-相机与图像
相机模型
针孔相机模型
$$X’=f\frac{X}{Z}$$
$$Y’=f\frac{Y}{Z}$$
假设传感器像素屏幕坐标为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$$ 连线射线上的点都可以对应到同一个像素上,因此一般可以用归一化平面上的点进行处理。这也意味着点的深度在投影过程中被丢失了。
畸变的矫正
径向畸变
切向畸变

对于归一化平面上的任意一点$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})$$
双目相机
解决景深的获取
b为基线
世界坐标系中的空间点P在左右相机各成一像PL,PR(位置是归一化平面,O才是像素平面)。(UR是负数)
$$\frac{b-u_L+u_R}{b} = \frac{z-f}{z}$$ $$z = \frac{fb}{u_L-u_R}$$