均值滤波(matlab)

**均值滤波:**在图像上对目标像素给一个模板,该模板包括了其周围的临近像素,再用模板中的全体像素的平均值来代替原来像素值。
缺点:均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。
matlab自带函数:

H = fspecial('average',hsize)      %为均值滤波,参数为hsize代表模板尺寸,默认值为【3,3】。
H = fspecial('disk',radius)      %为圆形区域均值滤波,参数为radius代表区域半径,默认值为5.

另一种方法:

x=imread('G:\matlab\1.jpg');%需要过滤的图像
n=3;    %模板大小
[height, width]=size(x);   %获取图像的尺寸(n小于图片的宽高)
figure;
imshow(x);%显示原图
% x = padarray(x,[3,3]); %对图像边缘进行填充
x = imnoise(x,'salt & pepper'); %加入椒盐噪声
figure;
imshow(x); %显示加入噪声后的图片
x1=double(x);  %数据类型转换
x2=x1;  %转换后的数据赋给x2
for i=1:height-n+1  
    for j=1:width-n+1  
        c=x1(i:i+(n-1),j:j+(n-1)); %在x1中从头取模板大小的块赋给c  
        e=c(1,:);      %e中存放是c矩阵的第一行  
        for u=2:n  %将c中的其他行元素取出来接在e后使e为一个行矩阵 
            e=[e,c(u,:)];          
        end  
        s=sum(e);      %取一行的和  
        x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n);   %将模板各元素的均值赋给模板中心位置的元素  
    end  
end    
d=uint8(x2);  %未被赋值的元素取原值 
figure;
imshow(d);  %显示过滤图片
C=rgb2gray(x);  %灰度处理,灰度处理后的图像是二维矩阵
A=fspecial('average',[n,n]);  %matlab中自带值滤波函数
b=imfilter(C,A);
figure;
imshow(b); %显示过滤后的灰度图片

原图:
在这里插入图片描述
加入噪声后图:
在这里插入图片描述
程序降噪图:
在这里插入图片描述
自带函数降噪图:
在这里插入图片描述

  • 34
    点赞
  • 243
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值