專利名稱:一種基于gpu的低照度圖像增強方法
技術(shù)領(lǐng)域:
本發(fā)明屬于互聯(lián)網(wǎng)通信領(lǐng)域,尤其涉及一種基于GPU的低照度圖像增強方法。
背景技術(shù):
圖像增強是數(shù)字圖像處理中一個重要技術(shù)領(lǐng)域,由于圖像采集過程中易受外界環(huán)境的影響,如夜晚、霧或陰雨天等條件,將大大降低圖像質(zhì)量。因此,圖像增強的目的在于通過調(diào)整圖像動態(tài)范圍,提高圖像對比度以凸顯圖像細節(jié)信息,改善圖像視覺質(zhì)量,從而為智能監(jiān)控、航空航天等領(lǐng)域提供信息保證?;谥狈綀D調(diào)整的圖像增強作為經(jīng)典算法被廣泛應(yīng)用,如直方圖均衡和直方圖匹配。雖然基于直方圖的圖像增強能夠提高圖像明暗區(qū)域之間的對比度,但是由于該算法利用圖像整體灰度的統(tǒng)計信息,為一種全局處理方式,忽視了圖像的局部信息,因此圖像的局部對比度并未得到改善,相反由于針對圖像中相同灰度級的像素點進行統(tǒng)一調(diào)節(jié),反而削弱了圖像的細節(jié)信息?;谏{(diào)映射的圖像增強也是一種較常用的方法,該方法采用簡單的非線性映射函數(shù)來調(diào)節(jié)圖像動態(tài)范圍,如Sigmoid函數(shù)、Log函數(shù)等,由于該類非線性函數(shù)形式單一,通常只能對亮度水平處在一定范圍的圖像實施有效調(diào)節(jié),同時該方法本質(zhì)也是全局處理的方式,無法區(qū)分圖像不同區(qū)域的細節(jié)信息。此外,Kimmel等提出了一種變分框架下的Retinex圖像增強算法,該算法中物體反射分量和光照分量均以光滑性先驗假設(shè)為基礎(chǔ),并將光照分量視為乘性噪聲,由此構(gòu)造統(tǒng)一的變分函數(shù)。變分框架下的Retinex圖像增強算法形式簡單、求解速度快,但是其假設(shè)光照分量是緩慢均勻變化,導(dǎo)致在圖像具有強烈邊緣時光照分量估計不準確,從而易產(chǎn)生光暈現(xiàn)象。通過上述分析可以發(fā)現(xiàn),局部對比度增強、亮度自適應(yīng)調(diào)節(jié)以及有效消除光暈現(xiàn)象是圖像增強要解決的關(guān)鍵問題。另一方面,隨著技術(shù)發(fā)展,采集到的圖像分辨率不斷提高,圖像增強問題往往面對的是海量數(shù)據(jù),尤其當(dāng)算法復(fù)雜度較高時,期望僅依賴CPU實現(xiàn)處理任務(wù)優(yōu)質(zhì)高效完成存在巨大困難。由于GPU (Graphic Processing Unit,圖形處理單元)將大量晶體管用于算術(shù)邏輯單元,使其在并行計算領(lǐng)域顯示出了巨大優(yōu)勢,并且隨著GPGPU (General Purpose GPU)技術(shù)的發(fā)展,GPU的存儲帶寬及浮點數(shù)計算能力迅速提高,因此同CPU相比它適合高計算密度的并行數(shù)據(jù)處理。尤其 NVIDIA 推出 CUDA (Compute Unified Device Architecture)后,為開發(fā)者提供了一套C語言編程平臺,大大降低了編程復(fù)雜性,使得GPU編程技術(shù)得以廣泛應(yīng)用于圖像處理領(lǐng)域。
發(fā)明內(nèi)容
本發(fā)明實施例提供了一種基于GPU的低照度圖像增強方法,能夠?qū)崿F(xiàn)亮度自適應(yīng)調(diào)節(jié),有效避免光暈現(xiàn)象,尤其使用GPU并行處理,提高了方法的執(zhí)行效率。
為此,本發(fā)明實施例提供了如下技術(shù)方案:一種基于GPU的低照度圖像增強方法,所述方法采用計算統(tǒng)一設(shè)備架構(gòu)CUDA編程模型,包括以下步驟:讀入原始低照度圖像,獲取原始圖像RGB通道數(shù)據(jù)及圖像尺寸信息,所述圖像尺寸信息包括寬度和高度;GPU初始化,包括設(shè)置紋理及CUDA數(shù)組類型,為數(shù)據(jù)開辟GPU顯存,將所述原始圖像RGB通道數(shù)據(jù)賦值予CUDA數(shù)組并綁定紋理內(nèi)存A ;依據(jù)所述圖像尺寸信息確定執(zhí)行Kernel函數(shù)的線程數(shù)目,包括設(shè)置block尺寸和設(shè)置grid尺寸,所述block,是指GPU線程塊單元,所述grid,是指GPU線程網(wǎng)單元;啟動所述Kernel函數(shù),從所述紋理內(nèi)存A中讀取所述原始圖像RGB通道數(shù)據(jù),求取原始圖像亮度分量,將計算結(jié)果存入所述CUDA數(shù)組并與紋理內(nèi)存B綁定;啟動所述Kernel函數(shù),從所述紋理內(nèi)存B中讀取所述原始圖像亮度分量,對其進行圖像增強處理,將增強后的圖像亮度數(shù)據(jù)存入所述CUDA數(shù)組并與紋理內(nèi)存C綁定,所述圖像增強處理包括亮度分量的非線性調(diào)制和對比度增強;啟動所述Kernel函數(shù),分別從所述紋理內(nèi)存A、所述紋理內(nèi)存B和所述紋理內(nèi)存C中讀取所述原始圖像RGB通道數(shù)據(jù)、所述原始圖像亮度分量及所述增強后的圖像亮度分量,根據(jù)獲得的數(shù)據(jù)恢復(fù)圖像顏色,將計算結(jié)果傳回CPU端,輸出保存;釋放GPU顯存。與現(xiàn)有技術(shù)相比,本發(fā)明的實施例具有如下優(yōu)點:首先,本發(fā)明提出的基于GPU的低照度圖像增強方法,實現(xiàn)了亮度自適應(yīng)調(diào)節(jié),將高維空間形象幾何方法用于圖像局部對比度增強,有效抑制了光暈現(xiàn)象的出現(xiàn),并且利用CUDA技術(shù),實現(xiàn)了算法的GPU并行加速,有效提高了處理效率,加速比可達3-5倍。而且,本發(fā)明圖像增強算法的全部步驟均在GPU上實現(xiàn),因此只需一次CPU端到GTO端及一次GPU端到CPU端的數(shù)據(jù)傳遞,避免數(shù)據(jù)頻繁傳遞,從而有利于算法效率的提高。最后,本發(fā)明中,傳至GPU端的數(shù)據(jù)大多存入紋理存儲器,降低了數(shù)據(jù)的讀取速度,進一步保證了算法的處理效率。
圖1是本發(fā)明實施例提供的基于GPU的低照度圖像增強方法的方法流程圖;圖2是本發(fā)明實施例提供的為非線性調(diào)制曲線隨參數(shù)Θ的變化情況圖;圖3是本發(fā)明實施例提供的對比度增強實現(xiàn)方法示意圖;圖4是本發(fā)明實施例提供的測試結(jié)果對比圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的僅是本發(fā)明的一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。圖1是本發(fā)明實施例提供的基于GPU的低照度圖像增強方法的方法流程圖,為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分。本實施例所用圖像RGB彩色圖像,圖像大小600X398像素,位深24bit。測試平臺:CPU:1ntel (R) Core (TM) 2Quad CPU Q660002.4GHz (4CPUs) ;GPU =NVIDIAGeforce 8400GS (2SM, 16SP)。如圖1所示,該方法包括以下步驟:步驟101,讀入原始圖像,獲取RGB數(shù)據(jù)。具體的,讀入原始低照度圖像,獲取原始圖像RGB通道數(shù)據(jù)及圖像尺寸信息,所述圖像尺寸信息包括寬度和高度,記為imgW和imgH。步驟102,初始化GPU。具體的,GPU初始化,包括設(shè)置紋理及CUDA數(shù)組類型,為數(shù)據(jù)開辟GPU顯存,將所述原始圖像RGB通道數(shù)據(jù)賦值 予CUDA數(shù)組并綁定紋理內(nèi)存A,從而實現(xiàn)數(shù)據(jù)CPU端到GPU端的傳遞。同時,依據(jù)所述圖像尺寸信息確定執(zhí)行Kernel函數(shù)的線程數(shù)目,包括設(shè)置block尺寸和設(shè)置grid尺寸,所述block,是指GPU線程塊單元,所述grid,是指GPU線程網(wǎng)單元。優(yōu)選的,所述block尺寸,可設(shè)置為128或256,所述grid尺寸依據(jù)所述圖像尺寸信息和block尺寸設(shè)置。優(yōu)選的,可配置block為16 X 16 二維線程塊,grid尺寸根據(jù)下述公式確定:gridX = (imgff+blockX-1) blockXgridY = (imgH+blockY-1)blockY其中,blockX為線程塊X方向尺寸,blockY為線程塊Y方向尺寸,gridX為線程網(wǎng)X方向尺寸,gridY為線程網(wǎng)Y方向尺寸。步驟103,提取圖像亮度分量。具體的,啟動所述Kernel函數(shù),從所述紋理內(nèi)存A中讀取所述原始圖像RGB通道數(shù)據(jù),求取原始圖像亮度分量,將計算結(jié)果存入所述CUDA數(shù)組并與紋理內(nèi)存B綁定。優(yōu)選的,計算每個像素點RGB三通道灰度值的最大值,得到所述原始圖像亮度分量,并將計算結(jié)果存入CUDA數(shù)組并與紋理內(nèi)存B綁定。步驟104,計算非線性亮度調(diào)節(jié)參數(shù)。具體的,啟動所述Kernel函數(shù),從所述紋理內(nèi)存B中讀取所述原始圖像亮度分量,對其進行圖像增強處理,將增強后的圖像亮度數(shù)據(jù)存入所述CUDA數(shù)組并與紋理內(nèi)存C綁定。其中,圖像增強處理包括亮度分量的非線性調(diào)制(即步驟105)和對比度增強(即步驟106),具體的,亮度分量的非線性調(diào)制后,亮度同原始亮度滿足函數(shù)關(guān)系:= /^i +Ρ2Θ+Ρ}Θ~公式中,I為原始亮度值,I1為非線性調(diào)制后亮度值,P1, P2, P3均為常數(shù),且滿足Pl+P2+P3 = I, Θ為自適應(yīng)調(diào)節(jié)參數(shù),其值依據(jù)輸入圖像的整體亮度而定,具體可應(yīng)用下述公式:
權(quán)利要求
1.一種基于GPU的低照度圖像增強方法,所述方法采用計算統(tǒng)一設(shè)備架構(gòu)CUDA編程模型,其特征在于,包括以下步驟: A:讀入原始低照度圖像,獲取原始圖像RGB通道數(shù)據(jù)及圖像尺寸信息,所述圖像尺寸信息包括寬度和高度; B =GPU初始化,包括設(shè)置紋理及CUDA數(shù)組類型,為數(shù)據(jù)開辟GPU顯存,將所述原始圖像RGB通道數(shù)據(jù)賦值予CUDA數(shù)組并綁定紋理內(nèi)存A ; C:依據(jù)所述圖像尺寸信息確定執(zhí)行Kernel函數(shù)的線程數(shù)目,包括設(shè)置block尺寸和設(shè)置grid尺寸,所述block,是指GPU線程塊單元,所述grid,是指GPU線程網(wǎng)單元; D:啟動所述Kernel函數(shù),從所述紋理內(nèi)存A中讀取所述原始圖像RGB通道數(shù)據(jù),求取原始圖像亮度分量,將計算結(jié)果存入所述CUDA數(shù)組并與紋理內(nèi)存B綁定; E:啟動所述Kernel函數(shù),從所述紋理內(nèi)存B中讀取所述原始圖像亮度分量,對其進行圖像增強處理,將增強后的圖像亮度數(shù)據(jù)存入所述CUDA數(shù)組并與紋理內(nèi)存C綁定,所述圖像增強處理包括亮度分量的非線性調(diào)制和對比度增強; F:啟動所述Kernel函數(shù),分別從所述紋理內(nèi)存A、所述紋理內(nèi)存B和所述紋理內(nèi)存C中讀取所述原始圖像RGB通道數(shù)據(jù)、所述原始圖像亮度分量及所述增強后的圖像亮度分量,根據(jù)獲得的數(shù)據(jù)恢復(fù)圖像顏色,將計算結(jié)果傳回CPU端,輸出保存; G:釋放GPU顯存。
2.如權(quán)利要求1所述的基于GPU的低照度圖像增強方法,其特征在于,所述步驟C還包括以下步驟: Cl:所述block尺寸,可設(shè)置為128或256,所述grid尺寸依據(jù)所述圖像尺寸信息和block尺寸設(shè)置。
3.如權(quán)利要求2所述的基于GPU的低照度圖像增強方法,其特征在于,所述步驟Cl還包括以下步驟: c2:可配置block為16 X 16 二維線程塊,grid尺寸根據(jù)下述公式確定: gridX = (imgff+blockX-1)blockX gridY = (imgH+blockY-1)blockY 其中,blockX為線程塊X方向尺寸,blockY為線程塊Y方向尺寸,gridX為線程網(wǎng)X方向尺寸,gridY為線程網(wǎng)Y方向尺寸。
4.如權(quán)利要求1或2所述的基于GPU的低照度圖像增強方法,其特征在于,所述步驟D還包括以下步驟: d:計算每個像素點RGB三通道灰度值的最大值,得到所述原始圖像亮度分量。
5.如權(quán)利要求1或2所述的基于GPU的低照度圖像增強方法,其特征在于,所述步驟E還包括以下步驟: el:所述亮度分量的非線性調(diào)制后,亮度同原始亮度滿足函數(shù)關(guān)系: j = jPi+P2e+P ,e2 公式中,I為原始亮度值,I1為非線性調(diào)制后亮度值,為常數(shù),且滿SpJpJp3=1,θ為自適應(yīng)調(diào)節(jié)參數(shù),其值依據(jù)輸入圖像的整體亮度而定,具體可應(yīng)用下述公式:
6.如權(quán)利要求1或2所述的基于GPU的低照度圖像增強方法,其特征在于,所述步驟E還包括以下步驟: e2:所述對比度增強,采用高維空間形象幾何方法,所述方法將圖像視作高維空間中的矢量,包括如下步驟: e201:將原圖像作對比度退化處理,包括通過低通濾波方法得到退化圖像,所述原圖像即原矢量,所述退化圖像即退化矢量; e202:所述退化矢量與所述原矢量作差確定退化方向,其反方向為對比度增強方向; e203:所述原矢量同所述對比度增強方向加權(quán)求和,獲得對比度增強后圖像; e204:重復(fù)步驟e201至e203,直到滿足迭代停止條件停止迭代。
7.如權(quán)利要求6所述的基于GPU的低照度圖像增強方法,其特征在于,所述步驟e201還包括以下步驟: e2011:所述對比度退化處理選用盒式濾波Box Filter,濾波半徑為2。
8.如權(quán)利要求6所述的基于GPU的低照度圖像增強方法,其特征在于,所述步驟e204還包括以下步驟: e2041:所述迭代停止條件包括:滿足前后兩次迭代結(jié)果的差異不大于某一常數(shù),或者設(shè)置最大迭代次數(shù),當(dāng)?shù)螖?shù)超過所述最大迭代次數(shù)后,亦停止迭代。
9.如權(quán)利要求8所述的基于GPU的低照度圖像增強方法,其特征在于,所述步驟e2041中的所述迭代停止條件,包括如下步驟: e2042:通過計算第k次迭代結(jié)果與第k-Ι結(jié)果的歐氏距離,判斷是否滿足公式:
10.如權(quán)利要求1或2所述的基于GPU的低照度圖像增強方法,其特征在于,所述步驟F,還包括以下步驟: fl:所述根據(jù)獲得的數(shù)據(jù)恢復(fù)圖像顏色,可采用線性恢復(fù)方法,具體公式如下:
全文摘要
本發(fā)明適用于互聯(lián)網(wǎng)通信領(lǐng)域,公開了一種基于GPU的低照度圖像增強方法,采用計算統(tǒng)一設(shè)備架構(gòu)(CUDA)編程模型,包括獲取原始圖像RGB通道數(shù)據(jù)及其尺寸信息,GPU初始化,依據(jù)原始圖像尺寸確定執(zhí)行Kernel函數(shù)的線程數(shù)目,然后啟動Kernel函數(shù),求取原始圖像亮度分量,并對原始亮度分量進行圖像增強處理,包括亮度分量的非線性調(diào)制和對比度增強,再啟動Kernel函數(shù),恢復(fù)圖像顏色,將計算結(jié)果傳回CPU端,保存為圖片,最后釋放GPU顯存。本發(fā)明實現(xiàn)了圖像亮度自適應(yīng)調(diào)節(jié),利用高維空間形象幾何方法進行對比度增強,避免了光暈現(xiàn)象,尤其使用GPU并行加速,有效提高了處理速度。
文檔編號G06T1/00GK103208103SQ20131012935
公開日2013年7月17日 申請日期2013年4月15日 優(yōu)先權(quán)日2013年4月15日
發(fā)明者李達, 肖泉 申請人:中國科學(xué)院蘇州納米技術(shù)與納米仿生研究所