0

フーリエ変換と画像処理を使用して変換した画像の逆を取得できないのはなぜですか? プログラムのコードは次のとおりです。ここでは、画像は画像処理によって変換されていますが、逆の画像を元に戻すことはできません.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);
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 に答える