为什么我用Matlab将一幅黑白图进行傅里叶变换后想对其频谱图逆变换显示出原图,却不行呢?求高手指教

orgImage=imread('tire.tif');figure(1);imshow(orgImage);fftI1=fft2(orgImage);%二维离散傅立叶变... orgImage=imread('tire.tif');
figure(1); imshow(orgImage);
fftI1=fft2(orgImage); %二维离散傅立叶变换
sfftI1=fftshift(fftI1); %直流分量移到频谱中心
RR1=real(sfftI1); %取傅立叶变换的实部
II1=imag(sfftI1); %取傅立叶变换的虚部
A1=sqrt(RR1.^2+II1.^2); %计算频谱幅值
a1=(A1-min(min(A1)))/(max(max(A1))-min(min(A1)))*225;%归一化
figure(2); imshow(a1); %显示原图像的频谱
image=ifftshift(a1);
image3=real(image);
figure(3); imshow(image3);
展开
 我来答
xiaolong306
2012-10-26 · TA获得超过621个赞
知道小有建树答主
回答量:81
采纳率:100%
帮助的人:123万
展开全部
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,这样才行。
追问
我按你的意思改了程序,可还是得不到原图啊???
追答
这个我忽略了一点,你把最后一行的那个figure, imshow(g),改成figure,imshow(g, [ ])就行了。
随便瞎看看哈哈
2012-10-27 · TA获得超过1791个赞
知道小有建树答主
回答量:501
采纳率:100%
帮助的人:539万
展开全部
fftI2=ifftshift(sfftI1);
image=ifft2(fftI2)/256;
figure(3); imshow(image);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式