DSP/BIOS环境下的运动目标检测及优化*

2012-09-25 02:59翟文涛盛韬薛冰玢
单片机与嵌入式系统应用 2012年4期
关键词:队列边缘图像

翟文涛,盛韬,薛冰玢

(上海海事大学 信息工程学院,上海 200135)

引 言

在智能监控系统中,人们往往对运动目标感兴趣,要对运动目标进行精确的分析,首先必须有效地提取感兴趣的运动目标。运动目标提取的难点在于如何实时、快速、准确地把运动目标从复杂背景中提取出来。随着DSP技术的发展,新一代高性能DSP的出现使高速实时视频图像处理成为可能。针对视频图像计算复杂度高、数据量大等特点,本文对程序进行了优化,优化后系统运算速度提高,可实现运动目标的实时检测。

DSP/BIOS是DSP开发环境CCS中的一个可裁剪的可抢占式的实时多任务操作系统。在DSP/BIOS环境下编写代码,可以大大降低软件开发难度,提高调试效率。借助CCS提供的多种分析与评估工具,可方便程序开发。

1 系统硬件结构

本文采用瑞泰创新公司的ICETEK-DM642-PCI硬件开发平台。系统的硬件结构如图1所示。DM642外扩了2片SDRAM、1片Flash,分别存储图像数据和固化系统运行程序。通过I2C总线实现视频编解码配置。首先,从摄像头传过来的模拟信号经过SAA7105编码转化成BT.656的YCbCr(4:2:2)复合视频信号。复合视频信号流进DM642视频端口内部的FIFO缓冲区,Y、Cb、Cr三个分量数据分别进入视频端口内3个数据缓冲区内,再由EDMA快速搬移到外扩的2个SDRAM中,从而获得原始视频数据。视频数据经DM642处理后,送回输出视频端口内部的FIFO缓冲区,在合成 YCbCr(4:2:2)复合视频信号后,最后经过SAA7115视频编码器恢复成模拟视频信号,并进行输出显示。

图1 系统硬件结构

2 基于RF5软件框架的程序设计[1-3]

2.1 RF5程序参考框架

RF5框架中,有4个数据处理基本单元,即任务(task)、通 道 (channel)、单 元 (cell)和 标 准 算 法 (XDAIS algorithm)。位于顶层的是DSP/BIOS task。一个task是几个channel的集合,一个channel是几个cell的集合,一个cell是XDAIS算法的封装。

RF5的数据通信单元可以分为任务层数据通信单元和单元层数据通信单元两类。任务级通信主要用到了SCOM消息队列和邮箱。单元级通信是由ICC(Inter_Cell Communication)对象实现的,每—个cell都有一个ICC对象的输入列表和—个输出列表,列表中可有一个或多个输入ICC对象和输出ICC对象。ICC对象用于描述cell读取数据或者写入数据的缓冲区。ICC对象所指向的缓冲区由用户来定义。cell通过ICC对象实现它们之间的数据通信。

2.2 运动目标检测软件框架

主函数主要完成初始化的工作,包括处理器和系统板的初始化(如BIOS环境初始化、CSL初始化、Cache初始化和DMA通道配置),RF-5模块的初始化(如通道初始化以及内部单元通信和传输信息的ICC和SCOM模块的初始化),采集和显示模块的初始化配置等。

在完成上述初始化工作后,系统进入DSP/BIOS调度程序。调度机制将视频处理任务划分为捕获任务函数Tskcapture()、处理任务函数Tskprocess()和显示任务函数Tskdisplay()三个并列优先级的模块。详细的任务间通信情况如图2所示。每一个SCOM队列内部使用一个队列对象(QUE)和一个信号灯对象(SEM),队列对象提供任意大小的数据缓冲区,信号灯指定当前可以对数据进行操作的任务,实现任务之间的数据共享。因此3个任务间的消息传递通过同步通信SCOM模块来实现。3个SCOM 队 列 名 为:fromintoprocess、fromprocesstoout、fromouttoin。首先,捕获任务Tskcapture捕获一帧图像,将采集到的图像信息放入到已创建并打开的SCOM队列fromintoprocess中,处理任务Tskprocess则一直检测是否有消息存在于SCOM队列fromintoprocess,无则一直等待;如果队列fromintoprcess的消息存在,则读取信息,开始通过运动目标检测的算法对原始图像进行处理,然后通知另一个队列fromprocesstoout发送消息到显示任务,显示任务接到队列fromprocesstoout的消息后,显示一帧图像,然后通过消息队列fromouttoin发送消息,捕获任务Tskcapture从消息队列fromouttoin得到消息后,开始下一帧的采集,并把图像信息放到fromintoprocess中。如此这样循环往复,实时性地完成对运动目标的检测。

图2 任务间通信数据流

3 算法及程序优化

3.1 背景差分边缘检测[4-8]

边缘能够勾画出目标物体,含有丰富的内在信息(如方向、阶跃性质、形状等),是图像抽取图像特征的重要属性。从本质上说,图像边缘是图像局部特性不连续性(灰度突变、颜色突变等)的反映,这种特性几乎不受光照变化的影响,可以消除大量冗余信息。根据这些特性,采用背景边缘和实时图像边缘差分方式提取目标边缘像素。采用Sobel边缘检测算子从水平、垂直、45°和135°四个方向进行边缘判定:

ΔG1~ΔG4为(i,j)像素在水平、垂直、45°和135°四个方向的卷积核,取出其中的最大值作为(i,j)的输出:

得到边缘梯度图像后,由式(5)对其进行二值化,其中边缘为“1”,其他情况为“0”:

式中,Ei,j表示图像在(i,j)的二值化值。

上述方法分别对背景帧与当前实时图像帧进行边缘检测,再根据其检测结果计算运动目标边缘像素,对二者进行异或运算:

3.2 基于网格密度的连通域划分

通过上述提取的目标像素,含有各种各样的噪声,目标边缘区域可以认为是独立的连通域,而噪声则相对离散。根据这个特性,可以把噪声和目标分开,具体步骤如下:

①把提取的目标像素划为M×M的网格,每个网格有N×N个像素。计算每个网格密度。

②设置阈值T,把网格密度大于T的设置为目标,小于阈值的判定为背景。

③根据四连通域判定原则,依次对每个网格进行判定标定,并记录运动目标的面积及其位置。

3.3 算法的优化[9-10]

DSP可以采用C语言、线性汇编语言或者两者的混合编程。合理利用DSP的硬件结构,对程序进行优化,可以大幅度提高程序的执行速度。程序的优化策略主要包括:

①缓存Cache结构优化,合理分配Cache大小,把256KB大小的二级缓存L2配置为Cache和SRAM,L2的一半空间用于片上内存,另一半当做Cache。

②使用编译器编译优化选项,打开软件流水,循环展开,尽可能地展开内循环,使可能并行的指令数增加,从而改变软件流水线编排,对代码中的循环作优化。

③使用DATA_ALIGN数据对齐指令,DSP对数据进行读取时是整行读取。所以存储数据时,应32位边界对齐,这样在读写字节、半字、字或双字时,一个时钟周期可以作多次存储器访问。合理使用DATA_ALIGN可以很大程度上增加程序的并行性。采用如下的伪指令:

#pragma DATA_ALIGN(symbol,constant)

symbol是需要对齐的变量名,constant是所需对齐边界值,必须是2的整数幂。

④数据类型调整,选择合适的数据类型,同时保证算法结果的正确性,不会出现溢出现象。使用int型,避免使用较长的数据类型。

⑤用线性汇编和汇编语言改写耗时长的部分。线性汇编程序是C语言能够直接调用的函数,其编译出的代码比直接用C语言写的效率高。

⑥用逻辑运算、加/减/乘代替除运算。

4 实验分析

利用CCS开发环境的DSP/BIOS实时操作内核,基于RF5参考框架开发运动目标实时性检测的系统,能够很好地检测出运动目标。该检测系统能够很好地去除光线的影响,减小噪声对检测结果的影响。

视频处理图片大小为720×576,格式为YUV(4:2:2),所采取的算法只对Y分量处理,截取的目标检测结果如图3、图4所示。

开发板的频率为600MHz,即一个时钟周期为1.67 ns。通过优化后,实验测得检测单个目标平均指令周期为21 607 200,所耗费的时间为36ms。通过数据统计可以看出,系统能够实现运动目标的实时检测。

结 语

DSP/BIOS是针对TI公司DSP芯片的一种优良的嵌入式实时操作系统。使用它的关键在于进程的合理规划,充分利用其内置的资源模块对程序的效率加以优化,提高代码的执行效率。系统采用多线程的框架,使程序结构更加清晰,便于DSP/BIOS的管理和维护。

[1]赵杰,孙连明,杨永敏,等.基于DM642的嵌入式实时图像处理系统设计[J].制造业制动化,2008,30(9):4-7.

[2]梁伟伟,李玉山.基于RF5的 MPEG-4编解码器的移植与实现[J].器件与应用,2009,33(10):24-27.

[3] 陈凯平,林岳松,朱胜利.基于RF5的被动声探测融合平台[J].机电工程,2009,26(3):44-46.

[4]连静,王珂,曹丽丹.具有边缘保持特性的嵌入式图像压缩算法[J].中国图象图形学报,2007,12(4):593-595.

[5]段瑞玲,李庆祥,李玉和.图像边缘检测方法研究综述[J].光学技术,2005,31(3):415-419.

[6]李宏贵,李兴国.一种改进的梯度算子[J].中国图象图形学报,2003,8(3):253-255.

[7]孙瑾,顾宏斌,郑吉平.一种基于梯度方向信息的运动目标检测算法[J].中国图象图形学报,2008,13(3):572-579.

[8]黄剑玲,郑雪梅.一种基于边缘检测的图像去噪优化方法[J].计算机仿真,2009,26(11):260-263.

[9]邹垚,张超.基于DSP的人脸识别算法实现与优化[J].计算机应用,2010,30(3):854-856.

[10]李斌,李功燕,许世颐,等.DSP体系结构下视觉监控优化方法研究[J].算机工程与应用,2008,44(34):231-238.

猜你喜欢
队列边缘图像
巧用图像中的点、线、面解题
有趣的图像诗
队列里的小秘密
基于多队列切换的SDN拥塞控制*
在队列里
丰田加速驶入自动驾驶队列
一张图看懂边缘计算
遥感图像几何纠正中GCP选取
趣味数独等4则
在边缘寻找自我