Précédent   Forum du club des développeurs et IT Pro > Autres langages > Algorithmes > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/03/2011, 21h05   #21
black_hole
Invité régulier
 
Inscription : février 2011
Messages : 95
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 95
Points : 8
Points : 8
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 :
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.
black_hole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 22h59   #22
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 837
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : décembre 2006
Messages : 9 837
Points : 16 517
Points : 16 517
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)

Citation:
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)

Citation:
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.

Citation:
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 :
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.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 16h58   #23
black_hole
Invité régulier
 
Inscription : février 2011
Messages : 95
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 95
Points : 8
Points : 8
Par défaut Re

Merci pour ses réponses.
black_hole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 01h56   #24
MehdiDrissi
Invité régulier
 
Homme Mehdi Drissi
Étudiant
Inscription : mai 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Mehdi Drissi
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 : 5
Points : 5
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.
MehdiDrissi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 11h56   #25
math_lab
Membre chevronné
 
Homme
Chercheur en informatique
Inscription : avril 2008
Messages : 329
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Chercheur en informatique

Informations forums :
Inscription : avril 2008
Messages : 329
Points : 627
Points : 627
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.
math_lab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h50.


 
 
 
 
Partenaires

Hébergement Web