我要发布
仪器网/ 仪器社区/ 频谱分析仪/ 对一幅图像傅里叶变换后,显示其频谱图的MATLAB语句?

对一幅图像傅里叶变换后,显示其频谱图的MATLAB语句?

happy黑总    2015-03-22    频谱分析仪    浏览 411 次

对一幅图像进行傅里叶变换后,显示其频谱图为什么有时候用imshow(abs(F))有时候用imshow(log(abs(F)))?有什么区别和联系呢?(F为图像的傅里叶变换)

精彩问答
dalong2780 发布日期:2015-03-23
f = imread('tire.tif');
imshow(f)
F = fft2(f); % 傅氏变换
Fc = fftshift(F); % ZX化
Fm = abs(Fc); % 取模
figure, imshow(Fm, [ ])
figure, imshow(log(1+Fm), [ ]) % 对数变换,增强显示视觉效果
G = ifftshift(Fc); % 对Fc去ZX化
g = ifft2(G); % 对G逆变换
figure, imshow(g) % 原图像
你要注意整个流程,f ---> F ----> Fc , 所以要回去的话当然是Fc --- > G --- > g,就是先对Fc去ZX化得到G,再对G逆变换得到g,这样才行。
被采纳
卡米拉tks 发布日期:2017-09-02 06:18:27
很简单。因为进行了傅氏变换以后图像上每点的值都成了复数,取abs(即取模值)后才能显示为图像。但是问题是进行变换再取模值后数字有时会变得非常大,拿常用的数据类型uint8(即8位无符号整型数)为例,所能表示的范围仅为0~255,如果数据超过255,在显示图像时系统自动把数据变成255,所以如果有很多数据都超过255,即使这些数据之间差别也蛮大,傅立叶变换显示的图像只会白茫茫一片(255代表白色),看不出差异来。所以需要对这些数据进行处理,常用的就是取对数(log),将很大的数据变成小一些的数据,落在0~255之间,能够准确地表示在图像上,更直观地发现数据之间的差异,也是进行傅氏变换的意义所在,区分高频分量和低频分量。
最新主题
相关版块
我要评论
X您尚未登录
账号登录
X您尚未登录
手机动态密码登录
X您尚未登录
扫码登录
官方微信

仪器网微信服务号

扫码获取最新信息


仪器网官方订阅号

扫码获取最新信息

在线客服

咨询客服

在线客服
工作日:  9:00-18:00
联系客服 企业专属客服
电话客服:  400-822-6768
工作日:  9:00-18:00
订阅商机

仪采招微信公众号

采购信息一键获取海量商机轻松掌控