朱曉霞 施智平 邵振洲 關 永 任長娥
1(首都師范大學信息工程學院電子系統可靠性技術北京市重點實驗室 北京 100048)2(首都師范大學成像技術北京市高精尖創新中心 北京 100048)3(首都師范大學信息工程學院輕型工業機器人與安全驗證北京市重點實驗室 北京 100048)4(首都師范大學電子系統可靠性與數理交叉國際科技合作基地 北京 100048)
隨著自動駕駛技術的普及,技術的安全性以及對復雜場景的處理能力成為了自動駕駛領域研究的重點和難點。自動駕駛場景中待處理的圖像均采集于室外,因此目標檢測的效果容易受周圍環境諸如霧霾、雨雪等惡劣天氣的影響。因此,需要通過去霧等預處理方式進行圖像優化,以降低由于可見度低等因素造成的不良影響。
目前,根據是否需要物理模型[1-2]進行建模,可將去霧算法分為兩類,第一類是基于圖像修復的去霧算法,該類算法根據霧霾環境下圖像退化的原理建立一個逆向的圖像參數求解模型,以此來獲取去霧后的修復圖像。基于清晰圖像的局部對比度高于霧霾圖像的假設,Tan[3]提出了一個利用馬爾科夫隨機場最大化圖像局部對比度的去霧算法,雖然可以達到不錯的效果,但是生成的清晰圖像飽和度過高。Fattal[4]采用獨立成分分析(ICA)去除顏色圖像的霧霾,但是該方法非常耗時且不能處理灰度霧霾圖像以及高濃度的霧。He等[5]發現暗通道先驗理論,即在大多數非天空的圖像中至少有一個顏色通道包含一些強度非常低和接近于零的像素?;谠撓闰炛R,他們估計出霧霾的濃度并且通過大氣散射模型恢復出清晰圖像,該方法雖然在大多數場景下適用,但是無法處理天空圖像且計算量大。為了提高效率,文獻[6-8]分別采用標準中值濾波、引導聯合雙邊濾波以及導向濾波取代耗時的軟摳圖技術。Huang等[9]通過能見度恢復來提升霧霾圖像恢復效果。這些方法都是通過圖像修復來進行霧霾圖像的優化,目的是獲取具有高可見度且清晰自然的彩色圖像。但是,當圖像中出現大量的天空區域時,經該類算法處理后的圖像會出現嚴重的“Halo”[5]現象或顏色失真情況。第二類是基于圖像增強的去霧算法[10-11],該類算法通過強度變換[12]、同態濾波[13]、高增益濾波[14]、小波變換[15]等方法增強圖像對比度來獲得清晰圖像。經典的CLAHE[16]算法通過直方圖均衡化來增強圖像?;陬伾愣ǖ腞etinex理論的圖像除霧方法單尺度Retinex(SSR)方法[17]、多尺度Retinex(MSR)算法[18]以及彩色恢復算法的多尺度Retinex(MSRCR)算法[19]通過同時實現動態范圍壓縮、顏色恒常和顏色/亮度轉換等來獲得清晰圖像。該類算法不考慮模糊條件下的物理成像模型,而是利用各種圖像增強方法來提高霧霾圖像的對比度和可見度,以此來優化圖像。
近年來,隨著深度學習的發展,基于卷積神經網絡的去霧算法如DehazeNet[20]、MSCNN[21]、AOD-Net[22]、GFN[23]、DCP[24]以及GCAN-Net[25]等采用深度學習去霧的方法也受到了關注,基于深度學習的方法直接回歸出傳輸值或最終的清晰圖像。DehazeNet提出一種端到端的網絡結構從霧霾圖像來估計中間傳輸圖。MSCNN進一步提出了一種多尺度卷積神經網絡,該網絡首先采用一個粗尺寸傳輸網絡來學習輸入圖像和傳輸圖像之間的映射,并在其后通過一個優化尺寸網絡進一步調整傳輸值來獲得清晰圖像。AOD-Net提出一種輕量級的網絡結構,通過將傳輸值和大氣光值進行重新表述來預測最終的清晰圖像。GFN通過從輸入圖像生成三種不同的圖像并且和原輸入圖像進行融合獲取清晰圖像。DCP將大氣成像物理模型合并到網絡結構設計并且用兩個子網絡分別回歸出傳輸值和大氣光值。GCAN-Net提出一種門控上下文信息聚合網絡來獲取更好的霧霾圖像特征,以此來恢復清晰圖像。但是由于待處理圖像霧霾種類比較復雜,且基于深度學習的算法嚴重依賴于數據集,其生成的模型不具有寬適性,也即只對與訓練數據集相同的霧霾圖像有好的去霧效果,并且現存的霧霾數據集多為人工合成數據集,其真實性和多樣性亦存在問題。因此,該類算法目前只能應用在霧霾類型已知的特定場景,如服從小波變換的霧霾環境,此外,該類算法目前不夠成熟,在實際應用中受限。
從霧霾環境下目標檢測的任務出發,現有去霧算法主要存在以下三個不足之處:
(1) 缺少對輸入圖像的判斷:目前,在實際應用中,大多數算法忽略對輸入圖像霧霾信息的判斷,直接將去霧技術應用在沒有霧霾的環境中,由于過度的處理,導致圖像降質甚至失真。
(2) 忽略天空區域對參數估計造成的影響:由于天空區域呈現大區域的白色區域,其特征非常接近于霧特征,嚴重影響參數估計。
(3) 與高層視覺任務缺少聯系:現存圖像質量評測方法包括全參考[26]、半參考[27]和無參考方法[28]。前兩種方法需要提供對應的清晰圖像,而在現實任務中并不能提供對應的清晰圖像供評測。無參考方法也只能從圖像自身的特征來進行判斷,這些特征不夠全面,其視覺差異往往太細微,無法分辨。一般的圖像恢復和增強,作為低層次視覺任務的一部分,通常被認為是中高層視覺任務的預處理步驟。眾所周知,高層次的計算機視覺任務,如目標檢測和識別,在出現各種退化的情況下,其性能會惡化,并在很大程度上受到圖像恢復和增強質量的影響。
針對上述問題,本文提出了一種基于天空分割的自適應去霧算法,旨在驗證本文提出的去霧算法的有效性和提升霧霾環境下道路目標檢測的精度。該算法主要包括以下三個工作:
首先,進行霧場景判斷,提出一種RGB通道相關性和亮度飽和度比值聯合的霧場景判斷方法,根據霧霾圖像的各顏色通道之間的關系以及像素特點判斷輸入場景是否有霧。
其次,進行自適應去霧操作,提出一種綜合的自適應去霧模型,根據天空區域平滑和零像素區域集中的特征采用圖像通道技術進行區域分割,并基于大氣散射模型分別對圖像的天空和非天空區域使用不同的參數估計方法進行去霧操作并融合。
最后,進行道路目標檢測,驗證本文提出的去霧算法效果以及對高層視覺任務的提升效果,采用基于Darknet網絡的深度目標檢測算法進行圖像中的道路目標檢測,并結合無參考圖像質量評測方法和目標檢測結果進行效果評定。
本文的算法框架如圖1所示。

圖1 算法流程圖
由于去霧算法對場景有不同的適用性,因此,在霧霾環境的道路駕駛情況中最主要的目的是提高場景圖像范圍內的清晰度。故而參數值估計得越準確,去霧效果越好,目標檢測效果也越好。
實驗結果顯示,本文提出的結合霧檢測和天空分割的自適應去霧算法在特定的道路目標檢測任務中取得了很好的效果,極大地提高了霧霾環境中道路目標檢測的精度,改善了汽車在道路上對天氣環境的感知能力,進而保證了自動駕駛技術的穩定性、準確性和時效性。
自動駕駛環境中駕駛員的關注視野主要集中在部分重點區域,實際場景中一般為道路盡頭或正前方區域。因此需要重點關注駕駛員視野區域的環境狀況。消失點估計和檢測區域的選定是檢測輸入圖像霧霾狀況的前提。本文通過估計道路消失點來確定需要檢測的重點關注區域,再對該重點區域進行霧霾檢測。場景中消失點的檢測通常采用基于全局透視結構匹配的先驗消失點估計方法[29]、基于邊緣信息的方法以及基于紋理信息[30-33]的方法。
由于對圖像直接進行消失點估計受道路、人行道等較暗光纖影響較大,而紋理是圖像的一種非局部性質,受光照和顏色變換的影響較小,故而本文采用基于紋理特征的方法來估算消失點。
道路路面破損、陰影、光線暗淡等原因使得單幅圖像的直接消失點估計存在噪聲,為了減少這些噪聲的影響,需提供可靠的消失點估計方法來確定檢測區域。本文使用Gabor小波計算紋理方向,這種方法的關鍵特性包括顯著的紋理方向以及基于紋理方向的消失點投票和軟投票機制。圖2是消失點檢測的算法步驟。

圖2 消失點檢測流程
如圖3所示,通過分析每個像素的局部紋理方向,計算每個像素的局部最大值響應,選擇產生最強響應的方向作為主導紋理方向[34]。然后,通過預先定義的軟投票機制[35]投票得到候選消失點。最后,利用峰值識別,將獲得最多票數的點視為消失點。

(a) 輸入圖像 (b) 紋理方向

(c) 投票結果 (d) 消失點圖3 清晰圖像消失點檢測效果
確定消失點后,進一步選取消失點附近的感興趣區域ROI進行霧場景檢測,這里設置ROI區域為消失點附近的矩形區域(VP,width/2,height/3)。通常情況下,霧霾圖像的RGB通道值總是很大且在消失點周圍的區域包含大量的零飽和度像素,除此之外該ROI的HSV色彩模型圖像中,亮度V和飽和度S的比值也非常大。這里借鑒Alami等[36]的研究成果,采用下式計算RGB通道之間的相關性以及V和S的比值:
(1)
(2)
式中:ROIG代表ROI中綠色通道的像素,cov是方差,σROI是ROI區域圖像的導數。ROI區域像素的亮度和飽和度可以通過下式求得:
V(x)=maxRGB(x)
(3)
(4)
本文在數據集FRIDA[37]和FRIDA2[38]中進行測試,對320張FRIDA和FRIDA2中采集到的有霧圖像進行計算,準確率達到了98%。FRIDA2圖像數據集是根據Koschmieder霧霾圖像成像原理公式,通過調節參數像素位置權重參數k和距離參數Ls分別在合成圖像上添加五種類型的霧,本文以同一幅背景不同霧類型的圖080系列為例,其中:Lima是原始合成無霧圖像,U080是均勻分布的霧圖像,即k和Ls均為常量,K080是Ls為常量、k為變量的非均勻霧圖像,L080是k為常量、Ls為變量的非均勻的霧圖像,M080是參數k和Ls均為變量設置的非均勻霧圖像。圖4是五種類型霧霾圖像通道相關性結果。

圖4 FRIDA2中五種類型霧霾圖像通道相關性結果
從圖4可以看出,大多數霧霾圖像的通道相關性均大致落在0.96至0.98之間,本文通過大量實驗將通道相關性閾值設為0.96和0.98。
本文采用文獻[39]中提到的方法來確定R的值,這里設置為3.5,故霧場景可通過圖5流程進行判定。

圖5 霧判斷流程
根據Koschmieder[40-41]定律,本文在Mccartney提出的大氣散射模型[42]基礎上建立圖像受到霧氣干擾時的退化模型。根據文獻[5]的理論,上述模型可以簡化表示為:
Ic(x)=Jc(x)·t(x)+Ac(1-t(x))c∈{R,G,B}
(5)
式中:x代表像素的坐標,Ic(x)和Jc(x)分別代表輸入的霧圖像和期望得到的無霧圖像,Ac為大氣光值,t(x)(0≤t(x)≤1)為傳輸值,表示物體反射光穿過介質的能力。若透射圖t(x)和大氣光值Ac已知,可以通過下式復原出無霧圖像Jc(x):
(6)
式中:ε是常量,為了防止分母為0,一般將其設置為0.000 1,指數δ是微調去霧效果的參數。
當輸入圖像中包含天空區域時會嚴重影響參數的估計,一般情況下,道路圖像中的平坦天空區域由于其傳輸值非常小而會發生強烈的對比增強。因此,在天空區域會經常出現彩色失真或噪聲增強。
為了防止這種現象,每個圖像被劃分為天空區域和非天空區域,并且分別應用兩種不同的去霧技術。在白天的道路圖像中,天空區域通常是非常明亮或藍色的。通過比較B通道的值和一個RGB顏色空間上特設的閾值θB,進行基于像素的天空區域的檢測,公式如下:
(7)
Inonsky(x)=Ic(x)-Isky(x)
(8)
式中:Isky(x)、Inonsky(x)、Ic(x)和IB(x)分別表示天空區域,非天空區域,輸入原圖像和輸入B通道圖像。經過多次實驗,本文將θB設為150。另一方面,道路圖像中的天空區域一般位于消失點之上。利用這一特性,可以檢測到天空區域。
不同于Shwartz等[43]直接將檢測區域中最大的亮度值作為大氣光值的方法,本文根據輸入的圖像是否包含天空區域,將圖像分為天空和非天空區域,重新估計天空和非天空區域的參數值。
對于大氣光值,本文為輸入圖像的天空和非天空區域設置不同的大氣光值,針對天空區域,將天空區域前0.1%大的亮度均值設置為A,針對非天空區域,尋找暗通道圖像中前0.1%像素的最大值并在原圖Ic(x)中設置相應的像素為A。
對于傳輸值,根據天空識別和暗通道原則,本文根據下式設置t(x)的值:
(9)
式中:α是一個和距離非常相關的微調參數。根據Jeong等[39]的理論,α可以根據下式計算:
(10)
式中:λ是最大偏移常量,σt是控制傳輸值偏移控制的方差,本文中的λ和σt分別設置為0.1和20,最終通過式(5)分別對天空和非天空區域進行處理得到Jsky(x)和Jnonsky(x),并通過alpha融合技術融合天空和非天空區域并進行平滑處理,公式如下:
Jx=Ibinary(x)·Jsky(x)+(1-Ibinary(x))·Jnonsky(x)
(11)
式中:Ibinary(x)為天空的二值映射圖。
為了評估基于天空分割的自適應去霧算法在目標檢測中的優化效果,本文進行了四組實驗。
第一組實驗主要驗證本算法采用的基于紋理的消失點檢測方法在不同類型霧場景中具有通適性;第二組實驗驗證了本文提出的霧場景判斷方法所得的結果與數據庫圖像標注一致;第三組實驗通過主觀方法和圖像質量評測指標對比本文算法與其他算法在包含天空區域和不包含天空區域圖像的去霧效果,呈現去霧效果;第四組實驗選取第三組實驗中去霧效果最好的兩個算法和本文提出的去霧算法結果進行目標檢測效果對比,分別從檢測到的道路目標總數、剔除誤檢和漏檢后的目標總數以及檢測到每一類的置信度這三個方面進行結果評測。
實驗環境如表1所示。

表1 實驗軟硬件和語言環境
一幅清晰的圖像經過去霧后可能導致圖像失真,并對目標檢測的效果起到負面作用,因此需要首先進行環境判斷,由于缺少可以量化的不同濃度霧霾的圖像數據,這里采用人造數據集FRIDA2。圖6是對輸入圖像中道路盡頭即消失點周圍區域的檢測結果,第一行代表五種不同霧圖像的消失點檢測結果和檢測區域,第二行是對應第一行檢測區域和消失點的放大顯示,第三行是對應輸入圖像的紋理,第四行是基于紋理的消失點投票結果,表2是對應圖6霧檢測結果。

(a) LIma (b) U080 (c) K080 (d) L080 (e) M080圖6 不同類型霧霾圖像中消失點及區域選定結果
表2 霧檢測結果

ImgLImaU080K080L080M080R2.711 924.938 330.277 320.540 724.000 2Corr0.954 70.979 80.981 10.972 70.975 0IsFogNYYYY
觀察圖6實驗結果發現,無論在清晰圖像還是不同程度的霧霾圖像中,基于紋理的消失點檢測方法均可以很快檢測并輸出準確的消失點的位置坐標,即圖中矩形框所在位置。表2是根據霧判斷流程計算出的五種不同類型圖像的區域亮度與飽和度比值R和通道相關性Corr,IsFog代表圖像是否為霧霾圖像的判定結果,其中Y代表判定為霧霾圖像,N判定為無霧圖像,由于Lima的R<3且Corr<0.96,因此判定為清晰圖像,其他四類同理,且結果和數據庫結果保持一致。
天空區域是影響霧霾圖像恢復的另一重要因素,為了消除天空區域帶來的影響,本文對霧霾檢測的結果圖像進行區域分割,并進行去霧效果對比。由于目前存在很多基于圖像增強、基于物理模型恢復以及基于深度學習的方法變體,且多數圖像評測結果均是在包含成對清晰和霧霾圖像的合成數據集上采用全參考方法進行評測,不同濃度的霧霾圖像經過不同方法變體的處理的效果不一定一致。即在薄霧圖像上處理效果最好的去霧方法在濃霧圖像去霧效果中表現并不一定最好,并且在全參考圖像質量評測中效果最好的方法在無參考圖像質量評測中也不一定表現一致。故這里選取兩個最具代表性的圖像增強去霧方法CLAHE[16]和MSRCR[19],兩個經典的基于物理恢復模型方法即文獻[5]和文獻[8]的方法以及基于深度學習的方法DehazeNet[20]進行對比實驗。
圖7和圖8分別是不包含天空區域的圖像和包含天空區域的圖像對比結果。通過對比可以看出,當輸入圖像不含天空區域時,各種算法的去霧結果均可以達到較好的結果,但在包含天空區域的圖像中,文獻[5]的方法相比其他方法存在“Halo”現象。CLAHE算法不能增強非均勻霧狀圖像,這也說明了簡單的CLAHE算法不能解決深度不連續問題。文獻[8]的方法無法提升濃霧圖像的質量。MSRCR有一定程度的圖像色彩失真。由于深度學習技術在去霧領域的運用不夠成熟,以及缺少豐富的霧霾環境下的道路場景數據集,DehazeNet幾乎沒有表現出很好的優化效果。綜合來看,從主觀角度出發,本文算法所呈現的結果既沒有色彩失真,也沒出現“Halo”現象,效果相對較好。

(a) 原始圖像 (b) 天空二值圖

(c) 暗通道先驗算法 (d) CLAHE算法

(e) 文獻[8]算法 (f) MSRCR算法

(g) DehazeNet算法 (h) 本文算法圖7 不包含天空區域圖像去霧結果對比

(a) 原始圖像 (b) 天空二值圖

(c) 暗通道先驗算法 (d) CLAHE算法

(e) 文獻[8]算法 (f) MSRCR算法

(g) DehazeNet算法 (h) 本文算法圖8 包含天空區域圖像去霧結果對比
目前存在三種不同的圖像質量評價方法:全參考圖像質量評估法、部分參考圖像質量評估和無參考圖像質量評估。全參考和部分參考圖像質量評估需要一個清晰的圖像對應的霧圖像作為參考,這很難滿足實際應用。因此,在圖像除霧領域,無參考指標被廣泛應用。


表3 圖8對應的圖像質量評估結果
從表3可以看出,MSRCR算法有3個參數值最優、2個參數值次優的結果,在質量評測中表現最好;文獻[8]算法有2個參數值最優、1個參數值次優的結果,在質量評測中表現次之。但是評測方法的結果并不總是和主觀評價相一致,在所有條件下都具有很好性能的去霧算法是不存在的。因此,很難確定哪一種算法是最佳的除霧算法,只有特定任務中去霧效果才可以根據其在具體任務的結果進行有效評測。
本實驗進一步說明不能只選取圖像質量評測標準來進行去霧結果評價,而應該將其放到具體的應用場景中進行效果評估。本文基于Keras實現了最具實時性的目標檢測算法YOLOV3[46],采用以殘差連接[47]為主要結構的DarkNet網絡進行底層邊緣和紋理信息提取,用特征金字塔網絡結構[48]從多尺度特征圖上獲取更加豐富的語義信息,最后,用全卷積神經網絡分支來預測結果。實驗采用已在ImageNet數據集預訓練好的模型,再在KITTI[49]數據集上進行微調得到目標檢測模型,其學習率初始化為0.001,動量設置為0.99。
實驗針對采集到的20組霧霾圖像進行相同的實驗,這里選取一個包含天空區域和不包含天空區域的霧霾圖像進行說明。圖9和圖10分別是選取不包含天空區域和包含天空區域的圖像原圖,質量評測結果最好的MSRCR和較好的文獻[8]算法處理后的圖像,以及本文提出的去霧算法處理后的圖像在目標檢測中的結果。其中:(a)是在原圖上進行目標檢測的結果圖,(b)是文獻[8]算法去霧后進行目標檢測的結果圖,(c)是MSRCR算法的結果圖,(d)是本文算法的結果圖。表4和表5分別是具體的檢測結果。表中每個字段分別代表每個物體被檢測為該類物體的分數,其中TotalNum代表算法檢測到的總目標個數與檢測到準確的目標個數,檢測到的準確的目標數等于檢測到總的目標數減去誤檢的個數。

(a) 原始圖像 (b) 文獻[8]算法

(c) MSRCR算法 (d) 本文算法圖9 去霧結果圖像在目標檢測中的結果(不含天空)

(a) 原始圖像 (b) 文獻[8]算法

(c) MSRCR算法 (d) 本文算法圖10 去霧結果圖像在目標檢測中的結果(包含天空)
表4 圖9目標檢測結果

Scoresmotorbikecarcarpersonpersontruck(a)0.65-0.980.620.91-(b)0.56-0.79-0.410.33(c)0.530.380.880.900.910.31(d)0.840.600.950.950.95-ScorescarcarbicyclepersontruckTotalNum(a)0.960.99---6(6)(b)0.690.98---6(4)(c)0.950.990.350.3810(6)(d)0.970.990.470.45-9(9)

表5 圖10目標檢測結果
本實驗主要對比去霧算法處理后目標檢測效果與原輸入圖像的目標檢測效果,從圖9和表4可看出:在圖9(a)上可以檢測到6個目標且均正確,文獻[8]算法去霧后檢測到的6個目標中有2個目標被誤檢,MSRCR檢測到10個物體有4個誤檢,而本文算法檢測出9個目標且無誤檢,相比原圖檢測出更多的目標,且置信度高于其他算法和原圖檢測的結果,即表中加粗部分。圖10和表5有同樣的效果。
分析上述目標檢測結果發現,文獻[8]算法去霧效果較好,但對比原圖,其進行目標檢測得到的目標數量更少,置信度更低;MSRCR算法檢測到的目標雖然最多,但誤檢率較高;本文的算法能檢測到更多的目標,且每個目標被準確檢測到的置信度相對較高。
綜上,圖像質量評測好的去霧算法不一定對目標檢測的任務有提升效果,本文提出的方法雖然在圖像質量評測結果中表現并不是最好,但在具體的目標檢測任務中表現最好,其在實際意義上對目標檢測任務有很大的提升。
本文針對道路目標檢測受霧霾環境影響嚴重的問題,提出了一種針對道路目標檢測任務的去霧算法。該方法先判斷輸入圖像是否是霧霾場景,并對判斷后的圖像進行天空和非天空區域的分割,且分別在各自區域運行相應的去霧算法以提升圖像的質量,并結合目標檢測算法驗證去霧效果。在霧霾數據集上的實驗顯示,該算法能夠對不同類型的霧霾場景進行精確的識別,并進行自適應去霧優化,能以較高的置信度識別出更多的道路目標,有效地提高霧霾環境下的道路目標檢測準確度。該算法改善了霧霾場景中汽車對道路環境的處理能力,進而保證了自動駕駛技術準確性和穩定性,在自動駕駛領域具有廣泛的應用場景。