唐 斌, 申紅婷, 龍 文
(1.貴州財經(jīng)大學信息學院, 貴陽 550025; 2. 貴州財經(jīng)大學貴州省經(jīng)濟系統(tǒng)仿真重點實驗室, 貴陽 550025)
在雨天或濃霧等低照度情況下,空中雨霧等微小顆粒散射會導致大氣透明度出現(xiàn)不同程度下降,所拍攝圖像通常能見度較低,邊緣和紋理等關鍵細節(jié)模糊不清,如果光照度也很低,將會導致圖像質(zhì)量出現(xiàn)較嚴重的衰減。嚴重影響目標識別與跟蹤、無人駕駛等后續(xù)處理結(jié)果的準確性。因此,提高圖像亮度,增強圖像細節(jié)的有霧圖像清晰化預處理顯得十分重要。
為實現(xiàn)有霧圖像的清晰化目標,許多學者提出了諸多的解決方案。這些解決方案中一類是以直方圖均衡[1]、Retinex理論[2]等為代表的圖像增強算法,這類算法以視覺效果為主要評價依據(jù),通過增強圖像細節(jié)對比度達到去霧效果,在清晰化過程中并沒有考慮圖像降質(zhì)原因,算法簡單,易于實現(xiàn)。去霧后圖像明亮清晰,但是存在光暈或色彩失真等缺陷。近些年,基于深度學習的去霧算法成為研究熱點,此類算法使用端到端方式估算大氣透射圖,通過合成圖像訓練神經(jīng)網(wǎng)絡權(quán)重復原圖像,由于很難同時獲取真實圖像和有霧圖像,因此真實場景效果不理想[3]。最后一類方案則是立足于霧天成像物理模型反演解析出無霧圖像。He等[4]通過統(tǒng)計大量圖像的特征發(fā)現(xiàn):在每個像素的鄰域中總存在一個像素值約為零的暗通道,依據(jù)此先驗知識和常數(shù)環(huán)境光以及霧天成像物理模型可解析出無霧圖像,該方法對非天空區(qū)域圖像清晰化效果很好。由于使用軟摳圖方法細化透射率的處理時間較長,He等[5]在隨后的研究中對細化透射率的方法做出了改進,提出了使用引導濾波優(yōu)化透射率的新方法,該方法在提高細化計算速度的同時,去霧質(zhì)量并無顯著衰減。Tarel等[6]根據(jù)大氣耗散函數(shù)估算透射率,然后使用中值濾波優(yōu)化透射率,去霧后圖像顏色較深。該算法簡單,但去霧速度偏慢,針對該問題衍生出許多改進算法,多數(shù)研究點集中在優(yōu)化中值濾波環(huán)節(jié)。王一帆等[7]采用基于局部的雙邊濾波取代中值濾波優(yōu)化透射率,去霧后光暈效應減少,但由于雙邊濾波計算復雜度高,去霧速度不如人意。劉興云等[8]則提出基于全局的relative total variation(RTV)算法去霧,去霧后光暈效應顯著減少,但同樣速度偏慢。肖創(chuàng)柏等[9]也提出基于全局的weighted least squares(WLS)算法優(yōu)化大氣透射率,去霧后光暈效應顯著減少,但存在速度較慢缺陷。使用大氣耗散模型去霧算法還需要估算大氣光。He等[4]采用暗通道前0.1%對應像素的均值作為大氣光,但大氣光值的準確性和穩(wěn)健性受濾波窗口尺寸影響;為了減少濾波窗口尺寸的影響,陳本豪等[10]使用灰度開運算方法實現(xiàn)了大氣光參數(shù)的自適應優(yōu)化;Huang等[11]為了消除明亮物體對大氣光準確度的影響,結(jié)合變差函數(shù)和顏色衰減先驗區(qū)分明亮物體和天空區(qū)域,然后從暗區(qū)域獲取大氣光;王鋒等[12]認為最精確的大氣光應該從有霧圖像的天空區(qū)域獲取,因此使用二分搜索方法尋找均值大和方差小的子圖像即天空區(qū)域,設置合適的尺寸閾值,該方法可以減少大面積白色物體對大氣光值的干擾。上述方法獲取的大氣光均為全局大氣光,并沒有考慮場景霧氣的各向異性,同時估算出的大氣光值大于絕大多數(shù)像素灰度值。根據(jù)去霧后圖像亮度與大氣光成反比結(jié)論,采用全局大氣光去霧后圖像亮度降低,需要附加亮度增強環(huán)節(jié)提高圖像清晰度。
由于全局濾波器具有較好的抑制光暈效果,本文研究也使用WLS算法去霧,但與文獻[9]不同的是對大氣光優(yōu)化而非透射率。根據(jù)去霧后圖像對比度和亮度均應該增加的標準提出一種高亮度和對比度的去霧算法:首先通過霧天成像模型分析可知大氣光與復原圖像亮度成反比,因此設置像素三個顏色通道均值為粗糙大氣光強度,并使用半全局加權(quán)最小二乘[13](semi-global weighted least squares, SGWLS)算法平滑大氣光強度;分析去霧圖像方差可知大氣透射率與復原圖像對比度成反比,因此以像素最小顏色分量為大氣散射函數(shù)計算粗糙透射率;最后結(jié)合霧天成像模型恢復出高亮度和對比度的無霧圖像。以期提高去霧圖像亮度、豐富圖像細節(jié)和提高去霧速度。
雨霧天氣下景物的反射光受微顆粒散射作用,傳輸至圖像傳感器時已經(jīng)出現(xiàn)了衰減,因此其采集的有霧圖像其實是由衰減的景物反射光和大氣環(huán)境光兩部分組成。具體組成方式可由霧天成像衰減物理模型[14]表示:
I(u,v)=J(u,v)t(u,v)+A(u,v)[1-t(u,v)]
(1)
式(1)中:J(u,v)為目標景物的灰度值;I(u,v)為衰減后有霧圖像的灰度值;A(u,v)為大氣光;t(u,v)為透射率;V(u,v)=A(u,v)[1-t(u,v)]為大氣耗散函數(shù);u和v為二維圖像像素坐標。
在已知有霧圖像I(u,v)、大氣光A(u,v)和透射率t(u,v)的條件下,根據(jù)霧天成像衰減物理模型就可恢復無霧圖像J(x):
(2)
結(jié)合透射率約束條件:0≤t(u,v)≤1,可知復原后目標景物的灰度值與大氣環(huán)境光成反比,大氣光選取會影響復原后圖像的亮度。
依據(jù)去霧視覺評價指標,去霧后圖像對比度應該較去霧前有所增加。如果單個像素的紅綠藍(RGB)三個顏色通道都使用相同透射率和大氣光,假設使用方差表示對比度,那么根據(jù)式(1)和方差定義可知去霧后每個像素的對比度為
(3)
根據(jù)大氣耗散函數(shù)可推導出:
(4)
(5)
由于透射率與場景深度有關,在場景深度相同處透射率相同,不同場景深度的透射率則不同。因此需要具有保邊平滑效果的算法優(yōu)化粗糙透射率。經(jīng)分析導向濾波器、雙邊濾波器等局域保邊濾波器算法發(fā)現(xiàn):中心像素濾波值可以根據(jù)權(quán)重系數(shù)對鄰域像素和中心像素灰度值重新組合而獲取。受這些局域濾波器啟示,本文研究也使用類似方法重構(gòu)局部保邊濾器,細節(jié)如下。
(1)使用直方圖方法計算每個像素在尺寸為2r+1(r為濾波半徑)的矩形鄰域內(nèi)灰度均值:
(6)
(2)計算每個像素點的梯度值:
(7)
(3)由于梯度值絕對值可以反映像素點邊緣強度,因此可以利用該值構(gòu)建權(quán)重系數(shù),采用如下方式計算權(quán)重系數(shù):
h(u,v)=exp(-{abs[g(u,v)]/T})
(8)
式(8)中:T為衰減速度調(diào)節(jié)系數(shù),其作用是調(diào)節(jié)指數(shù)函數(shù)衰減速率;h(u,v)為權(quán)重系數(shù),該系數(shù)與梯度值成正比;abs為絕對值函數(shù),使用該函數(shù)獲取梯度的絕對值。梯度值較大時,中心像素屬于需要保留的邊緣信息,因此中心像素灰度值所占比重較大,而鄰域像素灰度均值所占比例較小,因此保留中心像素為邊緣特征得以保留;當梯度值較小時,中心像素與鄰域像素相似,屬于需要平滑的紋理信息,因此鄰域像素均值所占比較大。根據(jù)上述原理,最后中心像素值的計算方式如式(9)所示:
h(u,v)m(u,v)
(9)
(10)
相比于全局級大氣光,本文大氣光屬于局部級大氣光。依據(jù)去霧圖像亮度與大氣光強成反比的理論,大氣光越小,因此采用局部大氣光去霧后圖像的亮度更高。
由于最大值組成的大氣光因為亮物體等原因而不光滑,同時為確保相同區(qū)域內(nèi)大氣光相似和不同區(qū)域大氣光不等的特征,需要使用保邊濾波器優(yōu)化該粗糙大氣光。保邊濾波器可以分為全局濾波器和局部濾波器兩大類,局部濾波器利用局部元素更新中心像素灰度值,通常具有速度快特征,但濾波后圖像存在“halo”和梯度等現(xiàn)象。全局濾波器這種現(xiàn)象較少,因此本文研究使用全局保邊濾波器優(yōu)化大氣光。Farbman等[15]提出的加權(quán)最小二乘 (WLS)算法是一種基于全局優(yōu)化的保邊平滑濾波器,由于出色的濾波效果廣泛應用在圖像去霧[9,16-18]等領域。其能量函數(shù)為
(11)
(12)
式(12)中:l為對數(shù)化處理方式;α為梯度敏感系數(shù);ε是為了防止分母為0。平滑系數(shù)在邊緣處值小,在平坦處值大,應此具有保持邊緣和平滑紋理效果。對于邊緣非顯著的平坦圖像,兩個方向的平滑系數(shù)可以做近似處理。
優(yōu)化函數(shù)的目標是在平滑邊緣的同時保持數(shù)據(jù)減少失真,λ則為數(shù)據(jù)項和梯度項之間的平衡系數(shù)。根據(jù)求極值方法對能量函數(shù)求一階微分可知:
(13)
結(jié)合最小值濾波、均值濾波、SGWLS和霧天成像衰減物理模型恢復出高亮度無霧圖像,具體處理流程如下。
步驟1白平衡處理。選取圖像中一個特定明亮清晰區(qū)域,分別計算該區(qū)域內(nèi)三個顏色通道的灰度均值,然后使用歸一化方法獲取三個顏色通道的白平衡系數(shù),使用如下方法調(diào)整有霧圖像灰度值為
(14)
步驟2計算每個像素點的灰度均值作為粗糙大氣光,獲取的大氣光值為
(15)
式(15)中:A0是防止式(5)分母為零而設置的較小值。
步驟3霧氣分布具有不均勻性(均勻霧可定義為不均勻霧氣中的一種特殊情況),在相同區(qū)域霧濃度相似,而不同區(qū)域則濃度不一致,為實現(xiàn)該特征,則使用半全局加權(quán)最小二乘(SGWLS)做濾波處理。
(16)
式(16)中:λ為平衡系數(shù);r為鄰域半徑;s為步長;N為迭代次數(shù)。
步驟4使用最小值濾波尋找每個像素的最小顏色分量,為了確保最小顏色復原后值不為0,將式(4)調(diào)整為
(17)
式(17)中:ω為小于1的霧氣參數(shù)。為獲取非天空區(qū)域所包含的豐富場景內(nèi)容,使用較小的透射率可以復原出高對比度的目標場景,因此非天空區(qū)域ω取值較大。而天空區(qū)域包含感興趣的目標很少(幾乎沒有),因此使用小透射率恢復出高對比度的天空不僅意義不大,反而容易引起天空邊界處產(chǎn)生“halo”效應影響主觀視覺效果,因此天空區(qū)域的透射率較小,其ω取值應該小于非天空區(qū)域。天空區(qū)域與非天空區(qū)域區(qū)分采用類容錯機制[19]方法為
(18)
式(17)計算出來的結(jié)果為粗糙透射率,該初始值中還有少量圖像紋理信息,同時也具有部分場景深度邊緣信息。因此需要使用基于局部鄰域像素均值、梯度值和中心像素灰度值的保邊濾波器對初始值做細化處理:
(19)
然后從粗糙透射率和濾波后的透射率中選出最大值構(gòu)成最終精細透射率:
(20)
完成上述五步后便可獲得高亮度和對比度的無霧圖像。
根據(jù)上述理論分析,分別使用本文算法、He等[4]的基于暗原色的導向濾波算法、Zhu等[20]的基于顏色衰減的去霧算法和Galdran[21]的曝光融合去霧算法對從互聯(lián)網(wǎng)上獲取的有霧圖像集做去霧處理質(zhì)量分析,然后根據(jù)主觀視覺效果、客觀評價指標和去霧速度三方面證實本文算法的可行性和有效性。4種算法實驗硬件環(huán)境均為:處理器為酷睿四核i5,該CPU主頻為1.7 GHz;內(nèi)存容量為4 GB;4種算法軟件環(huán)境均為:操作系統(tǒng)Windows 8;MATLAB R2014b。使用MATLAB語言編程實現(xiàn)上述4種算法并在上述硬件環(huán)境仿真,最終去霧效果如圖1和圖2所示。
圖1 去霧結(jié)果比較Fig.1 Simulation results comparisons
圖2 含天空區(qū)域的有霧圖像去霧效果Fig.2 Dehazing effect of foggy image with sky area
圖1實驗仿真所用的He算法、Zhu算法以及Galdran算法均采用默認參數(shù),本文算法涉及的具體參數(shù)設置如下。
(1) SGWLS濾波器的參數(shù)為:平衡系數(shù)λ為1 000、鄰域半徑r為1、步長s為2、迭代次數(shù)N為1,權(quán)重系數(shù)α為1.2,ε為0.001。
(2)局部保邊濾波器的參數(shù)為:濾波半徑r=100,衰減速度調(diào)節(jié)系數(shù)T=60。
(3)透射率的霧氣參數(shù):ωnsky=0.9,ωsky=0.8,容差閾值K=0.1。
圖1自上向下分別是大橋(分辨率為800×530)、鵝群(分辨率為640×479)、火車(分辨率為600×400)、小區(qū)(分辨率為1 500×1 182)、玩具(分辨率為512×409)。其中1~4行為真實環(huán)境圖像,第5行為合成圖像。第1列為有霧圖像,第2列是He算法處理后圖像,第3列是Zhu算法處理后圖像,第4列是Galdran算法處理后圖像,第5列是本文算法處理后圖像。
從主觀視覺來看,經(jīng)過4種去霧算法處理后的圖像能見度均得到提高,細節(jié)更加豐富。與原有霧圖像相比,去霧后圖像亮度均發(fā)生改變,本文算法處理后的圖像亮度最高, Galdran算法處理后圖像亮度次之, He算法與 Zhu算法處理后圖像亮度最暗。
主觀視覺評價因個體敏感度不一致而存在差異,使用Hautiere等[22]提出的平均梯度比和新增可見邊之比以及熵、灰度均值4個指標客觀評價去霧效果。圖像質(zhì)量與這些指標值均成正比。分別使用4種算法去霧后圖像的客觀指標值如表1所示。表1中數(shù)值表明:同一幅有霧圖像,本文算法去霧后圖像平均梯度、新增可見邊、熵和灰度均值4個指標高于He算法、 Zhu算法和Galdran算法。本文算法處理后平均梯度比最少是He算法1.3倍,是Zhu算法2.3倍,是Galdran算法1.9倍。新增可見邊之比最少是He算法1.1倍,是Zhu算法1.3倍,是Galdran算法1.2倍;熵值4種算法效果接近,但本文算法熵值最大?;叶染抵笜吮碚鞯氖菆D形的整體亮度,本文算法灰度均值最大是He算法13.6倍;是Zhu算法3.5倍,是Galdran算法1.5倍。由此可見,本文算法在增強圖像細節(jié)同時,還提高了圖像的整體亮度。
表1 客觀指標比較Table 1 Objective indicators comparison
除此之外,還對圖1的20幅圖像去霧時間(單位:s)做出了相應的統(tǒng)計,表1統(tǒng)計結(jié)果數(shù)據(jù)表明:本文算法去霧消耗時間隨圖像分辨率而增加;去霧速度要快于其他3種算法,與He算法相比最大加速比為6.5,最小加速比為2.1;與Zhu算法相比最大加速比為1.8,最小加速比為1.4;與Galdran算法相比最大加速比為2.2,最小加速比為2.0。因此本文算法去霧速度較快,具有較強的實時性。
本文算法處理包含天空區(qū)域有霧圖像的效果如圖2所示。自上至下圖像分別是公交站,建筑物和教堂。第1列為有霧圖像;第2列圖像除霧氣參數(shù)全部設置為0.9外其余實驗參數(shù)與圖1相同;第3列圖像使用的實驗參數(shù)與圖1完全相同。從主觀視覺效果來看,第2列圖像天空邊緣存在部分光暈且天空區(qū)域出現(xiàn)波紋。采用容錯機制后,第3列圖像的光暈現(xiàn)象明顯減弱,天空區(qū)域因波紋減少而光滑,雖然相比第2列圖像亮度略有下降,但依然明亮自然。
提出一種提高對比度和亮度的圖像去霧算法。根據(jù)大氣散射模型中復原圖像亮度與大氣光成正比的事實,以像素三個顏色分量均值為大氣光,借助半全局加權(quán)最小二乘優(yōu)化該大氣光,然后根據(jù)復原圖像對比度與透射率成反比的理論,通過大氣耗散函數(shù)和局部均值保邊濾波算法優(yōu)化透射率,對天空區(qū)域和非天空區(qū)域使用不同的霧氣參數(shù)減少天空邊界“halo”效應。最后的實驗結(jié)果和分析表明:無論從主觀視覺效果還是客觀指標評價,本文算法具有去霧圖像明亮自然、細節(jié)豐富和去霧速度快的優(yōu)點,具有很好的工程應用價值。
由于三個顏色通道均使用相同的大氣光強度,去霧后圖像存在少量偏色現(xiàn)象,這將是本課題下一步的研究工作。