gshang

高斯公式:

\[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 实现,设置好滤波器类型,和参数即可。
  • 以上两种方式完全等效。

分类:

技术点:

相关文章:

  • 2022-01-17
  • 2022-03-14
  • 2021-10-05
  • 2022-02-10
  • 2021-08-19
  • 2022-01-02
  • 2022-01-09
  • 2021-07-27
猜你喜欢
  • 2022-12-23
  • 2021-12-04
  • 2021-12-30
  • 2022-12-23
  • 2022-02-25
  • 2022-01-01
相关资源
相似解决方案