陳偉 賀元愷 李昭慧 郭明香 鄭佳雯 陶智慧
摘? 要: 針對(duì)暗原色先驗(yàn)圖像去霧算法運(yùn)行時(shí)間長(zhǎng),天空區(qū)域分割耗時(shí),復(fù)原圖像中存在方塊效應(yīng)以及整體偏暗等缺點(diǎn),提出一種改進(jìn)的實(shí)時(shí)圖像去霧暗原色先驗(yàn)算法。在暗通道求取時(shí),使用快速最小值濾波,加快傳統(tǒng)暗通道求取最小值排序的時(shí)間;在大氣光求取時(shí),使用像素值限定的方法快速排除天空區(qū)域,使用暗通道圖像剩余最亮部分對(duì)應(yīng)原圖像像素值的均值,有效避免原算法中求取大氣光值過(guò)大導(dǎo)致復(fù)原圖像失真的現(xiàn)象;在透射率的優(yōu)化時(shí),使用Sobel邊緣檢測(cè)與求取圖像二階導(dǎo)數(shù)圖像,得到精細(xì)的透射率,改善了細(xì)化透射率的時(shí)間復(fù)雜度;對(duì)最終圖像采取伽碼變換,提高圖像亮度。實(shí)驗(yàn)結(jié)果表明,與原暗通道先驗(yàn)算法相比,此算法有效提高了算法的實(shí)時(shí)性。
關(guān)鍵詞: 暗原色先驗(yàn); 圖像去霧; 算法改進(jìn); 透射率改善; 最小值排序; 仿真分析
中圖分類號(hào): TN911.73?34? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A? ? ? ? ? ? ? ? ? ? ? 文章編號(hào): 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? 引? 言
工業(yè)化生產(chǎn)造成了部分城市霧霾現(xiàn)象越來(lái)越嚴(yán)重,給生活和生產(chǎn)造成了很大影響?;趫D像復(fù)原的去霧方法[1?4]是從霧天圖像產(chǎn)生的本質(zhì)出發(fā),建立霧天退化數(shù)學(xué)模型,通過(guò)圖像去霧領(lǐng)域的假設(shè)參數(shù)來(lái)模擬霧天圖像成像,以此為基礎(chǔ),推導(dǎo)出霧天復(fù)原圖像的計(jì)算公式。何凱明提出基于暗原色的圖像先驗(yàn)去霧方法,該方法在霧天物理成像的模型上,加入了先驗(yàn)理論,但是該方法存在著運(yùn)行時(shí)間長(zhǎng),天空區(qū)域難分割,復(fù)原圖像中存在方塊效應(yīng),圖像整體偏暗等不足[5?6]。Sun等提出一種局部大氣光估計(jì)方法[7],這種方法可以改善暗通道先驗(yàn)算法中由于全局大氣光值選取不足而導(dǎo)致復(fù)原圖像色彩失真的問(wèn)題。惠霄霄等提出了四分法求取有霧圖像的大氣光值,使求得的大氣光更接近真實(shí)值,求取時(shí)間長(zhǎng),不利于實(shí)時(shí)性[8]。代睛睛等采用全局搜索的方法估計(jì)大氣光的偏振度,最后根據(jù)大氣散射模型恢復(fù)出清晰目標(biāo)圖像,仍需要大量時(shí)間,不利于實(shí)時(shí)圖像處理[9]。
為了達(dá)到實(shí)時(shí)圖像去霧硬件系統(tǒng)的實(shí)現(xiàn),本文提出一種基于暗原色先驗(yàn)算法的改進(jìn)實(shí)時(shí)圖像去霧算法。首先,在暗通道的求取過(guò)程中使用快速最小值濾波降低了算法的運(yùn)行時(shí)間。在求解大氣光時(shí),使用像素值限定的方法快速排除天空區(qū)域,然后選用了暗通道圖像中最亮部分對(duì)應(yīng)原圖像中的圖像像素均值,增加了大氣光值的準(zhǔn)確度。其次,在優(yōu)化透射率時(shí),使用了邊緣檢測(cè)后,對(duì)邊緣檢測(cè)結(jié)果進(jìn)行了一階導(dǎo)數(shù),求取了塊狀效應(yīng)明顯的區(qū)域進(jìn)行導(dǎo)向?yàn)V波,有效地去除了因暗通道圖引起的塊狀效應(yīng)。最后,對(duì)復(fù)原圖像使用伽碼變換提高了圖像亮度。結(jié)果表明:改進(jìn)后的算法,極大地減少了程序運(yùn)行時(shí)間,提高了實(shí)時(shí)性。
1? 暗原色先驗(yàn)原理
暗原色先驗(yàn)原理證明在非天空的圖像區(qū)域內(nèi),總有一些像素點(diǎn)有至少一個(gè)顏色通道具有接近零的像素值。對(duì)于任意輸入的一幅圖像[I(x,y)],它的暗通道圖像表達(dá)式為:
式中:[Ω]是輸入圖像的某一區(qū)域;[[r,g,b]]表示的是每個(gè)像素的三個(gè)顏色通道。先求出每個(gè)像素R,G,B通道中的最小值,存入一幅和原始圖像大小相同的灰度圖中,然后再對(duì)這幅灰度圖進(jìn)行最小值濾波,暗通道理論指出[I(dark)(x,y)]趨于0。
霧天圖像成像數(shù)學(xué)模型常用下面的公式表示:
式中:[I(x)]為現(xiàn)有的圖像(待去霧的圖像);[J(x)]為要恢復(fù)的無(wú)霧的圖像;A為全球大氣光成分;[t(x)]為透射率?,F(xiàn)在的已知條件就是[I(x)],要求目標(biāo)值[J(x)],顯然,這是個(gè)有無(wú)數(shù)解的方程,因此,需要先驗(yàn)。暗通道理論恰好提供了所需的先驗(yàn)理論。
對(duì)式(2)進(jìn)行變形:
對(duì)式(2)兩邊求取最小值濾波2次:
式中:C表示R,G,B三個(gè)通道;J為待求的無(wú)霧的圖像。根據(jù)前述的暗原色先驗(yàn)理論有:
所以求解出的透射率為:
式(6)為預(yù)估計(jì)的粗透射率,它存在許多缺點(diǎn),如由最小值濾波留下來(lái)的塊狀效應(yīng)?,F(xiàn)實(shí)生活中,正常觀察遠(yuǎn)方的物體還是能感覺(jué)到霧,遠(yuǎn)方的霧使人感覺(jué)到景深,因此,需要保留一定程度的霧,通過(guò)在式(6)中引入一個(gè)在[0,1] 之間的因子表示,如下:
仿真結(jié)果表明,一般值取為0.95左右時(shí)復(fù)原效果最好。
2? 改進(jìn)算法
本文算法流程框圖如圖1所示。
2.1? 快速最小值濾波
在對(duì)一個(gè)矩陣進(jìn)行最小值濾波時(shí),最簡(jiǎn)單的思路是對(duì)一個(gè)點(diǎn)的鄰域直接通過(guò)比較得最小值,這樣,計(jì)算的復(fù)雜度與取的窗口的尺寸有絕對(duì)的關(guān)系。當(dāng)選取的濾波核過(guò)大時(shí),需要進(jìn)行大量的排序,這一過(guò)程非常耗時(shí)。Herk等提出了一種快速最大最小值濾波算法[10]??焖僮钚≈禐V波的算法思想是分別對(duì)行和列進(jìn)行排序操作,行和列的操作,以行操作為例:
將一行分為多個(gè)大小為d的分段,比如取d=5,定義兩個(gè)數(shù)組為g和h,對(duì)每一個(gè)分段進(jìn)行處理,其中每個(gè)位置存放的是其后到分段末所在直線段上的點(diǎn)中的最大值。如此處理得到g和h兩個(gè)數(shù)組,g是行操作結(jié)束保存的矩陣,h是列操作結(jié)束后保存的矩陣,這樣每次計(jì)算時(shí)都能直接選取h和g中的點(diǎn)進(jìn)行比較得到最后結(jié)果。減少了常規(guī)最小值濾波對(duì)于每一個(gè)濾波核內(nèi)的數(shù)據(jù)進(jìn)行大量排序所耗費(fèi)的時(shí)間。
分別用原算法和快速算法進(jìn)行仿真,結(jié)果如圖2~圖4所示。圖中采用的最小值濾波核為5×5。如果圖像里面充滿霧霾,暗通道圖像如圖4所示。
圖2和圖3中的圖a)~圖c)分別是原圖像、暗通道圖像和快速最小值濾波得到的暗通道圖像??梢钥吹綗o(wú)霧圖像的暗通道圖像像素值整體趨近于0??梢钥吹接徐F霾的圖像的暗通道圖像像素值并不是趨于0。有霧圖像使得暗通道原理失效,因此會(huì)有許多遠(yuǎn)遠(yuǎn)大于0的像素。
算法運(yùn)行時(shí)間對(duì)比如表1所示。
從表1看出,使用快速最小值濾波可以快速降低時(shí)間復(fù)雜度,在用時(shí)最短的情況下,仍能達(dá)到理想的結(jié)果,保證了算法的實(shí)時(shí)性與有效性。
2.2? 求取大氣光值
首先需要求取實(shí)際的大氣光值,可以使用輸入圖像的暗通道圖獲取該值。原算法[6]從原始暗通道圖中按照亮度的大小排序選取最亮的0.1%的像素。在這些位置中,從原始有霧圖像[I(x,y)]中尋找對(duì)應(yīng)的具有最高亮度的點(diǎn)的值,作為大氣光值。原算法沒(méi)有考慮到戶外含有天空氣區(qū)域的圖像很普遍,因此存在適應(yīng)性的問(wèn)題。惠霄霄等給大氣光設(shè)定一個(gè)最大的閾值[8],改善了大氣光過(guò)大導(dǎo)致圖像失真,但這種方法不能適應(yīng)于亮度較高的圖像。
由于一幅圖像中,不一定大氣光是最亮的,可能會(huì)有別的物體像素點(diǎn)亮度是最高點(diǎn),比如天空區(qū)域就是亮度很高的點(diǎn),并且暗原色先驗(yàn)的理論對(duì)天空區(qū)域的圖像是失效的。本文使用像素值限定的方法進(jìn)行排除大氣光區(qū)域,主要思想就是在進(jìn)行最小值濾波時(shí)對(duì)每一個(gè)濾波核內(nèi)的暗通道圖像像素值相加,并設(shè)定一個(gè)閾值,若大于這個(gè)閾值就認(rèn)為該區(qū)域?yàn)榇髿夤鈪^(qū)域或者個(gè)別亮度高的幾點(diǎn),在求取大氣光時(shí)排除此區(qū)域。經(jīng)過(guò)大量仿真,發(fā)現(xiàn)濾波核為15×15并且閾值設(shè)置為49 500時(shí),對(duì)絕大部分含有大氣光的圖像排除天空區(qū)域干擾效果最好,因此本文最終將上述值作為固定值進(jìn)行仿真設(shè)計(jì)。
本文的大氣光值取暗通道剩余最亮部分對(duì)應(yīng)的原始圖像區(qū)域的像素平均值,以防止由于大氣光過(guò)大而導(dǎo)致復(fù)原圖像的天空或者圖像本身比較亮的區(qū)域色彩失真,如圖5所示。
由圖5b)可以看到,原算法復(fù)原圖像之后,圖像中的天空區(qū)域已經(jīng)出現(xiàn)了圖像失真,變成了藍(lán)色。從圖5c)可以看到,改進(jìn)后的算法改善了原算法帶來(lái)的圖像色彩失真情況。但是此復(fù)原方法仍不理想,在圖像的邊緣區(qū)域會(huì)出現(xiàn)一些模糊和方塊效應(yīng),這都是由于最小值濾波的濾波核所引起計(jì)算的透射率不夠平滑造成的,因此需要獲得更精細(xì)的透射率。
2.3? 細(xì)化透射率
本文從細(xì)化透射率的本質(zhì)出發(fā),發(fā)現(xiàn)粗透射率圖像中的塊狀效應(yīng)明顯的區(qū)域基本發(fā)生在圖像中出現(xiàn)邊緣變化明顯的區(qū)域,也就是圖像的二階導(dǎo)數(shù)圖像大于0的區(qū)域,因此本文使用Sobel邊緣檢測(cè)進(jìn)行邊緣檢測(cè),再求出圖像二階導(dǎo)數(shù),為了提高算法的運(yùn)行速度,本文對(duì)圖像沒(méi)有塊狀效應(yīng)和平滑的區(qū)域不做處理,只針對(duì)二階導(dǎo)數(shù)圖像大于0的領(lǐng)域進(jìn)行導(dǎo)向?yàn)V波,仿真結(jié)果表明,此方法極大地改善了運(yùn)行時(shí)間,仿真效果如圖6所示。