二維高斯濾波器的兩種實現


高斯公式:

\[G(x,y)=\frac{1}{{2\pi{\sigma ^2}}}{e^{ - \frac{{{x^2} + {y^2}}}{{2{\sigma ^2}}}}}\ \]

代碼

clear;close all;clc

% 高斯濾波器參數
s1 = 15; s2 = 20; 
sigma = 15;

% 按公式編寫
[x, y]=meshgrid(-((s2-1)/2):(s2/2),(-((s1-1)/2):(s1/2)));   
gauss=exp(-(x.^2+y.^2)/(2*sigma*sigma)); 
G1=gauss/sum(gauss(:)); 

% Matlab 自帶
G2 = fspecial('gaussian',[s1,s2],sigma);
isequal(G1,G2)

figure
subplot(1,2,1);mesh(G1);title('按公式編寫')
subplot(1,2,2);mesh(G2);title('Matlab 自帶')

結果

ans =

  logical

   1

結論

  • 按公式編寫:先構造 x 和 y 軸方向的數值刻度,形成一張網格點,然后按照公式計算高斯濾波器中各位置的取值,最后做一個歸一化(因為歸一化會將前面的系數消掉,所以一般不加前面的系數)。則此時的 G 滿足求和為 1,相當於積分為1。
  • Matlab 自帶:通過 fspecial 實現,設置好濾波器類型,和參數即可。
  • 以上兩種方式完全等效。


免責聲明!

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



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