Saltar al contenido

Explicación de la segmentación de imágenes usando el desplazamiento medio

Esta crónica ha sido aprobado por expertos así aseguramos la exactitud de este enunciado.

Solución:

Lo básico primero:

La segmentación Mean Shift es una técnica de homogeneización local que es muy útil para amortiguar las diferencias de sombreado o tonalidad en objetos localizados. Un ejemplo es mejor que muchas palabras:

ingrese la descripción de la imagen aquí

Acción:reemplaza cada píxel con la media de los píxeles en una vecindad de rango-r y cuyo valor está dentro de una distancia d.

El cambio medio toma generalmente 3 entradas:

  1. Una función de distancia para medir distancias entre píxeles. Por lo general, la distancia euclidiana, pero podría usarse cualquier otra función de distancia bien definida. La distancia de Manhattan es otra opción útil a veces.
  2. Un radio. Todos los píxeles dentro de este radio (medido según la distancia anterior) se tendrán en cuenta para el cálculo.
  3. Una diferencia de valor. De todos los píxeles dentro del radio r, tomaremos solo aquellos cuyos valores estén dentro de esta diferencia para calcular la media

Tenga en cuenta que el algoritmo no está bien definido en los bordes, por lo que diferentes implementaciones le darán resultados diferentes allí.

NO discutiré los detalles matemáticos sangrientos aquí, ya que son imposibles de mostrar sin la notación matemática adecuada, no están disponibles en StackOverflow, y también porque se pueden encontrar en buenas fuentes en otros lugares.

Miremos el centro de tu matriz:

153  153  153  153 
147  96   98   153 
153  97   96   147   
153  153  147  156  

Con elecciones razonables para el radio y la distancia, los cuatro píxeles centrales obtendrán el valor de 97 (su media) y serán diferentes de los píxeles adyacentes.

Vamos a calcularlo en Mathematica. En lugar de mostrar los números reales, mostraremos un código de colores para que sea más fácil entender lo que está sucediendo:

El código de colores para su matriz es:

ingrese la descripción de la imagen aquí

Entonces tomamos un cambio medio razonable:

MeanShiftFilter[a, 3, 3]

Y obtenemos:

ingrese la descripción de la imagen aquí

Donde todos los elementos centrales son iguales (a 97, por cierto).

Puede iterar varias veces con Mean Shift, tratando de obtener una coloración más homogénea. Después de algunas iteraciones, llega a una configuración no isotrópica estable:

ingrese la descripción de la imagen aquí

En este momento, debe quedar claro que no puede seleccionar cuántos “colores” obtiene después de aplicar Mean Shift. Entonces, mostremos cómo hacerlo, porque esa es la segunda parte de su pregunta.

Lo que necesita para poder establecer la cantidad de clústeres de salida por adelantado es algo así como la agrupación en clústeres de Kmeans.

Se ejecuta de esta manera para su matriz:

b = ClusteringComponents[a, 3]

1, 1, 1, 1, 1, 1, 1, 1, 
 1, 2, 2, 3, 2, 3, 3, 1, 
 1, 3, 3, 3, 3, 3, 3, 1, 
 1, 3, 2, 1, 1, 3, 3, 1, 
 1, 3, 3, 1, 1, 2, 3, 1, 
 1, 3, 3, 2, 3, 3, 3, 1, 
 1, 3, 3, 2, 2, 3, 3, 1, 
 1, 1, 1, 1, 1, 1, 1, 1  

O:

ingrese la descripción de la imagen aquí

Lo cual es muy similar a nuestro resultado anterior, pero como puede ver, ahora solo tenemos tres niveles de salida.

HTH!

Una segmentación Mean-Shift funciona de la siguiente manera:

Los datos de la imagen se convierten en espacio de características.espacio de funciones

En su caso, todo lo que tiene son valores de intensidad, por lo que el espacio de características solo será unidimensional. (Puede calcular algunas características de textura, por ejemplo, y luego su espacio de características sería bidimensional, y estaría segmentando según la intensidad y textura)

Las ventanas de búsqueda se distribuyen en el espacio de funciones.ingrese la descripción de la imagen aquí

La cantidad de ventanas, el tamaño de la ventana y las ubicaciones iniciales son arbitrarias para este ejemplo, algo que se puede ajustar según las aplicaciones específicas.

Iteraciones de desplazamiento medio:

1.) Se calculan las medias de las muestras de datos dentro de cada ventanaingrese la descripción de la imagen aquí

2.) Las ventanas se CAMBIAN a las ubicaciones iguales a sus medias previamente calculadasingrese la descripción de la imagen aquí

Los pasos 1.) y 2.) se repiten hasta la convergencia, es decir, todas las ventanas se han asentado en las ubicaciones finalesingrese la descripción de la imagen aquí

Las ventanas que terminan en las mismas ubicaciones se fusionaningrese la descripción de la imagen aquí

Los datos se agrupan de acuerdo con los recorridos de la ventana.ingrese la descripción de la imagen aquí

… por ejemplo, todos los datos que fueron atravesados ​​por ventanas que terminaron en, digamos, la ubicación “2”, formarán un grupo asociado con esa ubicación.

Entonces, esta segmentación producirá (casualmente) tres grupos. Ver esos grupos en el formato de imagen original podría parecerse a la última imagen en la respuesta de Belisarius. Elegir diferentes tamaños de ventana y ubicaciones iniciales puede producir resultados diferentes.

Reseñas y puntuaciones de la guía

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *