2013-08-05 81 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我想獲取它的諾貝爾 –