UNIVERSIDAD DE EXTREMADURA

Tamaño: px
Comenzar la demostración a partir de la página:

Download "UNIVERSIDAD DE EXTREMADURA"

Transcripción

1 UNIVERSIDAD DE EXTREMADURA Escuela Politécnica Ingeniería Informática Proyecto Fin de Carrera Compresión de imágenes hiperespectrales en tarjetas gráficas programables (GPUs) Enrique de la Fuente Milanés Diciembre, 2012

2 Proyecto fin de carrera -2- Enrique de la Fuente Milanés

3 Índice 1. Motivaciones y Objetivos Motivaciones Objetivos Introducción Concepto de imagen hiperespectral Sensores hiperespectrales considerados Técnicas de análisis hiperespectral y necesidad de paralelismo Compresión de imágenes hiperespectrales Tarjetas gráficas programables (GPUs) Las GPUs como un dispositivo de computación de datos en paralelo CUDA: Una Nueva Arquitectura para el Cálculo en la GPU Procesamiento Implementación hardware y modelo de ejecución Método utilizado Iterative Error Analysis (IEA) Adaptación del algoritmo IEA para la compresión de imágenes hiperespectrales Descompresión de imágenes Implementación del algoritmo en GPU con CUDA Resultados Presentación de las imágenes utilizadas Algoritmo en la CPU Algoritmo en la GPU Análisis cualitativo de resultados Conclusiones y líneas futuras Bibliografía Proyecto fin de carrera -3- Enrique de la Fuente Milanés

4 Índice de Figuras Figura 2.1 Concepto de imagen hiperespectral Figura 2.2 Adquisición de una imagen hiperespectral por el sensor AVIRIS Figura 2.3 Tipos de píxeles en imágenes hiperespectrales Figura 2.4 Evolución de la relación SNR del sensor AVIRIS de NASA Figura 2.5 Interpretación gráfica del modelo lineal de mezcla Figura 3.1 Operaciones en coma flotante por segundo para CPU y GPU Figura 3.2 La GPU proporciona más transistores para el procesamiento de datos Figura 3.3 Pila software de CUDA Figura 3.4 Operaciones de con la GPU en memoria compartida Figura 3.5 Ejemplo de flujo de procesamiento en CUDA Figura 3.6 Ejemplo de grid de bloques Figura 3.7 Arquitectura de la GPU Tesla C1060 de NVidia Figura 3.8 Arquitectura del procesamiento de la GPU Tesla C1060 de NVidia Figura 4.1 Cálculo del píxel medio como vector de inicialización Figura 4.2 Proceso de cálculo del endmember inicial Figura 4.3 Proceso de cálculo del endmember Ek Figura 4.4 Proceso de finalización del algoritmo Figura 4.5 Tamaño de la imagen comprimida según el nº de endmembers Figura 4.6 Proceso de reconstrucción Figura 4.7 Proceso de cálculo del píxel medio en la GPU Figura 4.8 Proceso de desmezclado de la imagen en la iteración k en la GPU Figura 4.9 Proceso de búsqueda el píxel con mayor error en la GPU Figura 4.10 Proceso de desmezclado final en la GPU Figura 4.11 Proceso de descompresión de la imagen en la GPU Figura 5.1 Imagen sintética Figura 5.2 Mapas de la imagen sintetica Figura 5.3 Imagen real Figura 5.4 Ubicación de la imagen real AVIRIS Cuprite sobre una fotografía aérea de la región minera Cuprite, Nevada, Estados Unidos Figura 5.5 Tiempos de compresión en CPU Figura 5.6 Tiempos de descompresión en CPU Figura 5.7 Tiempos de compresión en GPU Figura 5.8 Tiempos de descompresión en GPU Figura 5.9 Tiempos de descompresión en GPU Figura 5.10 Proceso de análisis de precisión ponderada Figura 5.11 Imágenes de error de las imágenes comprimidas con entre 5 y 20 endmembers Proyecto fin de carrera -4- Enrique de la Fuente Milanés

5 Figura 5.12 Imágenes de error de las imágenes comprimidas con entre 25 y 45 endmembers Figura 5.13 Imagen de error de Sintética con 5 endmembers Figura 5.14 Localización de materiales puros Figura 5.15 Gráficas comparativas de la firma espectral de alunite entre 5 y 30 endmembers Figura 5.16 Gráficas comparativas de la firma espectral de alunite entre 35 y 50 endmembers Figura 5.17 Gráficas comparativas de la firma espectral de buddingtonite entre 5 y 30 endmembers Figura 5.18 Gráficas comparativas de la firma espectral de buddingtonite entre 35 y 50 endmembers Figura 5.19 Gráficas comparativas de la firma espectral de calcite entre 5 y 30 endmembers Figura 5.20 Gráficas comparativas de la firma espectral de calcite entre 35 y 50 endmembers Figura 5.21 Gráficas comparativas de la firma espectral de kaolinite entre 5 y 30 endmembers Figura 5.22 Gráficas comparativas de la firma espectral de alunite entre 35 y 50 endmembers Figura 5.23 Gráficas comparativas de la firma espectral de muscovite entre 5 y 30 endmembers Figura 5.24 Gráficas comparativas de la firma espectral de muscovite entre 35 y 50 endmembers Figura 5.25 Gráficas comparativas de la firma espectral de homogéneo entre 5 y 30 endmembers Figura 5.26 Gráficas comparativas de la firma espectral de muscovite entre 35 y 50 endmembers Figura 5.27 Gráficas comparativas de la firma espectral de raro entre 5 y 30 endmembers Figura 5.28 Gráficas comparativas de la firma espectral de raro entre 5 y 30 endmembers Figura 5.29 Gráficas comparativas de la firma espectral de mezcla entre 5 y 30 endmembers Figura 5.30 Gráficas comparativas de la firma espectral de mezcla entre 35 y 50 endmembers Índice de Tablas Tabla 3.1 Características técnicas de la GPU Tesla C1060 de Nvidia Tabla 5.1 Coordenadas de materiales puros Proyecto fin de carrera -5- Enrique de la Fuente Milanés

6 Proyecto fin de carrera -6- Enrique de la Fuente Milanés

7 1. Motivaciones y Objetivos 1.1. Motivaciones El presente trabajo se ha desarrollado dentro de las líneas de investigación actuales del Grupo HYPERCOMP de la Universidad de Extremadura, y consiste en la realización de un estudio sobre el algoritmo Iterative Error Analysis (IEA) para realizar su adaptación a la compresión y descompresión de imágenes hiperespectrales haciendo uso de GPUs para acelerar los cómputos relativos a la extracción de endmembers que realiza dicho algoritmo. Conviene destacar que los algoritmos de análisis hiperespectral generalmente necesitan grandes cantidades de tiempo a la hora de proporcionar resultados, debido a la complejidad computacional de los mismos y también debido al gran tamaño de las imágenes a procesar, lo cual requiere que la transferencia de datos entre el procesador y el dispositivo hardware especializado utilizado como coprocesador deba optimizarse. Al requerir tantas iteraciones, y tener dentro de estas operaciones no triviales, los algoritmos de análisis hiperespectral generalmente se traducen en un consumo de CPU elevado, por lo que la utilización de arquitecturas especializadas como coprocesadores puede resultar una alternativa altamente interesante. Además existe el problema del gran tamaño de este tipo de imágenes, lo que nos crea la necesidad de conseguir reducir el peso de la cantidad de imágenes que puede tomar el satélite en cuestión y por tanto es de gran interés para este tipo de situaciones el tener una forma de reducir su tamaño con el mínimo de pérdida posible. Para solucionar estos problemas relativos a coste, consumo, peso y ofrecer además, mejoras sustanciales en cuanto al tiempo de procesamiento, en el presente PFC proponemos una adaptación del algoritmo IEA, utilizando sus prestaciones a la hora de extraer los endmembers y generar sus mapas de abundancia para desarrollar un método de compresión de imágenes hiperespectrales haciendo uso del gran rendimiento de dicho algoritmo en la GPU. Conviene destacar que, con una sola GPU, pueden llegar a obtenerse mejoras notables a la hora de procesar cálculos de Proyecto fin de carrera -7- Enrique de la Fuente Milanés

8 tipo científico, como es el caso de los algoritmos de tratamiento de imágenes hiperespectrales, a un coste razonable y además ocupando un espacio mínimo. No obstante, no todas las tarjetas GPU disponibles en el mercado se ajustan a nuestros requerimientos. Finalmente, indicar que en este proyecto se ha intentado ir un poco más lejos, y trabajar de forma totalmente innovadora. Para ello, se ha utilizado la arquitectura CUDA incorporada en las tarjetas gráficas de NVIDIA de las series 8 (ó superiores), Quadro y Tesla, siendo algunas de las tarjetas de la segunda gama las que han sido objeto de estudio en este PFC. Para la consecución de este trabajo se ha utilizado una maquina con un procesador Intel Core 2 Quad 6600 una GPU NVIDIA Tesla C1060 y el sistema operativo Windows XP. Por otra parte en este proyecto, se ha realizado una nueva actividad consistente en el estudio cuantitativo y comparativo de los algoritmos implementados tanto en C para su ejecución en la CPU como en CUDA para su ejecución en la GPU así como un análisis de la precisión de los resultados obtenidos Objetivos Este trabajo pretende realizar una adaptación del algoritmo IEA para la compresión de imágenes hiperespectrales aprovechando el gran rendimiento que proporciona trabajando sobre una GPU y realizar un estudio cualitativo y comparativo de dicho algoritmo en GPU con respecto a su rendimiento en CPU, utilizando varias imágenes hiperespectrales de las que se tiene gran información de referencia y por tanto sus resultados serán muy indicativos. La consecución del objetivo general anteriormente mencionado se lleva a cabo en la presente memoria abordando una serie de objetivos específicos, los cuales se enumeran a continuación: Establecer un estudio en profundidad sobre la utilidad y el funcionamiento del algoritmo IEA y la utilización de sus prestaciones para la compresión de imágenes hiperespectrales. Realizar un estudio sobre el lenguaje de programación CUDA para poder implementar el algoritmo. Proyecto fin de carrera -8- Enrique de la Fuente Milanés

9 Implementar el algoritmo para su ejecución tanto en GPU como en CPU. Implementar una serie de aplicaciones que nos permitan conocer la precisión que se ha logrado en la reconstrucción de la imagen y el error que se ha cometido en ella utilizando para tal fin una imagen sintética de la cual se conocen previamente sus características y una imagen hiperespectral original de la que se tiene gran cantidad de información de referencia. Realizar un estudio comparativo sobre los resultados obtenidos. Teniendo presentes los anteriores objetivos concretos, procedemos a describir la organización del resto de esta memoria, estructurada en una serie de capítulos cuyos contenidos se describen a continuación: 2) Introducción. En este capítulo introduciremos los conceptos con los que vamos a trabajar, como son las imágenes hiperespectrales y sus características, además de hacer una breve descripción de la computación paralela para este tipo de imágenes y del problema que surge sobre su gran tamaño 3) GPU. Este capítulo está dedicado a la GPU, hablaremos de cómo han ido evolucionando las GPUs programables, de los recursos que ofrecen y su capacidad de computo. Introduciremos una serie de conceptos para lograr entender cómo se lleva a cabo el procesamiento en una GPU mediante CUDA. Este capítulo también describe el hardware de la tarjeta con la que se ha realizado el proyecto. 4) Descripción de los algoritmos. En este capítulo se estudia y se presenta la descripción detallada del algoritmo con el que hemos trabajado, tanto en su versión en CUDA como para C, además de explicar su buena funcionalidad para ser usado como algoritmo compresor de imágenes hiperespectrales y mostrar el algoritmo de descompresión. 5) Resultados. En este capítulo se describen las imágenes que se han utilizado para probar los algoritmos, se muestran las diferentes formas de calcular la precisión para cada algoritmo, se presentan los resultados conseguidos y para finalizar se realiza un estudio Proyecto fin de carrera -9- Enrique de la Fuente Milanés

10 comparativo de los mismos. 6) Conclusiones y líneas futuras. Este capítulo resume las principales aportaciones realizadas por la presente memoria y pretende mostrar las conclusiones derivadas de las mismas. Además, el capítulo sugiere o propone un conjunto de líneas de trabajo que pudieran ser abordadas en futuros trabajos. Se concluye con una serie de referencias bibliográficas, más relevantes, utilizadas en el estudio. Proyecto fin de carrera -10- Enrique de la Fuente Milanés

11 2. Introducción En el presente capítulo describiremos el concepto de imagen hiperespectral, explicando con detalle las características de este tipo de imágenes de alta dimensionalidad. Más adelante presentamos las principales características de los sensores de adquisición de este tipo de imágenes, obviamente explicando en profundidad los sensores utilizados en este trabajo. A continuación, explicaremos el modelo lineal de mezcla que se ha utilizado, además de explicar la necesidad que este modelo crea de paralelismo, mostrando cómo utilizamos las GPUs para tal fin, además de plantear el problema del tamaño que este tipo de imágenes de tanta dimensionalidad nos crea Concepto de imagen hiperespectral Con la reciente aparición de sistemas comerciales aerotransportados con tecnología y capacidad para la medida de una muy elevada resolución en los dominios espacial, espectral y temporal, las aplicaciones de observación remota de la Tierra han dado un salto cualitativo utilizando este tipo de sensores hiperespectrales. Estos sensores, adquieren imágenes digitales en una gran cantidad de canales espectrales cercanos entre sí, obteniendo para cada porción de captura o píxel una firma espectral o huella dactilar característica de cada material. Para representar una imagen hiperespectral utilizamos un cubo de datos, con dos dimensiones para representar la ubicación espacial de un píxel, y una tercera dimensión que representa la singularidad espectral de cada píxel en diferentes longitudes de onda [1]. La Figura 2.1 es una posible representación de una imagen hiperespectral, que utiliza los conceptos de línea para el eje X, muestra para el eje Y, y en el eje Z se representan el número de bandas (la longitud de onda de la banda). Proyecto fin de carrera -11- Enrique de la Fuente Milanés

12 Figura 2.1 Concepto de imagen hiperespectral Por tanto, un pixel situado en la coordenada (x, y) es un vector de bandas en que cada elemento del vector corresponde a cada una de las diferentes longitudes de onda empleadas en el momento de adquisición de la imagen para ese píxel. Gracias a la gran capacidad de observación de los sensores espectrales, podemos obtener una firma espectral para cada píxel de la imagen, dada por los valores de reflectancia adquiridos por el sensor en diferentes longitudes de onda, permitiendo realizar una caracterización extremadamente precisa de la superficie del planeta. Como ejemplo ilustrativo, la Figura 2.2 muestra el procedimiento de análisis hiperespectral mediante un sencillo diagrama, en el que se ha considerado como ejemplo el sensor AVIRIS (Airborne Visible Infra-Red Imaging Spectrometer), desarrollado por NASA/Jet Propulsión Laboratory, el cual cubre el rango de longitudes de onda entre 0.4 y 2.5 m utilizando 224 canales y resolución espectral de aproximadamente 10 nm [4]. Proyecto fin de carrera -12- Enrique de la Fuente Milanés

13 Figura 2.2 Adquisición de una imagen hiperespectral por el sensor AVIRIS Como puede apreciarse en la Figura 2.2, es el elevado número de bandas de este sensor lo que permite la obtención de una firma espectral detallada del píxel. Conviene destacar que, en este tipo de imágenes, es habitual la existencia de mezclas a nivel de subpíxel, por lo que a grandes rasgos podemos encontrar dos tipos de píxeles en este tipo de imágenes: píxeles puros, también conocidos como endmembers, y píxeles mezcla [2]. Se puede definir un píxel mezcla como aquel en el que cohabitan diferentes materiales. Este tipo de píxeles son los que constituyen la mayor parte de la imagen hiperespectral, en parte, debido a que este fenómeno es independiente de la escala considerada ya que tiene lugar incluso a niveles microscópicos [3]. La Figura 2.3 muestra un ejemplo del proceso de adquisición de píxeles puros (a nivel macroscópico) y mezcla en imágenes hiperespectrales. Proyecto fin de carrera -13- Enrique de la Fuente Milanés

14 Reflectancia Reflectancia Reflectancia Compresión de imágenes hiperespectrales en tarjetas gráficas programables (GPUs) 4000 Pixel mezcla (suelo + rocas) Long. onda (nm) Pixel puro (agua) Pixel mezcla (vegetación + suelo) Long. onda (nm) Long. onda (nm) Figura 2.3 Tipos de píxeles en imágenes hiperespectrales El desarrollo tecnológico introducido por la incorporación de sensores hiperespectrales en plataformas de observación remota de la Tierra de última generación ha sido particularmente notable durante los últimos años. Conviene destacar que dos de las principales plataformas de tipo satélite que se encuentran en funcionamiento en la actualidad: Earth Observing-1 de NASA ( y ENVISAT de la Agencia Espacial Europea ( llevan incorporados sensores de este tipo, permitiendo así la posibilidad de obtener imágenes hiperespectrales de la práctica totalidad del planeta de manera casi continua. A pesar de la gran evolución en los instrumentos de observación remota de la Tierra, la evolución en las técnicas de análisis de los datos proporcionados por dichos sensores no ha sido tan notoria. En particular, la obtención de técnicas de análisis hiperespectral avanzadas, capaces de aprovechar totalmente la gran cantidad de información espacial y espectral presente en imágenes hiperespectrales, constituye un objetivo de gran interés para la comunidad científica. A continuación, describimos en detalle las características del sensor hiperespectral utilizado en el presente estudio. Proyecto fin de carrera -14- Enrique de la Fuente Milanés

15 2.2. Sensores hiperespectrales considerados Actualmente encontramos en el mercado de la observación remota de la Tierra una cantidad considerable de sensores hiperespectrales, entre los que se encuentran HYPERION, AAHSI, CASI, HYDICE, ROSIS, AVIRIS, etc [5-6]. Estos sensores pueden ser clasificados por la forma en la que son transportados para la obtención hiperespectral, siendo la gran mayoría aerotransportados, como el sensor AVIRIS, considerado en el presente trabajo. AVIRIS es un sensor hiperespectral aerotransportado, que empezó a operar en 1987, teniendo capacidades analíticas en las zonas visible e infrarroja del espectro [8-10]. Fue el primer sistema de teledetección y adquisición de imágenes capaz de recabar información en una gran cantidad de bandas espectrales estrechas y casi contiguas. Este sensor tiene unas características especiales que lo hacen único frente a otros sensores, puesto que permite obtener información de 224 bandas espectrales contiguas, cubriendo longitudes de onda entre 0.4 y 2.5 metros con un espacio entre bandas muy estrecho, de apenas 1 centímetro [8-10].Se realizan varias campañas de vuelo al año para tomar datos mediante este sensor, desde que en 1989 pasara a ser aerotransportado. Seguidamente se describen algunas de las características de este sensor: Dispone de un grupo de espectrómetros que realizan la cobertura del infrarrojo, compuestos por vectores de 64 detectores lineales (EFOS-B, EFOS-C, EFOS-D), y otro espectrómetro que realiza la cobertura de la parte visible del espectro, compuesto por 32 detectores lineales (EFOS-A). La señal medida por cada detector se amplifica y se codifica utilizando 12 bits. Esta señal se almacena en una memoria intermedia donde es sometida a una etapa de preprocesado, siendo registrada a continuación en una cinta de alta densidad de 10.4 GB a velocidad de 20.4 MB/s. A lo largo de los últimos años, el sensor ha ido mejorando sus prestaciones en cuanto a la relación señal-ruido, como se muestra en la Figura 2.4 que describe la evolución de la relación SNR del sensor a lo largo de los últimos Proyecto fin de carrera -15- Enrique de la Fuente Milanés

16 años. Figura 2.4 Evolución de la relación SNR del sensor AVIRIS de NASA 2.3. Técnicas de análisis hiperespectral y necesidad de paralelismo El análisis hiperespectral presupone que la medición de la superficie terrestre en un determinado píxel va a estar compuesta por varios materiales, pues es lo que suele ocurrir en la mayoría de casos, incluso a nivel microscópico. Realizar un diseño de aplicaciones capaces de modelar este fenómeno de mezcla, de manera adecuada resulta imprescindible, aunque este tipo de técnicas basadas en el modelo de mezcla resultan altamente costosas por su complejidad computacional. A continuación se describen las características de las técnicas basadas en este modelo, posteriormente entraremos en la necesidad de paralelismo y el problema del enorme tamaño de las imágenes hiperespectrales Técnicas basadas en el modelo lineal de mezcla El modelo lineal de mezcla expresa los píxeles mezcla [11] como una combinación lineal de firmas asociadas a componentes espectralmente puros (llamados endmembers) en la imagen [12]. Este modelo ofrece resultados satisfactorios cuando los componentes que residen a nivel sub-píxel aparecen Proyecto fin de carrera -16- Enrique de la Fuente Milanés

17 espacialmente separados, situación en la que los fenómenos de absorción y reflexión de la radiación electromagnética incidente pueden ser caracterizados siguiendo un patrón estrictamente lineal. En la actualidad, el modelo lineal de mezcla es el más utilizado en análisis hiperespectral, debido a su sencillez y generalidad. Figura 2.5 Interpretación gráfica del modelo lineal de mezcla El modelo lineal de mezcla puede interpretarse de forma gráfica en un espacio bidimensional utilizando un diagrama de dispersión entre dos bandas poco correlacionadas de la imagen, tal y como se muestra en la Figura 2.5. En la misma, puede apreciarse que todos los puntos de la imagen quedan englobados dentro del triángulo formado por los tres puntos más extremos (elementos espectralmente más puros). Los vectores asociados a dichos puntos constituyen un nuevo sistema de coordenadas con origen en el centroide de la nube de puntos, de forma que cualquier punto de la imagen puede expresarse como combinación lineal de los puntos más extremos, siendo estos puntos los mejores candidatos para ser seleccionados como Proyecto fin de carrera -17- Enrique de la Fuente Milanés

18 endmembers [13]. El paso clave a la hora de aplicar el modelo lineal de mezcla consiste en identificar de forma correcta los elementos extremos de la nube de puntos N-dimensional. En la literatura reciente se han propuesto numerosas aproximaciones al problema de identificación de endmembers en imágenes hiperespectrales. Por ejemplo, el algoritmo IEA (Iterative Error Analysis), que se basa en el análisis iterativo del error obtenido, tratando un conjunto de píxeles de la imagen original como endmembers [14]. Este método ha sido utilizado ampliamente en este trabajo, y será descrito en los siguientes capítulos Necesidad de paralelismo Conviene destacar que las técnicas de análisis hiperespectral, anteriormente descritas, se basan en la realización de operaciones matriciales que resultan muy costosas desde el punto de vista computacional [15]. Sin embargo, el carácter repetitivo de estas operaciones las hace altamente susceptibles de ser implementadas en diferentes tipos de arquitecturas paralelas, permitiendo así un incremento significativo de su rendimiento en términos computacionales y dotando a dichas técnicas de la capacidad de producir una respuesta rápida. Esta tarea es clave para la explotación de dichas técnicas en aplicaciones que requieren una respuesta en tiempo casi real. Las técnicas de computación paralela han sido ampliamente utilizadas para llevar a cabo tareas de procesamiento de imágenes de gran dimensionalidad, facilitando la obtención de tiempos de respuesta muy reducidos y pudiendo utilizar diferentes tipos de arquitecturas [16-18]. En la actualidad, es posible obtener arquitecturas paralelas de bajo coste mediante la utilización de GPUs de última generación que cuentan con múltiples procesadores El papel de las GPUs En el campo de la explotación de datos hiperespectrales, existe una tarea indispensable, que es la extracción de endmembers. Durante los últimos años, esta necesidad crucial ha dado como resultado la aparición de múltiples algoritmos para la extracción automática de estos endmembers desde una imagen hiperespectral, Proyecto fin de carrera -18- Enrique de la Fuente Milanés

19 como son PPI, NFINDR, AMEE, IEA o análisis de componentes de vértices [15-20]. Estas técnicas tratan los datos que contienen la imagen no como una imagen, sino como un conjunto desordenado de dimensiones espectrales, donde las coordenadas se pueden cambiar de forma aleatoria sin que esto afecte al proceso de búsqueda. Este tipo de técnicas introducen un nuevo reto sobretodo de procesamiento y particularmente para datos de alta dimensionalidad, como son las imágenes con las que trabajamos en el área de análisis hiperespectral. Desde el punto de vista computacional se repiten patrones de acceso regular a los datos, provocando un paralelismo inherente, que se ha intentado solucionar con sistemas paralelos compuestos por CPUs [21]. Desafortunadamente, este tipo de sistemas es altamente costoso, haciendo muy difícil su utilización e implantación. Un nuevo desarrollo en el campo de la computación surge con los procesadores gráficos programables (GPUs). Guiadas por la creciente demanda de la industria de los videojuegos, las GPUs han evolucionado como sistemas programables altamente paralelos. Sin embargo la arquitectura de las GPUs no encaja necesariamente con todos los tipos de computación paralela, el rango de aplicaciones candidatas va más allá del dominio del renderizado de gráficos. En especial, el siempre creciente requerimiento computacional introducido por el estado actual de los algoritmos de imágenes hiperespectrales pueden beneficiarse de este hardware y tomar ventaja de su poco peso y bajo coste de sus unidades, lo que lo hace llamativo para el procesamiento de datos a bordo por un coste mucho más bajo del que tienen otros dispositivos hardware como las FPGAs [22] Compresión de imágenes hiperespectrales Como hemos visto anteriormente, con este tipo de sensores como AVIRIS, podemos capturar una gran cantidad de información a tratar, que no sólo va a ser analizada, modificada y almacenada en las máquinas de los usuarios de este sistema, sino que debe ser enviada desde la estación donde se encuentra el sensor hasta la Tierra y almacenada allí [23]. Proyecto fin de carrera -19- Enrique de la Fuente Milanés

20 Una estimación muy cercana a la realidad es que los satélites del proyecto EOS (Earth Observing System) de la NASA, generan más de un terabyte de datos al día. Es por esto que surge la necesidad de encontrar alguna forma de acelerar el proceso, o reducir la cantidad de información que se pretende enviar de modo que se pueda agilizar todo el sistema. Y surgen por tanto diferentes alternativas dependiendo de las posibilidades que existen en cada zona en la cual el sensor está trabajando. Una de estas alternativas es la petición de información espectral seleccionada según la demanda de la zona en cuestión, accediendo sólo cierto número de bandas en donde se presupone que la información necesitada se encontrará en mayor medida. Teniendo en cuenta que el ancho de banda de la conexión entre las estaciones de observación y las que se encuentran en la Tierra es limitado, siendo de varias horas el intervalo de tiempo en que se trasfiere toda la información, se plantea la alternativa de la compresión de dicha información [24]. Las técnicas de compresión de imágenes se pueden clasificar en dos grandes categorías: compresión con o sin pérdida [39-41]. La compresión sin pérdidas se basa en algoritmos que comprimen la información de cara a que su volumen de almacenamiento sea más pequeño, pero que a la hora de utilizarla, debemos descomprimirla, de forma que el resultado sea exactamente el mismo que el original antes de comprimir. Hasta hace muy poco tiempo, en el campo del análisis hiperespectral se han usado técnicas de compresión sin pérdida, llegando a obtener ratios de compresión relativamente bajos que pueden llegar a ser de 3:1 [25] [33-38]. A nivel de imágenes tradicionales, entre los más conocidos algoritmos de compresión sin pérdida destaca el formato de compresión LZW incorporado por ejemplo en imágenes TIFF. De esta forma, la información contenida en fichero TIFF con compresión LZW, ocupará menos que simplemente en TIFF sin compresión. Por lo demás, una imagen y otra serán exactamente iguales, a excepción de su tamaño y la estructura de almacenamiento. Además, existen varios métodos de compresión sin pérdida para imágenes estándar e imágenes de alta dimensionalidad como pueden ser ILBM, JBIG2, JPEG-LS, JPEG XR o JPEG 2000, siendo este último bastante novedoso por sus resultados [26][37-38]. Como hemos explicado anteriormente, debido al incremento espacial, Proyecto fin de carrera -20- Enrique de la Fuente Milanés

21 espectral y temporal en la resolución de los sensores remotos hiperespectrales, surge la necesidad de conseguir mejores ratios de compresión, por lo que la compresión con pérdida se convierte en una alternativa bastante razonable [27]. Este tipo de compresión no ha conseguido una aceptación global en la comunidad de observación remota porque generalmente se ha percibido que usar imágenes comprimidas puede afectar notoriamente a los resultados de posteriores análisis y procesados de imágenes hiperespectrales, como técnicas de desmezclado espectral o clasificación de imágenes. Este efecto negativo, sin embargo, ha sido apenas caracterizado, en su mayoría en el contexto de aplicaciones de clasificación [24]. Como ejemplo tenemos [28], donde se puede observar que la clasificación de rendimiento no está relacionada con las curvas de distorsión, teniendo en cuenta que los mejores clasificadores basados en curvas de tasa de distorsión generalmente no ofrecen la mejor clasificación de precisión. Otro caso llamativo encontramos en [29], donde se propone un enfoque de vector de cuantización (VQ) para la clasificación conjunta y compresión de imágenes hiperespectrales. En este caso, se obtuvieron ratios de compresión de hasta 70:1 sin obtener una reducción significativa de la clasificación del rendimiento. Se han obtenido resultados similares en [30-31], donde se consigue una alta clasificación de precisión con niveles altos de compresión, particularmente cuando se aplica la transformada espacial-espectral (waveletlike). Llevada la compresión con pérdida a las imágenes hiperespectrales de observación remota de la Tierra, es claro que nos favorece tener un menor tamaño, pero debemos asegurarnos que en el proceso de compresión no se suprima cierta información importante que nos ayudaría a distinguir unos materiales de otros. Es por esto que hace varios años que la comunidad de observación remota de la Tierra investiga los impactos de la compresión con pérdida en el análisis de imágenes hiperespectrales [32]. En este trabajo proponemos un sistema de compresión en el que la pérdida de información sea mínima, como veremos en los resultados obtenidos comparando firmas espectrales de materiales conocidos. Sin embargo el plazo de compresión gracias a la tecnología de una sola GPU será muy favorable para poder realizar la Proyecto fin de carrera -21- Enrique de la Fuente Milanés

22 transmisión de este tipo de información en el menor tiempo posible, o que dicha información ocupe el mínimo espacio posible. Proyecto fin de carrera -22- Enrique de la Fuente Milanés

23 3. Tarjetas gráficas programables (GPUs) En este capítulo introducimos el mundo de las GPUs programables, viendo su evolución durante las últimas dos décadas. Estudiaremos los conceptos necesarios para poder entender cómo se lleva a cabo el procesamiento en una GPU mediante CUDA. Describiremos también el hardware de la tarjeta Tesla 1060 con la que se han realizado las pruebas para el presente trabajo y finalmente trataremos el lenguaje CUDA, dando las nociones básicas para empezar a utilizarlo Las GPUs como un dispositivo de computación de datos en paralelo. Durante las dos últimas décadas, en mayor medida en la última, las GPUs programables han evolucionado como un elemento con una gran carga de trabajo, como se muestra en la Figura 3.1. Actualmente las GPUs ofrecen prestaciones muy elevadas para el procesamiento gráfico y científico, gracias a sus múltiples núcleos dirigidos por un gran ancho de banda de memoria [19-22]. Figura 3.1 Operaciones en coma flotante por segundo para CPU y GPU. Proyecto fin de carrera -23- Enrique de la Fuente Milanés

24 Antes de examinar en detalle la arquitectura de una GPU Tesla 1060 de NVidia ( consideramos relevante explicar cómo han funcionado las operaciones en un pipeline de una GPU clásica a lo largo de los años. No obstante, para entender este proceso, también introduciremos brevemente los conceptos de vertex shaders y los píxel shaders Procesamiento de GPUs clásicas Los shaders son pequeños programas que se encargan del procesamiento de vértices (vertex shaders) y de pixeles (píxel shaders). Encontramos como principal ventaja que pueden ser programados por el desarrollador, dando una flexibilidad enorme a la hora de aplicar efectos. Sin ellos, estos efectos eran realizados en conjunto con la unidad de procesamiento central, lo que hacía al sistema ser mucho más pesado, limitando el avance a nivel gráfico de los mismos. La incorporación de los píxel shaders y vertex shaders permite a los programadores una mayor libertad a la hora de diseñar gráficos en tres dimensiones, ya que puede tratarse a cada píxel y cada vértice por separado. De esta manera, los efectos especiales y de iluminación pueden crearse mucho más detalladamente, sucediendo lo mismo con la geometría de los objetos. Cuando revisamos las arquitecturas hardware, el flujo de datos, y las operaciones pipeline, a menudo es bueno empezar por el nivel más alto, donde los datos llegan desde la CPU a la GPU, y el proceso se desarrolla hacia abajo a través de múltiples fases de procesamiento hasta que un pixel es dibujado definitivamente en la pantalla Evolución del uso de GPUs en aplicaciones científicas Los chips de gráficos empezaron siendo canales de procesamiento de gráficos con funciones fijas. Con el paso de los años, estos chips se fueron haciendo más programables, lo que permitió a los fabricantes introducir las primeras GPU. Entre los años 1999 y 2000, científicos e investigadores de disciplinas como el diagnóstico por imagen o el electromagnetismo empezaron a usar las GPUs para acelerar una serie de aplicaciones científicas. Fue el nacimiento de un nuevo concepto Proyecto fin de carrera -24- Enrique de la Fuente Milanés

25 denominado GPGPU o GPU de propósito general. El problema era que el código destinado a las aplicaciones de GPGPU tenía que escribirse con lenguajes de programación de gráficos como OpenGL y Gg. Los desarrolladores tenían que dar a sus aplicaciones científicas la apariencia de aplicaciones gráficas transformándolas en problemas que dibujasen triángulos y polígonos. Esto limitaba la posibilidad de aprovechar el tremendo rendimiento de las GPUs para usos científicos. Fabricantes de GPUs como NVIDIA se dieron cuenta de las ventajas que supondría poner todo este rendimiento al alcance de la comunidad científica y decidieron invertir en modificar la GPU a fin de hacerla totalmente programable para aplicaciones de investigación. Además, añadieron soporte para lenguajes de alto nivel como C, C++ o Fortran. Figura 3.2 La GPU proporciona más transistores para el procesamiento de datos. La GPU acelera las aplicaciones que se ejecutan en la CPU encargándose de procesar la parte del código más pesada y con mayor carga computacional. El resto de la aplicación se sigue ejecutando en la CPU. Para el usuario, la aplicación simplemente se ejecuta más rápido porque utiliza la gran capacidad de procesamiento paralelo de la GPU para multiplicar el rendimiento. Se conoce como cálculo heterogéneo o híbrido. Proyecto fin de carrera -25- Enrique de la Fuente Milanés

26 Una CPU se compone de entre cuatro y ocho núcleos de CPU, mientras que la GPU está formada por cientos de pequeños núcleos que trabajan juntos para digerir los datos de la aplicación como se puede ver en la Figura 3.3. Esta arquitectura de procesamiento paralelo masivo es la que proporciona a la GPU su alta capacidad de cálculo CUDA: Una Nueva Arquitectura para el Cálculo en la GPU CUDA es una arquitectura de cálculo paralelo de NVIDIA que aprovecha la gran potencia de la GPU para proporcionar un incremento enorme del rendimiento del sistema. Para posibilitar este nuevo paradigma computacional, NVIDIA ha hecho disponible CUDA para las GPUs, GeForce, ION, Quadro y Tesla. El mecanismo multitarea del sistema operativo es responsable de manejar el acceso a la GPU mediante CUDA, y las aplicaciones gráficas funcionan de forma simultánea. A continuación, describiremos la arquitectura CUDA, y entraremos en detalle sobre las características de la Tesla C1060, utilizada para el presente trabajo Modelo de programación CUDA Antes de entrar a describir el modelo de programación empleado por CUDA, vamos a destacar la pila de software de que se compone CUDA. Vemos que el más bajo nivel es el controlador y el runtime de NVIDIA para ensamblar. A partir de ahí se encuentra el compilador de C de Nvidia, sobre el que se establecen las librerías de alto nivel CUFFT y CUBLAS. A partir de ese punto se pueden crear aplicaciones eligiendo las partes de código que queremos que se ejecuten en la CPU o GPU. Por supuesto, el hecho de que CUDA esté construido sobre el lenguaje C, hace que el aprendizaje del lenguaje sea muy rápido. Proyecto fin de carrera -26- Enrique de la Fuente Milanés

27 Figura 3.3 Pila software de CUDA CUDA ofrece un direccionamiento de carácter general a la memoria DRAM, lo que le da una mayor flexibilidad. Como podemos observar en la Figura 3.6, se trata de una caché de datos en paralelo, con un chip de memoria compartida de alta velocidad. Esto se traduce en una habilidad para leer y escribir datos en cualquier lugar de la DRAM [35]. Figura 3.4 Operaciones de con la GPU en memoria compartida. Proyecto fin de carrera -27- Enrique de la Fuente Milanés

28 3.3. Procesamiento En el presente apartado se mostrará a la GPU como un procesador multihilo, explicando a grandes rasgos su modelo de procesamiento y haciendo una aproximación a los términos hilos, bloques y grid Un Coprocesador Multithread Cuando se utiliza CUDA, la GPU se encarga de procesar información a través de muchos hilos en paralelo. Esta GPU funciona como un coprocesador de la CPU, ejecutando partes de código especiales, conocidas como kernels, que son cargadas en la GPU a través del procesador principal, o CPU. Estos kernels son ejecutados a través de muchos hilos cada uno de ellos con datos diferentes e independientes, que son aislados en bloques y dan como resultado una ejecución enormemente más rápida. Tanto la CPU (host) como la GPU (device) tienen su propia DRAM, y pueden cargar datos de una a otra sin problema utilizando la API de CUDA [43]. Un ejemplo muy genérico del coprocesamiento se puede observar en la Figura 3.5. Figura 3.5 Ejemplo de flujo de procesamiento en CUDA. Proyecto fin de carrera -28- Enrique de la Fuente Milanés

29 Hilos, bloques y grids Un grid de bloques o rejilla, es un conjunto de bloques de hilos del mismo tamaño y dimensión que son ejecutados en un único kernel. Los hilos que pertenecen a bloques distintos dentro de la misma rejilla, no pueden comunicarse, sincronizarse ni compartir memoria entre ellos [43]. Un bloque es un conjunto de hilos que trabajan compartiendo datos a través de una memoria compartida muy rápida y sincronizando su ejecución para coordinar los accesos a memoria. Existen puntos de sincronización en un kernel en donde los hilos de un bloque se suspenden hasta que todos los hilos pertenecientes al bloque han llegado a ese punto. Un bloque tiene un número limitado de hilos, que es delimitado en el momento en que se carga un kernel desde el host para ser ejecutado en el device [43]. Un hilo tiene un identificador único, denominado thread ID, que es el número que le identifica dentro del bloque. Para un bloque de dos dimensiones (Dx, Dy), el thread ID de un hilo de índice (x y) es (x+ydx), y para un bloque de tres dimensiones (Dx, Dy, Dz), el thread ID de un hilo de índice (x, y, z) es (x + ydx + zdxdy) [20]. La Figura 3.6 muestra un esquema de cómo cada kernel se ejecuta con grupos de hilos por bloques. Figura 3.6 Ejemplo de grid de bloques. Proyecto fin de carrera -29- Enrique de la Fuente Milanés

30 3.4. Implementación hardware y modelo de ejecución En este capítulo presentamos la GPU utilizada en el trabajo, mostrando su arquitectura y sus especificaciones, además de explicar en detalle el diseño del modelo de ejecución empleado en ella Nvidia Tesla C1060 En este apartado nos centramos en la arquitectura de la GPU utilizada para nuestro trabajo, la Tesla C1060 [42]. La figura 3.7 describe la arquitectura hardware de dicha tarjeta. Figura 3.7 Arquitectura de la GPU Tesla C1060 de NVidia. A continuación la Tabla 3.1 muestra las características técnicas de la GPU: Proyecto fin de carrera -30- Enrique de la Fuente Milanés

31 Tabla 3.1 Características técnicas de la GPU Tesla C1060 de Nvidia Modelo de ejecución La GPU se implementa como un conjunto de multiprocesadores, como podemos ver en la figura Cada uno de estos multiprocesadores está diseñado según la arquitectura SIMD, es decir, en cada ciclo de reloj, el multiprocesador ejecuta la misma instrucción que en ciclo de reloj anterior, pero operando con distintos datos. Los espacios de memoria local y global son implementados como regiones de la memoria del dispositivo o device. Cada procesador tiene acceso a la memoria compartida asignada al multiprocesador en el que está integrado, siendo este último el que accede a la caché de textura mediante una unidad de textura que implementa los diferentes modos de direccionamiento y filtros de datos [43]. Proyecto fin de carrera -31- Enrique de la Fuente Milanés

32 Figura 3.8 Arquitectura del procesamiento de la GPU Tesla C1060 de NVidia. Un grid de bloques de hilos se ejecuta en el device mediante la programación de bloques en cada multiprocesador. Estos bloques sólo son procesados, por lotes, en un multiprocesador, beneficiando así la velocidad en el procesamiento, puesto que el espacio de memoria utilizado reside en la memoria on-chip compartida. El número de bloques que cada multiprocesador puede procesar en un lote depende de cuántos registros necesita cada hilo y de cuánta memoria compartida necesita cada bloque en un kernel, ya que estos recursos se deben compartir entre todos los hilos de los bloques del lote. Si no hay una cantidad suficiente de registros o de memoria compartida disponible en un multiprocesador para procesar al menos un bloque, el kernel fallará en su ejecución. Los bloques que se procesan en un multiprocesador en un lote se llaman activos. Cada bloque activo se divide en grupos de hilos SIMD llamados warps. Proyecto fin de carrera -32- Enrique de la Fuente Milanés

33 Cada uno de ellos contiene el mismo número de hilos, este número es denominado warp size y se ejecuta en un multiprocesador en modo SIMD. Los warps de los bloques activos se dividen en el tiempo: un programador de hilos cambia de un warp a otro para maximizar el uso de recursos computacionales del multiprocesador. Se llama half warp a la primera o segunda mitad de un warp. La forma en la que un bloque se divide en warps es siempre la misma; cada warp contiene hilos consecutivos, incrementando sus identificadores de hilo (thread ID). El primera warp contiene al hilo 0. El orden de emisión de los warps de un bloque no está definido y no existe un mecanismo de sincronización entre bloques para coordinar los accesos a memoria global o compartida. El orden de emisión de los bloques en un grid de bloques de hilos tampoco está definido y no hay un mecanismo de sincronización entre bloques, así que los hilos de dos bloques diferentes pertenecientes al mismo grid no se pueden comunicar de una forma segura a través de la memoria global durante la ejecución de un grid. Si una instrucción no atómica ejecutada por un warp escribe en la misma posición, ya sea de memoria global o compartida por más de un hilo de warp, el número de escrituras serializadas que ocurran en esa posición así como el orden de las escrituras es indefinido, pero se garantiza que al menos una escritura tenga éxito. Si una instrucción atómica ejecutada por un warp lee, modifica o escribe en una posición de memoria, ya sea global o compartida por más de un hilo warp, cada lectura, modificación o escritura en la posición ocurre de forma serializada aunque el orden es indefinido. Proyecto fin de carrera -33- Enrique de la Fuente Milanés

34 4. Método utilizado En este apartado se describe el método de extracción de endmembers y mapas de abundancia que hemos comentado en este estudio e implementado de forma eficiente utilizando tarjetas gráficas programables de la gama Nvidia. Los algoritmos utilizados comprenden el método Iterative Error Analysis y su adaptación para la compresión de imágenes, así como el algoritmo utilizado para la descompresión de la imagen comprimida Iterative Error Analysis (IEA) El algoritmo de análisis de error iterativo, IEA, se basa en un procedimiento de análisis sucesivo del error obtenido al utilizar un conjunto de puntos de la imagen original como endmembers. El método IEA trabaja con todo el cubo de datos original, sin aplicar ningún tipo de reducción previa sobre los datos. Los parámetros de entrada que el algoritmo recibe son el número máximo de endmembers a identificar y el umbral de error LSE mínimo utilizado a la hora de seleccionar los puntos. El funcionamiento del algoritmo se describe en los siguientes pasos: 1. El primer paso consiste en seleccionar un vector inicial, que habitualmente es el vector promedio de todos los datos de la imagen (centroide), y se etiqueta como endmember inicial. 2. A continuación, se realiza un proceso de estimación de abundancias utilizando el vector centroide anteriormente mencionado. La estimación se efectúa utilizando una técnica de mínimos cuadrados que será explicada en detalle en apartados posteriores. Al tratarse del pixel menos puro en términos espectrales, el proceso de estimación de abundancias dará lugar a errores LSE significativos en la mayor parte de los puntos. 3. En un tercer paso se seleccionan aquellos puntos que dan como resultado un mayor LSE en la estimación. Estos puntos, los más alejados del centroide inicialmente seleccionado, son buenos candidatos para ser utilizados como endmembers. Proyecto fin de carrera -34- Enrique de la Fuente Milanés

35 4. Los puntos anteriormente mencionados son ahora usados para estimar las abundancias. De nuevo, la técnica de mínimos cuadrados permite obtener una serie de puntos en los que el LSE en la estimación de abundancias es significativo. 5. A partir de este momento, se repiten de forma iterativa los pasos 3-5 del algoritmo hasta que el conjunto de endmembers contiene tantos puntos como se haya especificado en el primer parámetro de entrada del algoritmo o bien hasta que se alcance un valor global de error RMSE inferior al especificado como segundo parámetro del algoritmo. Básicamente hemos explicado un funcionamiento general del algoritmo, pero en este trabajo hemos utilizado la implementación realizada por el grupo de investigación HYPERCOMP, que difiere un poco de la original. El funcionamiento del algoritmo utilizado será: 1. Inicialización. El vector de inicialización inicial para la imagen hiperespectral X será el píxel medio de ésta, calculado según, ( ) (1) Donde r son las filas de la imagen y c serán las columnas e i y j las coordenadas espaciales de cada píxel en la imagen. La Figura 4.1 muestra una representación gráfica del proceso de búsqueda del píxel medio Figura 4.1 Cálculo del píxel medio como vector de inicialización Proyecto fin de carrera -35- Enrique de la Fuente Milanés

36 2. Cálculo del endmember inicial. Consideramos inicialmente el conjunto de endmembers E como un conjunto vacío. El primer endmember será calculado a continuación. En primer lugar, una versión reconstruida de la imagen original será obtenida realizando un desmezclado espectral de ella utilizando el vector de inicialización como el único endmember espectral. En nuestra implementación de IEA, aplicamos un desmezclado espectral sin restricciones (unconstrained) para cada pixel ( ) (siendo i, j las coordenadas espaciales del píxel en la imagen), de la siguiente forma: ( ) ( ) (2) La salida de esta operación será un valor de abundancia para cada pixel en X. La reconstrucción es obtenida en este momento aplicando la siguiente expresión a todos los píxeles de la imagen hiperespectral: ( ) ( ) (3) Ahora calculamos el RMSE (root mean square error) entre la imagen reconstruida y la imagen original: ( ) ( ) (, ( ) ( )-) (4) Y luego seleccionamos el primer endmember de reconstrucción asociado así: como el píxel con mayor error ( ) ( ) ( ) (5) Proyecto fin de carrera -36- Enrique de la Fuente Milanés

37 El vector de píxel resultante será almacenado en el conjunto de endmembers. La Figura 4.2 muestra una representación gráfica de este proceso. Figura 4.2 Proceso de cálculo del endmember inicial 3. Proceso iterativo. Se calcula un nuevo endmember para las iteraciones computando un desmezclado espectral para cada pixel X(i,j) usando el actual conjunto de endmembers E de la forma: ( ) ( ) (6) La salida de esta operación es un conjunto de valores de abundancia para cada pixel * ( )+ donde q será el número de endmembers derivados hasta ese momento y. La reconstrucción es ahora obtenida aplicando la siguiente expresión a todos los pixeles de la imagen: Proyecto fin de carrera -37- Enrique de la Fuente Milanés

38 ( ) ( ) (7) Ahora podemos seleccionar el k-ésimo endmember error de reconstrucción asociado de la siguiente forma: como el pixel con máximo ( ) ( ) ( ) (8) El píxel resultante es almacenado * +. La Figura 4.3 muestra una representación gráfica del proceso iterativo. Figura 4.3 Proceso de cálculo del endmember Ek 4. Regla de finalización. El procedimiento es terminado cuando. En este caso, un conjunto final de endmembers { } y sus correspondientes abundancias en cada píxel son producidos como salidas del algoritmo. La Figura Proyecto fin de carrera -38- Enrique de la Fuente Milanés

39 4.4 muestra una representación gráfica de este paso del algoritmo. Figura 4.4 Proceso de finalización del algoritmo Para concluir con el algoritmo vamos a enfatizar que, como hemos mencionado antes, en el algoritmo original IEA, tres parámetros de entrada son proporcionados: el número total de endmembers que deben ser determinados,, un número de pixels con error máximo para ser medido en el cálculo del siguiente endmember en cada iteración, y un ángulo expectral usado para buscar píxeles similares (en el sentido de ángulo espectral) para el endmember extraído en cada iteración, que son medidos juntos para generar el siguiente endmember. También en el algoritmo IEA original, la implementación de los autores asume desmezclado con total restricción (todas las abundancias en cada pixel suman 1 y restricción de no negatividad) implementado durante todo el proceso. En la versión desarrollada por HYPERCOMP se ha simplificado el algoritmo asumiendo desmezclado sin restricción para acelerar los cálculos computacionales. También, se ha tomado y el ángulo espectral = 0, para hacer la implementación de IEA extraer un pixel simple en lugar de un grupo de píxeles medios en cada iteración. Proyecto fin de carrera -39- Enrique de la Fuente Milanés

40 4.2. Adaptación del algoritmo IEA para la compresión de imágenes hiperespectrales Como acabamos de ver, las salidas que produce el algoritmo IEA son el conjunto de endmembers y los mapas de abundancia asociados a cada endmember, y como vemos durante todo el proceso del algoritmo, se está realizando una reconstrucción de la imagen para el cálculo del error de reconstrucción del algoritmo. Esto será realmente útil puesto que tan sólo son necesarias estas dos salidas para considerar la imagen comprimida. Es decir, a nivel teórico, el algoritmo realiza todo lo necesario para la compresión de la imagen reduciendo su adaptación a la compresión de imágenes a una mera cuestión de formato del algoritmo. Vamos a realizar unos cálculos para indicar el índice de compresión que conseguiremos según el número de endmembers que decidamos elegir. La imagen original que hemos utilizado, que se estudiará en detalle, se trata de una imagen hiperespectral de 188 bandas y un tamaño de 350x350 pixeles con valores enteros, con lo cual su tamaño es de 44,980 MB. Figura 4.5 Tamaño de la imagen comprimida según el nº de endmembers Proyecto fin de carrera -40- Enrique de la Fuente Milanés

41 En la Figura 4.5 podemos ver cómo el tamaño de la imagen comprimida crece a medida que aumentamos el número de endmembers para la ejecución del algoritmo. Se observa el ratio de compresión del algoritmo que va desde 1:37,5 para la ejecución del algoritmo con 5 endmembers, hasta 1:3,6 que se obtiene indicándole 50 endmembers Descompresión de imágenes Como hemos visto anteriormente, para considerar comprimida la imagen, sólo necesitamos tener los endmembers y sus mapas de abundancia asociados, es decir, que con esta información, podemos reconstruir la imagen original. En este apartado nos centraremos en el proceso de reconstrucción de la imagen comprimida, y en pocos pasos veremos cómo a partir de estas dos matrices podemos obtener dicha imagen original con una simple operación lineal. El proceso de reconstrucción está basado en el proceso contrario al que se realiza para el desmezclado espectral de una imagen. En el caso del desmezclado, se realizan diversas operaciones matemáticas para obtener los píxeles puros o endmembers en una imagen. En el caso particular del IEA, se obtienen también los mapas de abundancias de dichos píxeles puros, es decir, se obtiene el nivel de presencia que un endmember tiene en cada píxel de la imagen hiperespectral. Teniendo estos conceptos muy claros, es relativamente lógico pensar en el proceso contrario. A partir del conjunto de endmembers y teniendo sus abundancias en la imagen, se puede realizar la mezcla lineal, de modo que el resultado final sea la imagen mezclada, o descomprimida. En la Figura 4.6 se puede observar el proceso simplificado de reconstrucción o descompresión de la imagen. Como vemos, se realiza la mezcla lineal entre los endmembers y sus mapas de abundancias, para finalmente obtener una imagen reconstruida. Proyecto fin de carrera -41- Enrique de la Fuente Milanés

42 Figura 4.6 Proceso de reconstrucción 4.4. Implementación del algoritmo en GPU con CUDA Una vez explicado el funcionamiento del algoritmo y su adaptación a la compresión de imágenes, vamos a hacer una amplia descripción de su implementación CUDA para ejecutarlo en una GPU de la forma más optimizada posible. Como hemos comentado en apartados anteriores, contamos con una GPU Nvidia Tesla C1060 que cuenta con 30 multiprocesadores, y cada uno de ellos dispone a su vez de 8 procesadores. Estableceremos como caso de uso para esta implementación las dimensiones de la imagen real Cuprite, es decir, 350 líneas, 350 muestras y 188 bandas. En la ejecución del algoritmo IEA hemos identificado 4 partes claramente susceptibles de ser ejecutadas en la GPU mediantes diferentes kernels. En primer lugar, el cálculo del píxel medio de la imagen para ser utilizado como vector de inicialización al inicio del algoritmo, después se realiza la función del desmezclado espectral, a partir del desmezclado se busca el píxel con mayor error, que será identificado como endmember, y al finalizar el algoritmo se realizará el desmezclado final para identificar los mapas de abundancias para cada endmember. Además, en su adaptación para la compresión, se ha implementado un nuevo kernel que realizará la descompresión mediante la mezcla lineal de los endmembers con sus respectivos Proyecto fin de carrera -42- Enrique de la Fuente Milanés

43 mapas de abundancias Cálculo del píxel medio de la imagen Este kernel se ejecutará al inicio del algoritmo y realizará la suma de todos los valores de una banda, para posteriormente poder ser calculada la media de dicha banda. Para su ejecución se le indicarán 120 bloques de 512 hilos cada uno. Necesita para su ejecución la imagen hiperespectral almacenada en una estructura (d_imagen), además del número de líneas, samples y bandas de la imagen (num_lines, num_samples y num_bands) y la banda en la que se quiere calcular la media (iteración). El resultado será una estructura (d_pixel), que contendrá 120 valores (cada valor ha sido calculado por uno de los bloques que le hemos indicado). Una banda de la imagen que tratamos contiene píxeles (350x350) y en este caso lo que queremos es hacer una reducción, es decir, pasar de un conjunto de valores, a uno sólo. Como cada hilo lo que hace es leer 2 elementos, sumarlos y almacenarlos en la memoria compartida de su respectivo bloque, necesitaremos B=P/H (siendo B el número de bloques, P la mitad de píxeles de la imagen dado que cada hilo lee 2, y H el número de hilos por bloque). Según esta fórmula, nos salen B=61250/512 = 120 hilos, puesto que dividimos por exceso. En la Figura 4.7 se muestra un diagrama con el proceso para calcular el píxel medio de la imagen utilizando este kernel. Proyecto fin de carrera -43- Enrique de la Fuente Milanés

44 Figura 4.7 Proceso de cálculo del píxel medio en la GPU Desmezclado espectral El desmezclado espectral es la parte principal del IEA. Como hemos mencionado anteriormente, cada banda de la imagen contiene píxeles que, en este caso van a tener que ser tratados individualmente por cada hilo, obligándonos a tener que aumentar el número de bloques hasta el doble que en el kernel anterior. Es decir, tendremos 240 bloques de 512 hilos, lo que nos creará un conjunto de hilos activos para poder tratar a todos los píxeles. Este kernel recibirá varias estructuras imprescindibles para poder ser ejecutado. En primer lugar, se le indica la imagen hiperespectral que va a ser desmezclada (d_imagen), la matriz de cómputo con la que vamos a realizar el desmezclado (d_matriz_computo), el número de líneas, samples y bandas de la imagen (num_lines, num_samples y num_bands), el Proyecto fin de carrera -44- Enrique de la Fuente Milanés

45 vector de endmembers (d_endmembers), y el número de endmembers que se llevan calculados en la iteración en la que se encuentra el algoritmo (N_END, será el número de endmembers que contiene el vector de endmembers). El kernel devolverá una estructura con la imagen reconstruida (d_imagen_rec) y una con la imagen de error (d_imagen_error). Dentro del kernel, vemos que cada píxel será procesada por un hilo siendo el cálculo de la siguiente forma: píxel = Nº de bloques del grid * block ID (identificador del bloque activo) + thread ID (identificador del hilo activo). Después se trata cada píxel por separado, realizando las operaciones propias del algoritmo descritas en apartados anteriores, como el cálculo de la abundancia para cada endmember, el cálculo de la imagen reconstruida, y el cálculo de la imagen de error. En la Figura 4.8 se puede observar el diagrama gráfico del proceso de desmezclado de la imagen. Figura 4.8 Proceso de desmezclado de la imagen en la iteración k en la GPU Proyecto fin de carrera -45- Enrique de la Fuente Milanés

46 Cálculo del píxel con mayor error Este kernel tiene como objetivo seleccionar el píxel con mayor error en la imagen de error, para ser posteriormente marcado como endmember y añadido al conjunto de endmembers actuales. Se ejecuta justo después de realizar el desmezclado espectral, y debe realizar una reducción de la misma forma que el primer kernel que hemos explicado anteriormente, el Pixel_media, sólo que en este caso en lugar de que cada hilo realice una suma, será una comparación entre los valores de dos píxeles para quedarse con el mayor de ellos. Con este pretexto, es fácil deducir que el número de bloques será el mismo que el que usábamos para Pixel_media (120 bloques de 512 hilos) pues cada hilo procesará 2 píxeles. El kernel recibirá como parámetro de entrada la imagen de error obtenida después del desmezclado (d_imagen_error), y devolverá una estructura con los mayores valores en la imagen (d_vector_mayores) y otra con las coordenadas de dichos valores (d_vector_indices). Como ya hemos explicado, el proceso paralelo en el kernel será que cada hilo leerá los valores de dos píxeles, realizará la comparación para quedarse con el mayor y escribirá el valor en la memoria compartida para su respectivo bloque. El kernel devolverá d_vector_mayores, que contendrá un valor por cada bloque, es decir, 120 valores, que después de ejecutar el kernel será reducido al mayor de ellos. En la Figura 4.9 se muestra el diagrama gráfico con el proceso de búsqueda del píxel con mayor error para la imagen de error. Proyecto fin de carrera -46- Enrique de la Fuente Milanés

47 Figura 4.9 Proceso de búsqueda el píxel con mayor error en la GPU Cálculo del desmezclado final Este último kernel del algoritmo se ejecutará después de haber realizado todas las iteraciones y haber obtenido el conjunto final de endmembers en la imagen. Tendrá como objetivo calcular los mapas de abundancia para cada endmember, que será otra de las salidas del algoritmo. En cuanto a su implementación, se le indicarán como parámetros de entrada la imagen original (D_imagen), la matriz de cómputo que ha ido calculándose durante todo el proceso (d_matriz_computo), el número de líneas, samples y bandas (num_lines, num_samples, num_bands) y el número de endmembers que se han obtenido durante el proceso (N_END). El kernel devolverá la estructura con los mapas de abundancias de la imagen (d_imagen_unmixing). Como modificadores, se le indicarán al algoritmo 240 bloques de 512 hilos, puesto que en Proyecto fin de carrera -47- Enrique de la Fuente Milanés

48 este caso, el kernel es igual que el kernel del desmezclado. Cada hilo tratará un píxel ( recordemos que cada id de píxel será calculado mediante pixel = blockdim.x * blockidx.x+threadidx.x ), y se realizará el desmezclado para cada uno de ellos, identificando la abundancia que tiene cada endmember en dicho píxel mediante la operación con la matriz de cómputo. En la Figura 4.10 se muestra el diagrama gráfico del proceso de desmezclado final. Figura 4.10 Proceso de desmezclado final en la GPU Kernel de descompresión Se trata de un kernel que ejecutará la reconstrucción de la imagen original mediante la mezcla lineal de los endmembers con sus respectivos mapas de abundancias. Los modificadores serán los mismos que en los kernels de desmezclado, puesto que las dimensiones de cada mapa de abundancia son 350x350, las mismas que la imagen original. La diferencia es que la estructura de los mapas de Proyecto fin de carrera -48- Enrique de la Fuente Milanés

49 abundancias, contiene tantas bandas como mapas haya, es decir, contiene tantas bandas como endmembers tengamos en el conjunto de endmembers, que serán los endmembers que le hemos indicado al IEA a la hora de comprimir. Como hemos explicado en apartados anteriores, al tener que tratar cada píxel por separado (la reconstrucción de la imagen se hará también píxel a píxel) necesitamos como mínimo tantos hilos activos como píxeles tengamos que tratar, siendo este el motivo por el cual elegimos 240 bloques de 512 hilos ( hilos activos) para poder manejar los píxeles de la imagen. Al kernel se le indicarán como parámetros de entrada la estructura con los mapas de abundancias (d_imagen_unmixing), la estructura que contiene el conjunto de endmembers (d_endmembers), el número de líneas, samples y bandas de la imagen original( num_lines, num_samples, num_bands) y el número de endmembers que tenemos en el conjunto de endmembers ( N_END). Como parámetro de salida, el kernel devolverá la imagen descomprimida (imagen_recons). Dentro del kernel, se realizará la mezcla lineal píxel a píxel, siguiendo el proceso indicado en el apartado 4.3, determinando cada píxel reconstruido por la suma de las abundancias de cada endmember en ese píxel. En la Figura 4.11 se observa el diagrama gráfico del proceso de descompresión de la imagen. Figura 4.11 Proceso de descompresión de la imagen en la GPU Proyecto fin de carrera -49- Enrique de la Fuente Milanés

50 5. Resultados En este apartado vamos a mostrar los resultados obtenidos para el algoritmo en sus dos implementaciones (en C y en CUDA). Se tratará de analizar su rendimiento, precisión cualitativa y cuantitativa en la compresión y descompresión de las imágenes que a continuación vamos a presentar. En primer lugar se presentarán las imágenes con las que se han probado los algoritmos, a continuación se mostrarán los resultados de rendimiento para las diferentes imágenes, para después analizar las imágenes descomprimidas midiendo su calidad con respecto a las imágenes originales utilizando la precisión y el error. Finalizaremos realizando una comparación global para obtener un indicativo del índice de compresión óptimo a determinar en el algoritmo que hemos diseñado Presentación de las imágenes utilizadas Las pruebas se han realizado con dos imágenes distintas, una sintética y una real. La Figura muestra la Imagen sintética 2. Imagen sintética 2: Nº de líneas: 100 Nº de samples: 100 Nº de bandas: 224 Figura 5.1 Imagen sintética 2 Esta imagen cuenta con 5 endmembers, para mostrar su organización lo mejor es ver los mapas con los que se ha construido la imagen en la Figura 5.2. Proyecto fin de carrera -50- Enrique de la Fuente Milanés

51 Figura 5.2 Mapas de la imagen sintetica 2 Estos endmembers van perdiendo pureza a medida que se alejan de forma radial del pixel más puro, por tanto no resulta tan trivial decir las proporciones de mezcla que existen en un pixel cualquiera de la imagen como ocurría con la imagen sintética 1. Seguidamente la Figura 5.3 muestra la imagen real. Imagen real: Nº de líneas: 350 Nº de samples: 350 Nº de bandas: 191 Figura 5.33 Imagen Imagen real real La figura 5.3 muestra la imagen real utilizada en los experimentos. Esta imagen fue adquirida en 1995 por el sensor AVIRIS sobre la región minera denominada Cuprite, en el estado de Nevada, Estados Unidos. En concreto, la Figura 5.4 muestra la ubicación de la imagen sobre una fotografía aérea de la zona. Visualmente, puede apreciarse la existencia de zonas compuestas por minerales, así como abundantes suelos desnudos y una carretera interestatal que cruza la zona en dirección norte-sur. La imagen consta de 350x350 pixeles, cada uno de los cuales contiene 224 valores de reflectancia en el rango espectral 0.4 a 2.5 µm. Este rango, situado en la región SWIR-II del espectro, se caracteriza porque en él se manifiestan singularidades que permiten discriminar entre una amplia gama de minerales de tipo calizo. Cada valor espectral en el rango anteriormente mencionado equivale a 10 Proyecto fin de carrera -51- Enrique de la Fuente Milanés

52 veces el tanto por ciento de la reflectancia en una determinada longitud de onda. Estos valores han sido obtenidos como resultado de la aplicación del método de corrección atmosférica ATREM, seguido de un post-procesado mediante el método EFFORT sobre la imagen en unidades de radiancia, originalmente capturada por el sensor. AVCUP95 Figura 5.4 Ubicación de la imagen real AVIRIS Cuprite sobre una fotografía aérea de la región minera Cuprite, Nevada, Estados Unidos Algoritmo en la CPU Como hemos dicho antes, hemos adaptado el algoritmo IEA original realizado por el grupo de investigación HYPERCOMP para su ejecución en C en una CPU. Se han realizado ejecuciones con la imagen real, indicando diferentes números de endmembers, que van desde los 5 a los 50. Realizaremos una comparación entre ejecuciones en serie y en serie optimizadas, y sacaremos el speed up, que nos indicará la mejora entre las ejecuciones en serie y las optimizadas, para dar un mayor valor al algoritmo. Proyecto fin de carrera -52- Enrique de la Fuente Milanés

53 5.2.1 Compresión en la CPU Vamos a mostrar los resultados de tiempo de ejecución obtenidos para la compresión de las imágenes en la CPU, tal y como hemos explicado. En este primer apartado, hemos comparado la compilación estándar de C con una compilación optimizada utilizando CFLAGS. Ésta es una variable de entorno para el compilador de gcc que puede ser utilizada para varios tipos de opciones de compilación, como puede ser disminuir los mensajes de depuración, aumentar el nivel de aviso de errores y optimizar la compilación del código producido. En nuestro caso, hemos utilizado la variable O, que hace que la compilación del programa tome algo más de tiempo y utilice bastante más memoria, pero cuyo resultado será una ejecución bastante más rápida, lo que en nuestro caso nos llevará a saber cual es la ejecución más rápida del algoritmo en la GPU. Específicamente, hemos utilizado el nivel de compilación O3, que es el más agresivo a la hora de optimizar grandes bucles. Figura 5.5 Tiempos de compresión en CPU En la Figura 5.5 puede observarse que se consigue una mejora sustancial de Proyecto fin de carrera -53- Enrique de la Fuente Milanés

54 tiempos utilizando la compilación optimizada de gcc, llegando en los casos en los que seleccionamos mayor número de endmembers, a obtener un speed up cercano a cuatro Descompresión en la CPU En este punto se presentan los resultados en tiempo de ejecución para la descompresión en la CPU de la misma forma que en el apartado anterior. Se estudia la comparación entre la ejecución de la compresión en serie estándar y en serie optimizada. Figura 5.6 Tiempos de descompresión en CPU En la Figura 5.6, observamos cómo a medida que tomamos mayor número de endmembers el speed up entre la ejecución en serie y optimizada se hace más importante, llegando a ser incluso un poco mayor que el speed up de la compresión. Vemos que los tiempos de descompresión alcanzados por la ejecución optimizada en el peor de los casos es un poco superior a 3 segundos, un dato que, como veremos un poco más tarde en la comparación con la ejecución de la GPU, se acercará bastante al Proyecto fin de carrera -54- Enrique de la Fuente Milanés

55 tiempo de descompresión de ésta, como muy significativa Algoritmo en la GPU En este apartado nos vamos a centrar en los resultados de tiempo de ejecución de la implementación del algoritmo en la tarjeta gráfica GPU, sobre la que gira todo el trabajo. Vamos a ver cómo se reduce de forma espectacular el tiempo de ejecución comparándolo con la CPU convencional, de manera que posteriormente vamos a poder realizar el speed up para comparar las dos versiones y ver realmente la mejora sustancial que supone utilizar este tipo de tecnología para comprimir imágenes hiperespectrales tal y como se muestra en este trabajo. Como hemos hecho con el algoritmo en la CPU, lo ejecutaremos con la imagen real desde 5 a 50 endmembers Compresión en la GPU Vamos a mostrar los resultados de tiempo de ejecución obtenidos para la compresión de las imágenes en la CPU, tal y como se ha explicado con anterioridad. Figura 5.7 Tiempos de compresión en GPU En la Figura 5.7, puede observarse mediante la comparación entre los tiempos de ejecución de la compresión en la GPU con respecto a la mejor versión que Proyecto fin de carrera -55- Enrique de la Fuente Milanés

56 teníamos en la CPU (serie optimizada) que se alcanza un Speed Up superior a 35 veces el tiempo de GPU Descompresión en la GPU En este subapartado se observan los resultados de tiempo de ejecución obtenidos para la compresión de las imágenes en la CPU, tal y como hemos explicado. Figura 5.8 Tiempos de descompresión en GPU La Figura 5.8 muestra cómo en los tiempos de descompresión, en la GPU el tiempo es prácticamente constante, puesto que la ejecución se realiza siempre de la misma forma en el Kernel del algoritmo, con el mismo número de hilos y bloques, sea cual sea el tamaño de la imagen comprimida de entrada. Sin embargo los tiempos de CPU poco a poco van aumentando y, aunque se percibe una gran mejora con respecto al algoritmo estándar en C, se continúan observando diferencias con respecto a la GPU. Proyecto fin de carrera -56- Enrique de la Fuente Milanés

57 5.4. Análisis cualitativo de resultados Este apartado comienza con el análisis de los resultados de las imágenes descomprimidas para estudiar en qué medida son iguales que la imagen original, es decir, vamos a realizar distintas pruebas para determinar la calidad de las imágenes reconstruidas por el algoritmo, aplicando varios métodos diferentes para ello: calcular la precisión de la imagen reconstruida, calcular el error de la imagen reconstruida y realizar una comparación de las firmas espectrales entre la imagen original y las imágenes finales Análisis de precisión Se inicia este punto con la precisión estricta, para la imagen sintética 2. Para ver donde se sitúan los endmembers hacemos uso de los mapas de esta imagen. Éstos están en escala de grises y asignan el valor 255 a la posición de un endmember y a medida que nos alejamos de esa posición asignan valores más pequeños hasta llegar a 0 donde la presencia de ese endmember es nula. Seguidamente se presenta el proceso para saber si un píxel seleccinado realmente es un endmember. Se leen por separado cada uno de los mapas y se almacenan en matrices diferentes. Se ejecuta el algoritmo y se observan qué píxeles ha seleccionado como endmembers, y cada vez que un pixel seleccionado como endmember realmente sea un endmember lo interpretaremos como un 1, en caso de que no sea un endmember será un 0. Finalmente: Precisión_estricta = aciertos / nº total de endmembers * 100 El proceso se muestra en la Figura 5.9. Proyecto fin de carrera -57- Enrique de la Fuente Milanés

58 Figura 5.9 Tiempos de descompresión en GPU Para la precisión ponderada, mediante el uso de los mapas de abundancia de la imagen original podemos conocer las proporciones exactas en las que cada endmember está presente en un píxel dado. En cada píxel los valores de estos mapas de abundancias son positivos y suman 1. Para calcular la precisión en el píxel i nos situaremos en el píxel i de los mapas de abundancias y nos quedaremos con la mayor abundancia, ésta pertenece al endmember que nuestro algoritmo pretendía encontrar. El valor de ésta abundancia nos dará la precisión con la que se ha elegido el píxel i, de manera que si este valor es 1 (el resto de abundancias valdrían 0) el acierto habrá sido del 100% puesto que la posición i se corresponde con la posición real de un endmember en la imagen. Si el valor es de 0.5, el acierto será del 50%, etc. En definitiva, se escala la precisión entre 0 y 100 en función del valor de la abundancia máxima en un píxel dado. Para finalizar se toman esos valores, se suman y se dividen entre el número de endmembers total de la imagen. Resultando: Precisión_ponderada = valores ponderados / nº total de endmembers * 100 El proceso simplificado se muestra en la Figura Proyecto fin de carrera -58- Enrique de la Fuente Milanés

59 Figura 5.10 Proceso de análisis de precisión ponderada Análisis del error En este apartado, vamos a realizar el análisis de las imágenes de error generadas por el algoritmo, el cual hemos explicado ampliamente durante todo el apartado 4, y en el que también se explica en general la metodología para calcular el error reconstruyendo la imagen, llamado RMSE (root mean square error). Para calcular dicho error, hemos usado la imagen de error que genera la implementación del algoritmo IEA. En primer lugar veremos las imágenes de error generadas por el algoritmo para la imagen real Cuprite utilizando diferente número de endmembers. Podremos observar cómo evoluciona el error de reconstrucción de la imagen a medida que crece el número de endmembers escogidos, además se probará también cómo la distribución del error es la adecuada. Proyecto fin de carrera -59- Enrique de la Fuente Milanés

60 Figura 5.11 Imágenes de error de las imágenes comprimidas con entre 5 y 20 endmembers En la Figura 5.11 se muestran las imágenes de error de las ejecuciones del algoritmo para entre 5 y 20 endmembers. Se observa en la imagen con 5 endmembers un error de reconstrucción relativamente alto en algunas zonas de dicha imagen, como se aprecia por la tonalidad en rojo en la representación gráfica del error. Sin embargo, se observa que la distribución del error es en general la adecuada, con muchos tonos azules y correspondiendo las tonalidades rojas a anomalías en la imagen, lo cual indica que el error de reconstrucción aparece adecuadamente distribuido en la imagen en términos espaciales. Podemos comprobar cómo la evolución del error de reconstrucción disminuye a medida que aumentamos el número de endmembers de manera muy significativa para un número de endmembers bajo. En la imagen de error para 10 endmembers, observamos cómo el error de reconstrucción de la imagen ha bajado enormemente con respecto a la imagen anterior, observándose un volumen de tonos azules (indicando error de Proyecto fin de carrera -60- Enrique de la Fuente Milanés

61 reconstrucción bajo) muy elevado con respecto a la imagen de error con 5 endmembers. En las imágenes de error para la compresión con 15 y 20 endmembers, se observa que el error disminuye de manera significativa y homogénea en toda la imagen, mostrándose más tonos azules claro en la imagen de 15 endmembers. Comprobamos sin embargo, cómo el error en la reconstrucción de la imagen para 20 endmembers, aun siendo relativamente bajo con respecto a las anteriores, sigue mostrando algunos tonos azules claro e incluso alguno amarillo (que indica un error de reconstrucción moderado), mostrando anomalías en el error con respecto a las demás zonas de la imagen. Figura 5.12 Imágenes de error de las imágenes comprimidas con entre 25 y 45 endmembers Proyecto fin de carrera -61- Enrique de la Fuente Milanés

62 La Figura 5.12 muestra las imágenes de error obtenidas en la compresión de la imagen original con entre 25 y 45 endmembers. Observamos en la imagen de error para 25 endmembers, que los tonos azul claro han disminuido hasta prácticamente desaparecer. También habíamos observado en la imagen de error para 20 endmembers de la Figura 5.11 que aparecía algún tono amarillo, que en la imagen de 25 endmembers ya no aparece, siendo el error en general muy bajo pero viendo en ella la distribución homogénea del error. En general en la Figura 5.12 vemos el error disminuir en menor medida que en las anteriores, puesto que el algoritmo está optimizando la reconstrucción en cada iteración. La Figura 5.13 corresponde al error cometido en la imagen sintética2 que antes hemos presentado, que se ha obtenido comprimiendo la imagen utilizando el algoritmo con 5 endmembers, puesto que esta imagen como se ha presentado en el apartado 5.1, se construyó utilizando ese número de endmembers. Figura 5.13 Imagen de error de Sintética con 5 endmembers Como vemos, la imagen de error indica dónde el algoritmo ha detectado las zonas con mayor error, que como hemos explicado ampliamente en el apartado del IEA, son las que identifica como endmembers. En esta imagen de error podemos Proyecto fin de carrera -62- Enrique de la Fuente Milanés

EL MODELO DE DATOS RASTER

EL MODELO DE DATOS RASTER EL MODELO DE DATOS RASTER El modelo de datos raster, como señala Bosque (1992), es el modelo de datos complementario al modelo vectorial presentado anteriormente. Tiene como principal característica el

Más detalles

Gestión de la Configuración

Gestión de la Configuración Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de

Más detalles

Capítulo 5. Cliente-Servidor.

Capítulo 5. Cliente-Servidor. Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 INTRODUCCIÓN El elemento hardware de un sistema básico de proceso de datos se puede estructurar en tres partes claramente diferenciadas en cuanto a sus funciones:

Más detalles

Modelo de aplicaciones CUDA

Modelo de aplicaciones CUDA Modelo de aplicaciones CUDA Utilización de GPGPUs: las placas gráficas se utilizan en el contexto de una CPU: host (CPU) + uno o varios device o GPUs Procesadores masivamente paralelos equipados con muchas

Más detalles

Introducción a las redes de computadores

Introducción a las redes de computadores Introducción a las redes de computadores Contenido Descripción general 1 Beneficios de las redes 2 Papel de los equipos en una red 3 Tipos de redes 5 Sistemas operativos de red 7 Introducción a las redes

Más detalles

Decisión: Indican puntos en que se toman decisiones: sí o no, o se verifica una actividad del flujo grama.

Decisión: Indican puntos en que se toman decisiones: sí o no, o se verifica una actividad del flujo grama. Diagrama de Flujo La presentación gráfica de un sistema es una forma ampliamente utilizada como herramienta de análisis, ya que permite identificar aspectos relevantes de una manera rápida y simple. El

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

Arquitecturas GPU v. 2013

Arquitecturas GPU v. 2013 v. 2013 Stream Processing Similar al concepto de SIMD. Data stream procesado por kernel functions (pipelined) (no control) (local memory, no cache OJO). Data-centric model: adecuado para DSP o GPU (image,

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS

HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS Las primeras computadoras eran enormes máquinas que se ejecutaban desde una consola. El programador, quien además operaba el sistema de computación, debía

Más detalles

Unidad 1. Fundamentos en Gestión de Riesgos

Unidad 1. Fundamentos en Gestión de Riesgos 1.1 Gestión de Proyectos Unidad 1. Fundamentos en Gestión de Riesgos La gestión de proyectos es una disciplina con la cual se integran los procesos propios de la gerencia o administración de proyectos.

Más detalles

Guía de uso del Cloud Datacenter de acens

Guía de uso del Cloud Datacenter de acens guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar

Más detalles

Conclusiones. Particionado Consciente de los Datos

Conclusiones. Particionado Consciente de los Datos Capítulo 6 Conclusiones Una de las principales conclusiones que se extraen de esta tesis es que para que un algoritmo de ordenación sea el más rápido para cualquier conjunto de datos a ordenar, debe ser

Más detalles

Kepler. 1. Presentación de la arquitectura. Índice de contenidos [25 diapositivas] Kepler, Johannes (1571-1630)

Kepler. 1. Presentación de la arquitectura. Índice de contenidos [25 diapositivas] Kepler, Johannes (1571-1630) Índice de contenidos [25 diapositivas] Manuel Ujaldón Nvidia CUDA Fellow Dpto. Arquitectura de Computadores Universidad de Málaga 1. Presentación de la arquitectura [3] 2. Los cores y su organización [7]

Más detalles

Interoperabilidad de Fieldbus

Interoperabilidad de Fieldbus 2002 Emerson Process Management. Todos los derechos reservados. Vea este y otros cursos en línea en www.plantwebuniversity.com. Fieldbus 201 Interoperabilidad de Fieldbus Generalidades Qué es interoperabilidad?

Más detalles

Sistemas de Información Geográficos (SIG o GIS)

Sistemas de Información Geográficos (SIG o GIS) Sistemas de Información Geográficos (SIG o GIS) 1) Qué es un SIG GIS? 2) Para qué sirven? 3) Tipos de datos 4) Cómo trabaja? 5) Modelos de datos, Diseño Conceptual 6) GeoDataase (GD) 7) Cómo evaluamos

Más detalles

ADT CONSULTING S.L. http://www.adtconsulting.es PROYECTO DE DIFUSIÓN DE BUENAS PRÁCTICAS

ADT CONSULTING S.L. http://www.adtconsulting.es PROYECTO DE DIFUSIÓN DE BUENAS PRÁCTICAS ADT CONSULTING S.L. http://www.adtconsulting.es PROYECTO DE DIFUSIÓN DE BUENAS PRÁCTICAS ESTUDIO SOBRE EL POSICIONAMIENTO EN BUSCADORES DE PÁGINAS WEB Y LA RELEVANCIA DE LA ACTUALIZACIÓN DE CONTENIDOS

Más detalles

www.gtbi.net soluciones en Fotogrametría Digital El software de análisis más potente basado en objetos de datos geoespaciales. Fotogrametría Digital

www.gtbi.net soluciones en Fotogrametría Digital El software de análisis más potente basado en objetos de datos geoespaciales. Fotogrametría Digital soluciones en Fotogrametría Digital El software de análisis más potente basado en objetos de datos geoespaciales. Fotogrametría Digital www.gtbi.net LA MANERA DE ENTENDER EL MUNDO ESTÁ CAMBIANDO El usuario

Más detalles

1.- INTRODUCCIÓN 2.- PARÁMETROS

1.- INTRODUCCIÓN 2.- PARÁMETROS 1.- INTRODUCCIÓN Hemos diseñado una aplicación que facilite el envío a las entidades bancarias de las de cobro por domiciliación. La entrada de esta aplicación pueden ser, tanto ficheros cuyos formatos

Más detalles

Bechtle Solutions Servicios Profesionales

Bechtle Solutions Servicios Profesionales Soluciones Tecnología Bechtle Solutions Servicios Profesionales Fin del servicio de soporte técnico de Windows Server 2003 No hacer nada puede ser un riesgo BECHTLE Su especialista en informática Ahora

Más detalles

SEGURIDAD Y PROTECCION DE FICHEROS

SEGURIDAD Y PROTECCION DE FICHEROS SEGURIDAD Y PROTECCION DE FICHEROS INTEGRIDAD DEL SISTEMA DE ARCHIVOS ATAQUES AL SISTEMA PRINCIPIOS DE DISEÑO DE SISTEMAS SEGUROS IDENTIFICACIÓN DE USUARIOS MECANISMOS DE PROTECCIÓN Y CONTROL INTEGRIDAD

Más detalles

Capitulo V Administración de memoria

Capitulo V Administración de memoria Capitulo V Administración de memoria Introducción. Una de las tareas más importantes y complejas de un sistema operativo es la gestión de memoria. La gestión de memoria implica tratar la memoria principal

Más detalles

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas: SISTEMAS DISTRIBUIDOS DE REDES 1. SISTEMAS DISTRIBUIDOS Introducción y generalidades La computación desde sus inicios ha sufrido muchos cambios, desde los grandes equipos que permitían realizar tareas

Más detalles

Capítulo 9. Archivos de sintaxis

Capítulo 9. Archivos de sintaxis Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta

Más detalles

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto

Más detalles

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos 2.1. Principios básicos del Modelado de Objetos UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos Hoy en día muchos de los procesos que intervienen en un negocio o empresa y que resuelven

Más detalles

CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK. www.formacionhadoop.com

CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK. www.formacionhadoop.com CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK www.formacionhadoop.com Índice 1 Qué es Big Data? 2 Problemas con los sistemas tradicionales 3 Qué es Spark? 3.1 Procesamiento de datos distribuido

Más detalles

UNIVERSIDAD DE SALAMANCA

UNIVERSIDAD DE SALAMANCA UNIVERSIDAD DE SALAMANCA FACULTAD DE CIENCIAS INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Resumen del trabajo práctico realizado para la superación de la asignatura Proyecto Fin de Carrera. TÍTULO SISTEMA

Más detalles

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013 FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS CNCA Abril 2013 6. COMPUTACIÓN DE ALTO RENDIMIENTO Ricardo Román DEFINICIÓN High Performance Computing - Computación de Alto Rendimiento Técnicas, investigación

Más detalles

GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS

GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS GPU IMPLEMENTATIONS OF SCHEDULING HEURISTICS FOR HETEROGENEOUS COMPUTING ENVIRONMENTS MAURO CANABÉ SERGIO NESMACHNOW Centro de Cálculo, Facultad de Ingeniería Universidad de la República, Uruguay GPU IMPLEMENTATIONS

Más detalles

El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos.

El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos. Gestión de proyectos Duración: 45 horas Objetivos: El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos. Contenidos:

Más detalles

Gestión de proyectos

Gestión de proyectos Gestión de proyectos Horas: 45 El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos. Gestión de proyectos El

Más detalles

www.fundibeq.org Además se recomienda su uso como herramienta de trabajo dentro de las actividades habituales de gestión.

www.fundibeq.org Además se recomienda su uso como herramienta de trabajo dentro de las actividades habituales de gestión. TORMENTA DE IDEAS 1.- INTRODUCCIÓN Este documento sirve de guía para la realización de una Tormenta de Ideas, también llamado "Brainstorming o Lluvia de ideas, la herramienta por medio de la cual se puede

Más detalles

Electrónica Digital II

Electrónica Digital II Electrónica Digital II M. C. Felipe Santiago Espinosa Aplicaciones de los FPLDs Octubre / 2014 Aplicaciones de los FPLDs Los primeros FPLDs se usaron para hacer partes de diseños que no correspondían a

Más detalles

Resumen de la Tesina. Autor: Adrià Batet López. Tutor: Víctor Pascual Ayats

Resumen de la Tesina. Autor: Adrià Batet López. Tutor: Víctor Pascual Ayats Inventario y geolocalización de las actividades comerciales en las plantas bajas de los edificios de L Hospitalet de Llobregat. Aplicación web de recursos para el ciudadano. Resumen de la Tesina. Autor:

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE MANUAL DE USUARIO DE ABANQ 1 Índice de contenido 1 ÁREA DE FACTURACIÓN......4 1.1 ÁREA DE FACTURACIÓN::PRINCIPAL...4 1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA...4 1.1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA::General...4

Más detalles

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN

DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN Francisco Belmonte Díaz Diseño e implementación de Sistemas Informáticos. Coordinación de Tareas de Programación Servicio de Gestión Informática. Consejería

Más detalles

Tema 4. Gestión de entrada/salida

Tema 4. Gestión de entrada/salida Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada

Más detalles

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2 K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2 Historia de revisiones Fecha VersiónDescripción Autor 08/10/2009 1.0 Creación del documento.

Más detalles

Capitulo I. Introducción

Capitulo I. Introducción Capitulo I. Introducción 1.1 Descripción del trabajo El ser humano, como todos sabemos tiene la necesidad de comunicarse, de ser escuchado y sobretodo interactuar con los demás seres vivos que lo rodean.

Más detalles

forma de entrenar a la nuerona en su aprendizaje.

forma de entrenar a la nuerona en su aprendizaje. Sistemas expertos e Inteligencia Artificial,Guía5 1 Facultad : Ingeniería Escuela : Computación Asignatura: Sistemas expertos e Inteligencia Artificial Tema: SISTEMAS BASADOS EN CONOCIMIENTO. Objetivo

Más detalles

RFID APLICADO A LA GESTIÓN DOCUMENTAL

RFID APLICADO A LA GESTIÓN DOCUMENTAL RFID APLICADO A LA GESTIÓN DOCUMENTAL Autor: José Angel Blanco González Empresa: Treelogic Telemática y Lógica Racional para la Empresa Europea S.L. Línea de trabajo: Tecnologías para el desarrollo de

Más detalles

Práctica 5. Curso 2014-2015

Práctica 5. Curso 2014-2015 Prácticas de Seguridad Informática Práctica 5 Grado Ingeniería Informática Curso 2014-2015 Universidad de Zaragoza Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas

Más detalles

INFORME EJECUTIVO DE IDC

INFORME EJECUTIVO DE IDC INFORME EJECUTIVO DE IDC De qué forma Big Data transforma la protección y el almacenamiento de datos Agosto 2012 Escrito por Carla Arend Patrocinado por CommVault Introducción: De qué forma Big Data transforma

Más detalles

6. DESCRIPCIÓN DEL SOFTWARE

6. DESCRIPCIÓN DEL SOFTWARE Capítulo 2. Equipo 6. DESCRIPCIÓN DEL SOFTWARE 6.1 Introducción El equipo de medida descrito en el capítulo anterior lleva asociado un software que hace de sistema de control del proceso de medición. Este

Más detalles

RESUMEN CUADRO DE MANDO

RESUMEN CUADRO DE MANDO 1. Objetivo Los objetivos que pueden alcanzarse, son: RESUMEN CUADRO DE MANDO Disponer eficientemente de la información indispensable y significativa, de modo sintético, conectada con los objetivos. Facilitar

Más detalles

Volkswagen, Audi y Škoda

Volkswagen, Audi y Škoda Plataforma de Soporte Técnico a Talleres Manual de Iniciación Usuario Taller Oficial (v.2.0) 14 03 07 p. 1 Presentación... 3 Acceso... 4 Modificación de datos... 6 Pantalla principal... 7 Catálogo de útiles

Más detalles

1.1 EL ESTUDIO TÉCNICO

1.1 EL ESTUDIO TÉCNICO 1.1 EL ESTUDIO TÉCNICO 1.1.1 Definición Un estudio técnico permite proponer y analizar las diferentes opciones tecnológicas para producir los bienes o servicios que se requieren, lo que además admite verificar

Más detalles

Manual de utilización y uso del Winrar

Manual de utilización y uso del Winrar Manual de utilización y uso del Winrar Descripción del Winrar. El programa Winrar es el compresor (y descompresor) más utilizado. Si utilizamos programas de intercambio como emule o Kazaa se nos hará casi

Más detalles

Operación de Microsoft Excel

Operación de Microsoft Excel Representación gráfica de datos Generalidades Excel puede crear gráficos a partir de datos previamente seleccionados en una hoja de cálculo. El usuario puede incrustar un gráfico en una hoja de cálculo,

Más detalles

El ABC de Big Data: Analytics, Bandwidth and Content

El ABC de Big Data: Analytics, Bandwidth and Content Documento técnico El ABC de Big Data: Analytics, Bandwidth and Content Richard Treadway e Ingo Fuchs, NetApp, Noviembre de 2011 WP-7147 RESUMEN EJECUTIVO Las empresas entran en una nueva era en la que

Más detalles

Indicaciones específicas para los análisis estadísticos.

Indicaciones específicas para los análisis estadísticos. Tutorial básico de PSPP: Vídeo 1: Describe la interfaz del programa, explicando en qué consiste la vista de datos y la vista de variables. Vídeo 2: Muestra cómo crear una base de datos, comenzando por

Más detalles

Plantilla para Casos de Éxito

Plantilla para Casos de Éxito Plantilla para Casos de Éxito Nombre/Actividad de la EMPRESA objeto de estudio: INSIGNA Sector al que pertenece: Presidente o gerente de la empresa: Antonio Gil Moreno Localización: Valencia Facturación

Más detalles

5.4. Manual de usuario

5.4. Manual de usuario 5.4. Manual de usuario En esta sección se procederá a explicar cada una de las posibles acciones que puede realizar un usuario, de forma que pueda utilizar todas las funcionalidades del simulador, sin

Más detalles

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora Plataforma e-ducativa Aragonesa Manual de Administración Bitácora ÍNDICE Acceso a la administración de la Bitácora...3 Interfaz Gráfica...3 Publicaciones...4 Cómo Agregar una Publicación...4 Cómo Modificar

Más detalles

Introducción En los años 60 s y 70 s cuando se comenzaron a utilizar recursos de tecnología de información, no existía la computación personal, sino que en grandes centros de cómputo se realizaban todas

Más detalles

Aproximación local. Plano tangente. Derivadas parciales.

Aproximación local. Plano tangente. Derivadas parciales. Univ. de Alcalá de Henares Ingeniería de Telecomunicación Cálculo. Segundo parcial. Curso 004-005 Aproximación local. Plano tangente. Derivadas parciales. 1. Plano tangente 1.1. El problema de la aproximación

Más detalles

Mejores prácticas para el éxito de un sistema de información. Uno de los problemas de información dentro de las empresas es contar con datos

Mejores prácticas para el éxito de un sistema de información. Uno de los problemas de información dentro de las empresas es contar con datos ANEXO VI. Mejores prácticas para el éxito de un sistema de información Uno de los problemas de información dentro de las empresas es contar con datos importantes del negocio y que éstos estén aislados

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

SCT3000 95. Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A. microtes@arrakis.es

SCT3000 95. Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A. microtes@arrakis.es SCT3000 95 Versión 3.5 Software para la calibración de transductores de fuerza. Microtest S.A. microtes@arrakis.es Introducción El programa SCT3000 95, es un sistema diseñado para la calibración automática

Más detalles

PLAN DE MEJORAS. Herramienta de trabajo. Agencia Nacional de Evaluación de la Calidad y Acreditación

PLAN DE MEJORAS. Herramienta de trabajo. Agencia Nacional de Evaluación de la Calidad y Acreditación PLAN DE MEJORAS Herramienta de trabajo Agencia Nacional de Evaluación de la Calidad y Acreditación Índice 1 Introducción...3 2 Pasos a seguir para la elaboración del plan de mejoras...5 2.1 Identificar

Más detalles

Proyecto Scratch: http://scratch.mit.edu/projects/38518614/

Proyecto Scratch: http://scratch.mit.edu/projects/38518614/ Proyecto Scratch: http://scratch.mit.edu/projects/38518614/ SISTEMAS DE NUMERACÍON Dos de los sistemas de numeración más utilizados son el sistema decimal, que se emplea en la vida cotidiana, y el sistema

Más detalles

CMMI (Capability Maturity Model Integrated)

CMMI (Capability Maturity Model Integrated) CMMI (Capability Maturity Model Integrated) El SEI (software engineering institute) a mediados de los 80 desarrolló el CMM (modelo de madurez de la capacidad de software). CMMI: CMM integrado, una mezcla

Más detalles

1.2 SISTEMAS DE PRODUCCIÓN

1.2 SISTEMAS DE PRODUCCIÓN 19 1.2 SISTEMAS DE PRODUCCIÓN Para operar en forma efectiva, una empresa manufacturera debe tener sistemas que le permitan lograr eficientemente el tipo de producción que realiza. Los sistemas de producción

Más detalles

Arquitectura Von Neumann

Arquitectura Von Neumann Arquitectura Von Neumann Arquitectura Von Neumann Establecida en 1945 por Von Neumann Modelo básico de arquitectura utilizado en la mayoría de los computadores Su idea es la de conectar permanentemente

Más detalles

2.11.1 CONTRATAS Y SUBCONTRATAS NOTAS

2.11.1 CONTRATAS Y SUBCONTRATAS NOTAS NOTAS 1 Cuando en un mismo centro de trabajo desarrollen actividades trabajadores de dos o más empresas, éstas deberán cooperar en la aplicación de la normativa sobre prevención de riesgos laborales. A

Más detalles

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los

Más detalles

El pipeline gráfico Figura 3.1

El pipeline gráfico Figura 3.1 El pipeline gráfico Para llevar a cabo una representación virtual de un ambiente tridimensional, se realiza un modelado del escenario. Dicho modelo incluye la representación geométrica de los objetos presentes,

Más detalles

Introducción. Metadatos

Introducción. Metadatos Introducción La red crece por momentos las necesidades que parecían cubiertas hace relativamente poco tiempo empiezan a quedarse obsoletas. Deben buscarse nuevas soluciones que dinamicen los sistemas de

Más detalles

El Outsourcing como Opción Estratégica

El Outsourcing como Opción Estratégica El Outsourcing como Opción Estratégica Improven Consultores Colón 18, 2ºF 46004 Valencia Tel: 96 352 18 22 Fax: 96 352 20 79 www.improven-consultores.com info@improven-consultores.com El outsourcing como

Más detalles

TEMA 2: Representación de la Información en las computadoras

TEMA 2: Representación de la Información en las computadoras TEMA 2: Representación de la Información en las computadoras Introducción Una computadora es una máquina que procesa información y ejecuta programas. Para que la computadora ejecute un programa, es necesario

Más detalles

Guía de Planificación Estratégica de la Informática Educativa

Guía de Planificación Estratégica de la Informática Educativa Cierre de Brecha Digital Guía de Planificación Estratégica de la Informática Educativa Dirigida al Sostenedor y al Establecimiento Educacional Estimado Sostenedor y Director, El Ministerio de Educación

Más detalles

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true I. FUNDAMENTOS 3. Representación de la información Introducción a la Informática Curso de Acceso a la Universidad

Más detalles

U.T. 2 Planificación de Proyectos

U.T. 2 Planificación de Proyectos U.T. 2 Planificación de Proyectos En el tema anterior hemos visto que es determinante una buena planificación del proyecto, ya que de no realizarse ésta, nunca sabremos el tiempo que resta para la finalización

Más detalles

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN Tabla de Contenidos LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN... 1 Tabla de Contenidos... 1 General... 2 Uso de los Lineamientos Estándares...

Más detalles

Leica Application Suite

Leica Application Suite Leica Application Suite Macro Editor y Macro Runner Personalizado y automatizado 2 Las instrucciones se pueden pausar opcionalmente cuando la rutina se ejecuta para interactuar con las imágenes. Las instrucciones

Más detalles

1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1

1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 5.1.3 Multiplicación de números enteros. El algoritmo de la multiplicación tal y como se realizaría manualmente con operandos positivos de cuatro bits es el siguiente: 1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0

Más detalles

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES Tema: Cartas de Servicios Primera versión: 2008 Datos de contacto: Evaluación y Calidad. Gobierno de Navarra. evaluacionycalidad@navarra.es

Más detalles

Es de aplicación a todas aquellas situaciones en las que se necesita desplegar un objetivo para obtener una visión clara de cómo debe ser alcanzado.

Es de aplicación a todas aquellas situaciones en las que se necesita desplegar un objetivo para obtener una visión clara de cómo debe ser alcanzado. DIAGRAMA DE AÁRBOL 1.- INTRODUCCIÓN Este documento describe el proceso de construcción de un Diagrama de Árbol, mediante el cual se dispone de una metodología simple y sistemática para la identificación

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

Roberto Quejido Cañamero

Roberto Quejido Cañamero Crear un documento de texto con todas las preguntas y respuestas del tema. Tiene que aparecer en él todos los contenidos del tema. 1. Explica qué son los modos de presentación en Writer, cuáles hay y cómo

Más detalles

IV. Implantación del sistema.

IV. Implantación del sistema. IV. Implantación del sistema. Para hablar sobre el proceso de desarrollo del sistema de Recuperación de Información Visual propuesto, empezaremos hablando del hardware utilizado, las herramientas de software

Más detalles

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar CAPITULO 4 Requerimientos, Análisis y Diseño El presente capítulo explica los pasos que se realizaron antes de implementar el sistema. Para esto, primero se explicarán los requerimientos que fueron solicitados

Más detalles

Presentación de Pyramid Data Warehouse

Presentación de Pyramid Data Warehouse Presentación de Pyramid Data Warehouse Pyramid Data Warehouse tiene hoy una larga historia, desde 1994 tiempo en el que su primera versión fue liberada, hasta la actual versión 8.00. El incontable tiempo

Más detalles

Speed EAM La información a un clic

Speed EAM La información a un clic Guía de visita para la página de demostración y pruebas de Speed EAM. Speed EAM La información a un clic El equipo de desarrollo TABLA DE CONTENIDO Introducción... 3 Entrar en el sistema... 4 Datos generales...

Más detalles

Técnicas de Desarrollo de Programas Ingeniería Informática Curso 2008 / 2009. Ejercicios de Patrones de Diseño:

Técnicas de Desarrollo de Programas Ingeniería Informática Curso 2008 / 2009. Ejercicios de Patrones de Diseño: Técnicas de Desarrollo de Programas Ingeniería Informática Curso 2008 / 2009 Ejercicios de Patrones de Diseño: Iterator, Composite, Strategy, Observer, Decorator, Visitor Ejercicio 1 (examen de junio año

Más detalles

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A)

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A) APRENDERAPROGRAMAR.COM QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A) Sección: Divulgación Categoría: Herramientas Informáticas Fecha

Más detalles

DE VIDA PARA EL DESARROLLO DE SISTEMAS

DE VIDA PARA EL DESARROLLO DE SISTEMAS MÉTODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS 1. METODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS CICLO DE VIDA CLÁSICO DEL DESARROLLO DE SISTEMAS. El desarrollo de Sistemas, un proceso

Más detalles

Fuente: http://www.kzgunea.net

Fuente: http://www.kzgunea.net APRENDE A NAVEGAR SERVICIOS DE INTERNET Internet es como el mercado del pueblo en día de feria. En el mercado los puestos se organizan por secciones: por un lado la fruta, por otro las hortalizas, por

Más detalles

TPV VIRTUAL O PASARELA DE PAGOS DE CAJASTUR

TPV VIRTUAL O PASARELA DE PAGOS DE CAJASTUR TPV VIRTUAL O PASARELA DE PAGOS DE CAJASTUR El TPV (Terminal Punto de Venta) Virtual es un producto dirigido a empresas y comercios, con tienda en internet, que permite el cobro de las ventas realizadas

Más detalles

ANEXO 26-A COMITÉ PERMANENTE DE INTERPRETACIÓN SIC N 32 ACTIVOS INTANGIBLES COSTOS DE SITIOS WEB. (Modificada en 2008) (IV Difusión)

ANEXO 26-A COMITÉ PERMANENTE DE INTERPRETACIÓN SIC N 32 ACTIVOS INTANGIBLES COSTOS DE SITIOS WEB. (Modificada en 2008) (IV Difusión) ANEXO 26-A COMITÉ PERMANENTE DE INTERPRETACIÓN SIC N 32 ACTIVOS INTANGIBLES COSTOS DE SITIOS WEB (Modificada en 2008) (IV Difusión) Interpretación SIC-32 Activos Intangibles - Costos de Sitios Web Referencias

Más detalles

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl 1 Colección de Tesis Digitales Universidad de las Américas Puebla Morales Salcedo, Raúl En este último capitulo se hace un recuento de los logros alcanzados durante la elaboración de este proyecto de tesis,

Más detalles

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net 2012 Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net Servinet Sistemas y Comunicación S.L. www.softwaregestionproyectos.com Última Revisión: Febrero

Más detalles

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation.

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation. WINDOWS Windows, Es un Sistema Operativo. Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation. Dentro de los tipos de Software es un tipo de software de Sistemas. Windows

Más detalles

La subcontratación como herramienta para la gestión logística

La subcontratación como herramienta para la gestión logística 1 La subcontratación como herramienta para la gestión logística En este artículo se presenta la subcontratación de servicios logísticos como una herramienta que permite optimizar la gestión logística de

Más detalles

CONCEPTOS BASICOS DE IMAGEN DIGITAL

CONCEPTOS BASICOS DE IMAGEN DIGITAL CONCEPTOS BASICOS DE IMAGEN DIGITAL 1- Conceptos Básicos Una imagen analógica es una imagen natural captada con una cámara o cualquier otro instrumento óptico, presenta unas características de sombras

Más detalles