Share this post on:


Authors: J. Bobin
Language: Matlab and Python
Download: Python | Matlab
Description: A toolbox for solving Blind Source Separation problems.



GMCALab is a set of Matlab toolboxes that focus on solving Blind Source Separation problems from multichannel/multispectral/hyperspectral data. In essence, multichannel data provide different observations of the same physical phenomena (e.g. multiple wavelengths, ), which are modeled as a linear combination of unknown elementary components or sources:

\(\mathbf{Y} = \mathbf{A}\mathbf{S},\)

where \(\mathbf{Y}\) is the data matrix, \(\mathbf{S}\) is the source matrix, and \(\mathbf{A}\) is the mixing matrix. The goal of blind source separation is to retrieve \(\mathbf{A}\) and \(\mathbf{S}\) from the knwoledge of the data only.

Generalized Morphological Component Analysis, a.k.a. GMCA, is a BSS method that enforces the sparsity of the sought-after sources:


A lightweight Matlab/Octave version of the GMCALab toolbox is available at this location. Illustrations are provide here.

Please check out the project's GitHub page.

It is worth noting that GMCA provides a very generic framework that has been extended to tackle different matrix factorization problems:

  • Non-negative matrix factorization with nGMCA
  • Separation of partially correlated sources with AMCA
  • The decomposition of hyperspectral data with HypGMCA (available soon)
  • The analysis of multichannel data in the presence of outliers with rAMCA at this location (updated the 14/06/16).
  • Robust BSS in transformed domains with tr-rGMCA . 

 We are now developping a python-based toolbox coined pyGMCALab, which is available at this location.

Share this post on: