数字图像处理实验四图像频域增强

一、实验目的

(1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法。

(2)熟练掌握低通、高通、带通、同态滤波器的使用方法,明确不同性质的滤波器对图像的影响和作用。

二、实验内容

(1)选择合适的灰度图像,添加随机噪声

(2)对图像进行低通滤波,观察滤波效果

(3)选择一灰度图像,进行高通滤波,观察滤波效果

(4)选择合适的灰度图像,进行带通滤波,观察滤波效果

(5)选择合适的数字图像,进行同态滤波,观察滤波效果

三、实验代码及结果、分析

(1)选择合适的灰度图像,添加随机噪声

  • 代码:

I=imread('E:\大三课件\大三下\数字图像处理\实验\实验四\shiyan4.jpg');

I1=rgb2gray(I);

I2=imnoise(I1,'gaussian',0.03);       %加均值为0,方差为0.03的高斯噪声

I3=double(I2);

fft_I=fft2(I2);         % 二维离散傅立叶变换

shift_I=fftshift(fft_I);    % 直流分量移到频谱中心

[M,N]=size(shift_I);

m=floor(M/2);

n=floor(N/2);

figure(1)

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

subplot(1,3,2),imshow(I1),title('灰度图像');

subplot(1,3,3),imshow(I2),title('加入高斯噪声');      %显示有高斯噪声图像

  • 结果:

  • 分析:
  1. 用imnoise()函数给图像添加噪声,简单的噪声有以下5种类型:’gaussian’(高斯白噪声),‘localvar’ (与图象灰度值有关的零均值高斯白噪声),’poisson’(泊松噪声), ‘salt & pepper’(椒盐噪声)、’speckle’(斑点噪声)。本题中加入高斯噪声

(2)选择一灰度图像,进行通滤波,观察滤波效果

  • 代码

%低通滤波

level=4;%2级巴特沃斯滤波器 2时接近高斯,5时接近理想,但是数值更大时会有模糊效应

d1=20;

d2=50;%截止半径

d3=300;

%巴特沃斯低通滤波

for i=1:M

    for j=1:N

       d=sqrt((i-m)^2+(j-n)^2);

       h11=1/(1+0.414*(d/d1)^(2*level));

       h12=1/(1+0.414*(d/d2)^(2*level));

       h13=1/(1+0.414*(d/d3)^(2*level));

      result11(i,j)=h11*shift_I(i,j);

      result12(i,j)=h12*shift_I(i,j);

      result13(i,j)=h13*shift_I(i,j);

    end

end

result111=uint8(real(ifft2(ifftshift(result11))));

result112=uint8(real(ifft2(ifftshift(result12))));

result113=uint8(real(ifft2(ifftshift(result13))));

%高斯低通滤波

for i=1:M

    for j=1:N

       d=sqrt((i-m)^2+(j-n)^2);

       h21=exp(-1/2*(d^2/d1^2));

       h22=exp(-1/2*(d^2/d2^2));

       h23=exp(-1/2*(d^2/d3^2));

       result21(i,j)=h21*shift_I(i,j);

       result22(i,j)=h22*shift_I(i,j);

       result23(i,j)=h23*shift_I(i,j);

    end

end

result121=uint8(real(ifft2(ifftshift(result21))));

result122=uint8(real(ifft2(ifftshift(result22))));

result123=uint8(real(ifft2(ifftshift(result23))));

figure(2)

subplot(2,3,1),imshow(result111),title('巴特沃斯低通滤波d=20');

subplot(2,3,2),imshow(result112),title('巴特沃斯低通滤波d=50');

subplot(2,3,3),imshow(result113),title('巴特沃斯低通滤波d=300');        

subplot(2,3,4),imshow(result121),title('高斯低通滤波d=20');

subplot(2,3,5),imshow(result122),title('高斯低通滤波d=50');

subplot(2,3,6),imshow(result123),title('高斯低通滤波d=300');       

  • 结果:

  • 分析:

     1.巴特沃斯低通滤波器的传递函数为:h=1/(1+0.414*(d/d0)^(2*level));

     高斯低通滤波器的传递函数为 h=exp(-1/2*(d^2/d0^2));

d0为截止半径,level巴特沃斯低通滤波器的阶数

  1. 滤波器的半径不同时,对应的滤波效果也不同,半径越小,平滑效果越明显,但是半径过小,会使得图像变得模糊不清
  2. %巴特沃斯滤波器 2阶时接近高斯,5时接近理想,但是数值更大时会有模糊效应

(3)选择一灰度图像,进行高通滤波,观察滤波效果

  • 代码:

%高通滤波

level=4;%2级巴特沃斯滤波器 2时接近高斯,5时接近理想,但是数值更大时会有模糊效应

d1=2;

d2=4;%截止半径

d3=8;

%巴特沃斯高通滤波

for i=1:M

    for j=1:N

       d=sqrt((i-m)^2+(j-n)^2);

       h11=1/(1+0.414*(d1/d)^(2*level));

       h12=1/(1+0.414*(d2/d)^(2*level));

       h13=1/(1+0.414*(d3/d)^(2*level));

      result11(i,j)=h11*shift_I(i,j);

      result12(i,j)=h12*shift_I(i,j);

      result13(i,j)=h13*shift_I(i,j);

    end

end

result111=uint8(real(ifft2(ifftshift(result11))));

result112=uint8(real(ifft2(ifftshift(result12))));

result113=uint8(real(ifft2(ifftshift(result13))));

%高斯高通滤波

for i=1:M

    for j=1:N

       d=sqrt((i-m)^2+(j-n)^2);

       h21=1-exp(-1/2*(d^2/d1^2));

       h22=1-exp(-1/2*(d^2/d2^2));

       h23=1-exp(-1/2*(d^2/d3^2));

       result21(i,j)=h21*shift_I(i,j);

       result22(i,j)=h22*shift_I(i,j);

       result23(i,j)=h23*shift_I(i,j);

    end

end

result121=uint8(real(ifft2(ifftshift(result21))));

result122=uint8(real(ifft2(ifftshift(result22))));

result123=uint8(real(ifft2(ifftshift(result23))));

figure(1)

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

subplot(1,3,2),imshow(I1),title('灰度图像');

subplot(1,3,3),imshow(I2),title('加入高斯噪声');         %显示有高斯噪声图像

figure(2)

subplot(2,3,1),imshow(result111),title('巴特沃斯高通滤波d=20');

subplot(2,3,2),imshow(result112),title('巴特沃斯高通滤波d=50');

subplot(2,3,3),imshow(result113),title('巴特沃斯高通滤波d=300');        

subplot(2,3,4),imshow(result121),title('高斯高通滤波d=20');

subplot(2,3,5),imshow(result122),title('高斯高通滤波d=50');

subplot(2,3,6),imshow(result123),title('高斯高通滤波d=300');     

  • 结果:

  • 分析:

    1、巴特沃斯高通滤波器的传递函数为:h=1/(1+0.414*(d0/d)^(2*level));

       高斯高通滤波器的传递函数为 h=1-exp(-1/2*(d^2/d0^2));

    2、图像的大部分能量集中在低频分量,高通滤波会将很多低频分量滤除,导致增强图中边缘得到加强,但光滑区域灰度减弱变暗甚至接近黑色

    3、截止半径越大,图像越接近黑色,导致图像的轮廓也不太清晰

4选择合适的灰度图像,进行通滤波,观察滤波效果

  • 代码:

%带通滤波

dl=0.5;

dh=50;%截止半径

for i=1:M

    for j=1:N

       d=sqrt((i-m)^2+(j-n)^2);

        if d<=dl || d>=dh

             h=0;

    else

        h=1;

        end

     result(i,j)=h*shift_I(i,j);

    end

end

result1=uint8(real(ifft2(ifftshift(result))));

figure(2)

subplot(1,2,1),imshow(I2),title('高斯噪声图像');

subplot(1,2,2),imshow(result1),title('带通滤波后图像');

  • 结果:

              

  • 分析:

1、带通滤波器的传递函数为H=1 (dl<d<dh), H=0(d=其他)

2、带通滤波器可增强既不是图像中的高频成分也不是低频成分

5)选择合适的灰度图像,进行同态滤波,观察滤波效果

  • 代码:

P = 2*M; Q = 2*N;

I2 = zeros(P,Q);

for i = 1:M

    for j =1:N

        I2(i,j) = I(i,j);  %对图像进行填充

    end

end

I2=log(I2+1);    %取对数

FI=fft2(I2);    %傅里叶变换

rL=1.0;    %rl越靠近1,越亮

rH=1.1;     % 可根据需要效果调整参数 ,rh越大,背景越亮

c=100;       %锐化参数,越大,锐化程度越大

D0=1;  %D0越小,越亮

for u=1:P

    for v=1:Q

        D(u,v)=sqrt(((u-M).^2+(v-N).^2));  %频率域中点(u,v)与频率矩形中心的距离       

        H(u,v)=(rH-rL).*(1-exp(-c.*(D(u,v)^2./D0^2)))+rL; %高斯同态滤波

    end

end

H=ifftshift(H);  %对H做反中心化

I3=ifft2(H.*FI);  %傅里叶逆变换

I4=real(I3);

result =exp(I4(1:M, 1:N))-1;  %截取一部分,,取指数

figure(1)

subplot(1,3,1),imshow(im),title('灰度图像');

subplot(1,3,2),imshow(In),title('高斯噪声图像');

subplot(1,3,3),imshow(result),title('同态滤波图像');

  • 结果:

  • 分析:

猜你喜欢

转载自blog.csdn.net/weixin_39569242/article/details/81156413