Matlab频域滤波练习.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Matlab频域滤波练习

%% fftshift 对数变换,所应用的图片本身很简单,就只有黑白2种颜色 clc clear f = imread(.\images\dipum_images_ch04\Fig0403(a)(image).tif); imshow(f) title(原始图像) imfinfo(.\images\dipum_images_ch04\Fig0403(a)(image).tif);%此处如果用Imfinfo(f)就会报错fft %没有居中的傅里叶频谱 F=fft2(f);%进行二维快速傅里叶变换,其结果和DFT的一样,只是计算机的计算速度变快了而已,因而叫fft S=abs(F);%求傅里叶变换后的幅值 figure,subplot(121),imshow(S,[]) title(傅里叶频谱图像1);%title函数一定要放在坐标显示的下一句才有效。 subplot(122),imshow(S),title(傅里叶频谱图像2) %居中的傅里叶频谱 Fc=fftshift(F);%将频谱图像原点移至图像矩形中间 S1=abs(Fc); figure,subplot(121),imshow(S1,[]);%加了第二个参数后显示的图像正常 subplot(122),imshow(S1);%当没有第二个参数时,显示的图像为竖线加一些孤立的黑点,why? %使用对数后视觉增强后的傅里叶频谱 S2=log(1+S1); imshow(S2,[]); %%用fftshift对数变换显示稍复杂的图片 clc clear f=imread(.\images\dipum_images_ch04\Fig0409(a)(bld).tif); imshow(f); f=double(f);%其实这句不要试过对后面的变换结果也没有影响 F=fft2(f); Fc=fftshift(F); S=abs(Fc); S2=log(1+S);%如果没有这句的话,那么根本看不到细节的图,所以一定要用对数压缩增加对比度 figure,imshow(S2,[]) %%试一下ifft功能 clc clear f=imread(.\images\dipum_images_ch04\Fig0409(a)(bld).tif); imshow(f); f=double(f); f(1:8,1:8) F=fft2(f); f=ifft2(F);%取傅里叶变换后的反傅里叶变换,直接是整数, 并不需要像某些代码一样取real部分 f(1:8,1:8) %%先0扩充再滤波 clc clear f=imread(.\images\dipum_images_ch04\Fig0405(a)(square_original).tif); imshow(f); [M N]=size(f); F=fft2(f);%没有经过0扩充直接计算fft sig=10;%高斯滤波参数 H=lpfilter(gaussian,M,N,sig); G=H.*F;%加了.号的乘法表示对应每个元素都相乘,没加.号的乘法说明是真正的矩阵乘法 g=real(ifft2(G)); figure,imshow(g,[]); PQ=paddedsize(size(f));%PQ为0扩展的面积,这里设置为与图像的大小相同?这里size(f)的大小为256*256 Fp=fft2(f,PQ(1),PQ(2));%如果fft2有3个参数的话,则是进行了0扩展了 Hp=lpfilter(gaussian,PQ(1),PQ(2),2*sig);%构造高斯滤波器 Gp=Hp.*Fp;%对0扩展后的图像进行高斯滤波 gp=real(ifft2(Gp)); figure,imshow(gp,[]) gpc=gp(1:size(f,1),1:size(f,2));%取gp图像的1到f的第一维的行,1到f第二维的列部分,即取与图像大小相同的部分 figure,imshow(gpc,[]);%此时显示的结果应该与g图像一样。 %直接使用空间域滤波 h=fspecial(gaussian,15,7); gs=imfilter(f,h); figure,imshow(gs,[]) %% clc clear f=imread(.\images\dipum_images_ch04\Fig0405(a)(square_original).tif); f=double(f); imshow(f); PQ=paddedsize(size(f));%size(f)的大小为256*256 sig=10; H = lpfilter(gaussian,PQ(1),PQ(2),2*sig); % PQ=[512 512] fi

文档评论(0)

liudao + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档