(1.大連海事大學 信息科學技術學院,大連 116026; 2.大連海事大學 輪機工程學院, 大連 116026;3.大連海事大學 船舶電氣工程學院,大連 116026; 4.大連海事大學 航運經濟與管理學院,大連 116026)
在霧天中,因為懸浮在空氣中的大部分粒子對光線有散射等作用,使太陽光透過霧的強度值變低,觀察的景色能見度過低,對比度降低,細節信息缺失,視覺效果較差。對于交通、導航、遙感等有很大的影響,人們的生產和生活帶來了極大的。因此,計算機視覺系統在實踐中發揮著重要作用,霧天圖像的去霧是計算機視覺領域中的一個很有意義的問題,具有廣闊的應用前景和價值。
隨著人工智能技術的發展,去霧算法的研究的取得了不錯的發展。He等提出了暗原色先驗等方法,目前圖像去霧算法大抵可以分為兩類:一則基于圖像增強的圖像去霧方法,二則是基于物理模型的圖像去霧方法[1-2]。同態濾波、直方圖均衡化、Retinex加強、小波變換算法等都是基于非物理模型的去霧算法。直方圖均衡化算法缺乏對局部場景信息的思量,對比度過低或過高,視覺效果不理想[6]。同態濾波算法應用了對數變換和傅氏變換,對圖像削弱低頻加強高頻。小波變換對亮度超亮和超暗的情形不適用。基于物理模型的圖像去霧算法主要涵蓋了基于偏微分方程的修復方法、采取景深關系的圖像去霧方法等。這種方法利用了景深信息,意圖最大程度的將圖像恢復到原來的狀態。但是他在大氣模型的基礎之上增加了一些假設條件,具有一定得局限性?;诎低ǖ廊レF算法是目前國內最先進的去霧方法效果明顯,發展迅捷。
本論文創新點是使用暗原色先驗去霧算法擬合和K均值聚類算法對原來的去霧算法采取了優化,在暗原色先驗去霧算法的條件上獲得暗原色圖,并且對應估算出透射率;再利用線性數學擬合獲得最后的透射率。但是大氣光強度值的計算是應用K均值聚類算法把有霧圖像進行聚類處理,并且在得到的天空面積和霧最多的面積中獲取原來有霧圖的最大像素的值為大氣光強值,用去霧算法恢復出無霧圖像。
在霧天時,由于空氣中含有部分雜質,一些懸浮粒子存在散射和吸收作用,使得光學成像對比度降低,顏色偏灰白色,視覺效果也不是很好。即使在大多數不是霧天部分區域的天空中,總存在有像素至少有一個顏色通道具備很低的值。也就是說,此區域的光強度值得最小值是一個很小的數值。清華大學何愷明曾經發表過一篇很著名的論文《Single Image Haze Removal Using Dark Channel Prior》,暗原色先驗去霧算法是由他首先提出的。
在霧天中,由于一些雜質混雜在大氣中,使得大氣發生了散射作用。不少人對大氣的散射進行了一定的研究,其中McCarney等人的研究成果較為顯著,他提出了一種模型被廣泛應用,具體如下:
C(x)=t(x)J(x)+(1-t(x))A
(1)
C為所得到的輸入圖像的光強;T為光線透射率;A為大氣光成分;J為無霧時景物的光強。
圖像去霧通過C求未知參數J,A,t。當前方程的個數少于未知量的個數,從某種角度來說,暗原色先驗相當于其中我們加入的一個約束條件。
Dr.He是微軟亞洲研究院研究計算機視覺方面的領軍人物,He等對于暗原色先驗的理論做了許多的觀察實驗,并得出結論:是通過大量實驗來總結得到的一條規律:在大部分陽光照射豐富,戶外不含有霧的圖像中,在一些局部區域存在某個顏色通道(R、G、B)的強度值很低的情況。對戶外無的霧圖像J進行分塊,對每一個像素塊定義暗原色如下[3]:
(2)
式中,Ω(x)是以x為中心的,以正方形鄰域的窗口,Jc為J三原色的一個通道,Jdark(x)即為圖像J在這個鄰域的暗原色。觀察統計表明Jdark趨于零。即:

(3)
在帶霧圖像中這些暗原色值升高。
前面已經說過,數年前何凱明博士已提出了暗原色先驗去霧算法,經由這個算法能夠很好的恢復圖像,從有霧圖像中還原出無霧圖像。可是,何凱明博士的算法仍有一些可優化之處。2013年,雖然何凱明博士又提出了引導濾波的算法,此時能夠解決第一個問題,使計算復雜度降低,但透射率的估計效率仍然很低。并且,當圖像中存在亮度很高的面積時,此時會造成大氣光強A的估計值失真以及圖像失真問題,去霧效果受到影響。
為了能夠很好的解決這問題,我們利用當下比較熱門的人工智能技術—機器學習之K—means算法來解決這個問題。本文將采取由MacQueen所提出的K均值算法與暗原色先驗去霧算法結合進行優化,力求得到更好的去霧效果。它的主要思路是:
1)首先把各個聚類子集中的全部數據個體的平均值作為此聚類的中心店;
2)再通過一次又一次的迭代計算把數據集歸為不一樣的類別;
3)使得判斷聚類能力的評價方法達到最佳效果,聚類后相同的類聚集效果明顯,獨立的類間有較好的區分效果。
這種算法主要用來處理連續數據時,離散的數據是不適用的。K均值算法的算法流程如下:K均值算法是一個重復的迭代計算,其最終要求是使聚類樣本中所有的數據到聚類中心路程的平方和J(C)最小,它有4個步驟,流程圖如圖1所示。

圖1 K均值聚類算法流程圖
若僅僅使用暗原色去霧算法,存在兩個問題:
1)暗原色先驗去霧算法在恢復有霧圖像時運算復雜度高;
2)當天空中有高亮度值面積有局限性而造成有霧圖像容易產生圖像失真;
本論文從暗原色模型開始,在暗原色先驗去霧算法的條件上獲得暗原色圖,并使用暗原色先驗算法擬合來估計透射率,再使用K均值聚類算法給有霧圖像進行區域劃分以后,再對天空區域估算出大氣的光強度值。K均值算法加強了圖像的細節特征,而且很好地減小了算法的復雜計算度,還加強了大氣光強度測算值的正確性,很好減小了亮度值高區域的失真。針對大氣光強的計算是先通過K—means聚類算法把圖像進行處理,繼而把獲得到的有霧圖像最大像素值作為大氣光強值,最后用暗原色先驗算法得到無霧圖像。
這個算法至關重要的部分便是對大氣光強A的估算。何凱明博士采用有無圖像的暗原色通道的0.1%的亮度像素點,將此點的原圖的最大像素值定義為大氣光強度值,當有霧圖像中的白色景物的面積較小時,可以獲得比較精確的估算[4]。然而,當圖像中存在大面積的高亮度值時,這是會造成大氣光強度值估算不精確,并且會使圖像顏色失真,這會大大降低去霧質量。
我們設t(x)代表局部透射率,并假定每一個像素塊的光線透射率是相同的,通過其像素塊的大小來影響透射率。假定大氣光強A是已知量,則有:
(4)
根據1.2節當中我們已經闡述了暗原色先驗原理可知,
(5)
由于世間的大部分物質都不可能100%純凈沒有雜質的,即使在光強很高的晴天中,也含有微粒冗雜在大氣中,所以為了真實性,我們設置了一個w參數用來模擬表示,w的值一般介于0~1之間,公式如下:
(6)

(7)
計算出透射率之后,最后可得到J的求解公式為:
(8)
暗通道先驗去霧算法是何凱明博士經過大量統計實驗數據研宄驗證發現的。基本去霧流程如圖2所示。

圖2 原理圖
基于彩色圖像三原色的暗通道特性,何惜明假設在晴天條件下,無霧的戶外圖像除了大面積藍色水域,還有明亮的天空區域,剩余場景的局部區域至少在的一個原色通道上存在一些亮度值很低的像素點,將這些亮度值接近于的像素點看作黑暗的點,那么這個通道即稱作暗原色通道[9]。對圖像每一像元,暗通道表達為:
(9)
其中:表示的三原色中的任意一個顏色通道(R、G、B),表示以點為中心暗通道的形成有以下幾個原因:
1)天氣晴朗時,在顏色鮮亮的景物的表面,其亮度值至少在一個基原色通道的強度較小,通常顯性色彩的三基色組合成分最多的波段,其通道值比較大,其它譜段值比較小,幾乎為0;
2)場景中物體由于光線入射量少或本身不夠鮮亮,如郁蔥的林間,黒色的物體表面,灰暗色的樹干和石頭等;
3)景物被其它物體遮擋住光線或自身形成的投影區,形成的陰影區域亮度值也都很低,如汽車、建筑物、樹葉以及其它各種自然景觀在光照下的陰影和投影等。在含霧天氣條件下,含霧影像的暗通道的像素亮度值遠大于無大氣粒子散射干擾情況時的亮度,因而根據暗通道這一性質,可以估算出含霧影像中霧氣的濃度和實際景物的深度。圖為霧天時拍攝的戶外圖片及其暗通道。

圖3 晴天無霧及其暗通道圖

圖4 霧化圖像及其暗通道圖
由圖3和圖4的暗通道圖可知,無論在何種天氣條件下,至少在一個顏色通道上,總存在一些亮度值接近于的像素點,使得每一個局部區域顏色很暗。
1)可執行程序,放入含有霧霾的圖片進行圖像去霧功能測試。
2)我們分別從幾個方面來搜集圖片,衛星、生活等各個領域,驗證的效果圖象如下。算法改進的效果十分明顯。在Matlab上運行之后,我們繼續把Matlab與VS2012相結合生成DLL文件,方便以后在網絡網頁中應用。

圖5 實驗結果1

圖6 實驗結果2
通過圖7的對比可以看出,本文的算法在實驗后效果有了明顯的改進與提升,清晰度更高,retinex算法去霧之后從效果圖上看還是殘留霧的影響,暗通道去霧算法圖像的色澤變暗,對于一些色澤暗淡的圖像效果并不是很好,而本文的算法運用K均值聚類算法先進行處理,效果較為明顯。

圖7 對比情況圖
本文提出了暗通道圖像去霧與機器學習中的K-means聚類分析算法相結合的去霧算法,用暗原色先驗算法擬合估計透射率,進而用K—means聚類分析算法進行分類,估算出大氣光強,更好的還原了圖像顏色與能見度,對于圖像的去霧產生了良好的實驗效果,得到的結論如下:經過大量的實驗觀察:在無霧圖像中,每個局部區域都極有可能會產生陰影,無論是純色目標還是黑色目標。利用本文提到的算法對透射率優化時,會使時間復雜度變小,算法的運算效率更高。當非天空區域有大量的白色物體時,此時,天空區域便與這些白色物體難以區分,會造成大氣光強度改變,使圖像失真。在本文經過聚類分析算法處理后可以避免這種情況的發生,得到更好的去霧效果[5-9]。