How to create "user defined endmembers" for unmixing purposes?

Hello everyone,
I am working in QGIS-OTB. My intention is to perform unmixing process (OTB–>HyperspectralUnmixing) from my own spectral signatures or endmembers. I am working without a single line of coding.

OTB makes it possible the process vía 2 previous steps:
-1-EndMemberNumberEstimation with which a number X of endmembers is suggested.
-2-VertexComponentAnalysis with which the signature of X endmembers is calculated. These endmembers’ signature is exported in a X pixels image.
-3- Hyperespectral unmixing can then be done

Following this procedure, unmixing procedure is an unsupervised classification process. ¿Would it be possible for the user to import external spectral signatures?¿Would it be possible to create endmembers image from sample collection of the user over an image (via signature of points or polygons for example)?

Is there any way to transform from endmembers image to excel or table and viceversa?

If the suggested task are available, I have not find them anywhere. If not, they would be great.

Kind regards and thanks you all in advance,
Jaime

Hi Jaime,

Thank you for your interest in Orfeo ToolBox and sorry for the delay in the answer : there are not so many users / experts of Hyperspectral unmixing !
I discussed with a colleague and thanks to his explanations, I guess you can import external signatures, but it will need some lines of coding I think !
The EndMembers image, computed by VertexComponentAnalysis, could be replaced by your own data containing your own spectral signatures.
There are no OTB applications to manage that without coding, but I think that you can do it quite easily with some Python libs, like rasterio, pandas and numpy.
Rasterio can load your data as a numpy array and Pandas can write the Dataframe as csv files for instance.

Python 3.8.4 (default, Aug 31 2023, 17:24:53)
[GCC 8.5.0 20210514 (Red Hat 8.5.0-10)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>> import rasterio
>>> ds = rasterio.open("VertexComponentAnalysis.tif")
>>> endmembers = ds.read()
>>> endmembers.shape
(10, 1, 5)
>>> df = pandas.DataFrame(endmembers.reshape((10,5)))
>>> df
          0         1         2         3         4
0  0.000021  0.000016  0.000019  0.000015  0.000016
1  0.000037  0.000029  0.000031  0.000028  0.000029
2  0.000044  0.000034  0.000035  0.000033  0.000035
3  0.000045  0.000037  0.000037  0.000036  0.000038
4  0.000041  0.000041  0.000040  0.000039  0.000040
5  0.000036  0.000042  0.000041  0.000041  0.000041
6  0.000035  0.000043  0.000042  0.000042  0.000042
7  0.000029  0.000034  0.000034  0.000037  0.000033
8  0.000032  0.000036  0.000036  0.000038  0.000037
9  0.000030  0.000031  0.000034  0.000035  0.000035
>>> df.to_csv("my_end_members.csv")

Hope this helps, and do not hesitate to give us feedback on OTB applications for your own use case.
Best regards,

Yannick