t
#%!'
ºººººººººººººººº
Tratamiento Tratamiento Digital de Imágenes Facultad de Ingeniería – U.N.R.C.
Alumno: Toledo T oledo Matias
DNI:!"#$%%&
TDI #%!'
Facultad de Ingeniería U.N.R.C
Introducción El siguiente trabajo se realizó como exámen preinal de la cátedra de !ratamiento "igital de Imágenes. El objeti#o del mismo es realizar en lenguaje $%t&on un código 'ue reciba una imágen satelital multiespectral desde un arc&i#o de texto( separe las distintas bandas espectrales % permita realizar combinaciones de capas para armar imágenes R)*. +demás( deben mostrarse % almacenarse en ormato de otograía ,.png ó .jpg-. a imagen satelital multiespectral pro#iene del sat/lite !erra( el cual tiene a bordo un instrumento de imagen de alta complejidad llamado +ster. Este dispositi#o contiene distintos sensores( los cuales son los encargados de captar energía en distintas zonas del espectro electromagn/tico,bandas-.
TDI #%!'
Facultad de Ingeniería U.N.R.C
Desarrollo $ara comenzar &a% 'ue decir 'ue en la actualidad las imágenes satelitales son cada #ez más utilizadas % re'ueridas por dierentes areas de la ciencia 'ue se muestran interesadas en apro#ec&ar esta #aliosísima inormación. Cada sensor es responsable de una banda. Esto signiica 'ue cada sensor capta energía relejada de distintas porciones del espetro eletromagn/tico. Cada capa o banda aporta distinto tipo de inormación( 'ue combinadas en una imagen R)* pueden utilizarse para darle also color a la imagen satelital( permitiendo al usuario apreciar distintos detalles. Cabe aclarar 'ue las imagenes captadas por cada sensor son imágenes en escala de grises. En lo 'ue respecta a la programación del script( el primer paso ue interiorizarme en como trabajaba este dispositi#o de imagen +0!ER( para saber cuantas bandas espectrales estaban representadas en el arc&i#o de texto. + continuación un resumen de las características del mismo1 ASTER
Consiste de tres subsistemas ópticos separados( con alta resolución espectral % espacial.os radiómetros miden en el #isible e inrarrojo cercano ,2NIR-( en el inrarrojo de onda corta ,03IR- % en el rango inrarrojo t/rmico ,!IR-. El subsistema 2NIR realiza obser#aciones con un telescopio en posición nadir( en las porciones del #erde ,banda 4- % rojo ,banda 5- del espectro #isible % en el inrarrojo de onda corta ,banda 6N-( con una resolución espacial de 47m. +demás tiene otro telescopio 'ue realiza #istas &acia atrás ,banda 6*- lo 'ue permite la #isión estereoscópica en el sentido de la órbita % la generación de modelos digitales de ele#aciones ,8"E-. El subsistema 03IR tiene 9 bandas % el tama:o del píxel es de 6;m. El subsistema !IR tiene 7 bandas en el rango t/rmico % <;m de resolución espacial.,#er anexo-
Estructura del código
El arc&i#o principal preinal.p% simplemente se encarga de importar el módulo unciones.p% % de interactuar con el usuario para 'ue /ste decida si 'uiere #isualizar una banda indi#idual o si 'uiere combinar 6 bandas para ormar una imagen R)* 'ue será almacenada como un arc&i#o $N). El arc&i#o unciones.p% importa todos los módulos necesarios % contiene las unciones desarrolladas para la realización del trabajo. En la primera parte del arc&i#o se importan los distintos módulos % se importa el arc&i#o =Imagen.txt> como un objeto( el cual luego es leído % di#idido en las distintas capas. Cada
TDI #%!'
Facultad de Ingeniería U.N.R.C
capa tiene un total de ?9@ líneas % el arc&i#o tiene un total de 4@ capas. Cabe aclarar 'ue se trabajo solo con ? por'ue parte del arc&i#o estaba corrupto. + continuación dar/ una bre#e explicación de las unciones 'ue ueron desarrolladas en el trabajo1 Funcion eliband: 0e encarga de pedir al usuario el numero de banda indi#idual 'ue desea #isualizar. Retorna una #ariable en ormato de string con el nombre de la banda 'ue el usuario escogió. Función bda2matriz(bda): 0e encarga de ormar la matriz correspondiente a cada banda espectral % con#ertirla a un ormato num/rico para 'ue pueda ser representada posteriormente como una imagen. Recibe como argumento de entrada la banda 'ue se desea con#ertir en matriz % retorna como argumento de salida una matriz num/rica de ?9@ ilas % 46?; columnas. Función bdaimagen(I): 0e encarga de mostrar la imagen correspondiente a determinada banda espectral. Recibe como argumento de entrada una matriz num/rica. Funcion RG: 0e encarga de pedir al usuario 'ue ingrese en orma de tupla los nAmeros ordenados de las 6 bandas 'ue desea combinar para ormar una imagen R)*. Forma una matriz tridimensional con las 6 bandas 'ue el usuario escoge % con#ierte todos sus #alores en enteros de ? bits,uint?-( %a 'ue el m/todo importado romarra% 'ue utiliza esta unción lo re'uiere asi. Finalmente almacena esta matriz en un arc&i#o con ormato $N) 'ue guarda en el mismo directorio 'ue se encuentra el script principal ejecutado.
TDI #%!'
Facultad de Ingeniería U.N.R.C
Resultados del scri!t Imagen corres!ondiente a la banda "
Imagen RG corres!ondiente a las bandas (#$%$")
TDI #%!'
Facultad de Ingeniería U.N.R.C
&e'oras a las imagenes resultantes: Imagen RG corres!ondiente a las bandas (#$%$") con aumento brillo
$ara darle más brillo a la imagen se sumo un #alor a cada elemento de la matriz de orma de no superar el #alor 577 'ue es el máximo. "e esta manera cada pixel tiene la misma cantidad de intensidad adicional % conser#a el anc&o del &istograma( aun'ue lo desplaza &acia la derec&a,&acia los blancos-. 0e obser#a 'ue esto no aporta a la claridad de la imagen.
Imagen RG corres!ondiente a las bandas (#$%$") con aumento de brillo de contraste:
En este caso se procedió a multiplicar cada elemento de la matriz por una constante,en este caso 5- de orma de no saturar la imagen. 0e obser#a 'ue debido a 'ue la intensidad de los pixeles tambien aumenta( lo &ace tambi/n el brillo. $ero la ma%or claridad resultante en la imagen se debe al aumento del contraste. a multiplicación &ace 'ue el &istograma además de desplazarse &acia la derec&a aumenta en anc&ura. Esto signiica 'ue &a% más dierencia a&ora entre los pixeles con menor intensidad % los de ma%or intensidad.
TDI #%!'
Facultad de Ingeniería U.N.R.C
TDI #%!'
Facultad de Ingeniería U.N.R.C
onclusión Con la realización del trabajo se repasaron % ijaron conceptos estudiados en la materia( pudi/ndoselos aplicar en una acti#idad práctica 'ue es de muc&a utilidad en el campo del procesamiento de imagenes satelitales. +demás me interioric/ en un lenguaje de programación potente % mu% utilizado en la actualidad como lo es $%t&on. +lgunas propuestas de mejoras al trabajo realizado serían1 optimizar el código( incorporar a las unciones realizadas las opciones de mejoras de la imagen como la de aumento de brillo % contraste(entre otras.!ambi/n se podrían realizar estas mejoras independientemente en cada una de las componentes de las matrices tridimensionales R)*( asi como tambien elaborar &istogramas para comparar las imaganes antes % despues del procesamiento.
TDI #%!'
Facultad de Ingeniería U.N.R.C
Ane*os Arc+i,o -!re.inal/!0
#! /usr/bin/python from funciones import *
def main(): opcion=input ("Ingrese 1 para una sola banda y para combinacion : ") if opcion !=1 and opcion !=: print $opcion no %alida$ main() if opcion==1: bdaimagen(bdamatri&(eliband())) if opcion==: ()
if ''name'' == "''main''": main()
Arc+i,o -.unciones/!0
#! /usr/bin/python from I import Image import pylab as plt import numpy as np import sys f=open($Imagent+t$,$r$)
TDI #%!'
Facultad de Ingeniería U.N.R.C
#####################ectura del archi%o######################## archi%o=fread()# lee el archi%o completo fclose() lineas=archi%osplit($-n$)#obtengo una lista con las lineas del archi%o paso=.0 bda1=lineas2:paso3 bda=lineaspaso41:paso* 413 bda5=lineaspaso* 4:paso*5 43 bda0=lineaspaso*5 45:paso*0 453 bda6=lineaspaso*0 40:paso*6 403 bda=lineaspaso*6 46:paso* 463 bda7=lineaspaso* 4:paso*7 43 bda.=lineaspaso*7 47:paso*. 473
##############899I;< >?9 <@ A;8B########################## def eliband(): %alor = input ("Ingrese banda a %isuali&ar(de 1 a .): ") banda=3 bandas=bda1,bda,bda5,bda0,bda6,bda,bda7,bda.3# for i in range(1,16): if %alor==i: banda=bandasiC13
TDI #%!'
Facultad de Ingeniería U.N.R.C
if banda==3: print "coloDue un %alor entre 1 y 10" a=eliband() return a return banda
###############9;B 9 EIF; ;II< G ; ;
##############A?98B IA9< ;98;<@I9
TDI #%!'
Facultad de Ingeniería U.N.R.C
###########;AI< 5 8 A IA9< G ?@ 9< K;AB; <############################## def (): %alor = input ("Ingrese 5 bandas para armar imagen , e:(1,,5): ") bandas=bda1,bda,bda5,bda0,bda6,bda,bda7,bda.3 rgbrray = npempty((.0,15.2,5), $uint.$) rgbrray, 23 = bdamatri&(bandas%alor23C13) rgbrray, 13 = bdamatri&(bandas%alor13C13) rgbrray, 3 = bdamatri&(bandas%alor3C13) img = Imagefromarray(rgbrray) imgsa%e($png$) aracter1sticas de ASTER