摘要:針對已有的基于DSP的實時去霧算法出現的問題進行優化和改進。在降采樣倍數過大時,去霧效果會出現一些副作用,包括紋理細節丟失、塊效應和亮度偏暗。針對這三個問題,本文采用均值降采樣、雙線性插值升采樣、透射率補償等方式進行優化。最終針對實際YUV圖像進行了優化方法的實驗,表明可以達到較好的去霧效果。
關鍵詞:去霧;優化;降采樣;升采樣
0引言
近幾年,隨著空氣污染的日益嚴重,霧霾給人們的生活與生產帶來了極大的影響。尤其在各大城市,霧霾造成的能見度降低嚴重影響了道路交通和交通監控的性能,所以實時圖像去霧的需求也越來越迫切。目前圖像去霧方法主要分為圖像增強法和基于物理模型的復原方法。在眾多去霧算法中,何凱明博士在2009年提出的基于暗原色先驗的去霧算法由于其去霧效果穩定且自然而被廣泛采用[1]。
雖然基于暗原色先驗的去霧算法計算去霧效果非常出色,但由于其復雜度高,計算時間比較長,而且大部分時間集中在導向濾波求精細透射率處[2]。為了滿足實時處理的要求,已有的實時去霧算法中一般采用降采樣的方法[3]。通過降采樣得到小圖,再對小圖進行去霧處理,最終采用小圖的透射率對大圖進行去霧處理。這樣處理可以極大地縮短計算時間。此方法在降采樣倍數較低時,對去霧效果并沒有太大影響,但當降采樣倍數較高時,去霧效果則會明顯下降。本文針對采用降采樣的實時圖像去霧算法進行優化與改進,通過加入均值降采樣、升采樣等方法進行優化,最終得到比較好的處理結果。
1均值降采樣
降采樣倍數過高時,圖像在部分明暗相接處的暗處會出現一些紋理細節丟失的情況,主要表現為由原來較暗的圖像變為黑色。經分析,這種現象由降采樣的取值方式導致。
臨近點降采樣方法是分別在圖像的行和列兩個方向上每隔M個點抽取一個采樣點,其中M為降采樣倍數。采用這種方式進行降采樣的結果等效為將大圖細分為若干個M×M的小圖,抽取每個小圖左上角的值湊成降采樣圖。這種方法用一個點代替整個小圖的圖像數據,在部分情況下會有較大影響。如圖1所示。
如圖1所示,10×10的大圖經過5倍降采樣后變為黑白各半的小圖。由文獻[1]可知,白色像素的暗通道值Idark比較高。通過暗通道求透射率t為:
易知白色像素計算出的透射率小于灰色像素計算出的透射率。圖像恢復公式如下:
通常情況下大氣光值A大于各個像素的值I,故當用小圖恢復大圖時,對于大圖左上角5×5小圖中的灰色部分像素值,由于遠小于大氣光值A,故I-A的值為負數,并且絕對值比較大,而透射率又為白色像素對應的較小的透射率,故可能會變為0或負數,處理結果變為黑色。在圖像中如果存在著類似的邊界,則邊界處的暗處紋理可能會被處理為黑色,造成信息流失和不自然。
采用均值降采樣可以比較好地解決這種問題。均值降采樣與臨近點采樣的區別在于將大圖分為若干個M×M的小圖后,不再只取左上角的點,而是將整個小圖所有像素的值取均值,用均值代替整個小圖。采用這種方法后由于黑色占大多數,所以降采樣的結果不再是白色,而是灰色。灰色對應的透射率較大,故不易被處理為黑色造成信息流失。但均值降采樣會帶來比較大的計算量,可采用文獻[4]中的盒式濾波算法。
2雙線性插值升采樣
經過高倍數降采樣后,去霧后的圖像會出現比較明顯的塊效應。這主要是由于降采樣后,在整幅圖像恢復時,每一小塊圖像都用同一個透射率處理,中間缺少過渡。對于圖像中較大的物體,在圖像恢復時可能會被分為若干小塊,每個小塊分別采用不同大小的透射率,因此圖像恢復后可能導致結果分布不均勻。
針對這個問題,本文采用雙線性插值升采樣方法。雙線性插值法根據所求像素點距參考點位置進行計算,所求點距某個像素越近則相對應的權值就越大,距某個像素越遠則對應的權值就越小。雙線性插值原理如圖2所示。
設所求像素值為dest,對應橫坐標為r,縱坐標為c,圖2中四個角的值分別為value1、value2、value3和value4。則dest計算公式為:
dest=w1×value1+w2×value2+w3×value3+
w4×value4
其中:
其中,ratio為升采樣半徑。
采用雙線性插值升采樣處理小圖透射率,得到較平滑的大圖透射率,再通過這個透射率恢復圖像,圖像上的塊效應得到明顯改善。
3亮度補償
經過暗原色先驗去霧算法處理后的圖像總會有亮度偏暗的情況,這個問題在文獻[3]中有敘述。其主要原因是在去霧算法中,預估的透射率表示為:
因為Jc(y)t(x)總是大于0,所以預估透射率比實際值偏小。又因為圖中大部分像素的值都小于A,由圖像恢復公式可知恢復出的圖像均小于實際值,所以圖像整體偏暗。為了解決這個問題,本文采用兩種方式:透射率補償及亮度后處理。這兩種方法都可以起到增加圖像亮度的效果。
3.1透射率補償
根據文獻[3]中的敘述,由于近似計算,基于暗原色先驗的去霧算法計算出的透射率偏小,由于大部分像素值小于透射率,經去霧后,像素值相對于大氣光值的差會被放大,即變得更小,所以去霧后的圖像會偏暗。為了補償這個偏差,本文提出在透射率求出后加上一個補償值,計算公式如下:
通過加入補償值p,可以適當增大預估透射率的值。但這個值通常不能取太大,一般取值范圍為008~025。經過試驗這種方法可以極大地改善去霧后圖片偏暗的情況。
3.2亮度后處理
由于本文針對的是YUV格式的圖像,這種圖像每個像素點對應三個分量,分別是:亮度分量Y和兩個色差分量U、V。所以若圖像偏暗,可以通過調節三個分量中的Y分量進行補償。
本文采用圖像增強算法中的對比度拉伸法,詳見文獻[5]。這種算法計算復雜度比較低,實現簡單。主要實現方法為:在圖像去霧后,對圖像的Y通道進行對比度拉伸,使圖像中大部分的亮度得到提升。拉伸曲線設計見圖3。
4處理結果及分析
經過上述優化和改進,將優化前與優化后結果進行對比。
采用均值降采樣后,處理結果如圖4~圖6所示。
從圖5、6中可見,在圓圈標注的明暗交界處,臨近點降采樣處理后,樓頂處的紋理細節消失,而經過優化后,樓頂細節保持完好。
采用雙線性插值法進行優化后,處理結果如圖7~圖9所示。
可以看到,未加雙線性升采樣之前,在飛機發動機處有明顯的塊效應,在加入升采樣后,該處不自然的塊已有明顯的改善。
經過亮度補償后的處理結果如圖10~圖12所示。
從圖中可以明顯看到,未加補償時,去霧后的圖像偏黑,看起來很不自然。加入補償后,圖像依舊有去霧效果,且圖中暗處依舊能看到,而且更加自然。
5結論
本文針對基于暗原色先驗的實時去霧算法所出現的三大問題:部分細節丟失、塊效應和亮度偏暗問題,進行針對性的優化和改進。經過對比試驗,采用均值降采樣、雙線性升采樣和亮度補償等方法后,可以比較好地對結果進行修正,從而得到更自然的結果。并且經過相應的優化后,能達到實時去霧的效果。但由于在原算法中加入了均值濾波等步驟,計算時間相較于之前算法略有增加,所以在今后的工作中需要進一步優化,縮短計算時間。
參考文獻
[1] HE K, SUN J, TANG X. Single image haze removal using dark channel prior[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 2011, 33(12): 2341-2353.
[2] HE K, SUN J, TANG X. Guided image filtering[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 2013, 35(6): 1397-1409.
[3] XU H, GUO J, LIU Q, et al. Fast image dehazing using improved dark channel prior[C].Information Science and Technology (ICIST), 2012 International Conference on. IEEE, 2012: 663-667.
[4] MCDONNELL M J. Boxfiltering techniques[J]. Computer Graphics and Image Processing, 1981, 17(1): 65-70.
[5] GONZALEZ R C, EDDINS S L. 數字圖像處理[M].阮秋琦,譯.北京:電子工業出版社, 2007.