Bah, heu... j'en pense que c'est un squelette binaire qui m'a l'air très bien. :D
Type: Messages; Utilisateur: pseudocode
Bah, heu... j'en pense que c'est un squelette binaire qui m'a l'air très bien. :D
on fait des seuillages binaires à différentes valeurs (16,32,64,...). Pour chaque image seuillée, on calcule le squelette binaire correspondant. Au final on "superpose" tous les squelettes obtenus (=...
ca donne ca:
http://xphilipp.developpez.com/tmp/d344035-1.png
(NB: c'est un squelette en niveau de gris, mais ca n'utilise pas la meme technique que celle que j'ai posté juste ci-avant)
Heu... il faut aussi modifier les méthodes neighbourhood() et transitions() pour tenir compte de la valeur du pixel central.
/**
* Skeleton Filter for gray-levels images
*
* Original...
Le document est en lien dans le post #1. Le 'meilleur' code est dans le post #4.
Je n'ai que légèrement modifié l'algo. J'ai ajouté la condition obligatoire "CN(P)>3 si Trans(P)==1" qui protège...
Ah ok. J'en étais resté à 4 rotations. :P
Effectivement. Ton masque est moins agressif que celui habituel.
J'avoue que je ne vois pas pourquoi c'est mieux, mais je te fais confiance.
Ce qui m'étonne c'est qu'avec un un masque du type
0 0 0
0 1 0
0 1 *
tu ne peux pas retirer les barbules qui sont en...
Le masque m'a l'air bon. Mais c'est vrai que l'ébarbulage avec ce masque est difficile à doser car il retire progressivement tous les endpoints. Si tu veux quelque chose de robuste, il vaut mieux...
Je ne vois pas en quoi ca pose un problème dans la phase de simplification du squelette. :koi:
A moins qu'il y ait une subtilité dont je n'ai pas conscience ?
La méthode la plus robuste que je connaisse consiste à supprimer barbule par barbule, plutot que pixel par pixel.
J'avais fait des essais et je m'étais inspiré de la méthode "Skeleton Pruning by...
Effectivement c'est un bug. La boucle devrait etre
for(int y=1;y<height-1;y++) {
for(int x=1;x<width-1;x++) {
D'ailleurs j'ai du m'en rendre compte car dans la version du post #4, j'avais...
L'image d'entrée est une image a 256 niveaux de gris. Le seuil (threshold) permet de binariser l'image (pixel<threshold)=>noir, et (pixel>=threshold)=>blanc.
cf. méthode ChannelValue()
...
Non. Et je ne suis pas bien sur qu'on puisse facilement étendre cet algorithme a la 3D, spécialement le comptage du nombre de transitions.
Heu... non, je ne connais pas de méthode qui fait cela directement. Mais si vous avez un "ImageProcessor", il suffit de créer un tableau et de le remplir. Un truc du genre:
ImageProcessor ip =...
Je te conseille de prendre le code du post #4 et de le traduire en C++/OpenCV. Ou de demander a quelqu'un de le traduire pour toi.
Voici une version légèrerment modifiée de l'algorithme:
- consommation mémoire réduite en modifiant directement le tableau passé en parametre (in-place)
- approximation plus précise (conservation...
Non, on ne peut pas retirer les fourches en Y. Elles font partie du squelette et permettent de détecter les extrémités des formes.
Comme je l'ai indiqué sur ton thread dans le forum de discussion...
Voici une implémentation du calcul du squelette d'une image par la méthode décrite dans ce document pdf.
La méthode consiste a faire des erosions multiples jusqu'a atteindre le squelette. Ce...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.