离散点平滑
基于优化的离散点平滑
模型检测到的车道线,最终的输出的是车道线的点坐标(x,y),这些点能够大概描述车道线在画面中的位置,但是如果想要拟合出车道线的高阶方程,可能还是不够平滑,一些离散点会影响拟合的效果。

优化变量:车道线点坐标(x_i,y_i)
优化目标有三个,分别是平滑度、长度和相对参考点的偏移量。因此目标函数可以设计为:
其中cost_1是平滑度代价,cost_2是长度代价,cost_3是相对参考点偏移量代价。
cost_1可以理解为下图中向量\overrightarrow {P_1P_0}和\overrightarrow {P_1P_2}相加的结果,也就是新的向量\overrightarrow {P_1P_3}的模。这个值越小,意味着这三个点的连线越平直,那么这条线也就更加平滑。
cost_2可以理解为点之间距离的平方和。
cost_3可以理解为优化后离散点相对原始参考点偏移距离平方之和。
约束条件
位置约束
即偏移量不应太大,应该被限制在一定范围内。
曲率约束
此外还需要考虑到曲率的约束,车道线的弯曲程度往往不会太大。就算是较大曲率的弯道,车也转不过去...在自动驾驶路径规划中,一般会用车辆的转弯半径作为曲率的约束。
假设P_0,P_1,P_2三点在一个圆上面,当\theta_1很小时,向量\overrightarrow {P_1P_0}和\overrightarrow {P_1P_2}的模 \Delta s 近似于弧长,因此:
坐标系转换
车道线检测结果在模型输出中是像素中的点坐标,但是控制模块是不能直接使用的,需要把坐标从像素坐标系转换至世界坐标系。
曲线拟合
幂函数可以逼近任意函数。
上式中,N代表多项式系数,一般 N=5。
当N=5时,多项式为:
最小二乘法(Least Square Method,LSM)
最小二乘法通过最小化误差(也叫残差)的平方和来寻找最优函数匹配。对于 m 维数据集P(x,y),P内的数据点P_i(x_i,y_i)有:
其中 i 是样本维度,P(x,y)内的点可以是相同的任意维度。
则P(x,y)内的所有点误差平方和为:
求解目标:函数的系数 k_j 应使误差平方和 R^2 取得极小值。此处的j指的是多项式各项系数的下标,j=(0,1,2,...n)。
代数形式
对于最优系数来说,其误差平方和 R^2 与多项式系数 k_j 的偏导数满足:
即
即
比如当n=2时,方程为f(x)=y=k_0+k_1x
R^2(k_0,k_1)=\sum_{i=1}^{2}[(k_0+k_1x_i)-y_i]\frac{\partial(R^2)}{\partial{k_0}}=2\sum_{i=1}^{2}[(k_0+k_1x_i)-y_i]=0\frac{\partial(R^2)}{\partial{k_1}}=2\sum_{i=1}^{2}[(k_0+k_1x_i)-y_i]x_i=02 k_1 + k_0\sum_{i=1}^{2}x_i =\sum_{i=1}^{2}y_ik_0\sum_{i=1}^{2}x+k_1 \Sigma_{i=1}^{2}x_i^2 = \sum_{i=1}^{2}x_iy_i
矩阵形式
上面内容写为矩阵格式就是:
因此有XK = y \rightarrow K=X^{-1}y,K就是多项式系数向量,X和y是数据集中的点。
参考文章
[1] https://blog.csdn.net/i_chaoren/article/details/79822574
[2] https://zhuanlan.zhihu.com/p/268884807
[3] https://mathworld.wolfram.com/LeastSquaresFitting.html
[4] https://zhuanlan.zhihu.com/p/342740447
评论