TMS320DM642在机器视觉中的应用研究
TMS320DM642在机器视觉中的应用研究
目 前,一般机器视觉信息处理平台主要有(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所示。
图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。 (4)存储空间的分配 在进行存储空间分配前必须了解芯片内外的存储空间的大小,编译后的C程序“跑飞”往往是超出存储区访问允许范围造成的;另外,还需注意堆栈的分配,在程序“跑飞”时注意检查是否发生堆栈溢出。 4.1 存储空间的分配 在 本系统中,内存空间包括:DM642的256KB字节的二级缓存L2,可部分或全部作为SRAM存储空间,存取速度快;32MB字节的SDSRAM片外内 存,存取速度慢。内存使用的一个原则是应尽量把数据和代码放入片内内存。但由于片内内存容量的限制,往往不可能将所有数据和代码都放入片内存,而将编程过 程中频繁使用的一些关键数据(如滤波的模板、图像二值化的阈值、图像提取的阈值、门牌倾斜的角度等)放入片内保存。片外SDRAM中主要放置图像数据(如 图像采集的数据等)。 在本系统程序存储器的分配中,capChaAYSpace存放采集的图像的亮度信号Y;capChaACbSpace存放采 集的图像的色度信号Cb;capChaACrSpace存放采集的图像的色度信号Cr;WEIGHT存放小波神经网络训练好的权值;INPUT存放小波神经网络输入值,即特征化后的图像数据;tempYbuffer、tempY1buffer和tempY2buffer主要存储各个算法模块处理 前和处理后的数据。 4.2 系统程序的实现 程序的实现部分主要包括图像采集部分的实现和图像处理与识别算法的实现。 图像采集部分 的程序是通过设置在视频端口控制寄存器(VPCTL)中的TSI(transport stream interface)位和在视频捕获通道控制寄存器(VCxCTL)中的CMODE位以选择视频捕获的模式。本文选择的是8-Bit ITU-R BT.656捕获模式,主要是因为选用的解码芯片TVP5150支持BT.656格式。本文只需要处理YCbCr中的亮度信号Y。图像采集部分主要过程 是:PAL摄像头通过TVP5105解码器产生BT656格式的数据流,然后通过EDMA传送给SDRAM。BT656格式为隔行扫描,每帧实际图像大小 为720×576,每帧分为奇偶两场,奇场的行数范围为0-288,偶场为289-576。为了提高实时性;在本文中只取奇场的数据,即程序只处理0-288行。在识别算法实现部分中,本文列出了图像经过各个算法功能模块的结果。图像显示的设置在CCS中路径为view->graph->image。 下面以门牌号523为例说明基于DSP的图像处理的各个过程:通过摄像头采集原始门牌图像, 其中视频流采用BT.656标准,隔行扫描。每一帧的大小为720×576。在这里只取奇场的数据,即图3(a)的大小为720×288,可以看出图像质 量并没有明显的下降;图3(b)为二值化后的图像,主要是根据直方图信息选取阈值,具有较好的效果;图3(c)为倾斜度校正后的图像;图3(d)为归一化 后的图像,此图像是被放大后的图像,原图像的大小为8X16;图3(e)为特征提取后的结果,本文主要是把数组中的数据提取出来,然后进行编排,从而便于 理解。
实验结果表明本文设计的系统识别单个门牌数字准确率达到100%,识别3个数字门牌识别率为90%以上。 4.3 代码的优化 本文系统中涉 及的识别算法具有数据量大,计算复杂,二重循环多等特点。在没有优化前,系统资源利用率低、运行速度慢、远远没有达到系统实时性的要求。本文通过代码优化 技术[8]使系统具有较好的实时性,具体包括开发C/C++代码、优化C/C++代码和编写线性汇编代码等几个阶段。 5 结束语 本文提出的基于DM642的机器人视觉系统完成了以下基本功能: (1)在走廊中实现机器人的自定位和目标定位功能; (2)在走廊中可以实现对操作者和典型障碍物的识别功能。 本文的创新点主要体现在以下2个方面: (1)实现了基于DSP平台的门牌识别和优化,有效地提高了系统的目标的识别速度; (2)探索了基于图像识别技术、RFID技术、传感器技术相融合的自主移动机器人的机器视觉系统,这种方法有效地提高了系统的可靠性和鲁棒性。 实际应用表明,本文设计的机器视觉系统具有较好的合理性和实用性。