首页 > 代码库 > 关于违章停车检测方法的思考

关于违章停车检测方法的思考

在国创项目中需要使用opencv实现对汽车的停止的判定。最初通过查阅资料了解到可以通过连续帧间位移的测定实现,原以为是一个比较简单的方法,可是后来随着学习和思考的深入,才知道并不。

连续帧间位移比较符合常规的思想,在一定的连续帧中,记录汽车质心位置,取其平均值,若位置变化不大或者没有变化,则可以认定汽车停止。但是这个方法实现的前提是要能够记录到进入到违停区域的车辆,并实现跟踪。难点就在这里。

由于本人水平有限而且感觉实现汽车的跟踪又需要学习大量的东西,感觉时间的付出与收效不成正比,所以就开始了苦逼的寻找简单方法的旅程。

干想肯定不好想,所以开始借助搜索引擎。在google上一阵搜索,确实找到了一些方法。除了跟踪连续帧位移方法外,网上还提供了一种方法,即连续帧像素平均灰度值的方法。如果禁停区域内没有物体通过,则该区域像素灰度均值是稳定的,当出现变化时,即可认定有物体通过(经过区域或者停止到区域内)。若物体只是经过,则灰度均值变化则是先逐渐增加(对于二值前景图),后逐渐减少到原来的值;若是停止到禁停区域,则是先逐渐增加,后稳定到一个新值不再变化。方法是挺好,可是这个方法是先检测有物体停止,后车辆识别。而我的实现方式是先识别车辆,所以只好放弃。

最后,又经过多方查询,想到一个类似连续帧间位移的方法,只是不需要进行跟踪了。具体想法如下:

经过识别后的车辆对其轮廓包围矩阵计算其中心,若中心坐标进入禁停区域,则开始记录其坐标。然后再下一帧中再次计算所有区域内包围矩阵的中心点位置,选取离上一次最近的中心点进行记录(关键步骤:按照常理,相离最近的中心点往往表示同一辆车,因而实现了类似跟踪的效果),然后在下一帧中继续按照此步骤进行,直至中心点消失。而消失有两种情况:车辆停止或者超出禁停区域。然后再加以区分即可获得停止车辆的坐标。

试验过程中出现部分抖动,所以将中心点消失的判定外加一个连续20帧后消失为正确(即非抖动情况)情况。

至此,最终能够获取到车辆在禁停区域停止的坐标。

 

关于违章停车检测方法的思考