Identifizieren Sie die richtige Stelle zum Platzieren eines Etiketts

12

In der Abbildung unten habe ich einen 2D-Datensatz, in dem ich vier Cluster mit der Bezeichnung identifiziert habe [0,1,2,3]. Ich suche einen Algorithmus, um die Beschriftungen für jede Form auf natürliche Weise zu platzieren. Meine erste Vermutung war, sie in den "Massenmittelpunkt" des Clusters zu platzieren, der unten gezeigt wird. Für zusammenhängende Cluster funktioniert dies problemlos. Bei Clustern, die eine Form wie in Cluster haben 0, schlägt der Ansatz jedoch fehl. Was wäre eine bessere Methode, um die Beschriftungen auf diesem Bild zu platzieren, ohne eine Legende zu verwenden?

* natural ist hier in gewissem Maße subjektiv, aber der Sinn der Beschriftungen besteht darin, dem Betrachter zu helfen, einen bestimmten Bereich in der xy-Ebene mit einer Zahl zu verknüpfen.

Bildbeschreibung hier eingeben

Süchtig
quelle
1
Willkommen bei DSP.SE. Das ist eine gute Frage! =)
Phonon
@Hooked Wenn die Cluster als zweidimensionale Gauß-Werte eines Mittelwerts und einer 2x2-Kovarianzmatrix modelliert werden, würde ich annehmen, dass die natürliche Platzierung einfach der Mittelwert der Gauß-Werte ist. Haben Sie bereits den Mittelwert Ihrer Cluster ermittelt?
Spacey

Antworten:

11

Wie wäre es, wenn Sie das Etikett an der innersten Stelle des Segments platzieren? Definieren wir das Innerste durch das Maximum der Abstandstransformation der Segmentmaske.

Mit Softwaresystemen wie Mathematica und ähnlichen ist dies einfach zu erreichen.

Die Maske für ein Segment und ihre Entfernungstransformation: Bildbeschreibung hier eingeben

Nach dem Wiederholen für jedes Segment und Positionieren von Beschriftungen, bei denen die einzelnen Abstandstransformationen maximal sind:

Bildbeschreibung hier eingeben

Matthias Odisio
quelle
1
Haben Sie etwas dagegen, ein bisschen darüber nachzudenken, was "innerste" bedeutet? Ich habe keinen Zugriff auf Mathematica (mit Python), aber ich sollte in der Lage sein, jede vorgestellte Lösung zu codieren.
Hooked
@Hooked Siehe Bearbeiten. Wenn Sie Zugriff auf eine Funktion haben, die die Distanztransformation berechnet, sind Sie fertig.
Matthias Odisio
2
Das sieht gut aus und ich denke nicht, dass es zu schwer sein wird, mich selbst umzusetzen. Um ganz klar zu sein, handelt es sich bei der von Ihnen angewendeten Transformation um die "... Abstandstransformation eines Bilds, bei der der Wert jedes Pixels durch den Abstand zum nächsten Hintergrundpixel ersetzt wird"?
Hooked
Ja das ist es Es wird nicht schwierig sein, diese Lösung zu implementieren, vorausgesetzt, Sie müssen selbst keine
Distanztransformationsfunktion
8

Ich bin der Meinung, dass der ideale Ort für die Platzierung des Etiketts zwei Ziele erfüllen sollte:

  • d
  • l .

Ergo können wir den idealen Punkt bestimmen, indem wir eine ganzheitliche Metrik wie minimierenl×dαl+αdα der Kompromissparameter ist.

dl (oder ein anderes Maß für den Detaillierungsgrad) des vom Etikett eingenommenen Bereichs eingestellt werden. Sie können diesen Wert in Regionen außerhalb des Segments auf einen hohen Wert einstellen, um das Problem in Ihrem Beispiel zu vermeiden.

Der Rest ist numerische Optimierung.

Emre
quelle
1
d