Bonjour,
J'ai beaucoup lu sur le sujet de l'utilité de l'algorithme de la FFT sur l'amélioration de l'empreinte digitale, mais je comprends toujours pas le principe.
Quelqu'un pourrait-il me l'expliquer en termes simples ?
Merci d'avance.
Bonjour,
J'ai beaucoup lu sur le sujet de l'utilité de l'algorithme de la FFT sur l'amélioration de l'empreinte digitale, mais je comprends toujours pas le principe.
Quelqu'un pourrait-il me l'expliquer en termes simples ?
Merci d'avance.
En fait, je voulais que quelqu'un m'explique ce bout de code en Matlab... Il applique la FFT sur un bloc de 32x32 de l'image et puis il multiplie la matrice résultante par son amplitude (abs(F)) un certain nombre de fois (f) et prend ensuite la transformée inverse de fourier. Mais j'ai pas compris comment ces opérations pourraient améliorer l'image.
Voici le code (c'est à l'intérieur de deux boucles for sur la taille de l'image totale et à pas de 32) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 F=fft2( I(i:a,j:b) ); % Applique la FFT sur le bloc 32x32 considéré. facteur=abs(F).^f; % Calcul du facteur de l'amélioration. bloc = abs(ifft2(F.*facteur)); % Le bloc 32x32 après amélioration et FFT inverse. maxi=max(bloc(:)); % Prend la valeur maximale des coefficients du bloc. if maxi==0 maxi=1; end; bloc= bloc./maxi; % Divise tous les coefficients par le maximum. matrice(i:a,j:b) = bloc; %Remplissage de la matrice par les blocs améliorés.
C'est un filtrage local du bruit.
La matrice d'amplitude à des coefficients entre 0 et 1. Lorsqu'on les élève à la puissance "f", les faibles coefficients deviennent très très faibles alors que les forts coefficients ne baissent que légèrement (par rapport aux autres).
{0.1, 0.2, 0.8, 0.2}^10 = {0.0000..., 0.0000..., 0.1074..., 0.0000...}
Donc on atténue beaucoup les fréquences de faibles amplitudes (le bruit) et légèrement les fréquences de fortes amplitudes (le signal) => on augmente le ratio Signal/Bruit (SNR)
Merci beaucoup pour ta réponse.
Mais vu que je suis débutant dans le domaine, je ne comprends pas pourquoi la matrice d'amplitude a des coefficients entre 0 et 1. Sinon je comprends le reste.
Et une autre question svp : Je ne comprends pas beaucoup comment interpréter le spectre d'amplitude que donne la FFT d'une image donnée. J'ai lu que la fréquence c'est le taux de variation des intensités de l'image originale et les amplitudes c'est quoi ?
Merci d'avance.
En fait, je ne sais pas si c'est vraiment entre 0 et 1. Mais ca n'a pas d'importance. Le fait d'élever des valeurs pas une puissance plus grande que 1 favorise les "grandes" valeurs par rapport aux petites. Donc ca augmente toujours le SNR
{1,2,8,2,1}^10 = {1,1024,1073741824,1024,1}
Il faut juste faire attention a ne pas avoir des valeurs trop grandes, mais ca ne doit pas être un problème pour Matlab.
La FFT permet de décomposer un signal quelconque (une image) en une somme de signaux simples (des sinusoides). Chacune de ces sinusoides est définie par une frequence et une amplitude.Et une autre question svp : Je ne comprends pas beaucoup comment interpréter le spectre d'amplitude que donne la FFT d'une image donnée. J'ai lu que la fréquence c'est le taux de variation des intensités de l'image originale et les amplitudes c'est quoi ?
Une image entierement blanche (= un signal constant de valeur 255) est en fait une sinusoide de frequence 0 et d'amplitude 255. La FFT décompose donc une image entierement blanche en une somme de sinusoides, dont la premiere (frequence 0) a une amplitude de 255 et toutes les autres (frequence>0) ont une de 0. Le spectre d'amplitude est donc {255, 0, 0, 0, 0, ... }
En fait justement, la valeur expérimentale de f est 0.45 car le rapport dit que bien que le fait d'avoir un f grand améliore l'apparence de l'empreinte en liant les crêtes faussement discontinues, il se peut qu'il lie d'autres crêtes qui sont en réalité non liées. Donc f n'est pas supérieure à 1.
Et pourquoi le spectre a toujours une tâche lumineuse au centre et un halo autour, comme ceci ?La FFT permet de décomposer un signal quelconque (une image) en une somme de signaux simples (des sinusoides). Chacune de ces sinusoides est définie par une frequence et une amplitude.
Une image entierement blanche (= un signal constant de valeur 255) est en fait une sinusoide de frequence 0 et d'amplitude 255. La FFT décompose donc une image entierement blanche en une somme de sinusoides, dont la premiere (frequence 0) a une amplitude de 255 et toutes les autres (frequence>0) ont une de 0. Le spectre d'amplitude est donc {255, 0, 0, 0, 0, ... }
Ah, c'est le filtre inverse : au lieu d'accentuer les contours il fait un lissage. En prenant une puissance entre 0 et 1, on atténue la différence entre les grandes/petites valeurs.
Généralement les images ont beaucoup de zones uniformes (ou variant peu). Essaye d'imaginer une image sans "aucune" zone uniforme... ca ressemblerait a du bruit.Et pourquoi le spectre a toujours une tâche lumineuse au centre et un halo autour, comme ceci ?
C'est donc normal d'avoir des coefficients plus grand pour les fréquences basses (proches de 0), ce qui forme un halo près du centre (0,0) et près des axes (0,*) et (*,0).
Mais le but de cette opération c'est justement de rendre les les crêtes de l'empreinte (donc le contour) plus visible.. Je ne comprends plus là..
Je ne pense avoir compris un peu.. mais c'est quoi svp la définition précise de cette fréquence dans le domaine des images ?Généralement les images ont beaucoup de zones uniformes (ou variant peu). Essaye d'imaginer une image sans "aucune" zone uniforme... ca ressemblerait a du bruit.
C'est donc normal d'avoir des coefficients plus grand pour les fréquences basses (proches de 0), ce qui forme un halo près du centre (0,0) et près des axes (0,*) et (*,0).
Merci d'avance.
Le lissage permet d'avoir une meilleure impression de "continuité" car on atténue la différence entre les valeurs. On a ainsi moins l'impression d'avoir un "trou" entre deux fortes valeurs.
Il n'y a pas d'explication "visuelle" simple, si c'est ce que tu veux dire. Les fréquences hautes sont causées par des changements brutaux de valeurs entre 2 pixels voisins : ca peut être du "bruit" sur l'image ou un contraste très fort (le bord d'un objet)Je ne pense avoir compris un peu.. mais c'est quoi svp la définition précise de cette fréquence dans le domaine des images ?
En fait je viens de découvrir ça :
Google Books
Page 112.
C'est une méthode connue apparemment depuis 1994.
Bah voila. Ca répond a ta question pour le nom du filtre.
En fait je viens de me rendre compte que la formule c'est F(i.j)*Module^k. Comme F n'est pas normalisée, on prend en compte son module et donc la puissance "finale" n'est jamais inférieure a 1.
F(i.j)*Module^k = (Fnormalisé(i.j) * Module) * Module^k = Fnormalisé(i.j) * Module^(k+1)
Oui.
C'est à la fin qu'il normalise le résultat final, non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part bloc= bloc./maxi; % Divise tous les coefficients par le maximum.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager