李忠國,吳昊宸,付啟高,席茜,吳金坤
(1.江蘇科技大學(xué)機(jī)械工程學(xué)院,鎮(zhèn)江 212000;2.貴州風(fēng)雷航空軍械有限責(zé)任公司,安順 561000)
近年來由于空氣污染加劇,霧霾天氣出現(xiàn)越來越頻繁,對(duì)交通構(gòu)成較大安全隱患[1]。由于大氣薄霧導(dǎo)致圖像清晰度降低,甚至模糊[2],各類計(jì)算機(jī)視覺應(yīng)用,包括監(jiān)視、目標(biāo)分類、跟蹤和識(shí)別等都會(huì)受到影響[3],研究應(yīng)用于便攜裝置的去霧算法具有一定的工程意義。
現(xiàn)有的圖像去霧技術(shù)大致可分為兩類:一類是基于大氣散射的物理模型,另一類是基于圖像的增強(qiáng)[4]。常規(guī)的圖像增強(qiáng)方法有Gamma校正、直方圖均衡、同態(tài)增析以及基于小波的多尺度增強(qiáng)等,這些方法主要增強(qiáng)圖像的邊緣等高頻信息,針對(duì)圖像對(duì)比度低、視覺效果差的問題,通過增強(qiáng)模糊圖像的顏色和對(duì)比度,使處理后的圖像具有良好的視覺效果[5]?;趫D像成像物理模型的算法是基于大氣成像模型,有基于暗通道的圖像去霧以及導(dǎo)向?yàn)V波去霧等方法,涉及到透射率估計(jì)、霧濃度及景深估計(jì)等,用時(shí)較長(zhǎng)[6]。該方法對(duì)大多數(shù)室外圖像具有良好的去霧效果,但對(duì)于未建立暗區(qū)的明亮區(qū)域,如天空或白色物體,則會(huì)造成顏色失真[7]。基于深度學(xué)習(xí)的方法去霧也是一個(gè)新的思路,但需要建立大量的樣本訓(xùn)練學(xué)習(xí),并且能否滿足不同濃度、不同光照等的自適應(yīng)去霧要求尚未可知。
近年來圖像去霧研究較多。邢世宏等[8]在海上薄霧條件下研究了快速去霧增強(qiáng)方法,對(duì)亮度通道進(jìn)行了高斯卷積,對(duì)飽和度進(jìn)行拉伸得到了增強(qiáng)圖像,針對(duì)海上圖像背景相對(duì)簡(jiǎn)單的場(chǎng)景取得了較好的效果。郭青山等[9]基于大氣散射模型采用Dehaze Net與邊緣檢測(cè)引導(dǎo)濾波圖像去霧,效果較好;但由于涉及到網(wǎng)絡(luò)的卷積運(yùn)算等,計(jì)算量較大,實(shí)時(shí)性得不到保證。林宇軒等[10]選擇現(xiàn)場(chǎng)可編程門陣列(Field?programmable gate array,F(xiàn)PGA)作為去霧計(jì)算的處理器。辛佳佳[11]利用FPGA驅(qū)動(dòng)網(wǎng)口完成4路圖像信息同步傳輸,利用浮點(diǎn)數(shù)字信號(hào)處理器(Digital signal processor,DSP)完成復(fù)雜運(yùn)算實(shí)現(xiàn)圖像去霧。Ju等[12]分析了大氣散射模型的固有缺陷,提出了一種改進(jìn)的大氣散射模型的快速圖像去霧算法。圖像去霧處理在航空、航海等交通領(lǐng)域有較大的應(yīng)用需求[13]。在交通領(lǐng)域的去霧應(yīng)用都有較高的實(shí)時(shí)性和去霧質(zhì)量的要求,使得許多有效的去霧算法,如暗原色、暗通道理論等遇到困難[14]。
目前圖像去霧算法的硬件實(shí)現(xiàn)大致可以分為基于PC機(jī)的實(shí)現(xiàn)方案、基于DSP的實(shí)現(xiàn)方案和基于FPGA的實(shí)現(xiàn)方案?;赑C機(jī)的圖像去霧處理成本高、功耗大,且PC機(jī)體積較大,不適用于車載場(chǎng)合;基于DSP的實(shí)現(xiàn)方案應(yīng)用較多,開發(fā)難度稍大;基于FPGA的方案由于通信帶寬有限,容易出現(xiàn)速度瓶頸。
樹莓派是一款運(yùn)行Linux系統(tǒng)的微型電腦主板,采用了一個(gè)4核處理器,具備所有PC的基本功能,并且芯片性能好、功耗小、體積小以及性價(jià)比高[15],適合車載使用。同時(shí),樹莓派是開源硬件,可以運(yùn)行開源的Python軟件,而Python軟件又可以使用功能強(qiáng)大的OpenCV圖像處理庫,適用于當(dāng)前交通領(lǐng)域的需要。因此,本文以樹莓派作為處理器,研究一種基于冪指數(shù)拉伸的圖像去霧算法,實(shí)現(xiàn)簡(jiǎn)單、速度快、效果好。
景物的圖像受到霧的影響,會(huì)發(fā)生哪些變化是增強(qiáng)去霧算法設(shè)計(jì)的依據(jù)。為了尋找有霧圖像和無霧圖像的差異,在有霧和無霧兩種情況下采集了相同的操場(chǎng)場(chǎng)景的圖像,如圖1所示,圖像分辨率為550像素×650像素。圖1中有霧和無霧圖像頂部都是天空區(qū)域,色彩較為單一;下面是樹木和塑膠場(chǎng)地,色彩較為豐富;后面有建筑物和汽車等,層次較多。為了統(tǒng)計(jì)天空區(qū)與和下方景物區(qū)域的數(shù)值差異,在無霧圖像樓頂上方某一位置劃一橫線(圖像縱軸像素坐標(biāo)為280像素),見圖1(a)中間位置。以圖1兩幅圖像為例,從上到下統(tǒng)計(jì)每1行圖像在RGB(Red?green?blue)空間三分量數(shù)值的區(qū)別,如圖2所示,圖1中橫線為圖2中垂直的點(diǎn)畫線。
圖1 操場(chǎng)場(chǎng)景的無霧和有霧圖像Fig.1 Fog?free and foggy images of the play?ground scene
由圖2可見:在天空區(qū)域,無霧圖像的R和G兩分量數(shù)值小于有霧圖像,B分量各有大?。辉谙旅婢拔锏拇蟛糠謪^(qū)域中,無霧圖像R、G、B三分量均小于有霧圖像;而橫線下方近距離區(qū)域內(nèi),無霧圖像R、G、B三分量大于有霧圖像,這是由于橫線下方有從左到右的云層。分別從云層和天空無云區(qū)域取像素坐標(biāo)為(150,150)和(450,150)兩點(diǎn),其R、G、B數(shù)值分別為(215,225,231),(87,158,210),因而有云層的情況下三分量數(shù)值較高,沒云層時(shí)R、G分量下降較大,B分量稍有下降。在有霧圖像天空區(qū)域取一個(gè)點(diǎn),其R、G、B三分量為(36,48,36)。有霧區(qū)域的三分量的數(shù)值較小,并且三分量數(shù)據(jù)之間差距較小。
圖2 無霧和有霧圖像R、G、B三分量的比較Fig.2 Comparison of three components R,G and B of fog?free and foggy images
將圖像從RGB空間轉(zhuǎn)換到HSV(Hue?saturation?value)空間。同樣統(tǒng)計(jì)每一行的色度、飽和度和亮度的均值,如圖3所示(圖像數(shù)據(jù)為Double型)。
圖3 無霧和有霧圖像H、S、V三分量比較Fig.3 Comparison of three components H,S and V of fog?free and foggy images
由圖3可見,有霧圖像相對(duì)無霧圖像色度H分量總體上數(shù)值稍有降低,但差異不明顯,且無規(guī)律性。有霧圖像的飽和度S分量在整個(gè)統(tǒng)計(jì)范圍內(nèi)均明顯小于無霧圖像,且無霧圖像色度S分量的最小值是云層區(qū)域。有霧圖像在景物區(qū)域的亮度V分量大于無霧圖像,而在劃線區(qū)域周邊無霧圖像V分量高于有霧圖像,其原因是云層亮度較高。無霧圖像和有霧圖像亮度V分量的差異曲線和RGB空間中B分量的差異曲線高度類似。無霧圖像和有霧圖像的原圖和H、S、V三分量圖如圖4所示。
由圖4可以看出,無霧圖像的云朵飽和度S分量較低,和有霧圖像天空的S分量接近;無霧圖像的藍(lán)色天空區(qū)域亮度V分量和有霧圖像接近,云朵的亮度大于有霧圖像天空的亮度。無霧圖像云朵中取1點(diǎn),其H、S、V分量為(0.576 9,0.056 3,0.905 9);藍(lán)色天空中取1個(gè)點(diǎn),其H、S、V分量為(0.570 5,0.585 7,0.823 5)。有霧圖像天空中取1點(diǎn),其H、S、V三分量為(0.533 3,0.023 7,0.827 5)。根據(jù)上述數(shù)據(jù)特點(diǎn)可對(duì)有霧圖像的天空區(qū)域做出大致判斷。為了驗(yàn)證變化規(guī)律的普遍性,現(xiàn)選取另一對(duì)高樓場(chǎng)景的無霧圖像和濃霧圖像,如圖5所示。對(duì)圖5中的高樓、天空、草坪和路燈4個(gè)物體分別取點(diǎn)A、B、C、D,比較這4個(gè)點(diǎn)的RGB和HSV空間分量在無霧與有霧時(shí)的區(qū)別,如表1所示。
表1 高樓場(chǎng)景不同點(diǎn)的RGB和HSV空間分量值Table 1 Values of RGB and HSV space components of different points in the building scene
圖4 無霧圖像和有霧圖像的H、S、V分量效果比較Fig.4 Effect comparison of H,S,V components of fog?free and foggy images
圖5 高樓場(chǎng)景的無霧圖像和濃霧圖像Fig.5 Fog?free image and dense fog image of the building scene
比較有霧圖像和無霧圖像的R、G、B分量可以發(fā)現(xiàn),B分量變化不大,但高樓和天空的R和G分量在有霧時(shí)增加,草坪和路燈R和G分量在有霧時(shí)減小(無霧時(shí)有光照)。因而R、G、B三分量在去霧算法設(shè)計(jì)中的信息規(guī)律性小。而在HSV空間中H的變化呈無規(guī)律性,有霧圖像S和V兩分量低于無霧圖像,所以含有較多可以恢復(fù)的信息。本文在HSV空間通過變換S和V分量設(shè)計(jì)去霧增強(qiáng)算法。
從圖2中可以看出,在HSV空間,有霧圖像和無霧圖像的H分量差異不明顯,說明顏色基本保持不變。飽和度S在有霧圖像中受距離影響較大,近距離的飽和度較大,距離遠(yuǎn)的飽和度較小,同時(shí)也和景物的原始飽和度有關(guān)。亮度V分量和RGB空間中三分量變換相似,有霧圖像的亮度由遠(yuǎn)到近(霧由濃到?。?shù)值降低,且受景物影響較小。而且有霧圖像相對(duì)無霧圖像其飽和度和亮度分量的變化斜率變小,即相鄰行間差異變小。若要復(fù)原成原來的無霧圖像,需要增加2個(gè)分量的變化斜率。由于2個(gè)分量都小于1,故將2個(gè)分量作冪指數(shù)運(yùn)算可以增加分量之間的差異。本文基于冪指數(shù)拉伸原理提出一種圖像去霧增強(qiáng)算法,算法流程如圖6所示。
圖6 冪指數(shù)拉伸增強(qiáng)去霧算法流程圖Fig.6 Flow chart of power exponential stretching based dehazing enhancment
算法具體步驟如下:
(1)顏色空間轉(zhuǎn)換。將采集的RGB有霧圖像轉(zhuǎn)化為HSV圖像,提取色度分量H、飽和度分量S和亮度分量V,除以255轉(zhuǎn)換為雙精度數(shù)據(jù),計(jì)算圖像飽和度的均值S1,記錄當(dāng)前時(shí)間t1。
(2)冪指數(shù)拉伸。對(duì)景物區(qū)域的飽和度分量S和亮度分量V分別作冪運(yùn)算Si和Vi,飽和度冪指數(shù)i和j從1到3變化,然后調(diào)整飽和度和亮度數(shù)值分布區(qū)間拉伸為[0,1](后面三分量數(shù)據(jù)都按照[0,1]區(qū)間描述);接著將每個(gè)飽和度和亮度拉伸組合分別結(jié)合原色度分量H,乘以255恢復(fù)到原來區(qū)間,生成HSV圖像,再轉(zhuǎn)換為RGB圖像,得到去霧后圖像。
(3)拉伸去霧評(píng)價(jià)和尋優(yōu)。本文采用信息熵、對(duì)比度、飽和度均值和亮度指標(biāo)的累加和作為標(biāo)準(zhǔn)評(píng)價(jià)去霧質(zhì)量的好壞。
信息熵可以用來表示圖像所含的信息量多少。所含信息多,則熵值往往越大;反之,所含有的信息少則熵值較小。霧天圖像,物體的輪廓邊緣信息會(huì)變得模糊不清,各像素的亮度值更接近于大氣光值,整幅圖像的亮度值會(huì)更加集中,圖像的信息熵熵值小。相反,無霧圖像,圖像的熵值較大。信息熵計(jì)算公式為
式中:L為亮度值的個(gè)數(shù);pi為第i個(gè)亮度值在圖像中出現(xiàn)的概率。
圖像對(duì)比度指的是一幅圖像中最暗的黑和最亮的白之間的級(jí)別數(shù)。級(jí)別越多代表黑白之間的等級(jí)越多;相反,級(jí)別越少則代表黑白之間的分級(jí)越少。通常來說,黑白差異越大,分級(jí)越多,則整幅圖像的清晰度越高,即對(duì)比度數(shù)值越大,圖像就擁有更高的清晰度。去霧后的圖片相較于霧圖的對(duì)比度應(yīng)該要得到提升。對(duì)比度的計(jì)算公式為
式中:δ(i,j)表示相鄰像素間的灰度差;Pδ(i,j)表示相鄰像素間的灰度差為δ的像素分布概率。
圖像亮度均值太大或太小都不合適,因此求取亮度均值為0.5(使得圖像不太亮也不太黑,后續(xù)更加便于處理得到精確清晰的圖像)、亮度方差為0.157的正態(tài)分布函數(shù)值HS作為亮度指標(biāo),然后將每個(gè)指標(biāo)分別進(jìn)行歸一化,相加后作為每個(gè)組合去霧效果的評(píng)價(jià)指標(biāo)。飽和度均值也反映去霧效果。
因?yàn)閷?yōu)參數(shù)為整數(shù),組合數(shù)有限,為了提高算法速度,最優(yōu)冪指數(shù)的選取采用柵格尋優(yōu)方法。將飽和度拉伸冪指數(shù)和亮度拉伸冪指數(shù)都從1變化到3,共9種組合拉伸。從這9種組合中根據(jù)去霧評(píng)價(jià)指標(biāo)選取最優(yōu)的一組冪指數(shù)組合,得到亮度拉伸的冪指數(shù)n和飽和度拉伸冪指數(shù)m。
(4)新采集RGB有霧圖像轉(zhuǎn)化為HSV圖像,提取色度、飽和度和亮度分量,并計(jì)算飽和度的均值S2。如果S2-S1大于規(guī)定閾值δ(本文選擇δ為0.039),則針對(duì)新采集的RGB有霧圖像重復(fù)步驟(2~5),即重新計(jì)算最優(yōu)冪指數(shù);如果S2-S1≤δ,則利用步驟(3)所得最佳亮度拉伸的冪指數(shù)n和飽和度拉伸冪指數(shù)m完成新采集圖像的去霧。記錄當(dāng)前時(shí)間t2,如果t2-t1超過規(guī)定時(shí)間間隔(本文選擇時(shí)間間隔為30 s),也啟動(dòng)尋找最優(yōu)參數(shù)組合程序。
為驗(yàn)證冪指數(shù)組合算法的去霧效果,將圖1(b)濃霧圖像的飽和度分量進(jìn)行S3運(yùn)算后作imadjust調(diào)整,亮度進(jìn)行V2運(yùn)算后作imadjust調(diào)整,去霧效果如圖7所示。
由圖7可見,去霧后圖像在天空區(qū)稍有馬賽克效應(yīng),下方的景物區(qū)色度和清晰度都有較大提升。為了檢驗(yàn)算法的適應(yīng)性,采用該方法和暗通道去霧算法及導(dǎo)向?yàn)V波去霧算法對(duì)樹林圖像進(jìn)行去霧處理,結(jié)果如圖8所示,可見本文方法去霧效果有提升。
圖7 圖1(b)冪指數(shù)拉伸后去霧效果圖Fig.7 Dehazing image of Fig.1(b)after power exponent stretching
圖8 3種去霧方法效果比較Fig.8 Dehazing effect comparison of three methods
因?yàn)閳D8層次較多,將其作為典型圖像進(jìn)行效果分析,去霧后的評(píng)價(jià)指標(biāo)如表2所示。從表2可以看出,相對(duì)暗通道去霧算法和導(dǎo)向?yàn)V波去霧算法,本文算法亮度指標(biāo)有所減小,但衡量圖像鮮艷程度的飽和度均值、信息熵和對(duì)比度都有明顯提高,證明本文算法具有一定的優(yōu)越性和適應(yīng)性。如果對(duì)亮度有較高的要求,可增加評(píng)價(jià)指標(biāo)中的亮度指標(biāo)的權(quán)系數(shù),篩選出滿足要求的冪指數(shù)來實(shí)現(xiàn)。為了驗(yàn)證算法的適應(yīng)性,另取4幅有霧圖像,去霧效果如圖9所示,總體而言本文算法去霧效果明顯,圖像質(zhì)量有較大提升。
表2 3種去霧算法指標(biāo)對(duì)比Table 2 Comparison of defogging indicators of three algorithms
圖9 本文算法對(duì)于不同場(chǎng)景去霧效果比較(左邊為有霧圖像,右邊為去霧圖像)Fig.9 Comparison of defogging effects in different scenes(fogging images on the left,defogging images on the right)
在Intel(R)Core(TM)i7?8565 CPU@1.80 GHz 1.99 GHz,16.0 GB RAM的筆記本電腦上運(yùn)行相應(yīng)的Python3.7軟件程序,攝像頭采用藍(lán)色妖姬USB攝像頭,圖像分辨率為400像素×300像素。為了提高程序計(jì)算效率,冪指數(shù)尋優(yōu)采用多進(jìn)程編程,多進(jìn)程尋優(yōu)程序流程圖如圖10所示。
圖10 冪指數(shù)尋優(yōu)多進(jìn)程編程流程圖Fig.10 Multi?process programming flowchart for power exponent optimization
冪指數(shù)尋優(yōu)用時(shí)在4.129~4.577 s之間,單幀圖像去霧用時(shí)在0.022~0.120 s之間,多數(shù)情況是0.051 s左右,具有較好的實(shí)時(shí)性。針對(duì)圖7中有霧圖像,暗通道去霧算法由于需要暗通道估計(jì),用時(shí)最長(zhǎng),約0.045 s。導(dǎo)向?yàn)V波算法速度最快,約0.026 s。冪指數(shù)參數(shù)最優(yōu)組合為(1,2)時(shí),本文算法用時(shí)0.028 s;冪指數(shù)組合為(3,3)時(shí),用時(shí)稍有增加,為0.0318 s。盡管如此,本文算法和導(dǎo)向?yàn)V波算法用時(shí)都遠(yuǎn)遠(yuǎn)低于暗通道去霧算法。
樹莓派相對(duì)PC機(jī)處理能力較弱,其實(shí)時(shí)性問題不能忽視。本文選用的樹莓派為4B型,4 GB內(nèi)存,具有4核處理器。運(yùn)行相同的程序,冪指數(shù)尋優(yōu)用時(shí)為5.077~6.160 s。單幀圖像的去霧第1幀時(shí)間較長(zhǎng),為0.308 s,其余幀時(shí)間為0.077~0.168 s,多數(shù)幀去霧處理時(shí)間為0.09 s左右,各幀去霧時(shí)間如圖11所示。由于人的視覺暫留作用,除了第1幀外感覺不到明顯的卡頓,故認(rèn)為能滿足多數(shù)情況下的去霧實(shí)時(shí)性要求。若改用樹莓派廣角CSI視頻接口攝像頭,與藍(lán)色妖姬USB攝像頭相比實(shí)時(shí)性沒有明顯區(qū)別。
圖11 樹莓派每幀圖像去霧用時(shí)統(tǒng)計(jì)Fig.11 Raspberry Pi defogging time statistics for each frame of image
本文提出了在HSV空間通過對(duì)飽和度和亮度分量進(jìn)行冪指數(shù)拉伸的方法進(jìn)行去霧。冪指數(shù)是在一定范圍內(nèi)通過多進(jìn)程編程按照去霧評(píng)價(jià)指標(biāo)尋優(yōu)得到。根據(jù)圖像飽和度的變化和時(shí)間間隔的長(zhǎng)度,運(yùn)行冪指數(shù)尋優(yōu)程序,確定最佳冪指數(shù)組合,因而該去霧算法可以適應(yīng)一定范圍內(nèi)霧濃度的變化和景物層次的變化。確定了最優(yōu)冪指數(shù)后的樹莓派圖像去霧用時(shí)約0.09 s,能夠滿足多數(shù)情況下的車載裝置實(shí)時(shí)性要求。冪指數(shù)尋優(yōu)用時(shí)還可通過優(yōu)化評(píng)價(jià)指標(biāo)、減小圖像的像素尺寸以及去掉去霧無關(guān)的輸出和計(jì)算等方法進(jìn)一步降低。本文的研究結(jié)果表明,通過對(duì)有霧圖像的飽和度和亮度分量的簡(jiǎn)單變換可以快速改善圖像的質(zhì)量,取得較好的去霧效果。本文的去霧算法可為海陸空交通運(yùn)輸安全保障提供技術(shù)支持。