-
Notifications
You must be signed in to change notification settings - Fork 18
unmixR
Hyperspectral images are 3D data sets collected over an x; y grid, where the pixel at each x; y is composed of a spectrum. In hyperspectral unmixing, such a data set X composed of n observed spectra with p wavelengths or spectral bands is decomposed to identify the pure component spectra. Such data sets are found in airborne land imaging studies, biomedical and art history investigations as well as time series (kinetics) of chemical reactions. The spectra are typically visible, infrared, near-infrared, Raman spectra or mass spectrometric data sets.
Each spectrum is typically assumed to be a linear mixture of a limited number m of pure component spectra, the so-called endmembers E. m is also referred to as chemical rank of the spectra matrix X. Endmembers are suitable for direct interpretation in the domain of the study (e.g. Raman spectra of cancerous tissue, reflectance spectra of minerals). The spectra matrix X of measured/observed spectra can be thought of as a sum of the respective endmember spectra E weighted by their abundances A. In the matrix notation as bilinear model: X = A E + ε
The goal of spectral unmixing is to identify a set of suitable endmember spectra given (only) the spectra matrix X.
There exists a large body of literature on these topics.
unmixR
(https://gitlab.com/chemometrics/unmixR) started 3 years ago as a Google Summer of Code project. Conor McManus implemented a couple of N-FINDR and Vertex Component Analysis (VCA) Algorithms. However, he unfortunately could not go on with the development due to his starting to work full time.
The project should
-
implement more unmixing algorithms, e.g. Iterated Constrained Endmembers available at ResearchGate
-
give some maintenance to the existing
As it is, unmixR
is already used. However, the already implemented methods N-FINDR and VCA make one crucial assumption: they assume the presence of pure spectra of all components are available somewhere in the data.
Obviously, while this assumption is reasonable for some applications, other applications exist where this assumption should not be relied on.
ICE does not need to have pure component spectra for the endmembers in the presented data.
Claudia Beleites
Simon Fuller
Bryan Hanson
- clone the repo from GitLab: https://gitlab.com/chemometrics/unmixR
- build the package
-
predict
(inpredict.R
) calculates abundances using non-negative least squaresnnls ()
. Actually, abundances should be in [0, 1], not only non-negative. How would you change thepredict
method? - Write yet another version of
predict
that calculates abundances without constraint.
Anuj Khare: commit
Anton Belov: fully constrained predict unconstrained predict