IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

Algorithme SIFT


Sujet :

Traitement d'images

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 112
    Par défaut Algorithme SIFT
    Bonjour,

    je suis en train de lire la publication de Lowe et j'ai quelques points obscurs, si quelqu'un pouvait les éclaircir :

    On utilise des différences de convolués avec des Gaussiennes pour extraire des minima, maxima selon x, y et sigma ... mais d'un autre coté il parle d'octave, et de re-échantillonnage (re-échantilllonné c'est faire un zoom arrière ?? ) avec une interpolation bilinéaire,... mais je vois pas l'intéret ... en gros je m'embrouille entre la convolution avec des gaussiennes à différentes échelles (sigma croissant) et le zoom arrière arrièr , je ne vois pas le lien.

    Apres néttoyage des outliers, ça j'ai compris.

    Après il crée un histogramme ( si j'ai bien compris, pour assigner une orientation à chaque keypoint), donc si j 'ai bien compris, pour chaque keypoint, il met un masque gaussien, ( mais il dit pas de quelle largeur ), en chaque point de ce voisinage, il calcule l'orientation du gradient, cette orientation a un poid qui est fonction de l'amplitude du gradient et du masque ( mais il dit pas comment on calcule cette fonction), après il prend pour orientation le pique de l'histogramme.


    ensuite il prends un descripteur de 128 composantes, mais j'ai pas compris ce que représente chaque composantes (4*4*8)

    Merci de votre d'avance

  2. #2
    Membre chevronné

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Citation Envoyé par MohEllayali Voir le message
    Bonjour,

    je suis en train de lire la publication de Lowe et j'ai quelques points obscurs, si quelqu'un pouvait les éclaircir :

    On utilise des différences de convolués avec des Gaussiennes pour extraire des minima, maxima selon x, y et sigma ... mais d'un autre coté il parle d'octave, et de re-échantillonnage (re-échantilllonné c'est faire un zoom arrière ?? ) avec une interpolation bilinéaire,... mais je vois pas l'intéret ... en gros je m'embrouille entre la convolution avec des gaussiennes à différentes échelles (sigma croissant) et le zoom arrière arrièr , je ne vois pas le lien.
    Le but c'est de détecter les points d'intérêts a différentes échelles. Intuitivement tu peux voir qu'un flou gaussien te permet d'éliminer les 'petites' features, tout en conservant les grandes (donc 'dezoomer' lorsque sigma augmente). Un résultat grosso-modo similaire pourrait être achevé en redimensionnant l'image avec une interpolation - mais cela serait moins efficace. Par contre des que l'octave est atteinte il suffit (en gros) de considérer un pixel sur deux de l'image originale! (en resume: pour dezoomer d'un facteur 1 < s < 2 (chaque estape est appelle scale), il utilise un flou gaussien, lorsque s = 2 (octave) il ne considere qu'un pixel sur deux, etc.).

    Apres cette étape, chaque point d'intérêt a une position et un 'scale' s.

    Apres néttoyage des outliers, ça j'ai compris.

    Après il crée un histogramme ( si j'ai bien compris, pour assigner une orientation à chaque keypoint)
    absolument, c'est l'étape cruciale qui permet de rendre le descripteur invariant aux rotations.

    , donc si j 'ai bien compris, pour chaque
    keypoint, il met un masque gaussien, ( mais il dit pas de quelle largeur ),
    sigma proportionnel a s (de combien doit être indique dans le papier non?...)
    en chaque point de ce voisinage, il calcule l'orientation du gradient, cette orientation a un poids qui est fonction de l'amplitude du gradient et du masque ( mais il dit pas comment on calcule cette fonction),
    sigma proportionnel a s?
    après il prend pour orientation le pique de l'histogramme.

    ensuite il prends un descripteur de 128 composantes, mais j'ai pas compris ce que représente chaque composantes (4*4*8)
    Ces composantes représentent le voisinage du point d'intérêt. Plus precisemment c'est l'ensemble des histogrammes d'orientation du voisinage de ton point d'intérêt. Chaque histogramme étant sur 8 composants, et puisque le voisinage est divise en 4x4 régions, ça te donne 8x4x4 = 128 composantes.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 112
    Par défaut
    Bonjour, Merci pour vos réponses, j'y vois plus claire

    Le papier se trouve ici :

    http://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf

    Le but c'est de détecter les points d'intérêts a différentes échelles. Intuitivement tu peux voir qu'un flou gaussien te permet d'éliminer les 'petites' features, tout en conservant les grandes (donc 'dezoomer' lorsque sigma augmente). Un résultat grosso-modo similaire pourrait être achevé en redimensionnant l'image avec une interpolation - mais cela serait moins efficace. Par contre des que l'octave est atteinte il suffit (en gros) de considérer un pixel sur deux de l'image originale! (en resume: pour dezoomer d'un facteur 1 < s < 2 (chaque estape est appelle scale), il utilise un flou gaussien, lorsque s = 2 (octave) il ne considere qu'un pixel sur deux, etc.).

    Apres cette étape, chaque point d'intérêt a une position et un 'scale' s.
    Merci, maintenant , je vois la démarche , en effet , il floue l'image

    http://pegasus.cc.ucf.edu/~ja709267/...e construction

    et une fois le sigma atteint 2 fois sa valeur initiale ( ici c'est le troisème carrée à partir du dessous) , il crée un nouvel octave en ré-échantillonant ( en prenant un pixel sur 2) l'image, mais ma question est quand il explore la pyramide il extrait les maxima / minima uniquement du 1er octave (auquel cas à quoi servirait un 2ème octave) , ou bien ils entasse tout les octaves les uns sur les autres, en cherchant le maxima . Mais dans ce cas là, comment fait-il ? puisque les images n'ont pas la même taille d'un octave à un autre ?


    sigma proportionnel a s (de combien doit être indique dans le papier non?...)
    Oui, en effet désolé

    Ces composantes représentent le voisinage du point d'intérêt. Plus precisemment c'est l'ensemble des histogrammes d'orientation du voisinage de ton point d'intérêt. Chaque histogramme étant sur 8 composants, et puisque le voisinage est divise en 4x4 régions, ça te donne 8x4x4 = 128 composantes.
    Tout à fait , mais ce qui me parrait bizzare , c'est la dimension paire de la fenêtre :
    http://pegasus.cc.ucf.edu/~ja709267/...,19,Descriptor

    le plus logique , pour que la fenêtre soit symétrique c'est qu'il soit impaires, autant de pixel à droite qu'à gauche

  4. #4
    Membre chevronné

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Citation Envoyé par MohEllayali Voir le message
    et une fois le sigma atteint 2 fois sa valeur initiale ( ici c'est le troisème carrée à partir du dessous) , il crée un nouvel octave en ré-échantillonant ( en prenant un pixel sur 2) l'image, mais ma question est quand il explore la pyramide il extrait les maxima / minima uniquement du 1er octave (auquel cas à quoi servirait un 2ème octave) , ou bien ils entasse tout les octaves les uns sur les autres, en cherchant le maxima . Mais dans ce cas là, comment fait-il ? puisque les images n'ont pas la même taille d'un octave à un autre ?
    Chaque octave est divise en N scales (disons N=5 par exemple). Dans un certain octave, pour chercher un point d'interets, tu prends 3 scales consécutifs et pour chaque pixel tu testes s'il est un extrema, si oui -> possible point d'interet.

    La méthode s'applique a tous les octaves... Et je ne pense pas qu'il considère les maximas entre le dernier scale d'un octave avec le premier de l'octave suivant.


    Tout à fait , mais ce qui me parrait bizzare , c'est la dimension paire de la fenêtre :
    http://pegasus.cc.ucf.edu/~ja709267/...,19,Descriptor

    le plus logique , pour que la fenêtre soit symétrique c'est qu'il soit impaires, autant de pixel à droite qu'à gauche
    Premièrement, n'oublie pas qu'un point d'intérêt a une précision plus précise qu'un pixel. Théoriquement je ne pense pas qu'il y ait a pas de raison pour que ta fenêtre soit alignée sur un pixel, on pourrait s'en sortir avec des interpolations. Dans la pratique je pense que la fenêtre est suffisamment grande pour que ça ne cause pas de problème de l'aligner sur le pixel le plus proche du point d'intérêt (la description du point d'intérêt ne sera peut-être 'exacte', mais la localisation calculée précédemment l'est, c'est l'important).

    Salutations,

    Greg

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 112
    Par défaut
    Merci beaucoup Greg, tout est claire pour moi maintenant

    Salutation ,

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut
    Bonjour,
    Je voudrais juste savoir si l'on est obligé de parcourir plusieurs octaves pour traiter les images ou si une seule suffit.
    Si on doit en parcourir plusieurs, pourriez vous m'expliquer pourquoi? combien faut-il en parcourir? comment mettre les données en commun?
    Merci d'avance pour toutes les réponses.

    J'ai oublié de demander une petite chose en plus.
    Si je considère k=racine(2), j'aurais s=2 donc s+3=5 images par octave. Si j'ai bien compris les octaves sont divisées en parties égales.
    Ainsi si je prend sigma=1 et que comme le dit Lowe l'avant dernière image de l'octave à un sigma doublée (ici 2) alors j'aurais dans l'ordre des images avec comme indice:
    2,5sigma
    2sigma
    1,5sigma
    1sigma
    0,5sigma

    Merci pour les réponses...

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Par défaut
    Ces composantes représentent le voisinage du point d'intérêt. Plus precisemment c'est l'ensemble des histogrammes d'orientation du voisinage de ton point d'intérêt. Chaque histogramme étant sur 8 composants, et puisque le voisinage est divise en 4x4 régions, ça te donne 8x4x4 = 128 composantes.


    Citation Envoyé par paradize3 Voir le message

    Citation Envoyé par MohEllayali

    Tout à fait , mais ce qui me parrait bizzare , c'est la dimension paire de la fenêtre :
    http://pegasus.cc.ucf.edu/~ja709267/...,19,Descriptor

    le plus logique , pour que la fenêtre soit symétrique c'est qu'il soit impaires, autant de pixel à droite qu'à gauche
    Premièrement, n'oublie pas qu'un point d'intérêt a une précision plus précise qu'un pixel. Théoriquement je ne pense pas qu'il y ait a pas de raison pour que ta fenêtre soit alignée sur un pixel, on pourrait s'en sortir avec des interpolations. Dans la pratique je pense que la fenêtre est suffisamment grande pour que ça ne cause pas de problème de l'aligner sur le pixel le plus proche du point d'intérêt (la description du point d'intérêt ne sera peut-être 'exacte', mais la localisation calculée précédemment l'est, c'est l'important).

    Salutations,

    Greg

    Salut,

    ce que j'ai pas bien compris pourquoi l'histogramme étant sur 8 composants, et je ne comprend pas encore pourquoi la taille de la fenêtre 4*4 un nombre paire car comme ça le point d'intérêt ne soit pas centré ??!!

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par azertyuio Voir le message
    Salut,

    ce que j'ai pas bien compris pourquoi l'histogramme étant sur 8 composants, et je ne comprend pas encore pourquoi la taille de la fenêtre 4*4 un nombre paire car comme ça le point d'intérêt ne soit pas centré ??!!
    Aucune idée pour les 2 questions.

    Je suppose que Lowe a fait des tests pour aboutir à choisir une quantification sur un histogramme de 8 bins. Et c'est vrai qu'utiliser un nombre impair de cases aurait simplifié la sélection des pixels. D'un autre coté, un nombre pair permet de découper la zone en 4. Bref, je ne sais pas.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut
    Bonjour,
    Je dois implémenter l'algo de sift pour faire une détection de point d'intérêt mais je n'y comprend pas grand chose!
    Je me sert de la documentation 'Distinctive Image Features from Scale-Invariant Keypoints' de Lowe.

    Pouvez-vous m'expliquer ce que représente 'sigma', 's' et 'k' ??

    Citation Envoyé par yoannbred Voir le message
    Bonjour,
    Si je considère k=racine(2), j'aurais s=2 donc s+3=5 images par octave. Si j'ai bien compris les octaves sont divisées en parties égales.
    Ainsi si je prend sigma=1 et que comme le dit Lowe l'avant dernière image de l'octave à un sigma doublée (ici 2) alors j'aurais dans l'ordre des images avec comme indice:
    2,5sigma
    2sigma
    1,5sigma
    1sigma
    0,5sigma
    Salut,
    Comment fais-tu pour avoir ça??
    Merci

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par mel84 Voir le message
    Bonjour,
    Je dois implémenter l'algo de sift pour faire une détection de point d'intérêt mais je n'y comprend pas grand chose!
    Je me sert de la documentation 'Distinctive Image Features from Scale-Invariant Keypoints' de Lowe.

    Pouvez-vous m'expliquer ce que représente 'sigma', 's' et 'k' ??
    J'ai posté un code pour construire une pyramide gaussienne dans la rubrique "contribuez". C'est déjà un premier pas vers SIFT.

    Comment fais-tu pour avoir ça??
    Merci
    Au départ, l'image est considérée comme ayant une échelle "sigma". A chaque changement d'octave, l'échelle double. Pour les niveaux dans un octave, les échelles doivent s'étaler uniformément entre sigma et 2*sigma, c'est a dire suivant une suite géométrique de raison K=2^(1/nombre de niveaux par octave)

    Par exemple, pour 2 octaves et 3 niveaux par octaves:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    => K = 2^(1/3)
     
    Image initiale  : échelle = sigma
    -------------------
    Octave 1, niveau 1 : échelle = (K)*sigma
    Octave 1, niveau 2 : échelle = (K^2)*sigma 
    Octave 1, niveau 3 : échelle = (K^3)*sigma = 2.0*sigma
    -------------------
    Octave 2, niveau 1 : échelle = 2.0*(K)*sigma
    Octave 2, niveau 2 : échelle = 2.0*(K^2)*sigma
    Octave 2, niveau 3 : échelle = 2.0*(K^3)*sigma = 4.0*sigma
    Dans la pyramide de Lowe, on ajoute un niveau au début et deux à la fin de l'octave pour pouvoir calculer toutes les DoG sans changer d'octave.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    => K = 2^(1/3)
    
    Image initiale  : échelle = sigma
    -------------------
    Octave 1, niveau 0 : échelle = sigma
    Octave 1, niveau 1 : échelle = (K)*sigma
    Octave 1, niveau 2 : échelle = (K^2)*sigma 
    Octave 1, niveau 3 : échelle = (K^3)*sigma = 2.0*sigma
    Octave 1, niveau 4 : échelle = (K^4)*sigma 
    Octave 1, niveau 5 : échelle = (K^5)*sigma
    -------------------
    Octave 2, niveau 0 : échelle = 2.0*sigma
    Octave 2, niveau 1 : échelle = 2.0*(K)*sigma
    Octave 2, niveau 2 : échelle = 2.0*(K^2)*sigma
    Octave 2, niveau 3 : échelle = 2.0*(K^3)*sigma = 4.0*sigma
    Octave 2, niveau 4 : échelle = 2.0*(K^4)*sigma
    Octave 2, niveau 5 : échelle = 2.0*(K^5)*sigma
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut
    Je te remercie de ta réponse, c'est déjà beaucoup plus clair maintenant!!
    Cependant pourquoi on doit ajouter 2 niveau à la fin pour Lowe? un niveau je comprend, mais deux??

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par mel84 Voir le message
    Je te remercie de ta réponse, c'est déjà beaucoup plus clair maintenant!!
    Cependant pourquoi on doit ajouter 2 niveau à la fin pour Lowe? un niveau je comprend, mais deux??
    Ca s'explique un peu plus loin dans le document de Lowe. Dans SIFT, on va calculer des DoG (difference of gaussians) et pour cela on a besoin de 2 niveaux consécutifs de la pyramide pour faire un niveau de Dog.

    Donc pour avoir 3 niveaux de DoG, il nous faut 4 niveaux de pyramide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Octave 1, niveau 1 
                        >----> Dog(1,1)
    Octave 1, niveau 2 
                        >----> Dog(1,2)
    Octave 1, niveau 3 
                        >----> Dog(1,3)
    Octave 1, niveau 4 
    On va également avoir besoin de comparer une DoG a la DoG précédente et la Dog suivante. Donc, dans mon exemple, on a besoin de la DoG(1,0) et la DoG (1,4). Donc on a besoin de 2 niveaux de pyramide supplémentaires. Soit au total 3 niveaux de pyramide de plus que le nombre de DoG.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Octave 1, niveau 0 
                        >----> Dog(1,0)
    Octave 1, niveau 1 
                        >----> Dog(1,1)
    Octave 1, niveau 2 
                        >----> Dog(1,2)
    Octave 1, niveau 3 
                        >----> Dog(1,3)
    Octave 1, niveau 4 
                        >----> Dog(1,4)
    Octave 1, niveau 5 
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Par défaut
    Ok!
    En fait on en a besoin pour calculer les extrema!

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comprendre les étapes de l'algorithme SIFT
    Par looclooc dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 08/12/2011, 15h54
  2. Algorithme SIFT
    Par QuestionSolution dans le forum OpenCV
    Réponses: 3
    Dernier message: 08/10/2009, 18h00
  3. Réponses: 3
    Dernier message: 12/06/2009, 14h10
  4. Algorithme SIFT et tracking en temps réel
    Par looclooc dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 19/05/2009, 09h20
  5. Algorithme SIFT
    Par speedo2008 dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 01/04/2009, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo