您好,欢迎光临!   请登录 免费注册    
  您的位置:电子变压器资讯网 > 资讯中心 >  技术文章 > 正文
视频跟踪算法在Davinci SOC上的实现与优化
[发布时间]:2012年4月6日 [来源]:我爱电子网 [点击率]:5633
【导读】: 引言 目标跟踪作为计算机视觉的一个极具挑战性的研究任务,已被广泛的应用在人机交互、智能监控、医学图像处理等领域中。目标跟踪的本质是在图像序列中识别出目标的同时对其进行精确定位。为了克服噪声、遮挡、...

系统软件框架

整个系统的软件框架如图2如示。DM6446的ARM核运行基于Linux操作系统的应用程序,所用的外围设备都由ARM负责控制。ARM端的HTTP服务器通过Linux网络协议栈来处理HTTP请求,并发送压缩视频数据。视频跟踪的应用程序由五个POSIX线程组成,分别是视频捕捉线程,视频跟踪线程,视频压缩线程,显示线程,系统控制线程。视频捕捉线程通过V4L2接口设备驱动从摄像头读取原始视频数据。视频跟踪线程把视频数据送到ARM和DSP的共享缓冲内存,并通知DSP执行跟踪算法。压缩线程负责控制DSP侧的压缩算法并从共享内存中读取压缩数据。视频显示线程从视频缓存中读取视频数据帧,并叠加目标跟踪框,最后通过Frame Buffer设备驱动输出显示。系统控制线程负责响应遥控器和鼠标并执行相应操作。

     

                             图 2 软件结构图

DM6446的DSP核上运行DSP/BIOS实时操作系统和目标检测,跟踪算法,视频压缩算法。所有的算法的接口都符合TI xDAIS标准,由Codec Engine调用。除了算法,DSP核上还集成了管理内存和DMA的Framework Component。

ARM核和DSP核的通信由TI提供的Codec Engine软件框架负责。Codec Engine是介于应用程序和具体算法之间的软件模块,其中的VISA API通过stub和skeleton访问Engine SPI最终调用算法。ARM和DSP的所用共享缓冲内存都是通过CMEM模块在DDR中分配的,缓冲内存地址连续且与DSP核Cache对齐。

跟踪算法在DSP上的优化

为了充分发挥出Davinci SOC强大的视频处理能力,满足实时跟踪的需要,我们通过算法优化和编程优化相结合的方法对Codec程序进行了大量的优化。

算法优化

算法优化是指在不降低算法性能的情况下,采用等效算法来降低计算量,我们的工作主要集中在“归一化互相关系数”的计算例程的简化上。根据均值和方差的性质,我们可以将(1)式化简为:

      

上式与式(1)比较,减少了大量的加减法计算,而且将方差和协方差的计算转化为大量的乘加运算,这为我们后面的编程优化也提供了极大的便利。例如M=64, N="64时",加法次数从36864减少到12288。

编程优化

编程优化是在计算量不变的情况下,根据Davinci处理器DSP核心的特点,通过优化存储器的存取效率和提高程序的并行化程度来缩短程序运行所需要的指令周期数,以使程序运行得更快。我们的编程优化工作主要包含使用dsplib、使用线性汇编、使用内联函数以及循环展开等五个方面,下面将一一加以介绍。

dsplib的使用

在优化过程中,我们还采用了CCS中提供的库函数来对代码进行优化。CCS中针对c64x+ DSP提供了高度优化的dsplib库函数供用户使用,这些库函数提供了数字信号处理中常见的处理例程,而且由汇编语言写成,具有极高效的代码效率。特别是用于计算向量内积的DSP_dotprod和DSP_vecsumsq函数正好满足了我们的计算需求。在计算尺寸为32x32的“归一化互相关系数”时,优化后计算部分只需要271个DSP时钟周期,而计算部分只需要267个DSP时钟周期,这大大提高了程序运行的速度。

投稿箱:
   电子变压器、电感器、磁性材料等磁电元件相关的行业、企业新闻稿件需要发表,或进行资讯合作,欢迎联系本网编辑部QQ: , 邮箱:info%ett-cn.com (%替换成@)。
第一时间获取电子变压器行业资讯,请在微信公众账号中搜索“电子变压器资讯”或者“dzbyqzx”,或用手机扫描左方二维码,即可获得电子变压器资讯网每日精华内容推送和最优搜索体验,并参与活动!
温馨提示:回复“1”获取最新资讯。