DOI: 10.5281/zenodo.17532440
title: Simulated Hyperspectral Dataset of Forest Canopies for Unmixing Problems

description: Dataset specification

This is a simulated hyperspectral dataset of five forest and orchard scenes as imaged on top of the canopy. The simulation was done using HyperBlend spectral canopy simulator. HyperBlend is hosted at github.com/silmae/HyperBlend/. The frozen version of the source code is provided here in file HyperBlend.zip. The included software version was used to generate the dataset and future versions of the code will likely not work with the files provided in here.

There are five geometrical variations of the scenes with two soil spectra in five spatial resolution. The scenes are F1, F2, I1, O1, and O2 (provided in zip files named accordingly). F1 and F2 are general fairly flat forest scenes, while the I1 is a forest scene on a 15* inclined ground. All of them have a heterogenous distribution of trees. O1 and O2 are orchards with homogenous lines of trees. If you want to use HyperBlend to manipulate the scenes, simply unpack the scene zips to /HyperBlend/System simulation/. 

The two soil types are wet peat and dry sand indicated by "WP" and "DS", respectively, in the file and directory names. The soil spectra are simulated with GSV (https://doi.org/10.1016/j.jag.2019.101932).

The five spatial resolutions are 1024, 256, 64, 16, and 4 pixel squares. Rendering samples (how many light rays are cast through each pixel) is 32 for the highest resolution, 128 for the next, and so on, so each spectral band is rendered with 33.5 million samples.

The camera is at 100 m altitude at the center of the world. It has a 28* field of view, resulting in roughly 50*50 m image area. The scene itself is 75*75 m, so that even though no all of the trees are in the imaged area, they can still affect the result.

The sun and sky spectra are simulated with SSloar GOA (https://doi.org/10.5194/gmd-15-1689-2022) at coordinates lat=45.1845 lon=5.7151 (Grenoble, France) at 30.6.2025 13:00 local time. The sun angle at that time is elevation=66.45*, azimuth=155.92*.

Ground truth abundance maps are available for all image cubes

Ground truth enmember spectra not yet available. These will be added at the latest in early 2026. In the meantime, you can use the visibility maps (not abundance maps) to calculate approximate endmembers manually.

Data structure

As an example of how the data is structured, we use the scene FDS1_1024 (unzip F1.zip and you find FDS1_1024 inside). In this name, the DS refers to dry sand soil and F1 to the geometry. (Yes, it would have made more sense to name it F1DS.) The number after refers to spatiel resolution, so in this case _1024 means that the spectral cube is 1024 pixels wide and high. The scene I1 with wet peat soil and 256 px spatial resolution is therefore called IWP1_256. The directories with just the scene and soil shortnames without the resolution definition (like just FDS1) has been used as a common ancestor to generate the other scenes and does not have a simulated spectral cube; you can safely ignore these directories.

Inside the scene directory, there are files needed by HyperBlend to simulate the spectral cubes. We do not go through all of those but focus on the ones that are usable for unmixing. The leaf data from LOTUS dataset (10.1016/j.rse.2024.114424) is named by 5 character codes like CCAN1 and ELMDK. These names come directly from the LOTUS dataset. For example, CCAN1.JPG is the image of a leaf sample, CCAN1.toml contains biochemical and biophysical measurements of the sample (chlorophyll content, mass per area, and so on), CCAN1_0_slab_sim_result.png is a visualization of HyperBlend leaf simulation result for that sample, and corresponding .toml file contains the numerical values. The leaf spectra are called Slab materials internally in HyperBlend. To make it easier for humans to read, the file leaf_material_map.toml contains mapping from slab material index to LOTUS leaf codes.

Spectra of the sun, sky, and soil are visualized in files grenoble_sun.png, grenoble_sky.png, and soil_reflectance_dry_sand_reflectance.png, respectively.

The generated spectral cube can be found from subdirectory Spectral cube/ in ENVI format (i.e., header data is in .hdr file and the pixel values in .img file).

Abundance maps can be found found from subdirectory Abundance maps/. The .pngs visualize the abundance of each material in the scene and abundances.npy is a single numpy array containing all the abundances in shape (width, height, material index).  The file map_name_indices.toml relates the material index in the abundance maps array into the LOTUS leaf indices.

Visual representation of the directory structure in ASCII art:

└── scene_FDS1_1024/
    ├── CCAN1.JPG
    ├── CCAN1.toml
    ├── CCAN1_0_slab_sim_result.png
    ├── CCAN1_0_slab_sim_result.toml
    ├── ELMDK.JPG
    ├── ELMDK.toml
    ├── ELMDK_0_slab_sim_result.png
    ├── ELMDK_0_slab_sim_result.toml
    ├── ...
    ├── grenoble_sky.png
    ├── grenoble_sun.png
    ├── leaf_material_map.toml
    ├── leaf_spectrum_plotSlab material 1.png
    ├── leaf_spectrum_plotSlab material 2.png
    ├── ...
    ├── soil_reflectance_dry_sand_reflectance.png
    ├── Abundance maps/
    │   ├── Abundance CCAN1.png
    │   ├── Abundance ELMDK.png
    │   ├──...
    │   ├── Abundance Soil.png
    │   ├── Abundance Trunk.png
    │   ├── abundances.npy
    │   └── map_name_indices.toml
    ├── rend/
    │   ├── drone_preview.png
    │   ├── sleeper_preview.png
    │   ├── trees_preview.png
    │   ├── walker_preview.png
    │   └── Visibility maps/
    └── Spectral cube/
        ├── spectral_cube_FDS1_1024.hdr
        └── spectral_cube_FDS1_1024.img