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

Contribuez Discussion :

[Image] Détecteur de Harris pour ImageJ


Sujet :

Contribuez

  1. #41
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Points : 70
    Points
    70
    Par défaut
    Merci mais j'ai pas compris : " la forme du gradient est une courbe en S "

    Est ce que vous pouvez me donner un exemple sous forme d'une image ou quelque chose pour que je puisse bien comprendre, merci beaucoup d'avance .

  2. #42
    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 bilzzbenzbilz Voir le message
    Merci mais j'ai pas compris : " la forme du gradient est une courbe en S ". Est ce que vous pouvez me donner un exemple sous forme d'une image ou quelque chose pour que je puisse bien comprendre, merci beaucoup d'avance .
    Expliquer les valeurs propres avec un dessin, ça va pas être évident.

    Disons que les 2 valeurs propres de la matrice de Harris représentent les 2 diamètres de l'ellipse qui "colle le mieux" à la courbe du gradient. Ces 2 diamètres sont des grandeurs orientées (= direction + longueur).



    A gauche : dans le cas d'un "bord", on obtient une ellipse aplatie. La mesure de Harris sera très faible car l'un des deux diametrès est beaucoup plus petit que l'autre.

    Au milieu : dans le cas d'un "coin", on obtient une jolie ellipse ronde. La mesure de Harris sera grande car les deux diamètres sont sensiblement de la même taille, et elle sera positive car l'ellipse est "ronde".

    A droite : dans le cas d'un "S", on obtient une ellipse croisée (forme de huit).La mesure de Harris sera grande car les deux diamètres sont sensiblement de la même taille, mais elle sera NEGATIVE car l'ellipse est "croisée".

  3. #43
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Points : 70
    Points
    70
    Par défaut
    vous méritez quelque chose pour votre effort , encore merci.
    d'après l'explication :
    si h<0 alors on est dans le premier cas ( diamètre plus grand que l'autre)
    ou dans le 3ème cas ( forme S )

  4. #44
    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 bilzzbenzbilz Voir le message
    vous méritez quelque chose pour votre effort , encore merci.
    d'après l'explication :
    si h<0 alors on est dans le premier cas ( diamètre plus grand que l'autre)
    ou dans le 3ème cas ( forme S )
    "h", la mesure de Harris, est (en gros) le ratio entre la petite valeur propre et la grande valeur propre.

    Donc dans le 1er cas, la mesure "h" va etre très petite. Et dans le 3ème cas, elle va etre grande mais négative.

  5. #45
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Points : 70
    Points
    70
    Par défaut
    bonjour pseudocode , j'espére que vous ête bien.
    j'ai les dernière question concernant l'algo HARRIS-FAST

    Question 1 : Si j'ai bien compris d'aprés le code :

    //isSpatialMaxima(int[][] hmap, int x, int y)
    int n=8;
    int[] dx = new int[] {-1,0,1,1,1,0,-1,-1};
    int[] dy = new int[] {-1,-1,-1,0,1,1,1,0};
    double w = hmap[x][y];
    for(int i=0;i<n;i++) {
    double wk = hmap[x+dx[i]][y+dy[i]];
    if (wk>=w) return false;
    }

    on a qu'une seule chance d'avoir un point d'interêt dans chaque
    voisinage de 8 ?

    Question 2 :
    d'aprés le code de la fonction : public int[][] filter(int window, double sigma, int minMeasure, int minDistance) {....}

    window : c'est la taille de la fenetre du voisinage . ok
    minMeasure : c'est la distance minimale entre deux points d'interêt . ok

    ----------------------------------------------------------------------

    minMeasure : c'est quoi son rôle ?, comment choisir la meilleur valeur ?, que se passe t-il lorsqu'on change sa valeur ?

    sigma : c'est quoi son rôle ?, comment choisir la meilleur valeur ?, que se passe t-il lorsqu'on change sa valeur ? merci .... .

  6. #46
    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 bilzzbenzbilz Voir le message
    on a qu'une seule chance d'avoir un point d'interêt dans chaque voisinage de 8 ?
    Oui. Je considère qu'un point est un maximum local s'il est plus grand que ses 8 voisins.

    minMeasure : c'est quoi son rôle ?, comment choisir la meilleur valeur ?, que se passe t-il lorsqu'on change sa valeur ?
    Je suggère de relire mon post #20, afin d'utiliser une valeur en pourcentage, plutot qu'une valeur absolue comme c'est la cas dans le code actuel.

    sigma : c'est quoi son rôle ?, comment choisir la meilleur valeur ?, que se passe t-il lorsqu'on change sa valeur ? merci .... .
    En fait, ce paramètre est le "sigma²" (au carré) de la gaussienne. Ce paramètre fait varier les poids de la moyenne pondérée. On peut dire que ca revient a aplliquer un "flou" plus ou moins fort à l'image, et donc à gommer le bruit eventuel sur l'image d'origine.

    Ce paramètre doit être relié à la taille de la fenetre (window). En utilisant le calcul du FWHM, on peut trouver des règles empirques. Generalement je choisis:

    sigma² = (window+2)/(4.71)

  7. #47
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Points : 70
    Points
    70
    Par défaut
    Conclusion, grace à vous j'ai compris le principe de detection de points d'interêt et comprendre votre algorithme.
    Math.pow(Double.toString("merci")),10000000000000)
    ---------------------------------------------------------------------

    Maintenant que j'arrive à detecter les points d'interêt dans les images,
    supposons qu'on a deux images , comment faire une correspondance entre chaque point d'interêt de la première image avec le point d'interêt correspondant ( si il existe ) dans la deuxième image .

  8. #48
    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 bilzzbenzbilz Voir le message
    Maintenant que j'arrive à detecter les points d'interêt dans les images, supposons qu'on a deux images , comment faire une correspondance entre chaque point d'interêt de la première image avec le point d'interêt correspondant ( si il existe ) dans la deuxième image .
    Là, on dépasse largement le cadre de cette contribution. Je suggère une petite recherche dans le forum sur ce sujet, puis sur internet avec les mots clés "point matching" et sinon la création d'une nouvelle discussion dans le forum "Traitement d'images".

  9. #49
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Points : 70
    Points
    70
    Par défaut
    j'ai filtré google ,ce forum, autres forum, mais toujours le même résultat : aucune information sur les étapes à faire .

  10. #50
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 177
    Points : 106
    Points
    106
    Par défaut re
    tu peux utiliser le voisinage de tes poits d'intérêts. tu en extrait des caractéristiques (couleurs, textures et formes). Ensuite il te faut parvenir a calculer des distances entre tes caractéristiques afin de dire si oui ou non les zones sont similaires...

    mots clés:indexation d'image, caractéristiques bas-niveau

  11. #51
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Points : 2
    Points
    2
    Par défaut probleme
    salut pseudocode
    pour quoi ton code na marche pas sur mon eclipse ?
    j'espere que je besoin d'un package (bibliothèque)
    merci

  12. #52
    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 badzed Voir le message
    salut pseudocode
    pour quoi ton code na marche pas sur mon eclipse ?
    j'espere que je besoin d'un package (bibliothèque)
    merci
    Le code du post #14 n'a besoin d'aucune bibliothèque supplémentaire. Il fonctionne très bien sous eclipse.

  13. #53
    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
    Un petit message pour indiquer que j'ai posté le code d'un détecteur (minimaliste) de Harris-Laplace dans la contribution "pyramide gaussienne".

    détecteur de Harris-Laplace


  14. #54
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Une petite question relative au plugin pour ij, quand on l'utilise, à quoi correspond le paramètre halfwindowsize qui est demandé ? Et à quoi sert il ?

  15. #55
    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 godhiva Voir le message
    Bonjour,

    Une petite question relative au plugin pour ij, quand on l'utilise, à quoi correspond le paramètre halfwindowsize qui est demandé ? Et à quoi sert il ?
    C'est le rayon de la zone d'intégration, donc la demi-taille du noyau gaussien.

  16. #56
    Membre du Club Avatar de mobi_bil
    Profil pro
    Inscrit en
    Février 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 242
    Points : 52
    Points
    52
    Par défaut
    Bonjour Pseudocode,
    Dans l'algorithme HarrisLaplace, plus précisement, dans le calcul du laplacian :

    1 : Pourquoi vous avez utilisé un voisinage de 4 pixels seulement : pixel au-dessus, au-dessous, gauche et droite.

    2 : D'ou vient la formule :
    float laplacian = -v11 + 0.25f*(v10+v01+v21+v12);
    Normalement, le Laplacien est calculé à partir de la deuxième dérivée gaussienne.
    On prend le sigma2 de l'image courante, on calcul la convolution de l'image originale par la deuxième dérivée gaussienne de sigma2.

    Merci

    Dans la calcul de Harris :
    1 : comment avez vous obtenu ce masque gaussien : {1,2,1},{2,4,2},{1,2,1}

  17. #57
    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 mobi_bil Voir le message
    Bonjour Pseudocode,
    Dans l'algorithme HarrisLaplace, plus précisement, dans le calcul du laplacian :

    1 : Pourquoi vous avez utilisé un voisinage de 4 pixels seulement : pixel au-dessus, au-dessous, gauche et droite.
    Je n'ai pas besoin de prendre plus grand : c'est l'image qui change d'échelle et pas le masque du filtre qui change de taille.

    2 : D'ou vient la formule :
    float laplacian = -v11 + 0.25f*(v10+v01+v21+v12);
    Normalement, le Laplacien est calculé à partir de la deuxième dérivée gaussienne.
    La dérivée seconde d'une gaussienne est une LoG (Laplacian of gaussian), c'est à dire l'opérateur Laplacien appliqué a une gaussienne, que l'on peut utiliser directement sur l'image originale.

    Dans mon cas, l'image est déjà convoluée par une Gaussienne, donc je peux utiliser directement l'opérateur Laplacien : Lap(f(x,y)) = d²f(x,y)/dx² + d²f(x,y)/dy² en approximant la dérivée seconde par la limite du taux de variation : d²f(x)/dx² = ( (f(x+h)-f(x)) - (f(x)-f(x-h)) )/h² pour h tendant vers 0. Comme on est dans le cas discret, on prend h=1.

    Dans la calcul de Harris :
    1 : comment avez vous obtenu ce masque gaussien : {1,2,1},{2,4,2},{1,2,1}
    [1,2,1] sont les coefficients binomiaux gaussien. En les appliquant verticalement puis horizontalement sur un pixel on obtient le masque 2D.

  18. #58
    Membre du Club Avatar de mobi_bil
    Profil pro
    Inscrit en
    Février 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 242
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    laplacian = -v11 + 0.25f*(v10+v01+v21+v12);
    Comme on est dans le cas discret, on prend h=1.
    En utilisant le théorème, je trouve pour h=1 :

    d²f(x)/dx²=v21+v01-2*v11
    d²f(y)/dy²=v12+v10-2*v11

    donc laplacian= -4*v11+v10+v01+v12+v21

    Pourquoi vous avez divisée le laplacian par 4 ? c'est le même.

    Merci pour votre aide.

  19. #59
    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 mobi_bil Voir le message
    En utilisant le théorème, je trouve pour h=1 :

    d²f(x)/dx²=v21+v01-2*v11
    d²f(y)/dy²=v12+v10-2*v11

    donc laplacian= -4*v11+v10+v01+v12+v21

    Donc, d'ou vient le v11 et le 0.25
    C'est juste la même formule divisée par 4. Ce facteur n'a pas vraiment d'importance car dans le detecteur on cherche la position des extrema du Laplacien. La valeur du laplacien n'a pas vraiment d'importance.

  20. #60
    Membre du Club Avatar de mobi_bil
    Profil pro
    Inscrit en
    Février 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 242
    Points : 52
    Points
    52
    Par défaut
    J'ai compris, merci.
    2 dernières choses :

    1 : Pourquoi vous vérifiez si la valeur absolue de harris et laplacian est inférieure à 1 ? ( ce n'est pas le cas de l'ancien detecteur HarrisFast).
    2 : Est ce que le but de diviser la valeur de harris par 255*255 est de manipuler de petites valeurs ?

    Merci pour votre aide.

Discussions similaires

  1. [image] Filtre Squelette pour ImageJ
    Par pseudocode dans le forum Contribuez
    Réponses: 47
    Dernier message: 12/08/2013, 11h41
  2. [Image] Filtre UnNoise pour ImageJ
    Par pseudocode dans le forum Contribuez
    Réponses: 37
    Dernier message: 07/03/2008, 17h23
  3. [Image] Filtre de Canny pour ImageJ
    Par pseudocode dans le forum Contribuez
    Réponses: 18
    Dernier message: 13/09/2007, 20h01
  4. [Image] Filtre UnNoise pour ImageJ
    Par pseudocode dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 04/04/2007, 00h38
  5. Réponses: 20
    Dernier message: 19/12/2004, 19h52

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