2. 辐射度学基础
辐射亮度这个量,说白了就是描述「一束光到底有多亮」的物理量。但很多工程师在实际处理数据时,往往被它的单位搞晕。我见过不少项目,因为单位换算出错,导致反演结果差了几个数量级。
今天我们就来彻底搞清楚辐射亮度的单位体系。我会结合自己踩过的坑,帮你建立一套「单位直觉」。
2.1 辐射亮度的定义与核心单位
先看定义。辐射亮度(Radiance)是单位投影面积、单位立体角内的辐射通量。公式很简单:
L = d²Φ / (dA · cosθ · dΩ)
其中:
- Φ — 辐射通量(W)
- A — 面积(m²)
- Ω — 立体角(sr)
- θ — 法线与观测方向的夹角
所以辐射亮度的基本单位就是:W / (sr · m²)。读作「瓦特每球面度每平方米」。
核心记忆点:辐射亮度 = 单位面积上、单位立体角内的功率。你可以把它想象成「一扇窗户上,每平方米玻璃,朝某个方向看过去的亮度」。
2.2 两种主流单位体系
实际工作中,我们主要遇到两套单位体系。我习惯把它们叫做「能量派」和「光子派」。
| 体系 | 单位 | 物理含义 | 典型应用场景 |
|---|---|---|---|
| 能量单位 | W/(sr·m²) | 每秒辐射的能量(焦耳/秒) | 热红外、辐射定标、能量平衡 |
| 光子单位 | photons/(sr·m²·s) | 每秒辐射的光子数 | 可见光/近红外、CCD/CMOS传感器 |
为什么要分两套?因为探测器的工作原理不同。热红外传感器响应的是能量,而CCD相机响应的是光子数。你想想看,一个光子能量是 hν,波长不同,同样能量对应的光子数就不同。
我的经验:做可见光遥感时,我习惯先把所有数据转成光子数单位再处理。因为传感器噪声模型是基于光子计数的,用能量单位反而容易搞混。
2.3 单位换算实战:从能量到光子数
这是最常遇到的换算场景。公式其实就一行:
L_photon = L_energy / (h · c / λ)
其中:
- h = 6.626×10⁻³⁴ J·s(普朗克常数)
- c = 2.998×10⁸ m/s(光速)
- λ = 波长(单位:米)
简化一下,单个光子的能量 E_photon = hc/λ。把能量除以单光子能量,就得到光子数。
实际计算时,我推荐用这个工程简化公式:
L_photon = L_energy × λ / (h · c)
代入数值:
L_photon = L_energy × λ / (1.986×10⁻²⁵)
其中 λ 单位是米,L_energy 单位是 W/(sr·m²)
我曾经踩过的坑:有一次处理Landsat 8数据,我忘了把波长从纳米换算成米,结果光子数差了10⁹倍。反演出来的地表反射率直接爆表。后来我养成了一个习惯——换算前先写单位量纲检查表。
2.4 常见换算系数速查表
为了方便实战,我整理了几个典型波长的换算系数。记住这些,现场算起来快很多。
| 波段 | 中心波长 | 单光子能量 (J) | 换算系数 (photons/s per W) |
|---|---|---|---|
| 蓝光 | 480 nm | 4.14×10⁻¹⁹ | 2.42×10¹⁸ |
| 绿光 | 560 nm | 3.55×10⁻¹⁹ | 2.82×10¹⁸ |
| 红光 | 660 nm | 3.01×10⁻¹⁹ | 3.32×10¹⁸ |
| 近红外 | 860 nm | 2.31×10⁻¹⁹ | 4.33×10¹⁸ |
| 短波红外 | 1600 nm | 1.24×10⁻¹⁹ | 8.06×10¹⁸ |
换算系数怎么用?举个例子:
如果你测得辐射亮度是 10 W/(sr·m²) 的红光(660 nm),那么对应的光子数辐射亮度就是:
10 × 3.32×10¹⁸ = 3.32×10¹⁹ photons/(sr·m²·s)
2.5 辐射亮度单位知识体系
下面这张图,是我自己画的知识结构。它把辐射亮度的单位体系、换算关系和实战要点串在了一起。
2.6 实战中的单位陷阱
说几个我实际遇到过的坑,你遇到了可以少走弯路。
- 立体角单位 sr 被忽略 — 有些文献直接写 W/m²,其实是辐射照度,不是辐射亮度。差了一个立体角因子。
- 投影面积 vs 实际面积 — 公式里的 dA·cosθ 是投影面积。如果观测角是 60°,面积因子就是 0.5,千万别忘了。
- 光谱辐射亮度 vs 波段辐射亮度 — 前者单位是 W/(sr·m²·μm),后者是 W/(sr·m²)。差一个光谱带宽。
我的习惯:每次拿到传感器定标文件,第一件事就是确认辐射亮度的单位。是 W/(sr·m²) 还是 W/(sr·m²·μm)?是能量单位还是光子数单位?这个搞错了,后面全白做。
2.7 快速换算工具函数
最后,分享一个我常用的 Python 函数。现场处理数据时,直接调它就行。
import numpy as np
def radiance_convert(L_energy, wavelength_nm, target_unit='photon'):
"""
辐射亮度单位换算函数
参数:
L_energy: 能量辐射亮度 [W/(sr·m²)]
wavelength_nm: 波长 [nm]
target_unit: 'photon' 或 'energy'
返回:
换算后的辐射亮度值
"""
h = 6.626e-34 # 普朗克常数 J·s
c = 2.998e8 # 光速 m/s
lam = wavelength_nm * 1e-9 # 转成米
if target_unit == 'photon':
# 能量 → 光子数
E_photon = h * c / lam
return L_energy / E_photon
else:
# 光子数 → 能量
E_photon = h * c / lam
return L_energy * E_photon
# 示例:10 W/(sr·m²) 的 660 nm 红光转光子数
result = radiance_convert(10, 660, 'photon')
print(f"光子数辐射亮度: {result:.2e} photons/(sr·m²·s)")
# 输出: 光子数辐射亮度: 3.32e+19 photons/(sr·m²·s)