Dans l'image ci-dessous, j'ai un ensemble de données 2D où j'ai identifié quatre grappes étiquetées [0,1,2,3]
. Je cherche un algorithme pour placer les étiquettes de manière naturelle * pour chaque forme. Ma première supposition a été de les placer dans le "centre de masse" de l'amas, comme illustré ci-dessous. Pour les clusters contigus, cela fonctionne bien. 0
Cependant, pour les clusters qui prennent la forme d'un cluster , l'approche échoue. Sans utiliser une légende, quelle serait une meilleure méthode pour placer les étiquettes sur cette image?
* naturel ici est subjectif dans une certaine mesure, mais le but des étiquettes est d'aider le spectateur à associer une certaine région du plan xy à un nombre.
image-processing
edge-detection
Accroché
la source
la source
Réponses:
Qu'en est-il de placer l'étiquette au point le plus intérieur du segment? Définissons le plus à l'intérieur par le maximum de la transformation de distance du masque du segment.
Avec des systèmes logiciels comme Mathematica et le genre, c'est simple à réaliser.
Le masque d'un segment et sa transformation de distance:
Après avoir répété pour chaque segment et positionné les étiquettes où les transformations de distance individuelles sont maximales:
la source
Je soumets que l'endroit idéal pour placer le label devrait répondre à deux objectifs:
Le reste est l'optimisation numérique.
la source