容杰雄 張 鴻
1(武漢科技大學計算機科學與技術學院 湖北 武漢 430065) 2(武漢科技大學智能信息處理與實時工業系統湖北省重點實驗室 湖北 武漢 430065)
在霧霾天氣下,由于空氣中存在的大量懸浮顆粒對光線的散射作用,導致了智能攝像設備采集到的圖像的對比度以及清晰度較低,極大地降低了圖像的質量,同時也影響到后續的視頻識別或目標檢測工作。因此,圖像去霧技術具有非常重要的研究意義。
傳統的圖像去霧算法大致可分為兩類,一類是基于圖像增強的算法;另一類是基于物理建模的算法[1]。較為經典的圖像增強算法包括直方圖均衡算法[2]、小波變換[3]、伽馬變換[4]、帶有顏色恢復的多尺度Retinex算法[5](MSRCR)、保持色度的多尺度Retinex算法[6](MSRCP),MSRCR是在多尺度Retinex的基礎上,通過使用色彩恢復函數實現了色彩還原的功能,但是它需要合理地控制色彩恢復的增益和偏移值。而MSRCP是將圖像由RGB空間轉到HSI空間,對I通道進行多尺度Retinex增強,而后根據原RGB空間的比例計算出HSI空間其他兩個通道的值,最后再將圖像轉回到RGB空間。
上述算法由于沒有考慮到霧天成像的原理,其增強的圖像容易產生細節缺失的問題。一種更為直接的方法是對霧天成像原理進行建模。文獻[7]中從大量無霧圖像的統計中發現暗通道的先驗規律,然后借助該規律以及大氣散射模型對有霧圖像進行了去霧處理。然而,該算法對透射率的估計并不精確,并不適用于含有天空區域的圖像,因為在暗通道圖中,天空區域的灰度值并不是趨近于零的。同時,該算法在大氣光值的預估上也存在著誤差,容易受到圖像中白色物體的干擾,造成色彩失真問題的出現。
為此,學者們提出了許多改進策略。文獻[8]采用雙邊濾波方法對天空區域的透射率進行預估,該方法能夠有效地提高含有天空區域的有霧圖像的對比度,但是雙邊濾波在處理高像素圖像時效率較低;文獻[9]采用引導濾波替代雙邊濾波,盡管引導濾波和雙邊濾波都具有很強的邊緣保護特性,但是引導濾波的時間復雜度與濾波窗口大小無關,相比而言引導濾波更具有優勢;文獻[10]在最小值濾波前加入中值濾波補償暗通道,并選取補償后的暗通道的最大值作為大氣光值的預估值,但是該算法得到的暗通道仍然呈塊狀分布;文獻[11]利用四叉樹搜索算法預估大氣光的值,但是該算法應用于天空區域較小的圖像時預估的大氣光值偏小,進而降低了圖像的去霧效果。
針對上述論文存在的不足,本文提出一種基于暗通道補償和透射率修正的圖像去霧算法,針對傳統暗通道去霧算法在天空區域出現的色彩失真問題,本文使用均值濾波對暗通道進行補償,利用獲得的補償暗通道對大氣光值的預估方法進行了優化;針對傳統暗通道去霧算法出現的細節缺失問題,本文根據像素點到大氣光點距離的遠近修正了初始透射率的值,并利用快速引導濾波對圖像的透射率進行了細化。實驗結果表明,本文算法處理后的圖像色彩保真度較高,亮暗分布合理,同時算法的運行時間較短,符合實際視頻識別的要求。
文獻[12]提出了著名的大氣散射模型,它被廣泛地運用于計算機視覺領域之中,其公式可以表示為:
I(x)=J(x)t(x)+A(1-t(x))
(1)
式中:x表示單個像素的坐標;I(x)表示待去霧圖像;J(x)表示去霧后的圖像;A表示全球大氣光成分;t(x)表示圖像的透射率。圖像去霧的核心就是通過合理地預估出待去霧圖像的大氣光以及透射率的值,實現有霧圖像的去霧化。
暗通道先驗是He等[7]發現的一種先驗規律,他們從大量的無霧圖像中發現,一幅圖像的非天空區域的三個通道中至少有一個通道的灰度值較低,且趨近于零,其公式可以表示為:
(2)
式中:Jdark表示去霧圖像的暗通道圖;Ω(x)表示最小值濾波的濾波窗口;c表示彩色圖像的RGB三個通道;y表示單個像素的坐標;Jc(y)是去霧圖像J(y)在RGB三個顏色通道中的分量。
假設大氣光值是一個已知的常量,將式(1)兩邊同時除以RGB通道下的大氣光值Ac,得到式(3)。
(3)
式中:Ic(x)和Jc(x)分別表示RGB通道下的待去霧圖像以及去霧后的圖像。

(4)
式中:Ic(y)和Jc(y)分別是I(y)和J(y)在RGB三個顏色通道中的分量。
根據暗通道的先驗條件,可將式(3)變形為式(5),求得圖像的透射率為:
(5)
式中:λ是一個調節因子,用于在景深處保留少量的霧,其目的是為了保持去霧圖像的真實性。
最后將上述得到的大氣光值以及圖像的透射率代入到式(1)中,反解求得去霧圖像的表達式為:
(6)
式中:t0是一個透射率的下限閾值,其目的是防止去霧圖像J(x)的值偏大導致圖像過曝。
傳統的暗通道去霧算法[7]在有霧圖像轉換為暗通道圖的過程中,使用的是最小值濾波,將其直接作用于有霧圖像的RGB通道的最小值圖像上,如式(4)所示,這一方法在大多數圖像上都能取得不錯的效果,但是,當兩個鄰近像素點之間的像素值差異較大的時候,直接使用最小值濾波會減少像素值大的那一像素點的灰度值,導致透射率的預估值偏大,進而在圖像中產生光暈的問題。
為了解決該問題,文獻[10]采用中值濾波作用于有霧圖像各通道下的最小值圖像,然后再通過一個最小值濾波來補償暗通道,文獻[13]則是直接采用中值濾波替代最小值濾波,在比較了不同的濾波方法后,本文提出一種新的暗通道補償方法,通過使用均值濾波取代最小值濾波,對有霧圖像各通道的最小值圖像進行暗通道補償,其目的是為了增大濾波窗口內的灰度值,減少透射率預估時產生的誤差,對應的表達式如下:
(7)
式中:Idark(x)表示原始圖像的暗通道圖;x和y表示單個像素的坐標;Ω1表示均值濾波的窗口;c表示彩色圖像的三個通道;min()表示獲得各通道下像素的最小值;mean()表示均值濾波。
圖1展示了原始的有霧圖像、文獻[7,10,13]和本文方法的暗通道圖。從圖1(b)中可以看出直接將有霧圖像各通道的最小值圖像通過最小值濾波后,暗通道呈塊狀分布,在計算局部區域的透射率時容易產生較大的誤差,而圖1(c)中加入了中值濾波后,暗通道變得更加平滑,但是仍然無法分辨出圖像中的細節,因此文獻[13]舍棄了原有的最小值濾波,直接使用中值濾波補償暗通道,如圖1(d)所示,圖像的細節部分得到了明顯的改善,而本文使用的均值濾波,相對于中值濾波而言,圖像的細節部分更為清晰,如圖1(e)所示。圖2展示了上述暗通道的細節放大圖像。

(a)原始圖像 (b)文獻[7]暗通道 (c)文獻[10]暗通道

(a)文獻[7]暗通道細節 (b)文獻[10]暗通道細節

(d)文獻[13]暗通道 (e)本文暗通道圖1 不同算法的暗通道

(c)文獻[13]暗通道細節 (d)本文暗通道細節圖2 不同算法的暗通道細節放大圖
傳統的暗通道去霧算法首先篩選出暗通道圖亮度最大的前0.1%個像素點,然后在原始圖像的相同像素點中選取最大的像素點的值作為大氣光的預估值。這一方法適用于不含有天空區域的圖像,但是運用到包含天空區域或者白色物體的有霧圖像時,則會錯誤地預估大氣光的值。
為了解決該問題,文獻[11]利用四叉樹搜索算法預估大氣光的值,但是該算法并不適用于天空區域較小的圖像,其預估的大氣光值偏小,導致圖像的去霧效果不佳。因此,本文從2.1節獲得的補償暗通道中選取前0.1%個像素點的平均值替代最大值進行大氣光值的預估,其公式可表示為:
A=mean(Idark(x))
(8)
同時,本文還增設了一個參數maxvalue,表示初始的最大大氣光值,其目的是防止計算出的大氣光值的取值接近于255(白色)而產生色彩失真的問題,這里的初始最大大氣光值相當于是大氣光值最終取值的一個判定條件,如果大氣光值的取值大于初始最大大氣光值,那么就選取初始最大大氣光值作為最終的大氣光值,否則就選取計算得出的大氣光值作為最終的大氣光值。本文在實驗中發現初始最大大氣光值取值為240時,圖像的去霧效果較好。
結合式(8)中的大氣光值的計算方法,可將本文提出的大氣光值預估的公式表示為:
(9)
式中:A′表示優化后的大氣光值。
2.3.1 初始透射率修正
經過2.1節的暗通道補償后,可將式(4)中的透射率的計算公式修改為:
(10)
由于天空區域的灰度值并不等于0,也就是說,式(2)中暗通道等于0的條件不成立,因此需要對初始透射率進行修正。文獻[14]根據邊界約束理論將暗通道設置成一個非零的向量Jmin,并在實驗中發現Jmin的取值范圍在0.1到0.2之間時,復原后的圖像去霧效果較好,因此直接選取該范圍的平均值來修正初始的透射率,即Jmin=(0.15,0.15,0.15),但是其后續處理需要使用到多正則化約束的變分模型來優化透射率,計算量十分大。
因此,本文引入了一個參數d(x),用來表示像素點到大氣光點的距離,其公式為:
(11)
式中:i表示彩色圖像的RGB通道;xi表示像素點在i通道的分量;A′表示優化后的大氣光值。
當像素點和大氣光點的距離越小時,表示像素點與大氣光點離得越近,進而說明像素點的值與大氣光值越接近,在進行透射率的預估時將會產生誤差,需要進一步修正,而像素點與大氣光點的距離較大時,透射率的預估值與實際值相差不大,無須修正。因此,本文設置了一個閾值d0,用來衡量需要修正的像素的范圍。在式(5)的基礎上添加一個修正項,于是初始透射率的修正公式就可以表示為:
進行實驗室生化試驗,發現該菌具有發酵葡萄糖、蔗糖、麥芽糖等功能,不能發酵阿拉伯糖、甘露醇,在對其進行MR、VP試驗后,發現呈陰性,能使明膠液化,但是不具備運動能力,不能對尿毒酶進行水解。
(12)
式中:λ是一個調節因子,用于在景深處保留少量的霧,取值為0.95;α是一個修正系數,取值為1。
2.3.2 快速引導濾波細化透射率
根據2.2節得到的大氣光值A′以及修正后的初始透射率,使用式(12)即可計算出圖像的透射率,然而,這種方法得到的透射率是相對粗糙的,其細節部分表現得并不清晰直觀。因此,文獻[9]使用引導濾波對圖像的透射率做進一步細化,引導濾波是一種邊緣保護的濾波方法,通過使用一幅引導圖像I對輸入圖像p進行濾波,使得輸出圖像q與輸入圖像p的差異盡可能小,同時,輸出圖像與引導圖像的紋理特征也基本相似,以達到保護邊緣信息的目的。
引導濾波的線性模型可以表示為:
qi=akIi+bk?i∈wk
(13)
式中:qi為引導濾波的輸出圖像;Ii為引導圖像;ak和bk為線性函數的常數項;wk是以k為像素中心點;半徑為r的濾波窗口。
為了使輸入圖像p和輸出圖像q之間的差異達到最小,可將它們的代價函數表示為:
(14)
式中:ε是一個正則化因子,其目的是避免ak取值過大。
通過最小化代價函數,即可求出細化后的透射率圖像。
由于引導濾波使用的引導圖一般是有霧圖像的灰度圖,其尺寸與原始圖像的尺寸一致,當原始有霧圖像的尺寸較大的時候,執行引導濾波所消耗的時間也隨之增大,而在計算圖像的透射率時并不需要很高的分辨率,因此,本文在此基礎上提出一種快速引導濾波算法,其步驟可表示為:
步驟1將原始有霧圖像縮小為原來的0.25倍,得到縮小后的圖像。
步驟2對縮小后的圖像進行暗通道以及透射率的計算,得到小圖的粗透射率圖。
步驟3使用雙線性插值法對小圖的粗透射率圖進行插值,還原為原始圖像的尺寸,得到原始圖像的粗透射率圖。
步驟4對原始圖像的粗透射率圖進行引導濾波,得到細化后的透射率圖。
實驗中發現多幅大小為768×1 024的圖像經過快速引導濾波處理后所消耗的時間約為普通引導濾波的一半,證明本文算法能夠有效地降低引導濾波的耗時。
圖3展示了He等[7]提出的算法以及本文算法的透射率圖像,可以看出He等的算法的粗透射率圖存在塊狀現象,圖像十分模糊,而使用引導濾波細化透射率后,可以大致地看出樹葉以及草叢的分布情況,而本文算法的粗透射率圖展現了更多的細節,從細透射率圖中能夠清晰地看出樹葉以及草叢的脈絡。

(a)He等的算法粗透射率圖 (b)He等的算法細透射率圖

(c)本文算法粗透射率圖 (d)本文算法細透射率圖圖3 He等的算法和本文算法的透射率圖比較

(15)
式中:t0是圖像透射率的一個下限閾值,取值為0.1。
本文算法流程如圖4所示。

圖4 本文算法流程
為了驗證本文算法的有效性,本文分別從主觀評價和客觀評價兩個角度對圖像去霧領域中較為典型的四幅有霧圖像進行了實驗。本實驗選取的參數如下:均值濾波的窗口尺寸Ω1=3,透射率的下限t0=0.1,引導濾波的半徑r=60,調整系數ε=0.000 1。
不同算法的去霧效果對比如圖5所示。算法均在Intel Core i7-6700HQ CPU @ 2.60 GHz、8 GB內存的機器上采用MATLAB R2014a開發平臺實現。

圖5 不同算法的去霧效果比較
經過對比度受限的自適應直方圖均衡算法(CLAHE)處理后的圖像的清晰度得到了一定程度的提升,可以在圖像中獲得更多的細節信息,但是圖像整體偏向灰色,并不自然。較為明顯的是第三幅圖像,在經過CLAHE算法處理后,可以清晰地看到天安門周圍(包含近景和遠景)樹木的紋理特征,但是天安門城樓這一建筑整體呈現灰色,十分暗淡。
經過保持色度的多尺度Retinex算法(MSRCP)處理后的圖像的亮度得到了明顯的提升,可以獲得更多的細節信息,但是圖像遠景處的霧氣并沒有得到完全的消除。較為典型的是第一幅圖像,經過MSRCP算法處理后,其亮度得到了提升,可以更清晰地看到圖像近景處樹葉的脈絡,但是在樓房的墻面處仍然存在著殘留的霧氣,使得墻面呈現白色。
對于傳統的暗通道去霧算法(DCP),從第四幅圖像中可以看出該算法能夠去除圖像遠景處的霧氣,但是圖像亮度整體偏暗,圖像中的部分細節并不明顯,從第二幅圖像中可以看出該算法能夠突出圖像近景處的細節,人物服飾的顏色以及門板的顏色更加真實,但是從第一幅圖像和第三幅圖像來看,該算法處理后的圖像天空區域的顏色是失真的,說明了傳統的暗通道去霧算法在預估大氣光值的方法上存在著誤差。
對于本文算法,從最后一列圖像中可以發現,相比CLAHE算法,本文算法沒有偏色的問題,在顏色保真性上表現更好;相比MSRCP算法,本文算法的去霧效果更好,可以消除圖像遠景中殘留的霧氣;相比DCP算法,本文算法增強了圖像近景處的細節,同時也解決了圖像在天空區域出現的顏色失真問題,經過本文算法處理后的圖像更加真實,符合人眼觀察。
本文采用峰值信噪比(PSNR)[15]、結構相似性(SSIM)[16]、運行時間作為評價圖像復原質量的客觀指標。二者都是基于原始圖像進行比對的,峰值信噪比的值越大,代表圖像的抗噪能力越強,而結構相似性分別從亮度、對比度、結構三個方面衡量了圖像的相似性,其值越大代表圖像的失真越小。峰值信噪比是由均方誤差推導而來,均方誤差對應的公式如下:
(16)
式中:I(i,j)和K(i,j)表示兩個灰度圖像;m和n分別對應著圖像的高和寬。
而峰值信噪比對應的公式如下:
(17)

結構相似性對應的公式如下所示:
SSIM=[l(x,y)]α×[c(x,y)]β×[s(x,y)]γ
(18)
式中:l(x,y)、c(x,y)和s(x,y)分別反映了圖像的亮度、對比度、結構信息;在實際運用中,一般將α、β、γ的值都設置為1。
表1展示了不同算法在峰值信噪比、結構相似性、運行時間這三個客觀指標下得到的結果,可以看出,本文算法的峰值信噪比以及結構相似性較其余三個算法而言有一定程度的提升,說明經過本文算法處理后的圖像的失真程度較小,能夠獲得高質量的圖像。

表1 不同算法去霧效果的客觀比較

續表1
從算法的執行時間這一角度來看,MSRCP算法所消耗的時間最長,并且圖像越大,算法執行的時間越長;而DCP算法則通過引導濾波有效地降低了運行的時間,處理不同尺寸的圖像所消耗的時間穩定在一定的范圍內;本文算法由于使用了下采樣以及雙線性插值的加速方法,因此執行引導濾波所消耗的時間約為DCP算法的一半,同時,本文算法所消耗的時間基本處于50 ms~80 ms的區間內,在速度上也達到了視頻識別的要求。
本文首先利用均值濾波對暗通道進行補償,利用補償的暗通道圖優化了大氣光值的預估方法,接著根據像素點和大氣光點距離的遠近對圖像的初始透射率進行了修正,并使用快速引導濾波細化了圖像的透射率,最后通過大氣散射模型求出復原后的去霧圖像。實驗結果表明,本文算法能夠有效地解決傳統暗通道去霧算法存在的色彩失真和細節缺失的問題。同時,該算法在運行時間上也達到了視頻識別的要求。然而,本文算法仍舊屬于傳統的圖像去霧算法,近年來基于深度學習的方法也被廣泛地應用于圖像去霧之中,因此,未來本文的研究方向將著重于使用生成對抗網絡的方法(如CycleGAN)對圖像進行去霧。