新闻中心

EEPW首页>消费电子>设计应用> 基于DM642的运动目标检测系统设计与实现

基于DM642的运动目标检测系统设计与实现

作者: 时间:2010-11-03 来源:网络 收藏

此硬件平台从摄像机获取模拟图像,经过SAA7115解码得到标准的。BT.656格式的YUV4:2:2数字图像码流,然后通过DM642的EDMA功能将码流暂存到SDRAM,再用算法进行处理后,然后通过DM642的EDMA功能送入到SAA7105进行解码,经过CVBS引脚输出,这样系统的处理结果就可以在显示器上实时地显示。
2.2 算法的DM642实现
系统的软件在TI提供的集成开发环境CCS完成,编程用C语言和汇编语言实现,软件采用TI推荐的RF-5架构,采用了三个线程tsk_inpu-t、tsk_process、tsk_output。
软件的执行流程如下:
(1)TMS320DM642的初始化。包括初始化BIOS、CSL、设置CACKE;
(2)初始化RF-5模块。用CHAN_init,ICC_init,SCOM_init分别初始化CHAN模块、ICC模块、SCOM模块;
(3)DSP/BIOS根据操作系统的调度规则环调度执行tsk_input、tsk_process、tsk_output三个线程。其中tsk_inpufi通过按照顺序调用FVID_create、FVID_control、FVID_aUoc函数实现对FVID驱动的调用,打开输入通道,实现得到SAA7ll5获取的BT.656格式的YUV422数字视频码流。tsk_process负责对tsk_input线程获取的数字图像进行运动图像检测算法的处理,其中要调用到上一节所述的算法函数,经过处理,运动目标被分割出来。tsk-output负责调用FVID_create、FVID_control、FVID_alloc函数,打开输出通道实现对已经分割处理的数字视频流通过SAA7105输出,在显示器上予以显示。这三个线程在DSP/BIOS的调度下循环并行运行,三个线程之间的数据交换通过SCOM模块实现。
上述程序中,核心程序为tsk_process线程,其主要代码如下:
While(1)
{……
Background()://获取背景并根据条件更新
Diff_picture()://背景与当前图像差分
Otsu_binary(): //由改进的大津法进行阀值分割并二值化
Filter_obitct()://对二值化图像进行滤波得到运动的物体,即为检测的结果。
……
}
2.3 软件优化
应用TMS320DM6425开发运动目标检测系统时,为保证检测结果的高效、实时,软件代码的优化显得尤为重要。基于TMS320DM642编程时,我们参照该芯片的特点在编写算法时进行了如下的优化:
(1)使用流水线技术。采用编译选项-o2、-o3,充分利用软件流水线方式提高运行效率。
(2)对寄存器进行优化,通过CCS自带的性能分析工具Profiler对调用频率高的C语言代码采用汇编语言改写,并采用汇编优化器进行优化,使代码的执行效率得到最大限度提升。
2.4 实验结果
基于DM642的运动目标检测系统实验结果如图3所示。

本文引用地址://m.amcfsurvey.com/article/166355.htm



3 结论
本文采用TI的专用图像处理芯片TMS320DM642构建硬件平台,采用背景差分法来检测运动物体,采用大津法获取自适应阀值,并按阀值取值来判断是否有物体运动,这样简化了后续的形态学处理,然后再对差分图像进行二值化处理,最后用形态学处理消除孤立的点,经过试验,本文的运动检测系统有很强的适应能力,能避免背景死锁情况,并能最大程度抑制拖影和空洞现象的产生。


上一页 1 2 3 下一页

关键词:编解码器

评论


相关推荐

技术专区

关闭