数字图像处理 - Matlab - 实验笔记四

这篇实验笔记探讨了图像复原与重建,通过Matlab实现了自适应均值滤波与算术均值滤波的对比,自适应中值滤波与中值滤波的对比。此外,还使用特定模糊函数加白高斯噪声对图像进行降质处理,随后应用逆滤波和维纳滤波进行恢复,并对结果进行了分析。
摘要由CSDN通过智能技术生成

第五章 图像复原与重建

1. 实现自适应均值滤波,并和算术均值滤波的结果做对比

程序代码:

% 自适应均值滤波
clear
X=imread('pic.jpg');
% 把原图转为灰度图
X0=double(rgb2gray(X));
% 获取图像大小
[width,height]=size(X0);
% 显示原灰度图
subplot(2,2,1)
imshow(uint8(X0));
title('原灰度图')
% 加高斯白噪声
wgnoise=wgn(width,height,20);
X1=X0+wgnoise;
subplot(2,2,2)
imshow(uint8(X1));
title('加高斯噪声后的灰度图')
% 均值滤波
a=1/9*ones(3,3);
X2=imfilter(X1,a);
subplot(2,2,3)
imshow(uint8(X2));
title('均值滤波后的灰度图')
% 自适应均值滤波
nstd=std2(X1(1:10,1:10));
lstd=stdfilt(X1);
X3=zeros(width,height);
for i=1:width
    for j=1:height
        X3(i,j)=X1(i,j)-(X1(i,j)-X2(i,j))*nstd^2/lstd(i,j)^2;
    end
end
subplot(2,2,4)
imshow(uint8(X3));
title('自适应均值滤波后的灰度图')

输出结果:

automean

2. 实现自适应中值滤波,并和中值滤波的结果做对比

程序代码:

% 这里的自适应中值滤波循环比较多,matlab的循环比较卡,这里每次都做了零延拓,也可以等到框的大小变化的才做,或者只有靠近边缘的像素才做,做实验懒得整了。
% 自适应中值滤波
clear
X=imread('pic.jpg');
% 把原图转为灰度图
X0=double(rgb2gray(X));
% 获取图像大小
[width,height]=size(X0);
% 显示原灰度图
subplot(2,2,1)
imshow(uint8(X0));
title('原灰度图')
% 加脉冲噪声
X1=X0;
for m=1:1000
    X1(ceil(rand*256),ceil(rand*256))=0;
end
for m=1:1000
    X1(ceil(rand*256),ceil(rand*256))=255;
end
% 显示加噪灰度图
subplot(2,2,2)
imshow(uint8(X1));
title('加脉冲噪声灰度图')
% 中值滤波
m=5;
X2=medfilt2(X1,[m,m]);
subplot(2,2,3)
imshow(uint8(X2));
title([num2str(m),'*',num2str(m),'中值滤波'])
% 自适应中值滤波
Smax=11;
Y=zeros(width,height);
for i=1:width
    for j=1:height
        n=3;
        n0=n;
        while 1
            % 边界零延拓
            X3=zeros(width+n-1,height+n-1);
            X3((1+floor(n/2)):(width+floor(n/2)),(1+floor(n/2)):(height+floor(n/2)))=X1(1:width,1:height);
            % 自适应判断
            if n<=Smax
                S=X3(i:(i+n-1),j:(j+n-1));
                zmin=min(min(S));
                zmax=max(max(S));
                so=sort(S);
                zmed=so(round(n/2));
                zxy=X3(i+floor(n/2),j+floor(n/2));
                if ((zmed-zmin)>0 && (zmed-zmax)<0)
                    if (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值