ctherien / pysptools

Hyperspectral library for Python
Apache License 2.0
50 stars 21 forks source link

seems FCLS abundance maps needs normalize=True to honor NNLS contraint #11

Open joemcglinchy opened 4 years ago

joemcglinchy commented 4 years ago

Hello, in working with Landsat 8 surface reflectance data, values ranging [0,1], we are extracting endmembers using NFINDR and creating abundance maps using FCLS to create non-negative abundance maps which observe the sum-to-one constraint. However, we are finding that the normalize=True keyword argument needs to be set to True to do this. With the normalize keyword argument set to False, the abundance maps are largely negative.

I can't seem to understand why, since the endmember data is already between 0 and 1 as is the surface reflectance imagery. Can you please advise?

ctherien commented 4 years ago

Hi joe,

I wrote this some times ago. If I remember endmembers need to be in the same range as the image. This is why normalize is used. In general it's easiest to normalize endmembers and images. Maybe your image is not natively normalized?

Le mar. 30 juin 2020 à 17:44, Joe McGlinchy notifications@github.com a écrit :

Hello, in working with Landsat 8 surface reflectance data, values ranging [0,1], we are extracting endmembers using NFINDR and creating abundance maps using FCLS to create non-negative abundance maps which observe the sum-to-one constraint. However, we are finding that the normalize=True keyword argument needs to be set to True to do this. With the normalize keyword argument set to False, the abundance maps are largely negative.

I can't seem to understand why, since the endmember data is already between 0 and 1 as is the surface reflectance imagery. Can you please advise?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/ctherien/pysptools/issues/11, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEBAWNONXIR5A7JK6ATSP6LRZJMCDANCNFSM4OMXLVRQ .

joemcglinchy commented 4 years ago

thank you for responding, @ctherien. this library has been very useful for my own work and for introducing students to spectral analysis and remote sensing analysis methods. Using surface reflectance data, the data is (mostly) normalized between 0 and 1. My intuition is that it wouldn't have to be normalized to have a max of 1 and min of 0, since that is traditionally the range of the data to begin with. Perhaps I need to dig a bit deeper into the CVXOPT library to understand the inner workings of the solution a bit better. Maybe the range-normalization accounts for fluctuations in the reflectance spectra such that the unmixing then is more robust to those fluctuations?

ctherien commented 4 years ago

Maybe, but I don't have a quick answer. FCLS is a complex math model and I have to dig it to say something that makes sense. You are not the first to ask about this model. Only if you wish, this fall can we write something helpful that eventually can be added to the librairie documentation? (in summer I cycle almost all the time ;) )

Le jeu. 2 juil. 2020 à 16:46, Joe McGlinchy notifications@github.com a écrit :

thank you for responding, @ctherien https://github.com/ctherien. this library has been very useful for my own work and for introducing students to spectral analysis and remote sensing analysis methods. Using surface reflectance data, the data is (mostly) normalized between 0 and 1. My intuition is that it wouldn't have to be normalized to have a max of 1 and min of 0, since that is traditionally the range of the data to begin with. Perhaps I need to dig a bit deeper into the CVXOPT library to understand the inner workings of the solution a bit better. Maybe the range-normalization accounts for fluctuations in the reflectance spectra such that the unmixing then is more robust to those fluctuations?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ctherien/pysptools/issues/11#issuecomment-653212922, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEBAWNOCGFHGAPWLW7DZWG3RZTWZLANCNFSM4OMXLVRQ .

joemcglinchy commented 4 years ago

that would be great @ctherien , and I would be happy to contribute to this if appropriate.

ctherien commented 4 years ago

Great, I add it to my agenda, around october.

Le lun. 6 juil. 2020 à 10:12, Joe McGlinchy notifications@github.com a écrit :

that would be great @ctherien https://github.com/ctherien , and I would be happy to contribute to this if appropriate.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ctherien/pysptools/issues/11#issuecomment-654263941, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEBAWNKUA7PEE7IOI3SRHQLR2HLTXANCNFSM4OMXLVRQ .