王 涌,張 琪,張 豪
(1.浙江工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,軟件學(xué)院,浙江 杭州 310014;2.浙江工業(yè)大學(xué)奉化智慧經(jīng)濟(jì)研究院,浙江 寧波 315500)
自動(dòng)駕駛技術(shù)在近幾年中取得了不少進(jìn)步,但仍遠(yuǎn)未達(dá)到完美。 進(jìn)行汽車的自動(dòng)駕駛所需要的檢測(cè)行人、道路標(biāo)志和其他車輛等,始終面臨一個(gè)主要障礙——大霧。 研究霧天能見(jiàn)度檢測(cè)對(duì)于提高自動(dòng)駕駛能力,保障乘客安全具有重要的意義。 另外,在低能見(jiàn)度情況下,交通事故率也會(huì)有顯著上升,因此能見(jiàn)度檢測(cè)對(duì)交通管理和決策也具有重要的意義[1]。
目前,能見(jiàn)度檢測(cè)的主要方法有目測(cè)法、光學(xué)儀器測(cè)量和攝像機(jī)測(cè)量。 其中,目測(cè)法記錄黑色標(biāo)的物目所能及的最遠(yuǎn)距離,受主觀因素影響較大,能見(jiàn)度的準(zhǔn)確性不高;光學(xué)儀器采集大氣柱,并測(cè)量大氣對(duì)光的衰減,其成本較高、實(shí)時(shí)性較差;現(xiàn)階段,國(guó)內(nèi)外學(xué)者重點(diǎn)研究了圖像處理領(lǐng)域中的能見(jiàn)度檢測(cè),并提出了很多基于圖像的能見(jiàn)度檢測(cè)方法[2]。 目前圖像能見(jiàn)度檢測(cè)算法主要分為模型驅(qū)動(dòng)和數(shù)據(jù)驅(qū)動(dòng)兩大類。
①模型驅(qū)動(dòng)的方法基于柯西米德定律(Koschmieder’s law),需要結(jié)合攝像機(jī)的參數(shù)標(biāo)定。首先估計(jì)消光系數(shù),并根據(jù)圖像分割算法等得到可見(jiàn)的最遠(yuǎn)位置,進(jìn)一步計(jì)算該位置的距離,從而得到能見(jiàn)度。 Hautière 等人[3]通過(guò)區(qū)域生長(zhǎng)定位出能見(jiàn)度檢測(cè)的目標(biāo)域,結(jié)合攝像機(jī)參數(shù)的標(biāo)定和推算,以及霧天條件下亮度的變化規(guī)律,計(jì)算了最遠(yuǎn)可視距離,為后來(lái)的能見(jiàn)度估計(jì)奠定了基礎(chǔ)。 郜婧婧等人[4]提出了一種基于亮度對(duì)比度和暗原色先驗(yàn)原理的白天道路圖像能見(jiàn)度檢測(cè)方法。 根據(jù)霍夫變換直線檢測(cè)方法提取道路興趣域,然后根據(jù)亮度對(duì)比度方法檢測(cè)人眼可分辨最遠(yuǎn)像素點(diǎn),最后基于暗通道先驗(yàn)原理求取目標(biāo)點(diǎn)的透射率,進(jìn)而求取圖像能見(jiàn)度值。 陳梅[5]通過(guò)對(duì)霍夫變換進(jìn)行車道線檢測(cè),利用車道延伸的趨勢(shì)和實(shí)際消失點(diǎn)的差距,估計(jì)了能見(jiàn)度值。 以上方法都基于模型驅(qū)動(dòng),但此類方法普遍不可避免地需要攝像機(jī)參數(shù)的標(biāo)定,對(duì)場(chǎng)景的限制要求高。 李琴等人[6]首先推算了無(wú)霧天氣下大氣的消光系數(shù),并通過(guò)暗通道先驗(yàn)估計(jì)霧圖像透射率、去霧得到清晰圖像、估計(jì)清晰圖像透射率,進(jìn)一步根據(jù)霧圖像和清晰圖像的透射率比值關(guān)系,計(jì)算霧圖像的消光系數(shù),從而得到能見(jiàn)度。 此方法無(wú)需攝像機(jī)參數(shù)標(biāo)定,適用場(chǎng)景廣泛。
②數(shù)據(jù)驅(qū)動(dòng)的算法主要通過(guò)霧天圖像數(shù)據(jù)集,提取霧圖像的特征,進(jìn)一步利用機(jī)器學(xué)習(xí)的方法進(jìn)行模型訓(xùn)練,從而達(dá)到能見(jiàn)度檢測(cè)的目的。 Hazar Chaabani[7]選擇傅里葉變換幅度值和圖像香農(nóng)熵作為兩級(jí)特征描述子,放入三級(jí)全連接神經(jīng)網(wǎng)絡(luò)中訓(xùn)練,得到了不錯(cuò)的效果。 袁非牛等[8]針對(duì)特征提取,提出了兩階段的方法,首先將原始圖像全局濾波轉(zhuǎn)化為43 個(gè)一階段特征,然后局部濾波,得到301幅二階段特征圖,特征放入SVR 進(jìn)行訓(xùn)練,得到一個(gè)透射率分類器。 隨著深度學(xué)習(xí)的發(fā)展,利用深度學(xué)習(xí)的能見(jiàn)度檢測(cè)研究也越來(lái)越多。 Palvanov 等[9]將圖片放入傅里葉過(guò)濾器和光譜過(guò)濾器,將得到的結(jié)果和原始霧圖像共同放入VGG16 卷積神經(jīng)網(wǎng)絡(luò),提取特征后進(jìn)行特征融合,取得了較好的效果。 數(shù)據(jù)驅(qū)動(dòng)的方法訓(xùn)練需要大量的標(biāo)注數(shù)據(jù)集,而霧天能見(jiàn)度數(shù)據(jù)集的采集較為困難。
綜上,模型驅(qū)動(dòng)方法需要外部參數(shù)輸入,不能單憑一張圖片得到能見(jiàn)度;數(shù)據(jù)驅(qū)動(dòng)的方式需要大量標(biāo)注數(shù)據(jù)集。 針對(duì)以上問(wèn)題,本文在李琴[6]的研究基礎(chǔ)上,提出一種基于非局部霧線先驗(yàn)[10]的改進(jìn)能見(jiàn)度檢測(cè)算法。 He[11]針對(duì)暗通道先驗(yàn)去霧具有天空區(qū)域過(guò)曝,局部性強(qiáng)等特點(diǎn),改為全局性更強(qiáng)的霧線先驗(yàn)。 利用霧線的特征選擇目標(biāo)的顏色簇,并對(duì)顏色簇的最大半徑添加調(diào)整項(xiàng),改進(jìn)透射率估計(jì)的準(zhǔn)確性。
圖片在照相機(jī)中的成像基于光學(xué)原理,是通過(guò)光學(xué)傳感器將被攝景物的光信息量傳遞給感光材料實(shí)現(xiàn)的,而在光線傳導(dǎo)的過(guò)程中,不可避免地會(huì)受到空氣中雜質(zhì)干擾,霧是其中最主要的干擾物之一。霧是水滴或者冰晶的堆積,并且伴有灰塵粒子,這些粒子會(huì)對(duì)光造成折射和反射,從而導(dǎo)致物體表面反射的光經(jīng)過(guò)空氣傳播到達(dá)相機(jī)時(shí),已經(jīng)產(chǎn)生了部分衰減。 霧的濃度越大,空氣中的微粒就越多,光的衰減程度越高,目標(biāo)物體反射到照相機(jī)或人眼的光就越少,能見(jiàn)度也就相應(yīng)越低。
1924 年,Koschmieder[12]提出了觀測(cè)物體時(shí)的視源亮度理論:
式中:L是物體的本征亮度,L0是物體的表觀亮度,Lf是大氣光的亮度,t(x)是透射率,與距離和消光系數(shù)有關(guān)。
式中:k是大氣的消光系數(shù),與大氣中霧的濃度相關(guān)。d(x)是場(chǎng)景中x的距離。
根據(jù)這些研究,Duntley[12]推導(dǎo)出了大氣對(duì)比度衰減定律:
式中:C表示距離d時(shí)的表觀對(duì)比度,C0表示物體和背景的內(nèi)在對(duì)比度。
當(dāng)表觀對(duì)比度C達(dá)到一定閾值ε時(shí),認(rèn)為物體不可見(jiàn)。 國(guó)際照明委員會(huì)(CIE)將對(duì)比度閾值ε=0.05 作為黑色目標(biāo)物(C0=1)“氣象不可見(jiàn)”的閾值。 由此可推導(dǎo):
由此,就將求解能見(jiàn)度的問(wèn)題轉(zhuǎn)化為了求解消光系數(shù)k的問(wèn)題。
傳統(tǒng)求解消光系數(shù)k的方式一般是通過(guò)三維坐標(biāo)變換,結(jié)合攝像機(jī)參數(shù)標(biāo)定,推導(dǎo)出k和圖片中某坐標(biāo)距離之間的關(guān)系來(lái)計(jì)算,無(wú)法單純通過(guò)一張圖片來(lái)計(jì)算消光系數(shù)。 李琴等人[6]提出了一種基于比值的求解方法,可以只憑借一張圖片,無(wú)需其他參數(shù),即可估計(jì)消光系數(shù)。 該方法假設(shè)k0為完全無(wú)霧情況下大氣(清大氣)的消光系數(shù),則k/k0為濁大氣與清大氣消光系數(shù)的比值。 我們可以通過(guò)
來(lái)計(jì)算k,純凈無(wú)霧大氣的消光系數(shù)k0=2.2518×10-5m-1,那么接下來(lái)需要計(jì)算k/k0。
k/k0可以通過(guò)下式計(jì)算
則k/k0的求解轉(zhuǎn)化為透射率的求解。t(x)可以通過(guò)去霧算法求得。 在李琴的提出的方法中,采用了暗通道先驗(yàn)去霧算法。
根據(jù)計(jì)算式(1),可以得到霧成像基本模型為
式中:x是像素點(diǎn),I是觀察到的霧圖像,J是被觀察目標(biāo)的真實(shí)亮度,A是當(dāng)t=0 時(shí)的大氣光。t(x)是透射率,與距離有關(guān)。 根據(jù)文獻(xiàn)[11],暗通道先驗(yàn)的基礎(chǔ)公式為:
式中:C是{R,G,B}三通道之一。 為了去霧,式(7)可以被轉(zhuǎn)化為:
將式(8)代入式(9)可得:
在已知透射率和光照A的條件下,即可通過(guò)式(11)去霧得到清晰圖片I0(x,y).
t0是用來(lái)避免e-βd(x,y)過(guò)于接近0 的。 根據(jù)式(10),e-β0d(x,y)可以按照下式(12)計(jì)算:
由此我們就得到了計(jì)算消光系數(shù)所需的全部參數(shù)。 觀察式(8)我們可以看到,暗通道先驗(yàn)基于局部的通道最小值來(lái)獲得目標(biāo)透射率,而在能見(jiàn)度估計(jì)場(chǎng)景下,全局性也很重要。 另外,暗通道先驗(yàn)在圖片中包含高亮的天空區(qū)域時(shí)會(huì)失效,而戶外場(chǎng)景中難免出現(xiàn)大量天空區(qū)域。 對(duì)于以上問(wèn)題,接下來(lái)采用全局性更強(qiáng)的去霧算法來(lái)估計(jì)透射率t(x)。
非局部霧線先驗(yàn)的提出者Berman 等[10]將超過(guò)25 000 張清晰圖片中的所有顏色進(jìn)行聚類,并且用每個(gè)簇的中心點(diǎn)代替原本圖片中的像素點(diǎn),發(fā)現(xiàn)圖片幾乎可以被完美替代。 這就表明了一個(gè)現(xiàn)象:清晰圖片中相異顏色的數(shù)量級(jí)遠(yuǎn)遠(yuǎn)小于圖片中像素的數(shù)量。也就是說(shuō),清晰圖片中的許多顏色相近的像素點(diǎn),可以被同一顏色替代,而達(dá)到相似的視覺(jué)效果。
霧線先驗(yàn)去霧算法符合光衰減的物理規(guī)律,且具有全局性,故引入非局部霧線先驗(yàn)去霧作為估計(jì)透射率的方法。 接下來(lái)我們通過(guò)非局部霧線先驗(yàn)計(jì)算t(x)和t0(x)。 首先根據(jù)計(jì)算式(7),定義IA為:
平移RGB 坐標(biāo)系,使大氣光A作為原點(diǎn)。 如下式:
將IA轉(zhuǎn)化為球坐標(biāo)系:
式中:r是球坐標(biāo)某點(diǎn)半徑,θ和φ分別是經(jīng)緯度。觀察計(jì)算式(14),對(duì)于給定的J(x)和A,場(chǎng)景中不同距離的點(diǎn)的t(x)不同。 而在球坐標(biāo)中,t(x)只影響半徑r(x),不影響θ(x)和φ(x)。 也就是說(shuō),在直角坐標(biāo)系下具有相似RGB 值的點(diǎn),在球坐標(biāo)系下具有相似的[θ,φ]。
因此,[θ(x),φ(x)]相似的點(diǎn),都屬于同一條霧線。 將圖片中的像素點(diǎn)轉(zhuǎn)化為球坐標(biāo),并對(duì)其根據(jù)[θ(x),φ(x)]進(jìn)行聚類,則得到了所有點(diǎn)形成的霧線。 接下來(lái),進(jìn)一步利用這些霧線估計(jì)透射率。對(duì)于給定的J(x)和A
進(jìn)而,當(dāng)t=1 時(shí),對(duì)應(yīng)最大的半徑坐標(biāo):
結(jié)合計(jì)算式(17)和計(jì)算式(18),得到基于霧線半徑的透射率估計(jì):
式中:rmax是霧線上半徑最大的像素點(diǎn)。 通過(guò)非局部霧線先驗(yàn),可以求得圖片的透射率,進(jìn)而通過(guò)霧成像原理求得去霧后的清晰圖像:
在非局部霧線先驗(yàn)中,作者將球坐標(biāo)下聚類簇的最大半徑rmax作為清晰無(wú)霧的像素點(diǎn),然而事實(shí)上由于攝像機(jī)與圖片中每一點(diǎn)都有一定距離,都會(huì)受到霧的影響,所以以rmax比完全無(wú)霧的像素點(diǎn)半徑要小。 我們將計(jì)算式(19)調(diào)整為
ρ作為清晰度調(diào)整的補(bǔ)充常數(shù),根據(jù)經(jīng)驗(yàn)我們將其設(shè)置為0.1。
根據(jù)前面的推導(dǎo),為了求解能見(jiàn)度,需要求解k/k0,根據(jù)計(jì)算式(6),進(jìn)一步轉(zhuǎn)化為求解ln(t(x))/ln(t0(x)),而前文通過(guò)霧線先驗(yàn)可以分別求得霧圖像和清晰圖像的透射率。 正如前文所述,在霧線先驗(yàn)中t(x)是通過(guò)顏色簇聚類得到霧線并通過(guò)半徑的比值計(jì)算得到的。 目標(biāo)圖片中含有多種顏色的像素,就可以被聚類成多個(gè)簇,也就組成了多條霧線,可以得到多組透射率的值,那么計(jì)算t(x)的重要問(wèn)題之一就是選擇哪條霧線作為透射率計(jì)算的依據(jù)。
根據(jù)計(jì)算式(2),透射率的大小受到消光系數(shù)k和距離d的影響。 消光系數(shù)是一定濃度下霧的固有屬性,則在一張圖片中不同像素點(diǎn)主要是由于距離的不同而受到霧的影響程度不同。d越大,t(x)越大,像素點(diǎn)的成像受霧的影響越大。 基于以上原因,應(yīng)該選擇像素點(diǎn)分布廣泛的顏色簇。
①選擇像素點(diǎn)數(shù)量盡可能多的霧線。 為此首先取像素點(diǎn)數(shù)量前三的霧線作為候選。
②選擇霧線上的點(diǎn)分散的簇。 計(jì)算透射率t(x)的霧線,應(yīng)該是較為分散的。 根據(jù)計(jì)算式(23)計(jì)算霧線上點(diǎn)的半徑的標(biāo)準(zhǔn)差,保留標(biāo)準(zhǔn)差最大的一條霧線作為目標(biāo)的霧線,霧線上的像素點(diǎn)覆蓋的區(qū)域作為ROI。
完整的k/k0的計(jì)算如算法1 所示。
本文所設(shè)計(jì)實(shí)驗(yàn)采用Python 語(yǔ)言編程,系統(tǒng)環(huán)境為Ubuntu 16.04,硬件環(huán)境為i5-9400F,GTX-1660,16GB 內(nèi)存。 非局部霧線聚類采用KD-Tree,在球坐標(biāo)系中均勻采樣1 000 個(gè)點(diǎn)作為聚類中心。
首先,我們?cè)谝恍敉鈭?chǎng)景圖片數(shù)據(jù)集上,比較暗通道先驗(yàn)和非局部霧線先驗(yàn)的去霧效果,結(jié)果如圖1。 首先可以看到由于天空中高亮區(qū)域的影響,暗通道去霧的結(jié)果普遍偏暗,非局部霧線先驗(yàn)的結(jié)果的視覺(jué)效果更明亮,天空區(qū)域沒(méi)有過(guò)暗的情況。另外由于暗通道先驗(yàn)采用矩形濾波器作為去霧窗口,在幾何圖形的交界處可以看到明顯的白色邊緣,而非局部霧線先驗(yàn)在像素粒度去霧,并沒(méi)有產(chǎn)生白色區(qū)域。 所以在戶外場(chǎng)景下,非局部霧線先驗(yàn)對(duì)透射率的估計(jì)效果更好。
圖1 非局部霧線先驗(yàn)與暗通道先驗(yàn)的去霧效果對(duì)比
在本文方法中,提出了一種基于霧線先驗(yàn)選擇能見(jiàn)度檢測(cè)ROI,估計(jì)透射率并進(jìn)一步計(jì)算能見(jiàn)度的方法,對(duì)能見(jiàn)度估計(jì)的全局性產(chǎn)生一定的影響。方法改進(jìn)的目標(biāo)是讓ROI 的選擇盡可能分布廣泛且均勻,并避免選擇天空區(qū)域或者與攝像機(jī)距離幾乎相同的顏色簇。 根據(jù)圖2,可以看到算法在圖片中選擇了分布均勻廣泛的簇。
圖2 ROI 選擇結(jié)果的評(píng)價(jià)
為了評(píng)價(jià)提出方法的準(zhǔn)確性,接下來(lái)將在哥倫比亞氣象和照明數(shù)據(jù)庫(kù)(WILD)[13]上與李琴[6]所提出的方法進(jìn)行比較。 WILD 數(shù)據(jù)集由哥倫比亞大學(xué)開(kāi)源,包含5 個(gè)月以上固定戶外場(chǎng)景的圖像,覆蓋了廣泛的光照、天氣條件和季節(jié)等情況,并且提供了真實(shí)場(chǎng)景能見(jiàn)度值與圖片的對(duì)應(yīng)。 我們從中選擇了覆蓋0.5 km~ 2.5 km 場(chǎng)景能見(jiàn)度的120 張圖片。WILD 的示例圖像如圖3 所示。
圖3 WILD 圖像集示例圖
表1 展示了分別從0.5 km、1.0 km、1.5 km、2.0 km、2.5 km 場(chǎng)景數(shù)據(jù)集抽取圖片作為輸入時(shí),算法計(jì)算過(guò)程的中間數(shù)據(jù),圖4 為選擇了廣泛分布的像素點(diǎn)簇作為ROI 的示意圖。
圖4 從WILD 數(shù)據(jù)集中抽樣圖片輸入算法時(shí),選擇分布較廣泛的區(qū)域結(jié)果展示
表1 抽樣圖片輸入算法計(jì)算的中間數(shù)據(jù)
實(shí)驗(yàn)結(jié)果如圖5 所示,能見(jiàn)度估計(jì)的趨勢(shì)符合數(shù)據(jù)集真實(shí)值的趨勢(shì)。 在真實(shí)能見(jiàn)度低于1 km 時(shí),估計(jì)值與實(shí)際值比較接近,誤差率在8%以內(nèi);2 km以上時(shí)誤差相對(duì)較大,在17%左右,詳見(jiàn)表2。
圖5 能見(jiàn)度估計(jì)算法在WILD 數(shù)據(jù)集上的表現(xiàn)
表2 不同能見(jiàn)度下的MRE 結(jié)果
為了體現(xiàn)所提出方法的準(zhǔn)確性,我們將WILD數(shù)據(jù)集中的圖片分為5 類,然后計(jì)算了估計(jì)能見(jiàn)度V0和真實(shí)能見(jiàn)度Vmet之間的平均相對(duì)誤差(MRE),如計(jì)算式(24)。
式中:N是日光圖像的數(shù)量,表2 中記錄了各分類下的MRE 結(jié)果。 準(zhǔn)確率計(jì)算如式(25)。
實(shí)驗(yàn)結(jié)果表明,該方法能夠滿足不同級(jí)別下大氣能見(jiàn)度的估計(jì)要求。 與基于暗通道的比值法的誤差率比較,我們的方法整體平均準(zhǔn)確率提升1%,各階段準(zhǔn)確率曲線如圖6,可以看到整體上本文方法的準(zhǔn)確率略高于暗通道估計(jì)的準(zhǔn)確率。
圖6 非局部估計(jì)準(zhǔn)確率與暗通道估計(jì)準(zhǔn)確率曲線比較
在計(jì)算能見(jiàn)度的場(chǎng)景中,核心問(wèn)題是估算被觀測(cè)場(chǎng)景的大氣消光系數(shù)k。 本文在李琴[6]提出的比值法的基礎(chǔ)上,為了解決暗通道在估計(jì)透射率時(shí)受光照影響大,考慮全局性不夠等問(wèn)題,引入了非局部霧線先驗(yàn)作為估計(jì)透射率的先驗(yàn)算法。 另外本文方法可以使用含有大量天空區(qū)域的戶外場(chǎng)景圖片,一定程度上解決了暗通道先驗(yàn)受到天空等高亮區(qū)域影響的問(wèn)題。 在此基礎(chǔ)上,本文提出了目標(biāo)域ROI 的選擇方法,選擇分布較廣泛的區(qū)域作為能見(jiàn)度計(jì)算的目標(biāo)區(qū)域,經(jīng)驗(yàn)證選擇的目標(biāo)區(qū)域較合理;另外改進(jìn)了顏色簇最大半徑的選擇方式。 實(shí)驗(yàn)證明,我們的算法能夠應(yīng)用在戶外場(chǎng)景下估計(jì)能見(jiàn)度,在日光自然霧場(chǎng)景中準(zhǔn)確率相比基于暗通道先驗(yàn)的比值法提升了1%。