Matlab 均值滤波与中值滤波

%%以下是本人在学习中的个人理解,如有错误请指出

所谓的滤波就是一个系数矩阵(也称为模板,滤波器,滤波模板,核,掩模或者窗口),然后用这个模板对应图像矩阵(填充0后的图像矩阵)进行乘积和运算。

均值滤波就是这个滤波器每个值都是一样大小,每个值是1/k(k为滤波器矩阵的大小),用于去噪
滤波器可通过 w=fspecial(‘type’,parameters)得到,其中type指定滤波器类型,parameters进一步定一规定的滤波器
用fspecial(‘average’)可以创建一个均值滤波器,默认33,每个值都是1/(33)=0.1111

>> h=fspecial('average')

h =

    0.1111    0.1111    0.1111
    0.1111    0.1111    0.1111
    0.1111    0.1111    0.1111

然后创建个简单矩阵

>> x=[1,2,3;4,5,6;2,2,2]

x =

     1     2     3
     4     5     6
     2     2     2

使用filter2(h,x)进行滤波,h为滤波器,x为要滤波的数据,将h放在x上移动进行模板滤波。

y=filter2(h,x)

y =

    1.3333    2.3333    1.7778
    1.7778    3.0000    2.2222
    1.4444    2.3333    1.6667

下面分析过程
填充0后的图像矩阵x:

x =

     0     0     0     0     0     0     0
     0     0     0     0     0     0     0
     0     0     1     2     3     0     0
     0     0     4     5     6     0     0
     0     0     2     2     2     0     0
     0     0     0     0     0     0     0
     0     0     0     0     0     0     0

然后进行乘积和运算
x中
0 0 0
0 1 2
0 4 5
分别和h对应的各元素做乘积然后求和:即(1+2+4+5)*0.1111=1.3333
所得结果即为滤波后图像y的y(1,1)(对应着x(1,1)),以此类推。

(1+2+4+5)*0.1111=(1+2+4+5+6)/9=1.3333
其原理其实就等于用该点的像素值得领域矩阵的均值来代替这点的像素值
即对以该点为中心点的领域矩阵求和 / 领域矩阵大小
下面是均值滤波实现代码:

function [c]=junzhilvbo(j,k)
[m,n]=size(j);
b=zeros(m+2*k,n+2*k);%创建0矩阵
b(k+1:m+k,k+1:n+k)=double(j(:,:));
%    0 0 0(k行0,其他方向也是)
%b=  0 j 0
%    0 0 0
c=zeros(m,n);
for i=k+1:m+k
    for j=k+1:n+k
        b(i,j)=sum(sum(b(i-k:i+k,j-k:j+k)))/((2*k+1).^2);%b(i,j)这个点为中心点的(2*k+1)^2的大小的矩阵的和*(1/(2*k+1))
    end                                                   %这里就是均值均值滤波
end
c(:,:)=b(k+1:m+k,k+1:n+k);
%figure,imshow(c,[]);

中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值,对去椒盐噪声十分有效。
工具箱提供的函数是
g=medfilt2(f,[m,n],padopt)
[m,n]定义一个大小为mn的领域(在该领域上计算中值),padopt指定三个可能的边界填充选项之一(zeros默认值,symmetric,indexed)
默认形式为
g=medfilt2(f)
使用一个3
3的领域并用0填充边界来计算中值
下面看例子

 f=imread('caise.jpg');
 f=rgb2gray(f);
 fn=imnoise(f,'salt & pepper',0.2);%用函数imnosie产生椒盐噪声,0.2代表图中白点黑点出现的概率为0.2
 figure,imshow(fn);
 gm=medfilt2(fn);%中值滤波
 figure,imshow(gm);

带有椒盐噪声图
中值滤波后的图

%%%文章为作者手打,记录和分享自己的学习,如有错误请指出,转载请注明出处

  • 22
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值