用matlab编程实现对图像的均值滤波,中值滤波和拉普拉斯算子锐化

1 均值滤波
  • 均值滤波:用包含在滤波掩模邻域内的像素的平均灰度值去代替每个像素点的值。
  • 用途:用于模糊处理和减少噪声。
    盒滤波器:

    加权平均滤波器
% 均值滤波
clc;close all;clear all;
I = rgb2gray(imread('fig.png'));
F = imnoise(I,'gaussian',0, 0.02); % 加入高斯噪声
% F = imnoise(I,'salt & pepper',0.02); %加入椒盐躁声
v = 1/9*[1 1 1;1 1 1;1 1 1];  % 盒滤波器
v2 = 1/16*[1 2 1;2 4 2;1 2 1];  %  加权平均滤波器
[m, n] = size(I);
G = zeros(m,n);
H = zeros(m,n);
for x=1:m
    for y = 1:n
        if (x==1||y==1||x==m||y==n)
            G(x,y)=F(x,y);
            H(x,y)=F(x,y);
        else  % 对图像进行卷积处理
            G(x,y)=v(1,1) * F(x-1, y-1) + v(1,2) * F(x-1, y)+v(1,3) *F(x-1, y+1)...
                +v(2,1) * F(x, y-1)+v(2,2)* F(x, y)+v(2,3) * F(x, y+1)...
                +v(3,1) * F(x+1, y+1) + v(3,2) * F(x+1, y)+v(3,3)* F(x+1, y+1);
            H(x,y)=v2(1,1) * F(x-1, y-1) + v2(1,2) * F(x-1, y)+v2(1,3) * F(x-1, y+1)...
                +v2(2,1) * F(x, y-1)+v2(2,2)* F(x, y)+v2(2,3) * F(x, y+1)...
                +v2(3,1) * F(x+1, y+1) + v2(3,2) * F(x+1, y)+v2(3,3) * F(x+1, y+1);
        end
    end
end
figure
subplot(221)
imshow(I);
title('原始图像');
subplot(222)
imshow(uint8(F));
% title('加入椒盐噪声后的图像');
title('加入高斯噪声后的图像');
subplot(223)
imshow(uint8(G));
title('均值滤波后的图像');
subplot(224)
imshow(uint8(H));
title('加权均值滤波后的图像');

2 中值滤波
  • 中值滤波:先将掩模内欲求的像素及其领域的像素值排序(升序或降序),确定出中值,并将中值赋予该像素点。
  • 强迫突出的亮点(暗点)更象它周围的值,以消除孤立的亮点(暗点)。
  • 二维中值滤波的窗口形状和尺寸对滤波效果影响较大,不同的图像内容和不同的应用要求,往往采用不同的窗口形状和尺寸。常用的二维中值滤波窗口有线状、方形、圆形、十字形以及圆环形等。窗口尺寸一般先用3×3,再取5×5逐渐增大,直到滤波效果满意为止。就一般经验来讲,对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜。对于包含有尖顶物体的图像,用十字形窗口,而窗口大小则以不超过图像中最小有效物体的尺寸为宜。如果图像中点、线、尖角细节较多,则不宜采用中值滤波。
  • 主要功能:使拥有不同灰度的点看起来更接近于它的邻近值。
  • 用途:去除椒盐噪声
% 中值滤波
clc;close all;clear all;
I = rgb2gray(imread('fig.png'));
% F = imnoise(I,'gaussian',0, 0.002);
F = imnoise(I,'salt & pepper',0.06);
[m, n] = size(I);
G = zeros(m,n);
for x=1:m
    for y = 1:n
        if (x==1||y==1||x==m||y==n)
            G(x,y)=F(x,y);
        else  % 选出第5大的数
            H = sort([F(x-1,y-1), F(x-1,y),F(x-1,y+1),F(x,y),... 
                F(x,y+1),F(x+1,y-1),F(x+1,y),F(x+1,y+1)]);
            G(x,y)=median(H);
        end
    end
end
figure
subplot(221)
imshow(I);
title('原始图像');
subplot(222)
imshow(uint8(F));
title('加入椒盐噪声后的图像');
subplot(223)
imshow(uint8(G));
title('中值滤波后的图像');

3 拉普拉斯算子锐化
  • 拉普拉斯微分算子强调图像中灰度的突变,弱化灰度慢变化的区域。这将产生一幅把浅灰色边线、突变点叠加到暗背景中的图像。
  • 对二元图像函数f(x,y)的拉普拉斯变换定义为:

Δ 2 f = [ f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y − 1 ) + f ( x , y + 1 ) ] − 4 f ( x , y ) \Delta^2 f = [f(x+1,y) + f(x-1,y)+f(x,y-1)+f(x,y+1)]-4f(x,y) Δ2f=[f(x+1,y)+f(x1,y)+f(x,y1)+f(x,y+1)]4f(x,y)

对应的掩模为:

微分掩模的所有系数之和为0以保证灰度恒定区域的响应为0

将原始图像和拉普拉斯图像叠加在一起的简单方法可以保护拉普拉斯锐化处理的效果,同时又能复原背景信息。因此拉普拉斯算子用于图像增强的基本方法如下:

clc;close all;clear all;
F = rgb2gray(imread('fig.png')); 
[m,n]=size(F); 
G=zeros(m,n); 
H=zeros(m,n); 
w=[0,-1,0;-1,4,-1;0,-1,0]; 
for x=1:m     
    for y=1:n         
        if (x==1||y==1||x==m||y==n)            
            G(x,y)=F(x,y);         
        else
            G(x,y)=w(1,1)*F(x-1,y-1)+w(1,2)*F(x-1,y)+w(1,3)*F(x-1,y+1)...                 
                +w(2,1)*F(x,y-1)+w(2,2)*F(x,y)+w(2,3)*F(x,y+1)...                 
                +w(3,1)*F(x+1,y+1)+w(3,2)*F(x+1,y)+w(3,3)*F(x+1,y+1);                     
        end
    end
end
figure 
subplot(121) 
imshow(F) 
title('原始图像'); 
subplot(122) 
imshow(uint8(G)); 
title('拉普拉斯算子处理后的图像');
  • 14
    点赞
  • 179
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值