我正在做一个叫ATCS(自动交通控制系统)的项目,它会根据红绿灯前的车辆数量来修改红绿灯的持续时间。
我使用openCV和backgroundsubtractorMOG来检测车辆,当车辆移动时,它可以成功运行,但当红色信号亮起时,所有车辆都无法计数。当然,这会使我的软件无法工作。
到目前为止,我知道backgroundsubtractorMOG是最好的解决方案,因为这个系统可以在wheather,光照强度等许多变化中工作。它会比较当前帧和前一帧,因此运动对象被检测为前景(CMIIW)。那么,移动中的车辆和已经停止的车辆--因为交通信号灯的红色信号亮着,它迫使司机停车?它仍然会被检测为前景对象吗?
所以我想问最合适的算法来做这件事。如何计算车辆移动时的数量,以及当车辆停止移动时,因为红色信号--它仍然检测为车辆。
谢谢您:)
发布于 2013-12-14 13:29:24
你是如何更新你的背景的?由于光照条件的变化(云,白天,夜晚,黄昏,天气),你不能保留它的统计数据,但是如果你仍然知道背景的外观,也就是如果汽车不在那里,那么仍然可以检测到停着的汽车的存在。如果你在图像中有一个区域没有汽车通过,你可以用它来了解照明条件是否正在变化。
你对车辆的视角是什么?有机会将Viola Jones检测器与KLT跟踪器相结合,您将获得更好和更一般的结果。
发布于 2013-12-16 18:25:32
如果背景减法对你有效(如你所说),我会尝试添加另一个背景模型。然后你可以执行两次背景差分,一次是针对前一个图像(适用于所有移动对象),另一次是针对long term background model
,它将检测所有停止的车辆(以及正在移动的车辆),但对于不同的照明条件可能会有一些缺点。
您可以使用ViBe
或Gaussian-Mixture-Models
来创建这些背景模型。
另一种方法是引入一些跟踪机制,正如Antonio已经提到的那样。一旦通过背景差分检测到车辆(只有移动对象会出现在图像中),您就可以开始跟踪,即使没有再次检测到它们(因为它们不会移动),您也会知道它们在那里。因此,您需要一种跟踪方法,而不是“通过检测进行跟踪”,而是某种其他方法。我会推荐卡尔曼滤波或粒子滤波,或者是均值漂移跟踪。
编辑:Local Binary Patterns (LBP)
是一种经常用于车辆检测的方法,它类似于背景减去技术
发布于 2013-12-15 16:48:53
我建议使用潜在的SVM检测器和“汽车”和“巴士”模型来检测车辆,然后在你得到的边界框上应用简单的跟踪。
潜在支持向量机检测器:http://docs.opencv.org/modules/objdetect/doc/latent_svm.html
https://stackoverflow.com/questions/20579342
复制相似问题