基于DM6446的视频运动车辆检测系统

嵌入式设计应用

133人已加入

描述

  摘 要: 给出了一种基于DM6446 处理器的视频运动车辆检测系统的技术实现方法,介绍了系统的硬件结构及软件设计思路。结合DM6446 双核处理器的特点,给出了处理器ARM 端与DSP 端通信及双缓冲区切换的具体方法。在视频运动车辆检测算法上,采用差异积累法对DM6446 实时获取的交通视频数据进行背景建模,用背景差法检测车辆运动区域,再结合Otsu 阈值化、形态学滤波及区域生长等算法,最终在DM6446 硬件平台上实现视频运动车辆的实时检测。实验结果表明,该系统具有良好检测效果。

  随着现代交通运输业的快速发展,道路上的车辆日益增多,而伴随而来的交通拥堵、道路使用效率不高等问题却给日常交通管理带来了重重困难。融合了计算机、电子等现代高新科技的智能交通系统(ITS:Intelligent Transport System)提供了解决方法。

  运动车辆检测是ITS 的重要组成部分,本文探讨了以TI 的TMS320DM6446(简称DM6446)为嵌入式开发平台的交通视频信息采集和处理系统的设计,通过分析实时交通视频序列,采用差异积累背景建模、Otsu 自动阈值选取、形态学滤波及区域生长定位等技术,最终实现交通场景视频运动车辆的检测。

  1 系统硬件构成

  本系统选用的TMS320DM6446 是基于ARM926 和TMS320C64x+两个核心的、高度集成的数字媒体处理器。ARM926EJ-S 采用管道化流水线可以执行32bit/16bit 指令集,并提供了独立的16KB的指令Cache 和8KB 的数据Cache,可有效控制和管理外部中断、各种接口及外设。TMS320C64x+属TMS320C6000 系列高性能的定点DSP 处理器,集成了64 个32 位通用寄存器和8 个功能单元,硬件支持块循环操作,采用二级Cache 结构:L1 程序/数据Cache 和L2 存储/Cache.ARM 和DSP 共享外部256MB DDR SDRAM 存储器,64MB NAND Flash用于存放ARM 和DSP 代码。

  系统硬件平台还包含视频处理子系统(VPSS)和众多外设资源。VPSS 是DM6446 中专门负责视频输入输出的硬件模块,由视频处理前端(VPFE)和视频处理后端(VPBE)组成,系统模拟视频信号经由TVP5150解码器解码成YUV422 格式的视频数据后传送给VPFE 的CCD 控制器,然后通过EMIF 接口将暂存在VPSS 内部Buffer 中的数据传送到外部DDR SDRAM中。VPBE 的屏幕显示(OSD)模块将视频数据以YCbCr形式提交给视频编码器(VENC),通过视频编码器输出到VGA 或CVBS 接口。本文处理系统的硬件拓扑结构如图1 所示。

  DM6446

  图1 DM6446 系统平台硬件结构示意图

  2 系统软件设计

  图2 示意了系统硬件平台软件处理模块的组成结构。如图2 所示,软件部分主要完成3 个任务:图像的采集与存放、ARM 与DSP 通信和视频图像处理。

  DM6446

  图2 DM6446 系统平台软件模块构成框图。

  ARM 端负责初始化系统并控制数据的采集和存放。系统初始化时VPSS 被配置为场模式,VPFE 负责将采集到的视频数据连续传送到内存缓冲区。由于ARM 端在向内存中存放图像时DSP 端不能同时读取,为了保证数据处理的正确性,本文采用双缓冲机制,即:设定两个各自连续的帧缓冲区VIDEO BUF0 和video BUF1,视频数据交替的向这两个区域缓冲刷新。

  ARM 与DSP 两核之间的通讯通过内存共享和中断的方式实现。ARM 通过寄存器ARM2DSP0 向DSP发出中断信号,DSP 使用寄存器DSP2ARM0 给ARM发送中断信号。发中断的一方在中断信号发出前向共享内存填写命令,接收中断的一方在中断函数中读取命令,其他模块按照当前的命令执行相应任务。

  视频图像的处理在DSP 核上进行,采集到的视频图像数据为YUV422 格式,算法处理时仅读取视频数据的Y 分量,紧接将视频数据进行差异积累背景建模、运动区域检测等操作以实现对视频序列运动目标的检测。最后DSP 负责将检测完的视频数据存放至固定显示缓存区,由VPBE 读取后显示。

  3 视频运动目标检测算法设计

  在获得视频数据后,需进一步对视频运动目标进行检测(运动车辆)。对固定相机的应用场合,一般采用背景差技术检测视频运动目标,而背景差法又受背景建模效果的约束。目前存在如基于光流场、目标模型以及差分图像等多种视频运动目标检测方法。基于光流场的目标检测法对噪声敏感、计算量大,导致算法实时性较差。基于目标模型的检测方法一般须建立目标的三维模型,再将模型投影至二维平面,再在图像中进行匹配。基于差分图像的检测方法较为常用,可分为邻帧差和背景差两种方法,背景差法是视频运动目标检测中的流行方法。本文即采用背景差法对目标运动区域进行检测,本文针对嵌入式应用,从检测算法的处理效率出发,场景背景模型的获取采用文献[4]所述的基于差异积累的背景建模法。对视频运动目标进行检测主要经过四个步骤:差异积累背景建模、运动区域检测、形态学滤波和区域生长法视频运动目标定位。

  3.1 差异积累背景建模

  差异积累背景建模法首先要建立差异图像,设差异图像为F(i,j,t),当前视频帧为f(i,j,tc),基准帧为f(i,j,tb), 则由当前帧与基准帧比对可以得到一幅差异图像,可表示为公式(1):

  DM6446

  这里的Tf 是一个特定的门限,决定着差异的程度。

  若两幅图像间灰度差在其坐标上有较大的不同时,F(i,j,t)的值被赋为1,否则为0.这样可以生成一个像素值为0 或1,大小与输入图像一致的图像矩阵,称为差异图像。现在考虑一组m 帧视频序列{f(i,j,t1),f(i,j,t2), …, f(i,j,tm)},本文选取视频的第f(i,j,tc-3)帧作为基准帧,系统初始化时将读取的第一帧视频数据赋予基准帧,基准帧随着视频的输入不断迭代,程序实现时可按如下方式进行迭代:

  DM6446

  差异图像描述了视频图像中物体的运动,若在连续图像序列中存在相对稳定的非运动区域则可考虑作为背景。差异图像矩阵随视频帧变化而不断改变,根据差异图像每个像素值的变化程度可以得到一个差异积累动态矩阵D(i,j,t)。 如公式(2)所示:

  DM6446

  λ记录每个像素差异积累的深度,动态矩阵的单元数量和高宽比例与差异图像矩阵相同,当差异图像某位置处的值为0时使动态矩阵相同位置处的计数器加1,这种计数器在动态矩阵每个单元位置各有一个。在对视频序列连续处理过程中,若动态矩阵元素的计数器值等于λ时,就认为对应位置的像素灰度值在规定范围内无变化,可以作为背景像素。

  背景的更新采用加权平均法,设更新前背景为Bold(i,j,t),新背景为Bnew(i,j,t),结合系数利用公式(3)可获得当前更新的背景。应用场景的背景会随着新视频帧的输入而不断进行自动更新,图3 示意了差异积累法的背景更新效果。

  DM6446

  DM6446

  图3 差异积累背景建模过程示意图

  3.2 运动区域检测

  在获得背景模型后,采用背景差法即可获得背景差图,设背景差图为Bd(i,j,t),则有:

  DM6446

  对背景差图做二值化处理即可获得视频运动车辆区域。本文二值化阈值选取采用文献[5]的Otsu 法(最大类间方差法)。Otsu 法根据图像的灰度特性,将图像分成前景和背景两部分。前景和背景之间的类间方差越大,说明构成图像的两部分差别越大,当部分前景错分为背景或部分背景错分为前景时都会导致两部分差异变小,因此,使类间方差最大的分类意味着错分概率最小,选取使类间方差最大和类内方差最小的图像灰度值作为最佳阈值。

  3.3 形态学滤波

  仅对背景差图像做二值化处理是不够的,在二值图中可能出现因错判而导致的空洞和细小的噪声,须进一步经形态学滤波处理以连接相关区域和去噪,具体的操作是腐蚀和膨胀。腐蚀的作用是从二值图像中消除不相关的细节,膨胀可以使裂缝桥接起来。先腐蚀后膨胀的过程具有消除细小物体,在纤细点处分离物体和平滑较大的边界时又不明显地改变其面积的作用。先膨胀后腐蚀的过程具有填充物体内部细小空洞、连接邻近物体、在不明显改变面积的情况下平滑其边界的作用。本文中选择3×3 像素大小的结构元素先后对二值图进行腐蚀和膨胀操作。

  3.4 区域生长法目标定位

  定位是指获取视频运动目标的空间位置,本文采用区域生长法对目标进行位置标记。区域生长法(Region Growing)是一种有效的图像分割算法,算法将有相似性质的像素或子区域集合起来构成区域并不断扩大区域范围。基本方法是以一组种子点开始将与种子性质相似的相邻像素附加到生长区域的每个种子上,逐步构成区域,在没有像素满足加入某个区域的条件时停止生长。种子点的自动选择应满足3 条准则:

  ① 种子与其邻域必须有高相似度;② 在想得到的区域内,至少要能产生一颗种子;③ 不同区域的种子不能连接。

  经形态学滤波处理后,二值图的视频运动车辆区域有了较好的空域连通性,采用区域生长法进行定位的目的就是要确定出前景目标区域并给予标记。本文对前景区域采用矩形框进行标记:在四邻域连通区域内寻找坐标的最大值max(x,y)和最小值min(x,y),据此在图像中绘制白色直线段并连接成矩形框。区域生长法目标定位可简单总结为以下4 个步骤[4]:

  ① 将标记矩阵C(x,y,tk)初始化为待标记的二值图像(设种子点灰度值为255);② 根据种子点灰度值逐行扫描C(x,y, tk)图像,若搜索到符合条件的像素点则以其为中心检查邻域像素,满足合并条件的邻域像素坐标压入堆栈,并设置为背景点;③ 利用步骤②的前景点位置坐标得到目标矩形框位置坐标(xman,yman)、(xmax,ymax),矩形框坐标入栈,返回②;④ 逐个取出矩形框位置坐标,进行矩形框绘制。

  4 实验结果与分析

  为进一步说明本文基于DM6446 实时视频运动车辆检测系统的实际检测效果,本文针对不同交通视频序列进行了检测实验。由于不便在实际交通现场进行效果测试,实验时使用“新浪S008”DVD 机提供视频输入信号,DVD 机播放指定的交通视频序列。DVD 的输出通过AV 线连接到视频板的复合视频信号接口,处理结果由连接在VGA 口的液晶显示器显示。本文共用到3组视频序列: Highway 、Video.long.mjpg 和Hzhighway.其中Highway 来自http://cvrr.ucsd.

  edu/aton/testbed/,video. long.mjpg 为刘瑞祯编写的《OpenCV 教程:基础篇》光盘所提供的测试序列,Hzhighway 为自拍视频序列。

  图4(a)~(d)示意了在DM6446 上进行视频运动目标检测的处理流程。图5(a)、(b)和(c)分别给出了对Highway、Video.long.mjpg 及Hzhighway 各视频测试序列的运动车辆进行检测的效果。

  Highway 背景较为简单,车辆都处于运动状态且行进方向与摄像机镜头朝向相同,检测效果较好,虽然存在少量连体问题,但基本定位准确,如图5(a)所示,可以看到白色矩形框将车辆包含在其中,并随着车辆远离摄像机而逐渐缩小。

  Video.long.mjpg 取景范围较小,同时车辆行驶速度较快,有时不能完整框住车辆。在自拍序列Hzhighway 中车辆定位准确但有时存在矩形框不能框住单一车辆和大小不稳定的情况,如图5(c)所示。经过综合分析得到如下结论:① 倘若背景更新速度不够快,易导致当停驶车辆变为背景后又恢复运动状态时背景不能及时更新为路面的情况。②有些车辆车体颜色与路面相近,在更新时部分车体会被误当成背景。

  DM6446

  图4 视频运动车辆检测过程示意图

  DM6446

  图5 DM6446 视频运动车辆检测系统实验测试效果图。

  5 结语

  本文给出了一种基于DM6446 的视频运动车辆检测系统的技术实现方案,描述了系统软硬件平台的搭建思路。本文所给出的实验效果说明了本系统的技术可行性及其良好检测性能。虽然本系统在几组视频测试序列中获得良好的检测效果,但本系统对环境光照的突变、树枝摇摆的干扰等仍缺乏适应性,算法需做进一步考虑,同时程序也需针对DM6446 硬件平台做进一步优化,这也是作者进一步的研究工作。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
whznumber1 2014-03-30
0 回复 举报
能否提供下代码?谢谢 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分