關於《半反去霧算法》一文的四宗罪。


  最近在看一篇關於去霧的算法的文章:A Fast Semi-Inverse Approach to Detect and Remove the Haze from a Single Image,即我們中文常說的半反去霧算法,國內很多人引用這篇論文的主要的原因是論文提到了兩點:第一,從論文中貼出的圖片中看效果似乎去霧效果很不錯;第二,論文號稱可以實時。通過我自己的閱讀和分析,我認為這篇論文水分很大,其效果和速度都值得懷疑,下面是我的一些分析,為方便,我們先簡單的說下其半反的概念。

  對於一副RGB圖像,其半反圖像可以通過以下公式獲得:

  for each Pixel in Image

    do:      

      NewRed = Max ( Red , 255 - Red ) ;

      NewGreen = Max (Green , 255 - Green );

      NewBlue = Max (Blue , 255 - Blue);

  這樣進行操作后,圖像的像素值肯定都大於127了,因此有必要重新拉升一下,論文中叫做renormalization操作,這個操作具體人如何論文沒提,我們可以認為是自動對比度之類的算法。

  對於不會編程的朋友,要想獲得這個半反圖像,也可以借助PS實現,第一步:調用PS 濾鏡-- 風格化-- 曝光過度菜單;第二部: 點調整--反色;第三步:調整--自動對比度。

  那么接着指出論文的幾大問題:

   第一宗罪: 論文的原理首先不太占的住腳。

  論文首先也是提出了一種先驗,即時通過對 daily light conditions 條件下對多副圖像進行統計,獲知在有霧圖像中,有霧區域的半反圖像和原始圖像基本沒什么變化。這個的主要原因作者說是有霧的區域或者天空其RGB分量各元素的值都比較亮,而無霧的地方符合暗通道原理,即總有一個分量的值比較小。

      首先,假如說上述條件成立,那么這篇論文的算法也就只適合於在光照條件比較亮的氣候下拍攝的圖片的去霧了,這就大大限制其應用范圍,而論文沒有在任何地方對這一點進行強調,有掩蓋的嫌疑。

      其次,這個先驗是否合理呢,因為是先驗,我們當然不要求其100%都正確,有個80%就差不多了,可我對去霧相關論文里的一些常用圖片進行測試,很多都無法獲得理想的結果。

    

    

    

                           原圖                                         半反圖

     第一、第二圖結果還算行,我們看第三副圖,應該說也是在 daily light conditions 條件下拍攝的吧,看其半反圖,按照作者的說法應該基本就是沒有霧的區域了,那么后面的所謂的去霧算法就無法進行下去了,而這種結果對於我這里很多有霧圖都是存在的。

     第二宗罪:大氣光A的計算

   在求大氣光的過程中,作者有這句話:In order to mask the most haze-opaque areas, we perform the same procedure,but with the intensity of the semi-inverse increased by a factor ξ (with a default value of ξ =0.3)。為什么這里要把intensity 的值增加一點,然后何為intensity(要知道這個有N多種定義方法),我實在搞不明白增加這個有何目的。然后真正在求半反圖中未被mask的部分搜索最大的intensity值時,也存在諸多疑問,因為最大的intensity值有可能不出現在一處,此時你取和原始圖對應的那個地方的intensity 作為最終的A呢,每個地方的可能不同啊,論文未明確指出。

     第三宗罪:計算無霧圖像時的過程很不清晰

     在計算無霧圖像時,其主要公式為6和7,對於公式6,我們看到論文中對Ci的取值分別為0.2,0.4,0.6,0.8,1,我認為,這個取值明顯不合理,當Ci取值較大時,Ci*A的值也就越大,此時公式獲得層圖像整體就越來越偏暗,如果求得的大氣光A接近白色,那么對層圖像進行所謂的半反求取有霧區域就變得毫無意義了。而且對論文的圖5中的幾個結果,根據我自己的編程結果表明,只可能是在Ci=0,0.1,0.2,0.3附近獲得的,這說明作者是對這些系數做有意的隱瞞。

    對於公式7,論文根本沒講清楚公式中系數的計算方式,並且這種累加對於重疊的有霧區域很容易理解,而那些在每層都判斷為無霧的區域進行疊加的后的效果應該是沒有任何變化啊,為什么在論文的圖5中,這部分的顏色明顯有變化呢。

    第四宗罪:計算用時絕對作假

    原文對計算用時這樣描述的:Our method implemented on CPU (Intel 2 Duo 2.00GHz) processes an 600×800 image in approximately 0.013 seconds being suitable for real-time outdoor applications。 這話絕對造假,我們不說別的,就其中的兩個過程就使得整個算法不會有這么快,第一:計算半反圖和原圖的h的差異的時候,論文中說是在CIE LCH空間的H值進行計算的,諸位可以去看看LCH空間中H分量的計算過程,有很多計算,其中不凡有除或者浮點運算,而這種比較在論文中所描述的算法過程中至少需要6次(一次用於計算大氣光A,5次用於計算各層的數據)。第二:算法有5次600*800大小彩色圖像的合成過程,而且過程涉及浮點運算(用定點運算優化也會有除法部分的),不談實際中還含有其他的計算,就這兩個過程在這個樣檔次的CPU上對600*800的圖像絕對不是13ms能完成的,這個CPU是雙核的,開雙線程能達到這個速度,我不相信。

      因此,從各方面考慮,我認為這篇論文存在着嚴重的漏洞和不足,不應該在圖像去霧領域推廣。

     作者知識有限,肯定有分析不正確的地方,望各位博友諒解。

 

*********************************作者: laviewpbt   時間: 2013.12.15   聯系QQ:  33184777  轉載請保留本行信息*************************

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM