馬文君,劉金虎,王小鵬,孫士偉
(蘭州交通大學(xué) 電子與信息工程學(xué)院,甘肅 蘭州 730070)
霧霾天氣下,由于懸浮在大氣中浮塵顆粒、小水滴等對光線折射和散射,導(dǎo)致獲得的戶外圖像對比度和飽和度降低,顏色失真,可視效果較差,影響圖像后續(xù)處理[1]。如在智能交通、國防和航空領(lǐng)域等,視覺系統(tǒng)會受到影響從而導(dǎo)致各項工作無法正常進(jìn)行。因此,如何高效地將有霧圖像復(fù)原成視覺效果良好的圖像具有十分重要的現(xiàn)實意義[2]。
目前圖像去霧方法主要有3 類:圖像增強(qiáng)、機(jī)器學(xué)習(xí)和圖像復(fù)原方法。圖像增強(qiáng)方法如Retinex算法[3]和直方圖均衡算法[4],這類算法在處理圖像時不考慮退化原因,只為滿足視覺感知,不能實現(xiàn)真正意義上的去霧;機(jī)器學(xué)習(xí)方法如Cai 等人[5]提出的基于端對端系統(tǒng)算法,通過訓(xùn)練數(shù)據(jù)獲得模型實現(xiàn)去霧,但受數(shù)據(jù)集約束,具有一定的局限性;圖像復(fù)原算法以He 等人[6]提出的暗通道先驗算法為代表,通過分析霧圖降質(zhì)機(jī)理,建立圖像退化模型,充分利用圖像退化的假設(shè)或先驗知識反演推出無霧圖像,該方法去霧效果自然,一般不會有信息損失,因此該方法目前受到國內(nèi)外研究學(xué)者的青睞。
近年來,國內(nèi)外學(xué)者對降質(zhì)圖像的復(fù)原研究已取得了許多成果,He 等人[6]提出的暗通道先驗算法取得了較好的去霧效果,但由于對存在天空等明亮區(qū)域的圖像透射率估計過小,容易導(dǎo)致復(fù)原圖像出現(xiàn)顏色失真,且軟摳圖的使用增加了該算法的時間復(fù)雜度;Meng 等人[7]提出的邊界約束算法,能有效衰減圖像噪聲、增強(qiáng)圖像的對比度,但會出現(xiàn)顏色失真和偏色現(xiàn)象。Sun 等人[8]提出了局部大氣光估計算法,有效改善了暗通道算法中大氣光估計不足的問題,但復(fù)原圖像出現(xiàn)過飽和現(xiàn)象,且對含大片明亮區(qū)域的圖像復(fù)原效果不佳,Zhu 等人[9]提出了顏色衰減先驗算法,利用監(jiān)督學(xué)習(xí)方法建立有霧圖像的線性模型來復(fù)原景深,該方法取得一定的效果,但由于受到樣本訓(xùn)練影響,時間復(fù)雜度較高且去霧不徹底;Wang 等人[10]通過假設(shè)霧圖和無霧圖最小通道之間的線性關(guān)系來估計透射率,提出一種基于線性傳輸?shù)娜レF算法,該算法去霧較徹底,但去霧程度越大,復(fù)原圖像越暗。
本文主要針對He 等人提出的暗通道先驗算法在天空區(qū)域透射率估計過小及最小值濾波使用引起Halo 效應(yīng)的問題,提出了一種具有良好邊緣保持效果和較低時間復(fù)雜度的圖像去霧算法。該算法將單尺度Retinex 算法和邊緣檢測算子相結(jié)合,并將RGB 空間轉(zhuǎn)換到Lab 顏色空間,得到融合邊緣信息的“偽”去霧圖;其次,使用交叉雙邊濾波優(yōu)化介質(zhì)傳輸率。最后,結(jié)合大氣散射模型復(fù)原出無霧圖像。
Cartney[11]首先提出了大氣散射模型,后由Narasimhan[12]對此模型進(jìn)行推導(dǎo)和演化,得出了霧霾天氣條件下的大氣散射模型:
式中:x為像素點(diǎn);I(x) 為 有霧圖像;J(x)為無霧圖像;A(x) 為 大氣光;t(x)為透射率; β為大氣散射系數(shù);d(x)為場景深度。
由(1)式,透射率t(x)可表示為
其中c表示R、G、B3 個通道。
He 等人通過對5 000 多幅無霧圖像進(jìn)行統(tǒng)計和觀察發(fā)現(xiàn),86%的像素灰度級分布在[0,16]范圍內(nèi),由此根據(jù)概率統(tǒng)計知識提出了暗通道先驗理論:
其中:Jdark為有霧圖像的暗通道圖;?(x)為以像素x為中心的最小值濾波窗口;Jc(c∈{r,g,b})為3 個顏色通道的分量。
結(jié)合(1)式和(4)式,在假設(shè)大氣光值A(chǔ)(x)為常數(shù)情況下透射率為
其中,為了保證恢復(fù)圖像的真實感,本文取 ω為0.95。該理論對大多圖像成立,但由于暗通道選用3×3 的濾波窗口進(jìn)行最小值濾波,導(dǎo)致對邊緣高頻信息估計過小,復(fù)原出圖像在景深突變處出現(xiàn)明顯的Halo 效應(yīng)。此外,由于在天空等明亮區(qū)域無法滿足暗通道先驗假設(shè)的條件Jdark(x)→0,使得透射率估計過小,故暗通道先驗算法對此類圖像失效。
本文提出了一種結(jié)合Lab 空間和單尺度Retinex的自適應(yīng)圖像去霧算法,以解決暗通道先驗算法在大片天空等明亮區(qū)域透射率估計不足的問題。首先,在單尺度Retinex 算法優(yōu)化亮度分量時,將RGB 顏色空間轉(zhuǎn)至Lab 空間,對亮度分量使用Canny 算子進(jìn)行邊緣檢測,將邊緣區(qū)域與非邊緣區(qū)域分離,非邊緣區(qū)域以最小均方誤差為依據(jù)進(jìn)行自適應(yīng)高斯濾波,求得優(yōu)化后的亮度分量,再轉(zhuǎn)至RGB 空間得到“偽”去霧圖,并根據(jù)暗通道先驗得到透射率的粗略估計;然后,使用交叉雙邊濾波消除由最小濾波產(chǎn)生的Halo 效應(yīng),得到較準(zhǔn)確的透射率;其次,對大氣光的選取,本文采用Sun 等人提出的局部大氣光估計方法來改善全局大氣光取值不足而導(dǎo)致復(fù)原圖像偏暗現(xiàn)象,最后,結(jié)合大氣散射模型得到無霧圖像。本文算法流程圖如圖1 所示,實現(xiàn)效果如圖2 所示。
圖1 本文算法流程圖Fig.1 Flow chart of our algorithm
圖2 本文算法實現(xiàn)效果過程Fig.2 Effect process diagram of our algorithm
根據(jù)Retinex 理論[13],圖像S可表示為
式中:S為原始有霧圖像;R為 反射分量;L′為亮度分量;(x,y)為圖像中位置坐標(biāo)。若將有霧圖像看作觀測圖像,亮度分量在圖像中引起的變化較平緩,而反射分量在圖像中引起的變化則會造成圖像顏色突變。在此基礎(chǔ)上,將亮度分量分離出去,求出反射分量,即可得到“偽”去霧圖像。
為了方便計算,對(6)式兩邊作對數(shù)操作:
由(7)式可知,只要估計出亮度分量L′(x,y)的值,就可求得反射分量R(x,y),因此亮度分量的估計結(jié)果會影響圖像復(fù)原效果。
Lab 色彩空間3 個分量都是相互獨(dú)立的,故單獨(dú)處理亮度分量不會對a、b分量產(chǎn)生影響。本文將RGB 通道轉(zhuǎn)為Lab 通道估計亮度分量,可以有效避免Retinex 算法在RGB 通道處理時不區(qū)分色彩和亮度導(dǎo)致的色彩失真。
對Lab 空間亮度分量進(jìn)行高斯卷積估計亮度分量,表達(dá)式如下:
式中“*”為卷積運(yùn)算,高斯平滑函數(shù)
G
(
x
,
y
)的表達(dá)式為
式中:k是規(guī)一化常數(shù),滿足σ是函數(shù)所選的尺度參數(shù),當(dāng) σ值較大時,復(fù)原圖像顏色保真度較好,但出現(xiàn)部分細(xì)節(jié)丟失現(xiàn)象,當(dāng) σ值較小時,細(xì)節(jié)恢復(fù)較好,但圖像顏色失真嚴(yán)重。由于反射分量與所選尺度 σ值有關(guān),本文針對上述σ取值較敏感的問題,將霧對圖像的影響假設(shè)為噪聲,利用拉普拉斯算子對整個圖像作均分處理,以最小均方誤差為依據(jù)自適應(yīng)獲取尺度 σ的最優(yōu)值:
式中:W和H分別表示原始圖像的高和寬;N=[1 -2 1;-24-1;1-2 1]為離散拉普拉斯變換掩模。
由于單尺度Retinex 算法沒有考慮邊緣影響,導(dǎo)致復(fù)原后圖像邊緣細(xì)節(jié)信息丟失,本文使用Canny 算子來獲得圖像邊緣信息E(x,y),其中邊緣部分為1,非邊緣部分為0。獲取邊緣信息后,為達(dá)到良好的保邊效果,僅對非邊緣信息進(jìn)行高斯濾波得到融合邊緣信息的亮度分量:
根據(jù)(8)和(11)式可得到初步估計的反射分量:
其中r(x,y)=log(R(x,y))。
圖3 透射率對比Fig.3 Comparison diagram of transmittance
轉(zhuǎn)至RGB 空間,反射分量R(x,y)即為近似為無霧的“偽”去霧圖像,用表示,根據(jù)暗通道先驗理論得到透射率的粗略估計:
由于使用最小值濾波后的透射率伴有明顯的塊狀效應(yīng),而交叉雙邊濾波有邊緣保持、平滑細(xì)節(jié)和降低噪聲的優(yōu)點(diǎn),故采用交叉雙邊濾波對透射率進(jìn)行優(yōu)化。即:
式中:E=minc∈{r,g,b}Ic(x);D=t1(x);pw是計算t2(x)的窗口;z表示空域部分;zj是 窗口pw中圍繞像素x的位置;Ej是zj對 應(yīng)的值域部分;k1、k2分別是值 域 和空域濾波器;hr、hs分別是值域和空域濾波器內(nèi)核;C是歸一化常數(shù)。(14)式的效果如圖3(d)所示。
由圖3 可以看出相比于He 等人算法,本文算法對天空區(qū)域的透射率估計更加準(zhǔn)確,景深交替處紋理過渡平滑,更能反映深度信息。
大氣光值A(chǔ)是基于大氣散射模型去霧的另一個非常重要的參數(shù),當(dāng)A值大于真實值時,復(fù)原后圖像整體偏暗且部分細(xì)節(jié)丟失,反之亦然??紤]到He 等人[6]選取全局大氣光值在出現(xiàn)誤差時會影響整體處理效果,采用Sun 等人[8]提出的局部大氣光值估計方法。該方法可以反映圖像的局部特征,有效消除由于全局大氣光誤差造成的整體不足現(xiàn)象。
首先計算圖像的最大值通道Amax(x);其次對Amax(x)進(jìn)行形態(tài)學(xué)閉操作來消除局部內(nèi)過大像素A(x)。的干擾;最后利用雙邊濾波來滿足大氣光局部平滑的特性,從而得到邊緣保持良好的局部大氣光
根據(jù)大氣散射模型及上文求得的透射率和局部大氣光,可以恢復(fù)出無霧圖像J(x):
其中閾值下限t0是為了避免透射率趨于0 時J(x)出現(xiàn)噪聲干擾,本文t0取0.1。
本文實驗和仿真均在PC 機(jī)上采用MATLAB 2016 的環(huán)境下運(yùn)行,PC 機(jī)配置Inter(R)Core(TM)i7-7500U CPU@2.7 GHz 2.90 GHz 8.00GB(7.88 GB可用),并與經(jīng)典算法作了實驗對比,從主觀和客觀對實驗結(jié)果進(jìn)行分析。本文選用的經(jīng)典去霧算法有:He 等人[6]提出的暗通道先驗算法、Meng 等人[7]提出的邊界約束算法、Zhu 等人[9]提出的顏色衰減先驗算法和Sun 等人[8]提出的局部大氣光估計算法。選取了不同場景的霧圖進(jìn)行對比。
本文選景深變化平緩、景深變化劇烈、有強(qiáng)光源或白色物體、大片天空區(qū)域及濃霧圖5 種圖像進(jìn)行恢復(fù),恢復(fù)效果對比如圖4 所示。
圖4 景深平緩圖像效果對比Fig.4 Comparison of experimental effect
Image1 為景深平緩圖像恢復(fù)效果對比,圖4(b)算法和圖4(e)算法對細(xì)節(jié)恢復(fù)不明顯;圖4(c)算法通過增加約束條件解決大氣散射模型病態(tài)問題,雖復(fù)原細(xì)節(jié)增多,但犧牲了圖像的色彩保真度;圖4(d)算法和圖4(f)算法取得了較好的恢復(fù)效果,但圖4(d)算法出現(xiàn)過飽和現(xiàn)象;圖4(f)算法恢復(fù)圖像細(xì)節(jié)明顯,且顏色保真度更好。
Image2 為景深突變圖像恢復(fù)效果對比,圖4(b)、圖4(e)算法恢復(fù)圖像存在不同程度殘霧,且恢復(fù)細(xì)節(jié)不明顯;圖4(c)算法恢復(fù)圖像天空區(qū)域出現(xiàn)明顯偏色現(xiàn)象;圖4(d)算法恢復(fù)圖像色彩過飽和;圖4(f)算法恢復(fù)圖像亮度適宜,近景區(qū)域色彩豐富,遠(yuǎn)景區(qū)域恢復(fù)出了天空色彩及云彩紋理。
Image3 為強(qiáng)光源和白色物體圖像恢復(fù)效果對比:圖4(b)恢復(fù)圖像整體偏暗;圖4(d)算法通過增加約束條件犧牲了圖像色彩保真度,導(dǎo)致恢復(fù)圖像存在偽影現(xiàn)象;圖4(c)算法復(fù)原圖像出現(xiàn)過飽和現(xiàn)象;圖4(e)算法恢復(fù)圖像存在殘霧;圖4(f)算法恢復(fù)圖像亮度適宜,細(xì)節(jié)明顯。
Image4 為存在大片天空區(qū)域圖像效果對比,圖4(b)、圖4(c)和圖4(d)算法恢復(fù)的圖像在非天空區(qū)域能取得較好效果,但在天空區(qū)域都出現(xiàn)了嚴(yán)重失真;圖4(e)算法去霧不徹底;圖4(f)算法恢復(fù)圖像近景細(xì)節(jié)明顯增多,亮度及飽和度適宜。
Image5 為濃霧圖像恢復(fù)效果對比,各算法去霧都不徹底,圖4(b)算法恢復(fù)圖像顏色偏暗且細(xì)節(jié)不明顯;圖4(c)和圖4(d)算法殘霧現(xiàn)象嚴(yán)重;圖4(e)和圖4(f)算法恢復(fù)效果較好,但都存在少量殘霧,圖4(f)算法恢復(fù)圖像細(xì)節(jié)相對較多。
采用Hautiere 等人[14]提出的可見邊梯度法進(jìn)行評價。通過對可見邊e、歸一化平均梯度rˉ、飽和像素點(diǎn)個數(shù) σ及運(yùn)算時間作為指標(biāo)對幾種去霧方法進(jìn)行比較分析。其中,e和值越大,σ值和運(yùn)算時間復(fù)雜度越小,則表示去霧效果好。對應(yīng)數(shù)學(xué)表達(dá)式如下:
式中:n0為 霧圖的可見邊數(shù);nr為復(fù)原圖像的可見邊數(shù);ri和pi為復(fù)原圖像與原始圖像的梯度比; ?i為復(fù)原圖像的可見邊集合;ns為復(fù)原圖像的飽和像素點(diǎn);W和H為圖像的寬和高。表1~表4 為實驗結(jié)果對比。
表1 可見邊Table 1 Visible side
表2 歸一化平均梯度Table 2 Normalized average gradient
表3 飽和像素點(diǎn)個數(shù)Table 3 Number of pixels in saturation point
表4 運(yùn)行時間Table 4 Running time
由表1 可見邊看出Meng 的算法可見邊值非常小,而本文算法有一定的優(yōu)勢,主要是因為本文算法利用融合邊緣信息的高斯濾波估計亮度分量,復(fù)原出較多的邊緣細(xì)節(jié)信息,但Sun 等人算法對圖1 和圖3 處理效果優(yōu)于本文算法,本文算法整體算法優(yōu)于He 等人算法及Zhu 等人算法;由表2平均梯度[15]看出Meng 的算法同樣存在不足,本文算法整體優(yōu)于4 種經(jīng)典算法;由表3 飽和像素點(diǎn)看出本文恢復(fù)圖像的飽和像素點(diǎn)值整體低于其他算法,故算法仍優(yōu)于其他算法;由表4 運(yùn)行時間可以看出幾種經(jīng)典去霧算法基本上都比較耗時,本文算法采用單尺度retinex 算法計算復(fù)雜度相對較小,運(yùn)行時間明顯優(yōu)于其他算法。綜上分析,本文算法具有一定的優(yōu)越性。
本文針對暗通道先驗算法在明亮區(qū)域透射率估計過小及景深邊緣處出現(xiàn)Halo 效應(yīng)的問題,在暗通道先驗算法的基礎(chǔ)上,將Lab 顏色空間、邊緣檢測算子與單尺度Retinex 算法相結(jié)合,提取亮度分量單獨(dú)處理,避免了傳統(tǒng)Retinex 算法提取亮度分量而對色彩產(chǎn)生影響。邊緣檢測增加了復(fù)原細(xì)節(jié),解決了最小值濾波引起的Halo 效應(yīng),并根據(jù)Retinex 理論得到粗略透射率,然后使用交叉雙邊濾波對透射率進(jìn)行優(yōu)化,平滑細(xì)節(jié)、降低噪聲。實驗表明,本文算法時間復(fù)雜度較低,且復(fù)原后圖像色彩保真度較高,細(xì)節(jié)豐富,對天空區(qū)域處理較好,且在客觀評價中也體現(xiàn)出一定的優(yōu)勢。但是本文對遠(yuǎn)景圖像去霧不足,進(jìn)一步解決該問題提高去霧效果將是接下來的研究方向。