文獻標識碼: A
文章編號: 0258-7998(2011)02-0116-04
為了使機器人替代人類執(zhí)行簡單而重復的任務或在危險環(huán)境中作業(yè),,制作了大量機器視覺系統(tǒng)進行試驗,。但是所建立的機器視覺檢測與處理系統(tǒng),僅局限于對人腦處理圖像的低級模仿,而對圖像的前期處理則要進行大量的數(shù)學運算,,占用了大部分系統(tǒng)資源,,這使機器人系統(tǒng)的反應速度非常緩慢,遠遠達不到像人類一樣的反應速度。
目前,,計算機所使用的中央處理器通常為傳統(tǒng)的馮·諾依曼體系結構[1-5],,該體系結構為串行工作,雖然可以增加流水線深度提高中央處理器處理速度,,在流水線上實現(xiàn)指令級并行,,但是在同一時刻只能有一個運算結果輸出給數(shù)據(jù)總線。哈佛體系結構相對馮·諾依曼體系結構有所改進,,取指令與取數(shù)據(jù)同時進行,,但其運算結果還是串行輸出,所以海量圖像數(shù)據(jù)處理的瓶頸限制了圖像處理技術與機器視覺技術領域的發(fā)展,,只能在精簡算法,、減少運算量方面著手以加快圖像處理速度。而流處理器可以實現(xiàn)數(shù)據(jù)級,、指令級,、任務級的并行,根據(jù)圖像像素點之間相互獨立與數(shù)據(jù)類型一致的特點,,利用流處理器制作的圖像并行處理系統(tǒng)平臺,,可以通過并行的數(shù)據(jù)運算來提高圖像處理的速度,從而提高整個機器人系統(tǒng)的反應速度,。
針對現(xiàn)有圖像處理方法存在運算瓶頸的不足,,本文提出了一種基于流處理器的圖像并行處理系統(tǒng)。該系統(tǒng)采用Storm-1流處理器作為圖像并行處理平臺,分析了現(xiàn)有灰度圖像處理算法的并行性,,并根據(jù)所建立的流處理器程序模型將算法進行流化,,以適應流處理器并行運算的硬件體系結構,從而實現(xiàn)了圖像數(shù)據(jù)處理的并行運算,,加快了圖像灰度變換速度,。
1 流處理器
流處理器體系結構是一個新興的體系結構形式,與基于馮·諾依曼體系結構的傳統(tǒng)處理器部分體系結構相似,,兩種體系結構的比較如圖1所示[6],。傳統(tǒng)的處理器要對零散、無規(guī)律的數(shù)據(jù)進行運算處理,,數(shù)據(jù)的運算和存取操作必須緊密耦合,,訪存操作占據(jù)大量系統(tǒng)資源。其體系結構最大特點是處理器內部大部分面積被用作放置一級,、二級緩存,,而計算單元只占據(jù)芯片較小面積。流處理器其運算單元占整個芯片面積較大,,其數(shù)量也遠遠多于傳統(tǒng)處理器,,而緩存面積較小,其容量也低于傳統(tǒng)處理器,。在數(shù)據(jù)處理方面,,流處理器是將操作數(shù)據(jù)定義為流,數(shù)據(jù)為同構有序的流動與處理,,數(shù)據(jù)運算和數(shù)據(jù)存取分離,,使訪存開銷減小,其高執(zhí)行效率和并行計算的特點適用于圖像處理與機器視覺領域[7],。
2 圖像并行處理系統(tǒng)
為了增強機器人系統(tǒng)的互動性與實時性,,實現(xiàn)圖像數(shù)據(jù)的高速并行處理,采用SPI(Stream Processor Inc)公司的Storm-1系列的SP16HP-G220流數(shù)字信號處理器作為系統(tǒng)中央處理器[8],,其體系結構如圖2所示,。該處理器為SoC級流處理器,其工作頻率為700 MHz,,每秒可進行1 120億次32位乘加操作,。System MIPS為流處理器主控制核心,負責系統(tǒng)的初始化,、任務調度與I/O口驅動等整體操作,。DSP子系統(tǒng)以一個32 bit的RISC處理器作為系統(tǒng)控制器,負責將需要執(zhí)行運算的數(shù)據(jù)進行流化傳送給數(shù)據(jù)并行處理單元(DPU),。DPU是流處理器的計算核心,進行并行圖像數(shù)據(jù)運算,。該流處理器的DPU擁有16個計算簇,,每個計算簇擁有一個16 KB的寄存器,組成256 KB的片上存儲器,,計算簇中含有5個32位乘加運算器,,計算簇通過DPU Dispatcher硬件完成流的導入與導出操作。I/O子系統(tǒng)擁有108個高速I/O接口用于視頻采集,、傳感器通信和數(shù)據(jù)交換,;PCI接口支持66 MHz/33 MHz數(shù)據(jù)總線;內存控制單元支持DDR1和DDR2內存,,傳輸速率為666 MHz,,最大支持2 GB內存尋址空間。
圖像并行處理系統(tǒng)主要進行圖像處理工作,,解決圖像數(shù)據(jù)處理運算速度瓶頸的問題,,為機器人主控系統(tǒng)及其執(zhí)行機構提供運行數(shù)據(jù)支持,其機器視覺系統(tǒng)結構如圖3所示,。該系統(tǒng)由CCD傳感器作為圖像并行處理系統(tǒng)的輸入,,圖像并行處理系統(tǒng)作為機器視覺系統(tǒng)的運算處理核心進行高速并行圖像處理,處理后將數(shù)據(jù)傳送給機器人的主控系統(tǒng)進行相應操作,。
3 流處理器程序模型
根據(jù)流處理器硬件體系結構,流程序模型分為流級程序模型和核心級程序模型[9-11],,分別運行在DSP子系統(tǒng)與數(shù)據(jù)并行處理單元,。流級程序負責控制標量處理器、流控制器和片外存儲器,,并且進行數(shù)據(jù)流化與流組織輸入輸出,;核心級程序負責進行數(shù)據(jù)并行計算,根據(jù)數(shù)據(jù)處理的復雜程度,,將運算處理過程分為一個或多個核心子程序,。
3.1 流級程序模型
數(shù)據(jù)流的運算對流級程序是透明的,流程序不對數(shù)據(jù)流中的信息進行實際的運算操作,。流級程序首先在初始化時將需要操作的數(shù)據(jù)定義為流,,然后將數(shù)據(jù)流加載到數(shù)據(jù)并行處理單元,并按照算法調用核心級程序對數(shù)據(jù)流進行操作,,最后通過計算簇寄存器輸出與存儲流數(shù)據(jù),,圖4所示為流數(shù)據(jù)輸入給計算簇的示意圖。圖5為流級程序模型,,spi_load和spi_stroe為Storm-1系列流處理器關鍵詞,,其功能為加載流與存儲流。format和encode為調用核心級程序,,在數(shù)據(jù)并行處理單元中執(zhí)行,。
3.2 核心級程序模型
在數(shù)據(jù)并行處理單元中運行的程序為核心級程序,,該程序負責對輸入的流數(shù)據(jù)進行密集的數(shù)學運算。核心級程序的編寫與應用有緊密耦合關系,,不同的算法應用有不同的程序模型與之對應,,但其主要思想為挖掘算法的并行性。當流級程序將組織好的數(shù)據(jù)流輸入給數(shù)據(jù)并行處理單元后,,核心級程序首先進行常數(shù)設置和參數(shù)讀取等操作,,然后對輸入流根據(jù)算法進行運算等操作,最后向計算簇寄存器寫入流數(shù)據(jù)結果,。
4 灰度變換及其算法流化
由于圖像處理算法眾多,其算法結構差別較大,,因此,選取圖像處理中具有代表性的灰度變換進行并行性分析與算法流化。圖像的灰度變換過程就是將彩色圖像變換為黑白圖像,,因為灰度圖像更加容易進行圖像分析與運算,,所以機器視覺系統(tǒng)在通過CCD傳感器采集到彩色圖像后的第一步預處理就是將其變換為灰度圖像?;叶茸儞Q方程如下:
Xrgb=0.299 R+0.587 G+0.114 B (1)
其中,,Xrgb為圖像的灰度值,R,、G,、B分別為RGB圖像的三個分量值。
原始的灰度處理方法是將圖像看成一個二維數(shù)組F(i,j),,對圖像按照從左到右,,從上到下的順序掃描,在掃描的過程中逐點對各像素進行灰度變換,,每次掃描過程之間沒有任何相關性,,并且輸入和輸出數(shù)據(jù)之間也沒有聯(lián)系,所以在處理的過程中各像素點是相互獨立的,,沒有數(shù)據(jù)相關性,,因此該算法具有良好的并行性。根據(jù)式(1),,每進行一次灰度變換,,需要進行3次乘法運算操作和2次加法運算操作,將該算法固化到計算簇中,,可在3個時鐘周期完成一個像素的灰度變換操作,。將初始化中定義為流的圖像數(shù)據(jù)加載到所有計算簇中,即完成算法的流化等處理操作,。其加載形式如圖4所示,。通過對算法流化開發(fā)算法程序的并行性,減少訪存次數(shù)來提高整個算法程序的執(zhí)行效率,。
對灰度變換模型與算法程序并行性的分析,,可將整個灰度變換分解為3個計算核心組成核心級程序,,如圖6所示,整個計算核心程序固化在數(shù)據(jù)并行處理單元的計算簇中,。首先將流級程序定義的流圖像數(shù)據(jù)加載到并行處理單元的流數(shù)據(jù)輸入端口作為輸入流,,計算核心1在完成初始化過程后對順序流過的數(shù)據(jù)進行并行計算,計算完成后流出計算核心1,,并以中間流的形式流入計算核心2;然后通過類似操作完成整個流圖像數(shù)據(jù)的灰度變換,;最后計算核心3將輸出流存儲到計算簇寄存器中供流級程序使用。
5 實驗仿真與分析
5.1 仿真系統(tǒng)及實驗樣本
為了對流化算法進行量化分析和對比實驗以驗證其優(yōu)越性,,建立了一套實驗仿真系統(tǒng),采用Intel Pentium Ⅲ作為中央處理器,處理器主頻為733 MHz,內存為256 MB,操作系統(tǒng)為Windows XP SP3,利用MATLAB 7.0軟件構建了仿真對比實驗平臺,。仿真系統(tǒng)以SP16HP-G220流數(shù)字信號處理器為基準建立了仿真系統(tǒng)模型,模型內部含有16路計算簇與該流處理器相對應,,并將流化完成的灰度變換程序寫入該仿真模型中進行仿真實驗,。實驗樣本如圖7中的(a)、(c),、(e),、(g)、(i)所示,,其圖片像素大小分別為500萬,、200萬、78萬,、48萬,、30萬。通過使用不同的處理器處理實驗樣本進行對比實驗,,實驗分別仿真?zhèn)鹘y(tǒng)處理器與流處理器對實驗樣本進行灰度變換,由于仿真模型的預處理部分都是采用馮·諾依曼體系結構指令集,,所以只記錄傳統(tǒng)處理器運行普通程序與流處理器運行流程序處理不同實驗樣本時算法部分操作所消耗的時間,,最后對數(shù)據(jù)進行分析得到流處理器相對于傳統(tǒng)處理器的算法運算加速比。
5.2 灰度變換實驗結果分析
灰度變換實驗結果如圖7中(b),、(d),、(f)、(h),、(j)所示,,傳統(tǒng)處理方法與流化算法處理圖像結果相同。表1為灰度變換實驗結果,,記錄了三幅不同尺寸的圖片分別使用傳統(tǒng)處理器與流處理器進行灰度變換操作時算法部分程序所消耗的時間,。
本文針對機器視覺系統(tǒng)中圖像處理計算數(shù)據(jù)量大、處理速度慢等問題,,設計了一種基于流處理器的圖像并行處理系統(tǒng),。該系統(tǒng)采用Strom-1系列SP16HP-G220流數(shù)字信號處理器作為并行處理系統(tǒng)核心,,根據(jù)其硬件體系結構建立了流處理器程序模型,并參考圖像處理實際需求選取具有代表性的灰度變換進行了算法并行性分析與流化,,編寫了流程序與傳統(tǒng)程序進行了對比仿真實驗,。圖像并行處理系統(tǒng)與傳統(tǒng)圖像處理系統(tǒng)處理灰度變換其算法部分最大加速比為200。通過實驗表明,,灰度變換算法在流處理器上可以獲得較高的性能加速比,,反映出流處理器在圖像處理領域的巨大優(yōu)勢,同時也證明了該圖像并行處理系統(tǒng)適用于高密度數(shù)據(jù)運算的機器視覺系統(tǒng),,能夠滿足機器人對信息處理時實性的需求,,并為相關領域的應用提供借鑒。
參考文獻
[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.