Transformé de fourier d'une image

MDS -  
isra2011 Messages postés 1 Statut Membre -
Bonjour,
je ne parviens pas à tracer le spectre d'une ligne d'une image 2D avec matlab.merci
A voir également:

7 réponses

squall289 Messages postés 107 Statut Membre 13
 
Bonjour,
Tu veux tracer le spectre d'une seule ligne ou de l'image totale ?
Il y a un fft2(...) à faire au début, puis un abs pour avoir la valeur absolue et un fftshift pour redresser l'origine de ton image.
Donc pour une image complete, cela donne du abs(fftshift(fft2("image.jpg")));
et pour un profil de ligne tu fais une simple fft apres avoir extrait la ligne je dirai.
0
MDSUM2 Messages postés 61 Statut Membre
 
merci,
mais je veux tracer le spectre de la premiere ligne de l'image et de la ligne Nlin/2
0
squall289 Messages postés 107 Statut Membre 13
 
récupère donc ta première ligne, ensuite tu fais une simple fft et tu affiche la valeur absolue.
ça donne un truc du genre :

I=imread("image.jpg");
[M,N]=size(I);

ligne1=I(:,1);
ligne2=I(:,M/2);

fourier=fft(ligne1);

et ensuite tu affiches, il me semble qu'il y a une fonction qui te fait directement la transformée de Fourier ainsi que l'affichage; sinon tu va galérer à te faire une échelle log...
mais regarde, normalement la fonction est toute faite.
0
isra2011 Messages postés 1 Statut Membre
 
SALUT,
j ai essyé ce programme,mé lors de lexecution ç est detecté des ereurs,au niveau de cette ligne [M,N]=size(I); Le M et N se sont les lignes et les collones de nnotre image ?
merci d avance
0
MDSUM2 Messages postés 61 Statut Membre
 
pour l'affichage c'est pas
figure(1);image("nom de l'image")?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
squall289 Messages postés 107 Statut Membre 13
 
plutot imshow(I);
mais ici tu as un profil de ligne, ce n'est donc pas une image que tu veut afficher mais un graphe donc cela ne fonctionnera pas. Il faut que tu fasses comme si tu voulais tracer le diagramme de Bode d'une fonction.
Tu peux par exemple définir un vecteur f=-1000:1000; et faire un plot(f,fourier1); par exemple. Mais le résultat ne sera pas excellent.
C'est étrange qu'on te demande qu'un profil de ligne, normalement pour du traitement d'image on travail sur la fft complète, ça permet de voir les basses fréquences au centre, la HF vers l'exterieur, la valeur moyenne à l'origine, d'appliquer des filtres etc..
0
MDSUM2 Messages postés 61 Statut Membre
 
en fait c'est ça la question:
Essayez de regarder ce qu'il se passe si vous faites la fft sur la ligne N/2 de votre image. Tracez ce spectre.
Effectuez la même opération sur la première ligne de l'image. Conclusion ?
0
squall289 Messages postés 107 Statut Membre 13
 
et quelle est l'image observée ?
Une ligne d'une image correspond à un signal, composé en de plusieurs fréquences.
Le spectre sera différent. Mais je ne vois pas l'interet de faire cette manip.
Enfin bref, essaie de faire un plot en ayant défini un vecteur fréquence, ça devrait le faire quand même.
0