容杰雄 張 鴻
1(武漢科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院 湖北 武漢 430065) 2(武漢科技大學(xué)智能信息處理與實時工業(yè)系統(tǒng)湖北省重點實驗室 湖北 武漢 430065)
在霧霾天氣下,由于空氣中存在的大量懸浮顆粒對光線的散射作用,導(dǎo)致了智能攝像設(shè)備采集到的圖像的對比度以及清晰度較低,極大地降低了圖像的質(zhì)量,同時也影響到后續(xù)的視頻識別或目標(biāo)檢測工作。因此,圖像去霧技術(shù)具有非常重要的研究意義。
傳統(tǒng)的圖像去霧算法大致可分為兩類,一類是基于圖像增強的算法;另一類是基于物理建模的算法[1]。較為經(jīng)典的圖像增強算法包括直方圖均衡算法[2]、小波變換[3]、伽馬變換[4]、帶有顏色恢復(fù)的多尺度Retinex算法[5](MSRCR)、保持色度的多尺度Retinex算法[6](MSRCP),MSRCR是在多尺度Retinex的基礎(chǔ)上,通過使用色彩恢復(fù)函數(shù)實現(xiàn)了色彩還原的功能,但是它需要合理地控制色彩恢復(fù)的增益和偏移值。而MSRCP是將圖像由RGB空間轉(zhuǎn)到HSI空間,對I通道進行多尺度Retinex增強,而后根據(jù)原RGB空間的比例計算出HSI空間其他兩個通道的值,最后再將圖像轉(zhuǎn)回到RGB空間。
上述算法由于沒有考慮到霧天成像的原理,其增強的圖像容易產(chǎn)生細(xì)節(jié)缺失的問題。一種更為直接的方法是對霧天成像原理進行建模。文獻[7]中從大量無霧圖像的統(tǒng)計中發(fā)現(xiàn)暗通道的先驗規(guī)律,然后借助該規(guī)律以及大氣散射模型對有霧圖像進行了去霧處理。然而,該算法對透射率的估計并不精確,并不適用于含有天空區(qū)域的圖像,因為在暗通道圖中,天空區(qū)域的灰度值并不是趨近于零的。同時,該算法在大氣光值的預(yù)估上也存在著誤差,容易受到圖像中白色物體的干擾,造成色彩失真問題的出現(xiàn)。
為此,學(xué)者們提出了許多改進策略。文獻[8]采用雙邊濾波方法對天空區(qū)域的透射率進行預(yù)估,該方法能夠有效地提高含有天空區(qū)域的有霧圖像的對比度,但是雙邊濾波在處理高像素圖像時效率較低;文獻[9]采用引導(dǎo)濾波替代雙邊濾波,盡管引導(dǎo)濾波和雙邊濾波都具有很強的邊緣保護特性,但是引導(dǎo)濾波的時間復(fù)雜度與濾波窗口大小無關(guān),相比而言引導(dǎo)濾波更具有優(yōu)勢;文獻[10]在最小值濾波前加入中值濾波補償暗通道,并選取補償后的暗通道的最大值作為大氣光值的預(yù)估值,但是該算法得到的暗通道仍然呈塊狀分布;文獻[11]利用四叉樹搜索算法預(yù)估大氣光的值,但是該算法應(yīng)用于天空區(qū)域較小的圖像時預(yù)估的大氣光值偏小,進而降低了圖像的去霧效果。
針對上述論文存在的不足,本文提出一種基于暗通道補償和透射率修正的圖像去霧算法,針對傳統(tǒng)暗通道去霧算法在天空區(qū)域出現(xiàn)的色彩失真問題,本文使用均值濾波對暗通道進行補償,利用獲得的補償暗通道對大氣光值的預(yù)估方法進行了優(yōu)化;針對傳統(tǒng)暗通道去霧算法出現(xiàn)的細(xì)節(jié)缺失問題,本文根據(jù)像素點到大氣光點距離的遠近修正了初始透射率的值,并利用快速引導(dǎo)濾波對圖像的透射率進行了細(xì)化。實驗結(jié)果表明,本文算法處理后的圖像色彩保真度較高,亮暗分布合理,同時算法的運行時間較短,符合實際視頻識別的要求。
文獻[12]提出了著名的大氣散射模型,它被廣泛地運用于計算機視覺領(lǐng)域之中,其公式可以表示為:
I(x)=J(x)t(x)+A(1-t(x))
(1)
式中:x表示單個像素的坐標(biāo);I(x)表示待去霧圖像;J(x)表示去霧后的圖像;A表示全球大氣光成分;t(x)表示圖像的透射率。圖像去霧的核心就是通過合理地預(yù)估出待去霧圖像的大氣光以及透射率的值,實現(xiàn)有霧圖像的去霧化。
暗通道先驗是He等[7]發(fā)現(xiàn)的一種先驗規(guī)律,他們從大量的無霧圖像中發(fā)現(xiàn),一幅圖像的非天空區(qū)域的三個通道中至少有一個通道的灰度值較低,且趨近于零,其公式可以表示為:
(2)
式中:Jdark表示去霧圖像的暗通道圖;Ω(x)表示最小值濾波的濾波窗口;c表示彩色圖像的RGB三個通道;y表示單個像素的坐標(biāo);Jc(y)是去霧圖像J(y)在RGB三個顏色通道中的分量。
假設(shè)大氣光值是一個已知的常量,將式(1)兩邊同時除以RGB通道下的大氣光值A(chǔ)c,得到式(3)。
(3)
式中:Ic(x)和Jc(x)分別表示RGB通道下的待去霧圖像以及去霧后的圖像。
(4)
式中:Ic(y)和Jc(y)分別是I(y)和J(y)在RGB三個顏色通道中的分量。
根據(jù)暗通道的先驗條件,可將式(3)變形為式(5),求得圖像的透射率為:
(5)
式中:λ是一個調(diào)節(jié)因子,用于在景深處保留少量的霧,其目的是為了保持去霧圖像的真實性。
最后將上述得到的大氣光值以及圖像的透射率代入到式(1)中,反解求得去霧圖像的表達式為:
(6)
式中:t0是一個透射率的下限閾值,其目的是防止去霧圖像J(x)的值偏大導(dǎo)致圖像過曝。
傳統(tǒng)的暗通道去霧算法[7]在有霧圖像轉(zhuǎn)換為暗通道圖的過程中,使用的是最小值濾波,將其直接作用于有霧圖像的RGB通道的最小值圖像上,如式(4)所示,這一方法在大多數(shù)圖像上都能取得不錯的效果,但是,當(dāng)兩個鄰近像素點之間的像素值差異較大的時候,直接使用最小值濾波會減少像素值大的那一像素點的灰度值,導(dǎo)致透射率的預(yù)估值偏大,進而在圖像中產(chǎn)生光暈的問題。
為了解決該問題,文獻[10]采用中值濾波作用于有霧圖像各通道下的最小值圖像,然后再通過一個最小值濾波來補償暗通道,文獻[13]則是直接采用中值濾波替代最小值濾波,在比較了不同的濾波方法后,本文提出一種新的暗通道補償方法,通過使用均值濾波取代最小值濾波,對有霧圖像各通道的最小值圖像進行暗通道補償,其目的是為了增大濾波窗口內(nèi)的灰度值,減少透射率預(yù)估時產(chǎn)生的誤差,對應(yīng)的表達式如下:
(7)
式中:Idark(x)表示原始圖像的暗通道圖;x和y表示單個像素的坐標(biāo);Ω1表示均值濾波的窗口;c表示彩色圖像的三個通道;min()表示獲得各通道下像素的最小值;mean()表示均值濾波。
圖1展示了原始的有霧圖像、文獻[7,10,13]和本文方法的暗通道圖。從圖1(b)中可以看出直接將有霧圖像各通道的最小值圖像通過最小值濾波后,暗通道呈塊狀分布,在計算局部區(qū)域的透射率時容易產(chǎn)生較大的誤差,而圖1(c)中加入了中值濾波后,暗通道變得更加平滑,但是仍然無法分辨出圖像中的細(xì)節(jié),因此文獻[13]舍棄了原有的最小值濾波,直接使用中值濾波補償暗通道,如圖1(d)所示,圖像的細(xì)節(jié)部分得到了明顯的改善,而本文使用的均值濾波,相對于中值濾波而言,圖像的細(xì)節(jié)部分更為清晰,如圖1(e)所示。圖2展示了上述暗通道的細(xì)節(jié)放大圖像。
(a)原始圖像 (b)文獻[7]暗通道 (c)文獻[10]暗通道
(a)文獻[7]暗通道細(xì)節(jié) (b)文獻[10]暗通道細(xì)節(jié)
(d)文獻[13]暗通道 (e)本文暗通道圖1 不同算法的暗通道
(c)文獻[13]暗通道細(xì)節(jié) (d)本文暗通道細(xì)節(jié)圖2 不同算法的暗通道細(xì)節(jié)放大圖
傳統(tǒng)的暗通道去霧算法首先篩選出暗通道圖亮度最大的前0.1%個像素點,然后在原始圖像的相同像素點中選取最大的像素點的值作為大氣光的預(yù)估值。這一方法適用于不含有天空區(qū)域的圖像,但是運用到包含天空區(qū)域或者白色物體的有霧圖像時,則會錯誤地預(yù)估大氣光的值。
為了解決該問題,文獻[11]利用四叉樹搜索算法預(yù)估大氣光的值,但是該算法并不適用于天空區(qū)域較小的圖像,其預(yù)估的大氣光值偏小,導(dǎo)致圖像的去霧效果不佳。因此,本文從2.1節(jié)獲得的補償暗通道中選取前0.1%個像素點的平均值替代最大值進行大氣光值的預(yù)估,其公式可表示為:
A=mean(Idark(x))
(8)
同時,本文還增設(shè)了一個參數(shù)maxvalue,表示初始的最大大氣光值,其目的是防止計算出的大氣光值的取值接近于255(白色)而產(chǎn)生色彩失真的問題,這里的初始最大大氣光值相當(dāng)于是大氣光值最終取值的一個判定條件,如果大氣光值的取值大于初始最大大氣光值,那么就選取初始最大大氣光值作為最終的大氣光值,否則就選取計算得出的大氣光值作為最終的大氣光值。本文在實驗中發(fā)現(xiàn)初始最大大氣光值取值為240時,圖像的去霧效果較好。
結(jié)合式(8)中的大氣光值的計算方法,可將本文提出的大氣光值預(yù)估的公式表示為:
(9)
式中:A′表示優(yōu)化后的大氣光值。
2.3.1 初始透射率修正
經(jīng)過2.1節(jié)的暗通道補償后,可將式(4)中的透射率的計算公式修改為:
(10)
由于天空區(qū)域的灰度值并不等于0,也就是說,式(2)中暗通道等于0的條件不成立,因此需要對初始透射率進行修正。文獻[14]根據(jù)邊界約束理論將暗通道設(shè)置成一個非零的向量Jmin,并在實驗中發(fā)現(xiàn)Jmin的取值范圍在0.1到0.2之間時,復(fù)原后的圖像去霧效果較好,因此直接選取該范圍的平均值來修正初始的透射率,即Jmin=(0.15,0.15,0.15),但是其后續(xù)處理需要使用到多正則化約束的變分模型來優(yōu)化透射率,計算量十分大。
因此,本文引入了一個參數(shù)d(x),用來表示像素點到大氣光點的距離,其公式為:
(11)
式中:i表示彩色圖像的RGB通道;xi表示像素點在i通道的分量;A′表示優(yōu)化后的大氣光值。
當(dāng)像素點和大氣光點的距離越小時,表示像素點與大氣光點離得越近,進而說明像素點的值與大氣光值越接近,在進行透射率的預(yù)估時將會產(chǎn)生誤差,需要進一步修正,而像素點與大氣光點的距離較大時,透射率的預(yù)估值與實際值相差不大,無須修正。因此,本文設(shè)置了一個閾值d0,用來衡量需要修正的像素的范圍。在式(5)的基礎(chǔ)上添加一個修正項,于是初始透射率的修正公式就可以表示為:
進行實驗室生化試驗,發(fā)現(xiàn)該菌具有發(fā)酵葡萄糖、蔗糖、麥芽糖等功能,不能發(fā)酵阿拉伯糖、甘露醇,在對其進行MR、VP試驗后,發(fā)現(xiàn)呈陰性,能使明膠液化,但是不具備運動能力,不能對尿毒酶進行水解。
(12)
式中:λ是一個調(diào)節(jié)因子,用于在景深處保留少量的霧,取值為0.95;α是一個修正系數(shù),取值為1。
2.3.2 快速引導(dǎo)濾波細(xì)化透射率
根據(jù)2.2節(jié)得到的大氣光值A(chǔ)′以及修正后的初始透射率,使用式(12)即可計算出圖像的透射率,然而,這種方法得到的透射率是相對粗糙的,其細(xì)節(jié)部分表現(xiàn)得并不清晰直觀。因此,文獻[9]使用引導(dǎo)濾波對圖像的透射率做進一步細(xì)化,引導(dǎo)濾波是一種邊緣保護的濾波方法,通過使用一幅引導(dǎo)圖像I對輸入圖像p進行濾波,使得輸出圖像q與輸入圖像p的差異盡可能小,同時,輸出圖像與引導(dǎo)圖像的紋理特征也基本相似,以達到保護邊緣信息的目的。
引導(dǎo)濾波的線性模型可以表示為:
qi=akIi+bk?i∈wk
(13)
式中:qi為引導(dǎo)濾波的輸出圖像;Ii為引導(dǎo)圖像;ak和bk為線性函數(shù)的常數(shù)項;wk是以k為像素中心點;半徑為r的濾波窗口。
為了使輸入圖像p和輸出圖像q之間的差異達到最小,可將它們的代價函數(shù)表示為:
(14)
式中:ε是一個正則化因子,其目的是避免ak取值過大。
通過最小化代價函數(shù),即可求出細(xì)化后的透射率圖像。
由于引導(dǎo)濾波使用的引導(dǎo)圖一般是有霧圖像的灰度圖,其尺寸與原始圖像的尺寸一致,當(dāng)原始有霧圖像的尺寸較大的時候,執(zhí)行引導(dǎo)濾波所消耗的時間也隨之增大,而在計算圖像的透射率時并不需要很高的分辨率,因此,本文在此基礎(chǔ)上提出一種快速引導(dǎo)濾波算法,其步驟可表示為:
步驟1將原始有霧圖像縮小為原來的0.25倍,得到縮小后的圖像。
步驟2對縮小后的圖像進行暗通道以及透射率的計算,得到小圖的粗透射率圖。
步驟3使用雙線性插值法對小圖的粗透射率圖進行插值,還原為原始圖像的尺寸,得到原始圖像的粗透射率圖。
步驟4對原始圖像的粗透射率圖進行引導(dǎo)濾波,得到細(xì)化后的透射率圖。
實驗中發(fā)現(xiàn)多幅大小為768×1 024的圖像經(jīng)過快速引導(dǎo)濾波處理后所消耗的時間約為普通引導(dǎo)濾波的一半,證明本文算法能夠有效地降低引導(dǎo)濾波的耗時。
圖3展示了He等[7]提出的算法以及本文算法的透射率圖像,可以看出He等的算法的粗透射率圖存在塊狀現(xiàn)象,圖像十分模糊,而使用引導(dǎo)濾波細(xì)化透射率后,可以大致地看出樹葉以及草叢的分布情況,而本文算法的粗透射率圖展現(xiàn)了更多的細(xì)節(jié),從細(xì)透射率圖中能夠清晰地看出樹葉以及草叢的脈絡(luò)。
(a)He等的算法粗透射率圖 (b)He等的算法細(xì)透射率圖
(c)本文算法粗透射率圖 (d)本文算法細(xì)透射率圖圖3 He等的算法和本文算法的透射率圖比較
(15)
式中:t0是圖像透射率的一個下限閾值,取值為0.1。
本文算法流程如圖4所示。
圖4 本文算法流程
為了驗證本文算法的有效性,本文分別從主觀評價和客觀評價兩個角度對圖像去霧領(lǐng)域中較為典型的四幅有霧圖像進行了實驗。本實驗選取的參數(shù)如下:均值濾波的窗口尺寸Ω1=3,透射率的下限t0=0.1,引導(dǎo)濾波的半徑r=60,調(diào)整系數(shù)ε=0.000 1。
不同算法的去霧效果對比如圖5所示。算法均在Intel Core i7-6700HQ CPU @ 2.60 GHz、8 GB內(nèi)存的機器上采用MATLAB R2014a開發(fā)平臺實現(xiàn)。
圖5 不同算法的去霧效果比較
經(jīng)過對比度受限的自適應(yīng)直方圖均衡算法(CLAHE)處理后的圖像的清晰度得到了一定程度的提升,可以在圖像中獲得更多的細(xì)節(jié)信息,但是圖像整體偏向灰色,并不自然。較為明顯的是第三幅圖像,在經(jīng)過CLAHE算法處理后,可以清晰地看到天安門周圍(包含近景和遠景)樹木的紋理特征,但是天安門城樓這一建筑整體呈現(xiàn)灰色,十分暗淡。
經(jīng)過保持色度的多尺度Retinex算法(MSRCP)處理后的圖像的亮度得到了明顯的提升,可以獲得更多的細(xì)節(jié)信息,但是圖像遠景處的霧氣并沒有得到完全的消除。較為典型的是第一幅圖像,經(jīng)過MSRCP算法處理后,其亮度得到了提升,可以更清晰地看到圖像近景處樹葉的脈絡(luò),但是在樓房的墻面處仍然存在著殘留的霧氣,使得墻面呈現(xiàn)白色。
對于傳統(tǒng)的暗通道去霧算法(DCP),從第四幅圖像中可以看出該算法能夠去除圖像遠景處的霧氣,但是圖像亮度整體偏暗,圖像中的部分細(xì)節(jié)并不明顯,從第二幅圖像中可以看出該算法能夠突出圖像近景處的細(xì)節(jié),人物服飾的顏色以及門板的顏色更加真實,但是從第一幅圖像和第三幅圖像來看,該算法處理后的圖像天空區(qū)域的顏色是失真的,說明了傳統(tǒng)的暗通道去霧算法在預(yù)估大氣光值的方法上存在著誤差。
對于本文算法,從最后一列圖像中可以發(fā)現(xiàn),相比CLAHE算法,本文算法沒有偏色的問題,在顏色保真性上表現(xiàn)更好;相比MSRCP算法,本文算法的去霧效果更好,可以消除圖像遠景中殘留的霧氣;相比DCP算法,本文算法增強了圖像近景處的細(xì)節(jié),同時也解決了圖像在天空區(qū)域出現(xiàn)的顏色失真問題,經(jīng)過本文算法處理后的圖像更加真實,符合人眼觀察。
本文采用峰值信噪比(PSNR)[15]、結(jié)構(gòu)相似性(SSIM)[16]、運行時間作為評價圖像復(fù)原質(zhì)量的客觀指標(biāo)。二者都是基于原始圖像進行比對的,峰值信噪比的值越大,代表圖像的抗噪能力越強,而結(jié)構(gòu)相似性分別從亮度、對比度、結(jié)構(gòu)三個方面衡量了圖像的相似性,其值越大代表圖像的失真越小。峰值信噪比是由均方誤差推導(dǎo)而來,均方誤差對應(yīng)的公式如下:
(16)
式中:I(i,j)和K(i,j)表示兩個灰度圖像;m和n分別對應(yīng)著圖像的高和寬。
而峰值信噪比對應(yīng)的公式如下:
(17)
結(jié)構(gòu)相似性對應(yīng)的公式如下所示:
SSIM=[l(x,y)]α×[c(x,y)]β×[s(x,y)]γ
(18)
式中:l(x,y)、c(x,y)和s(x,y)分別反映了圖像的亮度、對比度、結(jié)構(gòu)信息;在實際運用中,一般將α、β、γ的值都設(shè)置為1。
表1展示了不同算法在峰值信噪比、結(jié)構(gòu)相似性、運行時間這三個客觀指標(biāo)下得到的結(jié)果,可以看出,本文算法的峰值信噪比以及結(jié)構(gòu)相似性較其余三個算法而言有一定程度的提升,說明經(jīng)過本文算法處理后的圖像的失真程度較小,能夠獲得高質(zhì)量的圖像。
表1 不同算法去霧效果的客觀比較
續(xù)表1
從算法的執(zhí)行時間這一角度來看,MSRCP算法所消耗的時間最長,并且圖像越大,算法執(zhí)行的時間越長;而DCP算法則通過引導(dǎo)濾波有效地降低了運行的時間,處理不同尺寸的圖像所消耗的時間穩(wěn)定在一定的范圍內(nèi);本文算法由于使用了下采樣以及雙線性插值的加速方法,因此執(zhí)行引導(dǎo)濾波所消耗的時間約為DCP算法的一半,同時,本文算法所消耗的時間基本處于50 ms~80 ms的區(qū)間內(nèi),在速度上也達到了視頻識別的要求。
本文首先利用均值濾波對暗通道進行補償,利用補償?shù)陌低ǖ缊D優(yōu)化了大氣光值的預(yù)估方法,接著根據(jù)像素點和大氣光點距離的遠近對圖像的初始透射率進行了修正,并使用快速引導(dǎo)濾波細(xì)化了圖像的透射率,最后通過大氣散射模型求出復(fù)原后的去霧圖像。實驗結(jié)果表明,本文算法能夠有效地解決傳統(tǒng)暗通道去霧算法存在的色彩失真和細(xì)節(jié)缺失的問題。同時,該算法在運行時間上也達到了視頻識別的要求。然而,本文算法仍舊屬于傳統(tǒng)的圖像去霧算法,近年來基于深度學(xué)習(xí)的方法也被廣泛地應(yīng)用于圖像去霧之中,因此,未來本文的研究方向?qū)⒅赜谑褂蒙蓪咕W(wǎng)絡(luò)的方法(如CycleGAN)對圖像進行去霧。