What algorithm is used for fully constraint unmixing?

I was looking at the source code of the full constraint spectral unmixing because I experimented a bit with self implemented unmixing. Now I wonder what is the algorithm that solves the constraint equation for the endmembers ?

I do not know Java but from a first look, it seems like Nelder-Mead to me ?

Best wishes

The algorithm is custom code originally developed by Helmut Schiller (deceased, unpublished work). If you are interested in solving constrained linear least squares problems, you may consult the general reference below, which might be Helmut Schiller’s original source.

Charles L. Lawson and Richard J. Hanson (1995). “Solving Least Squares Problems.” https://doi.org/10.1137/1.9781611971217.

In fact I do not quite understand why the spectral unmixing in SNAP includes particularly these constrained and fully constrained algorithms. In my opinion non-negative least squares (NNLS) is most appropriate. You may Google NNLS or simply have a look at this code

https://github.com/octoflar/amber/blob/main/src/main/fortran/nnls_mod.F90

which uses and refers to the original NNLS Fortran code.

3 Likes

Thank you very much, these are great resources!