💡 前提准备(必看)
✅ 已安装:ArcGIS Pro + Spatial Analyst/Image Analyst 扩展模块(缺一不可)
✅ 已准备:Sentinel-2 L1C/Landsat-8 原始影像(DN值格式)、研究区矢量边界、DEM(可选,用于地形校正)
✅ 核心目标:3步搞定校正,输出可直接用于AI建模的标准化影像
一、辐射定标(DN值→物理辐亮度)🌞
📌 核心目的:消除传感器本身误差,把无意义的灰度值,转换成可比对、可分析的物理量
1️⃣ 加载影像
打开ArcGIS Pro → 新建地图 → 点击【添加数据】→ 选中Sentinel-2/Landsat-8原始影像(.jp2或.tif格式)
2️⃣ 打开辐射定标工具
顶部菜单栏 → 【地理处理】→ 搜索"辐射定标" → 打开【Radiometric Calibration】工具
3️⃣ 关键参数设置(直接照搬)
• 输入栅格:选择刚刚加载的原始影像
• 定标类型:默认选择【辐射亮度(Radiance)】
• 输出栅格:自定义保存路径(建议命名:radiance.tif,方便后续查找)
• 传感器类型:软件自动识别(Sentinel-2/Landsat-8无需手动调整)
4️⃣ 运行工具
点击面板底部【运行】,等待1-5分钟(根据影像大小),生成辐射定标后的影像
二、大气校正(消除大气干扰)🌫️
📌 核心目的:剔除空气中水汽、气溶胶、光照散射的影响,还原地物真实的地表反射率(做地物分类、植被反演必做!)
1️⃣ 打开大气校正工具
方法1(通用):【地理处理】→ 搜索"大气校正" → 打开【Atmospheric Correction】工具
方法2(Sentinel-2专属,更快捷):搜索"应用Sentinel-2大气校正" → 直接打开专用工具链
2️⃣ 通用参数设置(照搬即可)
• 输入栅格:选择【辐射定标后】的影像(第一步生成的radiance.tif)
• 大气模型:默认【中纬度夏季(Mid-Latitude Summer)】(北方冬季可改为中纬度冬季)
• 气溶胶模型:默认【乡村(Rural)】(城市区域可改为城市)
• 输出栅格:自定义路径(命名:reflectance.tif)
3️⃣ 运行工具
点击【运行】,等待3-10分钟,生成地表反射率影像(校正后植被更绿、水体更暗,肉眼可见差异)
三、几何校正(纠正坐标偏移)📍
📌 核心目的:修正卫星成像姿态、地形起伏带来的几何畸变,确保影像与GIS矢量边界、路网精准匹配
👉 推荐方法:自动配准(Sentinel-2/Landsat-8原始影像已做粗校正,自动配准足够满足日常项目)
1️⃣ 加载基准数据
点击【添加数据】→ 加载高精度底图(如天地图)或研究区矢量边界(WGS84坐标系)
2️⃣ 打开自动配准工具
【地理处理】→ 搜索"自动影像配准" → 打开【Auto Register】工具
3️⃣ 参数设置
• 输入栅格:选择【大气校正后】的影像(第二步生成的reflectance.tif)
• 参考栅格/矢量:选择刚刚加载的基准底图或研究区矢量
• 输出栅格:自定义路径(命名:geocorrected.tif)
4️⃣ 运行与验证
点击【运行】,完成后将校正后的影像与矢量边界叠加,检查无明显偏移(误差通常<1个像素)
💡 补充:高精度需求(如科研、精准监测)
打开【添加控制点】工具,在影像与基准图上,均匀选择6-10个控制点(道路交叉、河流拐点最佳),手动配准后再校正
四、可选步骤:影像裁剪+增强 ✂️
(按需操作,提升建模效率和效果)
1️⃣ 影像裁剪(按研究区边界)
• 工具:【地理处理】→ 搜索"裁剪" → 打开【Clip】工具
• 参数:输入栅格(几何校正后影像)、裁剪要素(研究区矢量)、自定义输出路径
2️⃣ 影像增强(提升可视化/模型辨识度)
• 直方图均衡化:选中影像 → 【影像】→ 【增强】→ 【直方图均衡化】
• 对比度拉伸:右键影像 → 【图层属性】→ 【符号系统】→ 【拉伸】→ 【标准差拉伸(2σ)】
五、关键验证+避坑指南 ❌
✅ 验证要点(必做,避免后续建模翻车)
-
辐射定标:像元值范围符合规范(Sentinel-2:0--10000)
-
大气校正:植被近红外反射率高、红光反射率低(符合物理常识)
-
几何校正:影像与矢量边界无明显偏移
-
裁剪:影像范围与研究区完全一致
❌ 常见坑+解决方案
-
辐射定标失败 → 检查影像元数据,重新下载L1C级原始影像
-
大气校正后影像发黑 → 调整大气模型/气溶胶模型,优先用Sentinel-2专用工具链
-
几何校正偏移大 → 手动补充高辨识度控制点,避开水体、大面积植被等无特征区域
💬 小提示:所有步骤完成后,保存ArcGIS项目,后续可直接调用预处理后的影像,无缝对接Python批量处理和AI模型训练~
六、数据集标准化处理(可选)
1️⃣ 波段合成
组合 RGB 真彩色、近红外假彩色波段,适配不同识别场景
2️⃣ Python 批量波段合成实战代码(可直接运行)
无需手动拼接单波段影像,GDAL 一键批量合成 Sentinel-2 标准 RGB 影像,新手改路径即用,全代码详细注释。
python
# 导入必备库(GDAL用于读取遥感影像,numpy用于数据处理)
from osgeo import gdal
import numpy as np
import os
def batch_merge_bands(input_dir, output_path, target_bands=[2,3,4]):
"""
批量读取遥感影像,合成指定波段(Sentinel-2:2蓝、3绿、4红)
input_dir: 原始单波段影像存放文件夹
output_path: 合成后多波段TIFF保存路径
target_bands: 需要合成的波段序号
"""
# 筛选文件夹内所有tif单波段影像
tif_files = [f for f in os.listdir(input_dir) if f.endswith('.tif')]
tif_files.sort()
# 获取影像行列尺寸与空间信息
ds = gdal.Open(os.path.join(input_dir, tif_files[0]))
width = ds.RasterXSize
height = ds.RasterYSize
band_num = len(target_bands)
# 初始化空数组存储多波段数据
merge_data = np.zeros((height, width, band_num), dtype=np.float32)
# 循环读取指定波段数据
for i, band_id in enumerate(target_bands):
band_file = [f for f in tif_files if f.endswith(f'B{band_id}.tif')][0]
band_ds = gdal.Open(os.path.join(input_dir, band_file))
merge_data[:, :, i] = band_ds.ReadAsArray()
band_ds = None
# 创建新多波段栅格文件
driver = gdal.GetDriverByName('GTiff')
out_ds = driver.Create(output_path, width, height, band_num, gdal.GDT_Float32)
# 保留原始投影与地理坐标
out_ds.SetGeoTransform(ds.GetGeoTransform())
out_ds.SetProjection(ds.GetProjection())
# 写入波段数据
for n in range(band_num):
out_band = out_ds.GetRasterBand(n+1)
out_band.WriteArray(merge_data[:, :, n])
out_band.FlushCache()
# 释放内存资源
ds = None
out_ds = None
print(f"✅ 遥感波段合成完成!保存路径:{output_path}")
# 主函数调用,修改路径直接运行
if __name__ == "__main__":
# 填写自己本地影像文件夹路径
raw_tif_path = r"E:\Sentinel2\raw_data"
save_tif_path = r"E:\Sentinel2\merged\S2_RGB_merge.tif"
# 合成2、3、4标准真彩色波段
batch_merge_bands(raw_tif_path, save_tif_path, target_bands=[2,3,4])
代码使用说明 提前安装依赖:pip install gdal numpy 仅修改文件输入、输出路径即可
可自由替换合成近红外、红边等任意组合波段 批量处理千张遥感影像无压力,彻底告别手动操作
3️⃣ 数据集划分
统一行业通用比例:训练集 7 : 测试集 3,按区域随机划分,避免时序 / 区域数据泄露
七、学习总结
- 遥感建模第一步永远是优质数据源 + 严格筛选,低质量影像直接放弃
- 辐射定标、大气校正、几何校正是 GIS 遥感核心门槛,必须熟练掌握
- ArcGIS 做精细化预处理,Python 做批量自动化处理,效率翻倍
- 标准化预处理后的数据集,可直接无缝对接 YOLOv8、语义分割、积水识别、地物分类等所有 AI 遥感模型