Provided that I know the exact individual chemical element’s wavelength i.e. its position within the VNIR band (B2, B3, B4 etc.), how can I get these “peaks” on an area map? (Ideally I need to obtain the individual chemical element “strong emittance” color-coded map on my monitor)
Thank you in advance,
I am imagining that you are talking about Sentinel-2 (just making sure as you didn’t specify the sensor you are interested in)?
What are you trying to represent exactly? To me it is not clear what you want to display. Would it be something like an RGB True Colour image where the areas with reflectance over a defined threshold would be highlighted? If so, here is an example in EO Browser, where I highlight pixels in each band with reflectance > 0.4. You can take a look at the Evalscript on the left and adjust it to your needs.
Thanks a lot for your response.
Yes I’m trying Sentinel-2 in Sentinel Hub EO Browser. I’m interested in certain chemical elements’ wevalengths within B02 - Blue. (To simplify the task, I would settle for this band, only). In other words, I need spectral un-mixing and mapping to be done for some certain wavelengths.
Hope this clarifies, than you very much for your help!
I am not familiar with spectral unmixing algorithms, but here are a few solutions you could consider:
If you need a specific software to process the images, you can use Sentinel Hub services (via the API for instance) to fetch the rasters of the bands you need, by only getting the bands and area of interest you need (that is the advantage offered by our services). Once you have results, you could even ingest them back in to the service (BYOC) and visualise them in EO Browser.
If you have an algorithm (in Python) for example, and you want to apply spatial operations (not just per-pixel), you could either fetch the images using the sentinelhub-py library or implement the algorithm in eo-learn in case you want to work with image stacks.
Maybe some other forum users who have already done spectral un-mixing and mapping can chime in. Looking forward to hearing what you implement!
I’ve been thinking… would you be so kind to tweak a little the custom script you’ve sent me another day:
- instead of RGB True Colour, using B02 band, as the main palette
- instead of reflectance over a defined threshold, define a specific (exact) wavelength value, representing an individual element (the endmember)
- the color scheme on the map shall indicate the concentrations for this particular wavelength: cold colors = low, warm colors = high
This way, the map will be selective for one particular (numerical) wavelength, representative for this particular chemical element, now being “unmixed”.
Would this do the trick? I will kindly appreciate your thoughts.
P.S. The same concept may be done for another band - in my case, B04, with different numerical wavelengths though. We just need the principal algorithm.
I have a feeling it may be difficult to implement what you are trying achieve. Indeed, Sentinel-2 bands are not performing measurements at specific wavelengths with spike responses as you would get with an XRF for example. The Sentinel-2 bands integrate measurements over a wavelength range that can be quite wide (e.g. B02 has a 65 nm bandwidth) and each having a specific spectral response. See ESA’s guide for information about bandwidth and spectral response.
Now, if working with wide bands still could bring value to detecting chemical elements, you could modify the Evalscript in my previous example quite easily. Our Evalscript documentation page contains several links for non-experts and beginners to get started with Evalscripts. Understanding how to modify an Evalscript to fit your purpose would be a lot more valuable for you than me just sending you a “black box” script.
Thank you very much for your time and the links. You are correct, ungrouping individual chemical element/s is our primary challenge here.