视频跟踪算法在Davinci SOC上的实现与优化
时间:10-06
来源:作者:杨成 冯巍 潘吉彦 许俊泽 胡波 复旦大学电子工程系DSPT实验室
点击:
引言
目标跟踪作为计算机视觉的一个极具挑战性的研究任务,已被广泛的应用在人机交互、智能监控、医学图像处理等领域中。目标跟踪的本质是在图像序列中识别出目标的同时对其进行精确定位。为了克服噪声、遮挡、背景的改变等对目标识别带来的困难,出现了很多的跟踪算法。
因为目标跟踪算法需要处理的数据量大、运算复杂,需要性能强大的处理器才能实时处理。我们选用TI推出的最新产品TMS320DM6446实现算法。TMS320DM6446是一款高度集成的片上系统,集成了可以运行频率高达594MHz的C64x+ DSP核和297MHz的ARM926处理器核。另外它还集成了数字视频所需的许多外部组件,如视频加速器,网络外设及高速外部存储接口。本设计充分利用DM6446的强大运算能力,在DSP内核上实时运行目标跟踪算法。 设计还在ARM处理器上执行多线程应用程序,负责视频采集,显示,网络通信,外围器件控制等工作。
算法介绍
本系统实现的视频跟踪算法可参考文献[1]-[5],整个算法分为基本算法和改进算法两部分。本算法是一种基于模板匹配技术的跟踪算法,即在手工选定或自动选定了待跟踪目标后,提取目标的外观信息作为模板,在后续的视频序列中,将候选图像区域与目标模板进行匹配,将最相似的图像区域作为运动目标当前的位置。在本文中,采用结构相似度,即"归一化互相关系数"作为候选区域与目标模板相似程度的度量标准,其计算公式如下所示:
上式中,f(m,n)和g(m,n)分别为目标模板和候选区域的灰度值矩阵,尺寸为MxN。uf和ug分别为目标模板和候选区域的灰度平均值,然后再求出f(m,n)和g(m,n)的协方差、f(m,n)的方差、g(m,n)的方差后,求出归一化互相关系数。式(1)通过从灰度值矩阵中减去灰度均值,有效地消除了光照给跟踪结果带来的影响。而对于匹配图像区域的搜索,为了达到减少匹配次数从而降低计算量的目的,我们借鉴了视频压缩领域中的三步搜索法(Three Step Search, TSS) 作为最匹配点的搜索算法[2]。
为了增加模板匹配视频目标跟踪算法的鲁棒性,我们在基本算法的基础上实现了改进算法的部分。改进算法具有自适应遮挡处理与模板漂移抑制的能力,能够很好地解决前面提到模板匹配的视频目标跟踪算法需要解决的难题。具体来说,主要有如下四点改进:(1) 抑制漂移的带掩蔽卡尔曼外观滤波算法(Drift-Inhibitive Masked Kalman Appearance Filter, DIMKAF ) [1][3][4] ;(2) 内容自适应渐进式遮挡分析算法(Content-Adaptive Progressive Occlusion Analysis, CAPOA)[1][5];(3) 可变掩蔽模板匹配算法(Variant-Mask Template Matching, VMTM)[1][5];(4) 局部最优匹配鉴定算法(Local Best Match Authentication, LBMA)[1]。 改进后整个算法的流程图如下所示:
图 1 跟踪算法主流程图
算法在Davinci SOC上的实现
DSP平台的选择
DM6446采用ARM与DSP 双核结构,其中ARM子系统搭载297 MHz主频的ARM926 核,DSP部分则采用594 MHz的C64x+DSP核,外围存储均支持256 MB DDR2 RAM和各类存储卡,另外使用了VPSS 子系统丰富的视频前后处理功能,且都配备了完善的外设接口。目标跟踪算法需要做大量运算,DM6446 DSP核强大的运算处理能力保证了算法的实时处理。同时DM6446的ARM核可以进行系统管理,数据读写,网络传输等处理。
我们使用Spectrum Digital公司的DVEVM平台进行算法仿真、原型制作和软件优化。DVEVM?还可实现视频输入/输出连接、网络接口、存储器接口以及标准的子卡连接等。
系统软件框架
整个系统的软件框架如图2如示。DM6446的ARM核运行基于Linux操作系统的应用程序,所用的外围设备都由ARM负责控制。ARM端的HTTP服务器通过Linux网络协议栈来处理HTTP请求,并发送压缩视频数据。视频跟踪的应用程序由五个POSIX线程组成,分别是视频捕捉线程,视频跟踪线程,视频压缩线程,显示线程,系统控制线程。视频捕捉线程通过V4L2接口设备驱动从摄像头读取原始视频数据。视频跟踪线程把视频数据送到ARM和DSP的共享缓冲内存,并通知DSP执行跟踪算法。压缩线程负责控制DSP侧的压缩算法并从共享内存中读取压缩数据。视频显示线程从视频缓存中读取视频数据帧,并叠加目标跟踪框,最后通过Frame Buffer设备驱动输出显示。系统控制线程负责响应遥控器和鼠标并执行相应操作。
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对齐。
目标跟踪作为计算机视觉的一个极具挑战性的研究任务,已被广泛的应用在人机交互、智能监控、医学图像处理等领域中。目标跟踪的本质是在图像序列中识别出目标的同时对其进行精确定位。为了克服噪声、遮挡、背景的改变等对目标识别带来的困难,出现了很多的跟踪算法。
因为目标跟踪算法需要处理的数据量大、运算复杂,需要性能强大的处理器才能实时处理。我们选用TI推出的最新产品TMS320DM6446实现算法。TMS320DM6446是一款高度集成的片上系统,集成了可以运行频率高达594MHz的C64x+ DSP核和297MHz的ARM926处理器核。另外它还集成了数字视频所需的许多外部组件,如视频加速器,网络外设及高速外部存储接口。本设计充分利用DM6446的强大运算能力,在DSP内核上实时运行目标跟踪算法。 设计还在ARM处理器上执行多线程应用程序,负责视频采集,显示,网络通信,外围器件控制等工作。
算法介绍
本系统实现的视频跟踪算法可参考文献[1]-[5],整个算法分为基本算法和改进算法两部分。本算法是一种基于模板匹配技术的跟踪算法,即在手工选定或自动选定了待跟踪目标后,提取目标的外观信息作为模板,在后续的视频序列中,将候选图像区域与目标模板进行匹配,将最相似的图像区域作为运动目标当前的位置。在本文中,采用结构相似度,即"归一化互相关系数"作为候选区域与目标模板相似程度的度量标准,其计算公式如下所示:
上式中,f(m,n)和g(m,n)分别为目标模板和候选区域的灰度值矩阵,尺寸为MxN。uf和ug分别为目标模板和候选区域的灰度平均值,然后再求出f(m,n)和g(m,n)的协方差、f(m,n)的方差、g(m,n)的方差后,求出归一化互相关系数。式(1)通过从灰度值矩阵中减去灰度均值,有效地消除了光照给跟踪结果带来的影响。而对于匹配图像区域的搜索,为了达到减少匹配次数从而降低计算量的目的,我们借鉴了视频压缩领域中的三步搜索法(Three Step Search, TSS) 作为最匹配点的搜索算法[2]。
为了增加模板匹配视频目标跟踪算法的鲁棒性,我们在基本算法的基础上实现了改进算法的部分。改进算法具有自适应遮挡处理与模板漂移抑制的能力,能够很好地解决前面提到模板匹配的视频目标跟踪算法需要解决的难题。具体来说,主要有如下四点改进:(1) 抑制漂移的带掩蔽卡尔曼外观滤波算法(Drift-Inhibitive Masked Kalman Appearance Filter, DIMKAF ) [1][3][4] ;(2) 内容自适应渐进式遮挡分析算法(Content-Adaptive Progressive Occlusion Analysis, CAPOA)[1][5];(3) 可变掩蔽模板匹配算法(Variant-Mask Template Matching, VMTM)[1][5];(4) 局部最优匹配鉴定算法(Local Best Match Authentication, LBMA)[1]。 改进后整个算法的流程图如下所示:
图 1 跟踪算法主流程图
算法在Davinci SOC上的实现
DSP平台的选择
DM6446采用ARM与DSP 双核结构,其中ARM子系统搭载297 MHz主频的ARM926 核,DSP部分则采用594 MHz的C64x+DSP核,外围存储均支持256 MB DDR2 RAM和各类存储卡,另外使用了VPSS 子系统丰富的视频前后处理功能,且都配备了完善的外设接口。目标跟踪算法需要做大量运算,DM6446 DSP核强大的运算处理能力保证了算法的实时处理。同时DM6446的ARM核可以进行系统管理,数据读写,网络传输等处理。
我们使用Spectrum Digital公司的DVEVM平台进行算法仿真、原型制作和软件优化。DVEVM?还可实现视频输入/输出连接、网络接口、存储器接口以及标准的子卡连接等。
系统软件框架
整个系统的软件框架如图2如示。DM6446的ARM核运行基于Linux操作系统的应用程序,所用的外围设备都由ARM负责控制。ARM端的HTTP服务器通过Linux网络协议栈来处理HTTP请求,并发送压缩视频数据。视频跟踪的应用程序由五个POSIX线程组成,分别是视频捕捉线程,视频跟踪线程,视频压缩线程,显示线程,系统控制线程。视频捕捉线程通过V4L2接口设备驱动从摄像头读取原始视频数据。视频跟踪线程把视频数据送到ARM和DSP的共享缓冲内存,并通知DSP执行跟踪算法。压缩线程负责控制DSP侧的压缩算法并从共享内存中读取压缩数据。视频显示线程从视频缓存中读取视频数据帧,并叠加目标跟踪框,最后通过Frame Buffer设备驱动输出显示。系统控制线程负责响应遥控器和鼠标并执行相应操作。
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对齐。
实时视频跟踪算法 TI Davinci SOC DSP 相关文章:
- Linux标准趋向统一(11-12)
- 巴西的新电视机顶盒采用意法半导体(ST)的最先进的解码器技术(03-24)
- 基于TMS320C62X DSP的混合编程研究(07-12)
- 展望未来 多核DSP技术不仅仅是小把戏(04-03)
- 嵌入式软件工程师必须知道的:volatile的作用(05-01)
- Linux 时钟管理(06-13)