周 軍 廖曉波 朱建公
(西南科技大學制造過程測試技術省部共建教育部重點實驗室 四川綿陽 621010)
當前,隨著空氣中灰塵、霾等微粒的不斷增多,駕駛員在行駛過程中很容易因視覺模糊或眩暈導致不必要的交通事故發生。隨著科技的不斷進步,汽車都加裝有嵌入式控制系統和一個可以顯示汽車前后方向圖像的顯示屏。然而,戶外的圖像因霧、霾、煙等原因而使圖像質量變差,這些模糊的圖像在被送往顯示器進行顯示前需進行圖像去霧處理。在圖像去霧處理算法中,算法的實時性一直是困擾其得到廣泛應用的重要原因。本文提出了一種適合在嵌入式多核處理器平臺下快速對圖像進行處理的算法。
按照圖像去霧是否基于一個物理模型來看,去霧基本分為兩種方法:物理模型和非物理模型。物理模型方法以大氣透射系數為模型,通過分析大氣中能夠影響圖像質量的因子,反解透射系數而達到恢復圖像的目的。這種方法理論上并不精確,因為其包含3個未知參數,所以求解這類問題需要使用一些假設和估計成分,或者使用同場景的多幅圖片來求解以達到恢復圖片的目的?;谶@種理論,Tan[1]提出最大化帶霧圖片局部對比度的方法,這種方法能帶來很大程度上的視覺沖擊,但并不能按照大氣投射理論恢復出真實的場景圖像,最終恢復出的圖像呈現過飽和、不真實的特點。Fattal[2]利用統計學原理,采用估計物體反照率的方法來解決投射系數問題,取得了良好效果,但一旦出現大霧天氣就不能很好地處理,甚至違反統計學原理。He[3]通過觀察戶外的大量圖片,提出暗通道先驗原理,這個方法能夠優良地作用于戶外絕大多數圖像,但是暗通道先驗原理對天空區域或者與天空相似的區域來說沒有用處。
非物理模型方法并不關心場景光在介質中的投射情況,換句話說,這些方法是通過一些簡單的圖像增強或者主觀視覺感受來達到去霧的目的。傳統圖像增強的方法有對數變換、指數變換、直方圖均衡、空域濾波等。其他包括主觀視覺感受的方法有顏色恒常知覺計算理論,比如視網膜增強算法、改進的視網膜增強理論、多規模視網膜增強理論、帶色彩恢復的多尺度視網膜增強算法等[4]。
在上述方法中,能夠達到很好去霧效果的物理模型方法依賴于物理模型的正確性和相關假設理論的合理性,這些假設理論在最近幾年正在被持續完善。其中,基于暗通道先驗原理的圖像去霧方法能夠很好地處理霧霾較大的情況,這也適合應用在嵌入式系統領域中。但是這個方法有一個致命的缺點是在計算過程中會花費大量時間,導致該算法不能直接應用于實時圖像處理環境中。白林亭等[5]針對這個問題利用數字信號處理器(DSP)在He的去霧算法上做了一定強度的優化,能夠達到基本的實時性要求。不過由于其未對去霧后的圖像進行顏色校正,使得去霧后圖像容易在天空區域出現光暈和顏色失真等現象,一定程度上影響了可視性,由于其實現是基于DSP處理器,在嵌入式手持設備中應用受到了限制。為了解決這一問題,本文提出一種基于ARM內核的快速圖像去霧方法。
廣泛應用于計算機視覺和計算機圖形學的大氣透射模型如式(1):
I(x)=J(x)t(x)+A(1-t(x))
(1)
其中,I(x)表示在帶霧圖像中像素x的像素值(強度值),J(x)表示在不帶霧圖像中像素x的像素值(強度值),t表示場景光在穿透介質(大氣)后到達攝像頭的部分,A表示全球大氣光的值。上式中右邊第一項表示直接衰減項,表示場景的輻射和它在介質中的衰減。第二項表示大氣光成分,它是由大氣散射所導致的。
正如上面所描述的,暗通道先驗原理表達式為:
(2)
式中,c表示RGB 3個顏色通道中的任意一個,Ω(x)表示以像素x為中心的局部區域。式(2)中,如果J表示無霧圖像,對除天空部分的決大多數局部區域而言式(2)得出的結果趨近于0。進一步假設在局部區域中t為常量,A的值已知,這時能夠得出:

(3)
正如暗通道先驗原理表述的那樣,上式右邊第一項趨近于0,所以能夠計算出t的值。為了使去霧得出的圖像自然一些,需要引入一個常量因子:
(4)

(5)
使用式(5)能夠直接計算出去霧后的圖像。但是在去霧的過程中,求解投射系數t時隱含了一個嚴重的問題,那就是在直接利用式(5)求得的無霧圖像里,會出現非常嚴重的快效應。為了解決這個問題,He提出了一種叫做“軟摳圖”[3]的算法來細化求解的投射系數t。該方法使用的理論非常復雜,并且要求解一個非常龐大的稀疏矩陣。算法所用時間太多,以至于完全不能用于實時性處理,需要研究一種能夠替代這種算法的方法。
為了解決“軟摳圖”算法所帶來的時間和空間上的不足,本文提出了一種改進的實時圖像去霧算法。為了達到實時的目的,多核處理的并行處理能力是本文算法的核心。算法流程如圖1。

圖1 實時去霧算法流程Fig.1 The algorithm flow of real-time haze removal
首先,要將輸入的待去霧圖像進行分辨率降解處理(下采樣)。這樣做是為了能夠加快投射系數t的求解過程。投射系數t在局部范圍內可以將其看作一個不變的常量,因此在求解的過程中將高分辨率的輸入圖像通過縮放變換為一個低分辨率的圖像。這樣做既保證了投射系數t的精確性,也在一定程度上減少了計算時間。然后,根據暗通道先驗原理就可以求出投射系數t在整張圖片的分布。不過這時求得的t帶有很嚴重的快效應,于是使用導向濾波方法來優化投射系數t,使得到的t更為精細。這時,由于t與原圖像的分辨率不同,無法直接通過式(5)得到去霧后的圖像,于是直接使用臨近插值法對低分辨率的投射系數t分布圖進行上采樣得到與原圖同樣大小的投射系數分布圖。最后,因得到的無霧圖像會導致向暗色過渡,因此還需要對其進行顏色校準,然后輸出得到最終的恢復圖像。
對于一個分辨率很高的圖片,下采樣在保證了圖像細節的同時,還能夠大大降低圖像的像素數,這樣也會使圖像處理的速度得到很好的改善。這個步驟的關鍵點在于如何選擇采樣的百分比來平衡圖像處理時間和采樣時間之間的沖突。如果采樣率過大,會導致大量時間花費在采樣上,并且圖像的細節也不能得到充分的保障;如果采樣率過小,仍然會導致在圖像處理過程中耗費大量時間,使去霧達不到實時效果。
計算圖像暗通道的過程由式(2)直接給出,這一步的時耗主要在于最小值濾波。如果使用一個w×w大小的模板對一張M×N的圖片進行最小值濾波,使用常規方法實現的算法時間復雜度為O(M×N×w×w)。
能夠證明,如果使用線性陣的方式來實現最小值濾波,那么在最壞的情況下每個元素至少會比較1.5次。也就是說,如果有N個元素,那么算法的時間復雜度會變成O(N×1.5)。Daniel[6]提出了一個名叫基于流的最大最小值濾波方法(SMMF),這個算法在實際運行過程中每個元素最多比較次數不超過3次?;赟MMF,對一個矩陣D進行最小值濾波的流程如圖2。

圖2 最小值濾波算法流程Fig.2 The algorithm flow of mini-value filtering
在這個步驟結束后,對于在D中(x,y)位置處的像素p,在w×w范圍內的最小值被保存在M3中的(x-w,y-ω)位置。
在文獻[3]中,作者使用軟摳圖的方法來對透射系數t進行優化濾波,這種方法無論是從時間上還是空間上耗費巨大。為了解決這個問題,許多用來代替軟摳圖的方法被陸續提出。文獻[7-8]中使用雙邊緣濾波算法通過計算局部均值和方差法估計出透射系數t。He提出了一種名叫導向濾波[9]的算法,這個算法的關鍵就是求均值,所以它能夠在完成優化透射系數的基礎上節約大量時間和空間。考慮到均值濾波和計算機的并行運行,本文采用導向濾波算法代替軟摳圖算法對透射系數t進行優化。
導向濾波算法流程如圖3所示。其中,p是輸入圖像,I是導向圖,p是輸出圖像。在這個算法中函數f_mean()表示對圖像進行均值濾波。

圖3 導向濾波算法Fig.3 The algorithm of guided filtering
在經過上采樣的步驟后,會得到一張與原圖等大的高分辨率透射系數t的圖像。而上采樣的最為常規的方法便是插值法,如雙邊緣差值、雙三次插值和樣條插值法等。這些方法速度較快并且容易編程實現,但是這些方法在插值點增多后就會使得結果圖出現模糊效應。Shan等[10]人提出了一個快速單一的圖像上采樣方法,這種方法的實現依賴于去卷積和再卷積,當然最后結果也是優良的。
考慮到上采樣和實時性需求,本文使用雙線性插值的方式對透射系數t進行上采樣得到高分辨率的投射系數t分布圖。
通過上述步驟進行圖像去霧后,得到的圖像全局亮度值會偏低,對比度也會有所下降。所以有必要對最后的圖像進行顏色值或亮度值校正。直方圖處理法在實時應用中應用最為廣泛,并且算法實現簡單,也能達到提升對比度的目的。因此本文采用直方圖處理[11]方式來校正顏色值。表達式如式(6):
(6)
這里,c表示輸入圖像I的某個顏色通道,Max()和Min()分別表示求輸入圖像I的某個顏色通道的最大和最小的顏色亮度值。Max-Val表示輸入圖像通道c的最大亮度值,通常這個值被設定為255。事實上,像素的亮度值通常會小于255,因此添加了一個參數ω(0<ω<1)來調整最大和最小亮度值。
Advanced RISC Machines(高級精簡指令集機器)簡稱ARM,是一個32位精簡指令(RISC)的處理器架構,廣泛應用于眾多嵌入式系統設計中。目前其按應用分為cortex-M,cortex-R,cortex-A等多種架構,其中cortex-M架構的處理器主要用于低成本、低功耗的低端控制系統中,如一些工業控制領域、家庭自動化、消費、智能計量等方向。Cortex-R主要針對高性能實時應用,如硬盤控制器(或固態驅動控制器)等。Cortex-A處理器通常用于需要操作系統或高性能支持的應用程序系統中,主要面向手持設備、多媒體消費類電子設備等場合,手機、Ipad、小型平板電腦、汽車多媒體設備等都是cortex-A架構的ARM處理器,由于能夠運行大型操作系統,因此可以在一個設備上運行各種各樣的應用軟件供用戶使用。
考慮到圖像去霧將來多用于添加到車載視頻中,因此本文選擇多核ARM處理器來實現實時去霧算法,這樣在一個設備上就可以完成多種功能了,免去了攜帶眾多設備的麻煩。三星公司的Exynos 4412處理器采用了32 nm HKMG工藝,是三星的第一款四核處理器,每核主頻達1.4 GHz,可為并行圖像處理提供方便。
在本文中,通過OpenMP提供的API實現了處理器的并行處理能力。在本文圖像處理算法中,其耗時的過程有暗通道求解過程中最小值濾波、導向濾波中的均值濾波等需要遍歷圖片的操作。在暗通道求解過程中,每行的最小值濾波是獨立的,可以將計算分到幾個不同的處理器上同時進行,只需要在程序的相關位置加上“#pragma omp parallel for”。在導向濾波算法中,圖3所示的每一步都是獨立的,因此也可以使用并行處理的方式來減少時耗。其他的優化指令還有“#pragma omp parallel section”。
在本文實驗驗證中,對每一張待去霧圖像,如果分辨率小于600×600時,下采樣因子設置為2,而大于這個分辨率時設置為3。在求解暗通道時局部區域的大小設置為15×15;在導向濾波過程中,局部區域大小設置為30或者更高?;诖耍褂肅++和OpenCV在gcc環境中實現了本文算法。
圖4是幾個算法的結果比較,可以看到本文算法與其他算法[7]相比在去霧效果方面明顯較優,尤其是在亮度和清晰度方面。這表明優化透射系數的方式是有效的,上采樣和下采樣因子也是影響其結果的一大原因。其他算法的結果看起來與本文算法的結果不同,主要是其去霧后的圖片看起來整體偏暗,其實結果圖中的景深是完全相同的。在對比度方面,本文算法的結果看起來更清晰明朗,并且在場景較遠的地方保留了一些霧,這使得去霧后的圖片看起來更真實。
圖5展示了一些使用本文的算法去霧的其他例子,這些圖片大小都介于400×500到600×600之間。表1列出了計算這些圖片所花時間。

圖4 算法結果Fig.4 Comparison of algorithm results

圖5 算法的一些其他例子Fig.5 Other examples of our algoritmh

序號優化前算法用時[7]/s優化后算法用時/s提高百分比10.67850.072689.30%20.56480.051190.95%30.76530.089488.32%40.55860.051490.80%50.67520.072289.31%60.55960.072886.99%70.79410.074490.63%80.65890.066389.94%90.96350.091190.54%100.78380.069591.13%110.89540.091889.75%
從圖5和表1可以看出,通過本文優化的算法來進行單張圖像去霧,算法運行時間可以平均提高89%左右。測試所用開發板為友善之臂Tiny4412開發板,處理器主頻為1.4 GHz 4核,并開啟處理器并行處理能力,使用操作系統為嵌入式Linux。以上結果表明,如果視頻分辨率在700×700左右時,可以很流暢地處理視頻數據。
本文基于暗通道先驗原理,提出了一種優化的實時去霧算法。算法的實質是在求解透射系數時,通過下采樣的方式降低輸入圖像的分辨率,并打開多核處理器的并行能力,從而加快算法的運行速度。通過測試,在處理的圖像分辨率不超過700×700時,處理速度可達70 ms,這意味著本文算法可以應用到許多實時應用場景。
不過,本文算法仍有不足的地方。如果圖片分辨率過高,那么處理速度仍然很慢,達不到實時效果。雖然可以通過增加處理器的核心數來減輕每個處理器的計算能力,但成本會大大增加。
[1]TAN R T. Visibility in bad weather from a single image[C]//Computer Vision and Pattern Recognition, 2008. CVPR 2008. IEEE Conference on. IEEE, 2008: 1-8.
[2]FATTAL R.Single image dehazing[C] // ACM Transactions on Graphics (TOG).ACM,2008, 27(3): 72.
[3]HE K,SUN J,TANG X.Single image haze removal using dark channel prior[J].IEEE Transaction on Pattern Analysis and Machine Intelligence,2011,33(12):2341-2353.
[4]張石,佘黎煌,葛欣.基于曲波變換的視網膜血管圖像增強算法[J].東北大學學報(自然科學版),2016,37(7):922-926.
[5]白林亭,武永衛,謝建春,等.多核DSP圖像去霧優化方法[J].電光與控制,2015,22(10): 14-18.
[6]LEMIRE D. Streaming maximum-minimum filter using no more than three comparisons per element[J]. RXiv Preprint Cs, 2006:0610046.
[7]石文軒,詹詩縈,李婕.一種邊緣優化的暗通道去霧算法[J].計算機應用研究,2013,30(12):3854-3856.
[8]SUN K, WANG B, ZHOU Z Q, et al. Real time image haze removal ssing bilateral filter[J]. Transactions of Beijing Institute of Technology,2011, 31(7): 810-814.
[9]HE K,SUN J,TANG X.Guided image filtering[M] //Computer Vision-ECCV 2010. Springer Berlin Heidelberg, 2010:1-14.
[10] SHAN Q, LI Z, JIA J, et al. Fast image/video upsampling[C]//ACM Transactions on Graphics (TOG). ACM, 2008,27(5):153.
[11] 田軍委,黃永宣,于亞琳.基于直方圖偏差約束的快速模糊C均值圖像分割法[J].西安交通大學學報,2007,41(04):430-434.
[12] 王森,潘玉寨,劉一,等.提高霧天激光主動成像圖像質量的研究[J].紅外與激光工程,2013,42(9):2392-2396.
[13] 褚宏莉,李元祥,周則明,等.基于黑色通道的圖像快速去霧優化算法[J].電子學報,2013,41(4):791-797.
[14] 孫偉,李大健,劉宏娟,等.基于大氣散射模型的單幅圖像快速去霧[J].光學精密工程,2013,21(4):1040-1046.
[15] 李權合,查宇飛,熊磊,等.霧霾退化圖像場景再現新算法[J].西安電子科技大學學報,2013,40(5):99-106.
[16] 唐曉慶,范賜恩,劉鑫.基于邊緣保持濾波的單幅圖像快速去霧[J].西安交通大學學報,2015,49(3):144-149.
[17] LANG E H. An alternative technique for the computation of the designator in the retinex theory of color vision[J].Proceedings of the National Academy of Sciences,1986,83(10):3078-3080.