专栏名称: GEE遥感训练营
专注GEE遥感算法,包括遥感影像下载、遥感影像制图、遥感GIS空间分析、遥感生态评价、遥感影像融合、遥感去干扰等多元遥感云计算
目录
相关文章推荐
学习强国  ·  每日一读 | 一个人真正的成熟,从改变自己开始 ·  14 小时前  
出彩写作  ·  AI在机关文稿写作中的应用初探 ·  2 天前  
51好读  ›  专栏  ›  GEE遥感训练营

Sentinel-2去云大比拼!这4种方法你pick谁?

GEE遥感训练营  · 公众号  ·  · 2025-03-16 23:17

正文

01

概述


Sentinel-2数据在遥感领域应用广泛,但云污染问题始终困扰着数据的有效使用 。目前, 官方已提供了4种不同的去云方法 ,帮助用户更好地获取高质量影像。这些方法分别为: 利用Sentinel-2表面反射率(SR)产品中的场景分类图(SCL)去除云层 采用谷歌地球引擎提供的Cloud Score+辅助数据,快速准确地识别并去除云像元 通过Sentinel-2 TOA数据的位运算实现高效的云遮蔽识别 ;以及 使用欧洲航天局(ESA)官方推出的Cloud Probability辅助数据,精准评估云层的概率并完成影像去云。 这4种方法各有特点和适用场景,用户可根据实际需求灵活选择最合适的方法,以最大程度地提高数据应用的准确性和可靠性。

02

数据下载说明


1. 利用Sentinel-2表面反射率(SR)产品中的场景分类图(SCL)去除云层: 利用Sentinel-2表面反射率(SR)产品中的场景分类图(SCL, Scene Classification Layer)去除云层,是一种基于分类掩膜的方法。Sentinel-2 SR产品自带SCL波段,它是由Sen2Cor大气校正算法生成的,每个像素都被分类为不同的地表类型,包括云、阴影、水体、植被、裸地等。代码如下:
var S2 = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED");//筛选时间var startDate = '2020-04-23'var endDate = '2020-04-25'// 方法1:Sentinel-2_SR 去云function maskS2clouds(image) {  var cloudProb = image.select('MSK_CLDPRB');  var cloud = cloudProb.lte(30);  var scl = image.select('SCL');   var shadow = scl.eq(3)// 3 = cloud shadow  var cirrus = scl.eq(10)// 10 = cirrus  // Cloud probability less than 5or cloud shadow classification  var mask = cloud.and(cirrus.neq(1)).and(shadow.neq(1));  return image.updateMask(mask).divide(10000)      .select("B.*")      .copyProperties(image);}//选择S2影像去云,选择去云的阈值为50;var S2_raw = S2.filterDate(startDate, endDate)               .filter(ee.Filter.eq('MGRS_TILE','48RUV'))               .sort('CLOUDY_PIXEL_PERCENTAGE')               .filter(ee.Filter.gt('CLOUDY_PIXEL_PERCENTAGE',50))              // .map(maskS2clouds)               .first()               .select(['B4','B3','B2'])var S2_rmcloud = S2.filterDate(startDate, endDate)               .filter(ee.Filter.eq('MGRS_TILE','48RUV'))               .sort('CLOUDY_PIXEL_PERCENTAGE')               .filter(ee.Filter.gt('CLOUDY_PIXEL_PERCENTAGE',50))               .map(maskS2clouds)               .first()               .select(['B4','B3','B2'])print('S2_rmcloud',S2_rmcloud)var roi = ee.FeatureCollection(ee.Feature(S2_raw.geometry()).set({'MGRS_TILE':'48RUV'}))Map.addLayer(S2_raw,{min:0,max:3000,bands:['B4','B3','B2']},'S2_raw')Map.addLayer(S2_rmcloud,{min:0,max:0.3,bands:['B4','B3','B2']},'S2_rmcloud')Map.addLayer(roi.style({color:'black',fillColor:'00000000'}),{})Map.centerObject(S2_raw,8)
去云效果如下:
2. 采用谷歌地球引擎提供的Cloud Score+辅助数据,快速准确地识别并去除云像元: Google Earth Engine(GEE)提供了Cloud Score+(CS+)算法,它是一种基于机器学习的云检测方法,能够快速识别和去除Sentinel-2影像中的云层。该方法结合多光谱波段和大气特征,通过计算每个像元的云概率值,生成云掩膜(Cloud Mask),以剔除云覆盖区域。代码如下:
var S2A = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED"), var S2CS = ee.ImageCollection("GOOGLE/CLOUD_SCORE_PLUS/V1/S2_HARMONIZED");//筛选时间var startDate = '2020-04-23'var endDate = '2020-04-25'var S2A_img = S2A.filterDate(startDate, endDate)               .filter(ee.Filter.eq('MGRS_TILE','48RUV'))               .sort('CLOUDY_PIXEL_PERCENTAGE')               .filter(ee.Filter.gt('CLOUDY_PIXEL_PERCENTAGE',50))              // .map(maskS2clouds)               .select(['B4','B3','B2'])print('S2A_img',S2A_img)var visualization = {  min0.0,  max3000,  bands: ['B4''B3''B2'],};Map.addLayer(S2A_img, visualization, 'S2A_imgRGB',false);/***CloudScore得到的去云影像结果**/var S2A_img_rmCloudByCloudScore = S2A_img    .linkCollection(S2CS,'cs')    .map(function(img) {      return img.updateMask(img.select('cs').gte(0.6));    }).first();//设置空白处填充色系var span = ee.Image(1).clip(S2A_img.first().geometry())Map.addLayer(span,{palette:'blue'},'span')Map.addLayer(S2A_img_rmCloudByCloudScore,visualization, 'S2A_img_rmCloudByCloudScore')
去云效果如下:
3. 通过Sentinel-2 TOA数据的位运算实现高效的云遮蔽识别: Sentinel-2 TOA(Top of Atmosphere)数据 提供了 QA60质量评估波段 ,其中包含云掩膜信息。该波段使用






请到「今天看啥」查看全文