实验四 图像频域增强和图像恢复(数字图像处理)

实验四 图像频域增强和图像恢复

一、实验意义及目的

(1)进一步掌握图像处理工具Matlab,熟悉基于Matlab的图像处理函数。

(2)掌握各种基于正交变换的图像频域增强方法。

(3)掌握图像恢复的基本方法。

二、实验内容

在前面的基础上如下功能:

       1.对一副噪声图像, 进行理想低通滤波、巴特沃斯低通滤波、理想高通滤波、巴特沃斯高通滤波、高通增强

实验对比:叠加不同的噪声(高斯、椒盐)、采用不同的截断频率, 对处理结果进行对比

–   2. 利用fspcial函数,对一副图像模拟不同的退化效果:运动模糊、高斯模糊、均值模糊

–   3. 对模糊图像进行维纳滤波复原

实验对比:对叠加噪声、不叠加噪声的模糊图像分别进行滤波结果对比;

三、算法原理

  1. 图像滤波:对输入的图像进行处理,去除噪声、平滑细节等。其中理想低通滤波、巴特沃斯低通滤波、理想高通滤波、巴特沃斯高通滤波、高通增强是不同的滤波器类型。低通滤波器可以提取图像中的低频信息,例如图像的整体亮度变化;而高通滤波器则可以突出图像中的边缘和纹理等高频细节信息。
  2. 图像模拟退化:用fspcial函数来模拟退化效果,其中运动模糊、高斯模糊、均值模糊是不同的模糊核类型。运动模糊是由于相机或者物体运动造成的图像模糊,常见于拍摄运动物体或手持拍摄时相机晃动;高斯模糊则是由于图像受到高斯噪声污染引起的模糊;均值模糊是一种简单的线性模糊方法,将每个像素的值替换为周围像素的平均值。
  3. 维纳滤波复原:维纳滤波是一种基于最小均方误差(MSE)准则的复原方法,可以用来恢复受到退化和噪声干扰的图像。它通过在频域中对图像进行加权平均,降低噪声和退化引起的影响,同时保留图像中的细节信息。

四、程序流程

对一副噪声图像进行不同滤波器处理的程序流程:

  1. 读入一副噪声图像。
  2. 对图像进行理想低通滤波,巴特沃斯低通滤波,理想高通滤波,巴特沃斯高通滤波和高通增强,并记录每种方法处理后的图像。
  3. 对每种处理后的图像,叠加高斯噪声和椒盐噪声,分别记录处理后的结果。
  4. 改变截断频率,重新进行上述处理,记录每种方法不同截断频率下的结果。
  5. 对比每种滤波器在不同参数下的处理效果。

利用fspcial函数模拟不同退化效果和维纳滤波复原的程序流程:

  1. 读入一副图像并显示原始图像。
  2. 利用fspcial函数,对图像进行运动模糊、高斯模糊、均值模糊处理,并记录每种方法处理后的图像。
  3. 对每种处理后的图像,叠加高斯噪声和椒盐噪声,分别记录处理后的结果。
  4. 对每种模糊处理方法对应的带噪声图像,采用维纳滤波复原方法进行处理,并记录处理后的结果。
  5. 对比每种模糊方法和带噪声情况下的滤波复原效果。

五、算法各部分主要代码以及注释(运行结果)

1. 1

f=imread('rice.png');

f=double(f);

I1=imnoise(f,'gaussian',0.1,0.1); %对图像添加高斯噪声污染

I4=imnoise(f,'salt & pepper'); %对图像添加椒盐噪声污染

F=fftshift(fft2(f));%对图像进行傅立叶变换并将频域中心偏移到中点

d0=20; %截止频率

[m,n]=size(f); %理想低通滤波

h=0;

for u=1:m

    for v=1:n

        if sqrt((u-m/2)*(u-m/2)+(v-n/2)*(v-n/2))<=d0

            h=1;

        else

            h=0;

        end

        FH(u,v)=F(u,v)*h;

    end

end

fh=ifft2(FH); %巴特沃斯低通滤波

nb=1;

for u=1:m

    for v=1:n

        hb=1/(1+(sqrt(2)-1)*(sqrt((u-m/2)*(u-m/2)+(v-n/2)*(v-n/2))/d0)^(2*nb));

        FHB(u,v)=F(u,v)*hb;

    end

end

figure

subplot(2,4,1),imshow(uint8(f)); title('原图像');

subplot(2,4,2),imshow(uint8(abs(fh)),[]);title('理想低通滤波')

subplot(2,4,3),imshow(abs(fhb),[]);title('巴特沃斯低通滤波')

1.2

f=imread('rice.png');

f=double(f);

I1=imnoise(f,'gaussian',0.1,0.1); %对图像添加高斯噪声污染

I4=imnoise(f,'salt & pepper'); %对图像添加椒盐噪声污染

F=fftshift(fft2(I1));%对图像进行傅立叶变换并将频域中心偏移到中点

d0=10; %截止频率

[m,n]=size(I1); %理想低通滤波

h=0;

for u=1:m

    for v=1:n

        if sqrt((u-m/2)*(u-m/2)+(v-n/2)*(v-n/2))<=d0

            h=1;

        else

            h=0;

        end

        FH(u,v)=F(u,v)*h;

    end

end

fh=ifft2(FH); %巴特沃斯低通滤波

nb=1;

for u=1:m

    for v=1:n

        hb=1/(1+(sqrt(2)-1)*(sqrt((u-m/2)*(u-m/2)+(v-n/2)*(v-n/2))/d0)^(2*nb));

        FHB(u,v)=F(u,v)*hb;

    end

end

figure

subplot(2,4,1),imshow(uint8(f)); title('原图像');

subplot(2,4,2),imshow(I1),title('高斯噪声污染图像');

subplot(2,4,3),imshow(I4),title('椒盐噪声污染图像');

subplot(2,4,4),imshow(uint8(abs(fh)),[]);title('高斯噪声污染后的理想低通滤波')

subplot(2,4,5),imshow(abs(fhb),[]);title('巴特沃斯低通滤波')

1.3

             f=imread('rice.png');

f=double(f);

F=fftshift(fft2(f));%对图像进行傅立叶变换并将频域中心偏移到中点

d0=10; %截止频率

[m,n]=size(f); %理想高通滤波

h=0;

for u=1:m

    for v=1:n

        if sqrt((u-m/2)*(u-m/2)+(v-n/2)*(v-n/2))<=d0

               h=0;

        else

            h=1;

        end

        FH(u,v)=F(u,v)*h;

    end

end

fh=ifft2(FH); %巴特沃斯高通滤波

nb=1;

for u=1:m

    for v=1:n

        hb=1/(1+(sqrt(2)-1)*(d0/sqrt((u-m/2)*(u-m/2)+(v-n/2)*(v-n/2)))^(2*nb));

        FHB(u,v)=F(u,v)*hb;

    end

end

fhb=ifft2(FHB);

figure,subplot(1,3,1),imshow(uint8(f)); title('原图像');

subplot(1,3,2),imshow(uint8(abs(fh)),[]);title('理想高通滤波');;

subplot(1,3,3),imshow(abs(fhb),[]);title('巴特沃斯高通滤波')

1.4

f=imread('rice.png');

f=double(f);

I1=imnoise(f,'gaussian',0.1,0.1); %对图像添加高斯噪声污染

I4=imnoise(f,'salt & pepper'); %对图像添加椒盐噪声污染

F=fftshift(fft2(I4));%对图像进行傅立叶变换并将频域中心偏移到中点

d0=10; %截止频率

[m,n]=size(I4); %理想高通滤波

h=0;

for u=1:m

    for v=1:n

        if sqrt((u-m/2)*(u-m/2)+(v-n/2)*(v-n/2))<=d0

               h=0;

        else

            h=1;

        end

        FH(u,v)=F(u,v)*h;

    end

end

fh=ifft2(FH); %巴特沃斯高通滤波

nb=1;

for u=1:m

    for v=1:n

        hb=1/(1+(sqrt(2)-1)*(d0/sqrt((u-m/2)*(u-m/2)+(v-n/2)*(v-n/2)))^(2*nb));

        FHB(u,v)=F(u,v)*hb;

    end

end

fhb=ifft2(FHB);

figure

subplot(2,3,1),imshow(uint8(f)); title('原图像');

subplot(2,3,2),imshow(I1),title('高斯噪声污染图像');

subplot(2,3,3),imshow(I4),title('椒盐噪声污染图像');

subplot(2,3,4),imshow(uint8(abs(fh)),[]);title('椒盐噪声污染后的理想高通滤波');

subplot(2,3,5),imshow(abs(fhb),[]);title('椒盐噪声污染的巴特沃斯高通滤波');

2.1

%对图像进行加噪声

I=imread('Lena.bmp');

%I=rgb2gray(I);

PSF=fspecial('motion',31,11);

J=imfilter(I,PSF,'conv');

figure,subplot(2,2,1),imshow(I);title('源图像')

subplot(2,2,2),imshow(J),title('运动模糊图像')

PSF=fspecial('disk',5); J=imfilter(I,PSF,'conv');

subplot(2,2,3),imshow(J),title('均值模糊图像')

PSF=fspecial('gaussian',31,3); J=imfilter(I,PSF,'conv');

subplot(2,2,4),imshow(J),title('高斯模糊图像')

3.1

I=imread('Lena.bmp');

psf=fspecial('motion',31,11);

blurred=imfilter(I,psf,'full');

wnr=deconvwnr(blurred,psf,0.1);

figure,subplot(2,2,1),imshow(I),title('原图像')

subplot(2,2,2),imshow(blurred),title('运动模糊图像')

subplot(2,2,3),imshow(wnr),title('魏纳滤波复原图像')

3.2

I=imread('Lena.bmp');

psf=fspecial('motion',21,11);

blurred=imfilter(I,psf,'full');

noise=0.1*randn(size(blurred)); %生成随机噪声矩阵

bn=imadd(blurred,im2uint8(noise)); %bn为含噪的模糊图像

nsr=sum(noise(:).^2)/sum(im2double(I(:)).^2); %计算信噪比

wnr=deconvwnr(bn,psf,0.1); wnr1=deconvwnr(bn,psf,nsr);

NP=abs(fftn(noise).^2); %计算噪声图像的能量

IP=abs(fftn(im2double(I)).^2); %计算原图像的能量,可以用含噪的模糊图像代替原图像

NCORR=fftshift(real(ifftn(NP))); %计算噪声图像的相关系数

ICORR=fftshift(real(ifftn(IP))); %计算原图像的相关系数

wnr2=deconvwnr(bn,psf,NCORR,ICORR);

figure,subplot(2,3,1),imshow(I),title('原图像')

subplot(2,3,2),imshow(blurred),title('运动模糊图像')

subplot(2,3,3),imshow(bn),title('含噪的运动模糊图像')

subplot(2,3,4),imshow(wnr),title('不考虑噪声复原图像')

subplot(2,3,5),imshow(wnr1),title('已知信噪比复原图像')

subplot(2,3,6),imshow(wnr2),title('已知NCORR与ICORR复原图像')

六、结果分析

  1. 对一副噪声图像进行理想低通滤波、巴特沃斯低通滤波、理想高通滤波、巴特沃斯高通滤波和高通增强实验对比的结果分析如下:

该实验通过对同一幅噪声图像用不同类型的滤波器,以及在添加高斯和椒盐噪声时应用不同的截断频率,对处理结果进行对比。由于理想滤波器具有无限响应,因此在实际应用中很难实现,故出现了图片黑屏的情况。而巴特沃斯滤波器则可以通过改变截止频率来控制滤波效果。理想低通滤波器可以有效地去除高频噪声,但会使得图像模糊;而巴特沃斯低通滤波器可以平衡噪声抑制和图像清晰度,并且其表现更加平滑。理想高通滤波器可以突出图像中的高频细节,但也会同时增强噪声。巴特沃斯高通滤波器则可以抑制低频信息并增强高频信息。高通增强滤波器可以在尽可能保留高频细节的同时消除低频噪声,但需要找到一个合适的增益因子来平衡两者。

2.利用fspcial函数对一副图像模拟不同的退化效果:运动模糊、高斯模糊、均值模糊的结果分析如下:

该实验通过对同一幅图像应用不同类型的模糊滤波器,模拟了图像的不同退化效果。运动模糊是由于相机或目标物体的移动而导致的模糊,可以通过线性运动模糊滤波器模拟;高斯模糊是由于图像中的像素受到随机噪声的影响而导致的模糊,可以通过高斯滤波器模拟;均值模糊是由于图像中的像素被周围像素的平均值替代而导致的模糊,可以通过均值滤波器模拟。

3.对模糊图像进行维纳滤波复原的结果分析如下:

首先是图像质量。在实验中,我们对模糊图像进行了维纳滤波复原,并将处理后的图像与原始图像进行对比,以评估处理后图像的质量。通常情况下,经过滤波处理的图像应该具有更高的清晰度、更少的噪点和更好的细节,而不受过多失真。

其次是滤波效果。实验中我们对比了对叠加噪声和不叠加噪声的模糊图像进行滤波后的结果。通过对比两种情况下滤波后的图像,我们可以得出对于叠加噪声的模糊图像,维纳滤波能够更好地去除噪声并恢复细节,而对于没有叠加噪声的模糊图像,维纳滤波也能够提高图像质量,但改善效果可能不如对叠加噪声的模糊图像这么显著。

七、总结

在进行图像处理时,通过不同类型的滤波器,可以达到不同的效果。本实验中,使用了理想低通滤波、巴特沃斯低通滤波、理想高通滤波、巴特沃斯高通滤波和高通增强等方法对一副噪声图像进行处理,并比较了不同截断频率、叠加不同噪声的影响。可以发现,低通滤波可以去除图像中的高频信息,保留较低频的信息,使图像变得平滑。高通滤波则相反,可以增强图像中的高频信息,使图像看起来更加锐利。总之,在图像处理中,选择合适的滤波器和参数非常重要。在实验中还使用了Matlab的fspcial函数,模拟了不同类型的退化效果,包括运动模糊、高斯模糊和均值模糊。通过对这些效果的模拟,可以更好地理解这些模糊效果对图像造成的影响。同时还学习了对模糊图像进行维纳滤波复原的方法。该方法可以有效地去除图像中的噪声和模糊,并提高图像的清晰度和质量。总的来说,本次实验让我更深入地理解了相关知识,同时也体会到了实际应用中的一些技巧和细节。

猜你喜欢

转载自blog.csdn.net/m0_63975371/article/details/131579514
今日推荐