您的位置:首页 > 其它

高斯滤波的快速实现

2016-04-22 15:25 387 查看
http://www.cnblogs.com/ImageVision/archive/2012/06/11/2545555.html

二維高斯函數具有旋轉對稱性,處理後不會對哪一個方向上的邊緣進行了過多的濾波,因此相對其他濾波器,具有無法比擬的優越性。但是傳統Gauss濾波隨著圖像尺寸的增加,運算復雜度呈平方上漲,因此需要對其優化改進。下面,分別介紹傳統型,分解型和遞歸迭代型三種實現方法。

  


1 傳統型

  Gauss濾波首先需要構建一個Gauss濾波核,公式為:



Matlab實現代碼:

?
  



圖1 Gauss濾波核(5*5大小)

  接下來就是將輸入圖像和濾波核進行卷積操作。其實質就是對原始圖像進行加權求和,把這個「和」賦給中心像素。對於一個2048*2048的圖像,需要進行104734756次乘法運算,和104734756次加法運算,運算復雜度是很高的。


2 分解型

  

  我們可以把一個二維Gauss核分解為兩個一維高斯核,然後先對行做一次一維卷積,再對這個卷積結果做一次一維列卷積,得到的結果完全一模一樣,而開銷會小很多。

一維高斯核函數:



  Matlab代碼實現:

?
  



圖2 一維高斯濾波核(1*5大小)

  一維卷積原理和二維卷積一樣,只不過我們只需要將同一行或同一列上的數據,按位置一一加權求和,再把「和」賦給中心元素。

  對於一個2048*2048的圖像,需要進行41918464次乘法運算,和41918464次加法運算。相比傳統運算量,只是前者的1/2.4985。如果遇到頻繁計算Gauss濾波的算法,後者明顯比前者速度快很多。


3 遞歸迭代型

  第二種方法較第一種方法,雖然有了較大改善,但是任然復雜度較高。這裡再介紹一種更快速的逼近Gauss濾波方法。

     具體步驟分為兩步:首先對圖像做一次前向濾波,其次,對圖像再做一次後向濾波。

  Forward:



  Backward:





參考資料:Recursive implementation of the Gaussian filter。 Ian T. Young,1995
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  高斯滤波