文献标识码: A
文章编号: 0258-7998(2011)02-0116-04
为了使机器人替代人类执行简单而重复的任务或在危险环境中作业,制作了大量机器视觉系统进行试验。但是所建立的机器视觉检测与处理系统,仅局限于对人脑处理图像的低级模仿,而对图像的前期处理则要进行大量的数学运算,占用了大部分系统资源,这使机器人系统的反应速度非常缓慢,远远达不到像人类一样的反应速度。
目前,计算机所使用的中央处理器通常为传统的冯·诺依曼体系结构[1-5],该体系结构为串行工作,虽然可以增加流水线深度提高中央处理器处理速度,在流水线上实现指令级并行,但是在同一时刻只能有一个运算结果输出给数据总线。哈佛体系结构相对冯·诺依曼体系结构有所改进,取指令与取数据同时进行,但其运算结果还是串行输出,所以海量图像数据处理的瓶颈限制了图像处理技术与机器视觉技术领域的发展,只能在精简算法、减少运算量方面着手以加快图像处理速度。而流处理器可以实现数据级、指令级、任务级的并行,根据图像像素点之间相互独立与数据类型一致的特点,利用流处理器制作的图像并行处理系统平台,可以通过并行的数据运算来提高图像处理的速度,从而提高整个机器人系统的反应速度。
针对现有图像处理方法存在运算瓶颈的不足,本文提出了一种基于流处理器的图像并行处理系统。该系统采用Storm-1流处理器作为图像并行处理平台,分析了现有灰度图像处理算法的并行性,并根据所建立的流处理器程序模型将算法进行流化,以适应流处理器并行运算的硬件体系结构,从而实现了图像数据处理的并行运算,加快了图像灰度变换速度。
1 流处理器
流处理器体系结构是一个新兴的体系结构形式,与基于冯·诺依曼体系结构的传统处理器部分体系结构相似,两种体系结构的比较如图1所示[6]。传统的处理器要对零散、无规律的数据进行运算处理,数据的运算和存取操作必须紧密耦合,访存操作占据大量系统资源。其体系结构最大特点是处理器内部大部分面积被用作放置一级、二级缓存,而计算单元只占据芯片较小面积。流处理器其运算单元占整个芯片面积较大,其数量也远远多于传统处理器,而缓存面积较小,其容量也低于传统处理器。在数据处理方面,流处理器是将操作数据定义为流,数据为同构有序的流动与处理,数据运算和数据存取分离,使访存开销减小,其高执行效率和并行计算的特点适用于图像处理与机器视觉领域[7]。
2 图像并行处理系统
为了增强机器人系统的互动性与实时性,实现图像数据的高速并行处理,采用SPI(Stream Processor Inc)公司的Storm-1系列的SP16HP-G220流数字信号处理器作为系统中央处理器[8],其体系结构如图2所示。该处理器为SoC级流处理器,其工作频率为700 MHz,每秒可进行1 120亿次32位乘加操作。System MIPS为流处理器主控制核心,负责系统的初始化、任务调度与I/O口驱动等整体操作。DSP子系统以一个32 bit的RISC处理器作为系统控制器,负责将需要执行运算的数据进行流化传送给数据并行处理单元(DPU)。DPU是流处理器的计算核心,进行并行图像数据运算。该流处理器的DPU拥有16个计算簇,每个计算簇拥有一个16 KB的寄存器,组成256 KB的片上存储器,计算簇中含有5个32位乘加运算器,计算簇通过DPU Dispatcher硬件完成流的导入与导出操作。I/O子系统拥有108个高速I/O接口用于视频采集、传感器通信和数据交换;PCI接口支持66 MHz/33 MHz数据总线;内存控制单元支持DDR1和DDR2内存,传输速率为666 MHz,最大支持2 GB内存寻址空间。
图像并行处理系统主要进行图像处理工作,解决图像数据处理运算速度瓶颈的问题,为机器人主控系统及其执行机构提供运行数据支持,其机器视觉系统结构如图3所示。该系统由CCD传感器作为图像并行处理系统的输入,图像并行处理系统作为机器视觉系统的运算处理核心进行高速并行图像处理,处理后将数据传送给机器人的主控系统进行相应操作。
3 流处理器程序模型
根据流处理器硬件体系结构,流程序模型分为流级程序模型和核心级程序模型[9-11],分别运行在DSP子系统与数据并行处理单元。流级程序负责控制标量处理器、流控制器和片外存储器,并且进行数据流化与流组织输入输出;核心级程序负责进行数据并行计算,根据数据处理的复杂程度,将运算处理过程分为一个或多个核心子程序。
3.1 流级程序模型
数据流的运算对流级程序是透明的,流程序不对数据流中的信息进行实际的运算操作。流级程序首先在初始化时将需要操作的数据定义为流,然后将数据流加载到数据并行处理单元,并按照算法调用核心级程序对数据流进行操作,最后通过计算簇寄存器输出与存储流数据,图4所示为流数据输入给计算簇的示意图。图5为流级程序模型,spi_load和spi_stroe为Storm-1系列流处理器关键词,其功能为加载流与存储流。format和encode为调用核心级程序,在数据并行处理单元中执行。
3.2 核心级程序模型
在数据并行处理单元中运行的程序为核心级程序,该程序负责对输入的流数据进行密集的数学运算。核心级程序的编写与应用有紧密耦合关系,不同的算法应用有不同的程序模型与之对应,但其主要思想为挖掘算法的并行性。当流级程序将组织好的数据流输入给数据并行处理单元后,核心级程序首先进行常数设置和参数读取等操作,然后对输入流根据算法进行运算等操作,最后向计算簇寄存器写入流数据结果。
4 灰度变换及其算法流化
由于图像处理算法众多,其算法结构差别较大,因此,选取图像处理中具有代表性的灰度变换进行并行性分析与算法流化。图像的灰度变换过程就是将彩色图像变换为黑白图像,因为灰度图像更加容易进行图像分析与运算,所以机器视觉系统在通过CCD传感器采集到彩色图像后的第一步预处理就是将其变换为灰度图像。灰度变换方程如下:
Xrgb=0.299 R+0.587 G+0.114 B (1)
其中,Xrgb为图像的灰度值,R、G、B分别为RGB图像的三个分量值。
原始的灰度处理方法是将图像看成一个二维数组F(i,j),对图像按照从左到右,从上到下的顺序扫描,在扫描的过程中逐点对各像素进行灰度变换,每次扫描过程之间没有任何相关性,并且输入和输出数据之间也没有联系,所以在处理的过程中各像素点是相互独立的,没有数据相关性,因此该算法具有良好的并行性。根据式(1),每进行一次灰度变换,需要进行3次乘法运算操作和2次加法运算操作,将该算法固化到计算簇中,可在3个时钟周期完成一个像素的灰度变换操作。将初始化中定义为流的图像数据加载到所有计算簇中,即完成算法的流化等处理操作。其加载形式如图4所示。通过对算法流化开发算法程序的并行性,减少访存次数来提高整个算法程序的执行效率。
对灰度变换模型与算法程序并行性的分析,可将整个灰度变换分解为3个计算核心组成核心级程序,如图6所示,整个计算核心程序固化在数据并行处理单元的计算簇中。首先将流级程序定义的流图像数据加载到并行处理单元的流数据输入端口作为输入流,计算核心1在完成初始化过程后对顺序流过的数据进行并行计算,计算完成后流出计算核心1,并以中间流的形式流入计算核心2;然后通过类似操作完成整个流图像数据的灰度变换;最后计算核心3将输出流存储到计算簇寄存器中供流级程序使用。
5 实验仿真与分析
5.1 仿真系统及实验样本
为了对流化算法进行量化分析和对比实验以验证其优越性,建立了一套实验仿真系统,采用Intel Pentium Ⅲ作为中央处理器,处理器主频为733 MHz,内存为256 MB,操作系统为Windows XP SP3,利用MATLAB 7.0软件构建了仿真对比实验平台。仿真系统以SP16HP-G220流数字信号处理器为基准建立了仿真系统模型,模型内部含有16路计算簇与该流处理器相对应,并将流化完成的灰度变换程序写入该仿真模型中进行仿真实验。实验样本如图7中的(a)、(c)、(e)、(g)、(i)所示,其图片像素大小分别为500万、200万、78万、48万、30万。通过使用不同的处理器处理实验样本进行对比实验,实验分别仿真传统处理器与流处理器对实验样本进行灰度变换,由于仿真模型的预处理部分都是采用冯·诺依曼体系结构指令集,所以只记录传统处理器运行普通程序与流处理器运行流程序处理不同实验样本时算法部分操作所消耗的时间,最后对数据进行分析得到流处理器相对于传统处理器的算法运算加速比。
5.2 灰度变换实验结果分析
灰度变换实验结果如图7中(b)、(d)、(f)、(h)、(j)所示,传统处理方法与流化算法处理图像结果相同。表1为灰度变换实验结果,记录了三幅不同尺寸的图片分别使用传统处理器与流处理器进行灰度变换操作时算法部分程序所消耗的时间。
本文针对机器视觉系统中图像处理计算数据量大、处理速度慢等问题,设计了一种基于流处理器的图像并行处理系统。该系统采用Strom-1系列SP16HP-G220流数字信号处理器作为并行处理系统核心,根据其硬件体系结构建立了流处理器程序模型,并参考图像处理实际需求选取具有代表性的灰度变换进行了算法并行性分析与流化,编写了流程序与传统程序进行了对比仿真实验。图像并行处理系统与传统图像处理系统处理灰度变换其算法部分最大加速比为200。通过实验表明,灰度变换算法在流处理器上可以获得较高的性能加速比,反映出流处理器在图像处理领域的巨大优势,同时也证明了该图像并行处理系统适用于高密度数据运算的机器视觉系统,能够满足机器人对信息处理时实性的需求,并为相关领域的应用提供借鉴。
参考文献
[1] KHILANY B, DALLY W J, CHANG A, et al. VLSI design and verification of the imagine processor[C].Proceedings of the IEEE International Conference on Computer Design. Freiburg, Germany: IEEE, 2002:289-294.
[2] RAMAN S K,PENTKOVSKI V, KESHAVA J. Implementing streaming SIMD extensions on the Pentium III processor[J]. IEEE Micro, 2000,20(4):47-57.
[3] CLARK L T, HOFFMAN E J, MILLER J, et al. An embedded 32-b microprocessor core for low-power and high-performance applications[J]. IEEE Solid State Circuits,2001,36(11):1599-1608.
[4] KAPASI U J, RIXNER S, DALLY W J, et al. Programmable stream processors[J]. IEEE Computer, 2003,36(8):54-62.
[5] SAKURAI M, NAGATA H, YAMADA M, et al. A transport stream processor for HDD recording and playback of HDTV signal[J]. IEEE Transactions on Consumer Electronics, 2002,48(4):810-815.
[6] TENLLADO C, SETOAIN J, PRIETO M, et al. Parallel implementation of the 2Ddiscrete wavelet transform on graphics processing units: filter bank versus lifting[J]. IEEE Transactions on Parallel and Distributed Systems, 2008,19(3):299-310.
[7] CHAI S M, CHIRICESCU S, ESSICK R, et al. Streaming processors for next-generation mobile imaging applications [J]. IEEE Communications, 2005,43(12):81-89.
[8] YANG X J, YAN X B, XING Z C, et al. Fei Teng 64 stream processing system: architecture, compiler, and programming[J]. IEEE Parallel and Distributed Systems,2009,20(8):1142-1157.
[9] KHAILANY B, DALLY W J, KAPASI U J,et al. Imagine: media processing with streams[J].IEEE Micro, 2001,21(2):35-46.
[10] KHAILANY B, WILLIAMS T, LIN J, et al. A programmable 512 GOPS stream processor for signal, image, and video processing[J]. IEEE Solid State Circuits, 2008,43(1):202-213.
[11] CHEN J C, CHIEN S Y.CRISP: coarse-grained reconfig-urable image stream processor for digital still cameras and camcorders[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2008,18(9):1223-1236.