高斯滤波的开始——高斯核的计算

高斯滤波的开始——高斯核的计算

首先先说说高斯滤波的含义:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。(来源于百度)
对于高斯核的计算,网上有许多,但都讲的马马虎虎,因此,个人写了一个基于matlab,简单,易懂的方法。话不多说,直接上代码;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                计算高斯核                 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pi=3.1415926;%高斯公式中Π的值
sum=0;%计算累计权重的值
d=1.5;%高斯核标准差
size=3;%高斯核大小
center=(size/2)+0.5;%模板的中心,这里取整
A=1/(2*pi*d*d);%高斯公式指数前面的系数
for i=1:3
    x2=(i-center)*(i-center);
    for j=1:3
        y2=(j-center)*(j-center);
        B=exp(-(x2+y2)/(2*d*d));
        C(i,j)=A*B;
        sum=sum+C(i,j);
    end
end
%整数形式的高斯核,需要进行归一化,即把左上角的值化为1
%下面进行归一化
k=1/C(1,1);
for i=1:3
    for j=1:3
        D(i,j)=C(i,j)*k;%进行归一化后整数形式的高斯核
    end
end
%若是小数形式的高斯核,则在不需要归一化,而需要进权重分配,高斯核的每个系数要除以所有系数的和。
%下面进行权重分配
for i=1:3
    for j=1:3
        E(i,j)=C(i,j)/sum%进行归一化后整数形式的高斯核
    end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%截至这里,高斯核以计算完毕%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

下面是输出的结果:标准差=1.5,模板大小为3
上图为直接输出的高斯核,没有进行归一化和权重分配
上图是经过归一下后输出的高斯核
上图是经过权重分配后输出的高斯核
所谓权重分配,就是把高斯核的每个系数乘以所有系数的和,重新输出。

你可能感兴趣的:(计算机视觉,matlab图像处理)