空域内的滤波复原(matlab)

空域内的滤波复原方法主要包括:均值滤波复原、顺序统计滤波复原和自适应滤波复原。

均值滤波

设坐标点(x,y),大小为m×n的矩形窗口表示为Sxy

算术平均值的窗口Sxy中被干扰图像g(x,y)的平均值,即:
在这里插入图片描述
几何均值滤波器复原图像的表达式:
在这里插入图片描述
逆谐波均值滤波器的表达式:其中Q为滤波器的阶数,当Q为正数时,可去除椒噪声;当Q为负数时,可去除盐噪声。但是不能同时消去椒噪声和盐噪声。当Q=-1时,为谐波均值滤波器。
在这里插入图片描述
算术均值和几何均值滤波:

>> I = imread('E:\persional\matlab\images\lena.bmp');
>> I = im2double(I);
>> I = imnoise(I,'gaussian',0.05);%添加高斯噪声
>> fsp = fspecial('average',3);%产生滤波器
>> J = imfilter(I,fsp);%算术均值滤波
>> K = exp(imfilter(log(I),fsp));%几何均值滤波
>> figure,
>> subplot(131),imshow(I);
>> subplot(132),imshow(J);
>> subplot(133),imshow(K);

在这里插入图片描述
采用逆谐波均值滤波器进行滤波:

>> I = imread('E:\persional\matlab\images\lena.bmp');
>> I = im2double(I);
>> I = imnoise(I,'salt & pepper',0.01);
>> fsp = fspecial('average',3);
>> Q1 = 1.6;
>> Q2 = -1.6;
>> J1 = imfilter(I.^(Q1+1),fsp);
>> J2 = imfilter(I.^(Q1),fsp);
>> J = J1./J2;%逆谐波滤波,Q为正
>> K1 = imfilter(I.^(Q2+1),fsp);
>> K2 = imfilter(I.^(Q2),fsp);
>> K = K1./K2;%逆谐波滤波,Q为负
>> figure,
>> subplot(131),imshow(I);
>> subplot(132),imshow(J);
>> subplot(133),imshow(K);

在这里插入图片描述

顺序统计滤波

顺序统计滤波包括中值滤波、最大值滤波和最小值滤波,中值滤波能够很好保留图像边缘,非常适合去除椒盐噪声,比均值滤波效果更优。

中值滤波:坐标点(x,y),大小为m×n的窗口表示为Sxy,中值滤波是选取窗口Sxy中被干扰图像g(x,y)的中值,作为坐标点(x,y)的输出,公式为:
在这里插入图片描述
最大值滤波器:可以去除椒盐噪声,但是从黑色物体的边缘去除一些黑色像素,公式为:
在这里插入图片描述
最小值滤波器:可以去除椒盐噪声,但是从白色物体的边缘去除一些白色像素,公式为:
在这里插入图片描述
二维中值滤波对图像进行复原:

J = medfilt2(I):该函数对图像进行二维中值滤波,窗口大小为默认值,即3×3

J = medfilt2(I,[m,n]):该函数在进行中值滤波时,采用窗口大小为m×n

>> I = imread('E:\persional\matlab\images\ba.tif');
>> I = im2double(I);
>> I = imnoise(I,'salt & pepper',0.05);
>> J = medfilt2(I,[3,3]);%二维中值滤波
>> figure,
>> subplot(121),imshow(I);
>> subplot(122),imshow(J);

在这里插入图片描述
二维排序滤波对图像进行修复:

J = ordfilt2(I,order,domain):
domain:将矩阵domain中的非零值对应的元素经行排
order:像素的位置

>> I = imread('E:\persional\matlab\images\ba.tif');
>> I = im2double(I);
>> I = imnoise(I,'salt & pepper',0.1);
>> domain=[0 1 1 0;1 1 1 1;0 1 1 0];%窗口模板
>> J = ordfilt2(I,6,domain);%顺序滤波
>> figure,
>> subplot(121),imshow(I);
>> subplot(122),imshow(J);

在这里插入图片描述
最大最小值进行滤波复原:

>> I = imread('E:\persional\matlab\images\ba.tif');
>> I = im2double(I);
>> I = imnoise(I,'salt & pepper',0.01);
>> J = ordfilt2(I,1,ones(4,4));
>> K = ordfilt2(I,9,ones(3));
>> figure,
>> subplot(131),imshow(I);
>> subplot(132),imshow(J);
>> subplot(133),imshow(K);

在这里插入图片描述

自适应滤波

根据局部方差来调整滤波器的输出

J = wiener2(I,[m,n],noise):对图像进行自适应维纳滤波,还可以对噪声进行估计
[J,noise] = wiener2(I,[m,n]):对图像中的噪声进行估计,返回值noise为噪声的能量
[m,n]:采用窗口大小为m×n,默认为3×3
noise:噪声的能量

>> I = imread('E:\persional\matlab\images\lena.bmp');
>> I = rgb2gray(I);
>> J = imnoise(I,'gaussian',0,0.03);
>> [K,noise] = wiener2(J,[5,5]);%自适应滤波
>> figure,
>> subplot(121),imshow(J);
>> subplot(122),imshow(K);

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值