Skip to main content

Spectral mixture analysis of EELS spectrum-images

Posted in

Recent advances in detectors and computer science have enabled the acquisition and the processing of multidimensional datasets, in particular in the field of spectral imaging. Benefiting from these new developments, Earth scientists try to recover the reflectance spectra of macroscopic materials (e.g., water, grass, mineral types...) present in an observed scene and to estimate their respective proportions in each mixed pixel of the acquired image. This task is usually referred to as spectral mixture analysis or spectral unmixing (SU). SU aims at decomposing the measured pixel spectrum into a collection of constituent spectra, called endmembers, and a set of corresponding fractions (abundances) that indicate the proportion of each endmember present in the pixel. Similarly, when processing spectrum-images, microscopists usually try to map elemental, physical and chemical state information of a given material.

The most widely used method is Principal Component Analysis, PCA, which makes the assumption that the components are orthogonal. As the components thus obtained are difficult to interpret physically, other methods as ICA are employed. ICA is available in the Hyperspy Toolbox (

VCA (Vertex Component Analysis) is a SU algorithm dedicated to remote sensing hyperspectral images which can be successfully applied to analyze spectrum-image resulting from electron energy-loss spectroscopy (EELS).
VCA Matlab code can be found on Jose Bioucas-Dias site:

Marcel Tence developped Matlab compiled versions of PCA (weightedPCA) and VCA to be used in DigitalMicrograph. It should work both for GMS2 and GMS3.


  • Check that you have already Microsoft Visual C++ 2015Redistributable installed on your computer. Otherwise you have to install it by downloading vc_redist.x64.exe from
  • Then you have to install "Matlab Component Runtime" (R2016b 9.1): If you already have a version of Matlab installed, you have to check that the MCR (Matlab Compiler Runtime) path is the first Matlab path that appears in the system path.
  • Fill the form at the bottom of this page. You will receive an email with a link to download all required components.
  • Copy MatLabSuite2016b.dll and MatlablibforDM2016b.dll in the folder "..\ProgramData\Gatan\Plugin"
  • Copy the scripts pca.s et vcamcc.s in any convenient folder.
  • Scripts are launched as usual (by opening the file and clicking execute or by installing the scripts in the scrolling menu).

In case of trouble

The only parameter to give to VCA is the number of components. It can be evaluated from the PCA screeplot. A precise determination is especially difficult and gave rise to an abundant literature (see e. g. Chang, C. I., & Du, Q. (2004). Estimation of number of spectrally distinct signal sources in hyperspectral imagery. IEEE Transactions on geoscience and remote sensing, 42(3), 608-619.)

PCA gives eigenvalues, components and maps. To reconstruct a spim with a given number of components you have to write a DM script :

  1. for the first n components
image spim
PCA_c(spim, components, maps, n)
  1. for a choice of different components (e.g. components 1, 3 , 4)
image spim
string liste = "1,3,4"
PCA_d(spim, components, maps, liste)

VCA proceeds with a dimensionality reduction (SVD) analog to PCA so the reconstruction option is not proposed.

VCA requires pure pixels to be present in the observed sample.

BLU (Bayesian Linear Unmixing) is another algorithm which solves the constrained spectral unmixing problem without requiring the presence of pure pixels in the hyperspectral image. The Matlab file can be download on :


If you find this software useful in your research, please cite the following paper:

  • Dobigeon N., Brun N., Blind Linear unmixing of EELS spectrum-images, ULTRAMICROSCOPY 120 : 25-34 JUN 2012 Download


Please fill the form. We will email you the download links.