<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于GPU的數字圖像并行處理研究

基于GPU的數字圖像并行處理研究

—— Parallel Image Processing Based on GPU
作者:蓋素麗 河北省應用數學(xué)研究所 時(shí)間:2009-02-25 來(lái)源:電子產(chǎn)品世界 收藏

摘要:針對像素級圖像處理算法并行化程度高的特點(diǎn),利用的并行流處理特性和可編程性,提出了基于的數字圖像并行化處理方法,并對其基本執行流程和其中的關(guān)鍵技術(shù)問(wèn)題:數據加載,結果反饋、保存等進(jìn)行了詳細論述。最后通過(guò)圖像的卷積運算驗證了的并行處理能力。
關(guān)鍵詞:GPU;片元程序;Cg;并行處理

本文引用地址:http://dyxdggzs.com/article/91684.htm

GPU并行化處理

  可編程圖形處理器(Programmable Graphic Process Unit, PGPU)是目前計算機上普遍采用的圖形圖像處理專(zhuān)用器件,具有單指令流多數據流(SIMD)的并行處理特性,而且提供了完全支持向量操作指令和符合IEEE32位浮點(diǎn)格式的頂點(diǎn)處理能力和像素處理能力,已經(jīng)成為了一個(gè)強大的并行計算單元。研究人員將其應用于加速科學(xué)計算和可視化應用程序,取得了令人鼓舞的研究成果。

  與CPU相比,GPU具有以下優(yōu)勢:強大的并行處理能力和高效率的數據傳輸能力[1] [2] [7]。其中,并行性主要體現了指令級、數據級和任務(wù)級三個(gè)層次。高效率的數據傳輸主要體現在兩個(gè)方面: GPU與顯存之間的帶寬為:16GB/s;系統內存到顯存的帶寬為:4GB/s。

  總上所述,GPU比較適合處理具有下面特性的應用程序:1、大數據量;2、高并行性;3、低數據耦合;4、高計算密度;5、與CPU交互比較少。

的并行化分析

  算法多種多樣,但從數據處理的層面來(lái)考慮,可以分為:像素級處理、特征級處理和目標級處理三個(gè)層次[3][4]。

(1)像素級圖像處理

  像素級處理,即由一幅像素圖像產(chǎn)生另一幅像素圖像,處理數據大部分是幾何的、規則的和局部的。根據處理過(guò)程中的數據相關(guān)性,像素級處理又可進(jìn)一步分為點(diǎn)運算、局部運算和全局運算。

(2)特征級圖像處理

  特征級處理是在像素圖像產(chǎn)生的一系列特征上進(jìn)行的操作。常用的特征包括:形狀特征、紋理特征、梯度特征和三維特征等,一般采用統一的測度,如:均值、方差等,來(lái)進(jìn)行描述和處理,具有在特征域內進(jìn)行并行處理的可能性。但是,由于其特征具有象征意義和非局部特性,在局部區域并行的基礎上,需要對總體進(jìn)行處理。利用GPU實(shí)現并行化處理的難度比較大。

(3)目標級圖像處理

  目標級處理是對由一系列特征產(chǎn)生的目標進(jìn)行操作。由于目標信息具有象征意義和復雜性,通常是利用相關(guān)知識進(jìn)行推理,得到對圖像的描述、理解、解釋以及識別。由于其數據之間相關(guān)性強,且算法涉及到較多的知識和人工干預,并行處理的難度也比較大。

  由此可見(jiàn),整個(gè)圖像處理的結構可以利用一個(gè)金字塔模型來(lái)表示。在底層,雖然處理的數據量巨大,但由于局部數據之間的相關(guān)性小,且較少的涉及知識推理和人工干預,因此大多數算法的并行化程度比較高。當沿著(zhù)這個(gè)金字塔結構向高層移動(dòng)時(shí),隨著(zhù)抽象程度的提高,大量原始數據減少,所需的知識和算法的復雜性逐層提高,并行化處理的難度也逐漸加大。

  由于絕大部分的圖像處理算法是在像素級進(jìn)行的,且GPU的SIMD并行流式處理在進(jìn)行像素級的圖像處理時(shí)具有明顯的優(yōu)勢,而特征級和目標級處理無(wú)論是從數據的表達還是從算法自身的實(shí)現來(lái)說(shuō),都很難實(shí)現GPU并行化。因此,本文重點(diǎn)研究各種像素級圖像處理操作的GPU并行化實(shí)現方法。

數字圖像GPU并行化處理的基本流程與關(guān)鍵技術(shù)

  現代GPU提供了頂點(diǎn)處理器和片段處理器兩個(gè)可編程并行處理部件。在利用GPU執行圖像處理等通用計算任務(wù)時(shí),要做的主要工作是把待求解的任務(wù)映射到GPU支持的圖形繪制流水線(xiàn)上。通常的方法是把計算任務(wù)的輸入數據用頂點(diǎn)的位置、顏色、法向量等屬性或者紋理等圖形繪制要素來(lái)表達,而相應的處理算法則被分解為一系列的執行步驟,并改寫(xiě)為GPU的頂點(diǎn)處理程序或片段處理程序,然后,調用3D API執行圖形繪制操作,調用片段程序進(jìn)行處理;最后,保存在幀緩存中的繪制結果就是算法的輸出數據,如圖1所示[5][6]。


圖1  遙感影像GPU并行化處理基本流程

  雖然算法多種多樣,具體實(shí)現過(guò)程也很不相同,但是在利用GPU進(jìn)行并行化處理時(shí),有一些共性的關(guān)鍵技術(shù)問(wèn)題需要解決,如:數據的加載,計算結果的反饋、保存等。下面對這些共性的問(wèn)題進(jìn)行分析,并提出相應的解決思路。

數據加載

  在GPU的流式編程模型中,所有的數據都必須以“流”的形式進(jìn)行加載處理,并通過(guò)抽象的3D API進(jìn)行訪(fǎng)問(wèn)。在利用GPU進(jìn)行圖像處理時(shí),最直接有效的數據加載方法是把待處理的圖像打包為紋理,在繪制四邊形時(shí)進(jìn)行加載、處理。同時(shí)為了保證GPU上片段程序能夠逐像素的對紋理圖像進(jìn)行處理,必須將投影變換設置為正交投影,視點(diǎn)變換的視區與紋理大小相同,使得光柵化后的每個(gè)片段(fragment)和每個(gè)紋理單元(texel)一一對應。

  對于圖像處理算法中的其他參數,如果數據量很小,則可以直接通過(guò)接口函數進(jìn)行設置;如果參數比較多,也應該將其打包為紋理的形式傳輸給GPU。在打包的過(guò)程中應充分利用紋理圖像所具有的R、G、B、A四個(gè)通道。

計算結果的反饋、保存

  應用程序是通過(guò)調用3D API繪制帶紋理的四邊形,激活GPU上的片段程序進(jìn)行圖像處理的,而GPU片段著(zhù)色器的直接渲染輸出是一個(gè)幀緩沖區,它對應著(zhù)計算機屏幕上的一個(gè)窗口,傳統上用來(lái)容納要顯示到屏幕的像素,但是在GPU流式計算中可以用來(lái)保存計算結果。雖然CPU可以通過(guò)3D API直接讀寫(xiě)這個(gè)幀緩沖區,將渲染處理的結果從幀緩存中復制到系統內存進(jìn)行保存,但是幀緩存的大小受窗口大小限制,而且由于A(yíng)GP總線(xiàn)的帶寬限制(2.1GB/s),從顯存到系統內存的數據回讀操作效率低下。對于大幅影像的處理應用是顯然不適合的,特別是在中間計算結果的保存反饋時(shí),采用幀緩存方式將成為制約GPU性能發(fā)揮的最主要瓶頸。

  針對以上問(wèn)題,筆者利用離線(xiàn)渲染緩存Pbuffer作為輸出緩存。Pbuffer是OpenGL1.3版本的WGL_ARB_pbuffer擴展提供的輸出緩存,它通過(guò)在顯存中開(kāi)辟一個(gè)不可見(jiàn)的數據緩沖區,取代幀緩存來(lái)保存片段處理器的輸出結果。如果這個(gè)結果只是中間計算數據,還可以采用渲染到紋理的技術(shù),把Pbuffer中的數據綁定到一個(gè)紋理,供下一遍繪制的片段程序取用,減少數據在顯存和系統內存之間的傳輸,實(shí)現整個(gè)數據流在GPU芯片內部的流轉,顯著(zhù)提高數據的反饋速度。特別是在需要GPU反復執行的情況下,可以構造兩個(gè)Pbuffer,交替的作為輸入或輸出紋理使用,產(chǎn)生所謂的“Ping-Pong”方法,有效避免中間計算結果的回讀操作。

圖像卷積運算的GPU并行化試驗

  卷積運算是一種常見(jiàn)的數字圖像處理局部運算,通過(guò)選擇不同的卷積核,可以實(shí)現不同的圖像處理效果。圖像卷積運算定義為:

  式中,為卷積運算以后的圖像;為待處理的圖像;為卷積核;T為常數,當卷積核中所有系數之和不為零時(shí),T等于所有系數之和,否則等于1。

試驗平臺與數據

  硬件平臺為: Intel Core 2 2.0GHz CPU,1GB系統內存,NVIDIA公司的GeForce G0 7400 GPU, 512MB顯存。

  軟件平臺:Windows XP操作系統,CPU程序開(kāi)發(fā)環(huán)境為Microsoft Visual C++2005,三維繪制接口為OpenGL及其擴展庫WGL_ARB_pbuffer,GPU程序開(kāi)發(fā)語(yǔ)言為Cg。

  所采用的試驗數據有兩組,如圖2所示:

  第一組為:截取的新加坡部分地區QucikBird衛星影像,大小為(像素);

  第二組為:截取的黃河小浪底部分地區Spot4衛星影像,大小為(像素)。


(a)試驗數據一


(b)試驗數據二
圖2 卷積運算試驗數據

試驗步驟與數據記錄

  為了進(jìn)行多組數據的對比試驗,首先對原始圖像數據進(jìn)行預處理,通過(guò)裁減獲得大小分別為2048×2048、1024×1024、521×512、256×256、128×128的試驗數據。

  以經(jīng)過(guò)預處理的10幅不同大小的圖像進(jìn)行卷積運算對比試驗,分別運行卷積平滑和卷積銳化的CPU和GPU程序,并記錄處理時(shí)間。試驗所用的平滑卷積核h1為式(2),銳化卷積核h2為式(3):

 

 

試驗結果與分析

  圖3所示為圖像數據二512×512的平滑和銳化試驗的處理結果,圖4為GPU加速效率對比圖。


(a)卷積平滑后圖像


(b)卷積銳化后圖像
圖3  數據二的圖像平滑、銳化效果對比


圖4 卷積運算GPU加速效率對比圖

  從圖4可以看出:隨著(zhù)圖像的增大,特別是卷積核的變大,GPU的加速效果更加明顯,例如:對2048×2048大小的圖像進(jìn)行5×5的卷積運算,最高加速比達到了8倍多。但是,在圖像數據較小時(shí),由于OpenGL的初始化和紋理數據的加載耗費了大量的時(shí)間,使得GPU并行處理的優(yōu)勢消失,甚至還沒(méi)有CPU處理的速度快。

結語(yǔ)

  本文對GPU的并行性和數字圖像處理算法的并行層次進(jìn)行了簡(jiǎn)要的介紹,提出了像素級圖像處理的GPU并行化實(shí)現方法,并對其基本流程和關(guān)鍵技術(shù):數據的加載,計算結果的反饋與保存等問(wèn)題進(jìn)行了詳細論述,最后通過(guò)圖像的平滑和銳化的卷積運算證明了GPU在數字圖像并行化處理方面的強大優(yōu)勢。

參考文獻:

[1] 柳有權.基于物理的計算機動(dòng)畫(huà)及其加速技術(shù)的研究[D].北京:中國科學(xué)院研究生院博士論文,2005.
[2] 譚久宏、周維超、吳欽章.基于GPU的數字圖像處理[J].科教文匯,2006,4:178-179.
[3] 盧麗君、廖明生、張路.分布式并行計算技術(shù)在遙感數據處理中的應用[J].測繪信息與工程,2005,30(3):1-3.
[4] DOWNTON A, CROOKES D. Parallel Architectures for Image Processing [J]. Electronics and Communication Engineering Journal, 1998, 10(3):139-151.
[5] 龔敏敏.GPU精粹2—高性能圖形芯片和通用計算編程技巧(譯)[M].北京:清華大學(xué)出版社,2007.
[6] 洪偉、劉亞妮、李騎、丁蓮珍.Cg教程—可編程實(shí)時(shí)圖形權威指南(譯)[M].北京:人民郵電出版社,2004:7-10.
[7] 吳恩華.圖形處理器用于通用計算的技術(shù)、現狀及其挑戰[J].軟件學(xué)報,2004,15(10):1493-1504.

c++相關(guān)文章:c++教程


模數轉換器相關(guān)文章:模數轉換器工作原理


全息投影相關(guān)文章:全息投影原理


關(guān)鍵詞: GPU 數字圖像處理 200902

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>