avec
avec
clear all; close all;
[filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif;*.bmp','All Image Files';...
'*.*','All Files' },'mytitle',...
'C:\Work\myfile.jpg')
f = imread(filename);
% image sur un plan
if (length(size(f))>2)
f=f(:,:,1);% passage de 3 dimensions à 1 ( couleur->niveau de gris)
end
% nombre de bit
k=8;
%taille de la matrice
[M N]=size(f);
f=double(f);
F=double(zeros(M,N));
for p = 0 : M-1
for q = 0 : N-1
for m = 0 : M-1
for n = 0 : N-1
e1=exp((-1i*2*pi*p*m)/M);
e2=exp((-1i*2*pi*q*n)/N);
F(p+1,q+1) =F(p+1,q+1) + f(m+1,n+1) * e1 * e2;
end
end
end
p/M% afiche le poucentage d'avancement de 0 à 1
end
Famplitude=log2(1+abs(F));% affichage en logarithmique
Famplitude=(Famplitude-min(min(Famplitude)))*255/(max(max(Famplitude))-min(min(Famplitude)));% affichage en logarithmique
Fphase=atan(real(F)./imag(F));
Fphase=(Fphase-min(min(Fphase)))*255/(max(max(Fphase))-min(min(Fphase)));% affichage en logarithmique
fr=double(zeros(M,N));
for m = 0 : M-1
for n = 0 : N-1
for p = 0 : M-1
for q = 0 : N-1
e1=exp((1i*2*pi*p*m)/M);
e2=exp((1i*2*pi*q*n)/N);
fr(m+1,n+1) =fr(m+1,n+1) + (F(p+1,q+1) * e1 * e2)/(M*N);
end
end
m/M% afiche le poucentage d'avancement de 0 à 1
end
end
figure( 'name','etiquetage',...
'NumberTitle','off',...
'color',[0.3137 0.3137 0.5098]);
subplot(221)
imshow(uint8(f))
title('Original');
subplot(222)
imshow(uint8(Famplitude))
title('Amplitue DFT affichage logarithme');
subplot(223)
imshow(uint8(ceil(real(fr))))
title('IDFT reconstitution');
subplot(224)
imshow(uint8(Fphase))
title('Phase DFT affichage logarithme');
Dans la transformée de Fourier 'normale', Les hautes fréquences sont représentées au centre de l'image et les basses fréquences aux bords.
avec
avec
clear all; close all;
[filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif;*.bmp','All Image Files';...
'*.*','All Files' },'mytitle',...
'C:\Work\myfile.jpg')
f = imread(filename);
% image sur un plan
if (length(size(f))>2)
f=f(:,:,1);% passage de 3 dimensions à 1 ( couleur->niveau de gris)
end
% nombre de bit
k=8;
%taille de la matrice
[M N]=size(f);
f=double(f);
F=double(zeros(M,N));
for p = 0 : M-1
for q = 0 : N-1
for m = 0 : M-1
for n = 0 : N-1
e1=exp((-1i*2*pi*p*m)/M);
e2=exp((-1i*2*pi*q*n)/N);
F(p+1,q+1) =F(p+1,q+1) + f(m+1,n+1)*exp(1i*pi*((m+1)+(n+1))) * e1 * e2;
end
end
end
p/M% afiche le poucentage d'avancement de 0 à 1
end
Famplitude=log2(1+abs(F));% affichage en logarithmique
Famplitude=(Famplitude-min(min(Famplitude)))*255/(max(max(Famplitude))-min(min(Famplitude)));% affichage en logarithmique
Fphase=atan(real(F)./imag(F));
Fphase=(Fphase-min(min(Fphase)))*255/(max(max(Fphase))-min(min(Fphase)));% affichage en logarithmique
fr=double(zeros(M,N));
for m = 0 : M-1
for n = 0 : N-1
for p = 0 : M-1
for q = 0 : N-1
e1=exp((1i*2*pi*p*m)/M);
e2=exp((1i*2*pi*q*n)/N);
fr(m+1,n+1) =fr(m+1,n+1) + (F(p+1,q+1)*exp(-1i*pi*((m+1)+(n+1))) * e1 * e2)/(M*N);
end
end
end
m/M% afiche le poucentage d'avancement de 0 à 1
end
figure( 'Name','DFT',...
'NumberTitle','off',...
'color',[0.3137 0.3137 0.5098]);
subplot(221)
imshow(uint8(f))
title('Original');
subplot(222)
imshow(uint8(Famplitude))
title('Amplitue DFT affichage logarithme');
subplot(223)
imshow(uint8(ceil(real(fr))))
title('IDFT reconstitution');
subplot(224)
imshow(uint8(Fphase))
title('Phase DFT affichage logarithme');
Dans la transformée de Fourier dite 'translatée', Les basses fréquences sont représentées au centre de l'image et les hautes fréquences aux bords. Tout le contraire de la transformée 'normale'.
Copyright © 2010-2014, tous droits réservés, contact : operationpixel@free.fr