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

  1. #61
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Je viens de trouver ce lien là qui explique bien les détails d'implémentation :

    http://www.vlfeat.org/api/sift.htmll


  2. #62
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Je viens de trouver ce lien là qui explique bien les détails d'implémentation :

    http://www.vlfeat.org/api/sift_8h.html

    Bonjour,
    ah merci bcp

  3. #63
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    c'est encore moi
    ok j'ai compris la construction de l'histogramme juste un point flou, où intervient cette phrase dans qu'elle etape
    "A Gaussian weighting function with σ equal to one half the width of the descriptor window is used to assign a weight to the magnitude of each sample point."
    j'ai cru au debut que c'etait en relation avec la construction de l'histogramme du descripteur pour ponderer la magnitude. d'où la gaussienne hors c'est pas le cas d'après votre reponse.

    Merci

  4. #64
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par fzied Voir le message
    Bonjour,

    c'est encore moi
    ok j'ai compris la construction de l'histogramme juste un point flou, où intervient cette phrase dans qu'elle etape
    "A Gaussian weighting function with σ equal to one half the width of the descriptor window is used to assign a weight to the magnitude of each sample point."
    j'ai cru au debut que c'etait en relation avec la construction de l'histogramme du descripteur pour ponderer la magnitude. d'où la gaussienne hors c'est pas le cas d'après votre reponse.

    Merci
    j'ai encore relu le doc de Low.
    je ne sais pas si c'est juste ou pas.
    pour la construction du descripteur tout d'abord nous avons :
    1- la valeur du gradient en chaque point du voisinage du keypoint (la sous région 4*4) c a d magnitude et orientation (déja calculé à l'etape orientation assignement m et theta).
    2- on assigne une pondération à la magnitude soit m1 cette nouvelle valeur donc
    m1=gaussi(m,8) avec 8=sigma
    3-hist(theta)=hist(theta)+(1-d)*m1

    est ce que les etapes sont correctes ?

    Merci

  5. #65
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par fzied Voir le message
    j'ai encore relu le doc de Low.
    je ne sais pas si c'est juste ou pas.
    pour la construction du descripteur tout d'abord nous avons :
    1- la valeur du gradient en chaque point du voisinage du keypoint (la sous région 4*4) c a d magnitude et orientation (déja calculé à l'etape orientation assignement m et theta).
    2- on assigne une pondération à la magnitude soit m1 cette nouvelle valeur donc
    m1=gaussi(m,8) avec 8=sigma
    3-hist(theta)=hist(theta)+(1-d)*m1

    est ce que les etapes sont correctes ?

    Merci
    Hum... je formulerais plutot ca comme cela

    1. le pixel de coordonnées (i,j) à pour valeur de gradient (theta, norm)

    avec [-8,-8] <= i,j <= [+8,+8]
    et theta orienté par rapport a la direction principale la zone

    2. On assigne une valeur pondérée de la magnitude du gradient aux histogrammes des carrés voisins. Cette valeur vaut

    v = norm * W_win(i,j) * W_carre(i,j)

    W_win(i,j) = gauss2D(i,j,8), la ponderation d'atténuation globale à la zone

    W_carré(i,j) = max(0,1-dx) * max(0,1-dy) avec dx,dy = distance normalisée au centre du carré considéré. C'est à dire dx=abs(i-ci)/8 et dy=abs(j-cj)/8, avec ci,cj le centre du carré.

    3. Comme les histogrammes n'ont que 8 bins, on repartit la valeur de 'v' entre les 2 bins les plus proches : t0 <= theta <= t1

    hist[t0] += v * (t1-theta)/(t1-t0)

    hist[t1] += v * (theta-t0)/(t1-t0)

  6. #66
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Points : 41
    Points
    41
    Par défaut
    Bonjour à tous,

    je suis pleinement débutant en matière de programmation, j'avoue alors que je comprend vraiment pas grand chose à cette discussion !

    Je compte utiliser SIFT sous Matlab. SIFT permet de trouver des points communs entre deux photos, mais est-il possible d'adapter le code pour trouver les points communs entre trois photos ? Si oui je pense que cela est loin d'être évident, donc est-ce que quelqu'un s'est déjà pencher sur cette problématique ?

    Merci d'avance.

  7. #67
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Je dirais qu'il suffirait d'appliquer l'algo sur chacun des 3 duplets d'image (1 2), (1 3), (2 3)...
    Ensuite comparer les points trouvés lors du traitement (1 2) et (1 3) avec ceux trouvés lors du traitement (2 3)...?
    Vu le nombre de points et surtout les 3 traitements, ça risque d'être assez lourd, il existe certainement de meilleures solutions...

  8. #68
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    je désire coder SIFT en C.
    en faite j'aimerai savoir combien est la taille du masque gaussien.
    je précise :
    par exemple si on considère le cas d'une gaussienne d'échelle 2sigma il faut considérer un masque gaussien de taille 4sigma*4sigma que nous allons convoluer après avec l'image source.

    Merci

  9. #69
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonsoir à tout le monde.

    Est-ce quelqu'un peut m'expliquer comment peut-on effectuer une interpolation sur sigma?

    En effet, pour la discrétisation de la dérivée, on utilise la formule suivante:
    dD(x)/dx = ( D(x+1) -D(x-1) )/2 .

    Est-ce qu'on considère les DOG de scale sigma-1 et sigma+1, ou bien les DOG précédente et suivante utilisées pour le calcul des minimas et des maximas?

    Merci de me répondre.

  10. #70
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par rzouguinho Voir le message
    Est-ce quelqu'un peut m'expliquer comment peut-on effectuer une interpolation sur sigma?
    Pourquoi faire ? Tu cherches a calculer des images intermédiaires dans la pyramide ?

    Est-ce qu'on considère les DOG de scale sigma-1 et sigma+1, ou bien les DOG précédente et suivante utilisées pour le calcul des minimas et des maximas?
    ? Que veux tu dires par "considérer" ?

  11. #71
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Ma question porte sur la phase d'interpolation des keypoints pour trouver les coordonnées réels en x, y et sigma de l'extrémum.

    Mon problème réside dans le calcul de la dérivée de D par rapport à sigma.

    Est ce que c'est égal à (D(sigma+1)-D(sigma-1))/2
    ou bien (D(sigma2)-D(sigma1))/2
    avec sigma1 est le scale de la DOG précédente et sigma2 est le scale de la DOG suivante à la DOG d'étude.

  12. #72
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par rzouguinho Voir le message
    Mon problème réside dans le calcul de la dérivée de D par rapport à sigma.

    Est ce que c'est égal à (D(sigma+1)-D(sigma-1))/2
    ou bien (D(sigma2)-D(sigma1))/2
    avec sigma1 est le scale de la DOG précédente et sigma2 est le scale de la DOG suivante à la DOG d'étude.
    C'est le second cas : (D(sigma2)-D(sigma1))/2

    Cf le post #49

  13. #73
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup de m'avoir répondu.

    Cependant je demande, s'il vous plait, quelques clarifications sur certains points:

    1- lorsqu'on cherche des minimas est des maximas pour une image DOG (en la comparant avec l'image DOG précédente et suivante), ils peuvent ne pas être ni minima ni maxima pour une autre image DOG?

    2- pour le calcul de la magnitude et l'orientation du gradient au niveau du keypoint, est-ce que le sigma du L(sigma) utilisé est égal au sigma de l'image DOG de laquelle nous avons extrait le keypoint, ou bien égal à sigma+delta_sigma qui correspond au scale réel du keypoint. Si c'est la 2ème réponse, doit-on donc construire un L(sigma+delta_sigma) pour chaque keypoint?

    3- est-ce que le thêta_max trouvé est égale à une valeur ou un intervalle de 10°?

    Merci d'avance.

  14. #74
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par rzouguinho Voir le message
    1- lorsqu'on cherche des minimas est des maximas pour une image DOG (en la comparant avec l'image DOG précédente et suivante), ils peuvent ne pas être ni minima ni maxima pour une autre image DOG?
    Si. C'est le cas pour les formes qui sont invariantes à l'echelle. Par exemple le coin d'un carré. On a alors des points d'intérets au meme endroit mais avec des echelles différentes.

    2- pour le calcul de la magnitude et l'orientation du gradient au niveau du keypoint, est-ce que le sigma du L(sigma) utilisé est égal au sigma de l'image DOG de laquelle nous avons extrait le keypoint, ou bien égal à sigma+delta_sigma qui correspond au scale réel du keypoint. Si c'est la 2ème réponse, doit-on donc construire un L(sigma+delta_sigma) pour chaque keypoint?
    D'après le papier de Lowe, on utilise L(sigma).

    La valeur "sigma+delta_sigma" n'est utilisée que pour décrire le keypoint, par exemple dans la phase de matching.

    3- est-ce que le thêta_max trouvé est égale à une valeur ou un intervalle de 10°?
    Si tu parles de l'orientation du keypoint, c'est une valeur. Elle est calculée en cherchant le sommet de la parabole passant par les 3 bins voisins dans l'histogramme.

  15. #75
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonsoir à tout le monde.

    J'ai 3 questions à propos du SIFT:

    1- est-ce qu'il faut dupliquer la taille de l'image initiale avant de lui appliquer la convolution avec la gaussienne (pour la première octave)?

    2- après la recherche des minimas et maximas dans une image DOG de la deuxième octave, est-ce qu'il faut dupliquer la taille de cette image pour interpoler la position du keypoint?

    3- pour le problème de bord dans les images, affronté lors du balayage du voisinage d'un pixel, est-ce qu'on ajoute des lignes et des colonnes à l'image par effet miroir?

    Merci de me répondre.

  16. #76
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par rzouguinho Voir le message
    1- est-ce qu'il faut dupliquer la taille de l'image initiale avant de lui appliquer la convolution avec la gaussienne (pour la première octave)?
    C'est préconisé par Lowe si je me souviens bien. Mais ce n'est pas obligatoire. Ca permet juste de trouver des keypoints a des echelles plus petites que la taille originale de l'image, ce qui pourra etre utile dans la phase de matching.

    2- après la recherche des minimas et maximas dans une image DOG de la deuxième octave, est-ce qu'il faut dupliquer la taille de cette image pour interpoler la position du keypoint?
    heu... non. L'interpolation se fait avec les images de l'octave, quelles que soient leurs "tailles".

    3- pour le problème de bord dans les images, affronté lors du balayage du voisinage d'un pixel, est-ce qu'on ajoute des lignes et des colonnes à l'image par effet miroir?
    C'est plus simple de ne pas se préoccuper des pixels sur les bords. De toutes facons, ca sera difficile de savoir si un point sur un bord est un extrema, sans connaitre les pixels voisins.

  17. #77
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut algorithme de détection d 'image
    Bonjour tous le monde,

    Je voudrais savoir quels sont les types d 'algorithmes de détection de point d 'intérêt qui sont aussi performant que l' algorythmes SIFT, y 'en a t-il qui sont plus précis ou qui utilise une différentes méthode

    Je vous remercie d 'avance.

  18. #78
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par tayeb1 Voir le message
    Bonjour tous le monde,

    Je voudrais savoir quels sont les types d 'algorithmes de détection de point d 'intérêt qui sont aussi performant que l' algorythmes SIFT, y 'en a t-il qui sont plus précis ou qui utilise une différentes méthode

    Je vous remercie d 'avance.
    L'algo SURF est une version approximée de SIFT qui est plus rapide, et (parait-il) plus robuste.

    Sinon il y a l'algo FAST que j'aime bien, mais qui ne gère pas vraiment le multi-echelle.

  19. #79
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    L'algo SURF est une version approximée de SIFT qui est plus rapide, et (parait-il) plus robuste.

    Sinon il y a l'algo FAST que j'aime bien, mais qui ne gère pas vraiment le multi-echelle.
    merci speudocode. En fait je dois faire un rapport sur les différentes méthode et justement je ne connaissais pas le FAST. Je vais regarder ca en profondeur et si j 'ai des questions je reviendrai les posés , merci encore.

  20. #80
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    bonjour, je veux seulement détecteur les point d 'intérêt d 'une image, je pense que je n 'ai donc pas besoin de calculer le gradient ?? je souhaite avoir une confirmation, svp.

    Edit : j 'ai oublié de préciser que c'est avec l 'algorithm de SIFT.

+ 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