电子DIY、Arduino、51单片机、STM32单片机、FPGA……
电子百科、开发技术、职业经验、趣味知识、科技头条、设备拆机……
http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect
-------------------------------------------------------------------------------------------------------------------------
本文以FPGA芯片为核心,来检测运动车辆是否超速以及车辆是否闯红灯。
通过摄像机采集到的图像以图像处理的方法进行处理,然后通过MATLAB软件将采集到的图片转化成Verilog可识别的的数字代码,再加以帧间差分法、最小二乘法,对处理过后的图像进行进一步的处理,通过Verilog HDL硬件描述语言对test测试模块、fifo缓冲模块、sdram驱动模块、sdram缓冲模块进行设计编程,最后通过Quartus II开发平台进行编译并仿真实现出车速,对此车速进行判断是否超速。
在闯红灯方面我们研究基于视频图像处理的闯红灯车辆自动检测系统,通过摄像头采集视频的交通信息,通过视频采集软件,运用相应的图像处理技术进行实时处理分析,检测车辆时采用虚拟线圈进行检测,获得车辆是否违章闯红灯的信息,并将之记录并保存保存到存储器当中以作执法证据使用。
SDRAM 是 Synchronous Dynamic Random Access Memory的缩写,意思就是同步随机动态存储器。随机动态存储说的就是它可以把数据存储到任何一个存储单元,而且是随机的,看命令的地址是什么,需要存到哪里就到哪里跟顺序没有关系。同步是指除了CKE以外的信号是需要同步进行的例如时钟信号,地址信号,数据信号,只有都是同步的它们才能高效的进行数据的读写。
OV7670 是OV(OmniVision)公司生产的一颗1/6寸的CMOS VGA 图像传感器。该传感器体积小、工作电压低,能够提供单片VGA 摄像头和影像处理器的所有功能。通过SCCB 总线控制输出整帧、子采样、取窗口等方式的各种分辨率 8 位影像数据。该产品VGA 图像最高达到30 帧/秒。
分析式(3.14)可知,差分图像中包括噪声区域和由运动目标引起的运动变化区域两部分,其中运动变化区域又包括真正的运动目标、被覆盖和显露的背景部分。由于图像序列的多样性,用某种具体的特征对运动变化区域进行描述很困难,因此并不能直接对运动变化区域进行提取。
考虑到在成像过程中噪声的分布具有一定的规律性,一般可假设其服从高斯分布,由于服从高斯分布的两个随机变量之差仍然服从高斯分布,所以相邻帧之间的相对噪声也服从高斯分布,因此我们可以通过估计相邻之间的相对噪声的特征参数对差分图像中的相对噪声进行滤波,从而检测出运动变化区域。
运动变化区域包括真正的运动目标、被覆盖的背景、显露的背景三部分,为了准确地检测和提取出运动目标,尤其是当目标的运动速度较快导致运动变化区域内的被覆盖和显露的背景区域较大时,必须考虑运动目标的边界信息,本文处理的视频对象运动幅度较小,目标的变化区域与整个视频图像的面积相比很微小(大多数实际的视频序列满足此假设条件),采用Roberts算子进行边缘检测,结合空域的信息进行目标提取。
帧间差分法应用于检测图像序列中的人或者较大的目标有无运动,运算量小,容易用软件实现,实际应用效果较好。但对于分类目标,以及较高要求的目标检测,此方法仍有一定缺陷。
基于图像处理的车速检测的软件部分主要有6个模块组成,分别是运动车辆图片采集、图像预处理、背景提取、车辆检测、目标跟踪和车速计算。
(1)车辆运动图片采集
在车辆较少的地方选取一直行车道,选取好准备路过的车辆进行拍照,用事先准备好的摄像机对选中的车辆拍摄两帧的图片,拍摄过程中要保证摄像机不会有丝毫的移动,拍摄结束后对采集到的图片进行下一步的处理。
(2)图像预处理
通过对采集到的视频图像进行预处理,由于整幅图像太大,包含信息太多对提取有用的目标信息会造成不必要的干扰,摄像机采集到的原始图像是像素,从中截取像素的图像为目标检测区域,将拍摄到的彩色图像进行灰度化处理,使其转化为灰度图像,然后对转化之后的灰度图像进行二值化,提取目标车辆。摄像机图像采集频率为 30HZ,即相邻两帧之间的时间间隔为 33.33毫秒(即三十分之一秒),我选取的是第一帧和第十一帧图像,这样保证了中间有10个时间间隔,将这两帧图像当做两帧相邻的图像,这样它们之间的时间间隔即为0.33秒(即为三分之一秒)。
(3)背景提取和更新
根据有车辆运行的图像中得到无车辆的道路背景,称为背景估计。同时,为了与实际道路场景符合,提高识别精度,保证系统长时间准确正常的运行,还需要综合当前道路光线,阴影等各种因素,不断实时更新背景图像。选取一帧图像,然后将其及其前面n帧图像进行处理,选取相应的像素点,对这些点的像素值进行累加,得到了n帧像素值的和,将计算出的这个值除以n,得到这n帧图像的平均像素值,这些像素值就构成了一个背景图像。
(4)车辆检测及特征点提取
根据背景图像判断当前区域是否有车辆,如果有车,通过当前帧与背景图像差分得到目标车辆,要对目标车辆进行精确定位就要对目标的特征点进行提取,目标车辆的特征点必须具备的条件:能够准确定位目标车辆的当前位置,特征明显,方便提取,便于跟踪。本文提出了一种基于车轮胎定位的车辆特征点进行提取,首先提取出目标车辆的车轮胎位置,对车轮胎进行精确定位,轮胎中心位置便为目标车辆的特征点。
(5)目标跟踪
对目标车辆提取特征点准确定位后,然后根据连续帧车辆特征点的不同位置对车辆进行跟踪,采用线性方程对目标车辆在连续帧特征点的像素位置进行拟合,拟合出目标车辆的行驶轨迹。
(6)车速计算
通过提取连续几帧目标车辆特征点在图像中的像素位置,将车辆在图像中经过的像素距离转化为实际路面中的距离,用距离与时间的比值即为目标车辆的实际车速。
(1)启动程序,打开所记录下来的监控视频资料 (本系统仅识别AVI),获取视频文件的灰度、亮度以及分辨率,提取视频中的每一帧图像,通过图像处理的方式对其进行处理。
(2)判断视频文件中的帧图像是否已经处理完毕,如果已经处理完毕,则程序结束,否则执行下一步。
(3)从视频文件中读取下一帧图像到内存中,供程序接下来处理。
(4)本系统通过设定红绿灯信号时长来模拟红绿灯信号变化,程序只会对红灯信号期间的视频数据进行处理,因此需要判断当前是否为红灯信号。如果当前不是红灯信号,则返回步骤(2)重新开始。否则执行下一步。
(5)提取虚拟线圈区域中的图像,供程序接下来处理。
(6)选取一帧图像,然后将其及其前面n帧图像进行处理,选取相应的像素点,对这些点的像素值进行累加,得到了n帧像素值的和,将计算出的这个值除以n,得到这n帧图像的平均像素值,这些像素值就构成了一个背景图像。
(7)采用混合高斯模型对当前帧图像进行运动目标检测,得到背景图像和二值化目标图像。
(8)采用无阂值的阴影消除算法对二值目标图像进行处理,去除图像中的阴影像素点。
(9)对二值目标图像进行先开后闭的滤波操作,消除图像中孤立的小点和小孔洞。
(10)对进行处理过后的二值化图片进行运算,判断是否成立,如果不成立,转回到步骤(2);若成立,则认为该车辆闯红灯,进行下一步。
(11)车辆闯红灯检测成功,将此闯红灯车辆的二值化图像、背景图像均保存到存储器当中以作执法证据使用,返回步骤(2),程序结束。