楊燕,王志偉
(蘭州交通大學電子與信息工程學院,甘肅 蘭州 730070)
在霧、霾等常見不佳天氣狀況下,由于空氣中存在大量介質(zhì)粒子,會對戶外圖像采集系統(tǒng)造成很嚴重的干擾,使得到的圖像或?qū)崟r視頻質(zhì)量下降,嚴重影響此類信號的實際應用價值。因此,對戶外系統(tǒng)采集得到的圖像進行清晰化處理和復原有重要的研究意義。
從目前的研究現(xiàn)狀而言,為了能使計算機視覺系統(tǒng)做出更精確的判斷或識別,霧天圖像恢復起著重要的預處理作用,因此去霧處理是計算機視覺和圖像領域共同關注的熱點。早期的去霧算法主要基于圖像增強,代表性算法有直方圖處理[1]和Retinex理論[2]等。但是這類方法只是簡單地改善了亮度和色彩,并沒有仔細考慮成霧原因,得到的處理效果也較為一般。
近年來,基于圖像復原的方法得到了充足的發(fā)展,通過反演成霧過程,利用景深信息或先驗規(guī)律,并結(jié)合大氣散射模型得到最佳的復原效果。Tan[3]觀察到無霧圖像的對比度高于有霧圖像,從而提出最大化對比度算法,利用馬爾可夫隨機場(MRF,Markov random field)建模進行優(yōu)化,該方法能夠較好地去除霧氣,但是容易失真。He 等[4]基于大量的統(tǒng)計信息,提出了著名的暗通道先驗,取得了顯著的去霧效果,但是不善于處理包含高亮區(qū)域的圖像。Zhu 等[5]提出了顏色衰減先驗規(guī)律,利用機器學習訓練得到圖像的景深信息和其飽和度與亮度之間的關系,但存在去霧不徹底的問題。Meng 等[6]通過邊界約束來限制透射率的范圍,使用正則化方法進行優(yōu)化,但是復原結(jié)果有偏色現(xiàn)象。
最近,研究人員提出了很多基于深度學習的復原算法。Cai 等[7]設計了一種基于端對端的網(wǎng)絡架構(gòu),與現(xiàn)有復原方法中使用的假設先驗條件建立聯(lián)系,獲得最終的去霧結(jié)果。Ren 等[8]提出了多尺度卷積神經(jīng)網(wǎng)絡用來訓練透射率,并以精細尺度的網(wǎng)絡進行優(yōu)化。Liu 等[9]設計了一種新的殘差結(jié)構(gòu),聚合先驗知識和霧圖信息,用來估計透射率。雖然使用深度學習具有很強的前沿性,但存在的問題是沒有大量且真實的數(shù)據(jù)庫,在訓練中使用的都是經(jīng)過合成和渲染的有霧圖像數(shù)據(jù)集,這也導致了使用此類方法并不總能得到最佳和穩(wěn)定的結(jié)果。
基于暗通道先驗類的復原算法容易對天空或明亮區(qū)域造成失真,且伴隨著光暈效應。針對這2個不足,本文設定補償透射率并利用高斯函數(shù)進行擬合,得到優(yōu)化后的精準透射率。通過分析圖像中的霧氣特性,提出亮度熵概念,對霧圖求取亮通道操作并逐像素處理得到亮度熵信息,輔助于金字塔模型得到紋理特征,獲取最終的霧氣分布圖。建立一種自適應關系求取霧氣濃度系數(shù),同時改進局部大氣光的求取方法,結(jié)合大氣散射模型得到復原結(jié)果。實驗結(jié)果表明,本文方法可以取得顯著的去霧效果。
在計算機視覺理論中,通常以大氣散射模型[10-11]來描述成霧原理,它是霧天圖像具有低對比度、顏色衰退等性質(zhì)的理論基礎,其計算式為
其中,I(x)為有霧圖像;J(x)為無霧圖像;A為全局大氣光;t(x)為透射率,其反映著陽光穿透大氣直達成像設備的能力,值越大穿透能力越強;J(x)t(x)為直接衰減項,表示入射光線經(jīng)過空氣中介質(zhì)粒子散射后的衰減程度;A(1 -t(x))為附加項,表示在成像過程中加入的環(huán)境散射光,來源有直射光、大氣散射光或地面反射光。當空氣中介質(zhì)粒子分布均勻時,t(x)可表示為
其中,d(x)為景深信息,即成像物體到成像設備之間的距離;β為大氣散射系數(shù),表示單位體積的大氣對光的散射能力。在去霧問題中,唯一的已知量為I(x),即通過式(1)來求取結(jié)果J(x)是一個病態(tài)問題,必須加入其他條件。因此,求取透射率t(x)和大氣光值A為算法的關鍵。
He 等[4]提出的暗通道先驗在去霧領域取得了突破性的成就,基于對大量戶外無霧圖像的統(tǒng)計提出一幅無霧圖像,除卻天空或部分高亮區(qū)域,像素值至少在一個{r,g,}b顏色通道中趨于0。暗通道的計算式為
其中,c表示顏色通道,Ω(x)指以像素x為中心的鄰域,Jdark(x)被稱為暗通道圖。結(jié)合式(1)對式(3)兩邊取最小值濾波,可以得到初始透射率t0(x)為
其中,ω是為了保留少量霧氣,以免霧氣去除太過徹底造成復原效果不自然,通常取ω=0.95。利用式(5)得到的透射率比較粗糙,并不能直接用來復原。因此,He 采用軟摳圖算法對透射率進行優(yōu)化,雖然結(jié)果有所改善,但是時間復雜度略高。隨后又提出較快的引導濾波優(yōu)化算法[12],得到了較為滿意的效果。
暗通道先驗基于統(tǒng)計規(guī)律,以一種簡便直觀的方式來求取關鍵參數(shù)透射率t(x),但是存在以下2個問題。
1)天空區(qū)域透射率估計過小。暗通道清楚地指出其不適用于天空等高亮區(qū)域。因為在這些區(qū)域,暗通道值并不趨向于0,而是趨于一個較大的值,繼而導致實際透射率偏大。但由于采用式(5)計算全局透射率,導致天空區(qū)域的透射率估計過小。
2)容易出現(xiàn)光暈效應。獲得暗通道的主要步驟為兩次最小值濾波,但是在邊緣附近采用最小值濾波會造成信息缺失,導致較亮部分被低估,使邊緣處的透射率偏大,進而產(chǎn)生光暈效應。
以圖1 為例,觀察He 算法的處理結(jié)果可以發(fā)現(xiàn),在帽子邊緣以及山頂與天空的交界處都有稍明顯的光圈,就是典型的光暈效應;而且在天空區(qū)域有失真現(xiàn)象,偏色嚴重。而本文算法較好地改善了上述不足,得到了較為滿意的效果。
圖1 光暈效應及天空失真
由第2 節(jié)內(nèi)容可知,利用暗通道先驗會造成天空等高亮區(qū)域的透射率偏小。依據(jù)數(shù)學推導,提出補償透射率對其進行修正。在式(4)的基礎上,不結(jié)合暗通道規(guī)律,則有
結(jié)合式(5)得到
可以發(fā)現(xiàn),利用暗通道求取的透射率t0(x)只是式(7)的一個特例。設,可得到全局透射率t(x)為
其中,t0(x)為相對透射率,γ(x)t(x)為補償透射率。通過如此修正,得到的全局透射率t(x)為精準透射率,有效避免了使用相對透射率t0(x)帶來的不足。
在RGB 色彩空間中,A、I(x)、J(x)這3 個量共平面且模長依次遞減[13],假設I(x)和J(x)之間存在某種衰減關系,且因為高斯函數(shù)具有良好的分布特性以及衰減性質(zhì),本文以其來擬合Idark(x)和Jdark(x)之間的關系為
其中,σ為標準差,取值0.15。得到γ(x)后,利用式(10)可得到全局精準透射率t(x)為
實驗對比如圖2 所示。圖2(a)為一幅含有天空區(qū)域的霧圖。利用暗通道先驗得到的透射率在天空處偏低,如圖2(b)所示。而在經(jīng)過本文算法補償后天空透射率顯著提高,如圖2(d)所示。針對復原結(jié)果,與He 算法相比,本文算法在天空區(qū)域的處理更加徹底,如圖2(f)所示。
圖2 透射率示意
在有霧圖像中,霧氣的分布及濃度可以被直觀察覺,其主要特征是亮度值較高。本文將霧氣分布變通理解為亮度信息的混亂程度,在大部分情況下,混亂程度越高,霧氣分布越濃越彌散。在物理學中,能夠描述混亂程度的概念為信息熵。借此,本文提出以圖像的亮度熵信息來反映霧氣特征,熵值越大,霧氣出現(xiàn)的隨機性越高(混亂程度高)。具體步驟為,首先進行兩次最大值操作,求取原圖的亮通道圖Ibright(x)來反映整幅圖像的亮度分布信息為
然后利用熵公式即式(12)得到亮度熵信息e為
由于采取對數(shù)操作,考慮極端情況,會使值為1 的像素點經(jīng)過變換后變?yōu)?,因此λ的作用是避免像素為空值,取λ=0.01,m和n表示圖像的長和寬,e(i,j)為某一像素的具體熵值。由于得到的初始亮度熵信息比較粗糙,故采用引導濾波進行降噪平滑處理,guide 表示引導濾波操作。
單純的亮度熵信息無法充分體現(xiàn)出霧氣分布情況,需配合原始圖像的紋理特征d。本文采用在尺度空間中滿足視覺不變性的高斯金字塔[14]來擬合人眼在不同觀察尺度下的模糊程度。
算法1紋理特征獲取
輸入有霧圖像I(x)
輸出將上采樣的結(jié)果作為紋理特征e
Step1轉(zhuǎn)換成灰度圖進行高斯模糊,窗口大小為15×15 。
Step2對模糊后的圖像進行下采樣,尺寸縮小為原圖尺寸的
Step3對下采樣后的圖像繼續(xù)進行高斯模糊。
Step4對模糊后的圖像繼續(xù)下采樣,尺寸縮小為原圖尺寸的
Step5對大小的模糊圖像進行上采樣,達到原圖尺寸。
結(jié)合紋理特征和亮度熵信息,利用式(14)可得到最終的霧氣分布圖DisH 為
為了充分驗證本文提取霧氣分布方法的有效性,分別選取高亮度清晰圖像和有霧圖像,進行霧氣提取操作,結(jié)果分別如圖3 和圖4 所示。可以發(fā)現(xiàn),高亮度清晰圖像的直方圖分布比較集中,趨向于端分布,且DisH 分布主要集中在高亮背景部分,而其余部位無法體現(xiàn)出分布特性,如圖3(b)和圖3(e)所示,其中橫坐標為像素值,縱坐標為對應像素的個數(shù)。在有霧圖像中,因霧氣充滿整幅圖像,直方圖分布跨度稍大,如圖4(b)和圖4(e)所示。不再集中于部分區(qū)域,導致DisH 中的亮度分布較為廣泛,直觀上很好地擬合了霧氣分布,也證明了所提方法的可行性。
He 等為了避免徹底去除霧氣而導致復原結(jié)果不自然,將式(5)中ω取為定值0.95。但是針對不同圖像,例如濃霧情況會造成去霧不徹底,薄霧產(chǎn)生失真;且ω的值不宜太小,否則不能體現(xiàn)去霧效果,一般情況下,ω的取值范圍為[0.8,1]。本文在得到霧氣分布DisH 的基礎上,建立一種線性關系來自適應求取ω。在求取亮度熵信息e的過程中,因為采用了對數(shù)變換而導致像素被壓縮,使霧氣分布圖DisH 的像素整體偏低。令m表示DisH 的最小值,M為最大值,mean 為均值,建立
圖3 無霧高亮圖像DisH 及對應的直方圖分布
圖4 有霧圖像DisH 及對應的直方圖分布
以m為初始截距,1 +mean為斜率對M進行提高,同時為防止ω溢出,取最大值0.98 進行抑制,線性變換如圖5 所示,其中i、j表示歸一化后的像素值,單位為1。
由于濃霧情況下M和mean的值一定大于薄霧,即濃霧情況下ω較大,進而得到較小的透射率,使去霧程度更加徹底。相對應地,薄霧情況下可得到偏小的ω,較大的透射率可以保護圖像不會過度失真,維持較好的復原效果。分別選取不同霧濃度的圖像進行對比,結(jié)果如圖6 所示。在圖6(a)中,經(jīng)過本文自適應處理后的ω取值為0.92,小于定值0.95,從復原結(jié)果看,采用定值的He 算法透射率偏小,造成了部分近景失真,如圖6(b)方框所示,而本文稍大的透射率較好地維持了原圖特性。而在圖6(d)里,本文自適應處理后的ω取值為0.97,大于定值0.95,擁有稍小的透射率,去霧程度也更加徹底,如圖6(f)所示,而He算法則留有稍許殘霧,如圖6(e)方框所示。
去霧問題中另一個關鍵參數(shù)就是大氣光值A。若選取的大氣光值大于真實值,復原圖像將會偏暗并丟失部分細節(jié),反之復原結(jié)果偏亮。He 等選取暗通道圖中前0.1%最亮像素對應于原圖的像素作為大氣光值,該方法在大部分情況下較為準確,但當包含高亮度區(qū)域時會錯誤定位,高估A值。Sun 等[15]提出了局部大氣光估計,從局部考慮,減弱全局估計造成的誤差。具體步驟為:首先求取有霧圖像三通道的最大值,然后通過形態(tài)學閉操作消除內(nèi)部高亮細節(jié),再采用交叉雙邊濾波平滑處理,得到最終結(jié)果。因為大氣光值反映的是亮度信息,為此只針對亮度信息,本文對Sun 算法做如下改進。
圖6 薄霧及濃霧效果對比
算法2改進的大氣光求取
輸入有霧圖像I(x)
輸出大氣光值A
Step1將I(x)轉(zhuǎn)換到HSV 顏色空間,提取亮度分量V(x)。
Step2對V(x)進行形態(tài)學閉操作處理,消除高亮細節(jié)。
Step3采用交叉雙邊濾波平滑處理,得到最終結(jié)果。
改進后的大氣光和Sun 算法對比如圖7 所示??梢园l(fā)現(xiàn),本文大氣光在部分細節(jié)上更加精確,如圖7(c)所示。針對復原結(jié)果,Sun 算法處理后在邊緣處(樹葉與墻)存在輕微的光暈效應,如圖7(d)所示。而本文結(jié)果自然清晰,過渡平緩,取得了較好的復原效果。
在得到大氣光值和精確透射率之后,結(jié)合大氣散射模型,利用式(16)進行最后的復原。為了避免t(x)→ 0時而導致最終的復原結(jié)果像素溢出,對t(x)進行最小值限制,設定下限值t0=0.01。
本文通過設定補償透射率對暗通道透射率進行優(yōu)化處理,分析霧氣特征,引入亮度熵信息并結(jié)合高斯金字塔提取的紋理特征得到霧氣分布DisH,同時建立自適應線性變換以獲取不同霧濃度下的系數(shù)ω,求得精準透射率t(x),結(jié)合改進的大氣光值求取方法,進行圖像復原。圖8 是本文所提算法每個步驟對應的結(jié)果。值得注意的是,由于圖8(e)補償透射率像素較低,不方便觀察細節(jié),已采取灰度擴展。可以看出,其最終復原結(jié)果顏色逼真,效果自然。
本文算法的執(zhí)行流程如下。
算法3本文算法
輸入有霧圖像I(x)
輸出復原圖像J(x)
Step1利用暗通道先驗求取初始透射率t0(x)。
Step2利用高斯衰減擬合補償透射率γ(x)t(x),依據(jù)式(10)得到精準透射率t(x)。
Step3求取原圖的亮通道圖Ibright(x),依據(jù)式(12)得到亮度熵信息e。
Step4高斯金字塔提取紋理特征d,配合亮度熵信息得到霧氣分布DisH。
Step5根據(jù)所建立的自適應線性關系得到霧氣濃度系數(shù)ω。
圖7 大氣光對比及實驗
圖8 復原示例
Step6提取原圖亮度信息,改進局部大氣光算法得到大氣光值。
為了驗證所提算法的有效性和可行性,本文進行了大量的對比實驗。一方面使用經(jīng)典算法對比真實場景下的有霧圖像,從主客觀方面依次評價;另一方面采用目前在深度學習領域里比較常用的數(shù)據(jù)集評判,本文選取合成去霧數(shù)據(jù)集[16]。實驗環(huán)境為Matlab(R2016a),運行系統(tǒng)為Windows7。
選取6 幅不同性質(zhì)的圖像分為近景組、遠近景交替組和遠景組圖像,分別與He 算法[4]、Meng 算法[6]、Ren 算法[8]和Liu 算法[9]進行復原結(jié)果的對比,前2 種方法是基于復原類的經(jīng)典方法,后2 種則是基于深度學習類的方法。為了建立更加全面的分析體系,從主客觀方面依次進行評價。
圖9 是一組具有豐富近景的圖像。從圖9 可以看出,本文在擁有較好去霧效果的同時能保持原圖近景特性,沒有過度失真現(xiàn)象,亮度適宜;He 算法和Meng 算法處理后的效果存在輕許偏色現(xiàn)象,分別如圖9(b)和圖9(c)所示;Ren 算法和Liu 算法利用深度學習來進行復原,處理結(jié)果較為優(yōu)良,但是由于沒有大量且真實的霧天訓練數(shù)據(jù),而是采用合成渲染的數(shù)據(jù)集,導致其效果不穩(wěn)定。
圖10 是一組遠近景交替組圖像。從圖10 可以看出,本文在景深漸遠處去霧程度徹底,這是因為采用了補償透射率,而且顏色更加自然;He 算法處理后的效果偏暗,是由于ω取為定值導致透射率過小,造成近景失真;Meng 算法對天空恢復較好,但由于采用最亮像素為大氣光值,造成結(jié)果偏暗如圖10(c)所示;Ren 算法和Liu 算法處理后對近景特性保持得很好,但是存在顏色偏移問題。
圖9 近景組圖像
圖10 遠近景交替組圖像
圖11 遠景組圖像
圖11 是一組含有天空區(qū)域圖像。從圖11 可以看出,本文處理后的效果極好地維持了天空特性;He 算法整體處理效果較優(yōu),但是在天空邊緣處存在輕微的光暈效應;Meng 算法由于對透射率限制過多,仍存在偏色現(xiàn)象;Ren 算法和Liu 算法在處理此類圖像時會產(chǎn)生過飽和現(xiàn)象,導致圖像變暗。綜上所述,在主觀視覺方面,本文處理效果較為自然且細節(jié)更加突出,但只憑這樣的主觀判斷并不全面。從客觀恢復指標出發(fā)進行側(cè)面驗證,本文采用常見的客觀評價方法[17-19],評價指標為可見邊p、平均梯度r、復原圖像飽和點像素個數(shù)θ以及運行時間t(單位為s)。其中p和r的值越大表示復原效果越好,θ越小越好。數(shù)學計算式為
其中,nr和n0表示原圖和復原結(jié)果的可見邊數(shù),ri表示在某一像素處去霧圖和原圖的平均梯度比,?表示復原結(jié)果可見邊集合,ns表示飽和點像素個數(shù),W和H表示圖像的寬和高??陀^評判里的各項數(shù)據(jù)分別如表1 和表2 所示。
表1 各種算法的e和r指標對比
表2 各種算法的θ和t指標對比
由于本文算法復原的無霧圖像色彩逼真,近景維持較好,沒有飽和現(xiàn)象且去霧較為徹底,在表1 中的可見邊指標p上取得了領先的優(yōu)勢,且平均梯度指標r也不弱于其他經(jīng)典算法。因為本文去霧結(jié)果亮度適宜,所以可見邊指標θ的均值更低。衡量一種算法是否高效的指標是運行時間,可以看到本文的處理速度較快。綜上分析,本文算法更具優(yōu)勢。
除了對真實場景下的霧圖進行對比,本文也使用深度學習領域較為流行的評測方法,即對合成有霧數(shù)據(jù)集進行比較,隨機挑選其中幾幅圖像用作主觀觀察,如圖12 所示??陀^評價指標采用結(jié)構(gòu)相似度(SSIM,structural similarity index measurement)和峰值信噪比(PSNR,peak signal-to-noise ratio)。其中SSIM 是衡量兩幅圖像相似度的指標,PSNR 是有用信號和噪聲比,兩者的指標值越大越好。
主觀實驗結(jié)果如圖13 所示。從圖13 可以看出,本文算法對合成和渲染(非真實)的有霧圖像處理效果較好,基本可以做到去除霧氣,還能較好地保持近景特性。但存在的問題是處理結(jié)果偏暗且有稍許偏色。將所提方法在整個測試集上運行,得到的評分如表3 所示(數(shù)值為均值)。
從表3 可以發(fā)現(xiàn),經(jīng)過本文算法處理后的數(shù)據(jù)集在性能指標上的評分并不落后于其他算法,而且還有部分領先;同時也具有較快的處理時間,這證明了本文算法的可行性和有效性。
圖12 數(shù)據(jù)集中的有霧圖像
圖13 數(shù)據(jù)集本文算法去霧結(jié)果
表3 數(shù)據(jù)集評測數(shù)據(jù)指標
針對現(xiàn)有霧天圖像清晰化處理存在的不足,本文提出了一種基于補償透射率和自適應霧濃度系數(shù)的復原算法。因為暗通道先驗不善于處理高亮區(qū)域,設定補償透射率并用高斯函數(shù)擬合得到精準透射率;通過分析霧氣分布特性,提出圖像的亮度熵概念,并輔助與高斯金字塔提取的紋理特征得到有霧圖像的霧氣分布,建立線性關系自適應求取霧濃度系數(shù);同時改進局部大氣光的求取方法,結(jié)合大氣散射模型得到最終的復原結(jié)果。實驗結(jié)果表明,本文可以恢復得到質(zhì)量較好的結(jié)果。但是該算法也存在著不足,如對有些圖像的處理結(jié)果偏暗,這也是接下來要改進的地方。