這十年來,在圖像處理領域提出了很多新的圖像分析和處理方法,包括是自動的以及一些需要有人工參與的,典型的比如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 轉載請保留本行信息********************