空间变换及投影约束
在 3-D 空间中的一点 $p$ 在两个相机中的坐标分别为 $\mathbf{X_1}, \mathbf{X_2}$,相机1到2之间的旋转、平移分别为 $R, T$,$p$ 点在两个相机中成像的坐标是 $\mathbf{x_1}, \mathbf{x_2}$,则 3-D 空间坐标满足以下关系:
$$ \mathbf{X_2}=R\mathbf{X_1}+T $$
两个图像坐标满足对极线约束:
$$ \mathbf{x_2^T}E\mathbf{x_1} = 0 $$
其中$E=R[t]_{\times}$ 为本征矩阵,包含5个自由度,即缺少一个尺度量,下文具体解释,推导过程可以参考1。
尺度退化
在多视几何中,如果两个相机质检的相对位置未知,即基线是未知量,仅通过对应关键点的三角化是不能计算得到真实的物理深度。
$$ {\lambda}_1 \begin{bmatrix}u_1 \\ v_1 \\ 1 \end{bmatrix} = [I|0] \begin{bmatrix}X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} $$
$$ {\lambda}_2 \begin{bmatrix}u_2 \\ v_2 \\ 1 \end{bmatrix} = [R|t] \begin{bmatrix}X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} $$
比如将相机1坐标系定为世界坐标系,相机1坐标下的一点在相机2中的投影关系如上式(2)所示。如果将世界坐标乘以尺度 $s$,对于的 $(R, t)$ 乘以相应尺度,等式仍然成立。在2D的变换矩阵中则称为相似变换。
图像矫正-朝向变换
结合上面的两个公式,当相机只有旋转变换时,可以建立如下图像像素的映射关系:
$$ \begin{align} x &= (u-c_x^{\prime})/f_x^{\prime} \\ y &= (v-c_y^{\prime})/f_y^{\prime} \\ [X,Y,W]^T &= R^{-1}*[x,y,1]^T \\ x^{\prime} &= X/W \\ y^{\prime} &= Y/W \\ \end{align} $$
如果加上畸变参数,则可以得到去畸变图像到原始未去畸变图像的映射关系1。这种变换的一个应用是对齐双目相机的朝向,使得两个图像的对极线水平且 $y$ 坐标相同;另外一个应用就是虚拟相机,将不同朝向的图像归一化到统一的朝向,保证数据一致性。
进一步,如果像对去畸变变换的图像进行缩放,可以生成一个新的内参,即中心点不修改,只缩放比例:
k_3d = np.eye(3)
k_3d[0][0] = 1 - ratio
k_3d[0][2] = ratio * k[0][2]
k_3d[1][1] = 1 - ratio
k_3d[1][2] = ratio * k[1][2]
new_k = k_3d.dot(k)
虚拟相机-尺度/矫正变换
这部分再详细介绍一下虚拟相机,这个模块在 Tesla 的自动驾驶模型预处理部分。
通过统计各个车辆相机标定后相对与主车的朝向分布得到一个统计意义上的标准朝向,将不同车辆图像按此朝向进行旋转,生成虚拟图像,保证相机与主车之间具有统一的旋转外参。Tesla 是基于这样的预处理进行后续的 BEV 3D检测,可能网络学习的过程中不用显式地在模型中加入外参获取 BEV 候选目标在图像中的对应特征,因为特征的位置是固定的,进而降低模型的计算难度。相比来说,目前开源的工作,比如BEVFormer、BEVFusion,都是显式地使用外参进行投影特征的融合。
平面约束和单应矩阵
当用空间中一个平面 $P$ 来表达点与点的映射关系时,能推导出一个与该平面相关的单应映射关系。假设 $\mathbf{N}$ 为平面 $P$ 的单位法向量,$d$ 为第一个相机中心到平面的距离,则平面上一点 $X_1$ 满足如下关系:
$$ \left\langle \mathbf{N}\cdot\mathbf{X_1} \right\rangle = d $$
结合公式(1)可得,
$$ \mathbf{X_2}=R\mathbf{X_1}+T \cdot 1=R\mathbf{X_1}+T \cdot \frac{1}{d} \left\langle \mathbf{N}, \mathbf{X_1} \right\rangle=(R+\frac{1}{d} T \cdot \mathbf{N^T})\mathbf{X_1} $$
$$ H=R+\frac{1}{d} T \cdot \mathbf{N^T} $$
可以看出 $H$ 是与所选择平面 $P$ 的参数有关,即如果按某个平面求解单应矩阵,对图像进行变换都是按这个平面假设进行。另外,如果公式中没有相机的平移,则单应矩阵就退化到了图像矫正,与所选平面没有关系,变换在全局图像上都适用。
图像拼接
单应变换的一个应用是图像拼接,具体来说基于平面对应关系求解单应矩阵,然后利用矩阵进行图像变换实现拼接3。
具体求解过程,在不同图像上提取特征点并匹配建立对应关系,单应矩阵有8个自由度,选取4个匹配点即可求解,或者构建超定方程,利用最小二乘法求解。