项目设计——车流识别(3.优化与改进)

项目设计——车流识别(3.优化与改进)

功能优化

在之前的博客中提到的帧差法可以对视频中的车辆进行检测识别,但是实际运行中我们不难发现以下问题:

1) 识别车流过程中会出现一辆车分裂识别为两个矩形,识别不准确;
2) 以上仅仅做到了检测视频中的车辆,实际上并没有完整地实现车流识别功能,即需要统计与识别等高级功能。
为此,在后续的工作中,主要针对之前的功能进行优化改进。其中优化改进主要分为三个方面:
1) 优化车辆识别功能,提升识别准确度;
2) 加入视频车流统计功能,统计视频中被识别出的车辆;
3) 加入车轮检测,获取更多统计信息完善识别功能;

优化识别

以往的识别中使用的帧差法计算相邻帧差的绝对值以从视频中检测检测移动中的汽车,然而对于车速较快的车辆,帧与帧之间的的差距可能较大,容易产生“鬼影降低识别的准确率”,另外如果车速较慢,帧差图的中段差异不明显,容易被识别为两辆车,造成识别异常。
解决这类问题可以考虑从两方面入手,第一是改善视频质量,说白了就是到一个车速平稳的地点或者选择行车速度稳定的视频;第二种方法就是改进识别方法,即使用三帧差法。三帧差法使是帧差法的改进,它将原有的相邻两帧求差改为将前两帧计算差值,再将当前帧与其前一帧进行差值,再把两个差值按像素点进行“与”操作,最后得到差值图片。后续的处理均不变。在具体实现中,仅需要在求帧差的时候额外存储并预处理一份前一帧与前前帧的帧差,在经过高斯滤波后,未进行二值化之前,将两个帧差结果bitwise_and“与”操作即可。就结果而言,三帧差法很好的改善了分裂识别的问题。图为三帧差法视频识别效果。三帧差法识别效果

车流统计

车流统计的方法其实很简单,我们只需要在视频左侧放两条检测线,当检测到有“target”框通过这两条线时,就给计数器加一。不适用单单一条线的原因是:一条线很难判断什么叫做通过,而两条线我们可以根据一定时间内通过第一条和到达第二条来判断是否 有车辆通过检测区。

车轮检测

车轮检测环节我们在确定好的矩形识别框内应用HoughCircles()霍夫圆检测函数进行检测。对于检测的结果,如果半径符合车轮大小,我们可以用红圈在视频中标出。
然而,经过膨胀与腐蚀的车辆轮廓很难表现出车轮的相关信息,霍夫圆检测在实际使用中的效果并不理想。
下图为膨胀腐蚀后的结果。从图中不难看出在该区域检索圆形并不是一件容易的事。事实上使用霍夫圆变换在膨胀腐蚀过之后的区域检测轮胎并不是明智的选择,这部分功能在实际使用中效果也并不好,我们从上一部分的配图中可以看出并没有被检测到轮胎。
该部分需要考虑其他办法解决问题,例如在做膨胀腐蚀等处理之之前做霍夫圆检测或者考虑处理后的汽车轮廓的形态特性判定轮胎位置。更多改进与思考会在以后继续。
在这里插入图片描述

总结

本次项目设计实验基本完成了车流检测这一基本任务,总的来讲对opencv处理图像功能有了更深入的了解。这次的实验功能并没有尽善尽美,仍有不少可以改进的空间,将会在日后继续思考与解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值