0

为什么我不能得到我使用傅里叶变换和图像处理转换的图像的倒数?该程序的代码如下。这里的图像正在通过图像处理进行转换,但我无法得到反向图像。请帮助我

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);
4

1 回答 1

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;
于 2013-08-05T15:37:10.343 回答