Identifier le bon endroit pour placer une étiquette

12

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. 0Cependant, 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.

entrez la description de l'image ici

Accroché
la source
1
Bienvenue sur DSP.SE. C'est une excellente question! =)
Phonon
@Hooked Si les amas sont modélisés comme des gaussiens bidimensionnels d'une moyenne et d'une matrice de covariance 2x2, alors je pense que le placement naturel serait simplement la moyenne des gaussiens. Avez-vous déjà déterminé la moyenne de vos clusters?
Spacey

Réponses:

11

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: entrez la description de l'image ici

Après avoir répété pour chaque segment et positionné les étiquettes où les transformations de distance individuelles sont maximales:

entrez la description de l'image ici

Matthias Odisio
la source
1
Cela vous dérange-t-il d'élaborer un peu sur ce que signifie «le plus intérieur»? Je n'ai pas accès à Mathematica (en utilisant python), mais je devrais être capable de coder n'importe quelle solution présentée.
accroché
@Hooked Voir l'édition. Si vous avez accès à une fonction calculant la transformation de distance, vous êtes tous paramétrés.
Matthias Odisio
2
Cela a l'air génial et je ne pense pas que ce sera trop difficile de m'implémenter. Pour être clair, la transformation que vous avez appliquée est-elle "... la transformation de distance de l'image, dans laquelle la valeur de chaque pixel est remplacée par sa distance au pixel d'arrière-plan le plus proche."?
accroché
Oui, c'est ça. Il ne sera pas difficile de mettre en œuvre cette solution, à condition que vous n'ayez pas à coder une fonction de transformation de distance vous-même (les implémentations rapides sont plus difficiles à coder)
Matthias Odisio
8

Je soumets que l'endroit idéal pour placer le label devrait répondre à deux objectifs:

  • d
  • l

l×dαl+αdα

dl

Le reste est l'optimisation numérique.

Emre
la source
1
d