楊 燕,張浩文,張金龍
(蘭州交通大學電子與信息工程學院,甘肅蘭州730070)
在霧霾條件的場景下,由成像設備獲得的圖像存在細節丟失、對比度和能見度下降等問題,尤其在景深區域更加嚴重,這是由于大氣中大量微小顆粒對光線的吸收和散射作用導致的。這對計算機視覺應用造成了困難,例如戶外監控系統、目標跟蹤以及場景分析等。有效的圖像去霧算法對于計算機視覺系統更好地運行具有重要意義。
針對圖像去霧提出的眾多方法中,目前主要分為兩大類:傳統的基于圖像效果算法和基于深度學習的算法,其中基于圖像效果的算法可分為基于圖像增強的算法[1-2]和基于圖像復原的算法[3-5]。其中基于圖像增強算法的基本思想是突出圖像的某些信息從而達到圖像增強的效果,由于不考慮圖像退化的原因,恢復圖像往往不太自然。基于圖像復原的算法是通過分析圖像降質的本質,建立大氣散射模型,利用一些先驗知識或假設,估計散射模型中的必要參數,再通過散射模型反推出無霧圖像。基于圖像復原的算法往往可以實現較自然的去霧效果,是圖像去霧研究的熱點方向。基于深度學習的算法往往需要大量的樣本訓練,由于目前沒有大量真實的有霧圖像數據集,用于訓練的都是經過合成的有霧圖像數據集,所以恢復圖像存在缺陷[6-10]。
近年來,基于先驗知識或者假設的單幅圖像復原去霧算法獲得重大突破。這類方法的注意力在于對大氣光值和透射率的估計。對于大氣光值的估計,應盡可能地依靠天空區域的像素值。He等[11]利用暗通道中0.1%最亮像素點對應原圖的像素值對大氣光值進行估計,很容易受圖像中白色物體的影響,導致大氣光值估計不準確。Kim等[1]利用四叉樹的方法估計大氣光值,可以避免小塊白色物體對大氣光估計的影響,但是當圖像中存在大片白色區域的時候就會失效。Wang等[12]利用灰度投影的方法估計大氣光,同樣受大片白色區域的影響。對于透射率的估計,基于不同的先驗知識和假設,提出了很多估計透射率的方法。Zhu等[13]利用顏色衰減先驗,通過景深和亮度、對比度的關系估計透射率,該方法不能自適應地調整參數,導致透射率估計不準確,恢復圖像往往留有殘霧。Kumar等[14]利用顏色一致性原則估計透射率,該方法雖簡單有效,但估計的透射率可能整體偏大或偏小,導致過度去霧或去霧不徹底。He等[11]提出了暗通道先驗理論估計透射率,但是在大片天空區域和高亮區域仍失效。
對于含有天空區域的圖像,以上方法對天空區域的處理都容易產生失真現象。本文首先對天空區域進行分割,在天空區域進行大氣光值的估計,結合超像素分割改進暗通道有效地削弱halo效應,然后對天空和非天空區域進行不同的透射率映射得到最終的透射率。對于不含天空和只含天空圖像的圖像,本文也可以自適應地處理。相比傳統暗通道先驗理論,本文算法有效地解決了傳統暗通道先驗理論在大片天空區域和高亮區域失效的缺陷,相比其他基于天空區域分割的去霧算法,本文算法有效地解決了因分割錯誤在分割邊界處可能出現的問題,通過實驗觀察發現,本文算法在天空區域和非天空區域均表現出色。
根據大氣散射模型[15],獲得的有霧圖像可以表示為:

其中:x為像素坐標,I(x)為有霧圖像,J(x)為無霧圖像,A為大氣光值,t(x)為透射率。基于式(1)的有霧圖像復原過程其實就是已知有霧圖像I(x),通過估計大氣光值A和透射率t(x),從而還原無霧圖像J(x)的過程。當大氣中引起圖像降質的顆粒介質均勻分布時,透射率t(x)可以表示為:

其中:β為散射系數,d(x)為場景深度。
根據暗原色先驗理論[11],在大多數非天空區域內,至少有一個顏色通道在局部區域趨近于0,即:

其中:Jc表示J的三個顏色通道,Ω(x)表示窗口尺寸為n×n的以x為坐標中心的局部區域內像素點集合,Jdark為暗通道圖像。
對式(1)左右兩邊同時作暗通道操作,并將式(3)的假設代入,可得透射率為:

其中dark表示式(3)中類似的暗通道操作。為了保留一定殘霧,改善恢復無霧圖像的表現效果,文獻[11]引入一個調整因子ω=0.95,故式(4)被進一步寫為:

只要得到透射率t(x)和大氣光值A的估計,利用式(1)可以推導出復原去霧圖像的公式:

其中t0是人為設置的透射率t(x)的下界,通常取0.1。
算法原理框圖見圖1,首先由最小值通道圖像粗略分割圖像天空區域,在粗略分割后的天空區域對應原圖像素值求平均得到大氣光值A。再結合超像素分割和最小值通道以及大氣光值A得到初始透射率,進行導向濾波操作得到細化透射率。對細化透射率進行直方圖自適應分析,若95%的像素值小于0.5,則判斷圖像只含天空,對細化透射率利用天空透射率映射方法得到最終透射率,并結合大氣光值A恢復無霧圖像。否則便求得天空區域分割閾值Tt,或者判斷圖像為不含天空圖像。對于含天空圖像,利用閾值Tt精細分割天空區域,對不同的區域應用不同的透射率映射關系得最終透射率。對于不含天空圖像,將超像素改進暗通道中最亮0.1%像素點對應原圖中的像素值求平均作為大氣光值,應用非天空區域透射率映射關系求得最終透射率。最后由大氣散射模型恢復無霧圖像。

圖1 算法原理框圖Fig.1 Block diagram of algorithm principle
估計大氣光值的區域應該盡可能地選擇在天空區域,首先依據圖像最小值通道圖像,粗略的分割天空區域,為保證選取大氣光值的區域處于天空區域,只保留最大連通區域作為分割結果。首先得到圖像最小值通道,如圖2(a)所示,其表達式為:


圖2 天空區域粗分割Fig.2 Rough segmentation of the sky area
如圖2所示為粗分割圖像天空區域過程,閾值Td取在最小值通道圖像直方圖右側第一個谷底處。為避免白云和白色物體影響,需要對閾值作約束,即閾值要滿足右側像素數大于總像素數的5%,否則將閾值取于下個谷底處,分割圖像如圖2(c)所示。此時分割的圖像會包含圖像非天空區域的白色物體,為了估計更準確的大氣光值,只保留最大連通區域作為估計大氣光值的區域,記為seg1,如圖2(d)所示。這種分割將真實天空區域的大部分區域分割出來,雖然不適合作為3.4節透射率映射的區域分割,但對于估計大氣光值這個目標是合適的。則大氣光值可以表示為:

其中:c表示RGB三通道,m是seg1中值為1的像素數。
傳統暗通道先驗算法計算暗通道時使用最小值濾波,在物體邊緣區域計算暗通道時估計過小,如圖4(b)中紅色方框所示,這就是恢復圖像產生halo效應的原因(彩圖見期刊電子版)。

圖3 最小值濾波和超像素分割求局部最小值原理圖Fig.3 Schematic diagram of minimum filtering and super pixel segmentation for local minimum

圖4 最小值濾波和超像素分割求局部最小值對比Fig.4 Comparison of minimum filtering and super pixel segmentation for local minimum
本文利用超像素分割[16]在局部小塊區域分別求最小值代替最小值濾波操作,圖3為二者的原理圖。圖4為兩種方法分別對圖2(a)最小值通道處理后的結果對比,得益于超像素分割的邊緣保持特性,圖4(c)中含有更多的邊緣細節(如圖中間的樹枝以及房頂)。在圖4中紅框位置,圖4(b)的山峰明顯丟失了邊緣而且高于原圖像中的實際位置,而本文提出的超像素分割求局部最小值的處理結果基本與真實的邊緣相似。
如圖5(a)所示,超像素分割的小塊數為1 000。相對于方形的窗口區域,超像素分割的小塊區域內透射率是常數這個假設將更加適用,故使用超像素分割的小區域求局部最小值代替方形的最小值濾波,可以有效地減弱halo效應。

圖5 透射率細化過程Fig.5 Process of refining transmission

圖6 擬合曲線圖Fig.6 Fitted curve graph
首先結合3.2節估計的大氣光向量值計算超像素改進暗通道,如圖5(b)所示,其表達式為:

其中:SLICdark表示超像素暗通道,S(x)表示超像素分割的子塊區域。本文由于提出的透射率映射方法有效地解決了天空區域和高亮區域存在的問題,故在估計透射率時不需要加入(5)中的調整因子ω,得到初始透射率如圖5(c)所示,其表達式為:

再對(10)得到的初始透射率進行導向濾波操作,得到細化透射率trefined(x),此時若統計小于0.5的像素點數目大于95%,則判斷圖像只含天空,直接將trefined(x)利用天空透射率映射關系,獲得最終透射率,再結合大氣光值恢復無霧圖像。否則如圖5(d)所示,該圖在天空區域和非天空區域有明顯的邊界,故對細化透射率使用自適應閾值法并保留最大連通區域可以將天空區域精細的分割出來,該分割圖像記為seg,如圖7(b)所示。
如圖7(a)所示,閾值Tt自適應地取于細透射率直方圖左側第一個谷底處。具體操作是首先對直方圖中的點進行八次多項式擬合,如圖6所示。再以0.01的間隔對擬合曲線進行采樣,最后經過逐點掃描確定第一個極小值點所在的位置即為閾值,閾值左側對應于天空區域應該占整幅圖像大小的5%,并且天空區域的透射率值應小于0.5,這可以作為判斷圖像是否含有天空區域的條件。

圖7 天空區域精細分割Fig.7 Fine segmentation of sky area
若閾值滿足上面兩個條件,表示圖像含有天空區域。當選取的閾值不滿足以上條件時,默認該圖像不含有天空,那么就需要重新估計大氣光值,具體操作就是選取超像素分割暗通道最亮0.1%像素點處對應原圖像中的像素值作為大氣光值,然后利用超像素暗通道進一步估計透射率,將此透射率按照3.4節中非天空區域透射率映射處理后得到最終透射率,最后依據大氣散射模型恢復無霧圖像。
在天空區域和高亮區域,像素的最小值通道往往趨近于A,觀察式(4)可知,在這些區域內透射率趨向于0,暗通道先驗理論在天空區域和高亮區域失效的原因就在于這些區域內透射率t(x)是一個很小的值,甚至部分區域內統一的當作定值0.1去處理。觀察式(6)可知,當透射率在這些區域內被固定的設置為0.1時,恢復圖像像素點間的差異就被放大了10倍,所以暗通道先驗理論恢復的無霧圖像在天空區域會出現明顯的輪廓效應和顏色失真現象,如圖11中He的算法[11]所示。
從理想的天空區域恢復效果可知,在天空區域,恢復圖像在實現一定去霧效果的同時應盡可能逼近原圖像,即:

觀察(1)可知要想滿足上述情況,透射率t(x)將趨近于1。這和暗通道理論得到的天空區域透射率正好是互補的關系,假設映射后的透射率用t′(x)表示,則在天空區域有:

直接在天空區域應用(12)的映射關系會引起由于去霧程度不一致導致的視覺缺陷,所以需要在天空區域和非天空區域交界處透射率平緩地過渡來解決這一問題,由于交界處位于非天空區域一側的透射率正好是精細分割所用的閾值Tt,故天空區域的透射率映射關系應該滿足在靠近閾值處平緩的逼近邊界處的閾值Tt。
高斯函數的衰減特性正好滿足上述條件,其表達式為:

如圖8所示,在自變量為3σ時,函數基本衰減為0,本文取自變量為0~4σ的高斯函數圖像,并通過伸縮平移變換作為天空區域透射率映射關系,如圖9中紅色虛線所示。

圖8 高斯函數(a=1,b=0,σ=1)Fig.8 Gaussian function(a=1,b=0,σ=1)

圖9 透射率映射Fig.9 Transmission mapping
對于非天空區域,當存在大塊白色物體的時候,He等[11]的算法同樣由于透射率取為下限定值0.1,會產生顏色失真。本文將非天空區域透射率0~0.2線性的映射到0.1~0.2,由于透射率連續的變化,很大程度減弱了非天空區域在白色物體處產生的顏色失真現象,映射關系如圖9中藍色實線所示(彩圖見期刊電子版)。最終映射透射率可以表示為:

得到透射率和大氣光值,便可以由(1)得到無霧圖像:

為了驗證本文算法的性能,從主觀評價和客觀評價兩個方面對本文算法和其他幾種常用算法得到的結果進行比較。
主觀評價是由觀察者對恢復圖像進行觀察,從主觀感覺上對圖像質量進行評價,主觀評價可以最直觀的反應去霧效果。本文所選的算法有He等[11]的暗通道先驗算法、Meng等[17]的邊界約束算法、Cai等[18]的基于端到端系統的算法、Ren等[19]的基于多尺度卷積神經網絡算法、Berman等[20]的非局部去霧算法對比結果如圖10~圖12所示。
圖10 為天空區域是藍色天空場景下的有霧圖像去霧效果對比,圖10(b)在非天空區域表現良好,但是在天空區域過飽和,尤其在白云區域表現不自然;圖10(c)在非天空區域出現顏色失真現象,在天空區域和非天空區域交界處存在偏色現象;圖10(d)在天空區域表現出色,在非天空區域遠景處去霧不徹底,在近景處顏色偏暗(如第二排圖像樹林處);圖10(e)在天空區域過飽和,在非天空區域出現顏色失真現象并且去霧不夠徹底;圖10(f)在天空區域表現良好,但是在非天空區域出現顏色失真現象,遠景區域去霧不徹底;圖10(g)為本文算法復原圖像,在天空區域表現較為自然,沒有出現過飽和現象,非天空區域去霧比較徹底且沒有出現顏色失真現象,復原圖像整體效果比較理想。

圖10 藍色天空圖像復原效果對比Fig.10 Comparison of restoration effects of hazy images with blue sky

圖11 灰色天空圖像復原效果對比Fig.11 Comparison of restoration effects of hazy images with gray sky
圖11 為天空區域是灰色天空場景下的有霧圖像去霧效果對比。對于天空區域的恢復,He,Meng,Berman等人的算法均出現顏色失真現象以及輪廓效應,Cai,Ren和本文算法在灰色天空區域恢復較為自然。對于非天空區域的恢復,Cai和Ren的算法去霧不夠徹底,Meng的算法在細節處顏色失真較為嚴重,Cai的算法近景區域偏暗,Berman的算法在細節處恢復過暗,丟失圖像細節信息,并且存在顏色失真現象,He的算法和本文算法在非天空區域表現良好,本文算法比He的算法去霧更加徹底。綜上所述,本文算法不僅在天空區域表現自然,且在非天空區域去霧徹底,在天空區域和非天空區域交界處也處理自然,沒有出現因天空區域分割不夠細致,將圖像中天空區域當作非天空區域處理或者相反的處理,導致的在分割錯誤區域出現的異常現象。

圖12 不含天空圖像復原效果對比Fig.12 Comparison of restoration effects of hazy images without sky
圖12 為不含天空圖像的復原效果對比。Meng的算法在較遠的區域出現偏色現象,Cai和Ren的算法在近景區域顏色偏暗,在遠景區域留有殘霧,Berman的算法在近景區域表現良好,但是在遠景區域留有殘霧,He的算法和本文算法對于不含天空圖像去霧效果比較良好,顏色表現較為自然,相對于He的算法,本文算法去霧更加徹底。
實驗選取主觀評價的6幅含天空有霧圖像,分別采用He[11],Zhu[13],Wang[21],Cai[18],Ren[19],Meng[17],Berman[20]的算法與本文算法進行比較。采用無參考圖像質量評估方法,將新增可見邊率e,平均梯度r,飽和像素點比例σ以及處理時間t作為評價指標,越大的e和r及越小的σ和t表示圖像的復原效果更好。最后求各項指標的平均值,實驗對比數據如圖13所示,各指標的表達式如式(16)~式(18)所示:

圖13 客觀評價Fig.13 Objective evaluation

其中:no和nr分別表示有霧圖像和去霧圖像中可見邊緣數量,ri表示去霧圖像和有霧圖像的梯度比,pi是可見邊緣上的像素,φr是去霧圖像的可見邊集合,w和h是圖像的長和寬,ns表示去霧圖像中純白和純黑像素點的數量。
從對比的結果來看,本文算法在飽和像素點比例σ上取得了不錯的表現,在歸一化平均梯度r上取得了基本和其他算法持平的表現。對于新增可見邊率e,因為選取的都是含天空圖像,He,Zhu,Meng和Berman的算法在天空區域出現失真所以導致該指標表現較好,所以本文算法在該指標的表現上表現良好。對于運行時間t,本文算法相對于其他算法有較好的表現,但是不如He,Zhu和Wang的算法。綜上所述,雖然運行時間上本文算法不及其他幾個算法,但是在其他指標上均表現良好,考慮到本文算法在主觀評價的良好表現,本文算法具有一定的優越性。
針對暗通道先驗理論在天空區域復原圖像時失效的問題,通過對問題產生的原因分析,提出了基于天空區域分割和透射率映射的方法有效地解決了這一問題。通過對天空區域的粗略分割,獲得更為準確的大氣光值。引入超像素分割的小塊區域代替暗通道操作中方形窗口的最小值濾波操作,有效地減弱了塊狀效應和halo效應。實驗結果表明,本文算法復原圖像在非天空區域去霧徹底,在天空區域沒有出現失真現象,天空恢復比較自然,整體復原圖像表現良好。