当前位置:
文档之家› 08第八讲-MATLAB频域编程
08第八讲-MATLAB频域编程
反变换ifft2()
2021/3/31
显示一幅图像的频谱-计算二维DFT
例: f=imread('cameraman.tif'); f=im2double(f); F=fft2(f); f1=ifft2(F); imshow(f) figure,imshow(f1)
2021/3/31
显示一幅图像的频谱-计算频谱
2021/3/31
生成频域滤波器-高斯低通滤波器
GLPF: H=exp(-((dftuv(M, N)).^2)./(2*(D0^2))); 例:
2021/3/31
生成频域滤波器-思考
如何生成频域高通滤波器? 如何编写一个能够生成各种频域滤波器的函 数?
2021/3/31
生成频域滤波器-以图像形式显示滤波
例:f=imread(‘cameraman.tif’); f=im2double(f); F=fft(f); Fc=fftshift(F); S=abs(Fc); imshow(f) figure, imshow(log(1+S), [])
2021/3/31
MATLAB频域编程
主要内容:
1 显示一幅图像的频谱; 2 生成频域滤波器; 3 频域滤波增强;
2021/3/31
显示一幅图像的频谱-频谱移中
例: f=imread('cameraman.tif'); f=im2double(f); F=fft2(f); Fc=fftshift(F); S=abs(Fc); imshow(f) figure, imshow(S, [])
2021/3/31
显示一幅图像的频谱-频谱对数变换
主要内容:
1 显示一幅图像的频谱; 2 生成频域滤波器; 3 频域滤波增强;
2021/3/31
显示一幅图像的频谱-计算二维DFT
fft2() 语法:F=fft2(f) F=fft2(f, P, Q) 说明:该函数返回f的二维离散傅里叶变换,数据原点位 于于频率矩形左上角;第二种调用方式对输入f进行零填 充,以便使结果函数大小为P×Q。 例子:F=fft2(f); P=2^nextpow2(max(size(f))); F=fft2(f, P, P);
医学图像处理
Medical Image Processing
如果学校不能在课堂中给予学生更多成功 的体验,他们就会以既在学校内也在学校外都 完全拒绝学习而告终。
—林格伦
MATLAB频域编程
主要内容:
1 显示一幅图像的频谱; 2 生成频域滤波器; 3 频域滤波增强;
2021/3/31
MATLAB频域编程
2021/3/31
生成频域滤波器
ILPF:
H(u,v)01,,iiff
D(u,v)D0 D(u,v)D0
BLPF:
H(u,v)1[D(u,1v)/D0]2n
GLPF:
H(u,v)eD2(u,v)/2D 02
D ( u ,v ) [u (M /2 ) 2 ( v N /2 ) 2 ] 1 /2
real() 语法:FR=real(F);
imag() 语法:FI=imag(F); 例子: FABS=sqrt(FR.^2+FI.^2);
abs() 语法:FABS=abs(F);
2021/3/31
显示一幅图像的频谱-计算频谱
例:f=imread(‘cameraman.tif’); f=im2double(f); F=fft2(f); S=abs(F); imshow(f) figure, imshow(S, [])
器பைடு நூலகம்
imshow() 例:D0=20; M=256;N=256; H0=double(dftuv(M, N)<=D0); H1=1./(1+(dftuv(M,N)/D0).^(2*2)); H2=exp(-((dftuv(M, N)).^2)./(2*(D0^2))); imshow(H0),figure,imshow(H1) figure,imshow(H2)
2021/3/31
生成频域滤波器-生成坐标矩阵u,v
meshgrid():生成坐标矩阵 语法:[V, U]=meshgrid(v, u) 说明:该函数首先列出列坐标, 再列出行坐标
2021/3/31
生成频域滤波器-求距离函数D(u,v)
例:function D=dftuv(M, N) %DFTUV计算频率矩形中任意点到中心点的距离矩阵; %M×N为频率矩形的大小,D的大小也为M×N u=0:M-1; v=0:N-1; [V,U]=meshgrid(v,u); D=sqrt((U-floor(M/2)).^2+(V-floor(N/2)).^2);
2021/3/31
生成频域滤波器-距离函数
u,v所组成的 频率矩形原点
2021/3/31
生成频域滤波器-理想低通滤波器
ILPF: H=double(dftuv(M, N)<=D0); 例:
2021/3/31
生成频域滤波器-巴特沃斯低通滤波器
BLPF: H=1./(1+(dftuv(M,N)/D0).^(2*n)); 例:
列
行
F=fft2(f);
S=abs(F);
imshow(f)
figure, imshow(S, [])
2021/3/31
显示一幅图像的频谱-频谱移中
方法二:直接对DFT结果进行处理
2021/3/31
显示一幅图像的频谱-频谱移中
方法二:直接对DFT结果进行处理
F(u,v)
F(uM,vN) 22
2021/3/31
显示一幅图像的频谱-频谱移中
方法一:先对输入图像进行处理
f(x,y) ·(-1)x+y
例:f=imread(‘cameraman.tif’);
f=im2double(f);
[y,x]=meshgrid(0:size(f,2)-1,0:size(f,1)-1);
f=f.*(-1).^(x+y);
2021/3/31
显示一幅图像的频谱-频谱移中
方法二:直接对DFT结果进行处理 fftshift()
语法:Fc=fftshift(F); 说明:fftshift通过交换F的象限来实现;但注意,必须在 傅 里 叶 变 换 后 执 行 , 因 为 fftshift(fft2(f)) 不 等 于 fft2(fftshift(f))。