陳偉 賀元愷 李昭慧 郭明香 鄭佳雯 陶智慧



摘? 要: 針對暗原色先驗圖像去霧算法運行時間長,天空區域分割耗時,復原圖像中存在方塊效應以及整體偏暗等缺點,提出一種改進的實時圖像去霧暗原色先驗算法。在暗通道求取時,使用快速最小值濾波,加快傳統暗通道求取最小值排序的時間;在大氣光求取時,使用像素值限定的方法快速排除天空區域,使用暗通道圖像剩余最亮部分對應原圖像像素值的均值,有效避免原算法中求取大氣光值過大導致復原圖像失真的現象;在透射率的優化時,使用Sobel邊緣檢測與求取圖像二階導數圖像,得到精細的透射率,改善了細化透射率的時間復雜度;對最終圖像采取伽碼變換,提高圖像亮度。實驗結果表明,與原暗通道先驗算法相比,此算法有效提高了算法的實時性。
關鍵詞: 暗原色先驗; 圖像去霧; 算法改進; 透射率改善; 最小值排序; 仿真分析
中圖分類號: TN911.73?34? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼: A? ? ? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2020)06?0163?05
A dark channel prior algorithm for improving real?time image dehazing
CHEN Wei, HE Yuankai, LI Zhaohui, GUO Mingxiang, ZHENG Jiawen, TAO Zhihui
(School of Communication and Information Engineering, Xian University of Science and Technology, Xian 710054, China)
Abstract: In allusion to the disadvantages of the dark channel prior image defogging algorithm, such as long running time, time?consumption of sky region segmentation, and blocking effect and whole partial dark in the restored image, an improved real?time image defogging dark channel prior algorithm is proposed. In the dark channel calculation, the fast minimum filtering is used to speed up the minimum sorting of the traditional dark channel . In the atmospheric light extraction, the method of pixel value limit is used to quickly exclude the sky area, and make the remaining brightest part of the dark channel image correspond to the mean value of the original image pixel value, which can effectively avoid the restored image distortion caused by the too large atmospheric light value got by the original algorithm. In the optimization of transmissivity, the Sobel edge detection and second derivative image are used to obtain the refined transmissivity, which improves the time complexity of refining transmissivity. The Gamma conversion is applied to the final image to improve the brightness of the image. The experimental results show that in comparison with the original dark channel prior algorithm, this algorithm can effectively improve its real?time performance.
Keywords: dark channel prior; image defogging; algorithm improvement; transmissivity improvement; minimum sorting; simulation analysis
0? 引? 言
工業化生產造成了部分城市霧霾現象越來越嚴重,給生活和生產造成了很大影響?;趫D像復原的去霧方法[1?4]是從霧天圖像產生的本質出發,建立霧天退化數學模型,通過圖像去霧領域的假設參數來模擬霧天圖像成像,以此為基礎,推導出霧天復原圖像的計算公式。何凱明提出基于暗原色的圖像先驗去霧方法,該方法在霧天物理成像的模型上,加入了先驗理論,但是該方法存在著運行時間長,天空區域難分割,復原圖像中存在方塊效應,圖像整體偏暗等不足[5?6]。Sun等提出一種局部大氣光估計方法[7],這種方法可以改善暗通道先驗算法中由于全局大氣光值選取不足而導致復原圖像色彩失真的問題?;菹鱿龅忍岢隽怂姆址ㄇ笕∮徐F圖像的大氣光值,使求得的大氣光更接近真實值,求取時間長,不利于實時性[8]。代睛睛等采用全局搜索的方法估計大氣光的偏振度,最后根據大氣散射模型恢復出清晰目標圖像,仍需要大量時間,不利于實時圖像處理[9]。
為了達到實時圖像去霧硬件系統的實現,本文提出一種基于暗原色先驗算法的改進實時圖像去霧算法。首先,在暗通道的求取過程中使用快速最小值濾波降低了算法的運行時間。在求解大氣光時,使用像素值限定的方法快速排除天空區域,然后選用了暗通道圖像中最亮部分對應原圖像中的圖像像素均值,增加了大氣光值的準確度。其次,在優化透射率時,使用了邊緣檢測后,對邊緣檢測結果進行了一階導數,求取了塊狀效應明顯的區域進行導向濾波,有效地去除了因暗通道圖引起的塊狀效應。最后,對復原圖像使用伽碼變換提高了圖像亮度。結果表明:改進后的算法,極大地減少了程序運行時間,提高了實時性。
1? 暗原色先驗原理
暗原色先驗原理證明在非天空的圖像區域內,總有一些像素點有至少一個顏色通道具有接近零的像素值。對于任意輸入的一幅圖像[I(x,y)],它的暗通道圖像表達式為:
式中:[Ω]是輸入圖像的某一區域;[[r,g,b]]表示的是每個像素的三個顏色通道。先求出每個像素R,G,B通道中的最小值,存入一幅和原始圖像大小相同的灰度圖中,然后再對這幅灰度圖進行最小值濾波,暗通道理論指出[I(dark)(x,y)]趨于0。
霧天圖像成像數學模型常用下面的公式表示:
式中:[I(x)]為現有的圖像(待去霧的圖像);[J(x)]為要恢復的無霧的圖像;A為全球大氣光成分;[t(x)]為透射率?,F在的已知條件就是[I(x)],要求目標值[J(x)],顯然,這是個有無數解的方程,因此,需要先驗。暗通道理論恰好提供了所需的先驗理論。
對式(2)進行變形:
對式(2)兩邊求取最小值濾波2次:
式中:C表示R,G,B三個通道;J為待求的無霧的圖像。根據前述的暗原色先驗理論有:
所以求解出的透射率為:
式(6)為預估計的粗透射率,它存在許多缺點,如由最小值濾波留下來的塊狀效應?,F實生活中,正常觀察遠方的物體還是能感覺到霧,遠方的霧使人感覺到景深,因此,需要保留一定程度的霧,通過在式(6)中引入一個在[0,1] 之間的因子表示,如下:
仿真結果表明,一般值取為0.95左右時復原效果最好。
2? 改進算法
本文算法流程框圖如圖1所示。
2.1? 快速最小值濾波
在對一個矩陣進行最小值濾波時,最簡單的思路是對一個點的鄰域直接通過比較得最小值,這樣,計算的復雜度與取的窗口的尺寸有絕對的關系。當選取的濾波核過大時,需要進行大量的排序,這一過程非常耗時。Herk等提出了一種快速最大最小值濾波算法[10]。快速最小值濾波的算法思想是分別對行和列進行排序操作,行和列的操作,以行操作為例:
將一行分為多個大小為d的分段,比如取d=5,定義兩個數組為g和h,對每一個分段進行處理,其中每個位置存放的是其后到分段末所在直線段上的點中的最大值。如此處理得到g和h兩個數組,g是行操作結束保存的矩陣,h是列操作結束后保存的矩陣,這樣每次計算時都能直接選取h和g中的點進行比較得到最后結果。減少了常規最小值濾波對于每一個濾波核內的數據進行大量排序所耗費的時間。
分別用原算法和快速算法進行仿真,結果如圖2~圖4所示。圖中采用的最小值濾波核為5×5。如果圖像里面充滿霧霾,暗通道圖像如圖4所示。
圖2和圖3中的圖a)~圖c)分別是原圖像、暗通道圖像和快速最小值濾波得到的暗通道圖像。可以看到無霧圖像的暗通道圖像像素值整體趨近于0。可以看到有霧霾的圖像的暗通道圖像像素值并不是趨于0。有霧圖像使得暗通道原理失效,因此會有許多遠遠大于0的像素。
算法運行時間對比如表1所示。
從表1看出,使用快速最小值濾波可以快速降低時間復雜度,在用時最短的情況下,仍能達到理想的結果,保證了算法的實時性與有效性。
2.2? 求取大氣光值
首先需要求取實際的大氣光值,可以使用輸入圖像的暗通道圖獲取該值。原算法[6]從原始暗通道圖中按照亮度的大小排序選取最亮的0.1%的像素。在這些位置中,從原始有霧圖像[I(x,y)]中尋找對應的具有最高亮度的點的值,作為大氣光值。原算法沒有考慮到戶外含有天空氣區域的圖像很普遍,因此存在適應性的問題?;菹鱿龅冉o大氣光設定一個最大的閾值[8],改善了大氣光過大導致圖像失真,但這種方法不能適應于亮度較高的圖像。
由于一幅圖像中,不一定大氣光是最亮的,可能會有別的物體像素點亮度是最高點,比如天空區域就是亮度很高的點,并且暗原色先驗的理論對天空區域的圖像是失效的。本文使用像素值限定的方法進行排除大氣光區域,主要思想就是在進行最小值濾波時對每一個濾波核內的暗通道圖像像素值相加,并設定一個閾值,若大于這個閾值就認為該區域為大氣光區域或者個別亮度高的幾點,在求取大氣光時排除此區域。經過大量仿真,發現濾波核為15×15并且閾值設置為49 500時,對絕大部分含有大氣光的圖像排除天空區域干擾效果最好,因此本文最終將上述值作為固定值進行仿真設計。
本文的大氣光值取暗通道剩余最亮部分對應的原始圖像區域的像素平均值,以防止由于大氣光過大而導致復原圖像的天空或者圖像本身比較亮的區域色彩失真,如圖5所示。
由圖5b)可以看到,原算法復原圖像之后,圖像中的天空區域已經出現了圖像失真,變成了藍色。從圖5c)可以看到,改進后的算法改善了原算法帶來的圖像色彩失真情況。但是此復原方法仍不理想,在圖像的邊緣區域會出現一些模糊和方塊效應,這都是由于最小值濾波的濾波核所引起計算的透射率不夠平滑造成的,因此需要獲得更精細的透射率。
2.3? 細化透射率
本文從細化透射率的本質出發,發現粗透射率圖像中的塊狀效應明顯的區域基本發生在圖像中出現邊緣變化明顯的區域,也就是圖像的二階導數圖像大于0的區域,因此本文使用Sobel邊緣檢測進行邊緣檢測,再求出圖像二階導數,為了提高算法的運行速度,本文對圖像沒有塊狀效應和平滑的區域不做處理,只針對二階導數圖像大于0的領域進行導向濾波,仿真結果表明,此方法極大地改善了運行時間,仿真效果如圖6所示。