基于DM6467视频系统的软件设计.docx

上传人:b****6 文档编号:13572083 上传时间:2023-06-15 格式:DOCX 页数:16 大小:134.39KB
下载 相关 举报
基于DM6467视频系统的软件设计.docx_第1页
第1页 / 共16页
基于DM6467视频系统的软件设计.docx_第2页
第2页 / 共16页
基于DM6467视频系统的软件设计.docx_第3页
第3页 / 共16页
基于DM6467视频系统的软件设计.docx_第4页
第4页 / 共16页
基于DM6467视频系统的软件设计.docx_第5页
第5页 / 共16页
基于DM6467视频系统的软件设计.docx_第6页
第6页 / 共16页
基于DM6467视频系统的软件设计.docx_第7页
第7页 / 共16页
基于DM6467视频系统的软件设计.docx_第8页
第8页 / 共16页
基于DM6467视频系统的软件设计.docx_第9页
第9页 / 共16页
基于DM6467视频系统的软件设计.docx_第10页
第10页 / 共16页
基于DM6467视频系统的软件设计.docx_第11页
第11页 / 共16页
基于DM6467视频系统的软件设计.docx_第12页
第12页 / 共16页
基于DM6467视频系统的软件设计.docx_第13页
第13页 / 共16页
基于DM6467视频系统的软件设计.docx_第14页
第14页 / 共16页
基于DM6467视频系统的软件设计.docx_第15页
第15页 / 共16页
基于DM6467视频系统的软件设计.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于DM6467视频系统的软件设计.docx

《基于DM6467视频系统的软件设计.docx》由会员分享,可在线阅读,更多相关《基于DM6467视频系统的软件设计.docx(16页珍藏版)》请在冰点文库上搜索。

基于DM6467视频系统的软件设计.docx

基于DM6467视频系统的软件设计

混合高斯模型

混合高斯模型为增加对环境变化的鲁棒性,对每个像素点建立多个高斯模型,为像素特征值服从

个高斯分布的叠加,其概率密度表达式为:

(式4-19)

其中,

为高斯模型的个数,一般取3到5个,

为第

个高斯模型的权值,该参数体现了模型为背景的概率,

为第

个模型在t时刻的均值,

为第

个模型在t时刻的协方差,

第i个高斯模型的概率密度函数:

(式4-20)

混合高斯模型采用像素点的多个特征值作为检测变量,一般使用像素RGB三个通道的特征值进行检测,即

假设各个通道的颜色特征值相互独立,则有:

(式4-21)

在混合高斯模型中,对各个模型的匹配与单高斯模型相同,采用极限误差判决,对于满足条件

的,认为与模型匹配,否则将其特征值作为均值,并为其分配一个较大的值作为方差,产生一个新的模型。

高斯模型中并不是所有模型都是对背景的描述,区分哪些模型代表图像背景和哪些模型代表运动前景,是混合高斯模型进行运动目标检测的又一核心问题。

在混合高斯模型的参数更新过程中,权值参数

越大代表该模型出现频率越高,越有可能描述的是图像背景,反之,

越小则越有可能描述的是运动前景。

此外,方差描述了随机分布的波动幅度,对于越有可能是背景图像描述的模型,其方差

越小,而有可能是对运动前景描述的模型,其方差

越大。

因此,在每次匹配完成之后,将权值参数重新归一化,并按

从大到小对K个混合高斯模型进行排序,

越大代表模型越可能是背景分布,对满足公式(4-20)的M个模型判决为背景模型,而剩下的判决为前景模型,即运动目标。

(式4-22)

为阈值,表示背景在模型中占得比例,

的选取对算法的检测性能有重要的影响,

取值太小,使得只有一个高斯模型对背景描述,混合高斯模型成为单高斯模型,而阈值

太大,易使运动像素点与权值较小的模型匹配而被误检为背景点,因此只有合适的阈值选择才能体现混合高斯模型的双模或多模特性。

在实际的反复测试中,一般取

=0.85比较合适。

4.2.2混合高斯模型背景更新

混合高斯模型之所以能够适应背景变化,就是因为模型参数可以随着背景的变化进行更新。

个高斯模型的权值参数更新策略为:

(式4-23)

其中:

称为学习因子,它体现了背景像素点融入模型的快慢程度。

混合高斯模型对于没有匹配上的模型,其均值和方差两个参数保持不变,而对于匹配上的模型,采用如下的更新方式:

(式4-24)

其中:

混合高斯模型的权值参数更新机制主要优点之一:

允许运动前景成长为背景,但不破坏已经存在的背景结构,即能为发生特征值变化的像素点建立新的模型,如果该变化是背景变化,则随着匹配次数的增加,该模型的权值参数得到增加,直到成长为背景,如果该变化是运动目标引起的,则随着匹配次数的减少,该模型的权值也在不断的减少,最后从背景模型中删除,被新的模型替代。

均值和方差更新机制的主要优点是:

对于判决为背景但特征值已发生变化的像素点,模型能够将其特征值变化部分不断的融入到背景中去,从而使混合高斯模型对变化的背景拥有更好的适应性。

4.3改进的混合高斯模型算法实现

混合高斯模型算法在计算上具有一定的复杂度,尤其在嵌入式系统设备中实现,为保证算法的实时性,需要根据处理器的特性进行相应的算法处理优化。

TMS32ODM6467的C64x+内核是定点处理器,因此它在模拟浮点运算时,速度非常慢,如何在不影响计算精度的前提下,将混合高斯模型中的浮点计算转化为定点计算,需要在程序的编写中进行一些相应的处理。

并且混合高斯模型对每个像素点进行建模,当采集到的图像分辨率较大时,需要建立大量的模型,模型在内存中的存储结构,会影响处理器对数据的访问速度,从而影响整个算法计算部分的等待时间。

此外,C64x+在执行跳转指令时,需要将整个流水线冲掉,进行重新填充,由于流水线的长度,这种跳转会花费比较长的时间,因此在算法编写中应该尽量避免这种跳转。

混合高斯模型进行运动检测的执行流程如图4.2所示。

视频的输入为通过网络从摄像机上获得的图像,预处理部分主要包括了对图像不同属性空间的转换和高斯滤波,以及根据用户需要进行的一些处理,如对高分辨率的图像,规定只将算法应用于感兴趣的区域。

模型的初始化部分在检测中只进行一次,初始化的参数包括了高斯模型的个数

、学习因子

、两个匹配门限系数

,以及权值和方差的初始化值,这些初始化值需要通过人工配置,并且有可能在不同的监控场景中设置不同的值,为了方便初始化参数的管理,以及在背景更新与匹配时,对模型数据的访问,设计了如下的两个结构体:

TypedefstructGMMParams

{

intn_gauss;//模型个数

floatalpha;//学习因子

floatbeta1_threshold,bata2_threshold;//匹配门限

floatweight_init,variance_init;//权值和方差方差的初始值

}GMMPararns;

TypedefstructGMMValues

{

floatweight;//权值

floatvariance[N_CHANNEL];//方差

floatmean[N_CHANNEL;//均值

}GMMValues;

在结构体中存在的float型数据,这只是为了方便参数管理和更好的表示参数意义,在实际的计算中将转化为整数进行计算。

公式(4-26)中

是一个0到1之间的数,将

放大215倍,然后取放大后的整数部分,则相当于用一个15位的整数来表示

针对C64x+进行这种将小数放大进行处理的最大优势是:

C64x+内核拥有MPYLIR和MPYHIR指令,用这类指令将一个32位的整数与一个16位的整数相乘时,结果会加上214(相当于做四舍五入)再向右移15位。

这样用放大后的

值与均方值相乘,使得每次均方更新和计算时都是整数,并且使用15bit来表示

,精度可以满足对图像像素值处理的需要,即能保证均值和方差的更新精度,这是因为数字图像的特征值都是用一个8bit的整数来表示,在比较时小数部分的作用并不明显,所以在整个算法使用整数计算时,对最终的判决和背景更新影响并不大,而对于

一般为大于1的数),则将

分拆成整数部分和小数部分,分别进行计算。

在改进的混合高斯模型算法实现中,使用双门限判决时,对于像素样本值与中心距离的偏差高于门限不的像素点判决为运动目标,称为绝对运动目标点,用“2”来表示,对低于门限

的像素点判决为背景,称为绝对背景点,用“0”来表示,而对处在两个门限值之间的像素点,称为可能运动目标点,用“l’’来表示,它们是否被判决为运动目标取决于邻域内是否存在目标点,这样使得算法在编程时对像素的遍历存在了次序性,如图4.3所示,初步的判决结果如图4.3(a)所示,如果算法按照图像从上到下和从左到右的顺序处理,则判决结果如图4.3(b),而如果图像按照从下到上和从右到左的顺序处理,则判决结果如图4.3(c),因此对于不规则的运动目标,无论按照任何顺序遍历都无法得到完整的目标。

在本系统算法的实现中使用了栈的数据结构来保证这种使用邻域信息的双门限判决,即在初步判决时,将所有的绝对运动目标点坐标压入栈,然后出栈时,根据绝对运动目标点的坐标,查找它邻域位置是否有可能运动目标点,如果存在,则将其判决为运动目标,并压入栈,如果没有可能运动目标点,则将该点弹出,直至栈为空,栈的现实代码如下:

While(stack_top>stack_bottom)

{

JUDGE_POP(m);

if(m[-1]==)//

JUDGE_PUSH(m-1);

if(m[1]==1)//

JUDGE_PUSH(m+1);

if(m[-width-1]==1)//左上

JUDGE_PUSH(m-width-1);

if(m[-width]==1)//上方

JUDGE_PUSH(m-width);

if(m[-width+1]==1)//右上

JUDGE_PUSH(m-width+1);

if(m[width-1]==1)//左下

JUDGE_PUSH(m+width-1);

if(m[width]==1)//正下

JUDGE_PUSH(m+width);

5基于DM6467视频系统的软件设计

本系统的软件设计采用汇编和C混合编程的方法。

运行速度要求高和部分驱动代码部分采用汇编语言编写,满足了嵌入式系统对实时性的要求:

主程序全部用C语言编写,满足了对程序可读性、结构性的要求。

本章对本系统的基本软件的设计展开论述,包括初始化微处理器DM6467和设计外围设备的驱动程序。

5.1TMS320DM6467的初始化

上电复位后,ARM开始从起始空间执行程序(起始空间根据启动模式不同而不同,此处为0x00004000),存放在该处地址的指令为中断向量表。

该中断向量表一共有八条跳转指令:

复位指令、未定义指令、软中断指令、预取错误指令、数据错误指令、保留、IRQ中断、FIQ中断。

系统最先执行的是复位指令,该指令完成DM6467系统的整体初始化,主要包括:

通过修改CPSR更改处理器运行模式,其中CPSR定义如表5-1。

表5-1CPSR定义图

Table5-1CPSRDefinitionFigure

31

30

29

28

27-08

07

06

05

04

03

02

01

00

N

Z

C

V

保留

I

F

T

M4

M3

M2

M1

M0

负数或小于

进位或借位

溢出

IRQ禁止

FIQ禁止

ARM/Thumb指令选择

模式位

0x10-用户

0x11-FIQ

0x12-IRQ

0x13-管理

0x17-未定义

0x1F-系统

修改CPSR值,使其低八位为0xD3。

从表5-1可知,此时关闭了FIQ和IRQ中断,使用Thumb指令集并将处理器模式设为管理模式。

2.CPU初始化

CPU初始化主要涉及关闭指令缓存(ICache)和数据缓存(DCache)。

关闭内存管理单元(MMU),设置处理器数据格式为小端模式等。

关闭MMU等模块通常是CPU处理器在初始化时必须做的。

3.系统模块初始化

系统模块初始化主要包括系统PLL1、PLL2初始化,片选信号初始化,DDR2存储控制器初始化,复用引脚功能设置等。

时钟PLL模块的正常工作是系统工作的前提。

DM6467中共有PLL1和PLL2两个PLL模块。

两个PLL模块分别独立控制相应的模块。

PLL1主要为ARM子系统、DSP子系统、视频协处理器(VICP)以及大部分系统模块配置时钟。

PLL2主要为DDR2存储器和视频后端(VPBE)配置时钟。

片选信号初始化包括CS2、CS3、CS4和CS5的初始化,每个片选信号可以控制32MB的寻址空间。

四个片选信号寄存器分别控制四个片选信号,且四个片选寄存器各位的意义相同。

在本系统中,片选寄存器主要设置外部数据宽度为16位,等待状态设为上电复位默认值等。

DDR2存储控制器初始化主要是设置DDR2与硬件配置和时序相关的参数。

设置DDR2时钟为135MHz。

设置SDCFG寄存器值为0x00008822,即设置DDR2总线宽度为32位,CAS延迟为4个时钟周期,Bank数为4,列地址数为10(210=1024字/页面)。

这些设置都是由外部所接实际DDR2存储器大小和速度参数等决定的。

复用引脚功能定义也是系统模块初始化时的重要部分。

DM6467系统大部分引脚至少有两种以上信号功能,这就要求在系统初始化时根据系统要求来设置相关复用寄存器。

高位地址线复用、高位数据线复用、GPIO口复用、片选信号复用、Al…A信号复用、视频信号线复用等都是要重点设置的。

DM6467一共有两个复用寄存器。

表5-2是复用寄存器0各位的解释

表5-2复用寄存器0功能

Table5-2MultiplexRegister0Function

EMACEN

=0GPIO3V[0:

16];=1EMAC和MDIO功能

CPLDEN

=0GPIO[4];=1CCDC_FIELD

CWEN

=0GPIO[1];=1CCDC_WEN

LFLDEN

=0GPIO[3];=1LCD_FIELD

LOEEN

=0GPIO[0];=1LCD_OE

RGE888

=0GPIO[2:

6,46:

47];=1VPBERGB888

RGB666

=0GPIO[46:

47];=1VPBERGB666

ATAEN

=0EMIPAGPIO[52:

53];=1ATA使能

HDIREN

=0GPIO[42];=1HDDIR

VLYNQEN

=0GPIO[9,10:

17];=1VLYNQ使能

VLSCREN

=0GPIO[9];=1VLYNQSCRUN

VLYNQWD

=0GPIO[10:

17];=1LVYNQTXD[3:

0]和RXD[3:

0]

AECS5

=0GPIO[8];=1EM_CS5

AECS4

=0GPIO[9];=1EM_CS4

AEAW

=0GPIO[10:

28];=1地址线

5.2外围设备程序设计

外围设备程序设计也是DM6467系统设计中重要的一部分。

程序设计的第一步是充分了解现有硬件特性,熟悉硬件数据手册。

其次是要根据硬件手册及相关资料设计出程序流程。

在有了程序流程图之后就要根据流程图设计出程序代码。

最后是要对程序在硬件环境下调试,并根据调试结果对程序做改进。

5.2.1视频模块程序设计

视频模块程序设计主要包括系统平台资源(ARM、DSP、DDR2、时钟、中断等)初始化,视频解码芯片TVP5146初始化视频前端和视频后端初始化,图像显示等。

其中系统平台资源初始化在前面5.1节已有介绍。

图5-1是视频模块程序设计流程图。

TVP5146的初始化配置主要通过系统

总线设置芯片相关控制寄存器。

读写程序的设计是TVP5146程序设计中的重点之一。

总线只有两根信号线,即一根时钟线SCL和一根数据线SDA。

其数据传输时的数据格式如图5-2所示[30]。

当传输数据时,首先由

主设备发送一个起始条件,之后是从设备地址(TVP5146设备地址为0x5D)和数据读/写位。

当从设备接收到从设备地址与本身地址相同时,要对总线做一应答。

主设备收到来自从设备的应答后,继续发送TVP5416的设备寄存器地址,此时仍旧需要收到从设备的应答。

之后传输的是写入或者读出寄存器的数据,并有应答握手。

当传输结束后主设备需要发送一个结束标志。

起始条件代表一个新的

传输的开始,而停止条件则是代表本次

传输的结束。

当时钟信号SCL在高电平期间,如果SDA从高电平跳变到低电平则代表起始条件。

当SCL在高电平期间,如果SDA从低电平跳变到高电平则代表停止条件[30]。

系统中,系统每成功发送8位数据,数据接收设备都要在第九个时钟周期发送一个应答信号。

应答信号的格式是在一个时钟周期内将SDA信号线保持为底电平。

视频模块除了要完成视频解码芯片的程序设计,还要完成视频前端和视频后端的程序设计。

视频前端主要设置图像格式、数据通道、数据格式等信息。

前端的数据格式为8位YCbCr格式,图像格式为720x576。

前端处理完的数据放入DDR2中,在DDR2中缓冲的起始地址为0x81000000。

VPFE-INIT()是视频前端的初始化子函数。

视频后端也是从Ox81000000开始的缓冲区取图像数据,经过OSD模块和视频编码模块处理后显示。

视频后端的程序设计主要涉及OSD窗开启、OSD窗规格/位置设定、编码模块格式设置等。

VPBE-INIT()是视频后端的初始化子函数。

5.2.2音频模块程序设计

音频程序设计主要包括系统初始化,音频编解码芯片初始化,ASP通道建立等部分。

其中对系统模块的初始化与视频部分类似,音频编解码芯片初始化也是通过

总线完成。

对ASP通道的配置是音频模块程序设计一的重点。

ASP通道与TI其它DSP上的McBSP通道类似。

ASP的收发通道都有独立的时钟和帧同步信号,可以实现全双工通信。

同时时钟和帧同步信号具有灵活的可编程性,可根据系统需要做多种配置。

ASP传输的数据宽度可以是8/l2/l6/20/24/32。

ASP的端口初始化配置主要涉及以下步骤[37]:

(1)将ASP收/发端口置于复位状态,确保内部采样率发生信号CLKG和内部帧同步发生信号FSG未被端口使用(GRST=FRST=0)。

(2)对相应控制寄存器编程,同时要确保端口仍处于复位状态。

(3)等待内部同步信号的正常工作。

(4)GRST位置一,启动采样率发生器。

(5)开启发送端口,等待可能的帧同步错误发生,最后再关闭发送端口。

发送端口开启后又关闭的原因是在刚启动发送端时容易发生帧1同步错误,所以要通过此步骤来清除可能的帧同步错误。

(6)XRST和RRST位置一,启动发送和接收端口。

(7)启动内部时钟发生器。

(8)启动帧同步信号发生器。

5.2.3USB程序设计

DM6467芯片内部集成了USB2.0主/从控制器。

该控制器主要有如下特性:

(1)USB2.0从模式支持高速(480Mb/S)和全速(12Mb/S)

(2)USB2.0主设备支持高速、全速和低速(l.5Mb/s)

(3)支持所有的传输模式(控制、批量、中断和同步)

(4)除端点0外还有4个发送端口和4个接收端口

(5)FIFORAM容量可达4K,并且大小可编程

虽然DM6467集成了主/从控制器,但是在本系统中,只设计USB从设备的程序代码,主设备代码无需自己开发。

DM6467USB程序主要由以下三部分组成:

(1)初始化DM6467系统平台和USB从模块控制寄存器。

主要涉及系统时钟设置、DDR2存储器控制器设置、ARM926工作模式设置、USB工作模式设置等。

(2)主循环:

其任务是对PC机发出的设置包等请求应答,可以中断。

(3)中断服务程序:

ARM9处理器收到中断请求时,读取中断寄存器,并根据寄存器具体内容转到相应的中断处理子程序进行处理。

在USB程序设计过程中,初始化枚举过程尤为重要,这个初始化过程不能被打断。

若操作系统在初始化枚举阶段连续3次请求设备描述符等信息、都没有得到正确的应答,PC机操作系统将弹出发现未知设备的提示,枚举过程失败。

在初始化枚举程序的设计和调试过程中,可以通过BusHound等USB抓包工具获取数据,以便找出调试中存在的问题,及时掌握枚举过程中的数据信息[27]。

在本系统的调试过程中就大量分析了抓包工具获取的通信数据,排除了许多问题,并最终顺利实现了枚举调试和后续的调试工作。

USB设备启动的主要流程如下:

(1)USB设备接入USB口,通过仿真器配置好USB相关有存器。

此时USBDP/DM线处于高阻杰。

将POWER寄存器的SOFTCONN位置一,此时USBDP/DM线使能,主设备(在本系统中为PC机,下称主机)识别到有一USB设备插入。

(2)主机发出读设备描述符、配置描述符、接口描述符以及端点描述符等请求,USB控制器回复所请求的对应描述符。

对主机所要求的描述符的应答是本阶段的程序设计关键。

从本质上讲,USB描述符的提交过程就是USB主设备获取USB从设备信息并为其分配地址的过程,也是实现主设备对从设备进行管理的前提。

主设备根据从设备提供的端点大小和端点数等相关信息,之后就能更好地管理和访问从设备。

(3)主机根据DM6467USB提供的设备描述符安装设备驱动程序。

对于不同的USB设备要编写不同的主机端驱动程序。

由于有现成的驱动程序,所以此时按照提示手动定位驱动程序路径并安装即可。

(4)设备驱动程序初始化USB设备,USB设备可用。

以上过程中最重要的是第二步,也就是USB从设备如何应答主机提出的各种描述符请求[26]。

主机的第一条命令是询问设备描述符,此SETUP包为8个字节数据(0x80,0x06,0x00,0x01,0x00,0x00,0x40,0x00),其中倒数第二个字节0x40代表请求返回的数据长度为64字节。

由于主机此时并不知道USB设备描述符的实际长度,所以请求的数据长度设置为最大。

在这一步中主机只关心返回的数组DEV_DESC[]中的前8个字节,用于说明设备描述符的真实长度和设备的类型。

主机的第二条命令是发送一个含有指定地址的数据包,USB从设备将收到数据包中的地址设置为自己的地址,并返回一个0数据包作为应答。

设置地址的方法是将地址值写入FADDR寄存器。

设置完地址之后,USB从设备进入编址状态。

主机此后访问该从设备时只对该地址访问,USB也只响应含有自己地址信息的USB包。

主机的第三条命令是再次发送得到设备描述符请求数据包,此命令的8个字节数据为0x80,0x06,0x00,0x02,0x00,0x00,0x12,0x00。

因为主机在第一次命令交互时已经得到了实际的设备描述符长度信息,所以此次要求的数据长度是实际的设备描述符长度(即0x12,见8字节信息中的倒数第二个字节)。

接着主机要求得到设备的配置描述符。

在得到正确的配置描述符之后主机要求一次得到所有的配置描述符、接口描述符和节点描述符,此时USB从设备需要在一次传输中将这些描述符提交。

至此初始化枚举工作结束,如果主机已经安装了该设备的驱动程序,则设备可用。

若主机以前没有安装相应的驱动程序,则主机会弹出安装驱动程序的提示框,此时手动或者自动安装上驱动程序即可。

端点0只传输与USB初始化枚举等相关的控制信息,实际的用户数据传输都是通过USB的其它发送/接收端点完成的[28]。

对其它端点的程序设计方法与端点零类似,只是一般只有输入/输出请求,所以程序流程更简单。

此处不再描述对其它端点的操作。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2