MATLAB的图像频域处理

(1)

编程思路:

原频图像将低频部分移到四角部分,中央对应高频部分。移位频谱图四角部分对应高频部分,中央代表低频部分。

源码:

Image = imread('C:\Users\Administrator\Desktop\Koala.jpg');%图片路径
grayI = rgb2gray(Image);
DFTI1 = fft2(grayI);
ADFTI1 = abs(DFTI1);
top = max(ADFTI1(:));
bottom = min(ADFTI1(:));
ADFTI1 = (ADFTI1 - bottom)/(top - bottom) * 100;
ADFTI2 = fftshift(ADFTI1);
subplot(131),imshow(Image),title('原图');
subplot(132),imshow(ADFTI1),title('原频谱图');
subplot(133),imshow(ADFTI2),title('移位频谱图');

结果:

 

分析:

原频谱图,四角对应低频。移位频谱图中央代表低频部分。能量主要集中在低频部分,低频部分图像比较亮,高频部分能量很少或为零,图像呈现暗。

(2)

编程思路:

读取原始图像,对图像进行灰度化处理,添加高斯噪声,计算傅里叶谱,对傅里叶变换的结果进行平移,然后对图像进行三种滤波处理。巴特沃斯低通滤波:d0表示截止频率,n表示的是巴特沃斯滤波器的阶数,控制曲线的衰减速度。随着阶数n的增加,振铃效应会越来越明显。指数、梯形低通滤波器同理,根据函数,给定参数。

源码:

clear;
clc;
close all;
Image=imread('F:\作业\2021年大三第一学期\数字图像处理\作业一\素材.jpg');
I=rgb2gray(Image);  
subplot(2,2,1),imshow(Image),title('原始图像');
noisy=imnoise(I,'gaussian');   %添加高斯噪声
f=double(noisy);  % 数据类型转换,MATLAB不支持图像的无符号整型计算
f=fft2(f);
g=fftshift(f);
[N, M]=size(g);
%巴特沃斯低通滤波
r1=fix(M/2);
r2=fix(N/2);
d0=60;
n=2;
for j=1:M
    for m=1:N
        d=sqrt((j-r1)^2+(m-r2)^2);
        h=1/(1+(d/d0)^(2*n));
        s(m,j)=h*g(m,j);
    end
end
s=ifftshift(s);
s=real(ifft2(s));
s=uint8(s);
subplot(2,2,2),imshow(s),title('巴特沃斯低通滤波');
%指数低通滤波
r1=round(M/2);
r2=round(N/2);
d0=60;
n=1;
for j=1:M
    for m=1:N
        d=sqrt((j-r1)^2+(m-r2)^2);
        h=exp(-(d/d0)^n);
        x(m,j)=h*g(m,j);
    end
end
x=ifftshift(x);
x=real(ifft2(x));
x=uint8(x);
subplot(2,2,3),imshow(x),title('指数低通滤波');
%梯形低通滤波
[f1,f2]=freqspace(size(I),'meshgrid'); %生成频率矩阵序列
d0=0.1;
d1=0.4;
r=sqrt(f1.^2+f2.^2);
hd=zeros(size(I));
hd(r<d0)=1;
for i=1:size(I,1)
    for j=1:size(I,2)
        if r(i,j)>=d0&r(i,j)<=d1
            hd(i,j)=(d1-r(i,j))/(d1-d0);
        end
    end
end
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*hd;
Ya=ifftshift(Ya);
Ia=real(ifft2(Ya));     
subplot(2,2,4),imshow(uint8(Ia)),title('梯形低通滤波');

结果:

 

分析:由于n的影响图像平滑程度,导致不同滤波器产生的振铃效应不同更改n,会产生微小变换。指数低通滤波器没有振铃现象,梯形低通滤波与指数低通滤波器相比较,滤波输出图像有一定的模糊和振铃效应。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aaron_Liu0730

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值