Identifique el lugar correcto para colocar una etiqueta

12

En la imagen que se muestra a continuación, tengo un conjunto de datos 2D donde identifiqué cuatro grupos etiquetados [0,1,2,3]. Estoy buscando un algoritmo para colocar las etiquetas de forma natural * para cada forma. Mi primera suposición fue colocarlos en el "centro de masa" del grupo, que se muestra a continuación. Para grupos contiguos esto funciona bien. 0Sin embargo, para los grupos que toman forma como en el grupo , el enfoque falla. Sin usar una leyenda, ¿cuál sería un mejor método para colocar las etiquetas en esta imagen?

* natural aquí es subjetivo hasta cierto punto, pero el objetivo de las etiquetas es ayudar al espectador a asociar una determinada región en el plano xy con un número.

ingrese la descripción de la imagen aquí

Enganchado
fuente
1
Bienvenido a DSP.SE. ¡Esta es una gran pregunta! =)
Phonon
@ Enganchado Si los grupos se modelan como gaussianos bidimensionales de una media y una matriz de covarianza 2x2, entonces pensaría que la ubicación natural sería simplemente la media de los gaussianos. ¿Ya has determinado la media de tus grupos?
Spacey

Respuestas:

11

¿Qué hay de poner la etiqueta en el punto más interno del segmento? Definamos más interno por el máximo de la transformación de distancia de la máscara del segmento.

Con sistemas de software como Mathematica y similares, es fácil de lograr.

La máscara para un segmento y su distancia se transforman: ingrese la descripción de la imagen aquí

Después de repetir para cada segmento y colocar etiquetas donde las transformaciones de distancia individuales son máximas:

ingrese la descripción de la imagen aquí

Matthias Odisio
fuente
1
¿Te importaría elaborar un poco lo que significa "más íntimo"? No tengo acceso a Mathematica (usando python), pero debería poder codificar cualquier solución presentada.
Enganchado el
@Hooked Ver la edición. Si tiene acceso a una función que calcula la transformación de distancia, ya está todo listo.
Matthias Odisio
2
Esto se ve muy bien y no creo que sea difícil de implementar. Para ser claros, ¿la transformación que aplicaste es "... la transformación de distancia de la imagen, en la que el valor de cada píxel se reemplaza por su distancia al píxel de fondo más cercano"?
Enganchado el
Si, eso es todo. Implementar esta solución no será difícil, siempre que no tenga que codificar una función de transformación de distancia usted mismo (las implementaciones rápidas son más difíciles de codificar)
Matthias Odisio
8

Considero que el lugar ideal para colocar la etiqueta debe cumplir dos objetivos:

  • proximidad al centro, digamos .d
  • legibilidad, digamos .l

Ergo, podemos determinar el punto ideal minimizando una métrica holística como o , donde es el parámetro de compensación. l + α d αl×dαl+αdα

Determinar es sencillo. se puede ajustar a la variación total (o alguna otra medida del nivel de detalle) bajo el área ocupada por la etiqueta. Puede establecer esto en un número alto en regiones fuera del segmento para evitar el problema en su ejemplo.ldl

El resto es optimización numérica.

Emre
fuente
1
Esto parece un buen enfoque y lo suficientemente robusto para una imagen con mayor detalle. ¿Es su proximidad al centro, , lo que yo llamo el "centro de masa" o lo que @MatthiasOdisio llama el "punto más interno"? d
Enganchado el