manejo de imagenes satelitales en Python

2014 Tratamiento Digital de Imagenes Facultad de Ingeniería Alumno: Toledo Matias DNI:31 925008 DI 2014 U. N. R. C Introducción – U. N. R. C. El siguiente trabajo se realizó como exámen prefinal de la cátedra de Tratamiento Digital de Imágenes. El objetivo del mismo es realizar en lenguaje Python un código que reciba una imágen satelital multiespectral desde un archivo de texto, separe las distintas bandas espectrales y permita realizar combinaciones de capas para armar imágenes RGB.

Además, deben mostrarse y almacenarse en formato de fotografía (. ong ó . iop). imagenes captadas por cada sensor son imágenes en escala de grises. En lo que respecta a la programación del script, el primer paso fue interiorizarme en como trabajaba este dispositivo de imagen ASTER, para saber cuantas bandas espectrales estaban representadas en el archivo de texto. A continuación un resumen de las características del mismo: ASTER Consiste de tres subsistemas ópticos separados, con alta resolución espectral y espacial.

Los radiómetros miden en el visible e infrarrojo cercano (VNIR), en el infrarrojo de onda corta (SWIR) y en el rango infrarrojo térmico (TIR). El subsistema VNIR realiza observaciones con un telescopio en posición nadir, en las orciones del verde (banda 1) y rojo (banda 2) del espectro visible y en el infrarrojo de onda corta (banda 3N), con una resolución espacial de 15m. Además tiene otro telescopio que realiza vistas hacia atrás (banda 38) lo que permite la visión estereoscópica en el sentido de la órbita y la generación de modelos digitales de elevaciones (MDE).

El subsistema SWIR tiene 6 bandas y el tamaño del píxel es de 30m. El subsistema TIR tiene 5 bandas en el rango térmico y 90m de resolución espacial. (ver anexo) Estructura del código El archivo principal prefinal. py simplemente se encarga de importar el módulo funciones. y y de interactuar con el usuario para que éste decida si quiere visualizar una 2 banda individual o si quier bandas para formar una desarrolladas para la realización del trabajo. En la primera parte del archivo se importan los distintos módulos y se importa el archivo «Imagen. xt» como un objeto, el cual luego es leído y dividido en las distintas capas. Cada TDI 2014 capa tiene un total de 864 «neas y el archivo tiene un total de 14 capas. Cabe aclarar que se trabajo solo con 8 porque parte del archivo estaba corrupto. A continuación daré una breve explicación de las funciones que fueron desarrolladas en el rabajo: Funcion eliband: Se encarga de pedir al usuario el numero de banda individual que desea visualizar. Retorna una variable en formato de string con el nombre de la banda que el usuano escogló.

Función bda2matriz(bda): Se encarga de formar la matriz correspondiente a cada banda espectral y convertirla a un formato numérico para que pueda ser representada posteriormente como una imagen. Recibe como argumento de entrada la banda que se desea convertir en matriz y retorna como argumento de salida una matriz numérica de 864 filas y 1380 columnas. Función bdaimagen(l): Se encarga de mostrar la imagen orrespondiente a determinada banda espectral. Recibe como argumento de entrada una matriz numérica. puncion RGB: se encarga d ario que ingrese en forma función lo requiere asi. Finalmente almacena esta matriz en un archivo con formato PNG que guarda en el mismo directorio que se encuentra el script principal ejecutado. Resultados del script Imagen correspondiente a la banda 1 Imagen RGB correspondiente a las bandas (5,3, 1) Mejoras a las imagenes resultantes: Imagen RGB correspondiente a las bandas (5,3, 1) con aumento brillo Para darle más brillo a la Imagen se sumo un valor a cada elemento de la matriz de forma e no superar el valor 255 que es el máximo.

De esta manera cada pixel tiene la misma cantidad de intensidad adicional y conserva el ancho del histograma, aunque lo desplaza hacia la derecha(hacia los blancos). Se observa que esto no aporta a la claridad de la imagen. Imagen RGB correspondie as (5,3, 1) con aumento de brillo V de repasaron y fijaron conceptos estudiados en la materia, pudiéndoselos aplicar en una actividad práctica que es de mucha utilidad en el campo del procesamiento de imagenes satelitales. Además me interioricé en un lenguaje de programación potente y muy utilizado en la actualidad como lo es Python.

Algunas propuestas de mejoras al trabajo realizado serían: optimizar el código, incorporar a las funciones realizadas las opciones de mejoras de la imagen como la de aumento de brillo y contraste,entre otras. También se podrían realizar estas mejoras independientemente en cada una de las componentes de las matrices tridimensionales RGB, asi como tambien elaborar histogramas para comparar las imaganes antes y despues del procesamiento. Anexos Archivo «prefinal. py» #! lusr/bin/python from funciones import * def main(): opcion=input («Ingrese 1 para una sola banda y 2 para combinacion RGB: if opcion and opcion ! : print ‘opcion no valida’ main() if opcion–l : 5 bda4=lneas[paso*3 +3:paso*4 +3] bda6=lineas[paso*5 +5:paso*6 +5] bda7=lineas[paso*6 +6] bda8=lneas[paso*7 +7:paso*8 +7] Q U E BAN DA MOSTRAR def eliband(): valor = input («Ingrese banda a visualizar(de 1 a 8): banda=O 1 , bda2,bda3, bda4,bda5, bda6, bda7 for i in 5): if print «coloque un valor entre 1 y 14» a=eliband() return a return banda EL ARCHIVO ORIGINAL Y LO CONVIERTE EN MATRIZ N LA BANDA def bda2matriz(bda): matbda=[] for i in bda: linfloat = [float(j) for j in i. split()] #convierte a num la matriz ya que al leer del archivo los elementos trine