Si bien es cierto que el QGIS tiene un excelente complemento como el Semi-AutomaticClassification Plugin, el cual permite realizar clasificación supervisada a partir de imágenes de satélite y que en una entrada anterior se mostró el procedimiento para ello. En esta oportunidad voy a describir un par de complementos que también nos permiten realizar dicha clasificación, en sí me estoy refiriendo al plugin dzetsaka: classification tool y al kNN classifier; mi objetivo es mostrar el primero en esta entrega.
Fuente de Datos
Para el ejemplo usaremos una imagen proveniente del Sentinel2, de una zona comprendida en el Departamento de Madre de Dios en Perú. específicamente la imagen cubre la localidad de Mazuko. Para obtener la imagen ahora existen varias opciones, por mi parte lo hice a través de los datos disponibles a través del Amazon Web Services (AWS) y las imágenes pueden ser descargadas con el buscador Sentinel Image browser. Les recomiendo el vídeo Tutorial - [Como descargar Sentinel 2 por grillas], como una buena guía de descarga.
Figura 1: Imagen del Sentinel-2 seleccionada para su descarga
De todas las bandas disponibles del Sentinel-2, se descargó las que tienen 10 metros de resolución espacial y luego abiertas en nuestro QGIS.
Figura 2: Vista de las bandas del Sentinel-2 dentro del QGIS.
Preparando nuestros datos
Ahora vamos a recortar nuestra zona de estudio, en mi caso por lo general uso la herramienta del QGIS alinear raster, primero haciendo un acercamiento a la zona de interés para luego considerarlo como zona de recorte a la extensión de la vista de mapa; en sí la herramienta es simple y muy práctica para recortar un raster con las mismas dimensiones y resolución.
Figura 3: Recortando nuestra zona de interés
Con nuestras bandas al tamaño deseado cubriendo nuestra zona de interés, vamos a generar una composición de todas las bandas, para ello tenemos varias opciones, en mi caso por lo general uso "Images Concatenation" presente dentro de la Caja de herramientas del Orfeo.
Figura 4: Concatenando nuestras bandas para formar una composición.
Con nuestra imagen compuesta por las cuatro bandas (b2, b3, b4 y b8), podemos generar una combinación RGB de color verdadero con la finalidad de visualizar nuestra zona de estudio e iniciar la generación de una capa vector con las áreas de entrenamiento.
Figura 5: Composición RGB color verdadero
Clasificación Supervisada con dzetsaka: classification tool
Como siguiente paso debemos generar una capa vectorial con nuestras áreas o campos de entrenamiento, las cuales son definidas en campo en función al tipo de cobertura presente. Para fines didácticos se han asumido que se realizaron 45 muestras, por eso veremos esa cantidad de polígonos sobre nuestra imagen, asimismo se asumió que se dividen en 5 clases (1: Bosque, 2: Pastos, 3: Suelo desnudo, 4: Edificación, 5: Río y 6: Lecho de río.)
Figura 6: Vista de las áreas de entrenamiento
Para el plugin dzetsaka, tal como lo menciona en la descripción dentro de su repositorio, solo se necesita una capa raster y un archivo tipo Shapefile que contenga el ROI (Región de Interés), pero este último debe presentar una columna que contenga en números las clases designadas.
Figura 7: Tabla de atributos de la Región de Interés con la codificación de las clases
Este plugin rápido y fácil de usar, ha sido desarrollado por Nicolas Karasiak; inicialmente basado para el modelo "Gaussian Mixture" desarrollado por Mathieu Fauvel, actualmente soporta Random Forest, KNN y SVM; además se tiene la opción de trabajarlo desde la caja de procesado.
Ahora ya estamos listos para realizar una clasificación supervisada, pero antes no debemos olvidar que es un requisito tener instalado la librería de Python scikit-learn. Tal como se aprecia en la Figura 8, seleccionamos nuestra capa compuesta de las cuatro bandas, nuestro vector y el campo numérico que corresponde a las clases identificadas, luego verificamos que modelo vamos a emplear, le indicamos el archivo resultando y finalmente hacemos clic en "Perform the classification".
Figura 8: Ejecución del Complemento para Clasificación Supervisada
En primer lugar como ven usaremos el Gaussian Mixture Model, y una vez obtenido el resultado le daremos un estilo que nos permita identificar mejor las clases obtenidas.
Figura 9: Resultado de la Clasificación supervisada con Gaussian Mixture Model
Repitiendo el procedimiento para los otros algoritmos obtendremos resultados muy similares.
Figura 10: Resultado final empleando los otros modelas para Clasificación Supervisada
Finalmente con el complemento también podemos visualizar una matriz de confusión, como una manera de poder evaluar el desempeño del algoritmo, calculando los valores porcentuales del coeficiente de Kappa y la precisión global (Overall Accuracy) entre el mapa clasificado y los datos de referencia.
Figura 11: Vista la matriz de confusión que se genera por cada algoritmo
Como un tema adicional, si verificamos en nuestra caja de herramientas de procesado, veremos que el complemento está presente, teniendo la ventaja de poder realizar otras aplicaciones, como por ejemplo el "Split train and validation", el cual nos permite dividir nuestro datos de entrenamiento total en dos partes, las de entrenamiento en sí y las de validación, es decir que considera un porcentaje del total que serían necesarios para una validación posterior. En nuestro caso, tenemos 45 áreas de entrenamiento, y luego de ejecutar la aplicación vemos que ha dividido 23 zonas para entrenamiento y reserva 22 zonas para una validación, el cual permitirá evaluar nuestro estimador.
Figura 12: Generando una división de nuestras áreas de entrenamiento totales.
Por ahora es lo que tenía pensado mostrar, en la siguiente entrega se presentará al complemento kNN Classifier y sus particularidades.