曾梟林 董森 王臣彬
(孝感市孝南區(qū)190大院 湖北孝感 432100)
基于CUDA的遙感圖像濾波算法實現(xiàn)
曾梟林 董森 王臣彬
(孝感市孝南區(qū)190大院 湖北孝感 432100)
遙感圖像的數(shù)據(jù)量越來越大,傳統(tǒng)串行算法不能滿足實時處理需求。而GPU在并行計算、浮點運算方面上強于CPU,因此本文嘗試基于CUDA的多處理單元和多線程機制進行算法并行化,從而實現(xiàn)執(zhí)行效率的加速。
并行處理;CUDA;遙感濾波
1.1 研究背景
隨著遙感圖像的數(shù)據(jù)量越來越大,遙感圖像的處理算法計算密集度較高,現(xiàn)有串行算法無法實現(xiàn)實時處理。因此,可以嘗試使用并行化算法對遙感圖像處理進行加速。由于GPU將更多的晶體管用于數(shù)據(jù)的運算,減少了數(shù)據(jù)的緩存,所以GPU的浮點計算能力遠遠的強于CPU,滿足了遙感圖像的實時處理需求。
1.2 編程模型
CUDA編程中線程的層次是一個核心內(nèi)容,CUDA線程以網(wǎng)格(Grid)的方式組織。一個網(wǎng)格中可以包含若干個線程塊(Block),而一個線程塊中包含多個線程。程序的運行過程中,是多個線程塊、多個線程同時并行的。需要說明的是處理器核心以何種順序運行線程塊和線程塊中的線程,都是不定的,并且同一時刻系統(tǒng)能同時運行多少個線程也是由系統(tǒng)的硬件環(huán)境配置所決定的。
一個多線程程序被劃分為多個線程塊,塊之間彼此是無關(guān)的、獨立執(zhí)行,因此一個擁有多核心的GPU花費的時間自然比擁有核心數(shù)目少的GPU的少。
表1 實驗硬件環(huán)境配置表
2.1 濾波算法
2.1.1 均值濾波算法原理
均值濾波算法原理是選擇一個窗口,該窗口由其近鄰的若干像素組成。求窗口中所有像素的均值,再將該點的灰度值替換為求得的平均值賦值。
式中:m——該鄰域窗口的像素點的總和。
2.1.2 中值濾波算法原理
中值濾波算法原理是選擇一個窗口,該窗口由其近鄰的若干像素組成。求窗口中所有像素的中間值,再把該點的灰度值替換為窗口求得的中間值。
式中:f(x,y),g(x,y)分別為待處理圖像和中值濾波后的圖像。W為二維窗口。
2.1.3 Lee濾波算法原理
Lee濾波算法的原理是選擇一定長度的窗口,假定先驗均值和方差可以通過計算局域的均值和方差得到。
其中:
2.2 基于CUDA的濾波并行算法實現(xiàn)
2.2.1 基于CUDA的濾波并行算法
(1)主機開辟圖像大小的內(nèi)存空間,用于存儲讀入的圖像數(shù)據(jù)。運用cudaMalloc()和cudaMemcpy()這兩個函數(shù)將主機的數(shù)據(jù)傳遞給設(shè)備。
(2)分配線程數(shù),默認一個Block中的線程總數(shù)為16×16。本文的并行算法思想是為每一個像素分配一個線程。根據(jù)圖像的長與寬進行計算得到Block的數(shù)目,使其所對應(yīng)的Grid的內(nèi)部的線程總數(shù)大于遙感圖像的像素點的個數(shù)。
(3)創(chuàng)建一個Kernel函數(shù),計算每一個線程的線程索引,將線程與圖像的像素一一對應(yīng)起來,每一個線程完成一個像素的濾波算法。
(4)濾波算法結(jié)束,運用cudaMemcpy()函數(shù)將設(shè)備運行后的數(shù)據(jù)傳遞給主機,結(jié)束程序。
2.2.2 實驗結(jié)果及分析
本文以運算加速比來比較運算效率,其中CUDA上的執(zhí)行時間包括主機內(nèi)存和設(shè)備顯存之間數(shù)據(jù)傳遞的時間。
由表2可知:①隨著輸入圖像尺寸的增大,執(zhí)行三種算法的效率都成緩慢增長的趨勢。②三種算法的加速比的變化過程相似,都是在圖像數(shù)據(jù)達到一定大小后,加速比呈緩慢增長趨勢。
表2 三種算法在7X 7窗口下CPU和CU D A兩種平臺下運行的試驗結(jié)果(時間單位s)
對于不同尺寸的輸入圖像,內(nèi)核函數(shù)中分配的線程塊數(shù)目不同,圖像越大,分配的線程塊數(shù)目越多。由GPU的運行原理可知,當一個線程塊進行一些高延遲操作時,可以快速切換到其它線程塊繼續(xù)運算,從而掩蓋延時,提高運算效率。但是當線程塊數(shù)目足夠多,完全滿足了線程塊需要頻繁切換的要求后,再繼續(xù)增大線程塊的數(shù)目,執(zhí)行效率就不會再有明顯提高了,因此,加速比最后基本達到了穩(wěn)定。但是由于受到設(shè)備顯存大小的限制,加速比到達最大值后,繼續(xù)將輸入圖像尺寸增大一倍,設(shè)備顯存的占用將不再是最優(yōu)的情況,導(dǎo)致執(zhí)行效率的下降。
[1]許雪貴,張清.基于CUDA的高效并行遙感影像處理[J].地理空間信息,2011,9(6):47~54.
[2]郭一漢.基于CUDA的實時圖像拼接技術(shù)研究[D].國防科學(xué)技術(shù)大學(xué)研究生院,2011.
[3]Jason Sanders.GPU高性能編程CUDA實戰(zhàn)[M].機械工業(yè)出版社,2011.[4]張海軍,陳圣波,張旭晴,等.基于GPU的遙感圖像快速去噪處理[J].城市勘測,2010(2):96~98.
[5]侯俊杰.深入淺出MFC[M].華中科技大學(xué)出版社,1996.
[6]張 舒,褚艷利.GPU高性能運算之CUDA[M].中國水利水電出版社,2009.
[7]K.R.Castleman.數(shù)字圖像處理[M].1.電子工業(yè)出版社,1998.
TP751
A
1004-7344(2016)09-0262-02
2016-3-11