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. #141
    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 romanzo Voir le message
    Mais si tu supprime le multi échelle tu supprime aussi la détection de keypoints non? Puisque le détection de keypoints se fait grâce à la pyramide gaussienne et donc le multi échelle.
    Tu limites la détection des keypoints à une seule échelle (l'echelle courante de l'image). Bref, lors de la recherche de maxima, tu regardes seulement les 8 voisins d'un pixel (image courante), au lieu de regarder les 26 voisins (image courante+dessus+dessous).

  2. #142
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    Ok d'accord!

  3. #143
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    Bon en fait j'ai encore une question!

    Je ne comprend pas trop l’intérêt d'utiliser plusieurs octaves.
    J'ai fait pas mal de recherche mais rien qui ne répondait vraiment à ma question.
    Sur une même octave on réduit déjà la résolution spatiale en augmentant sigma afin de supprimer les détails insignifiants.
    Pourquoi dans ce cas ne pas utiliser plus de scales sur une seule et même octave plutôt que plusieurs octaves?
    Donc en gros ma question qu'elle est l'utilité du downsampling de l'image par 2 et d'utiliser plusieurs octaves

    Merci!

  4. #144
    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 romanzo Voir le message
    Donc en gros ma question qu'elle est l'utilité du downsampling de l'image par 2 et d'utiliser plusieurs octaves
    downsampling par 2 <=> multiplier sigma par 2

    Or, plus sigma est grand, plus il faut prendre un grand voisinage de pixels pour faire la convolution... et donc plus la convolution prend du temps. Il est donc beaucoup plus intéressant de diviser la taille de l'image par deux, plutot que de doubler la valeur de sigma. En plus ca permet de réutiliser les memes noyaux de convolution pour tous les octaves.

    Bon, pour SURF, le temps de convolution est constant, alors ca a moins d'importance sur les performances. Par contre, le downsampling permet d'adoucir l'image puisqu'on fait une moyenne des pixels. Cela supprime donc les hautes fréquences dans l'image et rend les approximations de SURF (gaussienne/box) meilleures.

  5. #145
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    Merci c'est très clair, tu m'auras bien aidé!
    Plus qu'a faire marcher l'algo maintenant!

  6. #146
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    C'est la distance entre le pixels et le centre d'un des 4 patchs (4x4) adjacent.

    Une petite image pour que ca soit plus clair.



    à répéter pour les 3 autres patchs : noirs, bleu et vert.
    Salut Pseudocode j'ai encore une question à propos d'un point pas trop clair pour moi. J'ai vu que ça avait déja été abordé précédemment mais c'est toujours flou.

    In other words, each entry into a bin is multiplied by a
    weight of 1 − d for each dimension, where d is the distance of the sample from the central value of the bin as measured in units of the histogram bin spacing


    Donc ce que je comprend c'est que pour chaque nouvelle entrée dans l'histo de 8 bins on multiplie la norme par (1-d) pour chaque dimension (c'est a dire x,y theta?). Ou d est la distance du pixel du patch sur lequel on calcule l'histo à...
    C'est le que ne comprends pas trop. Quand tu dis qu'il faut regarder les patchs adjacents, je ne vois pas ou ça intervient de cette phrase de Lowe. J'aurai penser que c'etait plutot la distance avec le centre du patch ou se trouve le pixel.
    Il parle de central value of the bin et je ne vois pas ce que c'est non plus!

    Merci d'avance.

  7. #147
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    En fait je viens de voir que c'etait aussi ecrit Therefore, trilinear interpolation is used to distribute the value of each gradient
    sample into adjacent histogram bins
    .

    Donc pour moi si le theta=60 on calcule juste la distance de 60 à 45 et 60 à 90 ( pour le adjacent histogram bins) mais je ne vois pas ou il est question de calculer la distance du pixel au centre des patchs adjacents.

  8. #148
    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 romanzo Voir le message
    Donc pour moi si le theta=60 on calcule juste la distance de 60 à 45 et 60 à 90 ( pour le adjacent histogram bins) mais je ne vois pas ou il est question de calculer la distance du pixel au centre des patchs adjacents.
    Et bien, tu l'as dit toi même dans le message précédent.

    It is important to avoid all boundary affects in which the descriptor abruptly changes as a sample shifts smoothly from being within one histogram to another or from one orientation to another.
    On doit s'assurer qu'il n'y a pas de changement brutal du descripteur lorsqu'un point d'intérêt passe d'un patch à l'autre (discrétisation de la position spatiale) ou d'une orientation à l'autre (discrétisation de l'orientation = index dans le bin).

    Therefore, trilinear interpolation is used to distribute the value of each gradient sample into adjacent histogram bins. In other words, each entry into a bin is multiplied by a weight of 1 − d for each dimension, where d is the distance of the sample from the central value of the bin as measured in units of the histogram bin spacing.
    Pour cela, la valeur est répartie sur les patchs adjacents (position spatiale) et sur les orientations voisines (index dans le bin). Cela nous fait donc une pondération par 3 facteurs : dx, dy, et dtheta --> interpolation trilinéaire.

  9. #149
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    D'accord je vois merci.

    Je voulais savoir aussi si je souhaite faire correspondre une seule image avec une autre image, c'est a dire que je n'ai pas plus plusieurs images dans ma database. Est ce qu'il est utile d'utiliser les autres étapes de Lowe( cluster par la transformée de Hough, méthodes des moindres carrés etc)?
    Pour l'instant je fais juste la comparaison des deux plus proches voisins et ce n'est pas terrible terrible niveau matching!

  10. #150
    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
    Pour l'instant je fais juste la comparaison des deux plus proches voisins et ce n'est pas terrible terrible niveau matching!
    C'est curieux. Le descripteur de SIFT est généralement un bon discriminant.

    Citation Envoyé par romanzo Voir le message
    Je voulais savoir aussi si je souhaite faire correspondre une seule image avec une autre image, c'est a dire que je n'ai pas plus plusieurs images dans ma database. Est ce qu'il est utile d'utiliser les autres étapes de Lowe( cluster par la transformée de Hough, méthodes des moindres carrés etc)?
    Il faut d'abord que le matching des plus proches voisins soit bon. Les étapes suivantes sont là pour modéliser la transformation, mais le matching initial est primordial.

  11. #151
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    Ok de toute façon j'ai certainement du faire quelques erreurs.
    L'image que j'utilise aussi n'a une faible résolution et n'a que 3 niveaux de gris.
    Pour une image avec beaucoup plus de textures et de détails (type Lena ) j'obtiens de bien meilleurs résultats.
    Dans mon cas j'ai des bonnes correspondances mais aussi pas mal de mauvaise, donc je vais tenter d'améliorer ça!

    Également tu as dis qu'il fallait prendre les 4 patchs adjacents les plus proches.
    Pour les trouver on calcule la distance du pixel au centre de chaque patch.
    Tu disais précédemment que la distance pour qu'un patch soit considéré adjacent devaient être inférieur ou égale à 4 pixels.
    Or si l'on reprend le dessin du dessus, si le pixel que l'on considère se situe en (0,0) du patch noir alors il est à une distance verticale de 6 pixels jusqu'au centre du patch rouge et une distance horizontal de 6 pixels au centre du patch bleu.
    Dans ce cas les considère t-on comme adjacents? Si oui la distance est supérieur à 4, si non on a que 1 patch adjacent dans ce cas?

  12. #152
    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 romanzo Voir le message
    Or si l'on reprend le dessin du dessus, si le pixel que l'on considère se situe en (0,0) du patch noir alors il est à une distance verticale de 6 pixels jusqu'au centre du patch rouge et une distance horizontal de 6 pixels au centre du patch bleu.
    Dans ce cas les considère t-on comme adjacents? Si oui la distance est supérieur à 4, si non on a que 1 patch adjacent dans ce cas?
    Non, dans ce cas là, les patchs rouge et bleu ne sont pas adjacents.

    Si tu prends le pixels en (0,0), les 4 patchs adjacents sont:
    - le patch noir (évidemment)
    - la patch au-dessus du patch noir
    - la patch a gauche du patch noir
    - la patch en diagonal haut/gauche du patch noir

  13. #153
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    Oui ça j'avais compris mais je voulais parler du cas ou l'on considérait le 1er patch de la fenêtre 16*16 (et le pixel (0,0) dans le repère de la fenêtre)).Dans ce cas la il n'y aura qu' 1 patch adjacent (lui même) non? Car on se limite bien à la fenêtre autour du keypoint.

  14. #154
    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 romanzo Voir le message
    Oui ça j'avais compris mais je voulais parler du cas ou l'on considérait le 1er patch de la fenêtre 16*16 (et le pixel (0,0) dans le repère de la fenêtre)).Dans ce cas la il n'y aura qu' 1 patch adjacent (lui même) non? Car on se limite bien à la fenêtre autour du keypoint.
    Ah. Oui, dans le cas des bords il n'y aura effectivement qu'un patch adjacent.

    Cela dit, comme on pondère toutes les valeurs par une gaussienne centrée sur le keypoint, alors on a des valeurs assez faibles sur les bords. Et donc l'absence des 3 autres patchs adjacents n'est pas vraiment grave.

  15. #155
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    Ouais ok merci, j'avais retenu cette solution dans mon code.
    Mais j'ai toujours un important taux de faux matching comparé au taux de vrai matching (environ une 20 aine de points en tout). Pourtant j'ai l'impression d'avoir bien tout fait. Je pense que mes images ne sont pas optimales pour cette solution

+ Répondre à la discussion
Cette discussion est résolue.
Page 8 sur 8 PremièrePremière ... 45678

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