Parallel Implementation of a Full Hyperspectral Unmixing Chain Using OpenCL
Spectral unmixing is an important task for remotely sensed hyperspectral data exploitation. Due to the fact that the spatial resolution of the sensor may not be able to separate different spectrally pure components (endmembers), spectral unmixing faces important challenges in order to characterize mixed pixels. As a result, several hyperspectral unmixing chains have been proposed to find the spectral signatures for each endmember and their associated abundance fractions. However, unmixing algorithms can be computationally expensive, which compromises their use in applications under real-time constraints. In this paper, we describe a new parallel hyperspectral unmixing chain based on three stages: 1) estimation of the number of endmembers using the geometry-based estimation of number of endmembers algorithm; 2) automatic identification of the spectral signatures of the endmembers using the simplex growing algorithm; and 3) estimation of the fractional abundance of each endmember in each pixel of the scene using the sum-to-one constrained least-squares unmixing algorithm. These algorithms have been specifically selected due to their successful performance in different applications. We have developed new parallel implementations of the aforementioned algorithms and assembled them in a fully operative unmixing chain using an hybrid implementation with the OpenCL framework and clMAGMA library. As a result, this is one of the first real-time implementations of a full unmixing chain in an open computing language. This methodology can be executed on different heterogeneous platforms such as CPU (multicore) and GPU platforms, in which accuracy, performance, and power consumption terms have been considered.