石 磊,蓋志剛
(山東省科學院 海洋儀器儀表研究所,山東 青島266001)
有霧圖像的對比度和能見度都有所下降,這直接影響航空、水運和公路交通出行,使得各種戶外監視系統也無法獲得清晰圖像。因此,具有魯棒性的圖像去霧算法對提高視覺系統的識別與定位能力具有重要意義。
增加有霧圖像的清晰度是一個具有挑戰性的問題,霧氣本身也與深度信息有關,早期的圖像去霧算法多依賴多個輸入圖像或者是額外的信息。在文獻[1]中,作者用多幅偏振光圖像來執行去霧。Narasimhan 等人在文獻[2]里提出了通過不同天氣情況下的圖像獲得更多的對比度的信息來去霧。Kopf[3]等人的方法則需要來自對應圖像或者已知的三維模型的深度信息。
基于單一圖像的去霧算法最近幾年取得了很大的進步。Tan 等[4]通過擴大復原圖像的局部對比度來達到去霧,但他忽視了透射率,結果中的一些色彩經常會出現過飽和。Fattal等[5]假定透射率和表面投影在局部是不相關的,通過估算景物的反射率,來推斷景物光的透射率。但該方法需要足夠多的顏色信息,當霧氣濃度較大的時候效果也不理想。Kim等[6]提出了一個能量函數(Cost function),通過最小化這個能量函數使對比度得到增強來實現去霧。
近來,He 等[7]提出了一種基于暗原色先驗的單一圖像去霧方法,對戶外圖像取得了良好的去霧效果;但該算法成立是建立在暗原色先驗滿足的條件之下,對于不滿足先驗知識的明亮區域,算法估計的透射率值偏小,恢復結果可能會出現色彩失真,難以達到令人滿意的圖像視覺效果。本文主要針對這個缺陷,提出了一種改進方法。
描述霧化圖像的大氣散射模型可見

式中:I(x)是的有霧圖像(Haze Image);J(x)是去霧圖像(Haze-free Image);t(x)是描述散射光和相機接受的光的媒介透射率;A 是全局大氣光;J(x)t(x)代表的是景物光線在媒介中經過衰減后的直接衰減項;A(1-t(x))則表示由前方散射引起的大氣光項。
暗原色先驗[7]是通過對大約5 000 張戶外圖像的進行統計得出的先驗知識,它假定去除掉天空等明亮區域之后,在絕大多數圖像里,像素總會有至少一個顏色通道具有很低的值;取最小值后的圖像可被稱為暗原色圖像JDark。
假設大氣光A 給定,且在局部區域的透射率保持不變;則對式(1)應用暗原色先驗可得透射率

式中:Ac(c∈R,G,B);Ω(x)是以x 為中心的一塊區域。如果徹底地消除霧,圖像深度感會丟失,可以通過在方程(2)中引入一個常數ω,保留部分遠景處的霧,有

為了提高精度,文獻[7]應用一種圖像摳圖(Image matting)算法[8]來精煉透射率圖。精煉透射率函數后,可由式(4)求得去霧后的圖像J(x)

式中:文獻[7]的方法取to 值為0.1。估計大氣光A 的方法為:先選取暗原色圖像JDark中亮度較大的前千分之一的像素點,然后取這些像素點對應在原圖I(x)中的最大值作為A 的值。注意A 值對應的像素點可能不是最亮的點[7]。也就是說,在圖像的明亮區域可能會有某個像素的R,G,B 值大于A的情況。
對于多數戶外有霧圖像,圖像中的大部分像素點都滿足暗原色先驗。在文獻[7]里,何對大約5 000 張圖像進行統計,發現大約75%的暗原色圖像里的像素值是0,大約90%的暗原色圖像里的像素值小于25;即暗原色像素值分布總體偏低,其像素值趨近于0,暗原色假設基本成立,因此恢復效果較好。但是由于是利用圖像摳圖(Image matting)[8]來進行透射率的精煉,導致速度較慢;隨后不久,何提出了一個邊緣保持濾波器——導向圖像濾波器[9],并將之應用到透射率函數的精煉上,極大加快了速度。該算法是目前比較經典的算法。本文借鑒了這個算法,提出了一個基于暗原色先驗與反圖像的去霧算法。
當含霧圖像包含天空等明亮區域時,基于暗原色先驗的去霧算法[7]處理的結果可能會出現色彩失真。通常這些明亮區域偏白色(亮色),像素R,G,B 通道值的差異也不大,都接近于大氣光值A;區域內也找不到暗原色點,暗原色假設在這些區域是不成立的。
如果不考慮暗原色先驗,由式(1)可得

在某些明亮區域(譬如說天空區域)I(x)值約等于A 值,分母中的這一項不為零值更接近于1,式(5)中分母值也可能會很小,因此實際的透射率總要與遠大于根據暗原色先驗估計的透射率。這時依據式(3)來計算透射率時所得的值較小,再利用式(4)來恢復無霧圖像就不準確。
當取to 值為0.1 時,只能限制透射率不能小于0.1,實際得到的值仍很小;此時,如果I(x)值小于A 值,小到一定程度,就可能會被放大到一個非常大的值,這時的J(x)值會變得很小;尤其是當其他通道值大于A 時,由式(5)所得J(x)值就會大于A,反差將會變得很明顯,類似天空的明亮區域就會有色彩失真現象出現。可見若本文選擇to=1.0,在明亮區域依據式(3)得到的透射率值過低。
合肥工業大學的蔣建國等[10]人增加了一個可控參數K用以調節透射率,當小于K 時,這個區域可能是明亮區域,重新計算透射率,K 是經驗值,蔣令大于K 處,則認為是符合暗原色先驗。孫小明等[11]做法和蔣建國的方法類似,也是通過的大小判斷是否屬于明亮區域,然后調整透射率值,取K=80。王廣義等[12]的則是進行基于梯度閾值的天空分割,分割后將天空區域的透射率設定成了一個經驗值。鄧瑚等[13]的方法也是先將明亮區域從圖像中分離出來,然后分別進行直方圖均衡。韓國的Kim 等人[6]的算法通過最小化能量函數使對比度得到增強,他們在處理色彩失真時直接設to 等于0.3。這些方法都能在一些場合消除明亮區域的色彩失真,但是這些依賴經驗值的方法并不能完全杜絕色彩失真;如果分割出天空區域再分別處理,也會增加計算量。
綜上所述,可以看到當圖像中的區域滿足暗原色先驗時,依據式(8)來計算透射率相對比較準確,也不會出現色彩失真現象;當區域像素屬于明亮區域,不滿足暗原色先驗,依據式(3)來計算透射率值較小,就可能出現色彩失真。換句話說,如果能調整明亮區域的像素值使之滿足暗原色先驗,那就可以按照式(3)來計算透射率,所得到的值相對較為準確,也就較大。依據這個思路,本文提出了一種新方法來克服色彩失真。
算法的流程可描述如下:
1)根據原始輸入圖像進行圖像反色,分別計算原圖像、反色圖像的暗原色圖像,并進行最小值濾波;
2)使用微軟研究院何文中[7]的方式分別求取全局大氣光值;
3)依據式(3)分別計算初始的透射率圖;
4)用導向濾波器(Guided image filtering)[9]分別獲取精細的透射率圖;
5)求取這2 個透過率圖的最大值作為最終的透過率值;
6)通過式(4)計算去霧后的像素值。
流程框圖見圖1。
本文所有實驗圖片均來自網絡。實驗中,最小值濾波模板是9×9,ω 取0.95。透射率精煉都使用導向濾波器(Guided image filtering)[9]的算法;但是為了便于對比算法的效果,最后結果都沒有進行增強亮度的處理;編程中直接使用了OpenCV 圖像處理庫,庫版本號為2.4.1。在一臺中央處理器(CPU)為2.0G Intel Pentium 4 Processor、4 Gbyte 內存,操作系統為64 位Windows 7 的臺式機上處理有霧圖像。實驗內容驗證了本文提出的算法在天空等明亮區域避免色彩失真的作用。
實驗分別利用了4 張樣本圖像,它們都有較大面積天空等明亮區域。用本文提出的算法分別進行處理后,然后再跟用文獻[10]的方法及何[7]的方法處理的結果進行對比,結果見圖2。從4 個樣本圖像的結果(圖2b)可以看出,當選擇有較大面積天空等明亮區域的樣本時,使用文獻[7]的算法處理會產生色彩失真;使用文獻[10]的算法處理(圖2c),某些場合可以避免色彩失真,但是在一些場合(諸如第二個樣本)還是會發生色彩失真,同時觀察這幾個處理結果還會發現在天空等處處理結果有些偏亮,也就是說透射率值估算的稍大,可見取經驗值來校正透射率不能保證適合所有的情況;用本文的方法(圖2d)則可以避免色彩失真現象發生,且去霧后的視覺效果也沒有降低。本文算法還有一個缺陷,就是由于還要計算反圖像,計算量增加,耗時增多。在實際應用中,可以考慮先將輸入圖像縮小,然后再進行去霧處理,最后將結果恢復成原先大小,可參考文獻[14]做法,此過程本文不再一一贅述。

圖1 算法的流程框圖

圖2 3 種方法處理結果的對比
綜上所述,從圖2 的實驗結果可以看出,相比原算法[7]和文獻[10]的算法,改進算法可以有效避免在大面積明亮區域的出現色彩失真現象;算法也不依靠某一個經驗值,去霧結果更加符合實際情況,視覺效果更令人滿意。
本文對基于暗原色先驗的去霧算法進行了理論分析和實驗觀察,然后提出了一種改進算法。本文首先計算原圖像的反色圖像,然后再分別計算原圖像與反色圖像的透射率圖,然后取最大值構建新的透射率圖,進而恢復去霧圖像。該算法可以更加有效地處理包含大面積明亮區域的霧化圖像,使用效果較佳。
[1]OAKLEY JOHN P,SATHELEY BENDER L. Improving image quality in poor visibility conditions using a physical model for contrast degradation[J]. IEEE Trans. Image Processing,1998,7(2):167-170.
[2]NARASIMHAN S G,NAYAR S K. Contrast restoration of weather degraded images[J]. IEEE Trans. Pattern Analysis And Machine Intelligence(PAMI),2003(25):713-724.
[3]KOPF J,NEUBERT B CHEN B,et al. Deep photo:model-based photograph enhancement and viewing[C]//Proc.ACM SIGGRAPH 2008.Los Angeles,USA:ACM Press,2008:1-6.
[4] TAN R T. Visibility in bad weather from a single image[C]//Proc.2008 IEEE Conference on Computer Vision and Pattern Recognition(CVPR). Washington DC,USA:IEEE Press,2008:1-8.
[5]FATTAL R. Single image dehazing[C]//Proc. ACM SIGGRAPH 2008.Los Angeles,USA:ACM Press,2008:1-9.
[6]JIN-HWAN K,WON-DONG J,JAE-YOUNG S,et al.Optimized contrast enhancement for real-time image and video dehazing[J].Journal of Visual Communications and Image Representation,2013,24(3):410-426.
[7]HE K M,SUN J,TANG X OU. Single image haze removal using dark channel prior[C]//Proc.2009 IEEE Conference on Computer Vision and Pattern Recognition(CVPR). Miami,Florida,USA:IEEE Press,2009:1956-1963.
[8]LEVIN A,LISCHINSKI D,WEISS Y. A closed form solution to natural image matting[C]//Proc.2006 IEEE Conference on Computer Vision and Pattern Recognition(CVPR). New York:IEEE Press,2006:61-68.
[9]HE K M,SUN J,TANG X OU.Guided image filtering[J].IEEE Trans.Pattern Analysis And Machine Intelligence(PAMI),2013,35(6):1397-1409.
[10]蔣建國,侯天峰,齊美彬.改進的基于暗原色先驗的圖像去霧算法[J].電路與系統學報,2011,16(2):7-12.
[11]孫小明,孫俊喜,趙立榮,等.暗原色先驗單幅圖像去霧改進算法[J].中國圖象圖形學報,2014,19(3):381-385.
[12]WANG Gangyi,REN Guanghui,JIANG Lihui,et al. Single image dehazing algorithms based on sky region segmentation[J].Information Technology Journal,2013,12(6):1168-1175.
[13]鄧瑚,王延杰,李靜宇,等. 天空區域圖像的增強算法的改進[J].激光與紅外,2012,42(9):1080-1085.
[14]章郡鋒,吳曉紅,黃曉強,等.基于暗原色先驗去霧的改進算法[J].電視技術,2013,37(23):192-225.