跳转至

01 - 模型介绍

LESS 是什么

LESS 是面向遥感研究的三维辐射传输模型。它用蒙特卡洛光线追踪描述辐射在地形、植被和其他地物中的传播,可以模拟光学影像、多角度反射率、激光雷达、热红外、能量平衡、光合作用、叶绿素荧光以及微波散射与辐射。

LESS 3 提供统一的 Python 接口,并可在三种计算后端上运行:

  • OptiX:NVIDIA GPU;
  • Vulkan:支持光线查询(Ray Query)的 NVIDIA、AMD 和 Intel GPU;
  • Embree:CPU,无需显卡。

三个后端使用相同的场景、参数和结果格式。后端只决定在什么硬件上计算,不改变模拟的物理含义。

可以模拟什么

应用 主要结果
光学遥感 RGB、多光谱、高光谱影像,多角度反射率,推扫影像
辐射测量 上下行辐照度图,点式辐照度计
激光雷达 离散点云与全波形
热红外 给定温度或能量平衡温度下的热辐射影像
荧光 叶片荧光源项与荧光影像
微波 雷达后向散射系数,被动微波亮温
植被过程 三维辐射场、吸收的光合有效辐射、叶温、光合速率与气孔导度

基本工作方式

在 LESS 中,一次模拟由三部分组成:

  1. 场景:地形、植被和其他物体,以及描述它们如何与辐射相互作用的属性;
  2. 光照:太阳和大气;
  3. 观测或过程:传感器(相机、激光雷达、雷达等)或物理过程(辐射场、能量平衡、光合作用)。

场景建好后可以被不同的传感器和过程反复使用。改变光照、属性或传感器时,不需要重新建立几何。

选择后端

默认的 less.Scene() 会自动选择本机可用的后端,也可以显式指定:

import less

scene = less.Scene(backend="optix")   # NVIDIA GPU
scene = less.Scene(backend="vulkan")  # 支持光线查询的 GPU
scene = less.Scene(backend="embree")  # CPU

想在运行前确认某项功能是否可用,可以使用 can_use():

scene = less.Scene()
print(scene.can_use("optical_imaging"))
print(scene.can_use("energy_balance"))

十行代码的模拟

下面的代码模拟一块反射率为 0.3 的平地,并生成一张 RGB 图像:

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], quality=32))
image.save("first_image.png")

第一次模拟会逐行解释这段代码。

版本

本教程对应 LESS 3.1.0。Python 发行包名为 less3d,在代码中写作 import less。

下一步