Welcome to the BEAM Forum!

We encourage you to sign in our forum and participate in the BEAM community. The forum is maintained by the BEAM project team who will most likely answer your questions within 24 hours (except during common holidays) - if not done by other community members. Collaborate, share your knowledge and learn from other users!

If you don't find what you are looking for, please also consider the following external forums:

Combination View Flat View Tree View
Threads [ Previous | Next ]
Spectral unmixing
toggle
Spectral unmixing
8/14/09 3:57 PM
Last weeks I worked with the spectral unmixing tool in BEAM, creating my own endmembers and processing C2R-ICOL processed MERIS data with them. It works fast and I'm getting nice maps out of it.

However, I don't understand all the output if I compare it with manual unmixing of single pixel spectra. Therefore, I wonder if you could give me a more detailed description on how the unmixing is done and with what criterion the abundances are set, or sent me a piece of the software code where I can read this. I assume the difference between de input spectrum and the spectrum calculated (via the sum of all endmembers times their abundances), is minimised with the root mean squared error? This is not clear from the help file. In the formula for the RMSE in the help file is also a mistake I think: it sais the sum of the squared error is raised to the power -m, which should be divided by m I guess.
Flag Flag
RE: Spectral unmixing
8/17/09 11:00 AM as a reply to Annelies Hommersom.
You can find the source code on our Download Page.

Within the downloaded zip file the source code of interest is located in the folder
beam-4.6-sources\beam-unmix\src\main\java\org\esa\beam\unmixing
in the file SpectralUnmixingOp.java. In this class the unmixing is initiated.

The calculation takes place in three different classes, depending on the chosen algorithm (Unconstrained, Constrained, Fully Constrained).
These classes can be found at
beam-4.6-sources\beam-core\src\main\java\org\esa\beam\util\math\.
Namely the three classes are:
  • UnconstrainedLSU.java
  • ConstrainedLSU.java
  • FullyConstrainedLSU.java
Flag Flag
RE: Spectral unmixing
8/21/09 2:06 PM as a reply to Marco Peters.
Dear Marco,

Thanks for your explanation! I found the files in the source code and think I'll be able to find the equations I need now. I'm working on it.

Best regards,
Annelies
Flag Flag
RE: Spectral unmixing
9/14/09 10:18 AM as a reply to Annelies Hommersom.
Dear Marco,

Finally the source code did not solve my problem. I'm not good in reading java, so I did not understand all of it.
I wonder what formula the Fully Constrained method uses. When I unmix an ICOL-C2R processed image with the Unconstrained or Constrained method, subtract the data of one pixel and compare the spectrum I obtain with the sum of the abundances times the end-members (ICOL-C2R spectrum = abundance1 x endmember1 + abundance2 * endmember2 etc) the spectra are very similar, the unmixing works well. If I use the Fully Constrained method the sum of the abundances times the end-members does not resemble the input spectrum very well. This is of course due to the constrains. However, when I unmix manually the same input spectrum (including constrains) I can obtain abundances that lead to a lower root mean square error between the sum of the abundances times the end-members and the input spectrum than the ones derived with the Fully Constrained method.
Do I use the wrong calculation or is not the root mean square error minimised?

Best regards,
Annelies
Flag Flag
RE: Spectral unmixing
9/16/09 10:14 AM as a reply to Annelies Hommersom.
You're right. The root mean square error is not minimised.
I had a look into the source code myself and have seen that the for finding the best abundances the square of the difference between the unmixed and the re-mixed is considered.
Flag Flag