《数字图像处理》——高斯模板的产生

    我们知道在实现高斯滤波的时候,需要用到高斯模板,高斯模板也就是个点的值服从高斯分布。

这里主要参考这篇博客:点击打开链接

代码如下:

<span style="font-size:18px;">% 本程序目的在生成自己的高斯模板
%   公式: p(z) = exp(-(z-u)^2/(2*d^2) / (sqrt(2*pi)*d)
clear all;close all;clc;
size = 3;
sigma = 0.5;
% size为模板大小
% sigma为标准差

%下面的代码其实是从fspecial中摘录出来的,我做了一些更改放到自己写的函数里面便于解释
%计算高斯模板的中心位置
siz = ( [size size] - 1 ) / 2;
sig = sigma;

%用meshgrid是为了加速,不用for循环
[x y]  = meshgrid(-siz(): siz(1),-siz(2): siz(2));    % 相当于围绕中心点(0,0)产生各个点的坐标,之后再根据坐标代公式得到各个点具体值

% 计算exp(-(x^2 + y^2)/(2 * sig^2))
% 我想你肯定有一个疑问,那就是为什么不除以 2 * pi * sig^2
% 因为不除也没有关系,因为最后归一化之后会约掉
arg = -( x .* x + y .* y) ./ (2 * sig * sig);
h = exp(arg);

% 不知道它为什么要这样,忘懂得人解释一下
h( h < eps * max( h(:) ) ) = 0;

% 求和,用来归一化
sumh = sum( h(:) );

% 防止求和之后出现为0的情况,然后再归一化一下使高斯,模板为小数
if sumh ~= 0
    h = h / sumh;
end

h</span>

运行结果:

<span style="font-size:18px;">h =

     149/13135      431/5142       149/13135 
     431/5142       493/796        431/5142  
     149/13135      431/5142       149/13135 </span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值