IEEE1394视频视觉系统中DSP控制处理器的软硬件设计
摘要:介绍了用数字信号处理器实现视频流控制处理功能的软硬件设计方案。重点论述了如何设计DSP的软件及外围硬件,完成IEEE1394设备自标识及数据传输的详细过程。同时还提出了一种用于运动目标检测运动目标检测的变加权背景恢复算法及其DSP实现方案。这种用DSP实现数字视觉算法的成功尝试,对于实现其她视觉功能具有一定的借鉴意义。 关键词: DSP IEEE1394a 视频采集 运动目标检测
本文介绍了一种以DSP为核心、基于IEEE1394总线的图像实时采集处理系统的软硬件设计。此外还提出了一种易于用DSP实现且存储器资源占用率小的运动目标检测算法。据了解,目前国内外大多数的计算机视觉研究都就是用计算机软件处理实现的,因此在实时性实时性与成本方面受计算机平台的制约。本文讨论了一种计算机视觉系统的硬件平台设计方案,并在此平台上实现了运动目标检测。可以说,这就是一次用DSP实现计算机视觉算法的成功尝试,对于其它算法的硬件实现有一定的借鉴意义。 采用IEEE1394总线作为传输接口就是实现实时图像采集的根本保证。 IEEE1394就是由国际电气与电子工程师协会(IEEE)制定的一种高速串行总线协议。 1394总线具有以下优点[1] : ·支持热插拔与即插即用; ·提供统一的通用接口,并且具有总线供电能力(每一端口的最大输出电流为1、 5A,输出电压833Vdc) ; ·传输速率传输速率高100400Mbps; ·不依赖计算机,支持1394设备间的点对点传输。 其中第四点就是目前常用的USB2、 0总线无法实现的,也正就是这一优点使得1394不仅就是一种计算机外设连接总线,更就是多种消费类电子产品的连接方案。 另外,为了实现数字视频图像的实时采集与处理,充分发挥1394总线的高速传输速率,笔者选用了TI公司的TMS320VC33数字信号处理器作为主控制器。这就是一款高性能浮点DSP,它具有17ns的指令周期与60MIPS的处理能力[2] 。 下面将分别介绍这套DSP系统的工作原理,软、硬件设计以及运动目标检测算法的改进与实现。 1系统组成及工作原理 本系统就是为验证并实现各种计算机视觉算法而搭建的一个硬件平台,用五片512K×8bit的SRAM分别作为帧缓存与DSP的扩展RAM。还有一片20万门的FPGA用作系统的逻辑控制及以后机器视觉算法的硬件实现。系统的结构框图。
系统的工作原理如下:系统上电或复位后,DSP首先从FlashROM中自动装入代码并开始运行,等待1394电缆插入。当电缆插入后,DSP通过解析根节点发来的请求包发出对应的内容作为应答,直至根节点发现该设备。之后,只要根节点发出读数据请求,DSP就根据请求包的内容从帧缓冲RAM中取出数据,通过1394链路层链路层与物理层芯片将其送到1394总线上。 图像数据的采集、处理与传输三个步骤以流水线的方式,在同一时刻各掌握一片帧缓存RAM的访问权,并行工作。当各个步骤都完成后,在F P GA的控制下同时切换各片帧缓存的控制权,开始流水线的下一个周期。各个步骤对三片帧缓存RAM的控制次序。
这种流水线式的电路结构实现了图像采集、 图像处理、 图像传输三个步骤并行工作,极大地提高了处理的连续性与实时性。 2 DSP硬件设计 DSP在本系统中的任务有三个:首先就是通过链路层与物理层芯片与根节点通信,完成自标识过程;其二就是处理采集好的一帧图像,并把它再存回帧缓存;其三就是自标识完成后,响应根节点发来的数据读请求,从帧缓冲RAM中读出处理过的图像数据并送到总线上。整个系统由一片TMS 320VC33、一片20万门的FPGA(EP20k200EBC356) 、五片512KB高速SRAM(IS61LV5128AL) 、一片
Flash(AM29LV400B) 、一片1394链路层芯片(TSB12LV32) 、一片1394物理层芯片(TSB41LV04a)以及DSP电源及瞧门狗芯片(PS767D301)组成。其中TMS320VC33作为主控制器与TSB12LV32的主控制器接口相连。 FPGA在DSP的控制下向1394链路层芯片的DataMover端口发送数据。此外FPGA还有地址译码、时序调整以及帧缓存切换等功能。三片SRAM作为帧缓存器,另外两片作为DSP的扩展RAM,每片RAM内存放一帧图像(300K字
节) ,其访问时间为12ns,因此完全适合TMS320VC33以零等待方式访问。物理层芯片TSB12LV04a只与链路层芯片通信,与DSP无关,它负责进行总线上的差分差分模拟信号与系统的数字信号之间的转换。 Flash用来存放DSP代码,它经过地址译码直接与DSP相连。DSP复位后由Boot-Loader将代码从Flash加载到DSP片内RAM中开始运行。可以通过DSP的JTAG接口方便地进行Flash的在系统擦写。 由于AM12LV400B的访问时间为70ns,DSP访问Flash时至少应加入5个等待周期。 3 DSP软件设计 DSP的软件开发就是在TI公司提供的Code Composer(CC)环境下,结合DSP硬件仿真器完成。代码的开发根据实际情况使用C语言与汇编语言的混合编程。在实现设备自标识的过程中使用C语言,这就是因为这个过程逻辑关系比较复杂,但只在总线复位初始化时执行一次,用C语言可以提高可读性,减小开发难度,同时也不会对系统的性能有太大影响。而在进行图像处理与响应数据读请求包时,则使用了汇编语言。原因就是这些代码使用频繁,直接影响系统的速度。 响应1394总线的自标识过程就是系统设计的难点,也就是1394接口设计最重要的部分。 DSP的响应必须符合IEEE1394a协议中规定的自标识步骤,图3描述了DSP的动作流程。
自标识过程实际上就是根节点(主机)请求读取叶节点(设备)配置R OM的过程。可以执行事务的1394串行总线节点都应该实现配置R OM,它为配置与诊断与设备相关的问题提供了一些必要的信息。例如,对于一个连接到计算机上的1394设备而言,设备加电后,计算机首先读取配置ROM中的内容,从而分辨出这就是一个什么样的设备。配置ROM中包含的信息有: ·为识别本设备驱动程序所需要的信息; ·为识别诊断软件所必须的信息; ·为指定设备设计总线的各种性能所需要的信息; ·为指定可选的模块、节点以及元件特征与参数所需要的信息。 正常格式的配置ROM形成了一个树结构,它包括很多分支与叶子,这些分支与叶子都就是由指针联系起来的,其中有限选项也有任选项
[3] [4] 。 D S P要做的就就是把配置ROM的内容以异步读应答包的形式发给计算机,而配置ROM的内容就是开发人员根据所开发的系统自己定义的。当计算机正确读完配置ROM的内容后,就会显示发现新硬件或自动装入相应的1394设备驱动程序。 所有的1394数据传输都就是以包为单位。其中包头含此次传输的传输速率(Spd) 、事务标签(tLable) 、事务代码(tCode) 、源节点ID、 目的节点ID等信息。这些信息必须符合协议要求,例如一个读请求数据块应答包,传输速率为400Mbps,那么Spd10、 tCode7,源节点ID与目的节点ID分别就是请求包的目的节点ID与源节点ID,tLable与请求包的相等。 自标识完成后,DSP开始处理采集好的图像数据,同时以中断子程序的方式启动数据发送。 由于本系统采用1394总线的异步传输方式,每次数据传输都由主机(PC)发起,所以DSP以中断的方式响应主机发来的读请求,每次中断服务中发送一个数据包。在采集、处理、传输三个步骤中,显然处理就是最耗费时间的,为了确保这三个步骤都完成后再切换到流水线的下一个周期,中断子程序中还要判断就是否一帧图像已经发完,如果已经发完一帧,则关闭中断,等到图像处理步骤完成后,帧缓存切换完毕再打开中断。 整个软件部分完成后,烧写Flash并实现程序的引导加载(Boot-Loader)也就是重要的一步。 TMS320VC33的引导加载功能就是通过DSP复位后自动运行驻留在片内ROM的地址0 x 45处的一段代码实现的。这段代码可以根据复位时INT0~INT3引脚上的状态决定装载的源地址(只能就是0x1000、 0x400000、 0xFFF000或串口0) ,并将源地址处的代码转移到指定的片内RAM中,然后从指定的程序入口点开始运行
[5] 。 4帧间平均运动检测算法的改进与实现 运动目标检测跟踪就是计算机视觉中十分重要的一个热门研究领域,近年来出现了许多新的算法。但可以归结为以下四大类:基于光流场分析的算法、基于主动轮廓的算法、基于统计模型的算法以及基于图像差分的方法。前三种算法与第四种方法相比,具有精度高、定位准并且能够得出运动参数的优点。但就是算法的复杂性较高,目前难以在普通的硬件平台上实现实时处理。因此,图像差分方法被广泛用于实时运动检测系统。 在实际应用中差分图像的获得有两种途径:其一就是利用相邻两帧之间的差来获得差分图像;其二就是通过将当前帧与固定的背景帧相减来获得差分图像。第一种方法
在应用中容易出现“空洞”现象,检测结果的大小与目标运动的速度有关,从而影响了动目标检测的精度;第二种方法,由于背景就是固定的,那么若外界条件有较明显的变化,例如光照等条件发生变化时,当前的实际背景图像就会发生变化,从而获得的差分图像就是不准确的,噪声比较大。故这种方法仅适用于背景条件不变或者就是变化限制在一定范围内的情况。 本文针对背景与摄像机都静止这一特定应用场合,选用了基于背景消减的运动检测与跟踪算法。这种算法的关键在于背景重建,在此应用了基于帧间平均的背景重建方法[6] ,并在此基础上针对硬件可实现性与处理的实时性提出了改进。最后,为了克服背景消减算法噪声较大的先天不足,采用了形态学滤波的方法去处噪声。 帧间平均算法使用当前帧之前各帧的像素平均值作为当前背景的估计值,如下式所示:
从公式中可以瞧出,这种算法只需要在图像采集系统的基础上多添加一片帧存储器用来存储估计背景即可,因此对硬件资源要求低。另外,背景就是随着n增加逐渐恢复的,所以背景恢复过程并不影响图像处理结果的实时传输与显示。显然,n越大,背景恢复越真实,可以控制n的大小来调整处理时间与处理效果之间的平衡。 然而,由于上面的公式中有除法运算,所以无论使用FPGA还就是DSP来实现都有一定的困难。 以DSP为例,对于本系统所用的TMS320C3x系列DSP来说,一次整数除法运算要用约100条指令,这显然对处理的实时性有很大的影响。 为了克服这一算法缺陷,提出了如下的变加权均值算法:
上式中,各帧取平均值时并没有采用相同的加权,而就是以2的整数幂2m作为步长,在每个步长内,对已估计出的背景都给予该步长内最大的加权值(2m-1)/2m,这比原算法中背景的加权值(n-1)/n更大,也就就是说变加权算法在背景估计中更加依赖于已经估计出的背景,这有利于消除当前帧中噪声对背景估计的影响。在整个背景估计过程中,m越大,步长也越大,同时已估计出的背景的权重也越大。 同时可以瞧到,除数都变成了2的整数幂,可以用移位来实现,与原算法相比,运算效率提高了近100倍。然而,处理效果并未因此而受到损失,这就是因为这种加权值的改变遵循这样一种事实:随着帧数的增加,估计出的背景的可信度越来越高,当前帧对背景的影响也越来越小,所以已估计出的背景在公式中所占的比重也应该越来越大。实验证明:m=6时,已经足可以估计出较为真实的背景了。 DSP的扩展RAM用来存放已经估计出的背景,将当前帧与背景相减取绝对值,再进行二值化,就得到了运动目标的二值化图像。为了消除噪声的影响,最后使用一个7×7的菱形结构元素对图像进行形态学开运算。最终的结果再存回帧缓存。 图4就是处理结果传回主机后,用VC实现的应用程序界面,其中左上角就是在原始图像上添加的动目标检测结果,右上角就是二值化的动目标,左下角就是背景恢复图,右下角就是运动跟踪轨迹;图5就是n=64时,恢复出的背景;图6就是利用改进的变加权帧间平均算法得到的目标运动检测结果,其中较大的方框就是形态学滤波前的检测结果,受到车灯倒影的影响(如图中白色圆圈标示) ,检测结果精度很差,内部较小的方框则通过形态学滤波解决了这个问题。
经测试表明:本系统工作稳定,传输速率高(30fps@640×480) ,处理效果好,可扩展性强,就是机器视觉算法硬件实现的一次成功尝试。但就是目前的算法还有待改进,例如在保证实时性与硬件易实现性的前提下,大片的灯光倒影很难再用形态学滤波的方法消除。这就是下一步要着重解决的问题。
Vultr 商家有新增韩国首尔机房,这个是继日本、新加坡之后的第三个亚洲机房。不过可以大概率知道肯定不是直连中国机房的,因为早期的日本机房有过直连后来取消的。今天准备体验看看VULTR VPS主机商的韩国首尔机房的云服务器的速度和性能。1、全球节点PING速度测试这里先通过PING测试工具看看全球几十个节点的PING速度。看到好像移动速度还不错。2、路由去程测试测试看看VULTR韩国首尔机房的节点...
在2014年发现原来使用VPS的客户需求慢慢的在改版,VPS已经不能满足客户的需求。我们开始代理机房的独立服务器,主推和HS机房的独立服务器。经过一年多的发展,我们发现代理的服务器配置参差不齐,机房的售后服务也无法完全跟上,导致了很多问题发生,对使用体验带来了很多的不便,很多客户离开了我们。经过我们慎重的考虑和客户的建议。我们在2015开始了重大的改变, 2015年,我们开始计划托管自己...
整理一下CloudCone商家之前推送的闪购VPS云服务器产品,数量有限,活动推出可能很快机器就售罄了,有需要美国便宜VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器提供商,国外实力大厂,自己开发的主机系统面板,CloudCone主要销售美国洛杉矶云服务器产品,优势特点是...