(上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
在日常生活中,霧霾天氣隨處可見(jiàn)。尤其近幾年,我國(guó)很多地區(qū)頻繁出現(xiàn)嚴(yán)重霧霾天氣。霧霾天氣對(duì)人們的出行和健康都會(huì)造成嚴(yán)重影響。首先,霧霾天氣會(huì)嚴(yán)重降低物體的可見(jiàn)度水平,使戶外圖像采集設(shè)備(如交通視頻監(jiān)控、攝像機(jī)、遙感衛(wèi)星等)采集到的圖像嚴(yán)重降質(zhì),如出現(xiàn)模糊不清、對(duì)比度低、邊緣模糊、顏色偏移與失真等現(xiàn)象[1],嚴(yán)重影響了圖像在交通、偵查及航海等方面的應(yīng)用。其次,霧霾中存在很多有害物質(zhì),這些物質(zhì)會(huì)嚴(yán)重影響人們身體健康。所以,在霧霾環(huán)境下,如何將降質(zhì)圖像恢復(fù)成原始圖像,是當(dāng)前需要解決的一個(gè)重要問(wèn)題。
在模糊或多霧場(chǎng)景中,圖像去霧是恢復(fù)圖像的一種基本方法[2]。針對(duì)有霧圖像恢復(fù)技術(shù),人們提出了很多相關(guān)算法,現(xiàn)有圖像去霧方法主要包括基于物理模型的圖像復(fù)原和基于圖像處理技術(shù)的圖像增強(qiáng)兩大類(lèi)[3]?;谖锢砟P偷膱D像復(fù)原方法主要是在霧霾條件下建立物理成像模型,分析圖像機(jī)理和降質(zhì)過(guò)程,根據(jù)降質(zhì)過(guò)程推導(dǎo)圖像退化原因,并運(yùn)用有霧圖像的先驗(yàn)知識(shí)恢復(fù)有霧圖像。在大氣物理散射模型中,圖像復(fù)原方法通常需要估計(jì)大氣光值、透射率等參數(shù),通過(guò)這些參數(shù)求出清晰圖像,從而恢復(fù)有霧圖像[4]?;谖锢砟P偷膱D像復(fù)原方法主要包括基于偏微分方程的去霧算法、基于先驗(yàn)知識(shí)的去霧算法和基于場(chǎng)景深度的去霧算法等[5-7]?;趫D像處理技術(shù)的圖像增強(qiáng)方法主要是對(duì)有霧圖像本身進(jìn)行增強(qiáng),此類(lèi)方法不需要考慮霧霾條件下的物理成像模型,而是通過(guò)突出強(qiáng)調(diào)有霧圖像亮度和色彩或提高有霧圖像的對(duì)比度,從而改善圖像視覺(jué)效果。基于圖像處理技術(shù)的圖像增強(qiáng)方法主要包括基于直方圖均衡化的去霧算法、基于Retinex 理論的去霧算法和基于同態(tài)濾波的去霧算法等[8-9]。
近年來(lái),單幅圖像去霧技術(shù)取得了顯著進(jìn)展。例如,F(xiàn)attal 等[10]提出基于獨(dú)立分量分析(ICA)的彩色圖像去霧模型,由于該方法需要大量顏色信息,所以不適用于濃霧圖像;Tan 等[11]提出一種基于馬爾科夫隨機(jī)場(chǎng)(MRF)的圖像局部對(duì)比度最大化去霧方法,該方法有較好的去霧效果,但往往也會(huì)出現(xiàn)過(guò)飽和以及去霧不徹底等現(xiàn)象;He等[12]提出一種基于暗通道先驗(yàn)(DCP)的單幅圖像去霧算法,但該算法不適用于天空等明亮區(qū)域,處理后的圖像會(huì)出現(xiàn)明顯的顏色失真現(xiàn)象;Meng 等[13]提出一種正則化圖像去霧算法,雖然該方法有明顯的去霧效果,但圖像去霧后邊緣會(huì)存在光暈偽影現(xiàn)象。
因此,針對(duì)現(xiàn)有算法存在的去霧不徹底、圖像周?chē)嬖诠鈺瀭斡凹邦伾д娴葐?wèn)題,提出一種將圖像復(fù)原與圖像增強(qiáng)兩種思想相結(jié)合的算法,即基于暗通道先驗(yàn)的Ret?inex 去霧算法。首先,利用改進(jìn)的暗通道先驗(yàn)算法得到初步去霧圖像;其次,對(duì)初步去霧圖像進(jìn)行Retinex 圖像增強(qiáng)處理;最后,運(yùn)用還原函數(shù)恢復(fù)色彩,避免出現(xiàn)顏色失真現(xiàn)象。
暗通道先驗(yàn)(DCP)理論由He 等[12]提出,其研究了大量室外清晰圖像,經(jīng)多次研究發(fā)現(xiàn),大多數(shù)圖像區(qū)域(除天空區(qū)域與白色區(qū)域外)都有一個(gè)最小值近似于0 的像素通道,后來(lái)其將該發(fā)現(xiàn)定義為暗通道先驗(yàn)理論。
在計(jì)算機(jī)視覺(jué)理論中,模糊圖像的大氣物理散射模型可表示為:
其中,I(x)、J(x)分別為有霧圖像和無(wú)霧圖像,t(x)為透射率,A為大氣光值。根據(jù)式(1)可得出,若模糊圖像I(x)已知,并且能夠獲得圖像的大氣光值A(chǔ)和透射率t(x),則可求出原始無(wú)霧圖像。
暗通道先驗(yàn)算法步驟如下:
(1)獲取暗通道圖像。根據(jù)以下公式可得出:
從式(2)可以看出,要想獲取暗通道圖像,首先必須求出輸入圖像3 個(gè)通道(分別為R、G、B)中的最小值,然后將求出的最小值組成灰度圖,并進(jìn)行最小值濾波處理,得到的圖像即為暗通道圖像。其中,Jdark(x)為暗通道圖像,Ω(x)是以x為中心的集中區(qū)域,Jc(c)表示J(c)的顏色通道。
(2)粗略估計(jì)透射率。
其中,ω為霧的保留系數(shù),通常ω取值范圍為[0.7,0.95],本文取ω的值為0.95。
(3)采用導(dǎo)向?yàn)V波對(duì)透射率進(jìn)行細(xì)化處理。由于根據(jù)式(3)估計(jì)出的透射率值比較粗糙,導(dǎo)致處理后的圖像不清晰,所以需進(jìn)一步對(duì)透射率進(jìn)行細(xì)化操作。He 等[12]首先提出運(yùn)用軟摳圖法對(duì)透射率t(x)進(jìn)行細(xì)化,但該方法的計(jì)算復(fù)雜度和時(shí)間復(fù)雜度較高。其后來(lái)又提出采用導(dǎo)向?yàn)V波代替軟摳圖法,該方法與軟摳圖法相比,顯著優(yōu)化了計(jì)算復(fù)雜度和時(shí)間復(fù)雜度,并且在邊緣保持方面效果較好。因此,本文采用導(dǎo)向?yàn)V波對(duì)透射率進(jìn)行細(xì)化操作。
(4)估計(jì)大氣光值。首先在暗通道中獲取亮度最高的0.1% 的像素點(diǎn),然后在原始圖像中,根據(jù)這些像素點(diǎn)位置選出亮度最高的點(diǎn),最后將有霧圖像中3 個(gè)通道的最大像素值作為大氣光值A(chǔ)。
(5)初步復(fù)原圖像。由于當(dāng)圖像中存在大片較亮(如天空、水面等)區(qū)域時(shí),經(jīng)原始暗通道先驗(yàn)?zāi)P吞幚砗蟮膱D像會(huì)出現(xiàn)塊狀現(xiàn)象,所以為避免該現(xiàn)象,本文引入數(shù)值t0,即容差解決該問(wèn)題。求解公式如下:
本文取t0的值為0.2。根據(jù)式(4)對(duì)3 個(gè)通道分別進(jìn)行去霧處理,即可求出初步復(fù)原圖像。
采用改進(jìn)的暗通道先驗(yàn)去霧算法對(duì)有霧圖像進(jìn)行處理后得到初步復(fù)原圖像的可見(jiàn)度水平有一定程度提高,但存在圖像細(xì)節(jié)信息丟失、色調(diào)整體偏暗、對(duì)比度不高、邊緣部分出現(xiàn)光暈等問(wèn)題。所以針對(duì)這些問(wèn)題,需對(duì)初步復(fù)原圖像進(jìn)一步進(jìn)行Retinex 增強(qiáng)處理。
基于顏色恒常性的Retinex 理論是由Edwin 首次提出的,該理論以人眼視覺(jué)系統(tǒng)為基礎(chǔ),認(rèn)為人們一般不會(huì)感知到物體的絕對(duì)亮度,感知到的只是相對(duì)亮度[14]。Retinex理論的主要目標(biāo)是將原始有霧圖像分解成兩個(gè)不同分量,即決定動(dòng)態(tài)范圍的照度分量和決定固有特性的反射分量。換句話說(shuō),即把人類(lèi)視覺(jué)系統(tǒng)感知到的圖像看作照度圖像和反射圖像的乘積,其數(shù)學(xué)表達(dá)式可表示為:
其中,I(x,y)、L(x,y)分別為原始圖像和照度分量,L(x,y)滿足L(x,y)∈(0,∞);R(x,y)為反射分量,滿足R(x,y)∈(0,1]。在求解反射分量的過(guò)程中,為避免運(yùn)算量較大的乘法運(yùn)算,通常將R(x,y)的估計(jì)轉(zhuǎn)換到log 域中進(jìn)行,即:
若想獲得具有大量細(xì)節(jié)信息的反射分量估計(jì)值R(x,y),首先必須求出照度分量L(x,y)。Jobson 等提出照度分量是由原始圖像與高斯濾波函數(shù)作卷積運(yùn)算得到的,根據(jù)中心環(huán)繞思想可得出以下公式:
其中,* 為卷積運(yùn)算符號(hào),G(x,y)為低通濾波器,用來(lái)估計(jì)照度圖像。
多尺度Retinex 算法公式如下:
其中,ωn為權(quán)重值,δn為濾波尺度常量,k由歸一化函數(shù)決定。
(1)計(jì)算初步復(fù)原圖像的亮度圖像。首先采用加權(quán)平均法求出初步復(fù)原圖像的亮度圖像,將其作為該算法的初始圖像。
(2)估計(jì)照度分量,求出反射分量。采用引導(dǎo)濾波對(duì)步驟(1)中求得的亮度圖像作平滑處理,估計(jì)出照度分量,然后在對(duì)數(shù)域中求出反射分量。
在Retinex 算法中,常用的環(huán)繞函數(shù)為高斯濾波函數(shù),但采用該函數(shù)對(duì)照度分量進(jìn)行處理后,得到的圖像往往存在光暈偽影,所以后來(lái)有研究者提出利用雙邊濾波代替高斯濾波,不僅可以保留圖像細(xì)節(jié)信息,還有效避免了光暈偽影現(xiàn)象[15]。但相比引導(dǎo)濾波,雙邊濾波的運(yùn)算量和時(shí)間復(fù)雜度相對(duì)較高,并且引導(dǎo)濾波在邊緣保持方面優(yōu)于雙邊濾波。所以,本文采用引導(dǎo)濾波代替雙邊濾波,對(duì)照度分量進(jìn)行處理,并求出反射分量,求解公式可表示為:
f(x)為引導(dǎo)濾波函數(shù),其公式可表示為:
其中,qi為窗口內(nèi)輸出的像素值,Ωk是一個(gè)面積為(2r+1)×(2r+1)的正方形區(qū)塊,系數(shù)ak、bk為常數(shù),通過(guò)最小化目標(biāo)函數(shù)加以確定。根據(jù)最小二乘法,局部線性函數(shù)系數(shù)ak、bk可采用以下公式進(jìn)行求解:
其中,wk為當(dāng)前窗口,為像素總數(shù),μk、σk分別為圖像I在wk中的均值和標(biāo)準(zhǔn)差,ε是正則化參數(shù)。將式(12)應(yīng)用到整幅圖像,即可得到引導(dǎo)濾波函數(shù)為:
將式(15)代入式(11)可求出反射分量R(x,y)。
另外,本文根據(jù)濾波圖像尺寸大小與尺度個(gè)數(shù)之間的數(shù)量關(guān)系,自適應(yīng)設(shè)置Retinex 算法尺度參數(shù),利用引導(dǎo)濾波獲取多尺度反射分量。其中設(shè)置3 個(gè)尺度參數(shù),即為小、中、大,且各尺度范圍分別為:[1,rmin]、[rmin,rmid]和[rmid,rmax],具體公式定義如下:
其中,m、n為濾波圖像尺寸大小,k為尺度個(gè)數(shù),取值為3。
(3)對(duì)反射分量進(jìn)行S型函數(shù)增強(qiáng)、全局自適應(yīng)對(duì)比度調(diào)整、Gamma 亮度調(diào)整等一系列操作。
在反射分量中存在大量圖像細(xì)節(jié)信息,所以為獲得圖像細(xì)節(jié)信息,需進(jìn)一步對(duì)反射分量進(jìn)行增強(qiáng)處理。本算法利用S型函數(shù)增加去霧圖像細(xì)節(jié)信息,公式定義如下:
其中,ω為求出的反射分量,由于ω在log 域中,所以ω可能取負(fù)值,本文設(shè)置ω的取值范圍為[-1,1];a為參數(shù),a取值不同,增強(qiáng)效果也不同,圖1 表示a取不同值時(shí)S型函數(shù)的對(duì)應(yīng)圖像。由圖可看出,a值越大,圖像越陡,圖像增強(qiáng)效果也越明顯。經(jīng)多次實(shí)驗(yàn)得出,當(dāng)a=6 時(shí),圖像增強(qiáng)效果最明顯。
由于經(jīng)暗通道先驗(yàn)算法處理后的圖像整體對(duì)比度和亮度都偏低,所以需進(jìn)一步處理初步復(fù)原圖像以提高圖像對(duì)比度和亮度。
為了提高圖像對(duì)比度,根據(jù)輸入圖像本身的全局亮度進(jìn)行自適應(yīng)調(diào)整,具體公式如下:
其中,Lw(x,y)為輸入圖像亮度值,為亮度對(duì)數(shù)均值,Lwmax為圖像亮度最大值。
為提高圖像亮度值,采用改進(jìn)的非線性全局Gamma函數(shù)進(jìn)行亮度調(diào)整,公式如下:
其中,R(x) 為亮度調(diào)整后的圖像,x為輸入圖像,a為調(diào)整參數(shù),Gamma 函數(shù)映射圖如圖2 所示。
Fig.1 Sigmoid function mapping圖1 S 型函數(shù)映射
Fig.2 Gamma function mapping圖2 Gamma 函數(shù)映射
由圖2 可以看出,a取值越小,圖像亮度增強(qiáng)效果也越明顯。經(jīng)多次實(shí)驗(yàn)得出,當(dāng)a=0.6 時(shí),效果最佳。另外,從圖2 也可以看出,當(dāng)a取值為0.6 時(shí),較低亮度區(qū)域位于函數(shù)y=x的上方,較高亮度區(qū)域位于函數(shù)y=x的下方,說(shuō)明該函數(shù)不但能有效增強(qiáng)低亮度區(qū)域,還能防止過(guò)度增強(qiáng)現(xiàn)象。
(4)顏色恢復(fù)函數(shù)。首先求出A=max(IR[i],IG[i],IB[i]),然后求出放大因子:。其中,R'為輸入圖像,Int為亮度圖像。接下來(lái)計(jì)算每個(gè)通道:
R=M?IR[i]
G=M?IG[i]
B=M?IB[i]
最后將3 個(gè)通道進(jìn)行整合,得到恢復(fù)后的去霧清晰圖像。
為驗(yàn)證提出的基于暗通道先驗(yàn)的Retinex 去霧算法的有效性,對(duì)300 幅有霧圖像進(jìn)行處理,并分別從主觀視覺(jué)效果和客觀質(zhì)量評(píng)價(jià)兩方面進(jìn)行驗(yàn)證。將本文算法與現(xiàn)有算法(He 算法、Tan 算法、Wang 算法和Fattal 算法)處理結(jié)果進(jìn)行比較。
首先,從主觀角度對(duì)比幾種算法,效果如圖3-圖5 所示。
從3 組圖片可以看出,經(jīng)He 算法和Tan 算法處理后,雖然圖像整體清晰度有所改善,但圖像較亮區(qū)域(天空、水面等)出現(xiàn)了塊狀模糊和光暈現(xiàn)象;經(jīng)Wang 算法處理后,圖像丟失了很多細(xì)節(jié)信息,圖像色調(diào)整體偏暗;經(jīng)Fattal 算法處理后,圖像顏色偏亮泛白,去霧不徹底,同時(shí)出現(xiàn)了明顯的顏色失真現(xiàn)象;經(jīng)本文算法處理后,圖像清晰度明顯提高,有效避免了顏色失真現(xiàn)象,細(xì)節(jié)信息和亮度值也在一定程度上有所提高??傮w而言,從主觀視覺(jué)角度來(lái)看,本文算法明顯優(yōu)于其它算法。
Fig.3 Different algorithms for fog removal effects of image 1圖3 圖像1 不同算法去霧效果
Fig.4 Different algorithms for fog removal effects of image 2圖4 圖像2 不同算法去霧效果
Fig.5 Different algorithms for fog removal effects of image 3圖5 圖像3 不同算法去霧效果
采用圖像均值、對(duì)比度、平均梯度和信息熵對(duì)本文算法進(jìn)行客觀評(píng)價(jià)。
圖像均值用于表示圖像平均亮度的變化,均值公式如下:
其中,M、N為圖像尺寸。
對(duì)比度用于評(píng)價(jià)圖像整體對(duì)比度,對(duì)比度越高,圖像越清晰。對(duì)比度公式如下:
其中,n=|i-j|,為灰度共生矩陣。
平均梯度用于評(píng)價(jià)圖像整體模糊程度,平均梯度值越大,細(xì)節(jié)信息越多,邊緣保持效果越好。平均梯度公式如下:
其中,M、N表示處理圖像的大小。
信息熵用于評(píng)價(jià)圖像細(xì)節(jié)表現(xiàn)能力,信息熵值越大,說(shuō)明處理后圖像保留的細(xì)節(jié)信息越多,信息熵公式如下:
其中,i為像素值,pi為i出現(xiàn)的概率。
然后,采用客觀評(píng)價(jià)標(biāo)準(zhǔn)對(duì)比幾種算法,對(duì)比結(jié)果如表1-表3 所示。
Table 1 Objective evaluation criteria for image-one表1 圖1 客觀評(píng)價(jià)標(biāo)準(zhǔn)
Table 2 Objective evaluation criteria for image-two表2 圖2 客觀評(píng)價(jià)標(biāo)準(zhǔn)
Table 3 Objective evaluation criteria for image-three表3 圖3 客觀評(píng)價(jià)標(biāo)準(zhǔn)
從亮度和對(duì)比度可以看出,本文算法在平均亮度和對(duì)比度上都有一定程度提高,明顯優(yōu)于現(xiàn)有其它去霧算法。從平均梯度和信息熵可以看出,本文算法的平均梯度和信息熵值增大,說(shuō)明本文算法相比其它算法具有較好的邊緣保持和細(xì)節(jié)增強(qiáng)效果,處理后的圖像可見(jiàn)度也較高,圖像效果更加自然。
針對(duì)現(xiàn)有圖像去霧算法去霧不徹底及對(duì)比度低等問(wèn)題,本文提出一種基于暗通道先驗(yàn)的Retinex 去霧算法,該算法將圖像復(fù)原與圖像增強(qiáng)兩大類(lèi)思想相結(jié)合。首先,采用改進(jìn)的暗通道先驗(yàn)算法對(duì)有霧圖像進(jìn)行初步處理,用導(dǎo)向?yàn)V波代替軟摳圖細(xì)化透射率,并對(duì)圖像復(fù)原公式進(jìn)行改進(jìn),得到初步去霧圖像;其次,采用Retinex 算法對(duì)其進(jìn)行增強(qiáng)處理,利用引導(dǎo)濾波對(duì)照度分量進(jìn)行處理,求出反射分量;然后,利用S 型曲線、全局自適應(yīng)對(duì)比度與改進(jìn)的Gamma 校正函數(shù)對(duì)反射分量進(jìn)行處理,最終實(shí)現(xiàn)了細(xì)節(jié)增強(qiáng),同時(shí)有效解決了圖像周?chē)嬖诠鈺瀭斡暗葐?wèn)題;最后,運(yùn)用還原函數(shù)還原圖像色彩。實(shí)驗(yàn)結(jié)果表明,本文算法平均亮度相比其它算法至少提高了1.79%,對(duì)比度至少提高了1.07%,平均梯度和信息熵值分別至少提高了4.8% 和4.79%。說(shuō)明本文算法相比其它算法具有較好的邊緣保持和細(xì)節(jié)增強(qiáng)效果,處理后的圖像顏色也相對(duì)自然,為圖像去霧技術(shù)提供了一種新思路。