傅立叶变换图像的逆

时间:2013-08-05 14:21:42

标签: image matlab image-processing

为什么我无法获得使用傅里叶变换和图像处理转换的图像的反转?该程序的代码如下所示。图像正在通过图像处理转换,但我无法得到反转图像。请帮助我

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 个答案:

答案 0 :(得分: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)用剩余部分做任何你想做的事,这就是& #34;信号"你最初倾倒在图像上:

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;