Zidentyfikuj właściwe miejsce do umieszczenia etykiety

12

Na poniższym obrazku mam zestaw danych 2D, w którym zidentyfikowałem cztery oznaczone klastry [0,1,2,3]. Szukam algorytmu do umieszczania etykiet w naturalny * sposób dla każdego kształtu. Moim pierwszym przypuszczeniem było umieszczenie ich w „środku masy” gromady, co pokazano poniżej. W przypadku ciągłych klastrów działa to dobrze. Jednak w przypadku klastrów, które przyjmują kształt jak w klastrze 0, podejście kończy się niepowodzeniem. Bez użycia legendy, jaka byłaby lepsza metoda umieszczania etykiet na tym obrazie?

* naturalne tutaj jest do pewnego stopnia subiektywne, ale celem etykiet jest pomoc widzowi w powiązaniu określonego regionu na płaszczyźnie xy z liczbą.

wprowadź opis zdjęcia tutaj

Haczykowaty
źródło
1
Witamy w DSP.SE. To świetne pytanie! =)
Phonon
@Hooked Jeśli klastry są modelowane jako dwuwymiarowe gaussianie średniej i macierz kowariancji 2x2, to sądzę, że naturalne umiejscowienie byłoby po prostu średnią gaussianów. Czy już określiłeś średnią swoich klastrów?
Spacey

Odpowiedzi:

11

Co powiesz na umieszczenie etykiety w najbardziej wewnętrznym punkcie segmentu? Zdefiniujmy wewnętrznie maksimum transformacji odległościowej maski segmentu.

Dzięki takim systemom oprogramowania jak Mathematica i tym podobne osiągnięcie jest proste.

Maska dla jednego segmentu i jego transformacja odległości: wprowadź opis zdjęcia tutaj

Po powtórzeniu dla każdego segmentu i etykiet pozycjonowania, w których poszczególne przekształcenia odległości są maksymalne:

wprowadź opis zdjęcia tutaj

Matthias Odisio
źródło
1
Zastanawiasz się nad tym, co znaczy „najbardziej wewnętrzny”? Nie mam dostępu do Matematyki (używając Pythona), ale powinienem być w stanie kodować dowolne przedstawione rozwiązanie.
Hooked
@Hooked Zobacz edycję. Jeśli masz dostęp do funkcji obliczającej transformację odległości, wszystko jest ustawione.
Matthias Odisio
2
Wygląda to świetnie i nie sądzę, że trudno będzie się wdrożyć. Dla jasności, czy zastosowana transformacja jest „... transformacją odległości obrazu, w której wartość każdego piksela jest zastępowana jego odległością do najbliższego piksela tła”.
Hooked
Tak, to jest to. Zaimplementowanie tego rozwiązania nie będzie trudne, pod warunkiem, że nie musisz samodzielnie kodować funkcji przekształcania odległości (szybkie implementacje są trudniejsze do zakodowania)
Matthias Odisio
8

Uważam, że idealne miejsce na umieszczenie etykiety powinno spełniać dwa cele:

  • d
  • l

l×dαl+αdα

dl

Reszta to optymalizacja numeryczna.

Emre
źródło
1
d