0. 简介

对于视觉而言,如何使用鸟瞰图来完成车道线的识别和标定是非常重要的,对于鸟瞰图来说,其实有很多种,之前读者的博客中也已经提到过《逆透视变换(IPM)多种方式及代码总结》、《IPM 鸟瞰图公式转换与推导》。这个当然内容还是不太详细,对于各位想要复现难度会比较大,这个时候可以看一下《单应矩阵的推导与理解》这篇文章的详细推导。其实只需要知道精确的外参和内参,以及相机的高度,以及期望的W和H(可以通过视场角(参考1.2公式)和分辨率求得)。而比较难解决的就是外参这类问题。而《Online Extrinsic Camera Calibration for Temporally Consistent IPM Using Lane Boundary Observations with a Lane Width Prior》这个文章就为我们指明了一个比较可行的方法,目前这部分作者已经经过验证,效果还是比较好的。

1. 主要贡献

本文提出了一种对相机的在线外参标定的方法,即在连续的驾驶场景图像中,从路面信息估计俯仰角、偏航角、横滚角和摄像机高度。该方法分两步估计相机的外部参数:

1)利用一组车道线观测值计算的消失点同时估计俯仰角和偏航角;

2)通过最小化车道宽度观测值和车道宽度先验值之间的差异来计算横滚角和摄像机高度。利用扩展卡尔曼滤波(EKF)对摄像机外部参数进行连续更新,最后利用逆透视映射(IPM)生成时间一致的鸟瞰图(BEV)。该文章证明了该方法在合成和真实数据集上的优越性。

2. 消失点求俯仰角和偏航角

消除图像透视投影影响的一个通用方法是使用IPM(逆透视变换),IPM的前提是需要知道相机相对于地面的变换关系,而我们通过标定可以获得相机和车辆之间的变换关系,正常情况下,我们使用固定的外参来进行前视图像和bev图像之间的wrap,但是由于不平整的地面, 车辆运动加减速,上下坡的影响,相机的角度(相对于地面的)会以外参为均值发生变化,我们需要实时的估计出这个变化,从而得到正确的IPM图像。CHENGCHENG GUO的博文就已经比较详细的介绍了这部分的内容。感兴趣的读者可以看一下这篇文章。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5GM65j8I-1680162577703)(https://candyguo.github.io/images/pitch1.png)]

下面我们来看一下这篇文章的方法。在[13]、[15]和[17]中,我们将俯仰角和偏航角估计转化为在路面上平行车道边界的VP与相机之间找到旋转关系,如图3所示。其中CW分别表示相机和世界坐标系。我们定义Wz轴为VP的方向,即消失方向VD。因此,如图3(b)和图3(c)所示,俯仰角和偏航角可以定义为相机前方方向与VD之间的夹角。由于车道边界观测结果可能存在噪声,我们采用基于高斯球理论和RANSAC [21]的鲁棒VP估计方法[20]。在使用VP初始化俯仰角和偏航角后,我们通过EKF在连续的图像中对它们进行估计。

图3:俯仰角和偏航角估计。(a)相机和世界坐标系。(b)和(c)分别是俯仰角和偏航角的定义。

2.1 高斯球

在针孔相机模型中,以相机主点为中心的单位球称为高斯球。如图4所示,一个大圆是高斯球与由图像上的一条线和主点确定的平面的交点。由于平行线在图像平面上相交于VP,所以对应于平行线的大圆在高斯球上有一个交点,从主点到交点的方向成为VD。VD是由所有大圆(NGCs)法线确定的平面的法向量,我们称之为NGC-VD正交性。 正交性与图像平面中的线-VP的相交是相同的,即图像平面中的平行线与VP相交。

图4:高斯球的描述

3.2 消失点估计

我们假设已经给定了一组表示车道边界的线段。该组通常包含一些噪声线或异常值,因此我们使用RANSAC[21]来过滤掉异常值,然后估计一个对噪声线具有鲁棒性的VP。给定一组线段\mathcal{L}时,RANSAC过程可以描述为算法1。

在算法1中,从两个随机抽样的线段{l_j,l_k} ⊂ \mathcal{L}计算VP假设v_i,如下所示:

然后使用Rother [22]的得分函数计算VP假设v_i的得分值s_i。图5显示了计算s_i时要考虑的两个约束条件:对于每个线段l ∈ \mathcal{L}

1)l和包括v_il的中心点的虚拟线之间的角度θ(v_i,l)

2)l的长度l_l

现在,得分函数定义为:

其中,λ_1λ_2是权重值,分别设置为0.8和0.2。θ_{th}是阈值,设置为0.7。l^mL中最长线段的长度。当θ(v_i,l)不小于\theta_{th}时,不计算l的得分。因此,通过RANSAC过程对具有最高得分的一组线段Lc行聚类。聚类后的线用于计算最优VP。为了获得最优VP,我们利用第III-A节中提到的NGC-VD正交性。计算每条线l的NGC n


K是一个内在相机矩阵,p_1p_2是l的端点。然后v和NGCs的正交方程为:


线性方程的超定系统可以通过奇异值分解(SVD)轻松解决。实际上,公式(4)计算出的v是一个被K投影到图像平面上的VD向量,即v_d = K^{−1}v_p,其中v_dv_p分别是VD和VP,但它们是相同的,因此从现在开始VD将被写成VP。

2.3 俯仰角和偏航角的初始化

俯仰角和偏航角分别用θφ表示。通过俯仰角和偏航角计算出的旋转矩阵,即从世界坐标系到相机坐标系的变换矩阵,由RCW(θ, φ)表示,世界坐标系Wz轴的方向向量表示为d_{W_Z}=[0, 0, 1]^T。然后d_{W_Z}v有以下关系

我们可以将旋转矩阵分解为θφ的两个旋转矩阵,如下所示。

其中c_θs_θc_φs_φ)是θ(φ)的余弦和正弦函数值。然后,从v中初始化θφ,如下所示。

这里的v = [v_x, v_y, v_z],而atan2(y, x)是双参数反正切函数。

2.4 通过EKF估计俯仰角和偏航角

我们采用EKF [18]来估计图像序列中的俯仰角和偏航角。在驾驶过程中,采用恒定角速度模型来建立俯仰角和偏航角变化的模型。因此,定义了一个状态向量x_{PY}和一个系统模型f_{PY}来进行俯仰角和偏航角的估计:

其中ω_θω_φ是俯仰角和偏航角的角速度,w_{PY} = [0, 0, w_θ, w_φ]^T是带有正态分布N(0,W_{PY})的系统模型噪声变量。

利用NGC-VD正交性,定义了一个用于俯仰角和偏航角估计的测量模型h_{PY}

其中nI\in \mathcal{L}_c中的NGC,q_{PY}是测量模型的噪声变量,其正态分布为N(0,Q_{PY})时。 EKF通过以下方式估计状态向量x_{PY}

为简单起见,将x_{PY}简写为x。然后让x_{t-1}P_{t-1}表示时间t-1处的状态估计和其协方差。状态\hat{x}_t及其协方差\hat{P}
t的预测如下计算:

更新用的卡尔曼增益G_t计算方法如下。

在卡尔曼滤波器中,我们需要知道两个东西:系统模型和测量模型。系统模型描述了系统如何从一个状态到另一个状态。测量模型描述了传感器如何观察到系统状态。在实际应用中,系统模型和测量模型通常都不是完美的,因此我们需要通过卡尔曼滤波器来估计系统状态。

在这里,H_tQ_t分别表示测量模型的雅各比矩阵,即


式中分别指时间t的测量噪声协方差。通过残差和卡尔曼增益,预测状态和协方差得以更新,具体方法如下。


其中I是一个单位矩阵。

3. 滚转角和相机高度估算

与使用车道宽度先验和手动注释的路面三维顶点作为观察数据的[14]相比,使用车道边界的二维投影作为观测数据来校准滚转角和相机高度更加复杂,因为由于投影性质和观察到的车道边界与外部摄像机参数之间的非线性几何关系缺乏几何信息。为了简化起见,我们假设俯仰角和偏航角已经在第III节中进行了校正。然后,滚转角和相机高度估计可以被视为在xy平面上计算它们的近似值,如图6所示。通过将道路表面和线l投影到xy平面上,我们可以估计滚转角和相机高度的值,使得道路表面和线的交点之间的距离应该等于车道宽度先验w_p

3.1 滚转角和相机高度初始化

我们首先在车道两侧找到线对{l_L,l_R} ⊂ \mathcal{L}_c,并计算相对于y轴的线角度(α_Lα_R),如图6(c)所示。我们让ψh分别表示滚转角和相机高度。然后可以计算车道宽度。

滚转角和相机高度估计的能量函数被定义为

其中

ψh通过在有限范围内进行穷举搜索来初始化,然后使用高斯-牛顿方法最小化(19)的能量函数进行优化。值得注意的是,应该考虑至少两条车道,因为滚动角是从一对车道宽度观察值的相等性估计的。

3.2 通过EKF估计滚动角和相机高度

与第III-D节类似,我们使用恒定的角度和线速度模型来进行滚动角和相机高度的时间一致估计。因此,定义了一个状态向量x_{RH}和一个系统模型f_{RH},用于滚动角和相机高度的估计。

在这里,ω_ψv_h分别是滚动角的角速度和相机高度的线速度,w_{RH}=[0,0,w_ψ,v_h]是系统模型的噪声变量,服从正态分布N(0,W_{RH})。用于滚动角和相机高度估计的测量模型h_{RH}(ψ,h)与(20)相同。最后,通过使用方程(12) -(17),使用EKF估计滚动角和相机高度。

4. 参考链接

https://zhuanlan.zhihu.com/p/450510507