matlab学习笔记(九)---频域增强

1、低通滤波

1.1对图像eight.tif加入椒盐噪声后,实现Butterworth低通滤波。

clear;
I1=imread('eight.tif');
subplot(221),imshow(I1),title('原始图像');
I2=imnoise(I1,'salt & pepper');      %加入椒盐噪声
subplot(222),imshow(I2),title('噪声图像');
f=double(I2);
g=fft2(f);        %傅里叶变换
g=fftshift(g)     %转换数据矩阵
[N1,N2]=size(g);
n=2;
d0=50;
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1
    for j=2:N2
        d=sqrt((i-n1)^2+(j-n2)^2);   %计算Butterworth低通滤波转换函数
        h=1/(1+0.414*(d/d0)^(2*n));
        result1(i,j)=h*g(i,j);
        if(g(i,j)>50)            %进行理想低通滤波
           result2(i,j)=0;
        else 
           result2(i,j)=g(i,j);
        end
    end
end
result1=ifftshift(result1);   %进行反变换
result2=ifftshift(result2);   %进行反变换
X2=ifft2(result1);
X3=uint8(real(X2));
subplot(223),imshow(X3),title('Butterworth滤波图像');
X4=ifft2(result2);
X5=uint8(real(X4));
subplot(224),imshow(X5),title('理想低通滤波图像');
效果图如下:

matlab学习笔记(九)---频域增强_第1张图片



1.2利用二维小波分解,实现对图像woman的增强分解

load woman;   
subplot(121),image(X),colormap(map);title('原始图像');
%下面进行图像的增强处理
%用小波函数sym4对X进行二层小波分解
[c,s]=wavedec2(X,2,'sym4');
sizec=size(c);
%对分解系数进行处理,通过处理,突出轮廓部分,弱化细节部分
for i=1;sizec(2)
   if(c(i)>350)
      c(i)=2*c(i);
   else
      c(i)=0.5*c(i);
   end
end
%下面对处理后的系数进行重构
xx=waverec2(c,s,'sym4');
%画出重构后的图像
subplot(122),image(xx),title('增强图像');
效果图如下:

matlab学习笔记(九)---频域增强_第2张图片



2、高通滤波

2.1对图像eight.tif实现Butterworth高通滤波

clear;
I1=imread('eight.tif');
subplot(221),imshow(I1),title('原始图像');
I2=imnoise(I1,'salt & pepper');      %加入椒盐噪声
subplot(222),imshow(I2),title('噪声图像');
f=double(I2);
g=fft2(f);        %傅里叶变换
g=fftshift(g)     %转换数据矩阵
[N1,N2]=size(g);
n=2;
d0=50;
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1
    for j=2:N2
        d=sqrt((i-n1)^2+(j-n2)^2);   %进行Butterworth高通滤波
        if(d==0)
           h=0;
        else
           h=1/(1+(d0/d)^(2*n));
        end
        result1(i,j)=h*g(i,j);
        if(g(i,j)<50)            %进行理想高通滤波
           result2(i,j)=0;
        else 
           result2(i,j)=g(i,j);
        end
    end
end
result1=ifftshift(result1);   %进行反变换
result2=ifftshift(result2);   %进行反变换
X2=ifft2(result1);
X3=uint8(real(X2));
subplot(223),imshow(X3),title('Butterworth滤波图像');
X4=ifft2(result2);
X5=uint8(real(X4));
subplot(224),imshow(X5),title('理想高通滤波图像');
效果图如下:

matlab学习笔记(九)---频域增强_第3张图片


你可能感兴趣的:(个人总结,matlab)