版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
圖像濾波器是當(dāng)前絕大多數(shù)圖像處理軟件中的重要組成部分,然而,圖像濾波對于計算量的要求是巨大的,為了加強(qiáng)圖像處理軟件的人機(jī)交互性能,使用GPU來加速圖像濾波,是一個很好的選擇。NVIDIA新近推出的GPU計算平臺采用距陣型的計算架構(gòu),特別適合二維圖像信號的處理,且相對CPU有著后,本文模擬了二維可分離卷積在C語言中的實(shí)現(xiàn),并分別在NVIDIAGPU并tools.Sinceimage-filteringapproachesareverycomputationallydemanding,tomaybeagoodwayout.TheGPUcomputingplatforms,recentlylNVIDIA,adoptsthematrix-typecomputingarchitecture,especiallysuitabletheprocessingofthetwo-dimensionalimagesignalandhavehigherparallelismofthealgorithmsandcomputatioCUDAdevelopmentenvironmentofGPU,byutilizingthecomputingcharacteristicofGP-GPU,thispaperaimsattherealizationandimprovementofthedetacrealizationandtestingofadetachabletwo-dimensionalconvolutiIntel(orAMD)CPUcompuKeywords:detachableconvolutionfilter目錄第一章緒論 1 11.2研究背景 21.3研究目的和意義 3 4第二章圖像處理基礎(chǔ)理論 52.1圖像處理的概念 5 6 83.2.1傅立葉變換 83.2.3快速傅立葉變換 3.2.4離散余弦變換 9第三章圖像處理單元GPU 第四章可分離卷積技術(shù) 4.3可分離卷積的原理 第五章基于GPU的二維圖像卷積實(shí)現(xiàn) 5.1.2線程批處理 5.1.3存儲器模型 5.2硬件實(shí)現(xiàn) 5.2.1在片共享存儲器(SIMD單指令多數(shù)據(jù))多處理器組 5.2.2執(zhí)行模型 5.2.3計算能力 5.2.4多設(shè)備 5.2.5狀態(tài)轉(zhuǎn)換 5.3.2一個Naive的執(zhí)行 5.3.3公共存儲器和外圍 5.3.4避免空閑的線程 5.4可分離卷積核的心算法 5.5具體算法實(shí)現(xiàn)方法 5.5.1算法主流程圖 5.5.2結(jié)果分析 第六章總結(jié) 參考文獻(xiàn) 附錄A相關(guān)的數(shù)學(xué)變換公式 附錄B可分離卷積的部分代碼 第1頁第一章緒論現(xiàn)代數(shù)字圖像處理包括很多技術(shù),從簡單的圖像模糊、邊緣檢測、霧化到復(fù)雜的高動態(tài)范圍(HDR)圖像的色調(diào)映射,基本上都使用了一種或者多種圖像濾波器的組合。因此可以說圖像濾波器是現(xiàn)代計算機(jī)圖形學(xué)中的關(guān)鍵要素之濾波。在空間域中的濾波很簡單,只需要將待濾波的圖像和濾波器核進(jìn)行卷積運(yùn)算;而在頻域的濾波則需要先將圖像通過傅立葉變換轉(zhuǎn)換到頻域上,然后乘這兩種方式在不同的情況下有著各自的缺點(diǎn)和優(yōu)點(diǎn),而且在CPU上的實(shí)現(xiàn)已經(jīng)是成熟通用的方法廣為人們熟知。然而由于這兩種方法都存在計算量巨大的特點(diǎn),當(dāng)待處理的圖像比較大的時候,CPU的結(jié)構(gòu)特點(diǎn)決定了其的性能往往不能滿足圖像濾波的實(shí)時性要求。圖形處理器(GPU)為SIMD(SingleInstructionMultipleData,單指令多數(shù)據(jù)流)架構(gòu),決定了它非常適合處理大量數(shù)據(jù)諸如圖像、音頻的這類任務(wù)。由于早期的GPU是固定管線結(jié)構(gòu),自由度非常小,人們難以利用其進(jìn)行3D圖形運(yùn)算之外的工作。自從Microsoft推出DirectX8以后,GPU工作管線中加入了可編程單元,使得人們可以使用GPU進(jìn)行一些通用的計算,同樣,也給使用GPU進(jìn)行圖像濾波處理提供了可能1。在GPU上實(shí)現(xiàn)可分離圖像卷積濾波算法,可以有效的提高圖像處理的效率和積濾波算法作性能比較。畢業(yè)設(shè)計說明書(論文)第2頁1.2研究背景20世紀(jì)六、七十年代,受硬件條件的限制,圖形顯示器只是計算機(jī)輸出的20世紀(jì)80年代初期,出現(xiàn)GE(GeometryEngine)為標(biāo)志的圖形處理器。GE芯片的出現(xiàn)使得計算機(jī)圖形學(xué)的發(fā)展進(jìn)入圖形處理器引導(dǎo)其發(fā)展的年代。GE可以完整地實(shí)現(xiàn)三維圖形流水線的功能。芯片設(shè)計者JamesClark以此為核心理器功能的圖形界面GL及其后的OpenG20世紀(jì)80年代和90年代。GE及其圖形處理器功能不斷增強(qiáng)和完善,使得圖施幾何變化以及對圖元屬性進(jìn)行處理(含部分光照計算)。第二部分則是掃描轉(zhuǎn)換進(jìn)行光柵化以后完成一系列的圖形繪制處理,包含各種光照效果和合成、柵一級實(shí)現(xiàn)時,可以利用SIMD(單指令多數(shù)據(jù))結(jié)構(gòu)進(jìn)行處理。0.13μm(2004年的GeForce6800集成了2.2億晶體管),集成電路的邏輯設(shè)計能力提高300倍,但處理器數(shù)據(jù)通道接口帶寬僅提高十幾倍。同時對圖形畢業(yè)設(shè)計說明書(論文)第3頁1.3研究目的和意義數(shù)字信息處理技術(shù)廣泛應(yīng)用于通信、計算機(jī)、廣播電視等領(lǐng)域,帶來了計算機(jī)的計算性能要求也越來越高,在此基礎(chǔ)上產(chǎn)生了一種新型圖形處理器GPU,它不但極大的提高了計算機(jī)圖形處理的速度和質(zhì)量,而且也促進(jìn)了圖像處理、虛擬現(xiàn)實(shí)、計算機(jī)仿真等相關(guān)應(yīng)用領(lǐng)域的快速發(fā)展。GPU(圖形處理器)解決復(fù)雜的運(yùn)算處理問題。這里我們可以用CUDA工具包(工具箱)來解決圖像卷積運(yùn)算問題。因此在NVIDIACUDA的技術(shù)支持下運(yùn)算量,從而將增強(qiáng)了圖像處理中人機(jī)交互性能。畢業(yè)設(shè)計說明書(論文)1.4論文主要研究內(nèi)容及論文結(jié)構(gòu)安排本論文通過使用可分離卷積濾波算法實(shí)現(xiàn)對圖像數(shù)據(jù)處理,并將卷積算法在GPU和CPU兩種計算平臺下的性能進(jìn)行比較,第一章緒論介紹研究背景、目的和意義等;第二章圖像處理相關(guān)知識的簡介,主要對本論文中使用到的一些圖像處理知識進(jìn)行簡要的介紹;第四章可分離卷積濾波技術(shù),主要介紹卷積、濾波及可分離卷積原理的相關(guān)技術(shù);第五章具體介紹如何在GPU下實(shí)現(xiàn)可分離圖像卷積,并對其與CPU下卷積速率作性能分析;第六章總結(jié)與展望,主要對論文進(jìn)行總結(jié)和今后研究設(shè)想。最后是參考文獻(xiàn)和附錄的相關(guān)內(nèi)容。第5頁第二章圖像處理基礎(chǔ)理論數(shù)子圖像處理(DigitalImageProcessing)又稱為計算機(jī)圖像處理,像處理最早出現(xiàn)于20世紀(jì)50年代,當(dāng)時的電子計算機(jī)已經(jīng)發(fā)展到一定水平,形成于20世紀(jì)60年代初期。早期的圖像處理的目的是改善圖像的質(zhì)量,它以輸出的是改善質(zhì)量后的圖像,常用的圖像處理方法有圖像增強(qiáng)、復(fù)原、編碼、壓縮等2)。一般而言,對圖像進(jìn)行加工和分析主要有如下三方面的目的:(1)提高圖像的視感質(zhì)量,以達(dá)到賞心悅目的目的。如去除圖像中的噪聲,改變圖像的亮度、顏色,增強(qiáng)圖像中的某些成份、抑制某些成份,對圖像進(jìn)行幾何變換等,從而改善圖像的質(zhì)量,以達(dá)到或真實(shí)的、或清晰的、或色彩豐富的、或意想不到的藝術(shù)效果。(2)提取圖像中所包含的某些特征或特殊信息,以便于計算機(jī)分析。例如,常用作模式識別、計算機(jī)視覺的預(yù)處理等。這些特征包括很多方面,如頻域特性、灰度/顏色特性、邊界/區(qū)域特性、紋理特性、形狀/(3)對圖像數(shù)據(jù)進(jìn)行變換、編碼和壓縮,以便于圖像的存儲和傳輸。畢業(yè)設(shè)計說明書(論文)第6頁2.2圖像的格式發(fā)展,還將出現(xiàn)新的圖像文件格式。無論是可以接受一種或多種圖像文件格式作為輸入或輸出有一種軟件可以支持所有的圖像文件格式,現(xiàn)在能夠支圖像格式轉(zhuǎn)換軟件可以達(dá)到七十多種3。本論文只對常用的幾種文件處理格式進(jìn)行簡要說明。TIFF(TagImageFileFormat)稱為標(biāo)記圖像文件格式。它是Alaus和Microsoft公司為掃描儀和桌面出版系統(tǒng)研制開發(fā)的較為通用的圖像文件格賴于操作環(huán)境,具有可移植性。它不僅作為圖像信息交換的有GIF(GraphicsInterchangeFor半。GIF可用于壓縮復(fù)雜并極富變化的圖像,因此適合于需要高效率的圖像處理。目前,在因特網(wǎng)上,GIF格式已成為主頁圖片的標(biāo)準(zhǔn)格式。JPEG也是常見的一種圖像格式。它是按圖像專家聯(lián)合組制訂的壓縮標(biāo)準(zhǔn)畢業(yè)設(shè)計說明書(論文)第7頁人們很難察覺。同時JPEG還是一種很靈活的格式,具有調(diào)節(jié)圖像質(zhì)量的功能,JPEG2000同樣是由JPEG組織負(fù)責(zé)制定的,它有一個正式名稱叫做"ISO15444",與JPEG相比,它具備更高壓縮率以及更多新功能的新一代靜態(tài)影像壓在于它能實(shí)現(xiàn)漸進(jìn)傳輸,這一點(diǎn)與GIF的"漸顯"有異曲同工之妙,即先傳輸圖而不必是像現(xiàn)在的JPEG一樣,由上到下慢慢顯示6。畢業(yè)設(shè)計說明書(論文)第8頁3.2圖像處理中常用的幾種變換3.2.1傅立葉變換于圖像變換、圖像編碼與壓縮、圖像分割和圖像重建等7。特性、共軛性、旋轉(zhuǎn)特性、能量保持定理、相關(guān)定理、卷積定理。主要公式見附錄A。3.2.2離散傅立葉變換離散傅立葉變換主要的性質(zhì)有:可分性、線性、對稱性、尺度變換特性、主要公式見附錄A。3.2.3快速傅立葉變換隨著計算機(jī)技術(shù)和數(shù)字電路的迅速發(fā)展,離散傅立葉變換已經(jīng)成為數(shù)字信第9頁號處理和圖像處理的一種重要的手段。然而離散傅立葉變換需要的計算量太大,運(yùn)行時間長,在某種程度上限制了它的使用。例如計算一個長度為N的一維離散傅立葉變換,公式為:次復(fù)數(shù)加法。那么對與N次復(fù)數(shù)加法。很顯然當(dāng)N很大時,計算量很大。1965年,庫里和圖基首先提出了一種快速傅立葉變換(FFT)算法,采用該算法進(jìn)行離散傅立葉變換,復(fù)數(shù)乘法和加法次數(shù)正比于Nlog?N,當(dāng)N很大時計算量也會大大減少。它不是一種新的算法,只是離散傅立葉變換的一種改進(jìn)算法,它分析了傅立葉變換中重復(fù)的計算量,并最大可能使之減少,從而達(dá)到快速計算目的7][4]。主要公式見附錄A。3.2.4離散余弦變換離散余弦變換(DCT)是正交變換中的一種,是把空間域上的圖像變換到頻率域上的一種方法。由于離散傅立葉變換DFT存在有復(fù)數(shù)運(yùn)算和運(yùn)算量大的缺點(diǎn),常常使實(shí)時處理發(fā)生困難。因此在尋求快速算法的同時,構(gòu)造一種實(shí)數(shù)域的變換一離散余弦變換(DCT)。由于DCT變換核構(gòu)成的基向量于圖像內(nèi)容無關(guān),且變換核是可分離的,即二維DCT變換可以用兩次一維DCT完成。同時,由于DCT的變換矩陣的基向量近似于T矩陣的特征向量。而T矩陣體現(xiàn)了人類語言及圖像信號的相關(guān)性,因此DCT常被認(rèn)為是對語言與圖像信號壓縮處理的準(zhǔn)最佳變換,其變換特性接近于K-L變換。經(jīng)DCT處理后,圖像的能量集中在少數(shù)系數(shù)上,及這些系數(shù)不為零,其余的大部分系數(shù)都為零。因此只需對不為零的變換系數(shù)編碼后傳輸,即可達(dá)到壓縮的目的。DCT提出的各種快速算法比較容易實(shí)時實(shí)現(xiàn),所以DCT得到廣泛應(yīng)用,很多圖像壓縮的標(biāo)準(zhǔn)都采用DCT變換主要公式見附錄A。畢業(yè)設(shè)計說明書(論文)第10頁第三章圖像處理單元GPU隨著當(dāng)前計算機(jī)性能的不斷提高,應(yīng)用范圍越來越廣泛,不同的計算任務(wù)等)。在針對特定應(yīng)用方面與通用處理器相比,專用處理器能夠更加高效的滿近年來,計算機(jī)圖形處理器(GPU)正在以大大超過摩爾定律的速度高速件發(fā)展有著極大關(guān)系。GPU自1999年首先由NVIDIA公司提出后,就其發(fā)展的速度而言,是CPU更新速度的三倍。從1993年開始,GPU的性能以每年2.8代的GPU問世。目前,以NVIDIA和ATI為代表的GPU產(chǎn)品正處于快速發(fā)展的過程當(dāng)中,更強(qiáng)的處理能力。隨著科學(xué)計算可視化、醫(yī)療圖Hardware2003)迅速將其重點(diǎn)轉(zhuǎn)向了計算機(jī)圖形處理器的非圖形應(yīng)用。之后,等國際會議每年都設(shè)立了GPU相關(guān)專題的討論組。越來越多的科研機(jī)構(gòu)開始利用GPU的處理能力進(jìn)行非圖形繪制方面的科學(xué)計算研究13。畢業(yè)設(shè)計說明書(論文)第11頁3.2GPU與CPU的比較并行性和靈活的可編程性等特點(diǎn),越來越多的研究人員和商業(yè)組織開始利用1)高效的并行性。這一功能主要是通過GPU多條繪制流水線的并行計算來體現(xiàn)的。在目前主流的GPU中,配置多達(dá)16個片段處理流水線,6個頂行方案。2)高密集的運(yùn)算。GPU通常具有128位或256位的內(nèi)存位寬,因此GPU在(如NVIDIAGeForce3流水線有800個階段),因此GPU作為數(shù)據(jù)流并CPU中的大部分晶體管主要用于構(gòu)建控制電路(如分支預(yù)測等)和Cache,第12頁控制電路相對簡單,而且對Cache的需求較小,所以大部分正是由于GPU在并行處理和計算密集型問題求解等方面所具有的諸多優(yōu)NVIDIA公司開發(fā)的GPU工具包CUDA(ComputeUnifiedDeviceArchitecture)解等科學(xué)計算,與單純依靠CPU實(shí)現(xiàn)的算法相比,平均性能提高了近20倍。由此可見,GPU的發(fā)展速度(包括集成度、計算密集型問題的處理能力等)力的部件。因此,充分利用現(xiàn)有計算資源,發(fā)揮GPU的高性能計算能力,在畢業(yè)設(shè)計說明書(論文)第13頁存儲器地址,如圖3-2所示,為編程帶來了很畢業(yè)設(shè)計說明書(論文)第14頁CCUDA具有以非??熳x寫訪問速度實(shí)現(xiàn)并行數(shù)據(jù)高速緩存或在片共享內(nèi)存以使用這種芯片平行數(shù)據(jù)高速緩沖存儲器在GPU上直接存儲使用過的信息。GPU上存儲的信息,可以允許多個計算線程度很慢的非芯片型動態(tài)隨機(jī)存取存儲器(DRAM)提供數(shù)據(jù)。這種技術(shù)優(yōu)勢可以度遠(yuǎn)遠(yuǎn)超過了使用傳統(tǒng)架構(gòu)或使用有限圖形APIGPU的“基于GPU的通用計算"的計算方法。畢業(yè)設(shè)計說明書(論文)3.4GPU的發(fā)展前景括窗體)都作為一個3D的實(shí)體進(jìn)行處理,可以實(shí)現(xiàn)各種效果諸如半透明、3D等軟件也是3D的,這些都需要一個強(qiáng)有力的GPU以獲得更好的性能和顯示效適量圖形(如復(fù)雜的城市/測繪地圖和建筑結(jié)構(gòu)圖)的時候,GPU可以使得現(xiàn)時顯示速度也不會降低。一種必需。畢業(yè)設(shè)計說明書(論文)第四章可分離卷積技術(shù)所謂卷積是在信號與線性系統(tǒng)的基礎(chǔ)上或背景中出現(xiàn)的,脫離這個背景單獨(dú)談卷積是沒有任何意義的,除了那個所謂褶反公式上的數(shù)學(xué)意義和積分(或求和,離散情況下)。信號與線性系統(tǒng),討論的就是信號經(jīng)過一個線性系統(tǒng)以后發(fā)生的變化(就是輸入、輸出和所經(jīng)過的所謂系統(tǒng),這三者之間的數(shù)學(xué)關(guān)系)。所謂線性系統(tǒng)的含義,就是這個所謂的系統(tǒng),帶來的輸出信號與輸入信號的數(shù)學(xué)關(guān)系式之間是線性的運(yùn)算關(guān)系。但是,實(shí)際上都是要根據(jù)我們需要待處理的信號形式,來設(shè)計所謂的系統(tǒng)傳遞函數(shù),那么這個系統(tǒng)的傳遞函數(shù)和輸入信號,在數(shù)學(xué)上的形式就是卷積關(guān)系。卷積關(guān)系最重要的一種情況,就是在信號與線性系統(tǒng)或數(shù)字信號處理中的卷積定理。利用該定理,可以將時間域或空間域中的卷積運(yùn)算等價為頻率域的相乘運(yùn)算,從而利用FFT等快速算法,實(shí)現(xiàn)有效的計算,節(jié)省運(yùn)算代價。這里用F(u,v)和H(u,v)分別表示f(x,y)和h(x,y)的傅里葉變換,卷積定理f(x,y)*h(x,y)F(u,v)H(u,v),雙箭頭表示左邊的表達(dá)式(空間域卷積)可以通過對右邊表達(dá)式(在頻率域的F(u,v)H(u,v)乘積)進(jìn)行反傅里葉變換獲得。相反右邊表達(dá)式可以通過對左邊表達(dá)式進(jìn)行正向傅里葉變換獲得。類似的結(jié)果f(x,y)h(x,y)→F(u,v)*H(u,v)這兩個結(jié)論構(gòu)成了卷積定理1。一維卷積公式為:y=g*x,卷積積分:,它所具有的特性有交換性、加法的分配律、結(jié)合律、求導(dǎo)等。離散一維卷積公式為:對于兩個長度分別為m和n的序列x(i)和g(j)有:上式給出了一個長度為N=m+n-1的輸出序列。二維卷積的表達(dá)式為:畢業(yè)設(shè)計說明書(論文)畢業(yè)設(shè)計說明書(論文)第18頁4.2圖像濾波所謂濾波是將信號中特定波段頻率濾除的操作,是抑制和防止干擾的一項(xiàng)重要措施。它是從含有干擾的接收信號中提取有用信號的一種技術(shù)。圖像濾波總體上講包括空域?yàn)V波和頻域?yàn)V波。頻率濾波需要先進(jìn)行傅立葉值得來的。如果輸出像素是輸入像素鄰域像素的線性組合則稱為線性濾波(例如最常見的均值濾波和高斯濾波),否則為非線性濾波(中值濾波、邊緣保持濾波等)91。線性平滑濾波器去除高斯噪聲的效果很好,且在大多數(shù)情況下,對其它類濾波器.非線性濾波器也可以是空間不變的,也就是說,在圖像的任何位置上可以進(jìn)行相同的運(yùn)算而不考慮圖像位置或空間的變化11。圖像卷積濾波是一種可以用于廣義的圖像處理的方法,可以用于各式各樣經(jīng)行處理。而我們在NVIDIACUDA中實(shí)現(xiàn)可分離卷積濾波可以對圖像卷積實(shí)如果二維離散信號f(x,y)作為輸入,那么線性系統(tǒng)的輸出g(x,y)可用下式表示,式中h(x,y)稱為系統(tǒng)的沖擊響應(yīng)。上式的右端稱為二維卷積,該系統(tǒng)可稱為二維線性系統(tǒng)或二維濾波器。如果二維濾波器在x,y<0時,滿足h(x,y)=0條件,則稱為可實(shí)現(xiàn)的因果系統(tǒng)。在滿足下式時此二維濾波器是穩(wěn)定的。當(dāng)沖激響應(yīng)可用下式表示時則此二維濾波器稱為可分型(separable),否則稱為不可分型。當(dāng)濾波器的輸入也是可分時,即它的輸出也可分解為二個一維卷積的乘積,即通過上式的方法可以說明離散二維卷積具有可分離性,它可以將二維卷積轉(zhuǎn)化為兩個一維卷積計算,從而減少運(yùn)算量,提高運(yùn)算效率。這里我們主要采用高斯核在GUP上來完成可分離卷積濾波。由于高斯函數(shù)的可分離性,較大尺寸的高斯濾波器可以得以有效地實(shí)現(xiàn)。二維高斯函數(shù)卷積可以分兩步來進(jìn)行,首先將圖像與一維高斯函數(shù)進(jìn)行卷積,然后將卷積結(jié)果與方向垂直的相同一維高斯函數(shù)卷積。因此,二維高斯濾波的計算量隨濾波模板寬度成線性增長而不畢業(yè)設(shè)計說明書(論文)第20頁第五章基于GPU的二維圖像卷積實(shí)現(xiàn)5.1.1高度多線程協(xié)處理器被視為一個能夠并行處理很多線程的一個計算設(shè)備。它作為一個CPU或主機(jī)的一個主要協(xié)處理器,換句話說,當(dāng)在主機(jī)上運(yùn)行的高密度計算時將數(shù)據(jù)并行分擔(dān)到GPU上處理。更確切地講,部分應(yīng)用程序針對不同的獨(dú)立的數(shù)據(jù)運(yùn)行很多次就可以被獨(dú)立出來成為一個新的功能,即該設(shè)備的不同線程。這種功能是通過該設(shè)備的指令集編譯及產(chǎn)生的程序結(jié)果,稱之為內(nèi)核,可以下載到設(shè)備上。主機(jī)和設(shè)備都有自己的DRAM,分別稱之為主機(jī)內(nèi)存和設(shè)備內(nèi)存。通過適當(dāng)?shù)腁PI接口利用該設(shè)備的高性能直接存儲引擎將一個DRAM上的數(shù)據(jù)拷5.1.2線程批處理一個線程塊是一批可以相互通信、有效共享數(shù)據(jù)的線程集合,通過某些共享內(nèi)存同步執(zhí)行,以協(xié)調(diào)內(nèi)存訪問。更確切地講,在內(nèi)核中可以指定同步點(diǎn),在線程塊中,線程可以隨時中止到所有的線程都達(dá)到這個同步點(diǎn)。為(x,y)線程ID為(x+y,D),一個大小為(D,D,,D?)的三維塊,線程下標(biāo)為(x,y,z)線程ID為(x+y+z,D,D)。一個塊容納的線程數(shù)量是有限的,然而,執(zhí)行同一個內(nèi)核的具有相同維數(shù)和大小的塊聚集成一個網(wǎng)格,這樣,執(zhí)行同一個內(nèi)核的線程總數(shù)量會增大。這樣做的代價是減少了線程間的通信,因?yàn)樵谕痪W(wǎng)格中不同塊中的線程間不能通信與同步。這種模式使得內(nèi)核高效運(yùn)行,不需要在并行能畢業(yè)設(shè)計說明書(論文)第21頁力不同的設(shè)備上進(jìn)行重新編譯。一個設(shè)備如果并行能力較低它會逐一運(yùn)行網(wǎng)格中的塊;如果并行能力較高它會并行運(yùn)行所有塊,通常是這兩種情況相結(jié)合。在網(wǎng)格中,每個塊由塊ID標(biāo)識,塊ID是塊在網(wǎng)格中的編號。塊ID有助于解決復(fù)雜的尋址問題。一個應(yīng)用程序用一個二維數(shù)組來指定一個網(wǎng)格,主機(jī)分派了一序列的內(nèi)核運(yùn)算到設(shè)備上。每個內(nèi)核作為組織成線程塊5.1.3存儲器模型儲器進(jìn)行讀取,如圖5-1所示:畢業(yè)設(shè)計說明書(論文)圖5-1存儲器模型第23頁5.2硬件實(shí)現(xiàn)5.2.1在片共享存儲器(SIMD單指令多數(shù)據(jù))多處理器組設(shè)備的實(shí)現(xiàn)如圖5-2所示的一組多處理器。每個多處理器都采用單指令多但操作不同的數(shù)據(jù)[1][15]。每個多處理器的在片存儲器有以下4種類型:■每個處理器有一組32位局部寄存器?!鲆粋€并行數(shù)據(jù)緩沖器或共享存儲器,由所有處理器共享從而實(shí)現(xiàn)共享存■一個只讀常量緩沖器,由所有處理器共享,加速從常量存儲空間讀取的速度,它可以看作是設(shè)備存儲器的只讀區(qū)。■一個只讀結(jié)構(gòu)緩沖器,由所有存儲器共享,加速從結(jié)構(gòu)存儲空間的讀取速度,它可看作是設(shè)備存儲器的一個只讀區(qū)域。局部和全局存儲空間被看作設(shè)備存儲器的讀寫區(qū)域,且不能被存于硬盤。畢業(yè)設(shè)計說明書(論文)第24頁5.2.2執(zhí)行模型線程塊柵格在設(shè)備上通過使用時間片執(zhí)行多處理器上的一個或多個塊來執(zhí)行;每個塊被分成SIMD線程組稱為warp,每個線程組包含相同數(shù)量的線程,線程數(shù)量稱為線程組大小,并由多處理器以SIMD模式執(zhí)行;線程調(diào)度程序周期的由一個線程組轉(zhuǎn)換至另一個線程組使多處理器的計算資源的使用最大化。半個線程組可以是線程組的第一半也可以是第二半。程ID號遞增,0號線程包含在第一個線程組中。畢業(yè)設(shè)計說明書(論文)每個線程使用的寄存器數(shù)與塊內(nèi)線程數(shù)的乘積大于多處理器內(nèi)寄存器的總數(shù),該進(jìn)程塊不能被執(zhí)行,相應(yīng)的核心程序也會被取消。多個塊可由同一個多處理器通過分配多處理器的寄存器和塊間共享存儲器并發(fā)處理?;蚬蚕泶鎯ζ鞯拇嫒∠嘁恢?。一柵格內(nèi)的兩個不同塊上的線程之間在網(wǎng)格執(zhí)行期間不能通過全局存儲器進(jìn)行安全通信。若一個非原子指令的執(zhí)行通過一個線程組寫入到位于全局或共享存儲器5.2.3計算能力設(shè)備的計算能力由主版本號和副版本號決定。FX5600/4600,和Teslasolutions的計算能力為1.x(它們的主版本號為1)。8800系列,QuadroFX5600/4600,和Teslasolutions的計算能力是1.0版 (它們的副版本號為0)GeForce8600和8500系列的計算能力是1.1版。5.2.4多設(shè)備多GPU的使用如CUDA(統(tǒng)一計算設(shè)備架構(gòu))設(shè)備,只有當(dāng)這些GPU類型都相同時,應(yīng)用程序才能在多GPU系統(tǒng)上運(yùn)行。然而若系統(tǒng)在SLI(控制長度指示器)模式下,所有的GPU在驅(qū)動棧底層中斷,只有一個GPU可用作CUDA板關(guān)閉。畢業(yè)設(shè)計說明書(論文)第26頁5.2.5狀態(tài)轉(zhuǎn)換模式轉(zhuǎn)換時(用NVIDIA控制面板或Windows的顯示控制面板),它所需的存儲空間隨之改變。例如:若用戶把顯示器分辨率由1280×1024×32位變?yōu)?600×1200×32bit,系統(tǒng)必須把7.68MB用在主界面上而不是5.24MB。(全屏圖像反混沌應(yīng)用軟件應(yīng)用的運(yùn)行主界面需更大的顯示存儲器)在Windows操作系統(tǒng)下,可能引起顯示模式轉(zhuǎn)換的事件包括進(jìn)行全屏DirectX應(yīng)用,按Alt+Tab鍵退出全屏DirectX顯示,或按Ctrl+Alt+Del鎖住計算機(jī)。若模式轉(zhuǎn)換增加了主界面所需存儲器數(shù),系統(tǒng)將拆用專門分配給CUDA使用的存儲器,這將引起這些應(yīng)用的崩潰。在圖像處理中卷積濾波只是一個在圍繞輸出像素中帶有輸入像素的濾波權(quán)結(jié)果。這個數(shù)積是一個并行操作它非常適合在高平行硬件上運(yùn)行,例如GPU。圖5-3為卷積濾波方法的基礎(chǔ)141。1574422322241115211322221234155121322千311CCC2118圖5-3卷積模型基礎(chǔ)5.3.1分離濾波通常一個二維卷積濾波需要n*m輸出像傣點(diǎn),n和m分別為濾波器的寬度和高度。可分離濾波是一個特殊的類型的濾波器,它可以表示為兩個一維空間的濾波器,一個是圖像的行,一個是圖像的列。一個可分離卷積濾波器可以將數(shù)據(jù)分成兩個連續(xù)的一維空間卷積運(yùn)算,因此,每個輸出像傣只需要n+m個級數(shù)。例如,申請一個數(shù)組數(shù)據(jù)就相當(dāng)于申請兩個一個維數(shù)組01]??煞蛛x濾波器在有著更好的適應(yīng)性,另外它還可以降低算法的復(fù)雜度和每個數(shù)據(jù)點(diǎn)的帶寬的估計。在CUDA中簡單的執(zhí)行卷積的方法是將一個圖像塊導(dǎo)入共用寄存器陣列中,對該塊中的像素按照濾波器的大小進(jìn)行分塊點(diǎn)乘,并將這些點(diǎn)乘所得的和寫入輸出和寫入輸出圖像的設(shè)備內(nèi)存中。每個線程塊處理一個圖像塊。每個線程產(chǎn)生一個輸出像傣信號。具體如下圖5-4所示。這里來自圖像的一個像傣塊被導(dǎo)入到公共存儲器的隊列中。處理和計算一個輸出像傣(紅色),一個輸入圖像畢業(yè)設(shè)計說明書(論文)區(qū)域(桔黃色)乘以用濾波核(紫色)的元素返回的值是總和。將結(jié)果輸出像傣從新寫回到圖像中。田X2圖5-4一個Naive卷積算法的像傣和外圍像傣進(jìn)行濾波。如圖5-5。畢業(yè)設(shè)計說明書(論文)X圖5-5改進(jìn)后的Naive卷積算法5.3.4避免空閑的線程如果一個線程被用于每個像傣導(dǎo)入共用存儲器中,于是導(dǎo)入外圍像傣的線大半徑核心的濾波器來說浪費(fèi)會非常高。如圖5-6。畢業(yè)設(shè)計說明書(論文)第30頁我們可以通過降低每個塊的線程的總數(shù)來降低空閑線程的總數(shù)或用每個線程導(dǎo)入多倍的像傣到共用存儲器中。例如:如果我們用一個垂直的縱列并且和圖像塊寬度相同來處理,我們在共用存儲器上有一個48×48的像傣區(qū)域,但只有16×48的線程。我們將分三塊讀取數(shù)據(jù),如圖5-7。在濾波計算過程中,一個線程的三分之一是活躍的勝于九分之一。因?yàn)閷?dǎo)入時帶寬有限,執(zhí)行時不能被接受。這樣可以更進(jìn)一步的降低線程塊到16×16,和將圖像劃分為九個正方形像傣塊。這個可以保證在運(yùn)算階段所有的線程可以被利用。注意:為了最佳的效率一個塊中線程的數(shù)目必須是數(shù)倍于線程組的大小。如果在導(dǎo)入階段外圍沒有線程塊一樣的寬廣,我們將終止一些線程塊。如圖5-8。畢業(yè)設(shè)計說明書(論文)第31頁5.3.5可分離濾波增加效率除了通過分片降低線程空閑數(shù)目,我們可以降低多于的數(shù)據(jù)的導(dǎo)入,通過劃分處理成兩種方法。一個是完成每個二維的可分離圖像濾波;另一個是由于每個塊與相鄰塊之間的交迭在圖像外圍寬度區(qū)域內(nèi)部的每個像傣將被導(dǎo)入九如果我們將計算分離成水平和垂直部分,在每個路徑寫入一個全局存儲器。每個像傣最多被導(dǎo)入六次,用一個小塊16×16,這個不能得到任何事情。正真的好處,不再需要導(dǎo)入外圍的頂部和底部(水平)像愫。這樣允許每個線程塊中導(dǎo)入更多的像傣。我們限制線程塊的大小更勝于限制共用內(nèi)存大小。為了完成更高的效率,每個線程必須處理超過一個像素。我們可以增加圖像塊的寬度處理,通過一個線程塊更多的柔和的利用這些可分離的方法,如圖5-9。5.3.6行濾波在導(dǎo)入和處理階段中,每個活動線程只導(dǎo)入或輸出一個像素點(diǎn)。在計算階段,每個線程在2倍濾波器半徑加1的寬度上循環(huán),將每個像素與常數(shù)內(nèi)存中相應(yīng)的濾波器系數(shù)相乘。每半組(warp)中的每個線程均訪問相同的常地址,因此不會有由于常量內(nèi)存組沖突。同樣,連續(xù)的線程總是訪問連續(xù)的共享內(nèi)存地址,因此同樣不會發(fā)生共享內(nèi)存組沖突14]。如圖5-10。第32頁圖5-10行濾波TlesinTlesinhorlzontadrectiorimapowla/COLUMN_TLE_W圖5-11列濾波5.3.7列濾波列濾波動作的運(yùn)行與行濾波動作非常相像。主要的區(qū)別是,線程ID按照濾波區(qū)域的垂直方向遞增,而不是沿著濾波區(qū)域。如同在行濾波動作中一樣,一個半卷中的線程總是訪問不同的共享內(nèi)存組,但是下一個/前一個地址的計算意味著增加/減少COLUMN_TILE_W,而不是僅僅1。在列濾波動作中,導(dǎo)入階段中我們沒有緩慢的“聯(lián)合校準(zhǔn)”線程,因?yàn)槲覀兗僭O(shè)瓦片寬度是聯(lián)合讀入大畢業(yè)設(shè)計說明書(論文)第33頁小的倍數(shù)。為了減小邊緣相對于輸出像素點(diǎn)的比例,我們希望圖像瓦片(slice)能盡可能高,這樣才能得到我們目標(biāo)的合理的共享內(nèi)存使用效率,而對于窄圖像瓦片則盡可能達(dá)到16列4]。如圖5-11。畢業(yè)設(shè)計說明書(論文)5.4可分離卷積核的心算法5.4.1GPU可分離卷積核心算法行卷積濾波內(nèi)部核心循環(huán):列卷積濾波內(nèi)部核心循環(huán):for(intk=-KERNEL_RADIUS;k<=KERNEL_RADIUS;k++)data[smemPosd_Kernel[KERNEL_RADIUS5.4.2CPU可分離卷積核心算法行卷積濾波內(nèi)部核心循環(huán):{for(k=-kernelR;k<=kernelR;k++){if(dsum+=h_Data[y*dat}}列卷積濾波內(nèi)部核心循環(huán):intfor(x{for(k=-kernelR;k<=kernelR;k++){if(dsum}h_Result[y*dataW+畢業(yè)設(shè)計說明書(論文)第36頁5.5具體算法實(shí)現(xiàn)方法開始開始讀bmp文件返回運(yùn)行界面選定C:\TIHDOTS\systen32\cnd.exe-口×導(dǎo)入圖片10.bmp導(dǎo)入圖片11.bmp導(dǎo)入圖片12.bmp圖片導(dǎo)入成功!分別在GPU和CPU上作卷積運(yùn)算,并存儲數(shù)據(jù)圖片導(dǎo)入成功!分別在GPU和CPU上作卷積運(yùn)算,并存儲數(shù)據(jù)圖片導(dǎo)入成功!分別在GPU和CPU上作卷積運(yùn)算,并存儲數(shù)據(jù)圖片導(dǎo)入成功!分別在GPU和CPU上作卷積運(yùn)算,并存儲數(shù)據(jù)圖片名稱大小GPU上卷積速率CPU上卷積速率GPU時間是CPU上時間的多少倍××39.438591像素/每秒41.156021像素/每秒41.804906像素/每秒畢業(yè)設(shè)計說明書(論文)第37頁卷積核半徑GPU卷積速率(像素/秒)CPU卷積速率(像素/秒)GPU時間/CPU時間123456789卷積核半徑GPU卷積速率(像素/秒)CPU卷積速率(像素/秒)GPU速率/CPU速率123456789畢業(yè)設(shè)計說明書(論文)第38頁結(jié)果分析:我們這里導(dǎo)入十二bmp圖片,在GPU和CPU上對其作卷積運(yùn)算,并將結(jié)果一起顯示出來。我們只取其中一組數(shù)據(jù)(圖片大小為:800×600)作分析。由表1做了比較,并生成圖5-14。是GeForce8400GS采用了16個流處理器,而GeForce8800GT采用了112個流處理器。高運(yùn)行速率。畢業(yè)設(shè)計說明書(論文)第39頁11第40頁0圖5-15不同版本的GPU運(yùn)行時間第41頁第六章總結(jié)隨著計算機(jī)軟硬件技術(shù)的發(fā)展,應(yīng)用范圍越來越廣泛,當(dāng)今人們需求也隨之提高,需要性能更高更快,使用更方便,效果更逼真的產(chǎn)品。圖像處理核心器件的發(fā)展成為了必要。本論文主要討論了在GPU下如何實(shí)現(xiàn)可分離卷積濾波算法并與CPU下實(shí)現(xiàn)卷積算法作了比較。相關(guān)工作總結(jié)如下:1.熟悉VisualStudio2005下編程和運(yùn)行C程序方式。3.翻譯文獻(xiàn)NVIDIACUDAComputeUnifiedDeviceArchitecture。5.最終結(jié)果:由于GPU采用的是SIMD架構(gòu),采用并行計算。它非常適合用于處理大量數(shù)據(jù)諸如圖像、音頻的這類任務(wù)。我們這里在GPU上作可分離卷積運(yùn)算可以可以圖像處理速率,正常是CPU上運(yùn)行速率的幾十到幾百倍。由于本人時間有限,這里我們沒有對圖像卷積進(jìn)行逆變換,沒有對其速率做分析比較,需要進(jìn)一步完善。第42頁本論文是在導(dǎo)師的悉心指導(dǎo)下完成的。老師淵博的專業(yè)知識,嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)精益求精的工作作風(fēng),誨人不倦的高尚師德,嚴(yán)以律己、寬以待人的崇高風(fēng)范,樸最后,向所有關(guān)心和幫助過我的領(lǐng)導(dǎo)、老師、同學(xué)和朋友表示由衷的謝意!衷心地感謝在百忙之中評閱我的論文和參加答辯的各位老師![2]RafaelC.Gonzalez&&RichardE.Woods.數(shù)字圖像處理[M].電子工業(yè)出版社,[3]高文.多媒體數(shù)據(jù)壓縮技術(shù)[M].電子工業(yè)出版社.1994.4.[4]張旭東.圖像編碼基礎(chǔ)和小波壓縮技術(shù):原理、算法和標(biāo)準(zhǔn)[M].清華大學(xué)出版社.2004.3.[5][美]YaoWang.視頻處理與通信[M].電子工業(yè)出版社.2003.6.[6]丁玉美,高西全.數(shù)字信號處理[M].西安電子科技出版社.2006.7.[7]求是科技.VisualC++數(shù)字圖像處理典型算法及實(shí)現(xiàn)[M].人民郵電出版社.[11]DavidS.Taubman&&MichaelW.Marcellin.JPEG2000圖像壓縮基礎(chǔ)標(biāo)準(zhǔn)和實(shí)踐[M].電子工業(yè)出版社.[12]新一代視頻壓縮編碼標(biāo)準(zhǔn)—H.264/AVC[M].人民郵電出版社.2005.5.人民郵電出版社2006.1.畢業(yè)設(shè)計說明書(論文)附錄A相關(guān)的數(shù)學(xué)變換公式傅立葉變換公式連續(xù)的一維傅立葉變換的定義:一維傅立葉反變換定義:F(u)包含了正弦和余弦項(xiàng)的無限項(xiàng)的和,u稱為頻率變量,它的每一個值確定了所對應(yīng)的正弦-余弦對的頻率。連續(xù)的二維函數(shù)的傅立葉正變換:二維函數(shù)的傅立葉逆變換:一個二維傅立葉變換可以用二次一維傅立葉變換實(shí)現(xiàn),具體推導(dǎo)如下:離散傅立葉變換公式一維離散傅立葉正變換:一維離散傅立葉逆變換:二維離散傅立葉變換:正變換:反變換:對于N×N像傣正變換:反變換:快速傅立葉變換公式離散余弦變換(DTC)設(shè)離散序列f(x),x=0,1,…,N-1,為一離散序列,根據(jù)下式延拓成偶對稱序列f,(x):且f(x)=f、(-x-1)其中x=-N,…,0,…,N-1。f.(x)是關(guān)于為中心的偶對稱序列代入在范圍內(nèi)作2N點(diǎn)的傅立葉變換:余弦變換的變換核為:表示成矩陣形式為:(其中各列模為1)定義偶余弦變換(EDCT)和逆變換為:畢業(yè)設(shè)計說明書(論文)第47頁二維余弦變換:二維余弦變換具有可分離性:表示成矩陣形式:畢業(yè)設(shè)計說明書(論文)第48頁附錄B可分離卷積的部分代碼#ifdef_WIN32#endifintheight;intxPelsPerMeter;intyPelsPerMeter;第49頁}printf("***BMPloade}fread(&hdr,sizeof(hdr}fread(&infoHdr,sizeof(infoHdprintf("***BMPloader}}fseek(fd,hdr.offset-sizeof(hdr)-sizeof(infoHdr),SEEK_CUR);for(y=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 液壓夾緊裝置課程設(shè)計
- 氣管切開配合及護(hù)理
- 圓形盾構(gòu)隧道課程設(shè)計
- 提高聽力口語課程設(shè)計
- 植物修復(fù)課程設(shè)計
- 洗衣機(jī)課程設(shè)計仿真
- 小班泥土游戲課程設(shè)計
- 污水三級處理課程設(shè)計
- DB5107T 108-2022 高山辣椒-豌豆栽培技術(shù)規(guī)范
- DB5106T 13-2021 投資項(xiàng)目全程代辦工作規(guī)范
- 新教材部編版道德與法治五年級上冊第四單元測試題及答案
- 農(nóng)村原民辦代課教師教齡補(bǔ)助申請表
- 高邊坡專項(xiàng)施工方案樣本
- 2023年污水站設(shè)備維修 污水處理廠設(shè)備維護(hù)方案(五篇)
- 實(shí)用牛津樹授課PPT27. ORT-PreK-L27-The-Dream-200602105041-200815212000
- 秦始皇英文介紹ppt
- 研究十二生肖的文獻(xiàn)
- 妊娠劇吐的護(hù)理查房【產(chǎn)科】-課件
- 2022貴州省專業(yè)技術(shù)人員繼續(xù)教育公需科目考試題庫課件二
- 土家族課件完整版PPT
- 《酒店概論》考試復(fù)習(xí)參考題庫(含答案)
評論
0/150
提交評論