Hyperspectral images can be used to identify the unique materials present in an area.Due to the limited spatial resolution, each pixel of the image is considered as a mixture of several different pure substances or endmembers. Several spectral unmixing methods have been developed for endmember extraction in an image. Among them, the vertex component analysis (VCA) algorithm is a popular one for its superior performance. As there are a lot of matrix/vector operations involved in the VCA algorithm, this work aims to apply the highly parallel computing power of recent GPUs which are reported to have good success in acceleration of many compute intensive applications. In the experiment, the compute unified device architecture (CUDA) which provide more convenient programming model is used. The speedup is measured with respect to standard C code on a single core CPU for evaluation.Our experiments are performed on a typical case where the number of extracted endmembers is 30 from the 188-band Cuprite hyperspectral dataset.The results show that a speedup of 42x can be achieved on a pure GPU implementation using CULA and CUBLAS libraries. As VCA involves Singular Value Decomposition (SVD) operation and SVD is faster on CPU than GPU for small data sizes as is our case, a speedup of 58x can be achieved on a hybrid implementation when SVD is carried out on CPU.
Proc. SPIE 8895, High-Performance Computing in Remote Sensing III, 889509