01 - 模型介绍¶
LESS 是什么¶
LESS 是面向遥感研究的三维辐射传输模型。它用蒙特卡洛光线追踪描述辐射在地形、植被和其他地物中的传播,可以模拟光学影像、多角度反射率、激光雷达、热红外、能量平衡、光合作用、叶绿素荧光以及微波散射与辐射。
LESS 3 提供统一的 Python 接口,并可在三种计算后端上运行:
- OptiX:NVIDIA GPU;
- Vulkan:支持光线查询(Ray Query)的 NVIDIA、AMD 和 Intel GPU;
- Embree:CPU,无需显卡。
三个后端使用相同的场景、参数和结果格式。后端只决定在什么硬件上计算,不改变模拟的物理含义。
可以模拟什么¶
| 应用 | 主要结果 |
|---|---|
| 光学遥感 | RGB、多光谱、高光谱影像,多角度反射率,推扫影像 |
| 辐射测量 | 上下行辐照度图,点式辐照度计 |
| 激光雷达 | 离散点云与全波形 |
| 热红外 | 给定温度或能量平衡温度下的热辐射影像 |
| 荧光 | 叶片荧光源项与荧光影像 |
| 微波 | 雷达后向散射系数,被动微波亮温 |
| 植被过程 | 三维辐射场、吸收的光合有效辐射、叶温、光合速率与气孔导度 |
基本工作方式¶
在 LESS 中,一次模拟由三部分组成:
- 场景:地形、植被和其他物体,以及描述它们如何与辐射相互作用的属性;
- 光照:太阳和大气;
- 观测或过程:传感器(相机、激光雷达、雷达等)或物理过程(辐射场、能量平衡、光合作用)。
场景建好后可以被不同的传感器和过程反复使用。改变光照、属性或传感器时,不需要重新建立几何。
选择后端¶
默认的 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():
十行代码的模拟¶
下面的代码模拟一块反射率为 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。