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ą.
image-processing
edge-detection
Haczykowaty
źródło
źródło
Odpowiedzi:
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:
Po powtórzeniu dla każdego segmentu i etykiet pozycjonowania, w których poszczególne przekształcenia odległości są maksymalne:
źródło
Uważam, że idealne miejsce na umieszczenie etykiety powinno spełniać dwa cele:
Reszta to optymalizacja numeryczna.
źródło