楊 旭,任世卿,苗 芳
(1.沈陽理工大學 信息科學與工程學院,沈陽 110159;2.遼寧省計量科學研究院,沈陽 110004)
如今世界范圍內霧霾天氣頻繁出現[1],使得采集的圖像出現細節(jié)模糊、色彩失真等問題。在計算機視覺中很多重要的研究方向如目標跟蹤、目標識別等技術都是以足夠清晰的輸入圖像為前提,因此圖像去霧具有廣闊的應用前景以及很高的理論研究價值?,F有的圖像去霧技術主要分為兩種:一種是基于圖像增強的技術[2],不考慮圖像降質的原因,旨在增強圖像對比度、邊緣梯度等細節(jié)信息,常用的方法有直方圖均衡化[3]、基于RETINEX[4]的去霧算法、同態(tài)濾波[5]等,這類方法通常會造成去霧不徹底,產生色彩的偏移,僅適用于部分圖像,不具有魯棒性;另一種是基于圖像復原的技術,以大氣散射物理模型為基礎,提出假設或先驗信息等來求解模型中的參數,從而恢復無霧圖像。目前基于圖像復原的技術中比較常用的是文獻[6]提出的基于暗通道先驗的去霧算法,通過暗通道圖估計透射率,利用軟摳圖優(yōu)化透射率,估計大氣光值,從而恢復無霧圖像;該算法原理簡單易行,適合大部分場景,具有很好的魯棒性,但由于暗通道先驗不適用于天空這種過于明亮的區(qū)域,造成去霧后的天空區(qū)域顏色失真嚴重且產生大量噪聲。李堯羿等[7]通過對天空區(qū)域特征統(tǒng)計,得出明亮先驗理論來區(qū)分天空區(qū)域,保留天空區(qū)域僅對非天空區(qū)域進行暗通道去霧,并采用導向全變分模型來優(yōu)化透射率。茅天詒等[8]通過K均值聚類結合增強邊緣提取來分割出天空區(qū)域,修正天空區(qū)域的透視率以消除天空區(qū)域顏色失真問題。本文針對暗通道去霧后天空區(qū)域顏色失真和引入大量噪聲的問題,采用圖像增強技術對圖像進行預處理,利用Canny邊緣檢測結合形態(tài)學操作精確地分割出天空區(qū)域,將天空區(qū)域由RGB(Red Green Blue)顏色空間轉為HIS(Hue Saturation Intensity)顏色空間,僅對亮度分量進行改進的暗通道去霧處理,進而消除天空區(qū)域顏色失真。
在霧、雨、雪等惡劣天氣下,圖像的形成過程受大氣中懸浮顆粒的影響較大,由于散射作用,對進入采集設備的入射光和大氣光造成很大的衰減。在圖像去霧領域中常用惡劣天氣的成像模型如公式(1)所示[9]。
I(x)=J(x)t(x)+A(1-t(x))
(1)
式中:x代表圖像的像素;I(x)代表霧天最終形成的衰減后的圖像,即要進行去霧處理的輸入圖像;J(x)t(x)代表入射光的衰減,J(x)代表無霧時的清晰圖像,即去霧處理后輸出的圖像;t(x)代表透射率即光線的衰減程度,其取值范圍從0到1;A(1-t(x))代表大氣光的衰減,A表示大氣光強度值,和像素的位置不相關,在暗通道去霧算法中被假設為一個常數。根據式(1)可以看出,想要得到清晰的無霧圖像,只需求出透射率t(x)和大氣光值A的最優(yōu)值即可。
文獻[6]通過對室外無霧圖像的觀察,總結出了暗通道先驗理論,并且通過5000張不包含天空區(qū)域的圖像來驗證了這一先驗的優(yōu)越性。該先驗的內容為:在大多數非天空區(qū)域中,至少有一個顏色通道的值非常低且接近零的像素,同樣的,在這些區(qū)域中的所有像素的最小值接近于零??梢酝ㄟ^公式(2)來描述暗通道先驗理論。
(2)
式中:Jdark(x)代表暗通道;W(x)表示像素x的鄰域;r、g、b分別代表RGB顏色空間中的3個通道;c代表r、g、b中一個顏色通道;Jc(y)代表無霧圖像中像素x鄰域內一個顏色通道的值;y代表W(x)內的像素。在無霧圖像中像素x的鄰域內,所有像素的三個顏色通道強度的最小值趨近于零。
(3)
將公式(2)帶入公式(3)即可得到式(4)。
(4)
在暗通道中,將像素按照亮度值由大到小排序,選取前0.1%個像素,在這些像素中選擇輸入圖像中值最大的像素作為大氣光值A。
已知大氣光值A和透射率t(x),可根據公式(5)恢復無霧圖像J(x)。
(5)
當透射率t(x)接近于零時,衰減項J(x)t(x)非常接近于零,直接恢復的無霧圖像容易產生噪聲。因此,引入透射率t(x)的下界t0。
根據暗通道先驗的概念可知其原理并不適用于天空區(qū)域,使天空區(qū)域的透射率估計出現誤差。
(6)
圖1展示了使用暗通道先驗去霧算法處理的圖像效果圖。
圖1 原圖與暗通道去霧比較
由圖1可以看到,天空區(qū)域像素失真嚴重,出現了原圖天空區(qū)域不存在的紋路即噪聲。同時在天空區(qū)域與非天空區(qū)域的交界處產生了明顯的白色暈塊,這是因為在估計透射率時,假設在W(x)內透射率為恒定值,而當W(x)內像素景深差異較大,遠景的透射率值估計偏大,去霧不夠既造成了白色暈塊的出現。
針對上述出現的缺陷及原因,提出一種基于天空區(qū)域分割和HSI空間模型的暗通道先驗去霧算法。首先,運用RETINEX算法對輸入的有霧圖像進行預處理以增強有霧圖像的邊緣信息,對增強后的圖像進行canny邊緣檢測,同時結合形態(tài)學方法精確分割出天空區(qū)域;然后,在天空區(qū)域選取更準確的大氣光值,將圖像中的天空區(qū)域轉換到HSI顏色空間進行處理,并只對亮度分量進行改進的暗通道去霧處理;最后,對非天空區(qū)域進行暗通道去霧,產生清晰的圖像。
一幅普通室外圖像的天空區(qū)域相對于非天空區(qū)域來說平滑很多,基于這一特點,可以先對圖像進行邊緣檢測,利用形態(tài)學操作在盡可能保持原圖像結構的情況下將邊緣連接起來;對于無邊緣的區(qū)域或邊緣極其稀疏且面積最大的區(qū)域即為天空區(qū)域,可以通過尋找最大連通域來分割出天空區(qū)域。
許多邊緣檢測算法都是盡可能保留所檢測到的所有邊緣,但這并不是本文所需要的;最理想的狀態(tài)是識別出相對完整封閉的邊緣,有些圖像的天空區(qū)域存在一些可以忽略不計的、梯度相對大一點的像素,會被識別為邊緣,這會影響最大連通域的尋找。所以本文采用canny邊緣檢測算法[10],該算法可以分為以下5個步驟:
(1)使用高斯濾波器,以平滑圖像、濾除噪聲;
(2)計算圖像中每個像素的梯度強度和方向;
(3)非極大值抑制;
(4)雙閾值檢測;
(5)抑制孤立的弱邊緣。
其中所應用的(3)、(4)、(5)方法,可以有效地消除邊緣檢測帶來的雜散響應,確定真實的和潛在的邊緣。但有霧圖像往往不夠清晰,導致弱邊緣無法識別。文獻[8]通過增強邊緣梯度來分割出天空區(qū)域,即為了獲得更為準確的天空區(qū)域,在求取梯度圖后,適當的提高像素的梯度值,但僅是做線性的提高反而會帶來噪聲增加的負面效應,所以本文提出對有霧圖像進行一次圖像增強的預處理,再進行canny邊緣檢測,這里采用RETINEX算法進行圖像增強。
如圖2所示,結合圖像增強和canny邊緣檢測的分割效果相比直接用canny邊緣檢測的分割效果來說,前者更加貼合原圖且天空區(qū)域與非天空區(qū)域的分界線更加連貫,符合本文想要達到的識別出相對完整封閉的邊緣,方便了要進行的形態(tài)學處理。
采用形態(tài)學操作中的閉操作來實現天空區(qū)域與非天空區(qū)域邊界的連貫性,結構元素的選取對處理結果起到至關重要的作用。經過大量實驗發(fā)現,能使絕大多數圖像獲得精確地處理結果的結構元素是矩形,而且該矩形的大小也比較統(tǒng)一,該矩形的長為達到天空區(qū)域與非天空區(qū)域分界線封閉的最小值,與輸入圖像尺寸有關,該矩形的寬為3個像素。最后尋找最大連通域。處理結果如圖3所示,圖3a為有霧圖像,圖3b為天空區(qū)域分割圖,圖3b中的白色區(qū)域為天空區(qū)域,黑色區(qū)域為非天空區(qū)域,由圖3b可以看出,幾乎準確地分割出了天空區(qū)域。
圖2 邊緣檢測
圖3 使用本文方法分割天空區(qū)域
在大多數去霧方法中,大氣光值求取的方法是尋找圖像中最亮的像素,即模糊圖像中最亮的像素被認為是最模糊不透明的。只有天氣陰沉,陽光可以被忽略,大氣光是場景中唯一的光源時,圖像中存在像素在無窮遠(t(x)≈0)處,最亮的像素才是最不透明的且近似等于A??紤]到有陽光的情況下,有時整個圖像中最亮的像素可比大氣光更亮,如白色建筑物、白色汽車等。有霧圖像的暗通道近似于霧的厚度,所以在暗通道先驗去霧算法中,選取暗通道中前0.1%個最亮的像素作為最模糊不透明的像素集,在這些像素中選擇輸入圖像中值最大的像素作為大氣光A的值,以避免定位到比大氣光更亮的白色建筑物等區(qū)域上。最符合大氣光定義的是最模糊不透明區(qū)域的像素,即天空區(qū)域的像素。所以在已經分割出來的天空區(qū)域的暗通道中選取最亮的0.1%像素,在這些像素中輸入圖像中值最大的像素為大氣光A,這樣大大提高了大氣光值估計的準確率。
天空區(qū)域失真的原因是暗通道原理不適用于天空區(qū)域,進而造成透射率估計偏小,由于RGB的相關性,偏小的透射率放大了RGB各個通道值的差異,最終造成天空區(qū)域像素顏色的失真且引入了大量噪聲。
從RGB各個通道間的相關性出發(fā),將天空區(qū)域從RGB顏色空間轉到HSI顏色空間進行處理。天空區(qū)域的景深為無限遠處,透射率幾乎接近于零,感覺上就是由霧氣所形成的,所以有些去霧算法中認為天空區(qū)域沒有必要進行處理,保留原值即可;但通過對有霧圖像天空區(qū)域仔細觀察可以看出,天空區(qū)域是有變化的,主要體現在亮度值的增加,所以只對亮度通道進行暗通道去霧處理,色調和飽和度保持不變,這樣就能保證在去除一定霧度的情況下,保持顏色不失真。非天空區(qū)域則還是用暗通道去霧方法進行處理。由于軟摳圖技術太過復雜且耗時較長,所以采用引導濾波[11]代替軟摳圖技術來優(yōu)化透射率,處理結果如圖4所示。
圖4 在天空區(qū)域對亮度通道進行暗通道處理的結果對比圖
從圖4的結果處理可以看出,雖然消除了顏色失真的問題,但由于透射率估計偏小造成過度去霧,表現為亮度下降過多,而且天空中的噪聲問題并沒有解決。
天空區(qū)域十分平滑,直接對亮度通道I進行暗通道去霧,是假設透射率在W(x)內恒定,這樣若W(x)小于天空區(qū)域,就會造成圖4c出現紋路的問題。因為天空區(qū)域整體平滑,即景深基本相同,所以設定透射率t(x)在整個天空區(qū)域恒定,即以整個天空區(qū)域為W(x)來求取暗通道值進而估計透射率,天空區(qū)域透射率可以用公式(7)描述。
tsky=maxt(x),x∈Isky(x)
(7)
式中:tsky代表天空區(qū)域的恒定透射率;Isky(x)代表輸入圖像中的天空區(qū)域。從式(7)可以看出,透射率tsky等于傳統(tǒng)暗通道方法求得的天空區(qū)域透射率的最大值,解決了天空區(qū)域過度去霧造成的亮度下降的問題。
本文所提出的算法流程如圖5所示。
圖5 本文算法的流程圖
為驗證本文所提出算法的有效性,選取3幅圖像,分別對本文所提出的去霧算法與傳統(tǒng)暗通道算法進行驗證,實驗結果如圖6所示。
圖6 實驗結果對比圖
由圖6可知,本文所提供的算法相比于傳統(tǒng)暗通道算法,天空區(qū)域更自然,視覺效果更好。圖6中的三幅圖像經本文算法的處理明顯消除了去霧后圖像的天空區(qū)域產生的顏色失真現象。在第二幅和第三幅圖像中原始的暗通道算法不但顏色失真還帶來了大量的紋路即噪聲,本文算法很好地消除了噪聲,恢復了天空區(qū)域原本平滑的特性。在圖6b1中原始的暗通道算法使去霧圖像產生了明顯的白色光暈;在圖6c1采用天空區(qū)域與非天空區(qū)域分開處理的方法,很好地去除了光暈,得到了清晰的圖像。
平均梯度、邊緣強度、SSIM結構相似度三個指標可以客觀評價去霧效果見表1。其中,平均梯度和邊緣強度這兩個指標代表了圖像的清晰程度即去霧后細節(jié)信息是否更加突出,而SSIM結構相似度則代表了去霧后圖像相比原圖像整體結構的保持效果,可以在一定程度上反應天空區(qū)域平滑的保持效果,若是天空區(qū)域多了噪聲或顏色失真,相應的該指標會減小。就平均梯度來說,圖6b1和圖6b3的傳統(tǒng)暗通道去霧方法的處理結果的值稍高一些,其他指標都是本文算法效果更好,所以從客觀的評價指標可以看出本文方法效果更好。
表1 客觀評價指標對比
提出的基于天空區(qū)域分割和HSI顏色空間的暗通道去霧算法能獲得更加清晰自然的圖像,解決了暗通道先驗不適用于天空區(qū)域而產生的顏色失真以及噪聲增加的問題,同時也消除了天空區(qū)域與非天空區(qū)域之間由于景深不連續(xù)出現的白色光暈,取得了較好的去霧效果。
本文算法中,如果原始圖像整體過于明亮或霧度較濃,尺度若選擇不好就會造成天空區(qū)域與非天空區(qū)域有明顯的亮暗差別,過渡不自然,這一問題還須進一步完善和改進。