- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五 数字图像的离散余弦变换
一.实验目的
1.验证二维傅里叶变换的平移性和旋转不变性;
2.实现图像频域滤波,加深对频域图像增强的理解;
二.实验设备
1.PC机一台;
2.软件matlab;
三.实验内容及步骤
(1)产生如图3.1所示图像(128×128大小,暗处=0,亮处=255),用MATLAB中的fft2函数对其进行FFT:
① 同屏显示原图和的幅度谱图;
② 若令,重复以上过程,比较二者幅度谱的异同,简述理由;
③ 若将顺时针旋转45度得到,试显示的幅度谱,并与的幅度谱进行比较。
1.%生成图形f1
f1=zeros(128,128);
f1((64-30):(63+30),(64-10):(63+10))=1;
%FFT变换
fft_f1=log(1+abs(fftshift(fft2(f1))));
figure;
subplot(121);imshow(f1);title(Image f1);
subplot(122);imshow(fft_f1,[]);title(FFT f1);
2.%计算f2
f2=zeros(128,128);
for i=1:128;
for j=1:128;
f2(i,j)=((-1)^(i+j))*f1(i,j);
end
end
fft_f2A=log(1+abs(fft2(f2)));
fft_f2B=log(1+abs(fftshift(fft2(f2))));
figure;
subplot(131);imshow(f2);title(Image f2);
subplot(132);imshow(fft_f2B,[]);title(FFT f2);
subplot(133);imshow(fft_f2A,[]);title(FFT f2 Without FFTShift);
分析:根据傅里叶变换对的平移性质:
;
当且时,有:
因此可得到:
所以,就是频谱中心化后的结果。
3.%计算f3
f3=imrotate(f2,-45,nearest);
fft_f3=log(1+abs(fftshift(fft2(f3))));
figure;
subplot(121);imshow(f3);title(Image f3);
subplot(122);imshow(fft_f3,[]);title(FFT f3);
(2)对如图3.2所示的数字图像lena.img(256×256大小、256级灰度)进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。
低通滤波:
fid=fopen(D:\matlab7\image\lena.img,r);
data=(fread(fid,[256,256],uint8));
subplot(1,2,1)
imagesc(data);
colormap(gray);
title(LENA,Color,r);
fft_lena=fft2(data);
f=fftshift(fft_lena);
for i=1:256
for j=1:256
if sqrt((i-128)^2+(j-128)^2)30
f(i,j)=0;
end
end
end
subplot(1,2,2);
[x,y]=meshgrid(1:1:256);
surf(x,y,f)
高通滤波:
fid=fopen(D:\matlab7\image\lena.img,r);
data=(fread(fid,[256,256],uint8));
subplot(1,2,1)
imagesc(data);
colormap(gray);
title(LENA,Color,r);
fft_lena=fft2(data);
for i=1:256
for j=1:256
if sqrt((i-128)^2+(j-128)^2)2
f(i,j)=0;
end
end
subplot(1,2,2);
[x,y]=meshgrid(1:1:256);
surf(x,y,f)
I = imread(cameraman.tif);
imshow(I);
s = fftshift(fft2(I));
[M,N]=size(s);
n1 = floor(M/2);
n2 = floor(M/2);
d0=5;
for i = 1:M
for j = 1:N
d = sqrt((i-n1)^2+(j-n2)^2);
if d=d0
h=1;
文档评论(0)