第二章 遥感数据获取与预处理:从原始影像到可用数据
大家好,我是你们的老朋友。今天咱们聊聊遥感AI解译的第一步——数据获取与预处理。说实话,很多同学一上来就急着跑模型,结果数据质量不过关,模型再牛也白搭。我在项目里吃过这个亏,所以这一章咱们好好掰扯掰扯。
2.1 常见卫星数据源:你该选哪个?
做遥感AI,第一步就是选数据源。市面上的卫星数据五花八门,但常用的就那么几个。我个人习惯把它们分成三类:免费开放型、国产高分型、商业高精度型。
2.1.1 Landsat系列——老牌劲旅
Landsat从1972年就开始干活了,到现在积累了50多年的数据。它的优势在于:
- 免费开放:USGS官网直接下载,不用花钱
- 时间序列长:做变化检测、长时序分析首选
- 空间分辨率适中:Landsat 8/9的OLI传感器是30米多光谱,15米全色
嗯,这里要注意:Landsat的重访周期是16天,如果你需要高时间分辨率的数据,它可能不太够用。我在做城市扩张监测时,就遇到过云覆盖导致几个月拿不到有效影像的情况。
2.1.2 Sentinel系列——欧洲新秀
Sentinel是欧空局的宝贝,尤其是Sentinel-2,我个人特别喜欢用。为啥?
- 10米空间分辨率:比Landsat精细不少
- 5天重访周期:加上双星组网,时间分辨率翻倍
- 13个光谱波段:红边波段对植被分析特别友好
我记得有一次做农业地块分类,用Sentinel-2的红边波段,分类精度直接提升了8个百分点。你想想看,这效果多明显。
2.1.3 高分系列——国产之光
咱们国家的高分系列卫星,这几年发展很快。高分一号到七号,各有各的绝活:
| 卫星 | 分辨率 | 主要用途 |
|---|---|---|
| 高分一号 | 2m全色/8m多光谱 | 国土资源调查 |
| 高分二号 | 0.8m全色/3.2m多光谱 | 城市规划、精细地物识别 |
| 高分六号 | 2m全色/8m多光谱 | 农业监测、植被分析 |
高分数据的获取渠道相对复杂一些,需要通过中国资源卫星应用中心申请。不过对于国内项目来说,用国产数据更符合政策要求。
我的建议:做研究或原型验证,优先用Landsat和Sentinel;做工程项目或需要高精度,考虑高分系列或商业数据。
2.2 辐射定标:把DN值变成物理量
卫星拍到的原始影像,存的是DN值(Digital Number),说白了就是传感器记录的电压值。但这个值跟地物的真实反射率之间,还差着十万八千里。
辐射定标,就是把DN值转换成辐射亮度或反射率。公式其实不复杂:
L = Gain × DN + Offset
其中Gain和Offset是传感器的定标参数,一般在元数据文件里能找到。Landsat的MTL文件、Sentinel-2的XML文件里都有。
我曾经遇到过一个坑:不同版本的Landsat数据,定标参数的单位不一样。Landsat 8用的是反射率缩放系数,而Landsat 5用的是辐射亮度系数。如果不注意,算出来的结果会差好几个数量级。
避坑指南:下载数据后,第一件事就是看元数据文件。别偷懒,我见过太多人因为参数搞错,后面全白干了。
2.3 大气校正:去掉那层"雾"
卫星在太空拍地面,中间隔着厚厚的大气层。大气分子和气溶胶会散射、吸收电磁波,导致影像看起来灰蒙蒙的。大气校正就是把这层影响去掉,还原地物的真实反射率。
常用的方法有几种:
- 6S模型:物理模型,精度高但计算慢
- FLAASH:基于MODTRAN,商业软件常用
- Sen2Cor:专门给Sentinel-2用的,免费好用
- QUAC:快速大气校正,不需要大气参数
我个人习惯用Sen2Cor处理Sentinel-2数据,用6S处理Landsat数据。为什么?因为Sen2Cor是欧空局官方出的,参数匹配得最好;6S虽然慢,但精度可控。
嗯,这里要提醒一下:大气校正不是万能的。如果影像上全是厚云,再怎么校正也救不回来。我建议先做云检测,把云覆盖严重的影像直接扔掉。
注意:做AI分类时,如果训练数据和测试数据的大气校正方法不一致,模型会学到"大气差异"而不是"地物差异"。所以,保持预处理流程一致非常重要。
2.4 几何校正:让像素对上位置
卫星影像存在几何变形,原因包括卫星姿态变化、地形起伏、地球曲率等。几何校正就是把这些变形纠正过来,让每个像素对应到正确的地理位置。
几何校正分两种:
- 粗校正:用卫星轨道参数和传感器模型,精度在几十米量级
- 精校正:用地面控制点(GCP),精度可以达到亚像素级
做AI解译时,我建议至少做精校正。因为模型对空间位置很敏感,如果像素偏移了几个像元,分类结果会惨不忍睹。
我记得有一次做道路提取,训练数据用的是经过精校正的影像,但测试数据只做了粗校正。结果模型在测试集上的IoU直接从0.75掉到了0.3。后来一查,发现是几何偏差导致道路位置对不上。
2.4.1 实操步骤
用GDAL做几何校正,代码其实很简单:
from osgeo import gdal
# 读取原始影像
src_ds = gdal.Open('input.tif')
# 设置GCP点
gcps = [
gdal.GCP(120.5, 30.2, 0, 100, 200),
gdal.GCP(120.6, 30.3, 0, 300, 400),
# ... 更多控制点
]
# 应用GCP并输出校正后的影像
dst_ds = gdal.Warp('output.tif', src_ds,
format='GTiff',
dstSRS='EPSG:4326',
transformerOptions={'GCPS': gcps})
实际项目中,GCP点一般从高精度参考影像或实地测量中获取。我建议至少选15-20个均匀分布的控制点,精度才有保障。
2.5 知识体系总览
说了这么多,咱们用一张图来总结一下本章的核心逻辑:
这张图把整个流程串起来了。说白了,就是从原始数据源出发,经过三步预处理,最终得到能喂给AI模型的干净数据。每一步都有坑,但每一步也都有成熟的解决方案。
核心要点:数据预处理的质量,直接决定了AI解译的上限。模型再强,也救不了烂数据。所以,花时间把预处理做好,比调模型参数划算得多。
好了,这一章就到这里。数据获取和预处理是遥感AI的基础,打好这个基础,后面的路就好走了。
公众号:蓝海资料掘金营,微信deep3321