Clusters frente a GPUs para Detección Automática de ...diferenciadas. El particionamiento...

8
Clusters frente a GPUs para Detección Automática de Objetivos en Imágenes Hiperespectrales de la Superficie Terrestre Abel Paz Grupo Computación Hiperespectral (HYPERCOMP) Dept. Tecnología de Computadores y Comunicaciones Universidad de Extremadura, Excuela Politécnica Avenida de la Universidad s/n, E-10071 Cáceres [email protected] Antonio Plaza Grupo Computación Hiperespectral (HYPERCOMP) Dept. Tecnología de Computadores y Comunicaciones Universidad de Extremadura, Excuela Politécnica Avenida de la Universidad s/n, E-10071 Cáceres [email protected] Resumen El núcleo del presente trabajo viene dado por la propuesta de nuevos algoritmos paralelos para detección de targets o anomalías en imágenes hiperespectrales. Una vez introducida la base teórica del estudio se presentan los nuevos algoritmos paralelos desarrollados, comentando en detalle cada uno de los pasos que se han seguido en su desarrollo y comentando las decisiones de diseño adoptadas. Tras presentar los nuevos algoritmos paralelos desarrollados con motivo del presente trabajo, realizamos un detallado estudio cuantitativo y comparativo de su rendimiento en dos tipos de arquitecturas paralelas específicas: el cluster Thunderhead del centro NASA Goddard Space Flight Center en Maryland, Estados Unidos, y una tarjeta gráfica programable de NVidia (modelo 9800 GX2). Los resultados experimentales han sido obtenidos en el contexto de una aplicación real de gran relevancia social, consistente en la detección de los incendios que se propagaron en los días posteriores al atentado terrorista del World Trade Center en Nueva York. 1. Introducción El ser humano siempre ha deseado poder observar la Tierra de forma remota, y para realizar esa labor ha conseguido desarrollar instrumentos de medida de muy elevada resolución espacial y espectral. El resultado de un proceso de observación remota es una imagen hiperespectral. [1]. Los sensores hiperespectrales que se utilizan permiten adquirir imágenes digitales con una gran cantidad de canales espectrales muy cercanos entre sí, obteniendo para cada porción de la escena o píxel, una firma espectral característica de cada material [2]. Si intentamos representar una imagen hiperespectral de forma gráfica obtendríamos un cubo cuyas dos primeras dimensiones representarían la ubicación en el espacio de un píxel determinado de la imagen y una tercera dimensión que representaría la singularidad espectral de cada píxel según diferentes longitudes de onda [3] (ver Figura 1). La mayoría de las técnicas de análisis hiperespectral desarrolladas hasta la fecha presuponen que la medición obtenida por el sensor en un determinado píxel viene dada por la contribución de diferentes materiales que residen a nivel sub-píxel y que interactúan según un modelo lineal (ver Figura 2) o no lineal [4]. El fenómeno de la mezcla puede venir ocasionado por una insuficiente resolución espacial del sensor, pero lo cierto es que este fenómeno ocurre de forma natural en el mundo real, por lo que el diseño de técnicas capaces de modelar este fenómeno de manera adecuada resulta imprescindible. Las técnicas de desmezclado, detección de targets y análisis de imágenes hiperespectrales son muy costosas desde el punto de vista computacional, debido a que se basan en la realización de operaciones matriciales. Como posible ventaja, muchas de estas operaciones tienen un carácter repetitivo que hacen posible paralelizar [5] al menos parte de estos algoritmos, con el consiguiente aumento significativo en el rendimiento y consiguiendo en algunos casos la posibilidad de obtener respuestas en tiempo real. La reciente introducción de las GPUs en el mundo de la supercomputación abre un nuevo abanico de posibilidades para este tipo de algoritmos [5]. En el presente trabajo, describimos nuevas implementaciones paralelas de algoritmos de detección de objetivos o targets en imágenes hiperespectrales de la superficie terrestre, utilizando para ello GPUs de NVIDIA. Estas tarjetas son susceptibles de ser utilizadas para procesamiento a bordo.

Transcript of Clusters frente a GPUs para Detección Automática de ...diferenciadas. El particionamiento...

Clusters frente a GPUs para Detección Automática de Objetivos

en Imágenes Hiperespectrales de la Superficie Terrestre

Abel Paz Grupo Computación Hiperespectral (HYPERCOMP)

Dept. Tecnología de Computadores y Comunicaciones Universidad de Extremadura, Excuela Politécnica

Avenida de la Universidad s/n, E-10071 Cáceres

[email protected]

Antonio Plaza Grupo Computación Hiperespectral (HYPERCOMP)

Dept. Tecnología de Computadores y Comunicaciones Universidad de Extremadura, Excuela Politécnica

Avenida de la Universidad s/n, E-10071 Cáceres

[email protected]

Resumen

El núcleo del presente trabajo viene dado por la

propuesta de nuevos algoritmos paralelos para

detección de targets o anomalías en imágenes

hiperespectrales. Una vez introducida la base

teórica del estudio se presentan los nuevos

algoritmos paralelos desarrollados, comentando en

detalle cada uno de los pasos que se han seguido

en su desarrollo y comentando las decisiones de

diseño adoptadas. Tras presentar los nuevos

algoritmos paralelos desarrollados con motivo del

presente trabajo, realizamos un detallado estudio

cuantitativo y comparativo de su rendimiento en

dos tipos de arquitecturas paralelas específicas: el

cluster Thunderhead del centro NASA Goddard

Space Flight Center en Maryland, Estados Unidos,

y una tarjeta gráfica programable de NVidia

(modelo 9800 GX2). Los resultados

experimentales han sido obtenidos en el contexto

de una aplicación real de gran relevancia social,

consistente en la detección de los incendios que se

propagaron en los días posteriores al atentado

terrorista del World Trade Center en Nueva York.

1. Introducción

El ser humano siempre ha deseado poder observar

la Tierra de forma remota, y para realizar esa

labor ha conseguido desarrollar instrumentos de

medida de muy elevada resolución espacial y

espectral. El resultado de un proceso de

observación remota es una imagen hiperespectral.

[1]. Los sensores hiperespectrales que se utilizan

permiten adquirir imágenes digitales con una gran

cantidad de canales espectrales muy cercanos

entre sí, obteniendo para cada porción de la escena

o píxel, una firma espectral característica de cada

material [2]. Si intentamos representar una imagen

hiperespectral de forma gráfica obtendríamos un

cubo cuyas dos primeras dimensiones

representarían la ubicación en el espacio de un

píxel determinado de la imagen y una tercera

dimensión que representaría la singularidad

espectral de cada píxel según diferentes longitudes

de onda [3] (ver Figura 1).

La mayoría de las técnicas de análisis

hiperespectral desarrolladas hasta la fecha

presuponen que la medición obtenida por el sensor

en un determinado píxel viene dada por la

contribución de diferentes materiales que residen

a nivel sub-píxel y que interactúan según un

modelo lineal (ver Figura 2) o no lineal [4]. El

fenómeno de la mezcla puede venir ocasionado

por una insuficiente resolución espacial del

sensor, pero lo cierto es que este fenómeno ocurre

de forma natural en el mundo real, por lo que el

diseño de técnicas capaces de modelar este

fenómeno de manera adecuada resulta

imprescindible.

Las técnicas de desmezclado, detección de

targets y análisis de imágenes hiperespectrales son

muy costosas desde el punto de vista

computacional, debido a que se basan en la

realización de operaciones matriciales. Como

posible ventaja, muchas de estas operaciones

tienen un carácter repetitivo que hacen posible

paralelizar [5] al menos parte de estos algoritmos,

con el consiguiente aumento significativo en el

rendimiento y consiguiendo en algunos casos la

posibilidad de obtener respuestas en tiempo real.

La reciente introducción de las GPUs en el mundo

de la supercomputación abre un nuevo abanico de

posibilidades para este tipo de algoritmos [5].

En el presente trabajo, describimos nuevas

implementaciones paralelas de algoritmos de

detección de objetivos o targets en imágenes

hiperespectrales de la superficie terrestre,

utilizando para ello GPUs de NVIDIA. Estas

tarjetas son susceptibles de ser utilizadas para

procesamiento a bordo.

Figura 1. Concepto de imagen hiperespectral.

Comportamiento

lineal

Figura 2. El modelo lineal de mezcla.

El trabajo se organiza de la siguiente forma. En la

sección 2 se describen los métodos de detección

de targets utilizados. En la sección 3 presenta el

diseño de las implementaciones paralelas de los

métodos descritos. En la sección 4 se presentan

los resultados obtenidos introduciendo en primer

lugar las arquitecturas utilizadas. Finalmente, en

la sección 5 se resumen las aportaciones y se

esbozan las líneas futuras de trabajo.

2. Algoritmos

En este apartado se detalla paso a paso el

procedimiento que sigue cada algoritmo para

encontrar los targets en la imagen hiperespectral.

2.1. RX

El algoritmo RX ha sido ampliamente

utilizado en procesamiento de imágenes y de la

señal [4]. Este algoritmo implementa un filtro,

denominado RXF que viene definido por la

siguiente expresión:

Donde es un píxel

hiperespectral n-dimensional (vector); es la

media y K es la matriz de covarianza de los datos.

Las imágenes resultado generadas por el

algoritmo RX son imágenes en escala de gris [6]

que indican probabilidad de encontrar un target.

2.2. ATGP

El algoritmo ATGP [4] fue desarrollado para

encontrar targets que puedan utilizarse para

generar una matriz de firmas, utilizada en una

proyección de un subespacio ortogonal (OSP).

Este algoritmo realiza las siguientes operaciones:

1. Calcular el píxel más brillante de la

imagen, , utilizando la siguiente ecuación,

dónde es el píxel (vector) en las

coordenadas espaciales (x,y) de la imagen. El

píxel más brillante es el máximo producto

vectorial entre el vector asociado a un píxel y su

traspuesto .

2. Asignar el primer target encontrado a una

matriz ].

3. Aplica el operador de proyección ortogonal

dado por la siguiente expresión a todos os

píxeles de la imagen hiperespectral:

4. Se amplía la matriz U con el píxel (vector) cuyo

resultado de aplicarle la ecuación (3) sea mayor,

de forma que y se vuelve a

aplicar la proyección ortogonal para el nuevo

valor de U.

5. Este procedimiento se repite hasta encontrar un

número de targets especificado como parámetro

de entrada.

Este algoritmo también se ha implementado

utilizando otras medidas además de la proyección

ortogonal [4].

3. Implementación paralela

3.1. Particionamiento de los datos

El particionamiento o división de datos previa al

procesamiento de una imagen hiperespectral,

puede hacerse fundamentalmente de dos formas

diferenciadas. El particionamiento espectral

considera que diferentes procesadores de la

arquitectura paralela pueden contener partes no

solapadas de una misma firma espectral (píxel).

Este esquema tiene la desventaja de que, al

considerarse la firma espectral (vector) como

unidad mínima de procesamiento para los

algoritmos, sería necesario incluir más

operaciones de comunicación para cada cálculo de

la medida empleada. Desde el punto de vista de la

paralelización del algoritmo, el cual se basa en

aplicar de forma repetitiva cualquiera de las

medidas planteadas, este tipo de particionamiento

tiene un coste elevadísimo en cuanto a

comunicaciones se refiere.

A diferencia del esquema de particionamiento

anterior, el particionamiento espacial, considera

que una misma firma espectral o píxel, no puede

estar particionada en diferentes unidades de

proceso de la arquitectura paralela. Este esquema

plantea una ventaja, las unidades mínimas de

cómputo, que en este caso son la aplicación de

una de las medidas descritas en el apartado

anterior, podrían realizarse de forma local en cada

procesador, eliminando gran parte de la carga de

comunicación del algoritmo. De esta forma, sólo

tendríamos que realizar comunicaciones a nivel

global para sincronizar los procesos o conseguir

resultados en cada iteración de los algoritmos, de

forma global.

Los algoritmos aquí descritos utilizan

particionamiento espacial. De esta forma, cada

nodo carga una determinada porción de la imagen,

operación que puede gestionarse fácilmente

indicando a cada nodo participante desde dónde

tiene que empezar a leer y el número de líneas

asociado al nodo.

Figura 3. Particionamiento espacial de la imagen.

3.2. Implementaciones en clusters

Para poder paralelizar los algoritmos ATGP y RX,

es necesario incluir una serie de modificaciones en

el código que nos permitan realizar la

comunicación entre los diferentes nodos así como

asignar una porción de la imagen a cada uno de

los nodos que van a procesarla.

El esquema de paralelismo sigue en todo caso la

funcionalidad de los algoritmos secuenciales

ATGP y RX, salvo que en este caso se calcula una

matriz de valores intermedios en cada una de los

nodos y posteriormente se realiza una puesta en

común global sobre quién tiene el valor máximo.

3.3. Implementaciones en GPUs

La implementación del algoritmo ATGP en

GPU se ha llevado a cabo pensando especialmente

en aprovechar la ventaja de no tener que invertir

demasiado tiempo en comunicación para

notificarse los diferentes resultados entre los

nodos. En la GPU, esto no es necesario ya que

toda la información está en la memoria

compartida del dispositivo [7].

En el caso del algoritmo ATGP, se define una

matriz para almacenar los valores de brillo de

cada uno de los píxeles de la imagen. Esta matriz

es procesada por tantos hilos como píxeles hay en

la imagen hiperespectral (ver Figura 4). De esta

forma se procesan todos los píxeles en el tiempo

que en una CPU podría procesarse uno. Para ello

se define un Grid que procesa la imagen de forma

totalmente paralela (ver Figura 5).

Figura 4. En el algoritmo ATGP, cada píxel de la matriz de brillo es procesado por un hilo de la GPU.

Por el contrario, en el caso del algoritmo RX

se define un Grid de tantos bloques y tantos hilos

como número de bandas haya como muestran

respectivamente las Figuras 6 y 7.

Para finalizar el presente apartado, destacamos

que en todos los desarrollos presentados que

requieren este cálculo se ha implementado un

proceso eficiente para obtener la inversa de la

matriz, se ha implementado un algoritmo basado

en el método de eliminación de Gauss-Jordan (o

eliminación Gaussiana). Este algoritmo de álgebra

lineal se utiliza para determinar las soluciones de

un sistema de ecuaciones lineales, y puede

utilizarse para calcular la inversa de una matriz.

Este método ha sido aplicado para optimizar las

operaciones de inversa de matrices aplicadas en

los métodos serie y paralelo descritos

anteriormente.

Figura 5. Grid de procesamiento de la matriz de brillos y del algoritmo ATGP.

Figura 6. Bloque de procesamiento en implementación GPU del algoritmo RX.

Un sistema de ecuaciones se resuelve por el

método de Gauss cuando se obtienen sus

soluciones mediante la reducción del sistema dado

a otro equivalente en el que cada ecuación tiene

una incógnita menos que la anterior. Para el

cálculo de la matriz, este método se basa en

utilizar la matriz aumentada, añadiendo la matriz

identidad a la matriz de la que se desea calcular su

inversa. El objetivo del mismo es obtener la

matriz escalonada reducida de la matriz

aumentada realizando operaciones simples sobre

las filas de la matriz aumentada.

Figura 7. Grid de procesamiento de la matriz de brillos

y del algoritmo RX.

4. Resultados

4.1. Descripción de los datos

La imagen en la que centraremos los estudios

llevados a cabo en este trabajo fue tomada por el

sensor AVIRIS, lanzado por el Laboratorio de

propulsión a chorro de la �ASA (�ASA’s Jet

Propusion Laboratory) sobre la zona del World

Trade Center (comúnmente conocido como “Las

Torres Gemelas”) el día 16 de septiembre del año

2001, justo cinco días después de los ataques

terroristas que derrumbaron las dos torres

principales y otros edificios del complejo del

WTC [8].

4.2. Arquitecturas paralelas consideradas

Las arquitecturas seleccionadas para este

estudio constituyen ejemplos representativos de

clusters de computadores y GPUs [9]. A

continuación simplemente procedemos a detallar

las características técnicas de ambas arquitecturas.

Thunderhead es el nombre que recibe el

cluster ubicado en el Goddard Space Flight

Center de la NASA en Maryland. Se trata de un

cluster masivamente paralelo de tipo Beowulf.

Thunderhead posee varios nodos adjuntos al

núcleo con 2 GHz de fibra óptica Myrinet. Las

pruebas llevadas a cabo se han realizado en uno de

los nodos, llamado thunder1.

Figura 8. Mapa térmico de la zona del WTC con los focos de incendio (targets) destacados

La GPU utilizada es una BFG NVIDIA

9800GX2, cuya característica principal es que fue

una de las primeras tarjetas duales (con 2 GPUs)

del mercado. En este estudio se utiliza una sóla de

las 2 GPUs, la cual cuenta con 128 stream

processors a una frecuencia de 1500 MHz y 512

MB de memoria de vídeo.

4.3. Resultados experimentales

Antes que nada, hemos de aclarar que los

resultados de precisión obtenidos para las

versiones serie y las versiones paralelas son

idénticos, ya que, a pesar del cambio de

arquitectura en la que se ejecuta el algoritmo, se

ha respetado en la mayor medida posible el

funcionamiento de los mismos.

La Figura muestra los resultados de

escalabilidad de ATGP y RX utilizando diferentes

medidas. Como puede comprobarse, la medida

empleada afecta significantivamente a los

resultados de escalabilidad, que dan como

resultado tiempos de procesamiento en torno a 12

segundos (utilizando 32 procesadores) para la

imagen considerada.

Figura 9. Escalabilidad de los algoritmos ATGP (izquierda) y RX (derecha) en el cluster Thunderhead de NASA.

Por otra parte, la Tabla 1 muestra los tiempos

serie y paralelo obtenidos utilizando una GPU

9800GX2 con Pentium IV 3.00 GHz. Finalmente,

la Tabla 2 muestra los factores de aceleración o

speedups asociados a la Tabla 1. Como puede

apreciarse, las implementaciones GPU resultan en

factores de aceleración muy destacados, del orden

de 14 unidades para cada algoritmo.

ATGP-

SAD

RX

GPU 9800GX2 9,061 139,178

CPU 133,637 1995,152

Tabla 1. Tiempos de ejecución de ATGP y RX en

diferentes arquitecturas (GPU y CPU).

ATGP-SAD RX

GPU 9800GX2 14,747698 14,047813

Tabla 2. Factores de aceleración obtenidos en la GPU.

A partir de los resultados obtenidos, es posible

realizar una serie de consideraciones referentes a

las características de las arquitecturas de

computación paralela consideradas en el estudio.

Teniendo en cuenta que cada uno de los nodos del

cluster Thunderhead puede tener un valor

estimado de 1000€ además de la infraestructura de

red de alta velocidad para conectarlos, hablamos

de un coste estimado de 40.000 €.

Si utilizando 32 nodos del Thunderhead

obtenemos un speedup de 12 unidades

(aproximadamente) a coste de 40.000€, y

utilizando una sola GPU cuyo coste no supera los

500€, obtenemos un speedup superior, no parece

rentable invertir en clusters pudiendo obtener

resultados similares y mejores utilizando GPUs, si

bien es cierto que los clusters siguen

representando una alternativa de bajo coste para

almacenar y procesar grandes volúmenes de datos

hiperespectrales que ya han sido transmitidos a

tierra, en especial, aquellos clusters que permiten

incorporar sistemas altamente heterogéneos y por

tanto aprovechar diferentes capacidades de

cómputo de equipos ya disponibles, colaborando

para la consecución de un mismo fin.

Aun así, hemos de tener en cuenta que en el

presente estudio sólo se ha utilizado una GPU de

las dos con las que cuenta la tarjeta 9800GX2,

cuyo uso se intentará explotar en futuras

versiones. Por otro lado, algunas de estas tarjetas

cuentan con la posibilidad de trabajar de manera

conjunta con otras tarjetas, pudiendo introducir en

un ordenador personal hasta un máximo de 3

tarjetas idénticas utilizando la tecnología

denominada SLI (Scalable Link Interface). En un

cluster las posibilidades de ampliación se reducen

a cambiar los procesadores o ampliar la cantidad

de memoria, procedimientos cuyo resultado se

traduciría en una mejora insignificante. En futuros

estudios se intentará implementar estos algoritmos

para que puedan ejecutarse en equipos que

cuenten con esta tecnología, ampliando las

posibilidades y disparando la capacidad de

procesamiento hasta límites insospechados.

Por otro lado, no hemos de olvidar la

diferencia notable en cuanto al peso, portabilidad

y consumo eléctrico de ambas arquitecturas.

Incluso utilizando varias GPUs a modo de cluster

de GPUs con la tecnología comentada

anteriormente, necesitaríamos muchos menos

requisitos, ya que todas las GPUs irían dentro de

un mismo equipo. Los factores asociados a la

portabilidad de la arquitectura tienen un valor

fundamental de cara a poder incorporarlas a

abordo dispositivo que captura las imágenes,

evitando tener que enviarlas a la tierra para ser

procesadas, con el retraso que eso supone. En este

sentido, el potencial de esta nueva tecnología se

traduce en la posibilidad de procesar los datos a

bordo del sensor hiperespectral a medida que van

siendo adquiridos, pudiendo obtener respuestas en

tiempo real. En aplicaciones del tipo a las

estudiadas en esta memoria, como pueden ser la

detección de incendios, esto supone una

revolución en cuanto a la velocidad y precisión

con que pueden ser detectadas, pudiendo poner en

marcha mecanismos de actuación en el preciso

instante en que se esté iniciando el incendio.

5. Conclusiones y líneas futuras

En el presente trabajo memoria se ha realizado un

estudio comparativo de diferentes algoritmos

paralelos para detección de targets y anomalías en

imágenes hiperespectrales. En concreto, se han

propuesto nuevas versiones paralelas de dos

algoritmos ampliamente utilizados en la literatura

(ATGP para detección de targets y RX para

detección de anomalías). Estas implementaciones

suponen contribuciones innovadoras con respecto

a la literatura reciente en el área de estudio, que

carece de trabajos relacionados con la

implementación eficiente de algoritmos de

detección de targets y anomalías.

Para llevar a cabo dicho estudio comparativo,

se han aplicado las técnicas desarrolladas a un

caso de estudio concreto en el que la necesidad de

obtener resultados en tiempo casi real es patente.

En concreto, el estudio se ha centrado en la

detección de incendios en la zona del World Trade

Center de Nueva York, días después del atentado

terrorista del 11 de Septiembre de 2001, utilizando

para ello una imagen hiperespectral obtenida por

el sensor AVIRIS de NASA. En este sentido, es

importante destacar que las prestaciones de los

algoritmos desarrollados han sido demostradas

desde la perspectiva de aplicaciones reales de gran

actualidad, quedando patentes las posibilidades de

explotación de las técnicas propuestas con motivo

del presente trabajo en el contexto específico de

dichas aplicaciones. Entre las posibles líneas

futuras de trabajo destacamos las siguientes:

• Optimizar las versiones GPU actuales

adaptando el código a un nivel más bajo,

centrándose en conseguir la ocupación

máxima de los multiprocesadores.

• Utilizar las 2 GPUs con las que cuenta la

tarjeta 9800GX2 y obtener resultados

comparativo utilizando otras GPUs de gamas

superiores (GTX285, GTX295, Quadro,

Teslas, etc.)

• Optimizar los algoritmos para funcionar en

SLI de 2 y 3 vías, utilizando varias GPUs y

comparar su rendimiento con el actual.

• Evaluar la capacidad de los algoritmos

desarrollados de ofrecer una respuesta en

tiempo real.

• Implementar algoritmos de análisis

hiperespectral adicionales, susceptibles de ser

utilizados en aplicaciones de clasificación,

desmezclado y compresión a bordo de datos

hiperespectrales.

Referencias

[1] A. F. H. Goetz, G. Vane, J. E. Solomon, and

B. N. Rock, “Imaging spectrometry for Earth

remote sensing,” Science, vol. 228, pp. 1147–

1153, 1985.

[2] R. O. Green, M. L. Eastwood, C. M. Sarture,

T. G. Chrien, M. Aronsson, B. J. Chippendale,

J. A. Faust, B. E. Pavri, C. J. Chovit, M. Solis

et al., “Imaging spectroscopy and the airborne

visible/infrared imaging spectrometer

(AVIRIS),” Remote Sensing of Environment,

vol. 65, no. 3, pp. 227–248, 1998.

[3] A. Plaza, J. A. Benediktsson, J. Boardman, J.

Brazile, L. Bruzzone, G. Camps-Valls, J.

Chanussot, M. Fauvel, P. Gamba, J. Gualtieri,

J. C. Tilton, and G. Trianni, “Recent advances

in techniques for hyperspectral image

processing,” Remote Sensing of Environment,

vol. 113, pp. 110–122, 2009.

[4] C.-I. Chang, Hyperspectral Imaging:

Techniques for Spectral Detection and

Classification. Norwell, MA: Kluwer, 2003.

[5] A. Plaza and C.-I. Chang, High performance

computing in remote sensing. Boca Raton:

CRC Press, 2007.

[6] R. A. Schowengerdt, Remote Sensing: Models

and Methods for Image Processing, 2nd ed.

Academic Press: New York, 1997.

[7] J. Setoain, M. Prieto, C. Tenllado, A. Plaza

and F. Tirado, “Parallel morphological

endmember extraction using commodity

graphics hardware,” IEEE Geosci. Remote

Sensing Letters, vol. 43, pp. 441-445, 2007.

[8] A. Plaza and C.-I Chang, “Clusters versus

FPGA for parallel processing of hyperspectral

imagery,” International Journal of High

Performance Computing Applications, vol.

22, pp. 366-385, 2008.

[9] A. Paz and A. Plaza, “Clusters versus GPUs

for parallel automatic target detection in

hyperspectral images,” EURASIP Journal on

Advances in Signal Processing, aceptado.