張紹良,閆鈞華,劉 成,朱智超
(南京航空航天大學(xué) 航天學(xué)院,江蘇 南京 210016)
紅外探測技術(shù)具有環(huán)境適應(yīng)性強,在夜間和惡劣氣候環(huán)境下均能工作,抗干擾性強且具有一定的辨別真?zhèn)蔚哪芰?。但是,紅外圖像相對可見光圖像,整體灰度分布低且集中、性噪比和對比度低、視覺模糊[1],因此要對紅外圖像進行增強,提高圖像的對比度,突出圖像中感興趣的信息,抑制無用的信息。常用的圖像增強方法有灰度變換、直方圖修正、噪聲濾除、圖像銳化、頻率濾波和彩色增強等[2-3]。在對圖象銳化和噪聲濾除的研究中發(fā)現(xiàn),圖像銳化可以很好的突出圖像邊緣信息,卻不能保留圖像背景信息;降噪濾波則在降噪的同時使得圖像邊緣模糊。本文采用多分辨率圖像融合[4]的相關(guān)算法融合平滑后的圖像與銳化后的圖像,既突出圖像邊緣,又保留圖像背景信息,實現(xiàn)圖像增強。
近年來,隨著GPU技術(shù)的發(fā)展,GPU已具備很高的計算性能,目前主流GPU的浮點計算能力達到主流CPU的10倍以上。2007年6月,NVIDIA推出的CUDA[5](Compute Unified Device Architecture,統(tǒng)一計算設(shè)備架構(gòu))實現(xiàn)了GPU上的數(shù)據(jù)并行處理,使得數(shù)據(jù)的處理能力獲得幾倍,幾十倍,甚至上百倍的加速比,已在圖像處理、分子動力學(xué)仿真、生物計算、音視頻編解碼等方面得到廣泛應(yīng)用[6]。如何充分應(yīng)用GPU的并行計算特點實現(xiàn)復(fù)雜問題的快速計算,實現(xiàn)實時處理,已成為當(dāng)今的熱點問題。文中研究基于CUDA快速實現(xiàn)紅外圖像增強算法,具有良好的紅外圖像增強性能,同時具有很高的實時性。
邊緣檢測算法的好壞對圖像增強的效果具有較大的影響,經(jīng)典Sobel邊緣檢測算法[4-5]具有提取的邊緣顯著、計算量小、速度快等特點,在很多領(lǐng)域得到了廣泛的應(yīng)用。但是經(jīng)典Sobel邊緣檢測算法檢測的方向有限,只檢測水平方向和豎直方向,對其他方向紋理特征邊緣的檢測能力弱,抗噪能力比較低。為彌補經(jīng)典Sobel邊緣檢測算法在邊緣方向上的不足,對Sobel算法進行改進,增加對45°和135°兩個邊緣方向的檢測,并考慮像素位置對提取邊緣的影響。Sobel算法是一種基于梯度的邊緣檢測算法,采用模板掩模運算。如圖1所示,(a)表示以(i,j)為中心的鄰域圖像像素點,(b)表示掩模模板,(c)表示邊緣提取后(i,j)位置像素值,則掩模運算過程可用式(1)表示。
圖1 Sobel算子掩模過程Fig.1 Mask process of Sobel operator
式中P(i,j),表示掩模處理前的像素點,P(′i,j)表示掩模 處理后的像素點,f(x,y)表示掩模模板。除了水平和豎直兩個邊緣方向的檢測外,增加對45°和135°兩個邊緣方向的檢測,4個邊緣方向的檢測模板為 f0°, f45°, f90°, f135°,如圖 2 所示。 掩模后的結(jié)果為中的最大值,如式(2)。
圖2 Sobel算子Fig.2 Sobel operator
圖 5(e)為 Sobel邊緣檢測結(jié)果,圖 5(f)為改進的 Sobel邊緣檢測結(jié)果。實驗結(jié)果表明,改進的Sobel算法改善了經(jīng)典Sobel算法邊緣檢測方向上的不足,提高了邊緣檢測的質(zhì)量。
紅外圖像一般受到高斯噪聲和椒鹽噪聲影響,均值濾波可對高斯噪聲有很好的抑制效果,但是對椒鹽噪聲則無能為力。中值濾波算法[7]是一種非線性濾波算法,首先以圖像的每一點(i,j)為中心選取一個濾波區(qū)域,一般可取 3×3的區(qū)域,然后對區(qū)域內(nèi)的數(shù)據(jù)排列大小,取其中的中間值作為濾波輸出結(jié)果。它對椒鹽噪聲有較好的抑制效果,但對高斯噪聲的抑制作用不強。比較均值濾波、中值濾波兩種算法各自的優(yōu)缺點,本文將兩種算法相結(jié)合,提出一種改進的中值濾波算法,算法中像素點在覆蓋區(qū)域中的不同,對中值濾波結(jié)果的影響程度不同。本文采用3×3的區(qū)域,中心點的影響因素為1/3,其他點的影響因素為1/12,算法描述如下。
1)取(i,j)位置 3×3 的鄰域,依據(jù)鄰域中點的位置不同,將整個鄰域分為3個區(qū)域,用X、Y、Z表示,如圖3所示。
圖3 改進的中值濾波過程Fig.3 Improvedmedian filtering process
2)給X、Y、Z區(qū)域點分配不同的權(quán)值,X區(qū)域的權(quán)值取1/12,Y區(qū)域的權(quán)值取1/12,Z區(qū)域的權(quán)值取1/3。將X、Y、Z區(qū)域的像素值分別與其權(quán)值相乘,得到新值。
3)分別取 X、Y、Z 區(qū)域新值的中值 fx、 fy、 fz,如果參與的數(shù)據(jù)個數(shù)為偶數(shù),則結(jié)果為中間兩個值的平均值。
4)取 fx、 fy、 fz的中值作為改進中值濾波 f(i,j)輸出。
改進的中值濾波算法相對于經(jīng)典中值濾波算法,增強了在不善于循環(huán)排序的并行CUDA語言中的應(yīng)用效果;并且給像素點加入權(quán)值,采用兩級中值濾波,兼顧平均值濾波,從而提高了對噪聲的濾除效果,中值濾波和改進中值濾波效果見圖 5(c)和圖 5(d)。
根據(jù)濾波圖像和邊緣檢測圖像的特征不同,文中采用Laplace
金字塔分解的圖像融合算法[8],達到增強圖像的目的[3,9-10]。算法如圖4所示:分為Guass塔式分解、建立Laplace金字塔、塔式子圖像融合和Laplace圖像重構(gòu)。Laplace算法是一種二維運算算法,對于CUDA并行計算,計算較為復(fù)雜,數(shù)據(jù)傳遞次數(shù)多,降低了GPU并行計算的優(yōu)勢。因此,文中對Laplace算法進行了改進,w(m,n)=w(n)Tw(n),其中:
圖4 Laplace金字塔分解的圖像增強Fig.4 The image enhancement process by Laplace pyramid decomposition
可以將Gauss塔式分解先對每一行進行分解,再對每一列進行分解,理論證明,解耦前后數(shù)據(jù)處理的作用完全相同,但是解耦前要處理25次取值和加法運算,解耦后只需處理10次取值和加法運算,加快了處理速度。
改進的Laplace算法步驟如下:
1)Gauss塔式分解,包括低通濾波和降采樣過程。設(shè)原圖像G0為高斯分解第0層,則Gauss金字塔分解變換可用式(3)表示。
2)由Gauss金字塔建立Laplace金字塔。此過程分為內(nèi)插放大和帶通濾波兩個過程。內(nèi)插放大過程由式(4)、(5)表示,內(nèi)插放大先對行數(shù)據(jù)內(nèi)插放大兩倍,再對列數(shù)據(jù)內(nèi)插放大兩倍,并且插值時,奇數(shù)位置用式(4)插值,偶數(shù)位置用式(5)插值。由Gl內(nèi)插放大,得到放大的圖像G*l,使G*l的尺寸與Gl-1的尺寸相同。
帶通濾波過程就是Gauss金字塔本層圖像與其高一層圖像經(jīng)過放大之后的圖像之差。如式(6)所示。
3)Laplace子圖融合過程。對不同層次的子圖,采取不同的融合方法。本文將Laplace頂層子圖作為圖像的低頻子圖,其余層次子圖作為圖像的高頻子圖。Sobel邊緣檢測后的圖像低頻子圖的信息較少,將中值濾波后的圖像低頻子圖作為融合后的圖像低頻子圖。對于高頻子圖,則需要分析紋理特征,根據(jù)各自不同特點,采用基于區(qū)域特性的能量加權(quán)平均融合規(guī)則。邊緣提取的子圖,有較明顯的紋理特征,取能量最高的方向的能量均值作為該區(qū)域的能量權(quán)值,而中值濾波的圖像則按照本區(qū)域能量均值作為能量權(quán)值,融合過程用式(7)表示。
其中G為融合后高頻子圖,G1、G2分別為邊緣檢測和中值濾波的高頻子圖,H1、H2為對應(yīng)的能量權(quán)值。
4)Laplace 圖像重構(gòu)。 從 laplace 金字塔 LP0,LP1,…,LPN的頂層開始,按(8)式遞推,便可得到重構(gòu)圖像。
其中G*l+1由Gl+1內(nèi)插放大,最終可獲得融合圖像G0,即增強的紅外圖像,圖像增強效果見圖 5(g)和圖 5(h)。
改進的Laplace金字塔圖像融合算法與原Laplace金字塔融合算法相比,在Gauss分解過程中減少了3/5的計算量,在內(nèi)插放大過程則減少了4/5的計算量。另外,比起原算法,改進算法跟適合CUDA實現(xiàn)。
紅外圖像增強的CUDA實現(xiàn)算法主要分為改進Sobel邊緣檢測、改進中值濾波和改進Laplace金字塔分解圖像融合3個部分,其中改進Sobel邊緣檢測和改進中值濾波算法采用紋理拾取操作實現(xiàn),并將處理后的數(shù)據(jù)放在全局存儲器中,作為改進Laplace圖像融合的數(shù)據(jù)源。
1)聲明CUDA數(shù)組,分配二維數(shù)據(jù)空間,用cuda Creat Channel Desc()實例化結(jié)構(gòu)體 cudaChannelFormat,使用cudaMallocArray分配二維的 CUDA數(shù)組,cudaMemcpyToArray()
將數(shù)據(jù)拷貝到紋理存儲器中。
2)聲明紋理參考系。紋理參考系通過一個作用范圍為全文 件 的 texture 型 變 量 聲 明 :texture <unsigned char,2,cudaReadModeNormailzedFloat>texRef。
3)設(shè)置運行時紋理參考屬性為位置最近像元值、非歸一化、鉗位模式。方法如下:
4)紋理邦定。采用 cudaBindTextureToArray()將數(shù)據(jù)和紋理綁定,解除綁定用cudaUnbindTexture()。
5)紋理拾取與kernel啟動。紋理拾取采用tex2D(texRef,… )實現(xiàn)。
改進 Sobel邊緣檢測調(diào)用的 kernel函數(shù)為 Sobel<<<gridsize,blocksize,0,stream>>>(…);
改 進 中 值 濾 波 調(diào) 用 filter <<<gridsize,blocksize,0,stream>>>(…);
1)申請二維數(shù)據(jù)空間:cudaMallocPitch((void**)& dst,&pitch,size);
2)定義 GPU 線程執(zhí)行配置:Dim3 grid(blockx,blocky,1);Dim3 block(threadx,thready,1);
3)啟動 kernel程序:Kernel<<<grid,block,0,stream>>>(…);
4)釋放 GPU 數(shù)據(jù)空間:cudaFree(…);
Kernel函數(shù)的編寫結(jié)構(gòu)為:
定義線程索引
定義Shared Memory存儲器結(jié)構(gòu):
文中所采用的實驗環(huán)境:CPU采用Intel Core 2 Quad Q8200,4核, 主頻 2.33 GHz;GPU 采用支持 CUDA 的 NVIDA GeForce GTX 480,計算能力 2.0,GPU 運行頻率 1.4G,操作系統(tǒng)為Windows XP;實驗測試平臺采用visual studio 2005,結(jié)合CUDA2.0,windows API和 Opencv。 實驗圖像為 256×256 的 8位灰度紅外圖像,圖 5(a)為原圖像,圖 5(b)為加噪聲圖像。本文所研究算法的圖像處理結(jié)果如圖5中各圖像所示。
圖5 圖像數(shù)據(jù)處理結(jié)果Fig.5 The results of processing image data
表1列出了圖5中各圖像的平均值、標準差、平均梯度、空間頻率和歸一化方差等性能指標。由表1可得如下結(jié)論:①對比圖 5(a)、(b)、(g)和(h),本文所研究的的紅外圖形增強算法有較好的增強效果,但抗噪聲干擾方面還有待提高。②對比圖 5(c)、(d)和圖 5(e)、(f),改進的中值濾波和改進的Sobel邊緣檢測算法比改進前的算法在圖像處理的質(zhì)量上有一定的提高。
表1 圖5中各圖像性能指標數(shù)據(jù)統(tǒng)計Tab.1 Image performance statistics in figure 5
表2列出了文中所研究的紅外圖像增強算法在GPU和CPU上執(zhí)行時間的實驗結(jié)果。
表2中數(shù)據(jù)的對比圖線如圖6所示。從表2和圖6可得到如下結(jié)論:1)文中所研究的紅外圖像增強算法在GPU上的執(zhí)行時間明顯少于CPU上的執(zhí)行時間,GPU有明顯的加速效果。原因分為兩個方面:一方面,GPU有著高度的并行計算能力,能同時處理多個數(shù)據(jù),分辨率為3 096×3 096的圖像的加速比達32.189。另一方面,本文所研究的算法有較好的并行特性,如在改進的中值濾波算法中,除去了原算法中的排序算法;改進的Laplace塔式分解融合算法中,在Gauss分解和內(nèi)插放大方面做了修改,使算法有更好的分塊和并行特性,從而提高了GPU的運算效率。 2)GPU處理低分辨率的圖像的加速效果沒有高分辨率圖像效果好。分辨率為3 096×3 096的圖像的GPU加速比是分辨率為512×512的圖象的3.5倍。因為有一定的時間開銷花費在系統(tǒng)調(diào)度和數(shù)據(jù)傳輸上,被處理的數(shù)據(jù)越少,此方面占的比重越大。另外,被處理的數(shù)據(jù)量很大時,所需的線程不足,一部分并行計算反而被轉(zhuǎn)化為串行,使得GPU的加速比的增量減緩,GPU的加速性能不能進一步提高。
表2 紅外圖像增強算法在GPU與CPU上的執(zhí)行時間對比Tab.2 Execution time comparison of in frared image enhancem ent algorithms between by the GPU and CPU
圖6 CPU與GPU執(zhí)行效率對比圖Fig.6 The comparison of execution efficiency between CPU and GPU
通過對紅外圖像進行改進的中值濾波和改進的Sobel邊緣檢測處理后,分析處理后圖像的特征,采用改進的Laplace金字塔分解的圖像融合算法,并基于CUDA并行處理技術(shù),在可編程GPU上實現(xiàn)了紅外圖像快速增強的目的。這種方法可提高紅外圖像增強的實時性,適用于對實時性要求較高的領(lǐng)域。CUDA的并行計算技術(shù)的應(yīng)用復(fù)雜,如何更充分的利用GPU的并行計算優(yōu)勢,加快紅外圖像處理速度,依然值得進一步研究。
[1]李俊山,楊威,張雄美.紅外圖像處理、分析與融合[M].北京:科學(xué)出版社,2009.
[2]朱玉娥,吳曉紅,何小海.基于GPU圖像邊緣檢測的實時性[J].電子測量技術(shù),2009,32(2):140-142.
ZHU Yu-e,WU Xiao-hong,HE Xiao-hai.Real-time edge detection based on GPU[J].Electronic Measurement Technology,2009,32(2):140-142.
[3]李建林,俞建成,孫勝利.像素級的圖像融合方法[J].紅外,2007,28(1):9-13.
LI Jian-lin,YU Jian-cheng,SUN Li-Sheng.A Pixel-level image fusion approach[J].Infrared,2007,28(1):9-13.
[4]Yi S,Labate D,Easley GR,et al.A shearlet approaeh to edge analysis and detection[J].Image Processing,2008,18 (5):929-941.
[5]NVIDIA Corporation.CUDA Programming Guide 2.0[EB/OL].(2009).http://www.nvidia.com.
[6]張舒,褚艷利.GPU高性能運算之CUDA[M].北京:中國水利出版社,2009.
[7]沈庭之,王衛(wèi)江,云雪梅.?dāng)?shù)字圖像處理及模式識別[M].2版.北京:北京理工大學(xué)出版社,2007.
[8]Simth MI, Heather JP.A review of image fusion technology in 2005[J].Proc.of SPIE,2005(5782):29-45.
[9]劉成,閆鈞華.用于飛行員視覺增強的快速紅外圖像增強方法[J].計算機工程與設(shè)計,2011,32(3):1002-1005.
LIU Cheng,YAN Jun-hua.Fast infrared image enhancement method for enhancing pilots’ sight[J].Computer Engineering and Design,2011,32(3):1002-1005.
[10]敬忠良,肖剛,李振華.圖像融合:理論與應(yīng)用[M].北京:高等出版社,2007.