20 - 卫星推扫成像¶
推扫成像把三维场景、大气和成像仪器连成一条完整的链路。结果除了辐亮度,还有探测器上的电子数、模数转换后的数字量(DN),以及每个像元的观测位置和时间。可用于比较传感器设计、分析影像形成过程或生成算法测试数据。
推扫成像在一个局部平面坐标系中描述一段航迹,适合局部场景。需要完整轨道、地球曲率或严格几何校正时,可以先用轨道工具生成观测几何。
三个组成部分¶
| 部分 | 类 | 内容 |
|---|---|---|
| 观测几何 | Pushbroom |
高度、航向、幅宽、地速、行频、扫描时间 |
| 光谱与大气 | OpticalImager |
波段、采样数、观测高度、邻近效应 |
| 仪器 | Instrument |
口径、积分时间、光学透过率、量子效率、调制传递函数、噪声、模数转换 |
示例¶
import less
scene = less.Scene()
scene.size = 1000.0
scene.terrain = less.Terrain(property=less.Lambertian(reflectance=0.20))
scene.illumination = less.Illumination(
source=less.Sun(zenith=30, azimuth=150),
atmosphere=less.Atmosphere.standard(
"midlatitude_summer", aerosol="continental", aot550=0.10, sky_mode="anisotropic"),
)
projection = less.Pushbroom(
resolution=64, # 每条扫描线的像元数
num_lines=64, # 沿轨扫描线数
altitude=700000, # 高度(m)
swath_width=1000, # 幅宽(m)
heading=180, # 航向,从北顺时针
ground_speed=7000, # 地速(m/s)
line_rate=441, # 行频(行/秒)
start_time=0.0,
)
instrument = less.Instrument(
aperture_diameter=0.20, # m
integration_time=0.001, # s
optical_transmission=0.70,
quantum_efficiency=0.75,
read_noise=4.0, # 电子
dark_current=20.0, # 电子/秒
full_well=80000, # 电子
gain=5.0, # 电子/DN
bit_depth=14,
mtf_nyquist=0.30,
smear=0.2, # 沿轨拖影(像元)
seed=42,
)
sensor = less.OpticalImager(
projection=projection,
bands=less.Sentinel2A(),
spectral_resolution=20,
quality=16,
observation_level="toa",
adjacency_sigma=1.0,
instrument=instrument,
)
product = scene.simulate(sensor)
observation_level="toa" 使用场景的大气模型,把地表出射的辐亮度传到大气层顶,再送入仪器。
扫描时间与覆盖范围¶
同时给出 ground_speed 和 line_rate 时,沿轨覆盖长度为
其中 v 是地速,N 是扫描线数,f 是行频。也可以直接用 ground_track_length 给出覆盖长度,此时以它为准。第 k 条扫描线的时刻为 start_time + k / line_rate。
altitude 只决定光线的几何起点;大气传输的终点由 observation_level 或 observation_altitude_km 决定。
仪器模型¶
每个波段的辐亮度先根据有效带宽、入瞳面积、像元立体角、积分时间和光学透过率换算为到达探测器的光子数,乘以量子效率得到电子数。然后依次加入:
- 点扩散函数、调制传递函数、抖动和沿轨拖影;
- 光子散粒噪声、暗电流和读出噪声;
- 满阱截断、增益和模数转换的量化。
使用光谱响应函数时自动计算有效带宽。固定 seed 可以得到可重复的噪声;设置 noise=False 只看不含噪声的结果。
结果¶
product.source_radiance # 入瞳辐亮度
product.radiance # 经过空间响应后的辐亮度
product.electrons # 电子数
product.dn # 数字量,与 product.data 相同
product.geolocation # 每个像元的 x、y、观测天顶角、方位角和时间
product.save("satellite_product.npz") # 保存所有中间量
product.save("satellite_dn.tif") # 数字量和地理定位
product.save("satellite_preview.png", bands=[3, 2, 1])
为场景设置地图坐标后,每个像元的位置还包含东坐标、北坐标和坐标系,GeoTIFF 用地面控制点记录推扫几何:
场景的 y 轴指向南,因此北坐标从原点向南递减。
邻近效应¶
adjacency_sigma(像元)大于 0 时,根据观测路径上分子和气溶胶散射的光学厚度,把相邻像元的辐亮度按比例混合。这种近似不改变均匀场景的辐亮度,可用于快速估计明暗边界附近的邻近效应。
内置示例¶
适用范围¶
推扫成像包含局部航段内的平台运动、跨轨扫描、逐像元观测角、任意观测高度的一维分层大气、地气耦合、邻近效应近似、光谱响应和探测器链路。它不包含轨道动力学、地球曲率、姿态时间序列、随时间变化的场景、云的三维辐射传输和偏振,结果不等同于经过几何处理的业务卫星产品。