Facultad de Matemática y Computación Universidad de La Habana Rellenado de los gaps provocados por la falla del Scan Line Corrector en las imágenes Landsat 7 ETM+ Trabajo de Diploma presentado como requisito para obtener el título de Licenciado en Ciencias de la Computación. Autora: Neisy Rodríguez Ramos Tutores: Lic. Ina Bell-lloch García Lic. Soltan Galano Duverger La Habana, Junio de 2009. Resumen El uso de plataformas satelitales se ha convertido en una herramienta imprescindible para dar seguimiento a fenómenos de la vida en la Tierra. El satélite Landsat 7 toma imágenes de Cuba cada 16 días, y desde Octubre del 2008 se encuentran disponibles de manera gratuita. Cuando uno de sus sensores dejó de funcionar, las imágenes comenzaron a presentar franjas de datos inválidos (gaps). En este trabajo se implementa la metodología Phase 2 Gap-Fill Algorithm para corregir los valores perdidos en las escenas del Landsat 7, lo cual tiene un impacto directo en los estudios cartográficos y el seguimiento de fenómenos medioambientales en el país. Los resultados del procesamiento de las imágenes por el método implementado son comparados con los obtenidos por otros sistemas empleados en el país. Abstract The use of satellite platforms have become an essential tool to follow phenomenon related to the life in Earth. The Landsat 7 satellite takes images of Cuba every 16 days, which are free to download since October 2008. When one of Landsat’s sensors failed in 2003, invalid data strips (gaps) appeared in the images. The Phase 2 Gap-Fill Algorithm is implemented to correct lost data in the Landsat 7 scenes. It has a direct impact on cartographic studies and to follow environmental phenomenon in Cuba.The result of the images processed by the implemented method is compared with those obtained by using traditional systems applied in our country. 2 Agradecimientos Quisiera agradecer a todas aquellas personas que han contribuido de una forma u otra a la realización de este trabajo. Primero que todo a mi hermano Tito, mi guía y ejemplo durante toda mi vida, sobre todo en los estudios. A mi mamá, que tanto se ha sacrificado y esforzado durante mi carrera, estimulándome e impulsándome en cada momento para seguir adelante, sin perder la confianza en mí. A mi papá, tíos y abuelos, por la preocupación y el apoyo. Al profe Yoel por los consejos y su dedicación incondicional. A los profes que fueron más allá y pasaron a ser buenos amigos, Lily, Eve, Pablo, mi flaco Erich. A Dionne y Abelito, por estar sobre todo en los tiempos difíciles. A mis compañeros de grupo que contribuyeron a armonizar los estudios en un ambiente tan lindo. A Tamayo por las explicaciones y por compartir sus conocimientos pacientemente. A Gustavo y familia, por el cariño. A la gente de la beca, por los momentos de alegría a pesar de las dificultades que pasamos juntos. A mis tutores, Ina, Soltan, Estrada y Gustavito, por el apoyo y el esfuerzo para lograr la culminación de este proyecto. A todos los profesores que han contribuido en mi formación profesional, a lo largo de mi carrera estudiantil. En fin, a todos ellos, y los que se me quedan por mencionar, muchas gracias. 3 Contenido Introducción .................................................................................................................................. 6 Objeto de estudio...................................................................................................................... 7 Problema científico ................................................................................................................... 7 Objetivo del trabajo .................................................................................................................. 7 Justificación de la investigación ................................................................................................ 7 Tareas ........................................................................................................................................ 8 Estructuración del trabajo ......................................................................................................... 8 Capítulo 1 Imágenes del satélite Landsat 7 .................................................................................. 9 1.1 Descripción .......................................................................................................................... 9 1.2 Formatos TIFF y GeoTIFF ................................................................................................... 11 1.2.1 Formato TIFF (Tagged Image File Format) ................................................................. 11 1.2.1.1 Organización del fichero ..................................................................................... 11 1.2.1.2 Estructura de la cabecera .................................................................................... 11 1.2.1.3 Estructura del IFD ................................................................................................ 12 Estructura de las entradas........................................................................................... 12 1.2.2 Formato GeoTIFF ........................................................................................................ 13 1.2.2.1 Los metadatos del GeoTIFF (llaves) ..................................................................... 14 Estructura del GeoKeyDirectory .................................................................................. 14 1.3 Formato de las imágenes del Landsat 7 ............................................................................ 14 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos.................. 16 2.1 Análisis de las metodologías conocidas para la eliminación de los gaps .......................... 18 2.2 Metodología implementada ............................................................................................. 20 2.2.1 Justificación teórica .................................................................................................... 20 2.2.1.1 Ajuste de histograma .......................................................................................... 20 2.2.1.2 Modelo de regresión lineal ................................................................................. 22 2.2.2 Metodología ............................................................................................................... 24 Capítulo 3 Implementación ......................................................................................................... 29 3.1 Tecnologías aplicadas ........................................................................................................ 29 3.1.1 .NET Framework ......................................................................................................... 29 3.1.2 El lenguaje de programación C# ................................................................................. 30 3.1.3 WinHex ....................................................................................................................... 30 3.1.4 ENVI (Environment for Visualizing Image) ................................................................. 30 3.2 Rellenando los gaps .......................................................................................................... 30 4 3.2.1 Manejador del formato GeoTIFF ................................................................................ 30 La clase TiffManager ................................................................................................. 31 3.2.2 La clase Scene .......................................................................................................... 31 Buscando las fronteras de la imagen real ....................................................................... 32 3.2.3 Recursos empleados para el procesamiento eficiente de las imágenes.................... 33 3.2.4 La clase ImageProcessor ..................................................................................... 34 La “filosofía de los cuatro cuadrantes” ........................................................................... 34 Miembros de la clase ...................................................................................................... 35 3.3 Aplicación .......................................................................................................................... 37 3.3.1 Opciones del menú..................................................................................................... 38 Capítulo 4 Resultados.................................................................................................................. 41 Conclusiones ............................................................................................................................... 43 Recomendaciones ....................................................................................................................... 44 Bibliografía .................................................................................................................................. 45 Anexos ......................................................................................................................................... 47 Anexo 1 Descripción de las entradas contenidas en el IFD de las imágenes del Landsat 7 (19) ................................................................................................................................................. 47 Anexo 2 Otros preprocesamientos que se pueden realizar para obtener un resultado más efectivo. ................................................................................................................................... 48 Anexo 3 Diagrama de bloques del Proceso de Macheo de Histogramas................................ 49 5 Introducción Introducción La posibilidad de obtener imágenes desde el espacio con sensores montados en plataformas aéreas y satelitales, constituye una herramienta de vital importancia, pues permite actualizar con rapidez y precisión, el seguimiento de distintos fenómenos en la Tierra. Uno de los archivos de imágenes más completos e importantes para el estudio de la superficie de la Tierra (1), lo constituye el captado por los satélites de mediana resolución Landsat, el cual data de más de 35 años, resultado de un programa diseñado a fines de los años 60 por la Agencia Espacial Norteamericana, dedicado a la observación de los recursos terrestres. Recientemente ha sido habilitado en el sitio http://glovis.usgs.gov por el Servicio Geológico de los Estados Unidos (USGS1), el acceso electrónico de manera gratuita, a cualquier imagen de esta compilación, con escenas globales que fechan desde 1972 hasta la actualidad, con una frecuencia de muestreo entre 16 y 18 días, las cuales han sido tomadas con los sensores Escáner Multiespectral (MSS) a bordo de los satélites Landsat 1, 2, 3, 4 (todos desactivados); Mapeador Temático (TM) a bordo de los Landsat 4 y 52; y el Mapeador Temático Ensanchado (ETM+) a bordo del Landsat 7. Este último ha provisto de información casi ininterrumpida desde su lanzamiento en Julio de 1999, pero en la actualidad presenta un problema a causa de una falla en el instrumento que corrige las líneas escaneadas, conocido como Scan Line Corrector (SLC-off), el cual se encuentra apagado desde Mayo de 2003 (2), dando como resultado que todas las escenas de Landsat 7 adquiridas desde el 14 de Julio de ese año hayan sido colectadas conteniendo franjas de datos inválidos (gaps3). No existe otro satélite que ofrezca imágenes de Cuba, con similares características y de manera gratuita. Sin embargo, la utilidad de las mismas está reducida enormemente debido al problema del SLC-off. Hasta la fecha, se emplean métodos y softwares para intentar corregir las imágenes dañadas, pero estos son poco efectivos. Por otra parte, el precio de cada una de las imágenes corregidas por instituciones foráneas es de aproximadamente 300 USD y, para cubrir toda Cuba, se necesitan 16 escenas (Figura 1). Se estima que se requieran tres juegos al año como promedio, uno para cada temporada (lluvia y seca) y otro “extra” para evaluar, por ejemplo, alguna afectación producida por huracanes o incendios, con lo cual habría que destinar 1 Todas las siglas de este trabajo están referidas a los términos en inglés. Este último se encuentra activo aunque brinda muy pocas prestaciones. 3 Aunque existen varios tipos de gaps, en este documento se emplea este término para hacer referencia a los datos inválidos producidos por el SLC-off 2 6 Introducción alrededor de 14.000 USD anuales a esta actividad, descontando el costo de producción bajo condiciones nacionales. Figura 1 Escenas que cubren el territorio nacional. Todo lo anterior presupone la necesidad de implementar un procedimiento para restaurar con datos cercanos a la realidad, los valores que se han perdido como consecuencia del mal funcionamiento del SLC. Objeto de estudio Las imágenes satelitales tomadas por el Landsat 7. Problema científico Las imágenes satelitales tomadas por el Landsat 7 presentan gaps que dificultan su análisis para la actualización cartográfica y el seguimiento de fenómenos medioambientales que ocurren en el país. Los métodos utilizados hasta la fecha para la corrección de las imágenes son poco efectivos. Objetivo del trabajo Corregir mediante la implementación del proceso de macheo de histogramas sugerido en el Phase 2 Gap-Fill Algorithm, los valores radiométricos perdidos en las imágenes Landsat 7 SLC-off, para viabilizar las tareas de actualización de cartografía y posibilitar el seguimiento a distintos fenómenos medioambientales del país. Justificación de la investigación La implementación de un algoritmo capaz de corregir las imágenes del Landsat 7 tendría un impacto directo sobre los estudios cartográficos y medioambientales del país. Desde el punto de vista económico significaría un ahorro estimado en 14.000 USD anuales. 7 Introducción Tareas Las principales tareas desarrolladas para dar cumplimiento al objetivo planteado en este trabajo son las siguientes: Estudio de las imágenes satelitales y el formato GeoTIFF. Estudio de las metodologías actuales para la corrección de los gaps y selección del algoritmo adecuado para resolver el problema. Diseño e implementación de una herramienta que permita corregir las imágenes dañadas. Evaluación de la efectividad del resultado respecto a los métodos utilizados actualmente para corregir las imágenes. Estructuración del trabajo Este trabajo está estructurado en Introducción, cuatro capítulos, Conclusiones y Recomendaciones. En la Introducción se da una visión panorámica sobre los antecedentes del uso de las imágenes del Landsat 7 en Cuba y de la aparición de los gaps para luego caer en el diseño de la investigación. En el Capítulo 1 Imágenes del satélite Landsat 7, se exponen las características de las imágenes objeto de estudio de este trabajo, y se profundiza en la estructura de los formatos TIFF y GeoTIFF. En el Capítulo 2 Los gaps producidos por el SLC-off, y las metodologías para corregirlos, se explican el origen de los gaps en las imágenes del satélite y la metodología empleada para corregir estos defectos. En el Capítulo 3 Implementación se detalla cómo se implementó la metodología propuesta para rellenar los gaps para el procesamiento digital de las imágenes, cuyos Resultados se muestran en el Capítulo 4. Luego aparecen las Conclusiones y las Recomendaciones del trabajo, seguidos de la Bibliografía referenciada y consultada y los Anexos. 8 Capítulo 1 Imágenes del satélite Landsat 7 Capítulo 1 Imágenes del satélite Landsat 7 1.1 Descripción Las imágenes tomadas por el satélite Landsat 7 presentan ocho bandas en escala de grises, las cuales cubren un rango espectral que va desde el espectro visible hasta el infrarrojo cercano y el infrarrojo térmico. En la Figura 2, se muestra una imagen de la banda 3 (rojo visible) correspondiente a la escena 15-45. La banda Pancromática es la mayor novedad de este satélite, su resolución espacial de 15 m registrado con las demás bandas, permite que las imágenes generadas sean trabajadas para obtener ampliaciones de hasta 1:25.000. La banda 6, con ganancia baja y ganancia alta, permite varias opciones de análisis y aplicaciones, tales como la medición relativa de temperatura radiante o un cálculo de temperatura absoluta (3). En la Tabla 1 se muestra el registro de las bandas espectrales que capta este satélite. Tabla 1 Registro de las bandas espectrales para el sensor ETM+ Bandas Longitud del espectro Resolución espacial Descripción 1 0.45 – 0.52 µm 30 m Azul visible 2 0.52 – 0.60 µm 30 m Verde visible 3 0.63 – 0.69 µm 30 m Rojo visible 4 0.76 – 0.90 µm 30 m Infrarrojo cercano 5 1.55 – 1.75 µm 30 m Infrarrojo 6 10.40 – 12.50 µm 60 m Infrarrojo térmico 7 2.08 – 2.35 µm 30 m Infrarrojo 8 0.52 – 0.90 µm 15 m Pancromático La cobertura de cada una de las escenas es de 183x170 km2 aproximadamente, lo cual sumado a la resolución espacial de las mismas, provoca que las imágenes tengan un tamaño considerablemente grande. Producto del movimiento de rotación de la Tierra, o del ángulo desde el cual el satélite toma las imágenes, puede suceder que las escenas no tengan una misma resolución, o que estén ligeramente desfasadas, lo que provoca que las imágenes correspondientes a una escena, no necesariamente sean del mismo tamaño, ni abarquen la misma área exactamente. El formato de estas imágenes es el GeoTIFF, cuya estructura se explicará más adelante. 9 Capítulo 1 Imágenes del satélite Landsat 7 Figura 2 Imagen de la banda 3 correspondiente a la escena 15-45, tomada por el Landsat 7 el 01/03/2009. En dependencia del análisis que se quiera realizar se combinan varias bandas, producto de lo cual se obtienen las imágenes policromáticas como la mostrada en la Figura 3. Entre los análisis más comunes se encuentran los del comportamiento de la vegetación, de los suelos o el nivel de humedad, por citar algunos ejemplos. Figura 3 Imágen policromática obtenida al combinar varias bandas. 10 Capítulo 1 Imágenes del satélite Landsat 7 1.2 Formatos TIFF y GeoTIFF 1.2.1 Formato TIFF (Tagged Image File Format) Este formato desarrollado por Aldus Corporation en el año 1987, fue especificado originalmente como un estándar para guardar imágenes en blanco y negro creadas por escáner y aplicaciones de publicación. El principio del formato TIFF consiste en definir etiquetas que describen las características de la imagen. Está diseñado para ser extensible, y permite almacenar más de una imagen en un mismo fichero. TIFF ha ganado su reputación por su potencia y flexibilidad, pero es considerado tan complicado y misterioso como bueno. Este formato es uno de los más completos en su definición y el más especificado en documentaciones técnicas oficiales. Son tantas sus variantes que su manejo puede llegar a ser muy complejo, pero si sólo se contemplan las más habituales se simplifica enormemente. 1.2.1.1 Organización del fichero Todo fichero TIFF está organizado en tres secciones: la cabecera del fichero, el directorio de imágenes del fichero (IFD) y los datos del bitmap. Un fichero que contenga varias imágenes tendrá un directorio y un bitmap por cada imagen contenida. Aunque la cabecera va siempre al comienzo, las otras dos partes pueden ir dispuestas de varias maneras. En la Figura 4 se ilustran tres posibles distribuciones de los datos de un fichero TIFF. (4) Figura 4 Posibles distribuciones de los datos de un fichero TIFF 1.2.1.2 Estructura de la cabecera Bytes 0-1: Especifican el orden de los bytes utilizado en el fichero. Puede ser uno de los siguientes valores: 4949h (II) ó 4D4Dh (MM)4. Bytes 2-3: Teóricamente indican el número de la versión TIFF. 4 En el orden II (Intel), el orden de los bytes es del menos significativo al más significativo, ya sea con valores de 16 o de 32 bits. El orden MM (Motorola) es al contrario, del más significativo al menos significativo. 11 Capítulo 1 Imágenes del satélite Landsat 7 Bytes 4-7: Contienen el desplazamiento en bytes, desde el inicio del fichero, para acceder al primer directorio de imagen. Su único requisito, respecto a su ubicación es que esté en una dirección par. 1.2.1.3 Estructura del IFD Una vez localizado el IFD se pasa a interpretarlo. Consiste en un contador de dos bytes, indicador del número de entradas o campos que contiene el directorio. A continuación están las entradas; cada una consta de 12 bytes y al final de estas aparece un puntero al siguiente directorio de cuatro bytes; si no hay mas directorios debe estar en cero. Cada directorio de imagen define una imagen completa, y esto es lo que permite realizar ficheros TIFF multi-imagen. Estructura de las entradas Bytes 0-1: Especifica el código. Bytes 2-3: Especifica el tipo. En laTabla 2 se muestran los tipos admitidos. Bytes 4-7: Longitud, especificada en unidades del tipo de datos de la entrada, no en bytes totales. Bytes 8-11: Desplazamiento en bytes para acceder a los datos de la entrada. Debe ser un número par. Si el tamaño de los datos es menor o igual a 4 bytes, entonces no es almacenado el desplazamiento para acceder a los datos, sino los datos mismos, y si son menores de 4 bytes, son ajustados a la izquierda. Para conocer el tamaño de los datos, se deben consultar el tipo y la longitud. Tabla 2 Tipos de datos válidos Tipo Nombre Tamaño 1 byte Descripción 1 BYTE Entero sin signo de 8 bits 2 ASCII 3 SHORT 2 bytes Entero sin signo de 16 bits 4 LONG 4 bytes Entero sin signo de 32 bits 5 RATIONAL 8 bytes Dos LONG representando a una fracción Cadena de códigos ASCII acabada en 0 Las entradas están ordenadas crecientemente dentro del fichero en función de su código. En la Figura 5 se ilustra la organización lógica de un fichero TIFF, descrita a lo largo de este epígrafe. 12 Capítulo 1 Imágenes del satélite Landsat 7 Figura 5 Organización lógica de un fichero TIFF 1.2.2 Formato GeoTIFF El formato GeoTIFF fue diseñado en el Laboratorio de Propulsión a Reacción (Jet Propulsion Laboratory) de la NASA (National Aeronautics Space Administration) por el Dr. Niles Ritter. La especificación GeoTIFF define un conjunto de etiquetas TIFF provistas para describir toda la información cartográfica originada desde sistemas satelitales de imágenes, de escaneos de fotografías aéreas; de escaneos de mapas; de modelos de elevación digital o como resultado de análisis geográfico. Esta información adicional incluye el tipo de proyección5, sistema de coordenadas, elipsoide, datum y todo lo necesario para que la imagen pueda ser automáticamente posicionada en un sistema de referencia espacial. Su objetivo es permitir una vía de atar una imagen raster a un modelo espacial o una proyección de mapa conocido y describir estas proyecciones. GeoTIFF no pretende convertirse en un reemplazo de estándares de intercambio de datos geográficos ya existentes, tales como los estándares USGS, o el estándar de metadatos FGDC (Federal Geographic Data Committee). Por el contrario, promueve el aumento de un formato de datos raster ya existente y popular para soportar información georreferenciada y geocodificada. 5 Estas proyecciones incluyen UTM, US State Plane and Nacional Grids, así como tipos de proyecciones derivadas tales como Transverse Mecator, Lambert Conformal Conic, etc. 13 Capítulo 1 Imágenes del satélite Landsat 7 El formato GeoTIFF es completamente compatible con TIFF 6.0, por lo que un programa informático incapaz de leer e interpretar esa información, podrá aún así abrir el archivo de imagen GeoTIFF y visualizarlo como si de un archivo TIFF normal se tratara. (5) 1.2.2.1 Los metadatos del GeoTIFF (llaves) La cantidad y tipos de parámetros que podrían ser requeridos para describir las proyecciones más populares, implicaría desde docenas hasta cientos de etiquetas, lo que agotaría las habilitadas por el formato TIFF. Para solucionar este problema, GeoTIFF utiliza una aproximación a través de llaves (geotags) para codificar información, las cuales están diseñadas en una forma análoga a las etiquetas TIFF estándar, en su estructura y disposición. A medida que surjan nuevas necesidades, otras llaves pueden definirse dentro de la estructura, sin requerir la asignación de nuevas etiquetas. Estas llaves se encuentran en un GeoKeyDirectory (GKD), el cual se referencia en el IFD, en una etiqueta conocida como GeoKeyDirectoryTag, cuyo código es 87AFh. Estructura del GeoKeyDirectory Este directorio tiene una cabecera, a continuación de la cual se encuentra el conjunto de entradas (KeyEntry), con una estructura análoga al formato de las entradas del IFD. Estructura de la cabecera Bytes 0-1: KeyDirectoryVersion. Indica la versión de la implementación de las llaves y es usado para asegurar que es una implementación válida. Bytes 2-3: KeyRevision. Indica qué revisión del conjunto de llaves es usado. Bytes 4-5: MinorRevision. Indica qué conjunto de códigos de llaves es usado. Bytes 6-7: NumberOfKeys. Indica la cantidad de llaves. 1.3 Formato de las imágenes del Landsat 7 Después de estudiar la estructura de los formatos TIFF y GeoTIFF, se procedió a leer e interpretar los ficheros de las imágenes del Landsat 7, utilizando la herramienta WinHex, y se arribó a las siguientes conclusiones: El orden de los bytes utilizado en el fichero es el II, o sea, el orden de los bytes es del menos significativo al más significativo. El fichero tiene un único IFD, lo que implica una única imagen. El IFD identificado, tiene 18 entradas. A continuación se muestran los nombres de las mismas con sus respectivos identificadores, y en el Anexo 1 se describe cada una de ellas. 14 Capítulo 1 Imágenes del satélite Landsat 7 NewSubfileType (FEh) ImageWidth (100h) ImageLength (101h) BitsPerSample (102h) Compression (103h) PhotometricInterpretation (106h) StripOffsets (111h) Orientation (112h) SamplesPerPixel (115h) RowsPerStrip (116h) StripByteCounts (117h) XResolution (11Ah) YResolution (11Bh) PlanarConfiguration (11Ch) ModelPixelScaleTag (830Eh) ModelTiepointTag (8482h) GeoKeyDirectoryTag (87AFh) GeoAsciiParamsTag (87B1h) De todas estas, las últimas cuatro son las que describen la información geográfica. El resto, son etiquetas clásicas del formato TIFF. 15 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos El Landsat 7 fue lanzado el 15 de Abril de 1999. En Mayo de 2003, el sensor ETM+ comenzó a presentar fallas en el SLC, por lo cual este se encuentra apagado, y las escenas adquiridas desde el 14 de Julio de ese año, presentan líneas de datos inválidos (gaps), como se muestra en la Figura 6. Figura 6 Fragmento de imagen con gaps producidos por el SLC-off. El SLC es la parte del sensor ETM+ que compensa el movimiento hacia adelante del satélite durante la adquisición de las imágenes. Sin el SLC, el área escaneada por el sensor delinea un patrón de zigzag como se describe en la Figura 7, causando que parte de los datos registrados estén duplicados y, la parte correspondiente al terreno bajo el satélite, no sea registrada en absoluto, quedando las regiones duplicadas y las no registradas de la imagen con el valor 0. Esto significa que dichas imágenes contienen datos reales intercalados con franjas negras (el equivalente al valor 0 en todos los canales). Figura 7 Camino del escáner ETM+ con y sin el SLC, tomada del sitio de la USGS Landsat Project´s SLC-off 16 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos Los gaps provocan aproximadamente, la pérdida de un 22% de la información de cada imagen. Están dispuestos en franjas inclinadas hacia la izquierda unos 8 o respecto a la orientación horizontal debido a la rotación de la imagen, y aparecen en intervalos de 33 píxeles. Estas franjas tienen hasta 15 píxeles en el borde de la imagen, y van disminuyendo gradualmente camino al centro hasta desaparecer. Según el USGS, esta zona libre de gaps, tiene una extensión de 22km de ancho aproximadamente. Una anchura de 15 píxeles combinado con una distancia de 33 píxeles significa que al borde de la escena, el 45% de los datos se pierden.6 (6) En los bordes de las franjas de gaps, pueden existir píxeles que no sean registrados como gaps en todas las bandas, por el ETM+. La amplitud de las lagunas en los datos, varía para las diferentes bandas espectrales. Debido a esto, al combinar las bandas algunos gaps pueden quedar con un color distinto de negro, como se muestra en la Figura 8. 7 Figura 8 Fragmento de una imagen, resultado de la combinación de las bandas 3, 2, 1. En una escena, no es posible determinar la posición en la que aparecerán las rayas. Por tanto, no se puede estimar de manera confiable cuántas imágenes serán necesarias para un rellenado completo de las mismas. (6) En la secuencia de escenas tomadas a una misma localización geográfica, las franjas de datos inválidos se van desplazando, hasta coincidir nuevamente en un ciclo de 4 tomas. Es esta característica la que permite sentar las bases para diseñar y proponer metodologías para eliminar los gaps en las imágenes del Landsat 7, aprovechando los valores de los píxeles válidos que se corresponden geográficamente a los mismos en otras escenas. 6 Esto se agrava por el hecho de que el resto de los píxeles pueden estar sujetos a la cobertura de nubes. Este aspecto puede ser importante a la hora de determinar si se van a eliminar los gaps de las imágenes banda a banda o no. 7 17 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos 2.1 Análisis de las metodologías conocidas para la eliminación de los gaps La existencia de vacíos de datos (data gaps) es un fenómeno típico en las imágenes remotas y, su ocurrencia y dinámica, pueden responder a motivos naturales muy comunes como cobertura de nubes y sombras, o instrumentales como son el Rayado Linear (Line Striping), relativamente común en Landsat 5 TM, y el SLC_off existente en todas las imágenes Landsat 7 ETM+ posteriores al 31 de Mayo del 2003, dificultad que se mantendrá, al menos, hasta el 2011 (7)& (8). Esto provoca que, en la búsqueda de viabilizar el trabajo de los especialistas, se imponga la necesidad de corregirlas. Para ello, existen diversas técnicas (9) & (10), en función de las cuales se han diseñado distintas metodologías, que pueden ser separadas en tres grandes grupos (7): Basados en múltiples imágenes: los gaps de una imagen primaria, son reconstruidos usando otras imágenes, que contienen información válida en la zona correspondiente. En este grupo se encuentran, las técnicas de Ajustes Lineales Locales del Histograma (Local Linear Histogram Match, LLHM (6)) y las de Ajuste de Histograma para la imagen completa (Histogram Specification), que funcionan con datos seleccionados manual o automáticamente para toda o parte de las imágenes, y favorecen el ajuste radiométrico; las basadas en la Calibración Lineal Empírica (Empirical Line Calibration) que funcionan sobre la regresión lineal de puntos seleccionados por sus características de terreno y su respuesta espectral; y la basada en la Transformación de las Componentes Principales (PCT) que convierte los datos de la imagen que se utilizará para rellenar, a las características de la imagen primaria que presenta los vacíos. El problema de estas técnicas surge cuando existen diferencias importantes entre los datos de las distintas imágenes, debido a cambios en el terreno, atmosféricos o de la radiación solar, entre otros. Basados en una sola imagen: funcionan utilizando las correlaciones entre los píxeles de la imagen, obtenidas por técnicas geoestadísticas de interpolación, donde las áreas vacías son reconstruidas usando datos válidos de la propia imagen. En este grupo se encuentran técnicas sencillas como el reemplazo de los píxeles vacíos por sus vecinos, tales como Vecino más cercano, Máxima Verosimilitud, Mahalanobis (11) y otras más complejas como el Krigging ordinario. Estas técnicas tienen como principal problema que los píxeles son totalmente creados vía interpolación y sus resultados son variables en cuanto a confiabilidad. 18 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos Híbridos: Este tercer grupo aprovecha las sinergias existentes entre los dos anteriores. Incluye técnicas como, la del relleno de las áreas vacías que usan datos válidos de la propia imagen, aplicando un proceso de interpolación basado en la información de los bordes, con otra imagen, como el caso del CoKrigging; o usando un enfoque de segmentación que utiliza la información obtenida de otras imágenes para establecer una rutina de interpolación dentro de los límites definidos para cada segmento. La utilidad de estas técnicas se ha demostrado en trabajos a escalas regionales, pero no se recomienda para trabajos de mayores resoluciones. Del análisis de las metodologías, la revisión bibliográfica existente sobre el tema donde se muestran ejemplos de métodos que se aplican (12) & (13), y el uso de algunos de ellos por un grupo de especialistas en Procesamiento Digital de Imágenes de Teledetección sobre la escena 15-458, se llegó a la conclusión de que el grupo de métodos basados en ajustes radiométricos, era más confiable que el basado en interpolaciones de los datos de una misma imagen y que dentro de ellos, el Phase 2 Gap-Fill Algorithm (14), propuesto y utilizado por el USGS, basado en un Ajuste Lineal Local del Histograma, era el más conveniente, y brindaba los mejores resultados en la corrección (relleno) de las imágenes del Landsat 7 con el problema SLC-off, así como para el relleno en las mismas, de los vacíos provocados por nubes y sus sombras, al obtenerse resultados prácticamente sin errores y sin huellas en las áreas corregidas. Debe observarse que hasta donde se conoce, el algoritmo mencionado anteriormente, no está implementado en ningún software, descontando por supuesto el desarrollado por el USGS. Se señala (6) que para el procedimiento escogido, el problema radica en que no retiene la relación entre los píxeles de la imagen, ya que el ajuste utilizando una pequeña ventana siempre causa que los píxeles de la imagen de relleno se ajusten a los de la imagen rellenada, incluso cuando no sea conveniente9, pues los métodos basados en una pequeña ventana, son una mezcla de ajuste radiométrico con interpolación, lo cual no es recomendable cuando se desea preservar cuanto sea posible, el estado real de las imágenes, evaluado de mayor importancia que el resultado con un buen aspecto. Se consideró que cuando se deseen imágenes que tengan el menor grado de interpolación posible, mantengan la resolución original y sean, no fotografías casi instantáneas de cambios de ciclo corto, sino que muestren el estado general de un 8 Cubre la Península de Zapata y el Centro-Occidente de Cienfuegos. Es considerada una de las más complejas en el país por su diversidad y cambios frecuentes debidos a la humedad del terreno. 9 Como por ejemplo, si hubieran cambios en el uso del terreno, en la fenología de la vegetación o en las condiciones de humedad, etc. 19 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos territorio en un período anual, de temporadas (seca o lluvia, verano o invierno), etc., y que además puedan ser procesadas y comparadas por métodos automáticos o semiautomáticos, el alegado problema pasa a ser irrelevante y se convierte en ventaja, en especial el “buen aspecto” que implica la desaparición total o casi total de las huellas de los rellenos, cuestión que en los restantes métodos basados en varias imágenes se mantiene en algún grado e impide o distorsiona las clasificaciones. 2.2 Metodología implementada 2.2.1 Justificación teórica Las imágenes correspondientes a una misma escena tomadas en distintos espacios de tiempo, comúnmente muestran diferencias en el grado de brillantez, es decir, presentan variaciones en sus histogramas de frecuencia de niveles de gris, lo cual puede ser causado por el de vapor de agua distribuido en la atmósfera, por efectos como neblinas fundidas con objetos sobre el terreno, o elevaciones del terreno, entre otros. En la búsqueda de lograr un correcto rellenado de los gaps, se diseñó una metodología que ajusta las imágenes radiométricamente10, para tener en cuenta los aspectos planteados. 2.2.1.1 Ajuste de histograma Sean y dos niveles de gris continuos (considérense variables aleatorias), y sean y sus funciones de densidad continuas correspondientes. y denotan los niveles de gris de las imágenes de entrada y salida respectivamente. Se puede estimar de la imagen de entrada dada, mientras que es la función de densidad de probabilidad especificada que se desea para la imagen de salida. Sea una variable aleatoria con la propiedad donde es una variable falsa (dummy) de integración. Se reconoce esta expresión como una versión continua de ecualización de histogramas11. Supongamos que se define una variable aleatoria con la propiedad 10 Ajuste radiométrico: Consiste en el macheo de dos imágenes, analizando los niveles de intensidad, de manera que se ajustan los valores radiométricos de una imagen con respecto a otra. 11 ecualización de histogramas: Consiste en determinar una función de trasformación que busca producir una imagen de salida con un histograma uniforme. 20 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos donde es una variable dummy de integración. Igualando y asumiendo que , se obtiene que satisface la condición existe y que satisface las condiciones i. es monótona decreciente en el intervalo normalizado al intervalo ii. para todo , niveles de gris La ecuación a través de muestra que una imagen con una función de densidad de probabilidad especificada puede ser obtenida de una imagen de entrada siguiendo el siguiente procedimiento: 1. 2. 3. 4. Obtener la función de transformación usando Usar para obtener la función de transformación Obtener la función de transformación inversa Obtener la imagen de salida aplicando a todos los píxeles en la imagen de entrada. El resultado de este procedimiento será una imagen cuyos niveles de gris ( ) tienen la función de densidad de probabilidad especificada . Afortunadamente el problema de la ecualización de histogramas se puede simplificar en el caso discreto (15). La formulación discreta de está dada por donde es el número total de píxeles de la imagen, es la cantidad de píxeles con nivel de gris , y es el número discreto de niveles de gris. Similarmente la transformación discreta de se obtuvo del histograma y tiene la forma 12 Finalmente, la versión discreta de la ecuación 12 La variable es dada por fue adicionada para ganar claridad en la discusión que sigue. 21 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos o, según , por Las ecuaciones hasta la son las bases para el macheo de histogramas de imágenes digitales. es una mapeo de los niveles de gris de la imagen original a los correspondientes . calcula una función de transformación del histograma . Dos de las funciones de transformación más conocidas son la Gaussiana y la lineal. 2.2.1.2 Modelo de regresión lineal Como el problema será tratado entre dos imágenes, solamente serán consideradas dos variables en el modelo lineal, por lo cual, este vendría dado por la ecuación de una recta incluyendo el error que se pueda cometer: donde: y y son los parámetros de la ecuación de regresión lineal (coeficientes), son las variables (valores de intensidad de las imágenes), es el término de perturbación (o error) estocástica. En el modelo que nos ocupa, indica el intercepto con el eje , y es la pendiente de la recta, que expresa en cuánto varía al producirse un incremento unitario en . A esta última se le denomina “Coeficiente de Regresión”. Antes de continuar, debe ser aclarado que el término de perturbación estocástica es una variable aleatoria no observable, que toma valores positivos ó negativos, y que se puede considerar una variable que sustituye a todas las que puedan afectar a , pero por una ó varias razones de medición u obtención de datos, no se puede incluir en el modelo. El proceso de estimar los parámetros de la ecuación a partir de los valores disponibles, recibe el nombre de “Ajuste de Curva”. Con el propósito de minimizar los errores de estimación, se emplea el Método de los Mínimos Cuadrados Ordinario (MMCO). Se denomina error de estimación (o residual) a la diferencia entre los valores reales ( ) y sus estimados ( ), y se denota como , por lo que se puede definir la ecuación de regresión a partir del criterio de que la suma de los residuos resulte lo más pequeña como sea posible. 22 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos Adoptando el método de los mínimos cuadrados: se obtendrían entonces los únicos estimadores y de y , que producen el valor más pequeño posible de , mediante un sencillo cálculo diferencial. Para ello se hallan la primera y segunda derivada parcial respecto a y y se igualan a 0. Este proceso de diferenciación produce el siguiente sistema de ecuaciones normales: Para ganar claridad en la obtención de los estimadores método matricial. y , se trabajará con el Sea la ecuación de regresión estimada, la siguiente ecuación matricial: donde: Aplicándole el método de los mínimos cuadrados antes mencionado para poder estimar las , se obtienen las siguientes ecuaciones normales: Por tanto es de interés saber a qué son iguales 23 y Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos donde la inversa de es: Finalmente: 2.2.2 Metodología Para rellenar los gaps provocados por el problema del SLC-off en una imagen, es necesario procesar cada una de las ocho bandas en escala de grises que la componen, de forma independiente. El algoritmo seleccionado en este trabajo, recibe como entrada dos escenas correspondientes a una misma banda de las imágenes a corregir, primaria y secundaria (o de relleno), y devuelve una escena cuyos datos válidos serán los mismos de la escena primaria unidos a los gaps que se hayan podido rellenar. Para ello, se empleó la siguiente metodología: I. II. Preparar las escenas de trabajo utilizando el programa de procesamiento de imágenes ENVI, para pasarlas como una entrada correcta al algoritmo seleccionado. Implementar un algoritmo de relleno utilizando el proceso de macheo de histogramas propuesto en el Phase 2 Gap-Fill Algorithm. I. Para que el algoritmo sea efectivo, las escenas de entrada deben cumplir dos condiciones fundamentales13. i. Deben tener el mismo tamaño en cuanto a filas y columnas, y corresponderse a la misma localización geográfica. ii. Deben estar libres de nubes y sus sombras. Producto del movimiento de rotación de la Tierra, o del ángulo desde el cual el satélite toma las imágenes, puede suceder que las escenas no tengan una misma resolución, o 13 Otros preprocesamientos que se sugieren para obtener un mejor resultado son los mencionados en el Anexo 2. 24 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos que estén ligeramente desfasadas. Por tal motivo, es necesario hallar una zona que sea cubierta por todas. Esto se logra con el ENVI, y una vez detectada, se recorta manualmente cada escena de trabajo. Por otra parte, las nubes, debido a la alta intensidad de luz que tienen, pueden interferir de manera desfavorable en el proceso de corrección. Para eliminarlas, se detectan manualmente junto a sus sombras, y se sustituyen los valores que ocupan, por el valor 0 en escala de grises, para posteriormente tratarlas como al resto de los gaps. II. Denotemos por , al conjunto de escenas obtenidas en I. Se seleccionan del mismo, dos escenas, una primaria y una de relleno (tratando de que sean las más adecuadas en cuanto a calidad, y que tengan un nivel de luminosidad similar). Estas serán la entrada del algoritmo implementado, en el cual, se siguen los pasos expuestos a continuación: 1) Buscar las fronteras de la imagen real en la escena primaria, para analizar solamente aquellos puntos que son gaps. 2) Buscar las fronteras de la imagen real en la escena de relleno. 3) Dividir la imagen en cuatro cuadrantes, y para cada uno de ellos hacer(Ver en el Anexo 3 el diagrama de bloques): A. Por cada píxel inválido contenido en la imagen real de la escena primaria (hallado desde el centro hacia los bordes laterales14), si el píxel correspondiente en la escena de relleno es válido: a) Buscar una ventana que se vaya extendiendo por los vecinos que lo rodean, hasta llegar a la mínima cantidad requerida de píxeles comunes, 144 por sugerencia de USGS (14). (Ver Figura 9). b) Calcular los coeficientes de la función de regresión lineal entre los píxeles comunes. c) Ajustar los coeficientes a un rango razonable. d) Calcular la función con el valor del píxel válido. e) Asignar el valor calculado al píxel inválido en la escena primaria. 4) Si aún quedan píxeles inválidos en la imagen real de la escena primaria: a) Tomar de otra escena de relleno. b) Volver al paso 2. 5) Fin. 14 Refiriéndose a la escena primaria. 25 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos Figura 9 En las ventanas de ejemplos, los píxeles negros son gaps y los blancos son datos válidos. Como las imágenes están georreferenciadas, la localización del píxel (x,y) es la misma sobre el terreno de ambas escenas, y los píxeles comunes son aquellos que son válidos en las dos. La ventana de píxeles comunes va creciendo alrededor del gap tratando de mantener la forma cuadrada, hasta alcanzar el número mínimo de píxeles comunes requeridos. Solución Conceptual de A Esta parte de la metodología no modifica el Phase 2 Gap-Fill Algorithm, propuesto por la USGS (Anexo 3). a. Se buscan los píxeles comunes como se ilustra en la Figura 9, denotando por y , a los conjuntos de valores hallados para las escenas primaria y de relleno respectivamente. b. Construir la función de regresión lineal asociada al problema y calcular los coeficientes por el Método de los Mínimos Cuadrados Ordinario: Haciendo y , se obtiene 26 Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos c. Para prevenir datos fuera del dominio (outliers), que tienen un efecto fuerte sobre la transformación, se fija el máximo valor del , ( ), para acotar los valores permisibles de la forma: Si no se cumple esta condición, entonces recalcular el media y la desviación estándar: y el usando la donde: la media de los píxeles comunes hallados en la imagen primaria , la desviación estándar de los píxeles comunes hallados en la imagen primaria , la media de los píxeles comunes hallados en la imagen de relleno , y la desviación estándar de los píxeles comunes hallados en la imagen de relleno . Luego chequear nuevamente la condición cumplirse hacer: 27 para los valores obtenidos, de no Capítulo 2 Los gaps producidos por el SCL-off, y las metodologías para corregirlos d. Calcular donde es el color del píxel de relleno. e. Finalmente hacer 28 Capítulo 3 Implementación Capítulo 3 Implementación 3.1 Tecnologías aplicadas El desarrollo de una herramienta que posibilitara poder cumplir con el objetivo propuesto en este trabajo, requirió el estudio y aplicación de las tecnologías expuestas brevemente a continuación. 3.1.1 .NET Framework La aparición de .NET Framework o Plataforma .NET, fue una revolución en el mundo del desarrollo de aplicaciones computacionales. Creada por Microsoft, el diseño de esta plataforma tuvo en cuenta la variedad de lenguajes que usan los desarrolladores de software y la creciente necesidad de interacción entre bibliotecas desarrolladas en distintos lenguajes. Por esta razón surge el Common Language Specification (CLS) que es un conjunto de especificaciones para los compiladores que deseen sumarse a la plataforma, y tiene como condición primaria generar código Microsoft Intermediate Language (MSIL). En la Plataforma .NET es posible programar en cualquier lenguaje siempre que el compilador utilizado cumpla con el CLS. La Plataforma .NET como infraestructura sobre la que se reúne todo un conjunto de lenguajes y servicios que simplifican enormemente el desarrollo de aplicaciones, ofrece un entorno de ejecución altamente distribuido, que permite crear aplicaciones robustas y escalables. Sobre la plataforma se ejecutan las aplicaciones en lugar de hacerlo directamente sobre el sistema operativo. Contiene elementos como el Common Language Runtime (CLR), ASP.NET, Web Service, Windows Forms y bibliotecas de clases y utilitarios. El CLR es el motor donde se ejecutarán las aplicaciones, y es el encargado de convertir el código MSIL en lenguaje de máquina. De esta forma, indistintamente de la herramienta de desarrollo utilizada y del lenguaje elegido, el código generado es siempre el mismo. Este código es transparente al desarrollo de la aplicación pues es generado automáticamente por el compilador. Sin embargo, el código generado en MSIL no es código máquina y por tanto no puede ejecutarse directamente. Se necesita un segundo paso en el que una herramienta denominada compilador JIT (Just-In-Time) genera el código máquina real que se ejecuta en la plataforma que tenga la computadora. La compilación JIT la realiza el CLR a medida que se invocan los métodos en el programa y, el código ejecutable obtenido, se almacena en la memoria caché de la computadora, siendo recompilado sólo cuando se produce algún cambio en el código fuente. 29 Capítulo 3 Implementación La Plataforma .NET provee bibliotecas muy útiles que brindan clases, interfaces y herramientas que proporcionan acceso a la funcionalidad del sistema. Estas bibliotecas propician la interoperabilidad entre lenguajes de programación integrados a la plataforma, puesto que permiten usar una misma vía de comunicación con el CLR. La biblioteca de clases constituye una colección orientada a objetos de tipos reutilizables que se pueden emplear para desarrollar aplicaciones que abarcan, desde las tradicionales herramientas de interfaz gráfica de usuario (GUI) o de línea de comandos, hasta las aplicaciones basadas en las innovaciones más recientes proporcionadas por ASP.NET, como los formularios Web Forms y los servicios Web XML (16). 3.1.2 El lenguaje de programación C# C# es un lenguaje de propósito general diseñado por Microsoft para la Plataforma .NET. Su sintaxis y estructuración es muy parecida a la de los lenguajes C++ y Java, tomando las mejores bondades de los mismos. Como principales características se encuentran su sencillez, modernidad, amplio soporte a la orientación a objetos, orientación a componentes, gestión automática de memoria, seguridad de tipos, instrucciones seguras, sistema de tipos unificado, extensibilidad de tipos básicos, extensibilidad de operadores y extensibilidad de modificadores entre otras (17). 3.1.3 WinHex WinHex es un editor hexadecimal universal muy útil para el procesamiento de datos a bajo nivel, capaz de cargar y leer ficheros grandes (18). 3.1.4 ENVI (Environment for Visualizing Image) Es un moderno sistema de procesamiento de imágenes diseñado para proporcionar análisis multiespectral de los datos obtenidos por teledetección desde aviones y satélites. Proporciona un entorno potente, novedoso y de fácil uso para presentar y analizar imágenes de cualquier tamaño y tipo de datos en un amplio rango de formatos. 3.2 Rellenando los gaps 3.2.1 Manejador del formato GeoTIFF Para poder garantizar que al tratar las imágenes, estas mantuvieran el formato GeoTIFF y siguieran georreferenciadas, era necesario modificar solamente la parte del fichero en la cual estuvieran los datos de la imagen en sí, o sea, los bytes que representaran los píxeles de la misma. 30 Capítulo 3 Implementación Luego, una vez conocida la estructura de los ficheros con dicho formato, se imponía la necesidad de un manejador que permitiera interpretar la información contenida en los mismos. Para ello se implementó una clase denominada TiffManager, cuyas funcionalidades se explican a continuación. La clase TiffManager Esta clase recibe la localización del fichero a interpretar, y lee el mismo acorde a las especificaciones del formato explicadas anteriormente. Se puede decir que desglosa el fichero en tres bloques esenciales de información: Header: Secuencia de bytes previa a los datos de la imagen. Bitmap: Secuencia de bytes que representan los datos de la imagen. Footer: Secuencia de bytes posterior a los datos de la imagen. Esto permite hacer copia de un fichero sin que los metadatos y la estructura interna del mismo varíen, simplemente, construyendo otro fichero con el mismo Header, otro Bitmap con las mismas propiedades y diferentes valores en los datos y, el mismo Footer. Por supuesto, estos bloques dispuestos en el mismo orden en que se encuentran en el fichero fuente. Además, se implementaron las clases: IFD_Entry: Representa una entrada de un IFD, por lo cual tiene como campos: código, tipo, tamaño y datos que le corresponden. Entry_Type: Representa el tipo de entrada de un IFD, y tiene como campos un tipo, y la cantidad de bytes necesarios para representarlo, lo cual facilita saber en dependencia del tipo, si los últimos cuatro bytes correspondientes a una entrada constituyen los datos que la representan, o el offset a los mismos. Estas clases permiten poder almacenar en el manejador los metadatos de forma fácilmente legible, los cuales pueden ser muy útiles en tareas futuras, en caso de necesitar interpretar la información geográfica de la imagen, por citar un ejemplo. 3.2.2 La clase Scene Se diseñó la clase Scene para poder representar las imágenes satelitales con los datos que le proporciona un manejador. Además de los elementos expuestos en la explicación de la clase TiffManager (Header, Footer y Bitmap), una escena tiene otros campos como: el offset al Footer, la dirección del camino donde se localiza y el nombre, los cuales serán necesarios a la hora de salvar la imagen correspondiente a la escena. 31 Capítulo 3 Implementación También tendrá un arreglo de tamaño 257, donde las primeras 256 posiciones almacenarán la frecuencia del color con valor i-ésimo en la escala de grises en la imagen real (histograma), y en la última estará guardado el máximo valor alcanzado, para poder escalar en dependencia del mismo, la gráfica que ilustre dicho histograma. Por otra parte, en cada imagen se buscan las fronteras de la imagen real, para determinar la región en que se enmarca y, evitar procesar píxeles que no pertenezcan al interior de la misma, los cuales, representan un por ciento significativo. Luego, una escena además, tendrá dos listas que almacenarán en la posición i-ésima, la (el índice correspondiente a la columna) del píxel que se encuentra en las fronteras izquierda y derecha de la fila i-ésima, respectivamente. Buscando las fronteras de la imagen real Dado que para que las imágenes satelitales constituyan una entrada válida para el algoritmo de relleno seleccionado, son recortadas de manera que se corresponden en localización geográfica y tamaño, las fronteras de la imagen real en las mismas pueden describir diferentes formas. Las regiones de una imagen recortada se ilustran en la Figura 10. La parte gris representa la imagen real; la parte negra, los píxeles que no serán analizados; y los puntos amarillos representan los vértices del polígono que circunscribe a la imagen real. Figura 10 Representación de las regiones de una imagen satelital. La metodología que se siguió para hallar las fronteras fue la siguiente: 1. Avanzando desde las esquinas y hacia el interior de la imagen, se buscan los vértices del polígono (máximo ocho). 32 Capítulo 3 Implementación 2. Se calculan las pendientes de las rectas que constituyen las fronteras y con ello se denotan las ecuaciones de las mismas. 3. , se calculan las correspondientes a las fronteras izquierda y derecha de la imagen real. Una vez determinadas las fronteras, se procedió a rellenar los gaps. 3.2.3 Recursos empleados para el procesamiento eficiente de las imágenes Para trabajar eficientemente con procesamiento de imágenes, se recomienda cargar en memoria un bloque de información, y acceder directamente a la misma, a través de un puntero que se vaya moviendo y leyendo los bytes guardados, lo cual agiliza enormemente el proceso. Para poder hacer esto en C#, se debe especificar en las propiedades del proyecto que se permite trabajar en código inseguro (unsafe) y, usando los ensamblados System.Drawing y System.Drawing.Imaging, se facilitan funcionalidades de las clases Bitmap y BitmapData, las cuales se exponen a continuación. LockBits y UnLockBits: Son funciones públicas de la clase Bitmap para bloquear y desbloquear un área especificada en la memoria respectivamente. Los parámetros que recibe la función LockBits son, un objeto de tipo Rectangle que especifica el área que será bloqueada, y dos enteros que especifican el nivel de acceso y el formato de la imagen. Estos dos últimos, a través de los enumeradores ImageLockMode y PixelFormat, los cuales se expondrán seguidamente. LockBits devuelve un objeto de la clase BitmapData, que posteriormente recibirá UnLockBits como parámetro. ImageLockMode: Los posibles valores son: ReadOnly: Especifica que la imagen fue bloqueada solamente para leer. ReadWrite: Especifica que la imagen fue bloqueada para leer o escribir. WriteOnly: Especifica que la imagen fue bloqueada solamente para escribir. UserInputBuffer: Especifica que el buffer usado para leer o escribir los datos de la imagen es reservado por el usuario. PixelFormat: Define el número de bits asociado a un píxel. En este caso, las imágenes tienen 8 bits por píxel (8bpp). BitmapData: Esta clase especifica los atributos de una imagen de mapa de bits. Scan0: Obtiene o establece la dirección de los datos del primer píxel en el mapa de bits. También corresponde a la primera línea de exploración del mapa de bits. Stride: Obtiene o establece el ancho de paso (también denominado ancho de exploración) del objeto Bitmap. 33 Capítulo 3 Implementación Width: Obtiene o establece el ancho en píxeles del objeto Bitmap. También corresponde al número de píxeles de una línea de exploración. Height: Obtiene o establece el alto en píxeles del objeto Bitmap. A veces se denomina número de líneas de exploración. PixelFormat: Obtiene o establece el formato de la información de píxeles en el objeto Bitmap que este objeto BitmapData devuelve. A continuación, se ilustra un ejemplo de cómo aplicar lo explicado anteriormente para ganar rapidez al trabajar con las imágenes. Código 1 Ejemplo de lectura/escritura de un bitmap eficientemente, cargándolo en memoria. 3.2.4 La clase ImageProcessor Esta clase fue diseñada para procesar las imágenes, así que más bien es utilitaria, por lo cual, todos sus miembros son estáticos, y de esta manera no hay necesidad de instanciarla. La “filosofía de los cuatro cuadrantes” Previamente a aplicar el algoritmo para rellenar los gaps, dada la disposición de las franjas de gaps en las imágenes y, aprovechando el hecho de que en el centro no hay presencia de los mismos, se decidió dividir la imagen en cuatro fragmentos: superior izquierdo, superior derecho, inferior izquierdo e inferior derecho. Luego, se aplicó el algoritmo de relleno seleccionado a cada uno, de manera que los datos se analizaron desde el centro y hacia las esquinas. Todo esto, con el objetivo de aportar la mayor cantidad de datos válidos originales (o sea, que inicialmente no eran gaps) a la función de regresión lineal, a la hora de calcular el valor del color de relleno. 34 Capítulo 3 Implementación Miembros de la clase A continuación se exponen los miembros de la clase ImageProcessor entre los que se encuentra implementado, finalmente, el algoritmo de relleno seleccionado para cumplir el objetivo de este proyecto. Gap_Fill: En esta función (Ver Código 2) se bloquean los bitmaps correspondientes a las imágenes primaria y secundaria, y se llama al método que rellena los gaps para cada cuadrante. Es válido destacar que, aunque se trabajó por cuadrante, se tuvieron que bloquear en memoria las imágenes procesadas completas, para no restringir la búsqueda de los píxeles comunes a un solo cuadrante, y tratar siempre de buscar la ventanita que los contenga, con el gap analizado lo más centrado posible. Los parámetros que recibe son los siguientes: Bitmap prime_Bmp, fill_Bmp: Especifican los bitmaps correspondientes a las imágenes primaria y secundaria respectivamente. List<int> prime_left_Border, prime_right_Border: Lista de las que delimitan las fronteras izquierda y derecha de la imagen real en la imagen primaria respectivamente. que List<int> fill_left_Border, fill_right_Border: Lista de las delimitan las fronteras izquierda y derecha de la imagen real en la imagen de relleno respectivamente. Código 2 Función Gap_Fill Quarter_Gap_Fill: Método donde se aplica el algoritmo de relleno seleccionado (Ver Código 3). Los parámetros que recibe son, además de las fronteras de las imágenes primaria y secundaria, los siguientes: 35 Capítulo 3 Implementación Bitmap_Data prime_Data, fill_Data: especifican los atributos de los imágenes primaria y secundaria bitmaps correspondientes a las respectivamente. Point pi, pf: Son los dos puntos que determinan el rectángulo correspondiente al cuadrante analizado desde el centro pi, hasta la esquina pf. int ptr_Remain: Especifica si en una misma fila el puntero se mueve hacia adelante o hacia atrás (sus valores posibles son 1 ó -1 respectivamente). int y_Remain: Especifica si en una misma columna el puntero sube o baja (sus valores posibles son -1 ó 1 respectivamente) Nótese como la evaluación de las condiciones para proceder en los ciclos depende de estos dos últimos parámetros, los cuales son necesarios sobre todo, para identificar aquellos casos en que la movida del puntero sea hacia atrás en una fila, o hacia arriba en una columna. Código 3 Método Quarter_Gap_ Fill, donde se rellenan los gaps, según el proceso de macheo de histogramas propuesto en el Phase 2 Gap-Fill Algorithm. Find_NxN: Función para buscar la ventana de píxeles comunes alrededor del gap que se está analizando mediante un llamado al método Grow. Devuelve un objeto de tipo NxN que será explicado más adelante. 36 Capítulo 3 Implementación Grow: Método para expandir la ventana de píxeles comunes, tratando de mantener la forma cuadrada, pero no forzando a ello. Esto lo logra determinando los puntos que delimitan las filas y columnas a expandir (como se ilustra en el Código 4), los cuales pasa como parámetro a las funciones Grow_Col y Grow_Row, encargadas de chequear en la búsqueda de los mismos. Código 4 Ejemplo de la forma en que se determinan los índices que delimitan las columnas o filas a expandir. y Grow_Row: Son los métodos donde se leen desde un punto inicial hasta uno final pasados por parámetro, una columna o una fila respectivamente, en búsqueda de píxeles comunes. Grow_Col Gain: Función que devuelve un objeto de tipo Co_Vector, con los valores del gain y el bias requeridos para calcular la función de regresión lineal. Recordemos que estos son los coeficientes de la ecuación de regresión empleada para calcular el valor del color de relleno ( ). Es en esta función que se calculan y ajustan de ser necesario, los valores del gain y el bias. Inside_Real: Función booleana que determina si un punto está contenido en la imagen real. Funciones Window_Mean y Standard_Deviation: Devuelven la media y la desviación estándar de un conjunto de valores respectivamente. Además se implementaron las clases a las cuales se hizo referencia anteriormente: NxN: Representa la ventana de píxeles comunes, contiene dos listas que almacenan los valores de los datos que les corresponden a estos, en las imágenes primaria y de relleno respectivamente. Co_Vector: Representa un vector con los valores de los coeficientes de la función de regresión que serán empleados, almacenados en los campos gain y bias. 3.3 Aplicación Se diseñó una aplicación sencilla (Figura 11) y bastante intuitiva con el objetivo de que resulte cómoda y práctica a la vez para los usuarios, que permite realizar los 37 Capítulo 3 Implementación procedimientos correspondientes de corrección de las imágenes. Para su utilización, se requiere el Sistema Operativo Windows con el .NET Framework 2.0 o superior. Figura 11 Forma principal de la aplicación implementada Cada vez que se abre o crea una imagen, se le asocia una escena (Scene) que la representa. Para poder visualizarla dentro de la aplicación, se diseñó la Forma View_Form, como se muestra a continuación en la Figura 12. Figura 12 Ejemplo de la aplicación con dos imágenes cargadas 3.3.1 Opciones del menú File/Open: Muestra un diálogo que permite seleccionar las imágenes a abrir, las cuales se visualizan automáticamente. File/Save: Crea un fichero con extensión .tif, cuyos datos son rellenados con los Header, Bitmap y Footer correspondientes a la imagen activa. 38 Capítulo 3 Implementación File/Properties: Muestra las propiedades de la imagen activa. Para ello se diseñó la Forma Properties, ilustrada en la Figura 13. Figura 13 Ejemplo de la visualización de las propiedades de una imagen File/Exit: Cierra la aplicación. Options/Gap Fill: Muestra un diálogo en el cual se escogen las imágenes primaria y de relleno, de todas las que se encuentran abiertas (Figura 14). Para ello es necesario que existan al menos dos, de lo contrario, se mostrará un mensaje de error para alertar al usuario. Figura 14 Opción de rellenar los gaps Una vez seleccionadas las imágenes, se hace un llamado a la función Gap_Fill de la clase Image_Processor, y se visualiza la imagen rellenada, la cual será una copia de la primaria, pero su Bitmap será el retornado por esta función. En 39 Capítulo 3 Implementación la Figura 15 se muestra un ejemplo del resultado de rellenar un fragmento de la escena 15-45. Figura 15 Resultado de rellenar los gaps correspondientes a un fragmento de la escena 15-45 Para poder saber si aún existen gaps en esta imagen después de aplicar el algoritmo de relleno, se puede ver la frecuencia del valor 0 en la gráfica de las propiedades que representa el histograma correspondiente. 40 Capítulo 4 Resultados Capítulo 4 Resultados Los resultados obtenidos al utilizar el software desarrollado fueron efectivos y satisfacen las expectativas de los especialistas que lo han evaluado. Los píxeles con datos inválidos producto del SLC-off en las imágenes corregidas, fueron rellenados con valores que se ajustan a los de los datos válidos de la misma, y para ello fueron requeridas a lo sumo 5 imágenes. En la Figura 16 se puede observar una comparación de los resultados alcanzados al procesar imágenes de la escena 15-45 tomadas en Enero del 2009. Nótese cómo en (b) se eliminan los puntos negros pero se rellenan con valores que resaltan a la vista, dificultad que no está presente en (c). Figura 16 Comparación de resultados: a) imagen con gaps, b) resultado de corregir los datos con el ENVI, c) resultado obtenido con la aplicación desarrollada. Para evaluar la factibilidad del uso del software se realizaron pruebas con la aplicación para estudiar el tiempo de procesamiento. Estaba demostrado que el algoritmo funcionaba, pero no se sabía cuánto iba a tardar procesar las imágenes completas o si las computadoras de las cuales se dispone en Cuba serían capaces de soportarlo. Se hicieron pruebas con parejas de imágenes de diferentes bandas, se midió el tiempo de corrida y se calculó la velocidad de procesamiento en estas condiciones. Los resultados se muestran en la Tabla 3. La máquina tenía las siguientes caracteríasticas: Velocidad de reloj original: 2667 MHz; procesador Intel Celeron D 331 a 2666 MHz; caché L1: 16 KB; caché L2: 256 KB; Memoria RAM: 1 GB DDR SDRAM PC3200 (200 MHz) El tiempo de procesamiento de las imágenes osciló entre 5 y 12 minutos en dependencia del tamaño, lo que se considera aceptable si se tiene en cuenta el ahorro de tiempo, dinero y trabajo de especialistas. 41 Capítulo 4 Resultados Tabla 3 Estudio de la velocidad de procesamiento de las imágenes. BANDA TAMAÑO x2 (MB) TIEMPO MINUTOS RATIO T/T (MB/S) 3 64,22 7,45 0,14 5 64,22 6,1 0,18 4 64,22 5,29 0,20 3 64,22 7,55 0,14 4 64,22 5,3 0,20 1 101,50 10,35 0,16 2 101,50 11,2 0,15 3 101,50 11,28 0,15 4 101,50 11,05 0,15 5 101,50 11,2 0,15 7 101,50 11,15 0,15 Se estima el aporte económico tanto por la utilidad que brindan estas imágenes por su valor de uso en la obtención de resultados (normalmente puede ser muy superior a las de su costo directo), como por el gasto en que se incurriría para adquirirlas en el mercado internacional. Por ejemplo, en este momento están en su fase inicial tres proyectos de la Unidad Científico Técnica de GEOCUBA de Investigación y Consultoría, con un valor total de 1 millón de pesos y 5000 CUC, para la elaboración de los mapas de cobertura forestal y uso de suelos en el país a escalas 1:250.000 y 1:100.000, cuya realización sólo será posible utilizando las imágenes corregidas con la aplicación desarrollada. El trabajo se considera una novedad tecnológica en Cuba. 42 Conclusiones Conclusiones Al estudiar el problema expuesto en este trabajo, muchas incógnitas fueron planteadas ante la incertidumbre de si sería posible o no rellenar correctamente los datos inválidos de las imágenes del Landsat 7 producidos por el SLC-off y, suponiendo que la respuesta fuera positiva, si sería factible aplicarlo con el soporte tecnológico que existe en el país. Se implementó el proceso de macheo de histogramas del Phase II Gap-Fill Algorithm para corregir los valores radiométricos perdidos en las escenas del Landsat 7 SLC-off. Los resultados obtenidos se consideran cualitativamente superiores a los que tradicionalmente se alcanzaban en el país utilizando la aplicación ENVI. La inserción de la aplicación desarrollada en diferentes centros del país permitirá la mejora de los estudios cartográficos y del seguimiento de fenómenos medioambientales con un considerable ahorro de divisas. Hasta el momento la aplicación del paquete de softwares ha sido utilizada con éxito en la fase inicial de tres proyectos de la Unidad Científico Técnica de GEOCUBA y se espera que tenga más aplicaciones en el futuro inmediato. 43 Recomendaciones Recomendaciones En este proyecto, sólo ha sido abordado el problema de los gaps de las escenas del Landsat 7. Para dar continuidad al trabajo, se recomienda automatizar los procesos previos de preparación de las imágenes para que cumplan los requerimientos del algoritmo implementado: tener el mismo tamaño en cuanto a filas y columnas, corresponderse a la misma localización geográfica, y estar libres de nubes y sus sombras. 44 <Bibliografía Bibliografía 1. NASA’s Global Orthorectified Landsat Data Set. Tucker, C. J., Grant, D. M. and Dykstra, J. D. 3, Photogrammetric Engineering & Remote Sensing, Vol. 70, pp. 313-322. 2. USGS. [Online] http://landsat.usgs.gov/products_slc_off_data_information.php. 3. [Online] http://www.gsfc.nasa.gov/IAS/handbook/handbook_toc.html. 4. Formatos Gráficos. López Pérez, Benjamín. España : s.n., 2007, pp. 52-59. 5. [Online] http://www.remotesensing.org/geotiff/spec/geotiffhome.html. 6. Development of an enhanced gap-filling algorithm for Landsat 7 SLC-off data. Menke, Christian. Göttingen : s.n., Agosto 31, 2007. 7. M. Multi source image reconstruction: exploitation of EO-1/ALI in Landsat-7/ETM+ SLC-off gap filling. Darvishi B., A., Erasmi, S. and Kappas, M. San José : s.n., 2008. Proceeding of IS&SPIE's 20th AnnualSymposium, Electronic Imaging Science and technology. 8. Gaps-fill of SLC-off Landsat ETM+ satellite image using a geostatistical approach. Zhang, C., Li, W. and Travis, D. 22, 2007, International Journal of Remote Sensing , Vol. 28, pp. 51035122. 9. Evaluation of gap-filled landsat SLC-off imagery for wildland fire burn severity mapping. Howard, S.M. and Lacasse, J. 2004, Photogrammetric Engineering and Remote Sensing, Vol. 70, pp. 877-880. 10. A multi–scale segmentation approach to filling gaps in Landsat ETM+ SLC–off images. Maxwell, S.K., Schmidt, G.L. and Storey, J. C. 2007, International Journal of Remote Sensing, pp. 1109-1111 . 11. Duda, Ricard O. and Hard, Peter A. Pattern classification . Segunda. 12. Masek, J. G. [Online] 2007. http://gls.umd.edu/documents/MDGLS_gapfill.pdf. 13. Curlis, C., Hansen, D. and Simpson, B. [Online] 2005. http://gis.esri.com/library/userconf/proc07/papers/papers/pap_1854.pdf. 14. USGS. [Online] 2.0, Julio 10, 2004. http://landsat.usgs.gov/documents/L7SLCGapFilledMethod.pdf. 15. González, Rafael. Digital Image Processing. pp. 92-97. 16. Microsoft Inc. [Online] Microsoft Developer Network Library for Visual Studio 2005.. http://msdn.microsoft.com. 45 <Bibliografía 17. [Online] http://www.devjoker.com. 18. [Online] http://www.x-ways.net/winhex/index-e.html. 19. [Online] http://www.awaresystems.be/imaging/tiff/tifftags/private.html. 20. Lillessand, Thomas M. and Kiefer, Ralph W. Remote Sensing and Image Interpretation. s.l. : Jhon Wiley & Sons, Inc, 1987. 21. Salinero E., Chuvieco. Fundamentos de Teledetección Aeroespacial. Madrid : s.n., 1990. 22. Gyanesh, C. and Gregory L., S. Initial Data Characterization, Science Utility and Mission Capability Evaluation of Candidate Landsat Mission Data Gap Sensors. 2007. p. 226, Technical Report. Landsat Data Gap Study. 23. Storey, J., et al. [Online] 2005. Landsat 7 Scan Line Corrector-Off Gap-Filled Product Development, 12 pp. http://landsat.usgs.gov/documents/L7SLCGapFilledMethod.pdf. 24. USGS. [Online] http://landsat.usgs.gov/documents/burn_severity_mapping_slcoff_mckinley.pdf. 25. —. [Online] http://landsat.usgs.gov/data_products/slc_off_data_products/slc_off_background.php. 26. Scaramuzza, Pat. SLC gap-filled products: Phase one methodology. United States Geological Survey. 2004. Technical report. 5 pp. 27. Scientists from the USGS, NASA, and the Landsat 7 Science Team Compiled and summarized by the staff of the U.S. Geological Survey, EROS Data Center. [Online] 2003. Preliminary Assessment of the Value of Landsat 7 ETM+ Data following Scan Line Corrector Malfunction. 86 pp. http://landsat.usgs.gov/documents/SLC_off_Scientific_Usability.pdf. 46 Anexos Anexos Anexo 1 Descripción de las entradas contenidas en el IFD de las imágenes del Landsat 7 (19) Código FEh Nombre NewSubfileType Tipo LONG 100h 101h 102h ImageWidth ImageLenght BitsPerSample SHORT o LONG SHORT o LONG SHORT 103h Compression SHORT 106h PhotometricInterpretation SHORT 111h StripOffsets SHORT o LONG 112h Orientation SHORT 115h 116h SamplesPerPixel RowsPerStrip SHORT SHORT o LONG 117h 11Ah StripByteCounts XResolution SHORT o LONG RATIONAL 11Bh YResolution RATIONAL 11Ch PlanarConfiguration SHORT 830Eh ModelPixelScaleTag DOUBLE 8482h ModelTiepointTag DOUBLE 87AFh 87B1h GeoKeyDirectoryTag GeoAsciiParamsTag SHORT ASCII 15 ModelPixelScaleTag = (ScaleX, ScaleY, ScaleZ) 47 Descripción Se trata de una indicación general de tipo de dato contenido en la subimagen correspondiente al actual IFD Anchura de la imagen en píxeles Altura de la imagen en píxeles Define el número de bits por componente de color Indica el tipo de compresión utilizado en el fichero Define cómo deben ser interpretados los valores de color de la imagen Indica el offset de la franja del actual IFD. Este es el campo que permite encontrar los datos propiamente dichos de la imagen Indica la orientación de la imagen respecto a filas y columnas Es el número de componentes por píxel Indica la cantidad de filas almacenadas por franja Cantidad de bytes por franja Es el número de píxeles por unidad de resolución (campo ResolutionUnit) en la dirección X Es el número de píxeles por unidad de resolución en la dirección Y Indica cómo son almacenadas las componentes de cada píxel 15 Define la transformación entre la imagen raster y el modelo de coordenadas espaciales Almacena el punto de enlace para la georreferenciación Referencia al GeoKeyDirectory Se usa para almacenar todos los valores ASCII de las GeoKeys, referenciadas en el GeoKeyDirectoryTag Anexos Anexo 2 Otros preprocesamientos que se pueden realizar para obtener un resultado más efectivo. 48 Anexos Anexo 3 Diagrama de bloques del Proceso de Macheo de Histogramas 49