永发信息网

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

答案:3  悬赏:0  手机版
解决时间 2021-12-28 17:18
  • 提问者网友:浪荡绅士
  • 2021-12-27 23:08
对一幅图像进行傅里叶变换后,显示其频谱图为什么有时候用imshow(abs(F))有时候用imshow(log(abs(F)))?有什么区别和联系呢?(F为图像的傅里叶变换)
最佳答案
  • 五星知识达人网友:玩家
  • 2021-12-27 23:33
f = imread('tire.tif');
imshow(f)
F = fft2(f); % 傅氏变换
Fc = fftshift(F); % 中心化
Fm = abs(Fc); % 取模
figure, imshow(Fm, [ ])
figure, imshow(log(1+Fm), [ ]) % 对数变换,增强显示视觉效果
G = ifftshift(Fc); % 对Fc去中心化
g = ifft2(G); % 对G逆变换
figure, imshow(g) % 原图像
你要注意整个流程,f ---> F ----> Fc , 所以要回去的话当然是Fc --- > G --- > g,就是先对Fc去中心化得到G,再对G逆变换得到g,这样才行。
全部回答
  • 1楼网友:枭雄戏美人
  • 2021-12-28 01:29
用a的结果,求c图的平均值
  • 2楼网友:醉吻情书
  • 2021-12-28 00:31
很简单。因为进行了傅氏变换以后图像上每点的值都成了复数,取abs(即取模值)后才能显示为图像。但是问题是进行变换再取模值后数字有时会变得非常大,拿常用的数据类型uint8(即8位无符号整型数)为例,所能表示的范围仅为0~255,如果数据超过255,在显示图像时系统自动把数据变成255,所以如果有很多数据都超过255,即使这些数据之间差别也蛮大,傅立叶变换显示的图像只会白茫茫一片(255代表白色),看不出差异来。所以需要对这些数据进行处理,常用的就是取对数(log),将很大的数据变成小一些的数据,落在0~255之间,能够准确地表示在图像上,更直观地发现数据之间的差异,也是进行傅氏变换的意义所在,区分高频分量和低频分量。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯