尹宋麟,譚 飛,2,周 晴,鮮 陽,趙 亮
(1.四川輕化工大學自動化與信息工程學院,四川 宜賓 644000;2.人工智能四川省重點實驗室,四川 宜賓 644000)
隨著現代社會科技水平的不斷進步,圖像作為信息傳遞的媒介在智能交通、醫學圖像檢測等領域應用廣泛。設備采集圖像時需要良好的光照,若在霧霾天氣下,圖像存在特征信息模糊、細節丟失、色彩失真等現象,嚴重影響了設備對圖像的分析與理解。因此,如何處理有霧圖像獲取有效信息具有重要的研究意義。
圖像去霧算法主要分為圖像增強和圖像復原兩類,圖像增強以直方圖均衡化[1]和基于 Retinex 理論[2]的相關算法為代表,這一類算法優點是處理速度快、色彩恒定;缺點是在光照變化較大區域會產生光暈現象,導致圖像細節丟失。圖像復原以暗通道先驗算法[3]最為經典,此類算法優點是能夠將圖像的細節信息盡可能保留,去霧效果較為自然;缺點是當圖像中存在大面積高亮區域時,復原圖像亮度整體偏暗。丁潔等[4]采用四分加權算法和導向濾波[5]對暗通道進行優化,并結合MSR算法[6]提升了圖像亮度和清晰度,但在處理含有天空區域的圖像時會產生Halo 效應。彭靜等[7]采用四叉樹搜索法獲取大氣光值并用雙邊濾波[8]優化透射率,通過Canny算子[9]和二維伽馬函數[10]校正了圖像亮度,恢復了有霧圖像的細節信息,但對濃霧圖像去霧并不理想。Ngo 等[11]通過圖像特征函數估計傳輸圖,設計自適應大氣光值改善圖像亮度不均勻現象,但算法復雜度高,且復原圖像過于飽和。Zhu 等[12]通過圖像融合算法,構建基于全局和局部曝光的像素權重圖進行去霧,平衡了復原圖像的色彩飽和度,但光照變化處的殘霧沒有消除。
針對以上問題,本文提出一種基于空域占比自適應暗通道去霧算法。首先對輸入圖像的灰度圖自適應迭代出閾值,識別出天空區域并分割;接著計算天空區域與輸入圖像的占比,若占比大于5%,大氣光值取天空區域中前1%最亮像素點均值,否則采用加權平均求取大氣光值;對不滿足暗通道理論的天空區域透射率進行修正,并引入引導濾波細化;最后通過大氣散射模型恢復無霧圖像。
在計算機視覺以及圖像處理領域,所采用的描述有霧圖像的大氣散射模型[13]的數學表達式為:
式中I(x)為有霧圖像;J(x)為需要恢復的無霧圖像;A為大氣光值;t(x)為透射率。由于I(x)為已知量,只需計算A與t(x)的值就能反解出J(x)。由此可知,如何準確求解透射率和大氣光值是大氣散射模型去霧的關鍵。
暗通道先驗理論[3]表明,在無霧圖像J(x)的非天空區域,即使圖像曝光良好,R、G、B 3個通道中也會存在一個通道的某些像素值趨近于零,這個客觀事實由數學表達式描述為:
式中,Jdark(x)為圖像J(x)的暗通道;Jc(y)表示圖像的R、G、B 3個顏色通道中的其中一個;Ω(x)表示像素點x的局部窗口,通常取15×15。
假設大氣光值A已知,利用大氣光值對式(1)進行歸一化:
假設~(x)表示Ω(x) 中的透射率且為固定值,計算式(3)暗通道:
將式(2)代入式(4),化簡求得t~(x):
為了保留圖像深度,需要保留一定程度的霧。因此在式(5)中引入在[0,1]區間的參數ω=0.95,修正為:
計算出透射率后即可求出無霧圖像J(x),同時為了避免分母的透射率趨于0,設置下限t0防止公式無意義,一般t0取值為0.1。最后由式(1)得到去霧圖像公式如下:
由于暗通道先驗算法只能較好地適用于非天空區域,但在實際情況中圖像會出現天空區域,此時暗通道去霧易造成復原圖像顏色失真,去霧效果不理想。因此,需要將天空與非天空區域分割后,采用不同的方法去霧。
在包含天空之類的明亮區域中,它們的像素值很大,在RGB 通道中找不到像素值接近于0 的點,此時暗通道理論在這些區域并不成立。因此本文提出自適應閾值迭代法分割天空區域,以便后續對天空區域去霧,具體步驟如下:
1)為降低算法運算量,將有霧圖像I(x)轉化為灰度圖像G(x):
2)求出灰度圖中最大灰度值Gmax(i,j)和最小灰度值Gmin(i,j),設置初始閾值表達式:
3)分別計算灰度值小于和大于閾值T的灰度總值S0和S1,以及灰度個數n0和n1,表達式如下:
4)分別計算小于和大于閾值的均值,得到新的閾值表達式:
當T與T′相差小于0.1 時,停止閾值迭代,此時T′即是最佳分割閾值,選擇灰度值大于T′的區域連通,將面積最大的區域作為最終分割出的天空區域。算法具體流程圖如圖1所示。

圖1 天空分割算法流程圖
通過最佳灰度閾值對天空進行分割后的結果如圖2所示。

圖2 天空區域識別結果
大氣光值選取的準確性與圖像去霧的結果密切相關,He 等[3]對大氣光值的估計是選取圖像暗通道中像素值最大的前0.1%的點,然后對應到原圖中找到像素最大點作為結果。但該方法存在一定問題:當霧圖中出現明亮物體時,該方法估計出的大氣光值會偏大,影響去霧效果。于是Wang等[14]提出取天空區域像素均值作為大氣光值的估計,但對于天空較小甚至某些沒有天空的圖像,這種方法還不夠合理。因此,本文提出一種改進的大氣光值A的獲取方法。
首先通過2.1 節得到的最佳閾值計算天空區域像素與整幅圖像像素比例,若占比大于5%,則選取天空區域中前1%個最高亮度像素均值作為大氣光值,否則采用加權平均[15]求全局大氣光值。定義U(x)為原圖天空區域,M為原圖像素點總個數;m為天空區域的像素點總數,Ur(x) 記錄原圖中像素值最大的前0.1%的點,則改進后求取A的表達式為:
式中,n=m/M表示天空區域的權值;Umed=med(Ur(x))表示取Ur(x)中值;Imax(x)表示由暗通道先驗選到的大氣光值。
He 法和改進方法效果如圖3 所示,圖中藍色方框標記的為He 的方法,紅色方框標記的為改進方法。可以看出,He法錯誤地將大氣光候選區域定位在白色物體上,而改進方法將大氣光候選區域定位在遠處的天空區域內,避免了白色物體所造成的估值偏差。

圖3 He法和改進方法估計大氣光值結果
由上述分析知,含天空之類的明亮區域不適用于暗通道理論,因此計算出的透射率是不準確的。若不考慮暗通道理論,則由式(4)推導出的準確透射率函數應為:
式(14)、(15)中Y為經驗公式,為透射率修正因子,As為天空區域亮度值均值,Ps為空域占比。
修正后的透射率在圖像邊緣處過小,導致去霧圖像出現塊狀效應。為了得到較為理想的透射率,采用引導濾波[5]對其進行優化,引導濾波器在對圖像進行重建的同時能夠保持圖像平滑,具有一定的邊緣保持性,數學模型表示為:
其中,qi為輸出圖像;Ii為引導圖像;i、k表示像素索引;wk表示像素點k的局部窗口;ak和bk為wk的代價函數確定的線性系數。代價函數式為:
其中,ε為防止ak和bk過大的正則化因子;pi為有霧圖像。通過最小二乘法求解線性系數ak、bk為:
其中,|w| 為wk中所有像素點總個數;μk為Ii在wk的均值;σk為wk的方差。由于ak、bk在不同窗口區域值不同,因此需對各窗口區域中的線性系數求均值:
其中,分別表示像素i處wk的平均系數。使用輸入圖像的灰度圖作為導向圖,對引導濾波修正前后的結果圖進行對比,如圖4 所示。可以看出優化后的透射圖更加光滑,細節部分也更完整。

圖4 引導濾波優化前、后的透射率
為驗證本文改進算法的有效性,選取6 幅含有天空區域的有霧圖像進行仿真實驗,其空域占比值見表1,同時從主觀和客觀兩方面出發,與其他經典的去霧算法進行對比分析。實驗所用到的軟件是Matlab R2020a,操作系統為Windows 10,處理器為Intel(R) Core(TM) i7-11800H@2.30 GHz,16 G內存。

表1 空域占比值
主觀分析可以最直觀地觀察圖像復原后的效果。將本文算法分別與文獻[3]、文獻[11]和文獻[12]進行對比,實驗結果見表2。He 算法和Ngo 算法處理的天空區域出現偏色,雖然Ngo 算法處理后的圖像整體色調稍有提升,但細節部分處理不夠理想導致復原后的圖像顯得過于飽和;Zhu 算法復原效果較好,但在光照變化處殘霧依然存在,高亮度區域導致了圖像整體偏暗;所提改進算法復原后的圖像更加清晰自然,天空區域顏色得到改善,光照變化區域沒有出現偽影,有效恢復了有霧圖像的細節信息,去霧較為徹底。

表2 不同算法去霧效果對比
采用信息熵H、峰值信噪比(PSNR)、平均梯度r和運行時間t作為評價去霧效果的客觀指標[18]。信息熵用于度量圖像中所包含信息的豐富程度,其值越大說明圖像攜帶的信息量越多。PSNR是一種衡量圖像質量和失真度的指標,其值越大說明圖像失真越小、質量越好。平均梯度描述的是圖像邊界或影線兩側附近灰度值的變化,反映了圖像微小細節反差變化的速率,該指標主要用來表征圖像的相對清晰度,其值越大說明圖像越清晰。表達式分別為:
其中,i為圖像像素值;pi為i出現的概率;n為每個采樣值的比特數;MSE為原圖像與去霧圖像之間的均方誤差;rt為原圖像與去霧圖像對應像素點的平均梯度比值;?為去霧圖像可見邊的集合。采用客觀指標對各算法處理后的圖像進行評價,各項數據見表3~6。

表3 不同算法信息熵對比 bit

表4 不同算法峰值信噪比對比 dB

表5 不同算法平均梯度對比
對比表3~5 發現,本文改進去霧算法在信息熵整體優于其他算法,說明復原圖像包含信息豐富,去霧更徹底,在圖像6 中信息熵對于He 算法提升幅度最大,為36.1%。所提算法峰值信噪比優于He 算法和Ngo 算法,在圖像5 中略低于Zhu 算法,在圖像3 中相對于Ngo 算法有較大改善,提升15.9%。在圖像2 中平均梯度相對于He 算法提升幅度最大,為28.5%,說明復原圖像失真小、清晰度高。由表6可知,所提算法的運行時間少于He 算法和Ngo 算法,但略高于Zhu算法,說明改進算法的時間復雜程度也有所降低。綜上所述,本文所提改進算法能有效對圖像去霧,且具有一定的優勢。

表6 不同算法運行時間對比 s
本文主要提出了一種基于空域占比自適應暗通道去霧算法,針對含有天空區域的有霧圖像,使用自適應閾值分割出天空區域;根據天空區域在圖像中的占比選擇不同的方法獲取大氣光值,避免了估計偏差;接著修正天空區域透射率并采用引導濾波平滑,有效恢復了圖像細節信息。最后分別與He、Ngo 和Zhu 的算法在有霧圖像上進行主、客觀結果對比,證明了改進算法去霧的優勢,不僅改善了天空區域顏色失真問題,且具有較低的時間復雜度。針對沒有空域的有霧圖像,暗通道先驗就能取得較好的去霧效果。后續將在目標識別任務中運用此方法對含霧數據集進行預處理。