RESUMEN. Apartado , Lima 13, Perú Teléfonos (+51-1) Fax (+51-1)

RADIO OBSERVATORIO DE JICAMARCA INSTITUTO GEOFÍSICO DEL PERÚ SOFTWARE DE PROCESAMIENTO DE IMÁGENES JULIA_EW_IMAGING MIGUEL URCO I&D+I MARZO 2011 RE

11 downloads 21 Views 1MB Size

Recommend Stories


BOQUILLAS TRICÓNICAS DE ALTA PRESIÓN PARA SOPLETES X531, X 511, X 21
BOQUILLAS TRICÓNICAS DE ALTA PRESIÓN PARA SOPLETES X531, X 511, X 21 BOQUILLAS DE CORTE ANM Para soplete X531, X511, X21 y aditamento de corte X 11 „0

Colegio de Enfermeras de Costa Rica Apartado Tel: , Fax:
Colegio de Enfermeras de Costa Rica Apartado 5085-1000. Tel: 2257-95-22, Fax: 2257-98-54 E-mail: [email protected] CABAÑAS CENTRO DE RECREACION _

Acaip. ACAIP. APARTADO DE CORREOS 7227, MADRID. Tlf.: Fax:
Acaip CUADERNOS PENITENCIARIOS 2009 ************************************* PRESTACIONES MUFACE A LOS FUNCIONARIOS Y SUS FAMILIARES ACAIP. APARTADO DE

Story Transcript

RADIO OBSERVATORIO DE JICAMARCA INSTITUTO GEOFÍSICO DEL PERÚ

SOFTWARE DE PROCESAMIENTO DE IMÁGENES JULIA_EW_IMAGING MIGUEL URCO I&D+I MARZO 2011

RESUMEN

Este manual detalla la instalación, configuración y ejecución del Software de Procesamiento de Imágenes así como los requerimientos básicos para su instalación y funcionamiento

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

2

ÍNDICE 1.DESCRIPCIÓN………………………………………………………………….. 2.INSTALACIÓN…………………………………………………………………… a.Requerimientos:…………………………………………………………………… b.Procedimiento………………………………………………………………………

3 5 5 5

3. PROCESANDO IMÁGENES………………………………………………… a.procImaging:…………………………………………………………………… i.Diagrama funcional…………………………………………………… ii.Como ejecutar el script procImaging: Parámetros de entrada…… iii.Formato del archivo generado……………………………………… b.getImaging:……………………………………………………………………… i. Diagrama funcional…………………………………………………… ii. Como ejecutar el script getImaging: Parámetros de entrada…… iii.Estructura de directorios y archivos generados…………………… c.batchImaging……………………………………………………………………

4 7 8 9 11 10 13 14 17 15

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

3

SOFTWARE DE PROCESAMIENTO DE IMÁGENES JULIA_EW_IMAGING

DESCRIPCIÓN Este manual detalla la instalación, configuración y ejecución del Software de Procesamiento de Imágenes así como los requerimientos básicos para su instalación y funcionamiento. El software consta básicamente de dos scripts, uno desarrollado en C++ y el otro en Python. La descripción detallada de cada uno de ellos se verá más adelante, aquí explicaremos en líneas generales que hace cada uno. Para iniciar un experimento solo basta con configurar y ejecutar el “batchImaging”.

procImaging: Este script, desarrollado en C++, procesa todos los *.pdata proveniente del modo JULIA_EW_IMAGING, comúnmente estos ficheros contienen información espectral de ocho canales con una resolución de ocho puntos de FFT. Luego de procesar la información, este programa genera archivos intermedios, *.hdf5, con información espacial proveniente de la F dispersa y su velocidad vertical. getImaging: Este script toma la información contenida en los ficheros *.hdf5, que genera el script procImaging, y luego de filtrarlos y acondicionarlos genera la imagen espacial de la F dispersa. Al final del procedimiento esto genera un movie con todas las imágenes obtenidas. batchImaging: Este batch sirve de nexo entre los dos primeros scripts. Esto nos ayuda a facilitar la configuración del experimento. Simplemente se configura el batch con los parámetros deseados y este batch se encargará de ejecutar los scripts procImaging y getImaging con los parámetros requeridos.

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

4

Figura 1: Imagen de alta resolución de la F dispersa generada con el Imaging Software

1. INSTALACION Antes de proceder con la instalación deberemos asegurarnos que las siguientes librerías están instaladas en nuestro sistema para garantizar el buen funcionamiento del software. Está instalación se ha probado en la plataforma Fedora 14. a. Requerimientos del software gcc y gcc-c++ -

gcc-gfortran [o gfortran]

-

scipy y numpy

-

plplot y plplot-devel

-

hdf5 y hdf5-devel

-

h5py

-

blas, lapack y minpack (opcional)

-

mencoder Para instalar estos paquetes en Linux ejecutar la sentencia: $ [sudo] yum –y install g++ g++-devel plplot plplot-devel hdf5 hdf5-devel $ [sudo] easy_install h5py

b. Procedimiento para la instalación - Descomprimir el archivo Imaging_V1.0.1.tar.gz: $ tar -xzvf Imaging_V1.0.1.tar.gz Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

5

-

Ingresar a la carpeta Imaging_V1.0.1: $ cd Imaging_V1.0.1 Esta carpeta contiene tres directorios: config-files, docs y source. En el directorio config-files se encuentran almacenados los archivos de calibración, si es necesario agregar nuevos archivos de configuración en este directorio. En el directorio docs se encuentra la documentación referente a este programa. Y en el directorio source se encuentra el código fuente de los programas incluidos en este software, imagc e imagpy.

-

Si tenemos las librerías blas, lapack y minpack instaladas indicarlas en el archivo source/imagc/Makefile en la variable INCDIR $ gedit source/imagc/Makefile INCDIR += new_directory

-

Verificar que se tiene instalado el h5c++ instalado antes de ejecutar la siguiente sentencia. Si es necesario modificar el compilador (ej. a h5c++-64) abriendo el archivo source/imagc/Makefile. H5CXX := h5c++-64

-

Ejecutar ./install para empezar la instalación $ ./install

-

Si la instalación fue satisfactoria dentro de la carpeta Imaging_V1.0.1 se copiará el archivo batchImaging

-

Luego solo necesitaremos abrir el archivo batchImaging con cualquier editor de texto y colocar los parámetros deseados para luego ejecutarlo.

2. PROCESANDO IMÁGENES Para realizar el procesamiento y la generación de imágenes es necesario ejecutar dos scripts procImaging y getImaging desarrollados en C++ y Python respectivamente. Cabe resaltar que se recomienda hacer el procesamiento mediante la configuración y ejecución de “batchImaging” que se encarga de ejecutar los scripts procImaging y getImaging con los parámetros requeridos. Para editar el batch abrirlo con cualquier editor de texto y modificar los parámetros necesarios:

dpath = /directorio/donde/se/encuentran/mi/pdata/ Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

6

ppath = /directorio/donde/se/guardaran/los/datos/procesados/ mode = 2

#0-> solo espectro, 1-> solo RTI, 2 -> espectro y RTI

hei = [0,1000]

# Rango de Alturas a procesar

etc. Y ejecutarlo de la siguiente manera: $ ./batchImaging

ó

$ python batchImaging

El primer script que ejecuta es procImaging que procesa todos los datos, seguido del script getImaging que genera las imágenes. a. procImaging: Este programa procesa la información de cada canal (ocho canales para el caso de JULIA_IMAGING) contenida en los archivos pdata para obtener la función de brillo. Ver Figura 7. El procesamiento a alta resolución requiere alto nivel de cálculo computacional, es por ello que internamente el software utiliza el máximo número de procesadores disponibles en el computador (procesamiento en paralelo). Antes de procesar la data de cada canal es necesario calibrarlos; para ello se utilizan archivos de calibración, comúnmente localizados en la carpeta “./config-files”, de acuerdo a cada experimento. Si no se le indica nada al software éste utilizará el más cercano a la fecha a procesar. Este script genera archivos de tipo hdf5 , mostrado en la Figura 4. El archivo hdf5 contiene la Transformada de Fourier espacial, obtenida a partir de la función de correlación espacial del patrón de difracción para diferentes “lags” espaciales. Esto es luego acondicionado por el script getImaging para generar las imágenes y movies. ProcImaging, está basado en la técnica de Inversión desarrollada por Hysell, 1996 y Woodman, 1997 incluyendo los últimos refinamientos incluidos por Hysell y Chau, 2006. Esta técnica de inversión estima la función de brillo.

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

7

i.

Diagrama funcional

1. El primer paso es obtener los parámetros de procesamiento, para ello utilizamos la función “getArguments” 2. Luego se ingresa a un bucle donde se procesarán todos los datos desde “startTime” hasta “endTime”. 3. Para cada día seleccionado leemos el archivo de configuración más adecuado, el más cercano. También se procede a leer el header del primer archivo pdata presente en el directorio de trabajo. Si los parámetros de configuración y los leídos no concuerdan se continua con el siguiente día. 4. Si no, se procede a escribir el nuevo header con los parámetros de procesamiento seleccionados. 5. Ingresamos a un bucle que se ejecuta hasta terminar de leer y procesar todos los datos presentes para este día. 6. Se procede a leer los bloques siguientes e integrarlos, de acuerdo al número de integraciones incoherentes especificado. 7. Si no hay mas data salir del bucle 8. Si hay data estimar el ruido y su fase, para luego calibrar la fase de todos los canales. 9. Una vez calibrada la fase se procede a estimar la función de brillantez (Transformada espacial). Internamente este proceso hace uso de los procesadores especificados en getArguments. 10. Se filtra y guarda la data en formato HDF5, ver Figura 4 11. Se imprime un mensaje en pantalla, continúa si hay más días a procesar Figura 2: Diagrama de funcionamiento del script procImaging

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

8

ii.

Cómo ejecutar el script procImaging: Parámetros de entrada Ejecutar: [user@...]$ ./procImaging --dpath=[dpath] --ppath=[ppath] --startYear=[startYear] --startDoy=[startDoy] --startHour= --startMin= --set= --endYear= --endDoy= --endHour= --endMin= --navg= --nbavg= --dc-mode= --factor-avg= --config-path= --configfile= --nthreads= --online --plotting Argumentos requeridos: --dpath: Directorio de datos, directorio donde los pdata están almacenados --ppath: Directorio de procesamiento, directorio donde los archivos procesados hdf5 serán guardados. --startYear, startDoy : Día a procesar, si endYear y endDoy no son definidos solo se procesará el día indicado por startYear y startDoy. De lo contrario se procesará el rango entre [startYear, startDoy: endYear, endDoy] Argumentos opcionales: --endYear, endDoy : Ultimo día a procesar. Use este argumento para procesar un rango de días deseado. --startHour,startMin defecto es [00,00]

: Tiempo inicial de los datos a procesar. Por

--endHour, endMin : es [24,00]

Tiempo final de los datos a procesar. Por defecto

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

9

--set : set inicial a procesar. Setear “set=2” para iniciar con el primer archivo presente para la día seleccionada, o “set=-1” para empezar con el ultimo archivo. --config-file : Archivo de configuración usado para la calibración de fase. Por defecto es 'auto', en este modo el programa busca el archivo de configuración mas cercano al día seleccionado si no encuentra ninguno esto es seteado a 'configure.txt'. El formato del archivo de configuración es: configYYYYDDD.txt Donde YYYY = año and DDD = día del año. --config-path : Los archivos de configuración deberían estar localizados en este directorio. Por defecto es './config-files' --navg: Numero de integraciones incoherentes. Por defecto es 1 --nbavg: Numero de integraciones de beams. Por defecto es 1 --dc-mode: Remoción de DC. Seleccione "0" para deshabilitarlo y "1" para remover el DC con el método de interpolación simple. Por defecto es 0 (disabled) --factor-avg: Factor de integración. Normaliza el nivel de integración real de la data, utilizado en la estimación de ruido. Por defecto es 1 --online: Seleccionar esta opción para procesos en línea. Esta opción sobrescribe el parámetro “set=-1”. Por defecto esta deshabilitado. --nthreads: Numero de threads a usar, desde [0-nCPUs]. Por defecto es igual al número total de procesadores presentes en el computador (nCPUs)

Ejemplo: Si el primer archivo es /data/d2010040/IMAGING/P2010040225.pdata >>procImaging --dpath=/data --ppath=/procdata/BINFILES --startYear=2010 -startDoy=40 --set=225(or set=-2) --navg=2 --nthreads=2 Esto generará una serie de archivos hdf5 en la carpeta /procdata/BINFILES que pueden ser utilizados por el script getImaging para generarlas imágenes y movies.

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

10

Figura 3: Ventana de ejecución del script procImaging. En la parte izquierda se detalla información del archivo pdata abierto y en la parte derecha del estado de procesamiento.

iii.

Formato del archivo generado Si ppath=/media/Data/PROCDATA/BIN_FILES/ tendremos un directorio similar al de la Figura 8, donde estarán almacenados los archivos hdf5. La data es almacenada en el formato hdf5 como un arreglo de dos dimensiones, “image”. Donde las filas están conformadas por el número de perfiles (o número de puntos de fft) y por el número de alturas (o samples). Y las columnas están conformadas por los lags espaciales en la dirección Y y X. Normalmente Y = 1.

rows = nFFTs * nHeis columns = ny * nx

Para disminuir el tamaño del archivo salvado se eliminan todas las filas que no tienen información y se graban dos set adicionales “original_size_array” y “real_row_index”, que indican el tamaño real del arreglo y el índice de las filas salvadas. Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

11

Figura 4: Vista en h5View del archivo generado por el script procImaging

Solo son registradas las filas que tienen información válida. Para poder leerlo e interpretarlo es necesario saber cuál fue la dimensión real de la matriz y que filas son las que se han almacenado; por ello la razón de los dos sets adicionales, “original_size_array” y “real_row_index”. Con esta información se puede rearmar el array de la siguiente manera. real_image = array(original_nrows, original_ncolumns) image = read(/data/image) real_image [real_row_index,:] = Image b. getImaging: Este script fue desarrollado en python y se encarga de leer e interpretar la data contenida en los archivos hdf5, generados por procImaging, para generar las imágenes RGB respectivas. La data leída es filtrada y acondicionada para obtener una secuencia de imágenes RGB que luego son utilizadas para crear un movie. Cada imagen es obtenida asignando un color distinto para cada velocidad Doppler. Para velocidades negativas se le asigna el color rojo (red), para velocidad neutra el color verde (green) y para velocidades positivas el color azul (blue); el color final de cada pixel se obtiene de la composición de estos componentes RGB. Ver Figura 7 Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

12

i.

Diagrama funcional 1. Obtener los parámetros de configuración, para ello utilizamos la función “getArguments” 2. Crear la estructura de directorios necesaria para almacenar, imágenes, movies y RTIs. 3. Inicializar objetos. 4. Si trabaja en modo offline y se desea graficar todo el RTI primero lo leemos y lo guardamos en la variable rti. 5. Si no trabaja en modo offline inicializar un array (rti) vacio o nulo. 6. Ingresar al bucle de generación de imágenes dentro del rango seleccionado [startTime, endTime] 7. Leer la data proveniente del archivo HDF5. 8. Acondicionar la imagen filtrándola y asignándole un color por cada velocidad doppler (RGB) y devolverlo en la variable “image” 9. Si no existe un “rti” predefinido agregar las imágenes que se van creando a la variable “rti” 10. Graficar la Imagen, RTI o los dos según la selección hecha. 11. Si ya no hay más datos para el rango de tiempo seleccionado terminar el bucle. 12. Salvar el RTI en un archivo HDF5 y generar el movie del rango de tiempo seleccionado. Figura 5: Diagrama de bloques del script getImaging

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

13

ii.

Como ejecutar el script getImaging: Parámetros de entrada Ejecutar: [user@...]$ python getImaging.py --dpath=[data path] --ppath=[processed path] --startYear=[startYear] --startDoy=[startDoy] --endYear= --endDoy= --startHour= -startMin= --endHour= --endMin= --mindB= --maxdB= --minHei= --maxHei= --mode= --show= --save= --filter= --online= --quality= Argumentos requeridos: --dpath: Directorio de datos donde los archivos hdf5 generados por el script procImaging están almacenados. --ppath: Directorio de datos procesados, donde las imágenes, rtis y movies generados por el script serán almacenados. --startYear, startDoy: Fecha a procesar. Si endYear y endDoy no son definidos se procesará el rango entre [startYear, startDoy; endYear, endDoy], de lo contrario solo se procesará el día indicado por startYear y startDoy. Argumentos opcionales:

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

14

--endYear, endDoy: Último día a procesar. Use este argumento para procesar un rango de días deseado. --startHour, startMin: Tiempo inicial de los datos a procesar. Por defecto es [18,00] --endHour, endMin: Tiempo final de los datos a procesar. Por defecto es [31,00] --mindB, maxdB: Rango mínimo y máximo del valor de drift(en dBs) a plotear. --minHei, maxHei: Rango mínimo y máximo de la altura a plotear. --mode: Modo de visualización de la imagen. 0: Muestra solo la imagen interferométrica instantánea, 1: Muestra solo el RTI y 2: Muestra ambos --show: Seleccionar a 1 si se desea mostrar las imágenes generadas sobre la pantalla. Por defecto es 1 --save: Seleccionar a 1 si se desea guardar las imágenes generadas. Por defecto es 1 --filter: Seleccionar a 1 si se desea filtrar la imagen. Por defecto es 0 --online: Seleccionar a 1 para procesar en línea. Por defecto es 0. --quality: Se elegir entre tres modos. "low", "medium" y "high". Por defecto esta seteado a “medium”

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

15

Figura 6: Ventanas abiertas por el programa getImaging. Venta de información y ventana del gráfico.

Figura 7: Imagen interferométrica de Jicamarca

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

16

iii.

Estructura de directorios y archivos generados

El script getImaging luego de leer y filtrar la data genera tres tipos de datos, asumiendo que el dpath=/media/Data/PROCDATA/BIN_FILES y el ppath=/media/Data/PROCDATA/ tenemos: Imágenes dentro del directorio PNG_FILES, de la forma imgDDD_HHMM.png Movies dentro del directorio MOVIES, de la forma movieYYYYDDD.avi RTIs en formato hdf5 dentro del directorio RTI_FILES, de la forma rtiYYYYDDD.h5. Donde, YYYY = año y DDD = día del año

Figura 8: Estructura de directorio generado por el script getImaging

c. batchImaging

Este batch debería ser utilizado para procesar los datos del experimento JULIAEW-Imaging en modo offline u online. Con los parámetros de configuración definidos este batch ejecuta los scripts procImaging y getImaging en el orden adecuado para generar las imágenes correspondientes a la fecha seleccionada. Los parámetros de configuración necesarios son: dpath: Directorio de datos donde se encuentran almacenados los archivos pdata. Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

17

ppath: Directorio de datos procesados, donde los archivos hdf5, imágenes, rtis y movies generados por el programa serán almacenados. Ver Figura 8 para ppath=/media/Data/PROCDATA year: Año o años a procesar. Si se desea procesar un rango definir year = [starYear, endYear], de lo contrario year = [year] doy: Día o días a procesar. Si se desea procesar un rango definir doy = [startDoy, endDoy], de lo contrario doy = [doy] hour: Rango de horas a procesar. Por defecto es [18,31] hei: Rango de alturas a graficar. Si no es especificado las alturas son obtenidas a partir de la data leida. mode: Modo de visualización de la imagen. 0: Muestra solo la imagen interferométrica instantánea, 1: Muestra solo el RTI y 2: Muestra ambos show: Setear a 1 si se desea mostrar las imágenes generadas sobre la pantalla. Por defecto es 1 Ejemplo: #batchImaging.py dpath = /home/user/mydata ppath = /home/user/myprocdata year = [2010] doy = [100, 361] hour = [18, 31] hei = [200, 750] mode = 2 show = 1 ….. Al ejecutar: $ ./batchImaging Obtenemos la siguiente clase de videos: Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

18

Figura 9: Movie generado al procesar los datos de JULIA-EW-IMAGING

Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 - Fax (+51-1)317-2312

19

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.