基于matlab实现图像频谱的方法

这篇博客介绍了如何利用MATLAB将图像转换为频域的幅度谱。通过`imread`读取图像,`rgb2gray`转为灰度图,`fft2`进行傅立叶变换,`fftshift`调整频谱位置,最后`imshow`展示结果。讨论了幅度谱计算过程中的细节和可能遇到的问题。
摘要由CSDN通过智能技术生成

废话不多说先上代码。

clear
clc
img=imread('f2.jpg');
subplot(2,2,1);imshow(img);title('原图');
f=rgb2gray(img);
F=fft2(f);
F1=log(abs(F)+1);
subplot(2,2,2);imshow(F1,[]);title('幅度谱');
Fs=fftshift(F);
S=log(abs(Fs)+1);
subplot(2,2,3);imshow(S,[]);title('平移后的幅度谱');
fr=real(ifft2(ifftshift(Fs)));
ret=im2uint8(mat2gray(fr));
subplot(2,2,4);imshow(ret);title('逆变换');

我们今天所要认识的就是以上这个简单的代码段,简单来说就是用matlab来将图像变换成频域的幅度谱,那么到底是怎么实现的。

我们可以看到一开始是用img=imread()这个函数读入了一个图像并以img变量存储,最重要的是这个图象存储的路径一定是和代码的路径是一致的,否则就会识别不出。

读出后紧接着就用subplot和imshow联合建立了一张坐标域并显示了原图。

之后,f=rgb2gray()这个函数明显是用来将彩图转换为灰图,因为彩图的数值比起灰度图非常不方便。

我们都知道彩图是由红绿蓝三种色组成的,rgb2gray中的rgb就代表red,green和blue,而每一种颜色都从0-255里面的一个数字组成,0代表纯白,255代表纯黑,介于二者之间就是红绿蓝。也就是说图像里的数值越靠近0,颜色越鲜艳,越靠近255则越暗淡。

懂了这一点我们继续往下想。

  • 15
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值