(南京理工大學(xué)計算機科學(xué)與工程學(xué)院 南京 210094)
隨著計算機技術(shù)的不斷發(fā)展,越來越多的領(lǐng)域都需要使用視頻技術(shù),視頻信息數(shù)據(jù)也在迅速地增長。與單個的圖像相比,視頻的數(shù)據(jù)量就顯得非常大了,這給它自身的存儲以及傳輸都帶來了一定的困難,因此,視頻壓縮技術(shù)在當代社會是非常有必要的。目前也有很多相關(guān)的視頻壓縮標準[1]和視頻壓縮方法[2~3]被提出,但是基本上都是針對提升壓縮性能或時間速率的。
眾所周知,圖像、視頻通常都是由成像設(shè)備所獲取的,而且一般情況下,人們都認為我們所處的大氣層是透明清晰的,成像設(shè)備也確實能夠獲取到相對比較清晰的圖像和視頻。然而,由于霧霾在人們?nèi)粘I钪性桨l(fā)常見,大氣中的懸浮顆粒物把光線散射,使得成像設(shè)備難以準確地獲取圖像視頻的細節(jié)特征,霧霾視頻也給很多戶外視頻應(yīng)用的實現(xiàn)帶來了困難。因此,將霧霾視頻進行去霧、改善其清晰度和能見度是具有重要意義的,同時也擁有廣闊的應(yīng)用場景。國內(nèi)外很多學(xué)者都對去霧算法進行了研究,針對圖像或者針對視頻的去霧算法[4~6]都有,而且都獲得了一定的成果。
然而,考慮到在現(xiàn)有的視頻壓縮方法中,基本上沒有同時對霧霾視頻進行去霧處理的,本文將視頻去霧和視頻壓縮相結(jié)合,避免在壓縮過程中把霧霾信息壓縮,提出了一種基于運動估計共享的霧霾視頻壓縮方法,在減少視頻的存儲空間和傳輸帶寬的同時,降低霧霾對視頻獲取、傳輸造成的不良影響。
在計算機視覺領(lǐng)域,通常使用以下模型來描述霧霾圖像:

其中,I(x)表示有霧的圖像,J(x)表示清晰無霧的圖像,A表示環(huán)境光,t(x)表示透射率,也可以說是沒有被傳輸介質(zhì)散射并最終到達成像設(shè)備的光,這也就是著名的大氣散射模型[7],根據(jù)該模型就可以推算出清晰的無霧圖像的計算公式:

在已經(jīng)獲得有霧圖像的情況下,只要再得到環(huán)境光和透射率就可以利用式(2)得到去霧后的圖像。
出于對視頻幀間相關(guān)性的考慮,文獻[8]提出了一種對透射率進行優(yōu)化的方法。如圖1所示,每次讀取視頻序列中的當前幀及其前后相鄰的各兩幀,以這五幀為單位,首先分別計算各自的透射率,然后將當前幀平均劃分為若干個16*16的宏塊,再利用三步搜索法計算出當前幀中宏塊與其他幀之間的運動矢量,接著利用這些運動矢量找到當前透射率中宏塊在其他透射率圖中的對應(yīng)匹配塊,最后使用一個加權(quán)平均濾波器對透射率進行幀間相關(guān)性優(yōu)化。

圖1 透射率優(yōu)化方法圖
H.264/AVC[1]是一種國際視頻壓縮標準,它采用混合編碼的方式,輸入幀以宏塊為單位進行編碼,其框架圖如圖2所示。對于一個視頻序列,主要有幀內(nèi)預(yù)測編碼和幀間預(yù)測編碼的方式,后者通過運動估計和運動補償?shù)玫疆斍皦K的預(yù)測塊,之后,將當前塊與預(yù)測塊相減可以產(chǎn)生殘差等一系列數(shù)據(jù),然后對殘差等數(shù)據(jù)進行變換量化[9]產(chǎn)生一組系數(shù),在利用熵編碼[10]得到最終的碼流,此外,該框架中還存在一個環(huán)路濾波器[11],用于消除編碼產(chǎn)生的塊效應(yīng)。

圖2 H.264/AVC框架圖[1]
對于RGB圖像,He[12]提出了一種暗通道先驗知識:通常對于一幅無霧戶外圖像J(x),它的三個通道c∈{r,g,b} 中會存在一個通道的值是超級低的:

上式中的Jdark指的就是暗通道,Ω(x)是求解暗通道圖時進行最小值濾波的窗口。通過將暗通道先驗知識與大氣散射模型結(jié)合,可以計算出大氣散射模型中的透射率:

得到透射率后,再計算環(huán)境光值就能對無霧圖像求解了。文獻[12]中的做法是先在暗通道圖中按照亮度值的排序找出最亮的前百分之一個像素位置,再從原始圖像中找到相應(yīng)的點,最后從中找出最亮的像素值作為環(huán)境光值。
由于視頻壓縮通常都是針對YUV視頻序列壓縮,為了更好地實現(xiàn)視頻去霧與視頻壓縮的計算資源共享,本文基于YUV顏色空間進行去霧,因此不得不提到另外一種計算透射率的方法[13]:當存在一幅無霧的YUV圖像,則該圖像的亮度分量中會有一部分像素的強度接近零。那么對該圖像,同樣也能采用局部最小值濾波得到亮度分量的暗通道圖。

與文獻[12]中的暗通道類似,可以得到亮度分量的透射率表達公式:

在式(6)和式(7)中,JY是J的亮度分量,IY是YUV圖像的亮度分量,Ω(x)同樣表示濾波窗口,ω是一個常量,用來保留圖像中少量的霧。
對于YUV圖像的環(huán)境光值,本文依舊從亮度分量著手進行計算,首先從亮度分量暗通道圖中找出最亮的前百分之二個像素位置,接著在亮度分量圖中找到對應(yīng)的點,最后計算這些像素點的平均值作為環(huán)境光值,如算法1所示。

在得到Y(jié)UV視頻序列每幀單獨的透射率之后,還需要對相鄰?fù)干渎蔬M行一致性優(yōu)化,本文對已有的基于幀間相關(guān)性的透射率優(yōu)化方法[8]進行了改進,其框架圖如圖3所示。得到透射率之后首先利用引導(dǎo)濾波對其細化,讓它擁有與原始視頻序列相近的紋理細節(jié),與此同時,還利用運動估計得到原始視頻相鄰幀之間的運動矢量,再利用這些運動矢量在透射率序列中尋找到相應(yīng)的匹配塊,最后進行加權(quán)平均濾波得到優(yōu)化的透射率圖。

圖3 透射率一致性優(yōu)化的框架圖
與已有方法相同的是:兩種方法都利用連續(xù)的五幀來進行加權(quán)平均濾波,給透射率t(x)都分別加上權(quán)重值λ:

考慮到相鄰幀之間的相關(guān)性,也為了保證權(quán)重值的分布符合高斯分布,本文將權(quán)重值分別設(shè)為

與已有方法不同的是:為了更好地實現(xiàn)視頻去霧與視頻編碼的結(jié)合,本文還在運動矢量的計算方法、宏塊的劃分模式上進行了相應(yīng)的改進,并在以下章節(jié)進行介紹。
在對透射率進行優(yōu)化的時候,本文主要是對相鄰幀進行運動估計得到相應(yīng)的信息,而視頻壓縮的關(guān)鍵技術(shù)也是運動估計,基于這一共同點,本文將兩者結(jié)合起來,提出了一種基于運動估計共享的霧霾視頻壓縮方法,在整個視頻去霧和視頻壓縮的過程中,僅進行一次運動估計,而非在去霧時和編碼時都各自分開進行運動估計,文本框架大致如圖4所示。

圖4 基于運動估計共享的霧霾視頻壓縮方法框架圖
運動估計(Motion Estimation,ME)[14]指的是得到運動矢量的一個過程,如圖5所示,首先需要將每一個當前幀分成很多宏塊,然后利用塊匹配算法找到當前宏塊的最佳匹配塊,兩者之間的相對位移就是運動矢量。常用的塊匹配算法主要有全搜索法(Full Search,F(xiàn)S)[15]以及三步搜索法(Three Step Search,TSS)[16]等。

圖5 運動估計示意圖
為了實現(xiàn)運動估計共享,本文主要是針對運動估計過程中的運動矢量、宏塊劃分模式進行共享,將這些計算資源同時用于視頻去霧進行透射率幀間一致性優(yōu)化以及視頻壓縮進行幀間預(yù)測,做到保持兩方面不僅運動矢量一致而且宏塊劃分模式也一致。
3.2.1 運動矢量共享
所謂運動矢量共享,在本章節(jié)中主要是指將同一運動矢量分別用于在透射率圖中尋找相應(yīng)的最佳匹配塊以及用于視頻壓縮的幀間預(yù)測,而非兩者采用不同的運動矢量。而談到運動矢量,就不得不提到運動估計的塊匹配算法[17],通常,如果是考慮計算復(fù)雜度或者時間開銷,被選擇的會是快速匹配算法,文獻[8]中采用的就是三步搜索法,該算法雖然應(yīng)用較為廣泛,但是也存在一定的缺點,尤其是在全局性方面的考慮。
三步搜索法的每一個步驟都僅僅考慮了當前原點及其周圍的八個搜索點,且步長會逐漸減半直至減為1,這就意味著:如果是在一個[-7,+7]的搜索范圍內(nèi)進行塊匹配,那么能夠匹配到的位置只有25個,這僅僅只占了全部225個匹配位置的九分之一,另外兩百個位置根本沒有進行匹配,盡管其中可能包含了真實的最佳匹配塊。

圖6 全搜索法示意圖
出于對全局最佳匹配塊的考慮,本文選擇一種全局的塊匹配算法,遍歷搜索范圍包含的全部搜索位置,比較每個位置的匹配度,選擇全局最優(yōu)的運動矢量,這種算法被稱為全搜索法,在搜索過程中按照螺旋式從原點開始搜索,如圖6所示。如果是在[-7,+7]的搜索范圍內(nèi),能夠匹配到全部225個位置,找到全局內(nèi)最好的結(jié)果。
3.2.2 宏塊劃分模式共享
所謂宏塊劃分模式共享,在本章節(jié)中主要是指在運動估計的過程中,對透射率進行優(yōu)化以及對視頻壓縮進行幀間預(yù)測的時候,采用相同的宏塊劃分模式。在已有的幀間相關(guān)性透射率優(yōu)化方法[8]中,每一個當前幀都采用了一致的劃分方式,得到的劃分結(jié)果都是若干個16*16的宏塊,然而,這種劃分方式比較適合紋理很少以及相對平滑的圖像;考慮到實際上很多真實的圖像在紋理上是比較復(fù)雜的,僅僅在一小塊區(qū)域中也會包含多個目標物體或場景,因此,很有必要對圖像中的宏塊進行多種不同方式的劃分,此外,采取多種多樣的宏塊劃分模式對實現(xiàn)視頻去霧和視頻壓縮之間的宏塊劃分模式共享也是有好處的。
H.264/AVC標準將每一個16*16的宏塊都被劃分為了16*16、16*8、8*16及8*8等類型的小塊,對于8*8的亞宏塊,又進一步劃分成了8*8、8*4、4*8及4*4等類型的更小的塊,如圖7所示。

圖7 宏塊劃分模式示意圖
本文在進行透射率優(yōu)化的時候,也采用同樣類型的劃分模式,如此一來,既可以實現(xiàn)視頻去霧與視頻編碼的宏塊劃分模式共享,又能將原本16*16的宏塊劃分為多個小塊,得到包含圖8在內(nèi)的多種劃分結(jié)果。

圖8 宏塊劃分的一種結(jié)果
首先為了比較本文改進的去霧算法與其他已有算法的去霧效果,針對YUV視頻序列進行了以下實驗,并對去霧后的亮度分量結(jié)果進行展示。
實驗一:比較去霧后視頻的連續(xù)性。比較的方法有:1)每幀單獨進行去霧的方法;2)本文改進的去霧方法。實驗結(jié)果如圖9所示,其中從左到右第一列是原始的視頻序列之中連續(xù)的四幀,第二列是進行單幀去霧的結(jié)果,第三列是文本去霧方法的結(jié)果。
在圖9的實驗結(jié)果中,原始的視頻序列在亮度變化方面并不明顯,而對每幀單獨去霧后,各幀之間在亮度方面發(fā)生了一些變化,比起第二幀和第四幀,第一幀和第三幀在白色框部分的亮度要暗一些,而本文方法的結(jié)果并沒有出現(xiàn)這種情況,這也就表明:利用連續(xù)的五幀對當前幀的透射率進行優(yōu)化可以使去霧后的視頻序列保持良好的連續(xù)性。

圖9 實驗一去霧結(jié)果對比
除了比較上述方法在亮度方面的連續(xù)性,本文還進行了實驗二:比較去霧后視頻的清晰度。比較的方法有:1)每幀單獨進行去霧的方法;2)文獻[8]將宏塊平均劃分并采用三步搜索法的方法;3)本文去霧方法。實驗結(jié)果如圖10所示,其中從左到右第一列是視頻序列之中的一幀,第二列是單幀去霧的結(jié)果,第三列是文獻[8]的去霧結(jié)果,第四列是本文方法的去霧結(jié)果。每列的第一行是完整圖像,第二行是圖像的局部放大圖。

圖10 實驗二去霧結(jié)果對比
在不考慮連續(xù)性的條件下,我們認為對于某一幀而言,單獨進行去霧的結(jié)果是最清晰的。在圖10的實驗結(jié)果中,通過各結(jié)果的局部放大圖可以看到,每幀單獨去霧方法和本文方法的去霧結(jié)果比較清晰,而文獻[8]的去霧結(jié)果有點粗糙。這也就表明:本文用全搜索算法得到全局最優(yōu)的運動矢量,并將宏塊劃分為多種類型的小塊,能找到全局最佳的匹配塊,對透射率優(yōu)化后也能得到比較清晰的去霧結(jié)果。
鑒于本文主要是將視頻去霧與視頻壓縮相結(jié)合提出了一種基于運動估計共享的霧霾視頻壓縮方法,在運動矢量共享和宏塊劃分模式共享方面,可以通過考慮不同的去霧效果或者壓縮性能得到不一樣的結(jié)果,為了體現(xiàn)表示壓縮性能的率失真曲線對比效果,本文選擇了三種方案,采取相同的去霧算法和H.264/AVC編碼框架進行了實驗:方案一只考慮去霧效果,方案二只考慮壓縮性能,方案三同時考慮去霧效果和壓縮性能,率失真曲線對比如圖11所示。從圖11可以看出,同時考慮去霧效果和壓縮性能得到的率失真曲線比較居中且接近方案二僅考慮壓縮性能的率失真曲線,這表示本文基于運動估計共享的霧霾視頻壓縮方法也能獲得較好的壓縮性能。

圖11 率失真曲線對比圖
本文提出了一種基于運動估計共享的霧霾視頻壓縮方法,不僅可以對霧霾視頻進行去霧,還能夠同時實現(xiàn)視頻的壓縮;本文還對已有的去霧算法進行了一定的改進,不僅可以維持去霧視頻的幀間連續(xù)性,還能夠獲得清晰的去霧效果,最重要的是對視頻去霧和視頻壓縮的有效結(jié)合十分有利。