图像处理频域锐化(理想和巴特沃斯)

图像频域平滑(锐化):选择一幅图像,例如rice.png,分别使用理想高通滤波器、巴特沃斯高通滤波器、指数高通滤波器和梯形高通滤波器(至少使用两种高通滤波器),显示滤波前后的频域能量分布图,空间图像。

%图像频域锐化    理想  和  巴特沃斯
%导入图像
I=imread('rice.png');
A=I;
AN = A;
D0 = 20;%截止频率
subplot(331);
imshow(A);
title('原图');
subplot(332);
imshow(AN);
title('原图');
AN= double(AN);
ADFT  =fft2(AN);%傅里叶变换后的矩阵
ADFT=fftshift(ADFT);%直流分量移到频谱中心
subplot(333);
imshow(ADFT);
title('滤波前频率能量分布');
[m,n] = size(ADFT);
A1 = double(zeros(m,n));
H = double(zeros(m,n));
for i = 1:m
    for j = 1:n
        d=sqrt((i-round(m/2))^2+(j-round(n/2))^2);
        if d>D0
            H(i,j)=1;
        end
    end
end
AAA=uint8(255.*H);
subplot(334)
imshow(AAA);
title('理想高通滤波器')
 
AIDFT = ADFT.*H;
subplot(335);
imshow(AIDFT);
title('理想滤波后的频域能量分布')
AIDFT=ifftshift(AIDFT);%直流分量移回到左上角
AIDFT2 = ifft2(AIDFT);
AIDFT3=(real(AIDFT2));%取幅值并转换成8位无符号整数
% uint8类型的,会认为是0到255之间    double类型的  会认为是0到1之间!!
AIDFT4 = uint8(255.*AIDFT3);
subplot(336)
imshow(AIDFT4);
title('加上理想高通滤波器后')
 
AN= double(AN);
BDFT  =fft2(AN);%傅里叶变换后的矩阵
BDFT=fftshift(BDFT);%直流分量移到频谱中心
[m,n] = size(BDFT);
B1 = double(zeros(m,n));
H2 = double(zeros(m,n));
nn=2;%截止频率为50的二阶巴特沃斯低通滤波器
for i = 1:m
    for j = 1:n
         d=sqrt((i-round(m/2))^2+(j-round(n/2))^2);%计算频率平面原点到各点的距离
        H2(i,j)=1/(1+0.414*(D0/d)^(2*nn));%传递公式
    end
end
BBB=uint8(255.*H2);
subplot(337);
imshow(BBB);
title('巴特沃斯高通滤波器');
BIDFT = BDFT.*H2;
subplot(338);
imshow(BIDFT);
title('巴特沃斯滤波后的频域能量分布');
BIDFT=ifftshift(BIDFT);%直流分量移回到左上角
BIDFT2 = ifft2(BIDFT);
BIDFT3=real(BIDFT2);%取幅值并转换成8位无符号整数
% uint8类型的,会认为是0到255之间    double类型的  会认为是0到1之间!!
BIDFT4 = uint8(255.*BIDFT3);
subplot(339);
imshow(BIDFT4);
title('加上巴特沃斯高通滤波器后');

图像处理频域锐化(理想和巴特沃斯)_第1张图片

你可能感兴趣的:(图像处理)