NANCHANG UNIVERSITY
学 士 学 位 论 文
THESIS OF BACHELOR
(2005 —2009 年)
题 目 基于DSP的运动目标检测
学 院: 信息工程学院 系 电子系 专业班级: 中兴通信051班 学生姓名: 董方圆 学号: 5701105011 指导教师: 王平 职称: 副教授 起讫日期: 2009.3.9-2009.5.29
基于DSP的运动目标检测
专业:通信工程 学号:5701105011
学生姓名:董方圆 指导老师:王平
摘 要
运动目标自动检测是对运动目标检测、提取、识别和跟踪的技术。基于视频序列的运动目标检测,一直以来都是机器视觉、智能监控系统、视频跟踪系统等领域的研究重点,是整个计算机视觉的研究基础。能否将运动物体从视频序列中准确的检测出来,是运动估计、目标识别、行为理解等能否成功的关键。
运动目标检测常用的方法有帧间差分法、背景差分法和光流法,本文将分别介绍以上三种方法,用CCS实现了帧间差分法的软件仿真,然后在以TI TMS320DM642为主控DSP芯片的闻亭视频通信模块(VCM)上实现了运动目标检测系统的硬件仿真,论文中给出了一些重要的截图,更加形象的展示了实验过程及结果。
关键词:目标检测;帧间差分法;DM642
I
Moving targets detection based on DSP
Abstract
Automatic detection of moving targets is a moving target detection, extraction, identification and tracking technology
Based on the video sequences of moving target detection,is the focus field of such as machine vision, intelligent control system, video tracking system research, it is also the whole basis of computer vision research..The possibility of detected accurately moving objects from video sequences , it is the key to successful understanding motion estimation, target identification, behavior, etc.
Moving target detection methods commonly used methods of inter-frame difference method, the background difference method and the optical flow , this article will introduce the three methods above, achieved the software simulation of inter-frame difference method by CCS.Then achieved hardware simulation of a moving target detection system on TI TMS320DM642 in the DSP chip for the master Wintech Video Communication Module (VCM) .Paper gives some important shots, displaying the process and the results of the experiment more image more vividly.
Key words: Target Detection; Frame-Difference; DM642
错误!未找到引用源。
目 录
摘 要............................................................................................................................................. I Abstract ........................................................................................................................................... Ⅱ 第一章 绪 论 ................................................................................................................................... 1
1.1 本课题研究的背景及其意义 ............................................................................................ 1 1.2 目前国内外的发展及研究的现状 .................................................................................... 1 1.3本文主要研究工作及结构安排 ......................................................................................... 2 第二章 运动目标检测算法的分析 ............................................................................................... 3
2.1 帧间差分法 ........................................................................................................................ 3 2.2 背景差分法 ........................................................................................................................ 4 2.3 光流法 ................................................................................................................................ 4 2.4 本章小结 ............................................................................................................................ 5 第三章 系统硬件平台的实现 ......................................................................................................... 6
3.1 数字信号处理器特点及其应用 ........................................................................................ 6
3.1.1 DSP芯片主要特点: ............................................................................................. 6 3.1.2 数字信号处理器概述 ............................................................................................. 6 3.1.3 TI公司主流DSP芯片系列介绍 ............................................................................ 6 3.1.4 DSP芯片应用 ......................................................................................................... 6 3.2 运动目标检测的DSP实现系统设计............................................................................... 7
3.2.1 视频通信模块VCM简介 ...................................................................................... 7 3.2.2 数字多媒体/图像处理器DM642介绍 ................................................................. 9 3.2.3 TDS510USB 仿真器............................................................................................... 9 3.3 本章小结 .......................................................................................................................... 10 第四章 运动目标检测的软件系统设计 ....................................................................................... 11
4.1 CCS集成开发环境介绍 .................................................................................................. 11 4.2 CCS软件安装 .................................................................................................................. 13 4.3 Code Composer Studio 2.20.18配置流程 ........................................................................ 13 4.4 CCS开发流程 .................................................................................................................. 15 4.5 DSP/BIOS简介 ................................................................................................................ 16 4.6 运动目标检测的软件系统设计 ...................................................................................... 17
4.6.1 系统驱动程序设计 ............................................................................................... 18 4.6.2 应用程序设计 ....................................................................................................... 20 4.7 DSP/BIOS设定 ................................................................................................................ 21 4.8 运动目标检测系统实际性能测试 .................................................................................. 25 4.9 本章小结 ........................................................................................................................ 27 总 结........................................................................................................................................... 28 参考文献......................................................................................................................................... 29 致 谢 ............................................................................................................................................ 31
第一章 绪 论
1.1 本课题研究的背景及其意义
随着计算机和图像传感技术的发展,以摄像机为核心的视频监控系统在现代社会安全保障方面起着越来越重要的作用,已成为计算机视觉应用的的一个重要研究方向。运动目标检测是智能监控系统的核心内容,在目标识别、跟踪及机器视觉领域有着广泛的应用[1]。 计算机视觉是指计算机控制传感设备对客观景物进行采集,利用计算机对景物的视觉信息进行压缩、处理分析、存储等操作,从而实现人类生物视觉(包括眼睛和大脑)所具备的功能。计算机视觉是一项综合技术,其中包括数字图像处理技术、人工智能、模式识别、控制技术、光学成像技术、传感器技术等。计算机视觉(ComputerVision)在最近三十年内有了突飞猛进的发展,其应用范围遍及工业、农业、军事、国防等多个领域,取得了很大的成绩[2][3]。 运动目标检测技术是图像识别、图像理解的基础,主要功能是从图像序列或是视频流中提取运动目标。由于后续的图像处理、图像理解等工作源于检测的结果,因此检测的效果直接影响后续处理的准确性。运动目标检测技术在许多领域有着广泛的应用,在运输上,用于交通管理与场景监视运输工具或行人的违章行为;在医学上,用于生物组织运动分析等方面;在场景监控等安全防范领域,基于运动目标检测的视频监控系统与原来完全依靠人眼来进行监控的系统相比,大大减轻了监控人员的工作强度,减少了漏报问题。因此,对运动目标检测技术的研究是一项既有理论意义又有实用价值的课题。近年来关于这个课题的研究很多,大体有帧间差分法、背景差分法和光流法等算法,其中帧间差分法是最常用的。
在微电子技术和集成技术高速发展的今天,微处理器的性能日新月异,同时图像处理技术的发展也使得运动检测、目标跟踪、无人导航、自动驾驶及全自动交通系统等技术和设想成为可能。随着DSP芯片的不断发展,以DSP为核心的微处理器对动态视频图像序列进行处理,结合其他硬件构成对侵入的运动目标实现自动检测跟踪系统,不仅具有设备体积小、应用灵活简便的优点,且系统具有良好的兼容性、可靠性和稳定性,受到广泛关注。因此,开发基于DSP的运动目标自动检测系统具有很大的现实意义和应用价值。系统采用的是TMS320DM642芯片,该款芯片是当今世界速度最快的数字信号处理芯片之一,其峰值速度达到4800MPIS,同时也将根据实际情况选用适合该款DSP实现的目标跟踪算法,最终实现一个有实用价值的目标检测系统。
1.2 目前国内外的发展及研究的现状
国外对视频序列中的运动目标检测起步较早,国内起步较晚。目前,一般机器视觉信息处理平台主要有3种[4][5],(1) 基于通用PC微机主要是软件实现图像处理,它数据处理速度快,能够提供中等的图像处理能力,但是要占用CPU过多的资源,并且体积大、重量重、功耗高。(2) 基于可编程FPGA:方法比较复杂,实现难度大。(3) 基于DSP芯片:不但有较好的图像处理能力和较快的处理速度,而且体积小、功耗底,设计简便、灵活,非常适用
1
于实时图像处理系统。自从上世纪70年代第一片数字信号处理(Digital Signal Processor,DSP)芯片问世以来,DSP以数字器件特有的稳定性、可重复性、可大规模集成,特别是可编程性高和易于实现自适应处理等特点,给数字信号处理的发展带来了巨大机遇,并使信号处理手段更灵活,拓展了其应用的领域。随着半导体制造工艺的发展和计算机体系结构等方面的改进,DSP芯片的功能越来越强大,使信号处理系统的研究重点放在了软件算法上。如今,48亿次(4800MIPS)DSP数字信号处理器的出现,使动态图像的处理己经成为可能,绝大部分应用也由最初的非实时应用转向高速实时应用。再加上各种可编程器件特别是现场可编程器件,如FPGA、CPLD技术日益完善,极大改善了硬件电路集成度,从而提高了检测跟踪系统的整体性能。
在算法方面,运动目标检测主要有两种算法:基于图像差分的算法和基于光流场的算法。 基于图像差分的算法[6],它的基本原理是将两帧图像对应象素点的灰度值相减,理想情况下,物体的运动必然造成两帧图像在运动区域上的灰度值不同,相减后便可得到运动目标在图像中的位置,实现运动目标的检测。图像差分算法主要有两种方法,背景差分法和帧间差分法。背景差分法,即用当前图像差分背景图像;帧间差分法,即在序列图像中的两帧图像之间进行差分,常见的是相邻两帧图像之间的差分,也可以是相邻三帧图像或者更多。差分图像算法具有算法简单、计算量小、运算速度快等诸多优点。因此,它被广泛用于实时运动检测系统。
基于光流场的算法[7][8]。通过计算图像的光流场,再结合目标的运动特征进行目标检测。所谓光流是指图像中模式的运动速度,它是一种二维(2D)瞬时速度场。光流法检测运动目标的基本原理是:给图像中的每一个象素点赋予一个速度矢量,这就形成了一个图像运动场,在运动的一个特定时刻,图像上的点与三维物体上的点一一对应,这种对应关系可由投影关系得到,根据各个象素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动目标,则光流矢量在整个图像区域是连续变化的,当物体和图像背景存在相对运动时,运动物体所形成的速度矢量必然和邻域背景速度矢量相同,从而检测出运动物体的位置。这种方法计算量大、易受噪声影响,不利于实时处理。
1.3本文主要研究工作及结构安排
本文以计算机视觉为背景,利用视觉信息在时间和空间上的相关性,对运动目标检测算法进行了研究,并将它在DM642为核心的图像处理系统上予以实现。论文重要内容包括以下几部分:第一章 绪论。介绍了运动目标检测研究意义,以及DSP的发展状况,从而得出本课题研究的必要性。第二章 运动目标检测跟踪算法的理论基础。主要介绍了几种目标检测算法。第三章 系统的硬件平台实现。主要介绍了系统的整个硬件平台的构成,在以TMS320DM642为主控DSP芯片的闻亭视频通信模块(VCM)上实现了运动目标检测系统的硬件仿真。第四章 系统软件设计及全文的总结。利用CCS编写了帧间差分法检测算法的软件程序,实现了整个系统的软件仿真。
2
第二章 运动目标检测算法的分析
由于运动目标检测算法都是面向特定应用环境的,所以不存在一个算法能适用所有场合的情况,也就是说每个算法都有其一定的适用范围。同类环境下工作的各种检测算法都有其特有的优点和缺点。目前还没有一个公认的标准来衡量算法的好坏。在算法方面,运动目标检测主要有三种算法:基于图像差分的算法和基于光流场的算法。
2.1 帧间差分法
帧间差分法是通过判断相邻两帧图像之间像素灰度值之差是否大于某一阈值来识别物体的运动,如果差的绝对值小于某一阈值T,则没有运动,反之,则有运动。 图2一1为帧间差分法检测效果示意图
图2.1 帧间差分效果图
取相邻两帧图像Ik、Ik+1,并假设两帧之间配准得很好。图像上某个象素点 (i,j)在k时刻的灰度值为f(i,j,k),在k+1时刻的灰度值为f(i,j,k+1),B(i,j)为差分图像,则有:
可见差分结果B(i,j)是一个二值图像,值1表示该象素在不同时刻的灰度发生了很大的变化,有运动物体,值0表示该象素的灰度没有发生变化或者变化很小,说明没有运动物体。Tl是阈值,该值的选取非常重要,决定了选取的目标区域的准确度和灵敏度。
基于帧间差法进行视频目标检测的主要特点是算法简单,程序设计复杂度低,容易处理。对背景或者光线的缓慢变换不太敏感,能较快适应,对目标运动的检测灵敏度高。帧间差分法的缺点是检测位置不够精确,特别是当目标的运动速度较快,在相邻帧之间的运动位移较大时,会影响运动目标区域及其特征参数的准确提取。此外,帧间差分法的检测结果也直接受到二值化阈值的影响。如果阈值的选择是预先给定的而不是自适应确定的,则差分图像中运动目标点和噪声点误判的可能性较大。虽然帧间差分法往往不能提取完整的目标图像,但
这种方法简单,计算量小,速度快,也容易实现,适合DSP实现,所以目前为止被广泛运用。
B(i,j3
2.2 背景差分法
背景差分法是利用当前帧图像与背景图像作差分,以提取运动区域的一种运动检测方法。它一般能够提供完整的目标数据。背景差分的基本思想是:首先,用事先存储或者实时获取的背景图像序列为每个像素统计建模,得到背景模型fb(x,y);其次,将当前每一帧图像fk(x,y)和背景模型fb(x,y)相减,得到图像中偏离背景图像较大的像素点[9]。后续处理步骤与帧间差分法相同,直至确定出目标的最小外接矩形。
|fk(x,y)—fb(x,y)|T1,Dk(x,y)
0,其他其中,fk(x,y)为某一帧图像,fb(x,y)为背景图像,Dk(x,y)为帧差图像。式中T为阈值,相减值大于T,则认为像素出现在目标上,Dk(x,y)值为1;反之,Dk(x,y)值为0,认为像素在背景中,从而能够完整地分割出运动目标。
但是当背景图像发生长时间的细微变化时,如果一直使用最初的背景图像,那么随着时间的增长,累积误差就会越来越大,最终造成使用的背景图像与实际背景图像的较大偏差。因此,背景差分方法中的一个重要问题就是背景更新,好的背景图像更新方法将大大提高背景差分法的效率。本文中采用的是基于象素分析的背景图像更新,该方法在更新背景图像时,把背景图像和运动目标区分开,对于出现运动目标的背景图像区域不进行背景图像更新,因此也就不会把运动目标融入到背景图像中。基于象素分析的背景图像更新法的缺点是在光线突变时,它并不会实时更新背景图像。
背景差分法的优点是算法简单,根据实际情况确定阈值处理后,所得结果直接反映了运动目标的位置、大小、形状等信息,能够得到比较精确的运动目标信息,适用于背景己知的情况,其关键是如何获得场景的静态背景图像。它的缺点是容易受到干扰,例如光线发生变化,或是背景中物体的突然移动都会直接影响到最终的检测结果。
2.3 光流法
所谓光流[7]是指图像中的模式的运动速度,它是一种二维(2D)瞬时速度场。光流法检测运动目标的基本原理是:给图像中的每一个象素点赋予一个速度矢量,这就形成了一个图像运动场,在运动的一个特定时刻,图像上的点与三维物体上的点一一对应,这种对应关系可由投影关系得到,根据各个象素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动目标,则光流矢量在整个图像区域是连续变化的,当物体和图像背景存在相对运动时,运动物体所形成的速度矢量必然和邻域背景速度矢量小同,从而检测出运动物体的位置。这种方法计算量大、易受噪声影响,不利于实时处理。
光流法在最近20年得到了较大的发展,主要有4种不同的改进算法,时空梯度法,模
4
块匹配法,基于能量方法和基于相位分析法。其中时空梯度法最为常见。
时空梯度法,是以经典的Horn&Schunck[10]方法为代表,它利用时变图像灰度的时空梯度函数来计算每一图像点的速度矢量。设I(x,y,t)为t时刻图像点(x,y)的灰度;u,v分别为该点光流矢量沿x和y方向的两个分量,且有u=dx/dt,v=dy/dt。根据计算光流的假设:dI(x,y,t)/dt=0,导出光流矢量的梯度约束方程为[11]:
IXu+Iyv+It=0
改写为矢量形式为:
I/v+It=0
其中Ix,Iy,It、分别为参考像素点的灰度值沿x,y,t三个方向的偏导数,I=(Ix,Iy)T
为图像灰度的空间梯度,v=(u,v)T即为光流矢量。
梯度约束方程限定了Ix,Iy,It与光流矢量的关系,但是此方程两个分量u和v的解非唯一。因而,为求解这两个分量必须附加另外的约束条件。常用的约束光流方法是假设光流在整个图像上的变化平滑,则平滑约束条件为:
(u/x)2(u/y)2和(v/x)2(v/y)2取最小值
通过一系列的数学运算,可取得(u,v)的递归解。
光流法虽然能够检测独立的运动目标,不需要预先知道场景的任何消息,但大多数情况下这种方法的计算很复杂,光流场容易受光线影响,导致这种算法的实时性和实用性都比较差,一般很少用到。
2.4 本章小结
本章介绍了运动目标检测的三种传统算法,即帧间差分法,背景差分法,光流法。前两种是基于摄像头静止状态而言,后一种是摄像头在运动状态下的检测方法。它们有各自的优缺点。其中帧间差分法能够准确的提取目标的轮廓但是往往只能得到部分目标信息;背景差分法能得到比较完整的目标图像,但是建立合适的背景更新模型是关键,背景的实时准确提取是影响目标提取的重要因素,并且当目标部分区域颜色或灰度与背景相近时,使用背景差分法相应部分会被漏检,同时背景差分法更适用于背景不动的场合,不适合应用于摄像头运动的场合;光流法的优点是能够检测独立运动的对象,但大多数光流计算方法相当复杂,现实生活中不常用。
5
第三章 系统硬件平台的实现
3.1 数字信号处理器特点及其应用 3.1.1 DSP芯片主要特点:
哈佛结构:主要特点是程序存储器和数据存储器各自独立,每个存储器独立编制,独立
访问,分离的程序总线和数据总线允许同时取指令和操作数,数据处理效率翻倍。 多总线结构:保证一个机器周期内可以多次访问程序存储器和数据存储器,大大提高
DSP的运行速度。
流水线式指令系统:减少了指令执行时间,提高了处理器处理效率。
硬件乘法器:DSP芯片配备专用的硬件乘法器,与通用微处理器相比可以在单个周期
内完成乘法累加运算。
特殊的DSP指令:满足了数字信号处理应用面广,层次高低不一的需求。 快速的指令周期:采用亚微米工艺,使得指令周期越来越短,处理速度加快。 硬件配置强:接口功能丰富,拥有串行口、HPI、DMA控制器、PPL时钟产生器、RJ45
网络接口以及标准测试口,更易于完成系统设计。
3.1.2 数字信号处理器概述
DSP芯片分类:
按基础特性分:静态DSP芯片/一致性DSP芯片。 按数据格式分:定点式DSP芯片/浮点式DSP芯片。 按用途分:通用性DSP芯片/专用性DSP芯片。
3.1.3 TI公司主流DSP芯片系列介绍
自1982年起,TI公司所推出的TMS320系列DSP芯片已经经历了若干代,现在应用领域较多使用的主要有三个系列:
主要用于数字智能控制系统的C2000系列,代表产品有TMS320F2812等。
主要用于低功耗、便携式无线通信终端的C5000系列,代表产品有C54x、C55x等。 主要用于高性能复杂通信系统和数字多媒体技术的C6000系列,代表产品有
TMS320DM642GDK、C6711等。
3.1.4 DSP芯片应用
随着集成电路技术的发展,并在市场需求量迅速增大的形势下,DSP芯片在社会生活方方面面得到了广泛应用,其主要用途有:信号处理与分析,通信实现与仿真,语音编码与
6
合成,图像处理,军事领域,仪器仪表,自动控制,医疗辅助系统以及家用电器等。
3.2 运动目标检测的DSP实现系统设计
基于DSP的运动目标检测系统的总体设计采用德州仪器(TI)图像处理领域最主流的数字多媒体/图像处理器DM642GDK作为核心处理芯片,应用DSP解决方案提供商闻亭数字系统有限公司的视频通信模块(VCM)作为评估板,通过TDS510USB仿真器的14针JTAG接口与主机相连,实现与VCM模块通信。通过连接到VCM视频接口上的摄像头实现视频信号的采集,采集到得视频信号再经过视频解码芯片解码后送到DM642并从程序存储器启动目标检测程序进行信号处理,处理完成的视频信号再经过视频编码芯片编码后经VCM视频接口输出到显示器上输出检测结果,过程如图3.1。
图3.1
3.2.1 视频通信模块VCM简介 图3.2所示是VCM的实物图
图3.2 VCM实物图
VCM主要特点:
7
视频通讯模块(VCM)如图3.2集成了全双工通讯的音频视频功能,而且还提供了多个功能接口。VCM模块仅有54mm×90mm大小,如同一个信用卡大小,很容易地就可以将它作为一个标准的独立的视频和音频处理单元嵌入到复杂系统中。VCM模块可以通过UART、以太网口或者HPI接口与其他器件通讯。同样,VCM也可以作为一个TMS320DM64X DSP的评估板。图3.3是VCM系统方框图。
图3.3
特点如下:
一个TI公司的TMS320DM643 DSP 工作频率为600 MHz 32 M字节的SDRAM 4 M字节非挥发性FLASH内存 AIC23 立体声编解码器 2路视频解码器 1路视频编码器 以太网接口 双路+3.3VUART Boot配置选择 3个用户发光管
电源供给:12V直流电源 Imax=500mA VCM功能描述:
VCM板上的DSP通过64-bit的EMIF以及三路8/16bit的视频口(VP)与板上的外围器件通讯,SDRAM、Flash、UART以及视频的编解码器都通过以上的接口与DSP连接。
板上的视频编解码器通过视频口(VP),标准的VCM包含两路解码器和一路编码器。 DSP可以通过板上的AIC23编解码器来收发模拟音频信号,I²总线作为编解码器的控制接口,MCASP作为数据接口。模拟接口部分包含有MIC-IN、LINE-IN、LINE-OUT。AIC23编
8
解码器可以选择MIC-IN或者LINE-IN作为输入,模拟输出到LINE-OUT接插件上。CCS可以通过14针JTAG接口的仿真器与VCM通讯[12]。
3.2.2 数字多媒体/图像处理器DM642介绍
TMS320DM642(DM642)是TI 开发的第二代高性能、先进VelociTI技术的VLIW 结构处理器,其出色的图像处理能力使得它成为数字多媒体技术的极好选择。DM642 在主频720MHz 下处理速度达到5760MIPS,并且给高性能DSP 规划提供了廉价的解决方案。DM642 是用数字表达容量的高速阵列处理器。C64x DSP核具有64个32 位字长的通用寄存器和8 个独立的功能单元——两个结果为32 位的乘法器和6个ALUs——是VelociTI1.2 的升级版。VelociTI1.2升级版在8个功能单元里包括新的指令,可以在视频和图像应用方面提高性能,并能对VelociTI 结构进行扩充。
鉴于运动目标检测应用主要通过视频口采集和输出结果,此处仅对其视频端口作详细介绍。DM642 具有3 个可配置视频端口(VP0,VP1,VP2),这些视频端口给公共视频编解码设备提供了直接接口,并且这三个视频端口是可配置的,且可作为视频采集端口,视频显示端口,或作为传输流接口采集端口(TSI)。
此端口由A和B两个通道组成。在两个通道之间存在一个可分开的5120字节的采集/显示缓冲区。整个端口(全部通道)经常被配置成仅仅进行视频采集或者视频显示。独立的数据流水线控制着对BT.656,Y/C ,原始视频,和TSI模型中每个视频采集或显示数据的解析和格式化。
在视频采集操作中,视频端口可以作为BT.656或者原始视频采集的两个8/10位通道来操作;或者作为8/10位BT.656,8/10位原始视频,16/20位Y/C视频,16/20位原始视频,或8位TSI的一个单通道。在视频显示操作中,视频端口可以作为8/10位BT.656的一个单通道来操作;或者作为8/10位BT.656,8/10位原始视频,16/20位Y/C视频,16/20位原始视频I的一个单通道。它也可以在两个通道的8/10位原始模型中操作,在这个模型中这两个通道被锁定到相同的时间。在单通道操作过程中B通道没有被使用[13]。
3.2.3 TDS510USB 仿真器
TDS510USB 仿真器适用于工作电压在1.0到5.0伏之间的TMS320系列数字信号处理器。 产品特点:
支持TI的C2000、VC33、C5000、C6000 系列芯片。 支持1.0~5.0伏目标DSP 电压。
采用USB2.0接口,传输速度可达到480Mb/s,完全即插即用,无跳线。
兼容USB1.1接口,可直接插在USB1.1接口上使用,在USB1.1接口上传输速度为12Mb/s。 支持热插拔,TDS510USB仿真器可以在不关闭主机的情况下插拔而不会损坏。
9
通过 USB 接口供电,无需外接电源。
支持 Texas Instrument 的Code Composer Studio(CCS)[14]。
3.3 本章小结
本章主要介绍DSP的特点及其应用,视频通信模块VCM的特点及其功能, TDS510USB 仿真器,重点介绍了数字多媒体图像处理器DM642的功能特点,简述了运动目标检测的DSP系统的硬件平台。
10
第四章 运动目标检测的软件系统设计
本章主要介绍利用CCS集成开发环境,完成以帧间差分法为算法的运动目标检测功能实现。
4.1 CCS集成开发环境介绍
1982年起,TI公司共推出了三大系列DSP芯片,即主要用于数字控制系统的C2000系列,主要用于低功耗、便携式无线终端的C5000系列以及主要用于高性能复杂通信系统的C6000系列。针对每个系列的DSP处理器,TI为其软件开发推出了不同的CCS集成开发环境,虽然各系列CCS在初始设置上有所不同,但是其操作性基本类同。
CCS是一个高度集成的DSP软件开发和调试环境,它主要又以下四部分组件组成: CCS代码产生工具,包括汇编器、汇编优化器、连接器和C编译器等。 软件模拟器,包括编辑器、工程管理工具、调试工具等。 实时基础软件DSP/BIOS插件及应用程序接口API。 RTDX实时数据交换插件、主机接口及相应的API。
由于本系统应用的是TI DM642平台,所以集成开发环境使用的是C6000,C6000相对之前的CCS相比功能更加强大,具体功能如下:
集成可视化开发界面,可直接编写C、汇编、.h文件、cmd文件等。 集成代码产生工具,包括汇编器、优化C编译器、连接器等。
集成调试工具,如装入执行文件,查看寄存器、存储器、反汇编、变量窗口等。 断点,有硬件断点、数据空间读写断点、条件断点等。 探针,可用于算法仿真、数据监视等。 分析工具,用于评估代码执行的时钟数。 图形显示工具,支持多种方式,可自动刷新。
GEL工具,用户可以编写自己的控制面板和菜单,直接修改参量,配置参数。 DSP/BIOS工具,增强对代码的实时分析能力、调度程序执行的优先级、方便管理系统
资源,减轻了开发人员对技术的依赖。
CCS使用工程来管理应用程序设计文档,工程中可包含C源代码.c、汇编源代码.Asm、 目标文件.obj(生成文件)、库文件.lib、链接命令文件.cmd和头文件.h。如图4.1。
11
图4.1 CCS工程建立
在编写程序代码时,CCS提供了更加强大完整的软件开发环境,开发者不但可以使用汇编语言编写代码,而且可以使用VC环境下编写的C源代码,只需将其移植到CCS中便可以进行编译运行。具体操作如下:
(1)启动CCS,在Project菜单中选择New项,将弹出Project Creation对话框,在Project中输入工程名,建立一个Video.pjt工程;
(2)在Project菜单中选择Add Files to Project命令,将编写好的C源文件添加到工程中去;
(3)用同样的方法将库文件(DM642平台使用路径为C:\i\\c6000\\cgtools\\lib中的rts6400.lib)添加到工程中;
(4)将头文件添加到工程中,具体方法是将路径为C:\i\\boards\\VCM\\include中的所有.h文件拷贝到路径C:\i\\c6000\\bios\\include中即可;
(5)编写链接命令文件(.cmd文件),定位程序存储空间,并将其添加进工程中; (6)在Project菜单中选择Rebuild All建立完整工程,编译成功,完成C程序在CCS集成开发环境中的实现,下图4.2为编译成功后的CCS界面。
图4.2 CCS使用界面
12
4.2 CCS软件安装
CCS使用方便,可以大大降低了DSP系统开发的难度,但其安装过程比较繁琐,有几个需要注意的地方。具体安装过程如下:
(1)安装CCS c6000V2.2安装包,具体安装路径默认为C:\i即可;
(2)将CCS c6000V2.2升级到CCS2.20.18 ,CCS2.20.18 的升级包在VCM安装盘的AddOns\\ CCS2.20.18目录下,注意安装路径与(1)中一致; (3)安装VCM用户光盘,路径与(1)中一致;
(4)安装Code Composer 的补丁程序,如设备驱动开发套件DDK、Flash烧写插件FlashBurn、TCP/IP 网络开发套件NDK、软件参考框架结构Reference Framwork等,注意安装路径均为C:\i;
(5)安装TDS510 USB 设备驱动光盘。
(6)安装 WintechDigital TDS510 USB2.0 JTAG Emulator 支持软件。
4.3 Code Composer Studio 2.20.18配置流程
JTAG仿真器一端连接主机,另一端连接目标板,打开目标板电源,运行 Code Composer Studio Setup,进行CCS初始化设置。
(1)在弹出窗口中选择仿真器类型为C64xx Rev 1.1 TDS510USB Emulator,如图4.3.1。
图 4.3.1
(2)点击Import将弹出Board Properties窗口,选择配置文件为根目录C:\i\\cc\\bin下Wtusb5102.cfg,驱动位置为C:\i\\drivers\ixds6400_11.dvr,如下图4.3.2。
13
图4.3.2 (3)点击Next进入I\\O端口号配置,选择I\\O端口号为0x240,如下图4.3.3。 图 4.3.3 (4)点击Next进入处理器配置窗口,由于目标板只有一块DM642芯片,于是选择Add Single,只配置一块CPU。 (5)点击Next,出现选择gel 文件窗口。此处注意,由于CCS 2.2安装包中并没有包含闻亭VCM开发板可用的gel文件,所以需要从已安装到C盘TI目录下的VCM文件夹中将VCMDM642.gel文件拷贝到cc下gel文件夹中才能添加,具体拷贝路径为C:\i\\boards\\VCM\\VCMDM642.gel→C:\i\\cc\\gel\\ ,然后在Startup GEL中添加,如下图4.3.4。 14
图 4.3.4
到此处CCS配置完成,点击Finish结束。
4.4 CCS开发流程
基于CCS的软件开发流程图如图4.4。下面介绍开发中使用的几种工具[15]。编译器(Compiler):编译器包括分析器、优化器和代码产生器,它接收C/C++源代码并产生TMS320DM642汇编语言源代码。分析器检查输入的C语言源程序有无语义、语法错误,产生程序的内部表示(即中间文件*.if)。优化器是分析器和代码产生器之间的一个选择途径,其输入是分析器产生的中间文件(*.if),对其优化后,产生一个高效版本的文件(*.opt),其优化的级别作为选项由用户选择。代码产生器以分析器产生文件和优化器产生文件作为输入,产生TMS320DM642汇编语言文件。
汇编器(Assembler):汇编器的作用就是将汇编语言源程序转换成机器语言目标文件,这些目标文件都是公共目标文件格式(COFF)。汇编器功能如下: 将汇编语言源程序汇编成一个可以重新定位的目标文件(.obj文件); 如果需要,可以生成一个列表文件(.lst文件);
将程序代码分成若干个段,每个段的目标代码都由一个SPC(段程序计数器)管理; 定义和引用全局符号,需要的话还可以在列表文件后面附加一张交叉引用表; 对条件程序块进行汇编; 支持宏功能,允许定义宏命令。
链接器包括以下3个作用:
根据链接命令文件(.cmd文件)将一个或多个COFF目标文件链接起来,生成存储器
映像文件(.map)和可执行的输出文件(.out文件)。 将段定位于实际系统的存储器中,给段、符号指定实际地址。 解决输入文件之间未定义的外部符号引用。
15
图 4.4 CCS开发流程图
4.5 DSP/BIOS简介
DSP/BIOS开发环境为用户提供了一个图形化的用户界面,通过这个图形化得用户接口界面用户可以直接地访问DSP片上的各种资源,并可以对这些资源进行配置和初始化。此外,DSP/BIOS还提供了代码生成器,用户在保存配置文件时,DSP/BIOS为用户生成了所有需要的库函数文件。访问片上资源时主要通过调用API函数来完成的。通过调用这些函数,用户可以方便的访问各种片上资源和外设。在调试方面,DSP/BIOS支持多线程技术,使得在线调试分析成为可能。在功能上,DSP/BIOS是TI公司推出的完全免费的插件,具有多达约200个API函数可供调用,几乎涵盖了DSP上一切片内资源的访问方法[16]。
设计人员在使用DSP/BIOS进行DSP软件开发时,由于DSP/BIOS所提供的芯片支持库函数包括了所有与硬件有关的操作,开发人员只需通过CCS提供的图形化工具在DSP/BIOS的配置文件中完成这些设置即可,无需对硬件资源直接控制,对技术依赖度较低。DSP/BIOS由3个部分组成:
(1)DSP/BIOS多线程实时内核与API。提供程序跟踪、性能监控、文件流等实时分析
16
特性。
(2)DSP/BIOS分析工具。辅助CCS实现程序的实时、可视化调试。
(3)DSP/BIOS配置工具。可视化设置DSP/BIOS模块参数,建立DSP/BIOS对象。 DSP/BIOS开发环境组件管理器配置界面如图4.5所示。
图4.5 DSP/BIOS组件管理器
配置界面中包括:
◇系统部分(system):包括内存分配,DSP时钟,芯片支持库,DSP端模式(小端模式或大端模式)等设置。
◇实时分析部分(Instrumentation):可以在目标应用程序正在运行时,利用其提供的实时交互和诊断功能,对程序线程的运行状态进行实时监控和数据分析。
◇调度部分(Seheduling):包括时钟管理模块,周期函数管理模块以及四种线程模块,线程可以在这些模块里静态创建,也可以通过调用API函数动态创建。
◇同步部分(Synchronization):该部分提供对信号灯,邮箱,队列等管理模块。 ◇输入输出部分(Input/Output):负责数据的传输设置。
◇芯片支持库部分(CSL):提供了配置和控制片上外围设备的C语言接口。该配置工具用于对片上外围设备进行配置,如EDMA、多通道缓冲串行口(McBSP)、时钟以及其他一些外围设备。
4.6 运动目标检测的软件系统设计
一个DSP软件系统包括它的集成开发环境、系统驱动程序以及实现系统功能的程序设计,如图4.6.1所示。集成开发环境CCS已经在前面介绍过了,下面是驱动程序的设计。
17
图4.6.1 软件系统设计框图
4.6.1 系统驱动程序设计
随着DSP支持不同类型的外部设备越来越多,为一个给定的外部设备编写驱动程序有时候会很困难。针对设备驱动程序开发者遇到的这种难题,TI公司为C64x系列DSP提供了一种类/微型驱动模型(Class/Mini-Driver model)。该模型在功能上将设备驱动程序分为依赖硬件层和不依赖硬件层两层,两层之间又使用通用接口,采用这种设计后,应用软件可以复用绝大部分相似设备的驱动程序,因而大大地提高了驱动程序的开发效率。
类/微型驱动模型简介[17][18]
为了方便的复用大部分类似的设备驱动程序,TI把设备驱动分成了两部分:类驱动(Class Driver)和微型驱动(Mini Driver),并称为类/微型驱动模型,类驱动和微型驱动的功能分别如下:类驱动主要是通过每个外部设备独有的微型驱动对设备进行操作,通常用于完成多线程I/O请求的序列化功能和同步功能,同时对设备实例进行管理。微型驱动通过控制外设的寄存器、内存和中断资源对外部设备实现控制,微型驱动程序必须将特定的外部设备有效地表示给类驱动。如:视频显示设备存在一些不同的帧存储器,应用软件会根据不同的I/O操作进行帧存储器的分配,此时微型驱动必须映射视频显示存储器,使得类驱动可以对不连续的内存(分别存放YUV或RGB分量)设计特定的I/O请求。
图4.6.2 DSP/BIOS IOM设备驱动模型
18
类/微型驱动模型结构如图4.6.2所示。应用程序不直接控制微型驱动,而是使用一个或多个类驱动对其进行控制,每一个类驱动可在应用程序中表现为一个API函数并且通过微型驱动的接口IOM与微型驱动进行通信,类驱动使用DSP/BIOS中的API函数实现诸如同步等的系统服务。每一个微型驱动都为DSP/BIOS设备驱动管理和类驱动提供了标准的接口。微型驱动则采用芯片支持库(CSL)管理外围设备的寄存器、内存和中断等资源。
视频驱动设计:
本视频目标检测系统驱动设计采用上面介绍的类/微驱动模型。每一个类驱动在应用程序代码中表现为一个API函数,并通过标准微驱动的接口IOM与微驱动进行通信。DSP/BIOS定义了如下类驱动模块:
图4.6.3 DSP/BIOS中类/微驱动模型
如图4.6.3所示,DSP/BIOS中包括了管道管理模块(PIP)、流输入输出管理模块(SIO)和通用输入输出模块(GIO)等类驱动模型,并在DSP/BIOS中注册了微型驱动VP0CAPTURE。
本系统采用DM642开发板,其具体开发时采用FVID类驱动包,在FVID函数中fvid.h中有#include #define FVID_create(name, mode, status, optArgs, attrs) \\ GIO_create(name, mode, status, optArgs, attrs) 说明FVID函数用于创建GIO通道; #define FVID_alloc(gioChan, bufp) \\ GIO_submit(gioChan, FVID_ALLOC, bufp, NULL, NULL) 说明FVID函数为GIO通道分配缓存; #define FVID_control(gioChan, cmd, args) \\ GIO_control(gioChan, cmd, args) 说明FVID函数控制设备操作; #define FVID_exchange(gioChan, bufp) \\ GIO_submit(gioChan, FVID_EXCHANGE, bufp, NULL, NULL) 19 说明FVID函数向微驱动发送数据包。 4.6.2 应用程序设计 运动检测算法:运动检测算法有帧间差分法、背景差分法和光流法,已经在第二章中具体介绍过了,由于本人知识水平有限而且实验条件较为简陋不宜于采用较为复杂和精确的检测方法,所以本设计采用算法较为简单的帧间差分法,利用视频序列中连续的两帧或几帧图像的差异来进行目标检测和提取。由于此算法对动态环境具有较强的自适应性,所以检测效果还是可以接受的,不足的地方在于当检测目标的运动速度较快时不能精确的定位目标。图4.6.4为此算法流程图。 图 4.6.4 算法流程图 在所建立工程添加的源文件中,colorbar.c、dm643_vcapparams.c、dm643_vdisparams.c三个源程序均调用自闻亭视频通讯模块(VCM)的图像处理库函数,实际运动目标检测程序video_ntsc_pal.c是本系统实现的关键,是根据帧间差分法编写的主程序。 运动检测程序video_ntsc_pal.c:的设计包括初始化系统程序main()函数和三个子程序,共同工作实现运动目标检测。 初始化程序: main() { CSL_init(); CACHE_clean(CACHE_L2ALL, 0, 0); CACHE_setL2Mode(CACHE_256KCACHE); CACHE_enableCaching(CACHE_EMIFA_CE00); CACHE_enableCaching(CACHE_EMIFA_CE01); DAT_open(DAT_CHAANY, DAT_PRI_LOW, DAT_OPEN_2D); }将实现系统、处理器以及RF-5模块的初始化,并使系统进入DSP/BIOS调度管理程序。 20 系统进入DSP/BIOS调度管理程序后开始调度并循环执行以下三个任务程序。 ◇void tskVideoInput()函数,即视频任务采集程序 capChan = FVID_create(\"/VP2CAPTURE/A/0\ IOM_INPUT, &status, (Ptr)&DM643_vCapParamsChan, NULL); 将视频口2设置为A通道和视频捕获通道0 使用FVID_exchange(capChan, &capFrameBuf);语句从图像采集设备捕获新一帧图像(capChan),并发送消息sem0(含捕获图像数据指针&sem0)到任务处理进程tskProcess,等待输出任务tskVideoOutput发送来的消息sem2以继续执行。 ◇void tskProcess()函数,即视频任务处理程序 处理任务进程等待图像采集任务程序发送过来的输入图像消息sem0后开始对此图像数据进行运动目标检测处理:YArray3[i] = abs(YArray2[i] - YArray[i]); 此核心语句意义是当后一帧的亮度值Y减前一帧的亮度值Y的绝对值不为零时,即检测到运动目标,附加条件判断语句予以实现。处理完成后,将包含图像数据指针(&sem1)的消息sem1发送给输出任务进程。 ◇void tskVideoOutput()函数,即视频任务显示程序 disChan = FVID_create(\"/VP1DISPLAY\ &status, (Ptr)&DM643_vDisParamsChan, NULL); 将视频口1设置为视频输出通道 使用 FVID_exchange(disChan, &disFrameBuf);语句从图像显示设备输出新一帧图像(disChan),并发送消息sem2(含输出图像数据指针&sem2)到任务输入进程tskVideoInput,然后等待处理任务tskProcess发送来的消息sem1以继续执行。 程序运行时,main函数执行系统初始化,完成后再通过DSP/BIOS调度任务程序,按 顺序执行上述三个子程序,完成视频任务的采集、处理和显示。图4.6.5为DSP/BIOS调度图。 图4.6.5 DSP/BIOS调度图 4.7 DSP/BIOS设定 本设计实现运动目标检测的DSP/BIOS设定如下: 21 (1)全局设定(GlobalSetting) 图4.7.1 全局设定 如图所示,目标板选为c64xx,时钟频率设为600MHz,片级支持库选择DM642。 (2)存储器设定 (a)内部存储器ISRAM设定 (b)外部存储器SDRAM设定 图4.7.2(a)(b)存储器设定示意图 (3)视频端口设定 22 (a)采集端口设定 (b)显示端口设定 图4.7.3(a)(b)视频口设定 (4)实时数据交换模块(RTDX)设定 如图所示,RTDX Mode必须选择JTAG或EMULATOR(视情况而定),RTDX 缓存大小填1032, 图4.7.4 RTDX设定 (5)任务的配置 新建DSP/BIOS配制文件,在任务调度子目录下(TSK—Task Manager)新插入三个任务,分别重命名为input、output、process,分别在他们属性里的Task funtion栏里写入相对应的函数_tskVideoInput、_tskVideoOutput、_tskProcess。如图4.7.5(a)(b)(c)所示。 23 (a) (b) 24 (c) 图4.7.5 任务配置 (6)线程同步配制 在配制文件里的线程同步类目录synchronization下,选中SEM模块,插入三个SEM,分别重命名为sem0、sem1、sem2。如图4.7.6。 图4.7.6 线程同步配置 4.8 运动目标检测系统实际性能测试 运行配置好的CCS集成开发环境,打开之前建立的工程,点击Rebuild All进行重新链接,如图4.8.1。完成后点击file-load program载入程序,运行即可看到效果,如图4.8.2(a)(b)。 25 图4.8.1 图4.8.2(a)为目标检测场景;当没有物体经过摄像头运动时,屏幕如图4.8.2 (b)是黑屏;当有物体在检测场景中运动时,屏幕上会出现运动物体轮廓,如图4.8.2 (c) 图4.8.2 (a)检测场景 26 图4.8.2 (b)无物体运动时检测的图像 图4.8.2 (c)有物体运动时检测的图像 4.9 本章小结 本章首先对开发软件所用到的开发环境CCS及其内部所集成的开发工具作了详细的介绍,了解了编写DSP应用程序软件的一般流程,对帧间差分法进行了软件仿真,给出了程序运行过程中的一些重要截图,以及功能仿真的结果。 27 总 结 本课题研究的是基于DSP的运动目标检测,包括具体算法的分析以及软硬件的实现。具体完成的工作如下: (1)介绍了运动目标检测这个课题研究的意义以及国内外的发展现状。 (2)详细介绍了检测的三种传统算法,即帧间差分法、背景差分法和光流法,并用CCS平台实现了帧间差分法的仿真。 (3)对实验所需的DM642硬件平台做了详细介绍,接着亲手完成了帧间差分法检测运动目标的硬件系统设计,即借助DM642硬件平台实现了运动目标检测。论文中给出了一些重要的截图,更加形象的展示了实验过程及结果。 28 参考文献 [1] 欧杨. 一种基于边缘检测的运动目标检测新方法[J]. 苏州科技学院学报, 2004, 17(3). [2] 李玉山. 计算机视觉技术[M]. 西安: 西安电子科技大学出版社, 1998, 15~20. [3] 李玉山. 数字视觉视频技术[M]. 西安:西安电子科技大学出版社, 2005, 21~24. [4] 刘党辉, 沈兰荪. DSP芯片及其在图像技术中的应用[J]. 测控技术, 2001, 20(5): 16~20. [5] 刘媛. DM642在机器视觉中的应用研究[J]. 微计算机信息, 2007, 23(3): 180~182. [6] 张磊. 运动目标检测的差分图像法分析研究[J]. 工业仪表与自动化装置, 2007,3: 7~10. [7] Y Mas, S.Yamamoto, Y Shirai, et al. Optieal Flow Based Objeet Tracking by Active Camera [C]. Proc of the 2nd Japan - France Congress on Meehatronies, Kagawa, Japan,1994,11: 565~571. [8] Yasushi Mae,Yoshiaki Shirai,Jun Miura,et al.Object tracking in cluttered background based On optical flow and edges[J]. ConeePtion Pattern Reeognition, 1996l:196~200. [9] 祁同林, 左旭东, 基于背景重构的运动目标检测算法研究与应用. 计算机工程与应用, 2007, 43(16): 199~201. [10] Horn BKP, Schunck BG.. Determining optical fiow. Artificial Intelligence, 1981, 17:185~ 204. [11] 丁德锋. 动目标的检测、识别与跟踪技术研究[D]. 西安: 西北工业大学, 2007. [12] 闻亭数字系统(北京)有限公司[P].视频通讯模块(VCM)开发平台用户手册, 2006. [13] DSP交流网. www.hellodsp.com. TMS320DM642 中文手册[P].2008. [14] 闻亭数字系统(北京)有限公司[P]. TDS510USB JTAG Emulator User Guide, 2006. [15] 李利. DSP原理及应用[M]. 北京: 中国水利水电出版社, 2004, 94~100. [16] 张勇, 陈天麒. C/C++语言硬件程序设计——基于TMS320C5000系列DSP. 西安: 西安 电子科技大学出版社, 2003, 149. [17] Texas Instruments[P]. DSP/BIOS Driver, 2001 [18] Texas Instruments[P]. The TMS320DM642 Video Port Mini-Driver, 2003 29 30 致 谢 本论文是在导师王平副教授的悉心指导与关怀下完成的。她以渊博的知识,严谨的治学态度和一丝不苟的工作精神而受到广大学业同仁的敬重。在攻读学士学位期间,导师们的谆谆教诲与无微不至的关怀使作者受益终生,不仅为今后从事工作培养了严谨、扎实、认真的工作态度,而且还培养了乐观上进、积极进取、团结协作和顽强拚搏的工作精神,在此要向导师表示最衷心的感谢和敬意。在课题的研究与论文的写作过程中,得到了老师和同学的大力帮助,在此要向他们表示诚挚的谢意。 作者:董方圆 2009年5月 31 因篇幅问题不能全部显示,请点此查看更多更全内容