日期
05/11
2012
咨询
  • QQ扫一扫

  • Vision小助手
    (CMVU)

基于嵌入式系统的图像识别系统研究
收藏
2012-05-11 10:23:05来源: 中国机器视觉网

    领域:嵌入式系统
    摘要:信息技术的飞速发展,人们对多媒体图像处理的要求越来越迫切,文章通过借鉴嵌入式系统在信号处理、电子技术和计算机等领域的成功应用经验,在分析机器视觉系统特点的基础上,将机器视觉和嵌入式技术相结合,设计一种基于嵌入式处理器TMS320C6205的图像识别系统。介绍了系统工作原理和特点,给出了系统硬件结构图和软件的实现方案,实验结果显示,图像识别系统在光照比较好的条件下,能取得令人满意的效果。
    关键词:嵌入式系统 ;TMS320C6205 ;图像识别 ;pSOS+
    由于数字计算技术及相应的信号处理技术的飞速发展,近几十年来数字图像处理技术发展非常迅速,并在科学研究、工农业生产、资源的遥感探测、煤矿井下安全、医疗卫生、航天探索等各个领域内应用越来越广泛。在以往的嵌入式设备中,由于受到处理器运算速度及内存大小等硬件条件的限制,不适合对图像进行复杂的处理。目前,随着芯片技术特别是低价位多功能处理器的发展,在嵌入式系统中对视频进行处理成为可能。针对嵌入式系统领域的这一新特点,提出了一种在嵌入式系统上进行图像识别处理的方案。
1.嵌入式系统中图像识别特点
   
机器视觉是目前智能机器人领域中的研究热点之一,涉及光电子学、图像处理、模式识别及计算机技术等诸多学科领域,内容极为广泛。机器视觉中图像处理与目标识别的特点是处理数据量大、计算复杂,对算法的实时性和精度要求高。
    在嵌入式系统中进行图像识别对内存有严格要求。因为图像的信息量本来就很大,而且在对图像进行识别时还要开辟多个缓冲区来保存连续的几帧图像信息和中间的运算结果信息等[1]。如一幅352×288,24位色图像约300KB空间,在对视频流中目标进行识别时最少要开辟三个缓冲区,其中两个缓冲区用来保存从视频流中得到的图像,一个缓冲区个来保存中间计算结果。此外还要为操作系统预留足够内存空间。便于系统的进一步升级,系统采用了32M内存。
2.系统硬件设计方案
   
系统选用TMS320C6205(简称6205)作为处理器,EMIF接口扩展了ASRAM和FLASH。存储图像的ASRAM选用容量为8Mbits的GS78132B,其存储格式为256K×32bits,可以存储两幅512×512×16bits的图像;存储运算参数的ASRAM也选用GS78132B,用于存储神经网络的训练数据、滤波器系数和运算过程的中间结果。它们在EMIF中的存储器空间分别为CE0和CE2。FLASH选用容量为8Mbits的AM29LV800,用于存储引导程序和应用程序,它在EMIF中的存储器空间为CE1。6205用McBSP与SAA7111的I2C总线接口连接(将McBSP设置成通用I/O口,用软件实现I2C协议),通过I2C对SAA7111进行控制。SAA7111输出的数据直接存储到GS78132B,存储过程中的地址和控制信号由FPGA根据SAA7111的时序产生。
    整个嵌入式图像识别处理系统主要由FLASH、SDRAM,TM1300,CCD摄像头和视频编码器SAA7111组成。
    图像采集前端处理器采用PHILIPS公司的SAA7111,它是Philips公司的以PC为平台的可编程视频输入处理芯片。利用其同步信号vref、行同步参考信号href、奇偶场标志信号rtso、像素时钟信号llc2就可以完成图像信号的抽取、数据线服用以及中断逻辑的产生。SAA7111解码输出的是720×576分辨率的图像,通过逻辑控制,可以分别采样720×576,360×288,180×144等格式图像,从而满足不同信道的应用需求。同时,通过对SAA7111的输出信号进行逻辑综合产生的DSP的DMA触发事件,保证图像数据的实时不丢失采集存储。
    以处理器TMS320C6205和视频解码器SAA7111为核心集成一个高性能的多媒体处理系统。其系统配置图。
3.系统软件实现方案
   
系统中采用pSOS+实时操作系统。pSOS+内核是一个高效的微内核,用来调度、管理和分配资源,协调各种异步的任务和事件[3]。TMS320C6XXX系列具有丰富的芯片支持函数库(ChipSupport Library),处理器有一个稳定的、开放的软件开发环境(SDE:Software Development Environment),因此我们可以运用C/C++高级编程语言开发高效的多媒体应用程序。应用程序在SDE环境下开发的,其主要是对实时视频中的运动目标进行识别和提取。整个流程分为系统初始化,背景提取,目标识别和识别结果处理四个步骤。
3.1 系统初始化
   
pSOS+系统中,一个应用程序就是一个任务。任务要管理自身的系统资源,如处理器、输入输出、内存等。应用程序需要对系统硬件资源进行初始化,系统初始化的主要源代码:
    procGetCapabilities(&cap);
    _Cache_Copyback((char *)viBuf[i].Y,szY);
    IcpOpen(&icpInst,&icpInstSup);
    IcpLoadCoff(icpInst,NULL);
    ViGetAdapterVideoStandard(viInst,adapterType,0,&videostandard);
    ViInstanceSetup(viInst,&viInstup);
    ViYUVSetup(viInst,&viYUVInstSup);
    初始化代码主要是返回处理器的信息;内存拷贝;为ICP(图像协处理器)指派一个实例,为操作准备ICP;用过滤系数加载ICP;得到解码器上指定适配器的颜色标准;设置和改变实例参数;初始化主板上的解码器,设置和改变YUV操作模式的参数。
3.2 背景提取
   
背景图像作为图像识别的参考帧,选择一幅高质量的背景图片对整个系统的识别准确率有很大影响。在上电时系统不够稳定,从摄像头采集的图像数据噪声很大,用均值滤波(求和取平均)的方法来除去它,得到稳定的背景图像。系统初始化后隔一秒从摄像头提取五帧图像,对其取平均,得到均值图像。然后再从摄像头取一帧图像(即当前帧)与均值图像相减得差值图像。根据差值图像的特点可判断系统是否已开始正常工作。背景提取流程如图2所示。
在没有运动目标的情况下差值图像的值应该全为零,由于图像有噪声,所以系统的实际差值会比较小。因此设定一个阈值跟这些差值进行比较,如果超过阈值的差值点数小于整幅图像点数的千分之一,则认为噪声信号不是很严重,当前帧可以作为背景,否则表明从摄像头进来的图像受干扰严重,不能用来进行处理,要重复以上过程,直到取得满意的背景帧。
3.3 图像识别
   
图像识别是从运动视频中识别出活动目标。为了改善图像输出,对从摄像头取得的图像进行灰度变换。灰度变换就是通过一个斜率k来作两个区域的线性变换。如果图像偏暗(灰度集中在较暗区域),使斜率K>1来改善,如果图像灰度集中在较亮的区域而使图像偏亮,则使k<1来改善。
    使模糊的图像变得更加清晰,图像中物体的轮廓更加明显,需要对图像进行锐化。图像锐化有微分法和高通滤波法。采用微分法的梯度锐化直接用梯度值来表示图像。这样在图像变化缓慢的地方,其值很小,而在图像线条轮廓等变化较快的地方,其值很大。
    要得到运动物体的轮廓,必须对视频中的连续帧进行处理。应用程序对当前捕获帧和背景图像都进行灰度变换、图像锐化后;对它们作差分,得到差值帧;再对差值帧进行中值滤波和二值化处理得到二值化图像。中值滤波会使图像变的较模糊,但它同时也能抑制干扰较大的图像噪声,为进一步的处理作准备。二值化通过设定阈值来消除干扰较弱的图像噪声。图像中可能会有一些受干扰严重,相对孤立的点,这些点如果存在,对下一步求运动物体矩形框会产生不良的影响。解决方法是对二值化图像进行扫描,如果其中某点周围的八个点都为黑,则把该点值设为零,这样就除去二值化图像中的一些零散点。把经过处理后的二值化图像进行聚类,即相同的点成一类,记下点的坐标,即点在图像数组中的位置。然后遍历图像中代表着运动物体的点的坐标,算出运动物体的最大矩形框,记下框高。至此,活动视频中的运动目标就用矩形框锁定。图像识别流程如图3所示。
3.4 识别结果处理
   
实际应用中,选择感兴趣的、效果最好的、最重要的目标图片保存。根据系统中可用存储器的大小和存储目标图片的质量,确定系统所存储图片的数量。图像识别系统感兴趣的目标是人,同时要兼顾目标图像足够的清晰度,所以选择活动目标高度至少要大于1/4整幅图像高度的图像帧进行保存。在存储器可用空间,为了更新目标图像,采用的方法是从所有已保存的图像中去掉目标框高最小的图像。识别结果处理流程。
4.实验结果
   
图像识别系统实验过程如图5所示,识别结果显示,系统在光照比较好的条件下对活动视频中的人、小车等运动目标识别比较成功,能取得令人满意的效果。但在光线很暗,或者雷雨天,识别效果不很理想,进一步完善识别技术将是深入研究的课题。

摘自《自动化博览》

为你推荐