Clasificación no supervisada | Imagenes satelitales

Francisco / Pachu
3 min readMar 28, 2021

Implementamos técnicas de Machine Learning con imágenes satelitales. Para ello realizamos una clasificación no supervisada a partir del algoritmo K-means que agrupa objetos en grupos basándose en sus características.

El algoritmo de aprendizaje no supervisado no recibe ninguna etiqueta, por lo que tiene que encontrar por sí mismo la estructura de los datos de entrada, características que estos compartan.

Usaremos las librerías: gdal, numpy, sklearn y matplotlib.

Para la clasificación utilizaremos imágenes satelitales que descargaremos de CopernicusHub, provenientes del satélite Sentinel-2, si las tomamos de nivel L2A vendrán con corrección atmosférica por defecto.

Comenzamos leyendo el ráster con GDAL e inicializando un array para copiar todos los valores de los píxeles y aplanarlos, necesario para la clasificación.

Tratamiento de datos satelitales

Procedemos al algoritmo K-Means, explicado en breves pasos se realizaría lo siguiente:

  1. Número de clusters: escogemos el número de clusters k.
  2. Inicialización: se establecen aleatoriamente k centroides en el espacio de los datos.
  3. Asignación objetos a los centroides: cada objeto de los datos es asignado a su centroide más cercano, según la distancia euclídea.
  4. Actualización centroides: se actualiza la posición del centroide de cada grupo tomando como nuevo centroide la posición del promedio de los objetos pertenecientes a dicho grupo.
  5. Repetición: se repite el paso 3 y 4 hasta que los centroides no se muevan o lo hagan por debajo de un umbral.
Fuente: jokergoo

En términos de clasificación de imágenes, los puntos de la anterior figura corresponderían a los píxeles, agrupando los píxeles en 10 clases en función de su parecido a partir de las bandas del ráster utilizadas.

La implementación es sencilla, a continuación lo vemos:

Implementación de K-Means
Visualización de X_cluster

Para guardar la imagen clasificada hemos de copiar los metadatos del raster original para asegurarnos de no perder información, especificar la ruta de destino en output_path y… ¡listo! Imagen satelital clasificada con K-Means.

Guardar imagen ráster

Este tutorial se trata de un resumen en el proceso de clasificación no supervisada. Se puede encontrar el JupyterNotebook en el siguiente GitHub junto con otros algoritmos de clasificación supervisada.

Un saludo y espero que les haya servido! :)

--

--