初学者:怎样用MATLAB编程实现图像的傅立叶变换并显示出来啊?谢谢了

初学者:怎样用MATLAB编程实现图像的傅立叶变换并显示出来啊?谢谢了,第1张

I=imread('lena.bmp')

I=rgb2gray(I)

fftI=fft2(I)%二宴橘维厅祥掘离散傅立叶变换

sfftI=fftshift(fftI)%直流分量移到频谱中心

RR=real(sfftI)%取傅立叶变换的实部

II=imag(sfftI)%取傅立叶变换的虚部

A=sqrt(RR.^2+II.^2)%计算频谱幅值

B=(A-min(min(A)))./(max(max(A))-min(min(A)))*225%归一化

pha=angle(fftI)

figure(1)%设定窗口扮核

subplot(1,4,1),imshow(I)title('原图')

subplot(1,4,2),imshow(B)title('原图像的频谱')%显示原图像的频谱

subplot(1,4,3),imshow(log(B),[])title('原图像的频谱')%显示原图像的频谱

subplot(1,4,4),imshow(pha)title('相位谱')

figure(2)

x=abs(ifft2(fftI))

magif=ifft2(abs(fftI))

phaif=ifft2(exp(1i*pha))

subplot(1,3,1),imshow(phaif,[])title('相位谱重建图像')

subplot(1,3,2),imshow(x,[])title('频谱重建原图像')

subplot(1,3,3),imshow(magif,[])title('幅度谱重建图像')

Matlab中FFT有1D和2D的,FFT得到的是信号伏镇的缺弊粗频谱即t-》f

clear

%编写骆遥

fs=1000

t=0:1/fs:0.6

f1=100

f2=300

x=sin(2*pi*f1*t)+sin(2*pi*f2*t)

subplot(711)

plot(x)

title('f1(100Hz)\f2(300Hz)的正弦信号,初相0')

xlabel('序列(n)')

grid

on

number=512

y=fft(x,number)

n=0:length(y)-1

f=fs*n/length(y)

subplot(713)

plot(f,abs(y))

title('f1\f2的正弦信号的FFT(512点)')

xlabel('频率Hz')

grid

on

x=x+randn(1,length(x))

subplot(715)

plot(x)

title('原f1\f2的正弦信号(含随卜链机噪声)')

xlabel('序列(n)')

grid

on

y=fft(x,number)

n=0:length(y)-1

f=fs*n/length(y)

subplot(717)

plot(f,abs(y))

title('原f1\f2的正弦信号(含随机噪声)的FFT(512点)')

xlabel('频率Hz')

grid

on


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12521731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存