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

Algorithmes et structures de données Discussion :

passage par zéro du laplacien


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Par défaut passage par zéro du laplacien
    Salut
    J'ai un rapport de recherche à implémenter dans lequel ils disent à chaque fois "les pixels représentant le passage par zéro du laplacien"
    J'ai calculé le laplacien, mais je ne sais pas ce qu'ils veulent dire par passage par zéro.
    Je demande à ceux qui sont habitués à de telles opérations de me dire -s'il le veulent bien- de quoi il s'agit exactement?
    Est-ce les points dans lesquels le laplacien est égal à zero?
    ou bien les points dans lesquels le laplacien est positif mais négatif dans leurs voisins?
    Merci de bien vouloir m'expliquer

  2. #2
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Le passage par zéro du Laplacien se traduit effectivement par un changement de signe...
    En fait on ne peut pas chercher les points tels que le laplacien soit nul à cause du caractère discret du Laplacien (dû au caractère discret de l'image): on ne dispose pas d'une fonction continue donc on ne peut pas chercher (x,y) de R*R tel que L(x,y) = 0...

    Pour résumer:
    - tu cherches les pixels où on a un changement de signe du Laplacien.
    - tu fais une interpolation bilinéaire pour avoir le lieu de changement de signe en réels ( (x,y) appartiendraient à R*R au lieu de N*N), ou si tu veux juste les pixels genre pour les contours, tu les prends tels quels...

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Par défaut
    Je n'ai pas affaire à des nombres réels, donc d'après ce que tu as dit je dois chercher les pixels où il y a un changement de signe du laplacien.
    Mais qu'est qu'on entend par les points où il y a un changement de signe du laplacien.
    Est-ce que ce code par exemple est bon?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pour x=0 à maxX
    pour y=0 à maxY
     si ((lap(x,y)>=0)et(lap(x-1,y)<0)) ou ((lap(x,y)<0)et(lap(x-1,y)>=0))
     alors ajouter point(x,y)
    fin pour
    fin pour
    sinon peux-tu me proposer un algo dans ce genre stp?
    Merci

  4. #4
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Disons que c'est presque ça...

    Moi je verrais un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pour x=1 à maxX-1
    pour y=1 à maxY-1
     si ( [lap(x,y-1)*lap(x,y) <= 0] ou [lap(x,y)*lap(x,y+1) <= 0] ou [lap(x-1,y)*lap(x,y) <= 0] ou [lap(x,y)*lap(x+1,y) <= 0] ) 
     alors ajouter point (x,y)
    fin pour
    fin pour
    --> Faut rechercher parmi les 4 voisins dans l'image.

    Tiens sinon j'ai trouvé une page pas mal qui parle de ça.

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Par défaut
    Merci
    J'ai essayé cet algo mais les résultats que j'ai obtenus sont différents de ceux du rapport
    Est-ce qu'il n'y a pas une autre méthode standard?

  6. #6
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Si...
    Une autre méthode standard (qui est dans le lien que je t'ai donné) consiste à faire un seuillage : 1 pour les valeurs entre -epsilon et +epsilon, 0 ailleurs, avec epsilon une valeur autour de zéro (faible en général).

    Comme ça tu ne conserves que les valeurs proches de zéro.
    Ensuite, tu utilises des techniques de morphologie mathématiques qui ne conservent que les points qui sont voisins avec d'autres points (comme ça tu supprimes les points isolés).

    Si tu veux de l'aide sur la morphologie mathématique, n'hésite pas à demander.

    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Par défaut
    Tout ce qui est dit dans le rapport concernant cette approche est :
    Une fois les laplaciens calculés, nous obtenons une image où les niveaux représentent les courbures (nombres positifs et négatifs). Un passage par zéro représente un changement de cette courbure, c'est ce que nous voulons détecter. Cette étape renvoie une image binaire contenant des pixels blancs représentant les passages par zéro
    Je pense que s'il y avait un epsilon ils auraient précisé non?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Par défaut
    En fait, il suffisait de comparer le signe du laplacien de chaque pixel avec le signe du pixel suivant (horizontalement et verticalement)
    comme le montre les schémas de cette page
    a++

  9. #9
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Citation Envoyé par tlemcenvisit
    En fait, il suffisait de comparer le signe du laplacien de chaque pixel avec le signe du pixel suivant (horizontalement et verticalement)
    Bah oui, c'est ce que je t'avais donné au dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pour x=1 à maxX-1
    pour y=1 à maxY-1
     //Le produit est négatif si les deux ont un signe différent...
     si ( [lap(x,y-1)*lap(x,y) <= 0] ou [lap(x,y)*lap(x,y+1) <= 0] ou [lap(x-1,y)*lap(x,y) <= 0] ou [lap(x,y)*lap(x+1,y) <= 0] )
     alors ajouter point (x,y)
    fin pour
    fin pour
    Bon même si c'est vrai que la je compare avec les 4 voisins, ce qui effectivement n'est pas nécessaire...


    Pour ce qui est de la méthode avec epsilon oui ça marche, et tu sais dans les rapports de recherche c'est courant d'évincer des trucs qui pour eux paraissent évidents...

    A+

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 89
    Par défaut
    La méthode de epsilon ne marche que dans certains cas.
    En effet, si on a la suite suivante des valeurs du laplacien :
    50,-50
    il y a eu un changement de signe mais cette méthode ne va pas le détecter car epsilon est en général très proche du zéro

  11. #11
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    En effet, si on a la suite suivante des valeurs du laplacien :
    50,-50
    il y a eu un changement de signe mais cette méthode ne va pas le détecter car epsilon est en général très proche du zéro
    ! Tu m'étonnes ! En même temps si tu veux eéchantillonner ton Laplacien tous les 40 pixels je comprends, mais bon...
    Non sérieux c'est vrai en effet que ça ne prend pas tous les changements de signe, mais si tu échantillonnes suffisemment là ça passe...

    Bon mais c'est vrai que cette méthode est bancale...

    A+

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

Discussions similaires

  1. Passage par zéro sur Simulink
    Par onees dans le forum Simulink
    Réponses: 3
    Dernier message: 27/05/2013, 08h15
  2. Passage par zéro du filtre laplacien
    Par Cool_Boy dans le forum OpenCV
    Réponses: 5
    Dernier message: 18/04/2013, 18h55
  3. passage par session_OnEnd
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 06/05/2004, 11h28
  4. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14
  5. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2002, 08h55

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