利用聯合雙邊濾波或引導濾波進行升取樣(Upsampling)技術提高一些耗時演算法的速度。

Imageshop發表於2014-04-20

     這十年來,在影象處理領域提出了很多新的影象分析和處理方法,包括是自動的以及一些需要有人工參與的,典型的比如stereo depth computations、image colorization、tone mapping of high dynamic range (HDR) images、 graph cuts ,這些演算法都有著比較好的效果,但都普遍存在一個問題:就是計算量特別大,很難滿足使用者的需求。而數字影象在尺寸大小上的增長速度這段時間也相當驚人。還有個問題就是有些演算法需要解一個很大的稀疏矩陣方程,可能會大到系統的無法為接其過程分配足夠的記憶體。因此,如果解決這兩個問題,一個直觀而又簡單的想法就是:先處理原圖下采樣的小圖,然後將處理後的結果在上取樣。

      但是,如此處理存在的問題就是上取樣演算法會直接影響到處理效果。如果是純粹的最近鄰插值、或者是雙線性,抑或是三次立方等複雜點插值演算法,都會使人感到效果失真。但是在這種情況下的我們實際上比簡單的影象放大時多了一個資訊的,就是我有原始的未做處理的並且未縮小的影象的資訊,是否能利用這個資訊來增強上取樣的效果呢?目前我看到了兩種這方面的演算法。

      一種就是聯合雙邊濾波,我們先簡單的看看這個東西的數學公式吧:

         

      對上式做個簡答的解釋,其中I表示輸入影象,p/q表示X/Y物理座標,Ip表示對應位置的畫素值,J表示輸出, f/g是權重分佈函式,一般為高斯函式。這種濾波的結果就是周邊畫素的權值不僅和距離有關還和那個位置的畫素值有關,如果在值域的權重計算過程引入另外一幅影象,如下式,則稱之為聯合雙邊濾波。 

        

      聯合雙邊濾波上取樣技術也很簡單,一種便於理解的也便於寫程式碼的方式就是把下采樣並進行處理過後的小圖按照最近鄰插值的方式放大到原圖大小,然後再用原圖的資料和這個放大的結果進行聯合雙邊濾波處理。

      另外,引導濾波的對引數的要求和聯合雙邊很類似,這個在後續的文章中我會具體講述。 

      關於這個方面的文章,比較簡單的就是這篇 http://research.microsoft.com/en-us/um/people/cohen/JBU_Final.pdf

  想比如上述那些複雜的演算法,聯合雙邊濾波的快速演算法的耗時幾乎可以忽略不計,如果一個演算法下采樣的取樣率為0.25,則演算法那本身的速度理想狀態下可能只為原始的1/16,加上最後的聯合雙邊濾波的時間,可能提高10倍以上,而效果變化並不大。

     我做了幾個演算法的測試,比如磨皮演算法(下采樣率0.25):

          

              原圖                   下采樣圖            下采樣處理圖                  最近鄰插值後的圖

                                                   

      聯合雙邊濾波結果圖                                                      原圖處理圖

    在那我在行的去霧演算法來看下:

       

                     原圖                              下采樣圖        下采樣處理圖                   最近鄰插值後的圖

                                               

                       聯合雙邊濾波結果圖                                                      原圖處理圖

     我這裡舉得例子不是很恰當,因為我這裡還沒有做特別複雜的和耗時的演算法,但是這個過程表明這種方式處理和解決問題是完全可以的。

   

 

****************************作者: laviewpbt   時間: 2014.4.20    聯絡QQ:  1664462947  轉載請保留本行資訊********************

 

相關文章