文獻標識碼: 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.