一种基于FPGA的超低功耗实时车道线检测的方法与流程

文档序号:15348722发布日期:2018-09-04 23:04阅读:255来源:国知局

本发明涉及车道线检测的技术领域,更具体地,涉及一种基于fpga的超低功耗实时车道线检测的方法。



背景技术:

在本发明之前的二十年中,已经有大量研究开发了车道线检测系统,例如霍夫变换随机线检测和可操纵过滤器等经典的算法,但这些算法都有着各种缺陷。如霍夫变换有量化误差,噪声和网格维数等问题,而且这些算法均为cpu串行执行,在速度和功耗方面表现较差。此专利中提出了一种可伸缩的车道线检测算法,可以在检测精度和速度之间进行调整。例如,由于光线条件不同,道路上的阻塞,建筑物或树木上的投影遮盖了车道线,这时候就需要提高计算精度来达到比较好的检测结果。



技术实现要素:

本发明为克服上述现有技术所述的至少一种缺陷,提供一种基于fpga的超低功耗实时车道线检测的方法,提高计算精度需要较大功耗,本方法可以fpga上使用opencl平台实现超低功耗的检测和跟踪来自现场道路的车道线。

本发明的技术方案是:在硬件方面,采用的是alteracyclonevsocfpga。主存为1gb,最大功率为4w,可支持并行优化后车道线检测代码实现超低功耗的车道线实时检测。

在软件平台方面,采用opencl作为编写并行程序的框架。opencl提供了基于任务分割和数据分割的并行计算机制,支持多个异构平台协同工作,被广泛应用于并行加速领域。一个opencl应用程序在host上运行时可以连接多个加速设备,然后在加速设备上并行地运行opencl代码。

在算法方面,开发了一种可伸缩的车道检测方法,以调节检测精度于计算成本之间的平衡,可实现检测和跟踪来自现场道路的车道标记。对于跟踪的情况,使用非线性的粒子滤波方法。该方法特别适合并行处理,因为每个粒子可以独立处理。可通过改变使用粒子的数量实现在跟踪精度与计算成本之间进行权衡。

与现有技术相比,有益效果是:本发明利用opencl作为编程语言和cots组件搭建了adas开发的基础平台,提出了一种可以在检测精度和速度成本进行协调的可伸缩的车道线检测算法,实现了在异构平台上车道线检测算法的并行化,大大提高了在可接受的精度下车道线检测的速度。实现了低成本的超低功耗车道线实时检测,对自动驾驶辅助系统(adas)的投入实际应用提供了可能。

附图说明

图1是本发明车道线检测算法框架图。

图2是本发明硬件配置示意图。

图3是本发明车道线检测效果图。

图4是本发明运行结果图。

图5是本发明时间分析图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。附图中描述位置关系仅用于示例性说明,不能理解为对本专利的限制。

如图1所示,为车道线检测算法框架图,对输入图像先进行预处理,然后根据前一帧的估计来判断执行车道线检测算法或车道线跟踪算法,以获取精确的车道线位置。

如图2所示,为本发明中用到的两个型号的fpga,表格中是两个fpga的具体参数。由于有超低功耗的要求,主要使用cyclonevst。

如图3所示,演示了本算法在不同的场景中的车道线检测效果,排除环境因素对车道线检测的影响,如铁路轨道,需要转弯,曝光和阴影等等,使应用在多变环境下仍能安全可靠地运行。

如图4所示,表示在不同的粒子数目下,帧率的变化。由于粒子数目越大,检测越精确。分析上图可得,当例子数目为np≤512时,帧率比较大,考虑到检测精度,np=512时,检测精度与计算成本达到一个平衡点。

如图5所示,测量了三个步骤占用的时间比例,可以看出,粒子数目增大时,车道线跟踪的时间比例是呈上升趋势的,而车道线检测的时间比例是呈下降趋势的。

本实施例中,硬件方面:

摄像头将实时图像数据发送给fpga进行处理。本发明中fpga选用的是altera的cyclonevst,其实现了业界最低的系统成本和功耗,具有高效的逻辑集成功能,而且性能水平突出,非常适用于搭建adas系统。我们使用该fpga来处理捕获的图像信息并实现车道线检测功能。

软件方面:

该应用包括图像预处理、车道检测和车道跟踪三个部分。首先在预处理阶段,从每一帧中放大或提取关于车道线的信息。然后,判断车道线是否在先前预测的位置,来决定重新打点进行车道线位置的精确检测或者跟踪先前预测的车道线。

预处理。从传入的图像中选择一个感兴趣区域(roi),该区域包含车道线的信息。首先将该部分转为灰度图像,然后用sobel滤波器检测图像的边缘,最后通过一个阈值进行再次滤波,去除噪声和增强图像。

车道线检测。在预处理之后,roi中会有高强度的像素带表示车道线。提取车道线的准确位置是车道检测和车道跟踪算法的任务。如果没有对车道线的估计,就执行车道线检测。在检测到车道线后,只在车道跟踪算法不能跟踪车道线时再进行车道线检测。在roi中,我们假设车道线都是直线,因此一条车道线可以定义为两点,一个点在roi顶部,一个在底部,直线可表示为因此可以通过以下关系来获取任意给定直线x的强度值:

为了检测多个车道标记,roi被垂直分割为多个区域,每个区域有一个车道标记每一条直线的强度是通过计算roi内所有像素的强度之和来确定的。另外,在一个可调的邻域(实际线的左和右)附近的像素也被添加到这个强度权重中:

2nn是可调邻域的宽度。

选择具有最高强度权重的候选线作为车道标记候选线是通过正态分布后采样其x-top和x-bottom来创建的,使用更多的候选线可以获得更好的检测效果,单也会消耗更多的计算资源,因此可以权衡车道线检测的时间性能和质量。

车道线跟踪。车道线跟踪算法使用了先前帧的信息来检测后续帧的车道标记,实际上它没有检测到车道标记,只是跟踪他们。车道跟踪算法有两个信息来源,即预处理的roi和前一帧的候选线,然后使用粒子滤波来跟踪标记。粒子滤波是一种基于贝叶斯信号处理马尔可夫链蒙特卡洛仿真模型的随机计算方法。

假设从前一帧采样到i=0,1,2,…,n个加权粒子,粒子状态为xi,此外,每个例子被赋予一个权重wi,表示似然值。

本算法中的例子滤波器以迭代的方式用以下三步实现:每个粒子的状态预测更新;每个例子的重要性权重更新;根据例子的重要性权重进行重采样。

由于粒子已经以良好的线条形式给出,所以在检测阶段,从正常分布中取样候选线是没有必要的。因此引入了预测更新步骤。粒子代表每一帧中的车道标记,在下一帧中被用作先验分布。在新的一帧中,车道的标记可能稍微移动了(因为车辆移动)。粒子需要移动相同的距离,以便在新坐标系中有效的先验分布。粒子权重更新公式如下:

其中,μf=y是观测直线,σf是测量噪声,xt-μf=xt-y是两直线之间的距离。

则观测直线是车道线的概率值为:

其中,

预测和重要性权重的更新产生了一组新的粒子,其中每个粒子都有一个标准化的重要性权重。最后,为了提高跟踪的准确性和防止集合的退化,需要进行重采样操作。下面的伪代码演示了重采样的过程。

idx是任意一个粒子索引,np是粒子数目,β用于滤去权重低于β的粒子,该算法中,权重越高的粒子,拥有多个复制粒子的概率越高。但还是可能会有一部分权重较大的粒子没被抽中。

重检车道线准则。从车道跟踪到检测的切换取决于实际的道路情况。本算法需要切换到检测状态的三种情况是:车道标记不交叉;任何检测到的车道标记之间的最小距离;在这个工作中,roi的宽度的20%,至少30%的车道标识是在roi中。

在cyclonevst运行该应用,显著降低了车道线检测的时间,使其实现实时车道线检测,同时实现了超低功耗。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1