何立風(fēng) 鐘 巖 劉艷玲 姚 斌
1(陜西科技大學(xué)電氣與信息工程學(xué)院 陜西 西安 710021)2(日本愛知縣立大學(xué)信息科學(xué)學(xué)院 日本 愛知縣 480-1198)
因為霧霾天氣一直影響人們的正常生活,研究去霧的一些算法也相繼出現(xiàn),去霧領(lǐng)域的研究在近年來逐漸熱門,從捕獲的圖像中去除霧、霾,恢復(fù)圖像原本的色彩,成為一個較為重要的研究課題。
目前,國內(nèi)外學(xué)者對去霧算法的研究主要分為兩類。一類是依靠圖像的各種先驗知識[1](例如:暗通道[2]、顏色衰減[3]、霧線[4]、對比度[5]等)來輔助估計透射圖[6],其中暗通道先驗算法則是以He算法為代表,He算法去霧整體效果較好,但存在以下缺陷:(1) 當(dāng)圖像中存在大面積天空區(qū)域時,天空區(qū)域的霧霾沒有被去除掉,這是因為天空區(qū)域的像素點R、G、B三通道像素值均不趨近于0;(2) 在去霧過程中求取透射率圖時,存在大量浮點數(shù)計算,導(dǎo)致整個程序運行時間緩慢,無法達(dá)到實時去霧的要求。另一類是基于深度學(xué)習(xí)[7]的方法,可以說是運用了非常強(qiáng)大的非線性模型[8],利用大量的有霧、無霧圖像的數(shù)據(jù)對,對透射圖進(jìn)行估計,因此一般能夠得到超越傳統(tǒng)方法的結(jié)果。但是基于機(jī)器學(xué)習(xí)[9]的算法在不同數(shù)據(jù)上的泛化性也是一個未知數(shù)。
本文在He算法的基礎(chǔ)上,發(fā)現(xiàn)由于帶霧圖像中局部區(qū)域暗通道分量不趨近于0,且不能滿足實時去霧的情況下,提出了一種對大氣光值改進(jìn)的方案。首先計算像素值R、G、B三通道的方差來判斷當(dāng)前像素點是否存在暗通道值,若不存在,則通過區(qū)域窗口中最小的暗通道值作為當(dāng)前像素點的暗通道值,這樣就可以得到一個較為準(zhǔn)確的大氣光值;然后先通過對圖像進(jìn)行下采樣,求出原圖的縮略圖的透射率,再通過上采樣或插值的方式還原出原圖粗糙的透射率,作導(dǎo)向濾波細(xì)化,這樣圖像復(fù)原的效果相較于其他算法有大幅度提升,并且程序運行時間也大大縮短;最后針對天空區(qū)域?qū)GB顏色空間轉(zhuǎn)為HSI顏色空間,對其進(jìn)行圖像復(fù)原。結(jié)合大氣散射模型以及求得的精準(zhǔn)透射率和天空區(qū)域的大氣光值,將天空帶霧區(qū)域有效快速的進(jìn)行去霧。
在去霧領(lǐng)域中,通常使用大氣散射模型來描述這類問題:
Img(x)=J(x)t(x)+A(1-t(x))
(1)
t(x)=e-θD(x)
(2)
式中:Img(x)是我們采集的帶霧圖像,J(x)是實驗結(jié)果輸出的無霧圖像,A是大氣散射模型中的全局大氣光值,t(x)表示透射率,θ表示大氣散射系數(shù),D(x)表示景物深度。物理模型去霧的本質(zhì)為根據(jù)已知的Img(x),求解未知的J(x)、A和t(x)。
暗通道先驗去霧算法認(rèn)為,在大部分非天空的區(qū)域里,某一些像素肯定有一種或以上的顏色通道具有很低的值,也就是該區(qū)域光強(qiáng)度的最小值是個趨近于0的值,可用公式描述如下:
(3)
式中:Jc表示色彩的R、G、B任一通道,設(shè)定Ω(x)為大小為奇數(shù),中心為x的一個窗口,根據(jù)暗通道先驗,假設(shè)這些小的數(shù)值趨近于0,則可以進(jìn)一步推導(dǎo)出式(1)中J(x)項趨近于0,因此可以在式(1)中推導(dǎo)出t(x)的估計值:
(4)
全局大氣光A的求?。菏紫葘低ǖ缊D所有像素點按亮度像素值大小排序,抽取前0.1%像素值最大的像素點,然后將這些像素位置標(biāo)記好,在原始帶霧圖像中找到這些標(biāo)記的位置,找到像素值最高的點,其像素值作為大氣光值A(chǔ),由于t(x)的值在估計時會有誤差,在暗通道先驗中設(shè)定閾值t0=0.1,使得最終的恢復(fù)公式如下:
(5)
暗通道去霧算法是近年來單幅圖像去霧算法中比較主流的一種方法。此方法雖然在去霧方面取得不錯的效果,但是算法本身存在一些問題:在透射率t(x)估計時,當(dāng)帶霧圖像中局部像素的R、G、B通道中的像素值都不趨近于0,此時得到的透射率就過于粗糙,圖像恢復(fù)[10]會有很多誤差,如圖1所示。
(a) 帶霧圖像 (b) 暗通道
(c) 透射率t (d) 恢復(fù)圖像圖1 暗通道先驗算法
圖1(d)就是利用暗通道原理恢復(fù)得到的無霧圖像圖。透射率t的估計過于粗糙,且大氣光值的選取有待商榷。因為在圖中某些像素點的R、G、B三通道像素值都沒有趨近于0,所以不符合暗通道先驗這個條件,導(dǎo)致在根據(jù)式(5)復(fù)原的過程中,圖像的上半部分區(qū)域的結(jié)果出現(xiàn)失真[11]、色彩混亂的情況,致使圖(d)中恢復(fù)的無霧圖像并不理想。
本文就大氣光值的選取,透射率圖的細(xì)化,圖像復(fù)原后的處理三個方面進(jìn)行了改進(jìn)。實驗結(jié)果發(fā)現(xiàn),大氣光值的精確選取消除了局部區(qū)域色彩分量不趨近于0造成的失真缺陷;提取透射率圖方法的改進(jìn)提高了程序的運行速度;HIS模型[12]圖像復(fù)原更加符合人類對色彩空間的認(rèn)知。
針對以上分析,本文對暗通道先驗算法進(jìn)行如下改進(jìn):將大氣光值的選取進(jìn)行優(yōu)化;透射率圖的估計先局部處理再進(jìn)行濾波;復(fù)原后的圖像通過圖像增強(qiáng)技術(shù)再進(jìn)行二次處理。
在暗通道先驗算法中,大氣光值A(chǔ)的取值具體步驟如下:
(1) 在暗通道圖中對像素值得大小排序,抽取出其中像素值最大的前0.1%像素點,并標(biāo)記好這些像素的下標(biāo)。
(2) 在這些下標(biāo)中,找到原始帶霧圖像img中對應(yīng)下標(biāo)的點,這些點中像素值最大的作為大氣光A的值。
這樣的大氣光值A(chǔ)有以下的問題:當(dāng)局部像素點的R、G、B三通道的像素值都不趨近于0,且像素值大小都相近。此時,得到的暗通道圖中,此局部像素點的暗通道圖的像素值就是一個不精確的值,從而選取的大氣光值A(chǔ)就出現(xiàn)偏差。
針對此問題,本文提出一種改進(jìn)方法,在提取暗通道圖時,設(shè)定一個閾值T1,當(dāng)局部像素點R、G、B三通道像素值的方差大于閾值T1時,說明此像素點三通道的像素值波動很大,可以取其最小的值選做是暗通道圖的一部分。局部像素點的均值和方差由式(6)、式(7)計算所得。
(6)
(7)
當(dāng)局部像素點R、G、B三通道像素值的方差小于閾值T時,說明此像素點三通道的像素值波動不大,無法取得對應(yīng)的暗通道像素值,此時其暗通道值由窗口中其他像素點的三通道中最小值的均值確定,如式(8)所示,其中,窗口區(qū)域大小為W,像素點img(i,j)。
(8)
實驗證明,通過該方法得到的大氣光值較為平滑、穩(wěn)定,對局部色彩分量不趨近于0的區(qū)域進(jìn)行精準(zhǔn)估計,從而得到優(yōu)化的大氣光值,為后續(xù)的圖像復(fù)原工作提供有力的支持。
2.2.1 He的透射率估計
He的算法效果針對大部分帶霧圖像去霧效果都較為不錯,但是存在的問題也是很明顯的。例如在計算透射率圖時,會有大量的計算導(dǎo)致程序運行速度太慢,很難達(dá)到實時去霧的要求。
2.2.2 本文的透射率估計
本文通過對透射率圖的計算方式上進(jìn)行一些改變,通過對透射率圖精度需求的下降,提高透射率圖計算速度,這樣加快程序的執(zhí)行速度。
首先,求取原圖的縮略圖,也就是原圖的下采樣,使得圖像大部分的細(xì)節(jié)還存在,丟失部分細(xì)節(jié);其次求取縮略圖的透射率圖,這樣就可以減少計算量,加快程序運行速度,再通過三次內(nèi)插法或雙線性內(nèi)插法來獲取原圖的透射率圖;最后對求得的透射率圖用導(dǎo)向濾波精確化。計算過程如圖2所示。
圖2 計算透射率流程圖
對一幅1 024×768的帶霧圖像進(jìn)行透射率圖的估計,本文的算法得出的透射率圖在大部分細(xì)節(jié)上幾乎一致,效果良好,但在算法運行時間上大幅提高,具體如圖3及表1所示。
(a) 帶霧圖像 (b) He算法透射率圖
(c) 帶霧圖像 (d) 本文透射率圖圖3 透射率圖估計的對比
表1 不同算法對透射率圖估計的時間
實驗結(jié)果發(fā)現(xiàn),針對一幅1 024×768的帶霧圖像處理只需要30 ms左右,640×480大小的帶霧圖像處理只需大約27 ms,而He算法需要三倍以上的時間才能完成,所以本文算法在執(zhí)行速度上滿足較多實時應(yīng)用場景。
2.3.1 He的復(fù)原算法
式(5)中的各個變量通過前面的步驟都已經(jīng)給出說明,這里不再重復(fù),最后進(jìn)行計算即可。方法上簡單易懂,只是通過帶霧圖像I(x)、大氣光值A(chǔ),透射率圖t(x),三個參數(shù)的值來復(fù)原出去霧圖像J(x)。在有些實例中,去霧效果并不好,在圖像的色彩上還存在較大問題,如圖4所示。
(a) 帶霧圖 (b) 去霧后的圖圖4 He算法復(fù)原效果圖
He算法針對類似圖4的實例,由于過度去霧造成圖像中局部區(qū)域的色彩失真,使得原圖的恢復(fù)結(jié)果產(chǎn)生明顯色差問題。
2.3.2 本文的復(fù)原方法
以上問題是在RGB色彩空間復(fù)原的,出現(xiàn)了部分區(qū)域恢復(fù)不清晰問題,本文算法是將圖像的RGB色彩空間轉(zhuǎn)化為HSI色彩空間,從而實現(xiàn)圖像復(fù)原的方法。HIS色彩空間是用色調(diào)(H)、飽和度(S)、亮度(L)來描述色彩,因為選擇HSI模型符合人們對顏色的識別。
在處理彩色圖像時,可以只對I分量進(jìn)行處理,結(jié)果不改變原圖像中的彩色種類;將RGB空間色彩轉(zhuǎn)化到HSI空間中,結(jié)合非天空和天空區(qū)域的亮度信息、色調(diào)信息、飽和度信息,可以更好地避免過度去霧圖像色彩失真的情況,從而得到較好的去霧效果。
在驗證本文算法的可行性和有效性時,本文選取了多種場景下的多種帶霧圖像,在運行本文算法的同時,使用He算法、中值濾波算法、均值濾波算法、多尺度Retinex算法對圖像進(jìn)行去霧處理。實驗使用清華同方臺式機(jī),處理器為Inter(R) Core(TM) i7-6700 CPU 3.4 GHz,內(nèi)存8 GB,軟件平臺為MATLAB 2016a。
因為在圖像中某些像素的R、G、B三通道像素值都沒有趨近于0,導(dǎo)致在根據(jù)式(5)復(fù)原的過程中,圖像的局部區(qū)域出現(xiàn)失真,色彩混亂的情況。本文算法通過對每個像素的R、G、B色彩分量進(jìn)行篩選,挑選出符合暗通道原理的像素點,那些不符合特定閾值的像素點通過其局部像素點的均值得出暗通道圖對應(yīng)像素點的像素值。綜上所述,得出的暗通道圖就較為精確,從而得到的大氣光值也較為平滑,不會造成圖像局部色彩失真的情況。
He等的透射率圖估計整體效果較好,但局部區(qū)域存在明顯的缺陷,通過本文的算法,透射率圖的估計由以下步驟得出。
通過對原圖的下采樣,得到原圖的縮略圖,選擇分辨率適當(dāng)?shù)目s略圖,因為分辨率較低時,圖像中的部分細(xì)節(jié)存在失真現(xiàn)象,所以我們需要選擇合適的大小的縮略圖。求出當(dāng)前縮略圖的透射率圖,然后再通過插值的方法得到原圖的透射率圖,這樣的透射率圖精度和原方案的透射率圖效果一致,但是速度上明顯要高于He算法透射率圖求取的速度。通過求得原圖大小合適的縮略圖,再利用插值的方法求得原圖的透射率圖,在運行速度上相比He以及其他算法有較大的提升,且透射率圖的效果也是幾乎一致的。
在實際去霧過程中,針對大面積天空帶霧圖像,如圖5所示,He的算法得出的透射率圖整體效果較好,復(fù)原的無霧圖像整體偏暗,局部會有色彩失真的問題,本文算法正好克服了這些不足,得出的透射率圖更精確,從而復(fù)原的無霧圖像更清晰可見。
圖5 不同場景各算法去霧效果對比
圖5中分別有4種帶霧圖像,從不含天空區(qū)域和包含天空區(qū)域兩種圖像來測試各種算法的去霧效果。從結(jié)果可知,He算法相對于中值/均值濾波等算法去霧效果較為明顯,帶霧圖像中第1、2幅都是不含天空,圖像中的車、街道、房屋等目標(biāo)通過本文算法都恢復(fù)的較為清晰,Retinex算法對于帶濃霧圖像的去霧都會有局部色彩失真的情況;帶霧圖像中第3、4幅圖選取有大部分天空的圖像,He算法和中值或均值算法的效果幾乎沒有將天空區(qū)域恢復(fù)出來,所選取的大氣光值在算法本身是存在一些缺陷的;Retinex算法恢復(fù)的天空區(qū)域部分偏白,去霧效果不足,而本文算法改進(jìn)大氣光值的選取,從而克服這一缺陷,天空區(qū)域的顏色與實際場景趨近一致。
在程序運行時間上,如表2所示,本文和其他算法進(jìn)行了對比,對不同大小尺寸的圖像進(jìn)行去霧結(jié)果對比。
表2 各算法對不同大小圖像去霧的運行時間
由表2可知,針對一幅彩色帶霧圖像去霧時,通過對透射率圖的改進(jìn),整體算法運行時間縮短50%以上,在保持透射率精度的同時加快速度,加上大氣光值和圖像復(fù)原的改進(jìn),得到較為明顯的去霧結(jié)果,在去霧效果和速度上達(dá)到了實際生活中實時去霧的要求。
本文是在He算法的基礎(chǔ)上,通過改進(jìn)大氣光值的選取,透射率圖的精確估計,以及圖像復(fù)原利用HSI空間的特性,更加符合人類對顏色空間的認(rèn)知。一系列改進(jìn)方法進(jìn)行實時去霧,不僅在去霧程度上更加優(yōu)化,同時在實驗處理速度上也大幅縮短時間,達(dá)到了實時去霧的效果。然而在實驗過程中發(fā)現(xiàn)提取透射率圖時可以通過SSE代碼優(yōu)化去處理浮點數(shù)計算的方式加快程序運行速度,這種通過硬件再對代碼進(jìn)一步加速是以后繼續(xù)研究的方向;同時在復(fù)雜場景中不僅僅是去霧,而且可以通過去霧去檢測運動目標(biāo)的一些方法也是我們需要研究的內(nèi)容。