1. 程式人生 > >關於影象去霧中存在的一些待改進的地方

關於影象去霧中存在的一些待改進的地方

關於影象去霧中存在的一些待改進的地方

 

這一週在學習python的同時繼續翻看了之前讀過的論文,發現有些東西第一遍看的不太清楚馬馬虎虎,到第二遍重新讀的時候才恍然大悟。比如之前一直不太清楚halo效應是如何產生的、為什麼說是用暗通道先驗條件的時候會對天空部分或明亮區域產生透射率估計不足的情況?之前只是知道這些結論但沒有從根本上去理解這些現象的產生。通過二次翻閱論文,才算是理解了這些不足產生的原因,也算是一種收穫吧!

Halo效應:

之前做過好多的模擬,我發現在模擬過程中或多或少總會產生halo效應,可見halo效應對復原出來的結果影象會造成很大的影響。Halo效應產生的過程如下所述:

在進行暗通道的求取時,第一步就是求彩色影象的三通道的最小值,然後在一個小視窗Ω內進行最小值濾波操作。在求取的三通道最小值影象中,物體(除了天空或較亮區域)的暗通道值普遍較低(接近於0),而天空等較亮區域不符合暗通道先驗或者說其暗通道的值比較大。所以在物體的邊緣處(比如物體和天空區域的交界處),用一個Ω視窗進行最小值濾波時,因為物體邊緣的灰度畫素資訊會發生跳變(灰度不連續處),就有可能使邊緣後面較亮的畫素值在進行最小值濾波時會把邊緣前面較低的值給呼叫過來,從而導致後面較亮部分的畫素值變低,從而導致透射率的所求值偏大,復原出的無霧影象光強增大,直觀表示為在邊緣處產生白色光圈。

這就是halo效應易發生在景深變化劇烈處的原因。

關於對天空等較亮區域的透射率估計不足:

大氣模型為:I(x)=J(x)t(x)+A(1-t(x))..............(1)

除卻天空等明亮區域,大部分物體的暗通道值接近於0,也就是min(min(J(x)))趨近於0,所以我們通常得到

注意,上式只是透射率圖的一個簡單近似,實際上的推導如下:

對(1)式求暗通道操作得到

min(min(I))=t min(min(J))+A-At......................................(3)

t (min(min(J))-A)=min(min(I))-A......................................(4)

得到:

因為大部分物體的暗通道為0,所以(5)式的分母為1。但是明亮區域的亮度較高,可以說是它不符合DCP或者說它的暗通道值很高,接近於A,根據(5)式可知明亮區域的t應該是較大的(因為分母不為1,比1小),但實際上我們所採用的卻是分母為一也就是(2)式來計算的,比實際值要小,所以說是對天空等明亮區域的透射率估計不足!

還有一種關於透射率估計不足的情況是:

如果一幅影象有著在R、G、B三通道上直方圖均勻分佈的情況,則 DCP可以恢復出一幅差不多的透射率圖。但是如果在三通道上的分佈差異較大的話,如一幅沙塵暴圖片(blue分量在光譜上被大氣粒子吸收從而導致b分量很小),在經過最小值操作後(最小值濾波),暗通道的直方圖分佈近似於b通道,因為b分量被吸收的原因所以很小,則在暗通道圖中會粗估霧霾的厚度(b很小,粗估為較薄的霧霾,而實際情況是沙塵暴天氣的霧霾很厚),改進方法就是對所得到的透射率圖進行亮度變換,例如γ變換。

總結:

首先把學習過程中存在的問題和疑惑解決了,在整個的過程中毫無疑問的又加深了自己的理解。其次也是最重要的是隻有當清楚地認識和了解到現有方法的不足之處在哪裡,才會知道自己應該在哪裡下功夫,才能慢慢的摸索和找點子,才能針對某一處不足做出自己相應的調整。