Skip to content

01 - Introduction to LESS Model

What is LESS?

LESS is a three-dimensional radiative transfer model for remote sensing research. It uses Monte Carlo methods to describe the propagation of radiation in terrain, vegetation surfaces, and bulk media, and can generate simulation products such as optical, thermal infrared, radiation fields, energy balance, photosynthesis, and solar-induced chlorophyll fluorescence (SIF).

The current LESS 3.x series redesigns the computing core and Python API based on LESS 2.x:

  • Three computing backends: NVIDIA GPU can use OptiX; GPU that supports Ray Query can use Vulkan; CPU can use Embree.
  • Unified Python API: Scenes, properties, lighting, sensors and processes are all configured through the less package.
  • Persistent Scenes: Once a scene is built, it can be simulated repeatedly; there is usually no need to rebuild geometry when lighting or properties are modified.
  • Two vegetation representations: use Mesh for explicit triangle geometry and TurbidBoundary for continuous vegetation volumes.
  • Joint Physiological Processes: Mesh, Turbid and Terrain can be solved in the same Energy Balance and Photosynthesis workflow.

The backend only determines the hardware used and the execution method. The same scene and process have consistent physical quantity, unit and product fields in different backends.

What can be simulated?

Applications Main Products or Processes
Optical remote sensing RGB, multispectral and hyperspectral imagery, BRF and albedo
Canopy radiation Three-dimensional radiation field, fPAR, upwelling and downwelling irradiance
Thermal infrared remote sensing Fixed temperature or energy balance temperature driven thermal infrared images
Vegetation Physiology Leaf temperature, net photosynthetic rate, stomatal conductance, status of sun leaves and shade leaves
Chlorophyll fluorescence Static or dynamic SIF process and SIF image
LiDAR Point cloud and waveform products
Atmospheric coupling Atmospheric profile, 6S, sun-sky and environment map lighting models

Specific chapters will describe the scenario attributes and process parameters required for each type of product.

Basic principles

LESS's optical and thermal radiation transmission is performed by a native backend:

  1. The sensor or process generates a sampling light path in the scene;
  2. The light path interacts with the terrain, Mesh surface or Turbid medium;
  3. Calculate reflection, transmission, absorption and emission based on optical, thermal and physiological properties;
  4. Statistics of sampling results are obtained to obtain image or scene status products.

Parameters such as quality and num_photons control the sampling volume. Tutorials typically use lower quality to shorten run times; formal experiments should increase the sample size and check that the results converge.

Select backend

By default, LESS selects from the backends available on the current machine. It can also be specified explicitly:

import less

scene = less.Scene(backend="optix")   # NVIDIA GPU
scene = less.Scene(backend="vulkan")  # GPU supporting Ray Query
scene = less.Scene(backend="embree")  # CPU

If you want to check whether a function is available before running, you can use Scene.can_use():

scene = less.Scene()

if scene.can_use("optical_imaging"):
print("Optical imaging can be performed")

scene.can_use("energy_balance", explain=True)

10 lines of code to complete a simulation

import less

scene = less.Scene()
scene.size = 10.0
scene.terrain = less.Terrain(
    property=less.Lambertian(reflectance=0.3)
)
scene.illumination = less.Illumination(source=less.Sun(zenith=30, azimuth=150), atmosphere=less.NoAtmosphere())
image = scene.simulate(less.OpticalImager(
    less.Orthographic(image_size=256),
    bands=[650, 550, 450],
))
image.save("first_image.png")

Version rules

LESS uses standard pre-release tags and semantic versions:

  • b1 means Beta 1: Major functionality has been established, but API, file format, or behavior may still be tweaked.
  • rc1 means Release Candidate 1: The planned public functions are basically completed, API and scientific semantics are ready to be frozen.
  • If a release blocking issue is found for 3.0.0rc1, the next release candidate is 3.0.0rc2.
  • After passing the final release check, the version is 3.0.0.
  • Use 3.0.1 for compatibility bug fixes after official release; use 3.1.0 for backward-compatible new features.

The name of the Python distribution package is less3d, and the import method in the program is import less.

Chapter 05 explains scenes, lighting, sensors and output products step by step.

Next step

  • less.Sceneless.Scene.simulate()less.Scene.rebuild()
  • less.Scene.can_use()
  • less.Terrainless.Meshless.TurbidBoundary
  • less.Lambertianless.Illuminationless.Sunless.NoAtmosphere
  • less.Orthographicless.OpticalImager