La Transformée de Fourrier
Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
-
hamdimanel
- Messages: 3
- Enregistré le: 14 Jan 2017, 18:11
-
par hamdimanel » 22 Avr 2017, 09:59
Bonjour,
je suis débutante en matlab et j'ai besoin vraiment de votre aide.
Fourier transform of image
i=imread('chipper.jpg');
i=rgb2gray(i);
i=im2double(i);
FI=fft2(i);
FI_S=abs(fftshift(FI));
I1=ifft2(FI);
I2=real(I1);
subplot(131),imshow(i),title('original');
subplot(132),imagesc(0.5*log(1+FI_S)),title('fourier spectrum'), axis off;
subplot(133),imshow(I2),title('reconstructed');
c'est la transformée de fourrier qui permet de passer du domaine spatial au domaine fréquentiel.
je veux une explication détaillée de ce code que fait chaque fonction???
par exemple pourquoi transformer l'image en double ?
fftshift=centrage de la fréquence nulle mais que fait abs(fftshift)??
imagesc(0.5*log(1+FI_S))?????pourquoi on a utiliser imagesc et nn imshow ,pourquoi 0.5*log(1+FI_S)???
merci pour votre compréhension,j'ai raiment besoin de votre aide.
-
pascal16
- Membre Légendaire
- Messages: 6663
- Enregistré le: 01 Mar 2017, 13:58
- Localisation: Angoulème : Ville de la BD et du FFA. gare TGV
-
par pascal16 » 08 Mai 2017, 08:56
J'y connais rien en mathlab, mais un peu en programmation
i=imread('chipper.jpg');
-> lire l'image chipper.jpg
-> i devient un tableau de nombres, sans doute au format RGB, donc 3 données 8 bits par point.
i=rgb2gray(i);
-> transforme l'image en niveau de gris
-> tu as cette fois un tableau où 1 point = 1 donnée 8 ou 16 bits suivant la fonction (tu as déjà des pertes de données)
i=im2double(i);
-> ça ne double pas le tableau, ça change seulement le codage de 8 bits en nombres réels classiques (des réels double précision soit "double" en informatique, se sont des réels classiques sur les ordinateurs modernes).
FI=fft2(i);
->FI devient la transformée de fourrier rapide 2D de i
le format de sorti est celui définie dans la fonction fft2 que je n'ai pas
FI_S=abs(fftshift(FI));
I1=ifft2(FI);
I2=real(I1);
-> là, pareil, je n'ai pas les fonctions FI_S, mais ça transforme en un tableau de nombre qui seront affichés ensuite avec subplot
-> I1 semble reprendre la transformée de fourrier Inverse (tableau de nombre réels)
-> I2 n'en garde que la partie réelle
subplot(131),imshow(i),title('original');
-> met un titre à la fenêtre d'affichage
subplot(132),imagesc(0.5*log(1+FI_S)),title('fourier spectrum'), axis off;
-> trace les valeurs des points de la transformée sur une échelle logarithme
subplot(133),imshow(I2),title('reconstructed');
-> trace l'image de la partie réelle de la transformée inverse
la commande "subplot xyz" permet de tracer plusieurs courbes dans une même fenêtre.
-
hamdimanel
- Messages: 3
- Enregistré le: 14 Jan 2017, 18:11
-
par hamdimanel » 22 Mai 2017, 10:43
Merci bcp pascal16 connaissez vous svp comment afficher une image 3D avec les coordonnées sphériques et non pas cartésiennes.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 12 invités