空间滤波(平滑滤波)

本实验所采用的空间滤波方法是平滑滤波,下图是两个3*3平滑(均值)滤波器模板,对图像进行平滑处理。

平滑线性空间滤波器的输出响应是包含在滤波器模板邻域内的像素的简单平均值。平滑滤波器多用于模糊处理和降低噪声

 

第一个滤波器产生模板下方的标准像素平均值。其中第二个模板更为重要,产生加权平均,是指使用不同的系数乘以像素,即一些像素的重要性(权重)比另一些像素的重要性大。

因此,一幅M×N的图像经过一个大小为m×n(m和n是奇数)的加权均值滤波器滤波的过程可由下式给出:

即一幅完全滤波的图像是通过对x=0,1,2,…,M-1和y=0,1,2,…N-1执行上式得到的。

部分程序如下:

clc        %清除命令窗口的内容
close all  %关闭所有的Figure窗口
clear all  %清除工作空间的所有变量


%% 使用上述函数实现图像的平滑滤波,其中使用的模板为本文所提及的模板
A=imread('Fig0338(a)(blurry_moon).tif');
figure;
imshow(A);
title('Fig.3.38(a)的原图像');
B=1/9*ones(3);%3*3平滑滤波器模板1
C=1/16*[1 2 1;2 4 2;1 2 1];%3*3平滑滤波器模板2
figure;
subplot(1,2,1);
m=smoothfilter(A,B);%调用平滑滤波函数
imshow(m);
title('平滑滤波器模板1处理后的图像');
subplot(1,2,2);
n=smoothfilter(A,C);%调用平滑滤波函数
imshow(n);
title('平滑滤波器模板2处理后的图像');


%% 平滑线性滤波函数(空间滤波)
function output = smoothfilter(input,M)
input=im2double(input);
if ndims(input)==2 %判断图像维度是否为2
    [a , b]  = size(input);  % 获取图像的尺寸及行列值,并存放在矩阵[a,b]
    output =zeros(a , b);  
    
    for i = 2:a-1
        for j = 2:b-1
            output(i,j) = M(1,1)*input(i-1,j-1) + M(1,2)* input(i-1,j)  + M(1,3)* input(i-1,j+1)  + M(2,1) *input(i,j-1)+...
                M(2,2)* input(i,j)  +  M(2,3)*input(i,j+1)  + M(3,1)  *input(i+1,j-1) +  M(3,2)*input(i+1,j)  +  M(3,3)*input(i+1,j+1);
        end
    end
elseif ndims(input)==3 
    [a , b ,z ]  = size(input);  
    output =zeros(a , b ,z);   %此平滑滤波处理后的图像存放在此矩阵
    for k=1 : z
        for i = 2:a-1
            for j = 2:b-1
                output(i,j,k) = M(1,1)*input(i-1,j-1,k) + M(1,2)* input(i-1,j,k)  + M(1,3)* input(i-1,j+1,k)  + M(2,1) *input(i,j-1,k)+...
                    M(2,2)* input(i,j,k)  +  M(2,3)*input(i,j+1,k)  + M(3,1)  *input(i+1,j-1,k) +  M(3,2)*input(i+1,j,k)  +  M(3,3)*input(i+1,j+1,k);
            end
        end
    end
end

实验结果:

 

 

 

 

 

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值