数据预处理基础:辐射定标、大气校正、几何校正、图像裁剪与拼接
大家好,我是你们这堂课的主讲人。咱们直接进入正题——数据预处理。
很多人觉得预处理就是“体力活”,没什么技术含量。我刚开始做遥感那会儿也这么想,结果呢?第一次用没做大气校正的数据去反演地表温度,出来的结果简直离谱,跟实测差了十几度。嗯,从那以后我再也不敢小看这一步了。
说白了,卫星拿到的原始数据,就像没洗过的土豆。你想直接吃?不行。得先削皮、清洗、切块。预处理就是干这个的。
一、辐射定标:把“灰度值”变成“物理量”
卫星传感器记录的是啥?是数字量化值,也就是DN值。但我们要的是辐射亮度、反射率这些物理量。怎么办?做辐射定标。
公式其实很简单:
L = Gain × DN + Offset
其中Gain是增益,Offset是偏移量。这两个参数一般都在元数据文件里,比如Landsat的MTL文件。
我个人习惯,拿到数据第一件事就是打开元数据,看看定标参数有没有更新。有些卫星会定期更新定标系数,用旧的会出问题。
import rasterio
import numpy as np
with rasterio.open('B2.TIF') as src:
dn = src.read(1).astype(np.float32)
gain = 0.0001 # 从元数据读取
offset = -0.01
radiance = dn * gain + offset
这里要注意,DN值一般是整型,要转成浮点型再计算,不然精度会丢。
二、大气校正:把“模糊”变“清晰”
大气校正,说白了就是去掉大气对信号的干扰。太阳光穿过大气,被水汽、气溶胶散射吸收,传感器收到的信号已经“失真”了。
我做过一个项目,用MODIS数据监测湖泊水质。没做大气校正前,同一片湖不同时间的反射率曲线乱得没法看。做完6S模型校正后,曲线才稳定下来。
常用的方法有几种:
- 相对校正: 用暗目标法,假设图像里最暗的像元反射率为0。简单,但精度一般。
- 绝对校正: 用辐射传输模型,比如6S、MODTRAN。精度高,但需要大气参数。
- 经验线法: 用地面的实测光谱来拟合。精度最高,但需要野外工作。
我个人建议,如果做定量分析,比如反演植被参数、地表温度,一定要做大气校正。如果只是做分类,有时候不做也行,但最好还是做一下。
三、几何校正:把“歪的”摆“正”
卫星影像因为传感器角度、地形起伏、地球曲率等原因,几何位置会有偏差。几何校正就是把这些偏差纠正过来。
几何校正分两种:
- 粗校正: 用卫星自带的轨道参数和姿态数据来校正。一般卫星数据都做过这一步,但精度不够。
- 精校正: 用地面控制点(GCP)来校正。精度高,但需要人工选点。
选控制点是个技术活。我一般选道路交叉口、建筑物角点这些特征明显、不易变化的地方。均匀分布,不要都挤在一个角落。
校正模型常用多项式模型:
# 一阶多项式校正
x' = a0 + a1*x + a2*y
y' = b0 + b1*x + b2*y
重采样方法我推荐用三次卷积,虽然慢一点,但图像质量好。最近邻法最快,但会有锯齿。
四、图像裁剪与拼接:只取你需要的
卫星影像通常很大,一景Landsat就有185公里宽。我们往往只关心研究区那一小块。裁剪就是干这个的。
裁剪有两种方式:
- 按矢量边界裁剪: 用Shapefile或GeoJSON文件来裁剪。适合不规则区域。
- 按矩形范围裁剪: 指定左上角和右下角坐标。适合规则区域。
拼接呢,就是把多景影像拼成一幅。比如你要做全国植被覆盖,得把几十景影像拼起来。
拼接时要注意:
- 色调一致性: 不同影像的亮度、对比度可能不同,要做匀色处理。
- 接缝处理: 用羽化或镶嵌线来消除接缝。
- 重叠区处理: 取平均值、中值,或者用某种权重。
我做过一个项目,拼接了20多景高分影像。最头疼的就是色调不一致,有的偏亮有的偏暗。后来用直方图匹配,把每景影像的直方图匹配到参考影像上,效果才好。
知识体系总览
下面这张图,是我自己画的预处理流程。你跟着这个顺序走,基本不会出错。
你看,整个流程是线性的。从原始DN值开始,先做辐射定标,再做大气校正,然后几何校正,最后根据需求裁剪或拼接。每一步都依赖上一步的结果,顺序不能乱。
好了,这一章的内容就到这里。数据预处理是遥感分析的地基,地基不稳,后面建什么都是白搭。希望你们能把这些步骤练熟,后面做分析才能得心应手。