4. 数据预处理基础:辐射定标、大气校正、几何校正

各位同学,今天咱们聊聊数据预处理。说实话,很多刚入门的同学觉得这步又枯燥又麻烦,恨不得直接拿原始影像就开始做分类。我当年也这么干过,结果呢?分类精度惨不忍睹,被导师狠狠批了一顿。后来我才明白——预处理做不好,后面全是白忙活。

数据预处理,说白了就是给原始影像「洗澡」。把传感器带来的误差、大气层的干扰、地形引起的变形,统统处理干净。今天咱们重点讲三个环节:辐射定标、大气校正、几何校正。

核心逻辑一句话:原始影像的DN值(数字量化值)不能直接用,必须先转成物理量(辐射定标),再消除大气影响(大气校正),最后把像素放到正确的地理位置上(几何校正)。

数据预处理流程 原始影像(DN值) 辐射定标 → 辐射亮度值 大气校正 → 地表反射率 几何校正 → 地理坐标 常用工具:ENVI、GDAL 常用模型:6S、FLAASH、Sen2Cor 方法:正射校正、地理配准

4.1 辐射定标

辐射定标是预处理的第一步。它的任务很简单:把传感器记录的DN值,转换成具有物理意义的辐射亮度值或表观反射率。

你想想看,卫星传感器拍到的原始数据,其实就是一个一个的整数。这些整数跟真实的地物辐射能量之间,存在一个线性关系。这个关系由传感器的定标参数决定,通常包括增益(Gain)和偏移(Offset)。

公式其实不复杂:

L = Gain × DN + Offset

其中L是辐射亮度值,单位通常是W/(m²·sr·μm)。

我的经验:不同传感器的定标参数获取方式不一样。Landsat系列的数据,元文件(MTL.txt)里直接就有。Sentinel-2的数据,需要从影像配套的XML文件里读。我个人习惯是写一个Python脚本批量提取,省得每次手动翻文件。

辐射定标还有一个变种——表观反射率定标。就是把辐射亮度值进一步转换成大气层顶的表观反射率。这一步通常跟大气校正连着做。

4.2 大气校正

大气校正,嗯,这是预处理里最让人头疼的一步,也是最重要的一步。为什么?因为太阳辐射穿过大气层时,会被大气分子、气溶胶散射和吸收。你拍到的影像,其实是「地物信号 + 大气噪声」的混合体。

不做大气校正会怎样?我举个例子:同一块农田,夏天和冬天拍的影像,DN值可能差很多。但实际的地表反射率变化没那么大。如果不做校正,你拿这两个时相的影像去做变化检测,结果全是假的。

目前主流的大气校正模型有三个:6S、FLAASH、Sen2Cor。咱们一个一个说。

4.2.1 6S模型

6S(Second Simulation of the Satellite Signal in the Solar Spectrum)是法国里尔科技大学开发的。它基于辐射传输理论,精度很高,但操作起来比较繁琐。

6S的输入参数包括:

  • 传感器类型和波段信息
  • 太阳天顶角、方位角
  • 观测天顶角、方位角
  • 气溶胶光学厚度(AOD)
  • 水汽含量
  • 臭氧含量

注意:6S模型需要你手动输入大气参数。这些参数从哪里来?MODIS大气产品、气象站数据、或者用影像本身反演。我曾经在一个项目中,因为气溶胶参数输错了,校正后的影像出现大面积异常值,折腾了两天才找到原因。所以,参数输入一定要仔细核对。

6S的使用方式通常是命令行或调用Fortran程序。现在也有Python封装版本(Py6S),用起来方便多了。

4.2.2 FLAASH模型

FLAASH(Fast Line-of-sight Atmospheric Analysis of Spectral Hypercubes)是ENVI软件里集成的大气校正模块。它基于MODTRAN辐射传输模型,支持多光谱和高光谱数据。

FLAASH的优势在于:

  • 操作界面友好,参数设置相对简单
  • 内置了常见传感器的光谱响应函数
  • 可以自动估算气溶胶和水汽
  • 支持邻域效应校正

我个人比较喜欢FLAASH的一点是,它有一个「自动估算」功能。你只需要提供影像的中心经纬度、成像时间、传感器高度,它就能自动从影像中反演出大气参数。当然,自动估算的精度有限,如果条件允许,还是建议用实测数据。

4.2.3 Sen2Cor

Sen2Cor是欧空局专门为Sentinel-2数据开发的大气校正工具。它属于SNAP软件的一部分,也可以独立运行。

Sen2Cor的特点:

  • 专门针对Sentinel-2的13个波段优化
  • 可以生成10m、20m、60m三种分辨率的大气校正结果
  • 输出产品包括地表反射率、气溶胶光学厚度、水汽含量等
  • 支持批量处理

避坑指南:Sen2Cor对输入数据格式有要求,必须是L1C级别的SAFE格式。我曾经遇到过一个问题——下载的Sentinel-2数据文件名被系统截断了,导致Sen2Cor无法识别。后来我养成了一个习惯:下载后先检查文件名完整性,再开始处理。

4.3 几何校正

几何校正解决的是「像素位置不对」的问题。卫星影像在成像过程中,由于传感器姿态变化、地形起伏、地球曲率等因素,像素的实际地理位置跟理论位置会有偏差。

几何校正分为两类:正射校正和地理配准。

4.3.1 正射校正

正射校正是利用数字高程模型(DEM)和传感器轨道参数,消除地形引起的几何变形。它把影像从中心投影转换为正射投影。

正射校正的流程:

  1. 获取DEM数据(SRTM、ASTER GDEM等)
  2. 获取传感器轨道参数(RPC文件或物理模型参数)
  3. 建立像点与地面点的几何关系
  4. 重采样生成正射影像

常用的重采样方法有:

方法 特点 适用场景
最近邻法 速度快,不改变原始DN值 分类前的预处理
双线性内插 平滑效果好,计算量适中 一般目视解译
三次卷积 精度最高,边缘增强 高精度定量分析

注意:正射校正对DEM的精度要求很高。在平坦地区,30m分辨率的SRTM数据就够用。但在山区,我建议用12.5m的ALOS DEM或者更高精度的数据。否则校正后的影像会出现明显的「拉花」现象。

4.3.2 地理配准

地理配准,说白了就是「手动对齐」。当你有多源数据(比如不同时相的影像、矢量数据、历史地图)需要叠加分析时,就需要地理配准。

地理配准的步骤:

  1. 选择控制点(GCP)——道路交叉口、建筑物角点等明显特征点
  2. 建立变换模型(多项式、仿射、TPS等)
  3. 计算变换参数
  4. 重采样输出

控制点的选择有讲究:

  • 均匀分布在整个影像范围内
  • 避免选择随时间变化的地物(如农田、水域)
  • 控制点数量:一次多项式至少3个,二次多项式至少6个
  • RMS误差控制在0.5个像素以内

我的经验:地理配准时,我习惯先用自动匹配算法找一批候选点,然后人工筛选。自动匹配算法(如SIFT、ORB)能快速找到大量同名点,但会有误匹配。人工筛选这一步不能省。我曾经偷懒没检查,结果配准后的影像跟参考影像差了十几个像素,分析结果全偏了。

4.4 小结

数据预处理是遥感分析的基石。辐射定标把DN值变成物理量,大气校正消除大气干扰,几何校正把像素放到正确的位置。这三步走扎实了,后面的分类、变化检测、定量反演才能靠谱。

工具方面,ENVI、SNAP、GDAL、Py6S都是常用的。我个人建议初学者先从ENVI的FLAASH模块入手,界面友好,参数设置直观。等熟悉了原理,再尝试用Python脚本实现自动化处理。

好了,今天就讲到这里。记住一句话:预处理花的时间,会在后面十倍百倍地省回来。


公众号:蓝海资料掘金营,微信deep3321