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] Watershed (partage des eaux) en niveaux de gris


Sujet :

Contribuez

  1. #21
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut RE
    Bonjour,
    je viens de tomber sur cette page et je voudrais reimplementer ce code en C.
    Juste une question sur cette partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private void extend(Pixel p) {
    .....
    }
    D'apres ce que j'ai compris,vous me dites si ce n'est pas le cas,lorsqu'un pixel va être présent dans une liste, on va tester ces 8 voisins. Dans le cas ou rk =0 le pixel n'a pas encore été visité on met ca valeur de région à la valeur de région du pixel d'entré quelque soit sa valeur de région et on le met dans la liste du niveau correspondant.
    Par la suite si ce pixel à une valeur de level compris entre le level en cours et level+step, il va toujours prendre la valeur de la région du pixel du départ.
    Donc tous les pixels voisins qui n'ont pas été visité et qui on une valeur compris entre le level en cours et level+step vont être dans la même région?Donc plus step sera grand plus on aura de zone homogène?
    Et donc le sens de parcours peut changer plus ou moins la disposition des limites de région?

    D'avance merci.

  2. #22
    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 081
    Points
    16 081
    Par défaut
    Citation Envoyé par black_hole Voir le message
    D'apres ce que j'ai compris,vous me dites si ce n'est pas le cas,lorsqu'un pixel va être présent dans une liste, on va tester ces 8 voisins. Dans le cas ou rk =0 le pixel n'a pas encore été visité on met ca valeur de région à la valeur de région du pixel d'entré quelque soit sa valeur de région et on le met dans la liste du niveau correspondant.
    Oui. Lorsqu'on "étend" un pixel, on positionne toujours les valeurs de région pour chacun de ses 8 voisins. Au final, la valeur de région d'un voisin est soit :
    - "la meme que le pixel d'entrée" (le voisin n'avait pas été visité avant)
    - "watershed" (le voisin avait été atteint par une autre région)

    Par la suite si ce pixel à une valeur de level compris entre le level en cours et level+step, il va toujours prendre la valeur de la région du pixel du départ.
    Une fois qu'un voisin a été affecté à une région, sa valeur de région ne change plus. La seule exception étant que ce pixel peut être promu en "watershed" (cf remarque précédente)

    Donc tous les pixels voisins qui n'ont pas été visité et qui on une valeur compris entre le level en cours et level+step vont être dans la même région?Donc plus step sera grand plus on aura de zone homogène?
    Tout a fait, c'est la raison d'être de se paramètre "step" : réduire la sur-segmentation en acceptant un léger débordement.

    Et donc le sens de parcours peut changer plus ou moins la disposition des limites de région?
    Normalement ca n'a pas trop d'influence.

    Le prochain pixel à étendre est toujours extrait de la liste la plus "basse". Meme si des voisins ont été ajoutés dans des listes plus "hautes", ils ne seront traités que plus tard par l'algorithme.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private Pixel nextPixel(int level, int step) {
    	// return the first pixel found in the explorelist
    	for(int i=level;i<level+step && i<GRAYLEVEL;i++) {
    		if (!explorelist[i].isEmpty()) 
    			return explorelist[i].remove(0);
    	}
    	return null;
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #23
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Re
    Merci pour ses réponses.

  4. #24
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,

    Une question à celui qui voulait implementez le code en C.
    est ce que tu as réussi à le faire ?

    Sinon pour les autres un watershed en C++ ou avec OpenCv est ce possible?

    Merci.

  5. #25
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    Citation Envoyé par MehdiDrissi Voir le message
    Sinon pour les autres un watershed en C++ ou avec OpenCv est ce possible?
    Evidemment que c'est possible en C++, watershed est un algorithme et peut donc être implémenté partout. Et un rapide coup d'oeil sur la doc d'OpenCV t'aurai donné la reponse: Opencv: misc image transforms.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/06/2012, 19h18
  2. segmentation d'image avec la ligne de partage des eaux avec java
    Par Imène_23 dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 23/05/2009, 19h49
  3. segmentation d'images avec la ligne de partage des eaux
    Par Imène_23 dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 26/04/2009, 18h49
  4. Aide ligne partage des eaux
    Par comrad85 dans le forum Traitement d'images
    Réponses: 9
    Dernier message: 05/06/2008, 13h50
  5. segmenter par ligne de partage des eaux
    Par savoir_plus dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 28/02/2008, 14h55

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