实验五数字图像的离散余弦变换.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档