我正在开发一个名为ATCS(自动交通控制系统)的项目,它将根据红绿灯前的车辆数量修改交通灯持续时间。
我使用openCV和backgroundsubtractorMOG来检测车辆,当车辆行驶时它会成功运行,但是当红色信号打开时,所有车辆都是不可数的。当然这会使我的软件不起作用。
到目前为止,我知道backgroundsubtractorMOG是最好的解决方案,因为这个系统可以在很多变化的天气,光强度等工作。它会比较当前帧和前一帧,所以移动物体被检测为前景(CMIIW)。那么移动和停止的车辆怎么样 - 因为交通信号灯的红色信号亮,它迫使司机停车?它仍会被检测为前景对象吗?
所以我想问最合适的算法。如何在车辆移动时计算车辆的数量,当车辆由于红色信号停止移动时 - 它仍然被检测为车辆。
谢谢你:)答案 0 :(得分:1)
您如何更新背景?由于光照条件的变化(云,白天,黑夜,黄昏,天气),你不能保持统计,但如果你仍然知道背景的外观,那么停车的存在仍然是可以检测的,那就是外观如果车不在那里的话。 如果图像中有一个汽车未通过的区域,您可以使用它来了解照明条件是否正在发生变化。
您的车辆视角是多少?将Viola Jones探测器与KLT跟踪器结合使用可以获得更好,更一般的结果。
答案 1 :(得分:1)
如果背景减法适合你(如你所说),我会尝试添加另一个背景模型。然后你可以进行两次背景减法,一次用于上一张图像(适用于所有移动物体),一次用于long term background model
,这将检测所有已停止的车辆(以及移动的车辆),但对于不同的照明可能有一些缺点条件。
您可以查看ViBe
或Gaussian-Mixture-Models
来创建这些背景模型。
另一种方式是引入安东尼奥已经提到的一些跟踪机制。一旦通过背景减法检测到车辆(图像中仅显示移动物体),您就开始跟踪,即使没有再次检测到它们(因为它们不移动),您也会知道它们在那里。 因此,您需要一种不是“通过检测跟踪”的跟踪方法,而是需要一些其他方法。我会推荐卡尔曼滤波器或粒子滤波,或者平均移位跟踪。
编辑:一种常用于车辆检测的方法,类似于背景减法技术Local Binary Patterns (LBP)
答案 2 :(得分:0)
我建议使用潜在的SVM探测器和“汽车”和“总线”模型来检测车辆,然后在你得到的边界框上应用简单的跟踪。
潜伏SVM探测器: http://docs.opencv.org/modules/objdetect/doc/latent_svm.html