×

DM642在机器视觉中的应用分析

消耗积分:1 | 格式:rar | 大小:0.3 MB | 2017-10-20

分享资料个

目前,一般机器视觉信息处理平台主要有(1)基于通用PC :主要是用软件实现图像处理和识别,能够提供中等的图像处理和识别能力,但是要占用CPU过多的处理能力;(2)基于通用DSP芯片:优点是设计简便、灵活,特别适合于新型产品的研究开发;(3)基于可编程FPGA:采用的是硬件描述语言(VHDL),用其开发图像处理算法难度较大。
  机器视觉中,图像处理与识别技术的特点是处理的数据量大,计算复杂,计算中间结果精度要求高,具有大量的乘法运算,并且在实现机器人视觉方面实时性要求较高;而DSP具有运算速度快,精度高,有专门的硬件乘法器,可实现单周期乘法与累加的运算等特点,所以特别适合运用在对实时性要求较高的场合。DM642是TI公司推出的专门用于处理视频图像和语音的微处理器,具有速度快,并行处理能力强等特点,非常适合于图像实时地处理与识别。
  1 TI DM642 DSP简介
  DM642是德州仪器(TI)公司最新推出的针对多媒体处理领域应用的DSP。DM642建立在C64x DSP核心架构基础上,采用德州仪器公司开发的第二代高性能长指令架构VelociTI.2TM,其每个乘法器对于每个时间周期内可执行两个16位乘以16位的乘法或者四个8位乘以8位的乘法。另外六个算术逻辑单元,在每个时间周期内可执行两个16位或8位的加减、比较、移位等运算。在并行架构下,每个时间周期最高可执行八个指令,且在600MHz频率下,DM642每秒可执行24亿次16位的乘累加或48亿次8位的乘累加。在这种强大运算能力下,对于复杂度较高与数据量较大的视频编码以及图像处理可进行实时的数据运算,并提供相关的指令集,例如图像与视频处理库(Image and Video Processing Library),让开发者能够更加容易的开发图像或视频的相关产品[1,2]。
  2 系统的总体设计思路
  由于图像识别算法的设计需要大量的测试和分析,而直接在嵌入式环境下对其进行开发以及调试都相对比较困难,因此,本文针对DSP开发图像识别算法,总体设计思路和开发步骤为视觉处理的相关算法首先在PC平台上进行验证和实现,进而移植到DSP平台上,并加以优化。
  2.1 系统的硬件结构设计
  本文硬件平台系统原理框图如图1所示:摄像机选用普通的PAL制式彩色摄像机,解码芯片采用TVP5150;外扩2个大小为4MX32位的SDRAM。外扩的FLASH大小为4MX8位;RS-232电平转换芯片选用TL16C752BPT;TVP5150A是一种超低功耗的NTSC/PAL/SECAM的视频解码芯片,可以把NTSC/PAL/SECAM转换成8-bit ITU-R BT.656格式[3,4]。
  
  图1 系统硬件原理图
  2.2 系统的软件流程设计
  下面以机器视觉中比较典型的问题――门牌号识别为例,介绍DM642在机器视觉中的应用。门牌号识别算法主要功能模块如图2所示。
  DM642在机器视觉中的应用分析
  图2软件功能模块流程图
  3 视觉相关算法在PC平台上的验证与实现
  门牌号识别算法方案确定后,需要在PC平台上进行验证,测试其实际效果,调整相关参数,为算法移植到DSP平台上实现做好准备。本文使用集成开发环境Visual C++,充分利用微软基本类库(MFC),从而加快开发速度、提高开发效率。本文为了测试识别算法,开发了基于MFC的测试平台,前端的图像采集部分主要利用VFW。小波神经网络的数字样本通过文件菜单加载进去,训练后的输入层到隐含层的权值保存在wih.txt中,隐含层到输出层的权值保存在who.txt中。
  4 视觉识别算法在DSP平台上的实现
  在上文算法验证基础上,可进一步实现基于DM642的门牌识别系统。根据PC平台与DM642平台的不同,程序移植主要注意以下几个问题[5-7]:
  (1)删除或替换DSP不支持的C函数
  PC平台上所有使用MFC的代码一律删除,因为DSP不支持任何MFC的类和对象。
  (2)变量的存取方式调整
  在DM642中程序按段存储,主要包括.text、.cinit、.switch、.bss、.far、.stack、.system等。CCS的C编译器支持两种内存模式:大内存模式和小内存模式。不同的内存模式影响对.bss段变量的访问。程序中的全局和静态变量都分布在.bss段内,小内存模式下其总和不超过32KB。由于程序的全局变量和静态变量已经超过32KB,所以应采用大内存模式,即在编译选项中设置为-ml3。
  (3)更改数据类型
  PC机平台上long型是32位的,而DSP的long型是40位的。因为DM642通用寄存器为32位,访问40位数据时需要对两个寄存器进行读写操作,从节省程序运行时间的角度考虑,应把程序中所有的long型改成INT32或UINT32。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !