数字图像处理实验六 图像复原

数字图像处理学习记录
实验内容
(1)基于均值滤波器的图像复原。

img=imread('cameraman.tif');%读取图片
subplot(2,3,1);
imshow(img); %显示图像
title(''),xlabel('原图');


img_noise=double(imnoise(img,'gaussian',0.06)); %对图像附加高斯噪声
subplot(2,3,2);
imshow(img_noise,[]); %显示加噪图像
title(''),xlabel('高斯噪声污染的图像');

img_mean=imfilter(img_noise,fspecial('average',3));%对附加有高斯噪声的图像实行均值滤波器
subplot(2,3,3);
imshow(img_mean,[]);%显示算术均值滤波后的图像
title(''),xlabel('用3x3算数均值滤波器滤波');

img_mean=exp(imfilter(log(img_noise),fspecial('average',3)));%对附加有高斯噪声的图像实施几何均值滤波
subplot(2,3,4);
imshow(img_mean,[]);
title(''),xlabel('3x3的几何均值滤波器滤波');

Q=-1.5;  %对高斯噪声图像进行Q取负值的逆谐波滤波
img_mean=imfilter(img_noise.^(Q+1),fspecial('average',3))./imfilter(img_noise.^Q,fspecial(('average'),3));
subplot(2,3,5);
imshow(img_mean,[]);
title(''),xlabel('Q=-1.5的逆谐波滤波器滤波');

Q=1.5;  %对高斯噪声图像进行Q取正数的逆谐波滤波
img_mean=imfilter(img_noise.^(Q+1),fspecial('average',3))./imfilter(img_noise.^Q,fspecial(('average'),3));
subplot(2,3,6);
imshow(img_mean,[]);
title(''),xlabel('Q=1.5的逆谐波滤波器滤波');

(2)基于顺序统计滤波器的图像复原。

img=imread('cameraman.tif');%读取图片
subplot(2,3,1);
imshow(img); %显示图像
title(''),xlabel('原图');

img_noise=double(imnoise(img,'salt & pepper',0.06));%加“椒盐”噪声
subplot(2,3,2);
imshow(img_noise,[]); %显示图像
title(''),xlabel('椒盐噪声污染的图像');

img_mean=imfilter(img_noise,fspecial('average',5));%对附加“椒盐”噪声的图像实行算术均值滤波
subplot(2,3,3);
imshow(img_mean,[]); %显示图像
title(''),xlabel('均值滤波结果');

img_median=medfilt2(img_noise);%对附加“椒盐”噪声的图像实行中值滤波
subplot(2,3,4);
imshow(img_median,[]); %显示图像
title(''),xlabel('中值滤波结果');

img_median2=medfilt2(img_noise);
subplot(2,3,5);
imshow(img_median2,[]); %显示图像
title(''),xlabel('再次中值滤波结果');

(3)基于带阻滤波器的图像复原。

img=imread('lenazhouqizaosheng.jpg');%读取图片
[M,N]=size(img);%得到图像的高度和宽度
subplot(2,2,1);
imshow(img); %显示图像
title(''),xlabel('含有周期噪声的原图');

IF=fftshift(fft2(img));  %对加噪图像进行傅里叶变换,并将原点移至中心点
IFV=log(1+abs(IF));  %加噪图像的频谱
subplot(2,2,2);
imshow(IFV,[]); %显示加噪图像的频谱
title(''),xlabel('加噪图像的频谱');

freg=50;  %设置带阻滤波器的中心频率
width=5;  %设置带阻滤波器的频带宽度
ff=ones(M,N);
for i=1:M
    for j=1:N
        ff(i,j)=1-exp(-0.5*((((i-M/2)^2+(j-N/2)^2)-freg^2)/(sqrt((i-M/2)^2+(j-N/2)^2)*width))^2);%高斯带阻滤波器
    end
end
subplot(2,2,3);
imshow(ff,[]); %显示高斯带阻滤波器
title(''),xlabel('高斯带阻滤波器');

out=IF.*ff;    %矩阵点乘实现频域滤波
out=ifftshift(out);  %原点移回左上角
out=ifft2(out);  %傅里叶变换
out=abs(out);    %取绝对值
out=out/max(out(:));  %归一化
subplot(2,2,4);
imshow(out,[]); %显示滤波结果
title(''),xlabel('滤波效果图');
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值