今天终于弄清楚了fspecial('gaussian',3,1.8)怎么算的了

先看看定义 假设模板大小为(2k+1)*(2k+1),则高斯模板(i,j)处的元素值应该为:

首先我们看一下用 fspecial生成的一个标准差为1.8,大小为3*3的高斯模板矩阵

>> fspecial('gaussian',3,1.8)


ans =


    0.0997    0.1163    0.0997
    0.1163    0.1358    0.1163
    0.0997    0.1163    0.0997

然后我们看一下用matlab程序怎么生成的

首先建一个3*3的标准矩阵矩阵 [x,y]=meshgrid(-1:1,-1:1)

>> [x,y]=meshgrid(-1:1,-1:1)
x =
    -1     0     1
    -1     0     1
    -1     0     1

y =
    -1    -1    -1
     0     0     0
     1     1     1

然后执行

>> h=exp(-(x.*x+y.*y)./(2*1.8*1.8);)  %有没有发现这里少了什么东西? 是吧少除了一个2*pi*deta*deta是吧
h =
    0.7344    0.8570    0.7344
    0.8570    1.0000    0.8570
    0.7344    0.8570    0.7344

之后执行归一化你会发现::

>>  h=h/sum(sum(h))
h =
    0.0997    0.1163    0.0997
    0.1163    0.1358    0.1163
    0.0997    0.1163    0.0997 

这里的h矩阵是不是跟之前用fspecial生成的是一样的。 不过我也不明白为什么这里不除2*pi*deta*deta 

接着我来告诉大家为什么不除2*pi*deta*deta 吧,今天终于想通了  因为h/sun(sum(h))这个操作把2*pi*deta*deta 给约分掉了,所以除不除的效果是一样的

如下matlab仿真可以看出结果是一样的

>> M=exp(-(x.^2+y.^2)/(2*1.8^2))/(2*pi*1.8^2)
M =
    0.0361    0.0421    0.0361
    0.0421    0.0491    0.0421
    0.0361    0.0421    0.0361
>> N=M/sum(sum(M))
N =
    0.0997    0.1163    0.0997
    0.1163    0.1358    0.1163
    0.0997    0.1163    0.0997

因此这里要强调的是归一化操作~~~

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值