停车线前车辆检测的鲁棒算法
Posted
技术标签:
【中文标题】停车线前车辆检测的鲁棒算法【英文标题】:Robust algorithm for detecting vehicles before stop line 【发布时间】:2016-12-03 06:00:57 【问题描述】:我需要编写一个程序,该程序使用摄像头在交叉路口停止线之前检测道路上确定区域内是否存在车辆(就像感应回路一样)。输出将根据车辆在该区域的可见性为真或假。摄像头可以垂直安装在道路上,也可以安装在道路上方。目前我需要一个算法。
下图是用于检测交叉路口车辆的示例实现:
经过对该领域的一些研究,我意识到这种技术是背景减法,程序模型背景,当车辆进入该区域时,它会被检测到。但是定义说它可以检测到移动的车辆,那么如果汽车有 50%-60% 的时间在传感器上停下(信号灯变红时)怎么办?他们会成为背景吗?它们是否一直被检测到?
我在 BS 领域看到了一些算法,例如混合高斯,但由于上述问题,怀疑它们在实际情况下是否有效。
目前我编写了一些方法,例如在 Linux 下使用 OpenCV 进行平均。程序计算该矩形内的像素平均值并将该值保存在缓冲区中,计算模式并与当前帧进行比较。但是会出现晚上车灯亮,白天有车影,红灯在我的感应器上停车等问题。
【问题讨论】:
您需要更清楚地定义问题。你的输入是什么?你说的是什么矩形?真/假的输出是什么意思?您是否试图推断存在不同颜色的交通信号灯?尝试编写声明输入和输出的函数原型。另外,给一些图表。 问题已编辑。我添加了一张照片,清楚地表明了我的意图。如图所示,检测到的区域以白色边框显示。 【参考方案1】:我建议更好地检测车辆,而不是将前景与背景分开。有很多灯光条件问题,这是旧时尚。 在 opencv 中,您可以使用例如 haar 级联或 LBP 来快速简单地检测车辆。在 opencv 3.1 中有 2 个用于学习检测器。 使用检测器很简单。
同 In this tutorial
还有一些网络资源,您可以在其中下载已经预训练的级联以进行汽车检测。
检测Opencv中的代码简单易懂 您可以在我的博客上找到示例。我还有一个包含 2000 个汽车正样本的汽车数据集。该示例仅在 bash 中列出到 positiva 示例列表中,并使用实用程序创建示例和 traincascade。 LBP 级联在性能相当的情况下要快一点..
我也在Linux下的windows上学习了级联。不同之处在于运行程序。此外,培训(vec.vec bg.dat 数据必须在创建样本实用程序中准备好。如果您有数据集,则准备培训需要 20 分钟。问题是在哪里可以找到数据。我的博客上有数据集。也尝试理解脚本。我的 -w 32 -h 64 参数用于人员检测。Dor Car 更好的是 -w 32 -h 32。
./opencv_traincascade 和参数
opencv_traincascade.exe -data v5 -vec vec.vec -bg bg.dat -numPos 540 -numNeg 700 -numStages 11 numThreads 4 -stageType BOOST -featureType LBP -w 32 -h 64 -minHitRate 0.999995 -maxFalseAlarmRate 0.2 -maxDepth 10 -maxWeakCount 120 -mode ALL
我还收集了一些数据集来训练检测器。 您也可以从Dataset下载数据集
【讨论】:
以上是关于停车线前车辆检测的鲁棒算法的主要内容,如果未能解决你的问题,请参考以下文章