2013-08-05 77 views
0

为什么我不能得到我使用傅立叶变换和图像处理转换的图像的逆?该程序的代码是below.here图像被通过图像处理转换,但我不能得到反转图像back.pls帮我傅立叶变换图像的逆

clc; 
clear all; 
close all; 
a=imread('lenna.png'); 
j=rgb2gray(a) 
figure,imshow(a); 
figure,imshow(j); 
p=size(j); 
[x,y]=size(j); 
n1=rand(220,220); 
b=exp(2*pi*i*n1); 
k=fft2(j); 
c=k.*b; 
d=fft2(c); 
figure,imshow(d); 
s=size(d); 
[r,t]=size(d); 
n2=rand(220,220); 
e=exp(2*pi*i*n2); 
f=fft2(e); 
figure,imshow(f); 
g=fft2(f); 
h=conj(e); 
i=g.*h; 
k=ifft(i); 
figure,imshow(k); 
+1

请至少在你的代码中添加注释!另请说明出了什么问题,以及在哪里 – Dan

+0

当然,您需要'ifft2'而不是'ifft'? –

回答

0

有许多事情错的代码和目标不清楚。最关键的是你在频率空间中乘上不匹配的矩阵。如果你的目标是将噪声添加到图像的频谱,你可以做这样的事情:

a=imread('lenna.png'); 
j=rgb2gray(a); 
p=size(j); 
n1=0.01*rand(p); 
k=fft2(j); 
figure,imshow(k); 
c=k.*n1; 
d=ifft2(c); 
figure,imshow(d); 

来恢复在频率空间倾倒在图像上的“信号”,只是重复与损坏前一步骤和原始文件:(1)FFT两种,(2)取比,(3)做你想做的,其余部分,这是“信号”最初甩在图像上:

a=imread('lenna.png'); 
j=rgb2gray(a); 
b =imread('corruptedlenna.png'); 
j2=rgb2gray(b); 
% assume a and b are same size, otherwise the following needs to be changed 
p=size(j); 
k=fft2(j); 
k2=fft2(j2); 
messg = k2./k; 
+0

雅这是我一直在寻找可以告诉我如何让旧图像回 –

+0

你的意思是如何过滤噪音? –

+0

yaaa我想获取它的诺贝尔 –