A Hybrid CPU–GPU Real-Time Hyperspectral Unmixing Chain
Hyperspectral images are used in different applications in Earth and space science, and many of these applications exhibit real- or near real-time constraints. A problem when analyzing hyperspectral images is that their spatial resolution is generally not enough to separate different spectrally pure constituents (endmembers); as a result, several of them can be found in the same pixel. Spectral unmixing is an important technique for hyperspectral data exploitation, aimed at finding the spectral signatures of the endmembers and their associated abundance fractions. The development of techniques able to provide unmixing results in real-time is a long desired goal in the hyperspectral imaging community. In this paper, we describe a real-time hyperspectral unmixing chain based on three main steps: 1) estimation of the number of endmembers using the hyperspectral subspace identification with minimum error (HySime); 2) estimation of the spectral signatures of the endmembers using the vertex component analysis (VCA); and 3) unconstrained abundance estimation. We have developed new parallel implementations of the aforementioned algorithms and assembled them in a fully operative real-time unmixing chain using graphics processing units (GPUs), exploiting NVIDIA's compute unified device architecture (CUDA) and its basic linear algebra subroutines (CuBLAS) library, as well as OpenMP and BLAS for multicore parallelization. As a result, our real-time chain exploits both CPU (multicore) and GPU paradigms in the optimization. Our experiments reveal that this hybrid GPU-CPU parallel implementation fully meets real-time constraints in hyperspectral imaging applications.