Sentinel-2数据在遥感领域应用广泛,但云污染问题始终困扰着数据的有效使用
。目前,
官方已提供了4种不同的去云方法
,帮助用户更好地获取高质量影像。这些方法分别为:
利用Sentinel-2表面反射率(SR)产品中的场景分类图(SCL)去除云层
;
采用谷歌地球引擎提供的Cloud Score+辅助数据,快速准确地识别并去除云像元
;
通过Sentinel-2 TOA数据的位运算实现高效的云遮蔽识别
;以及
使用欧洲航天局(ESA)官方推出的Cloud Probability辅助数据,精准评估云层的概率并完成影像去云。
这4种方法各有特点和适用场景,用户可根据实际需求灵活选择最合适的方法,以最大程度地提高数据应用的准确性和可靠性。
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 5% or 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))
.select(['B4','B3','B2'])
print('S2A_img',S2A_img)
var visualization = {
min: 0.0,
max: 3000,
bands: ['B4', 'B3', 'B2'],
};
Map.addLayer(S2A_img, visualization, 'S2A_imgRGB',false);
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质量评估波段
,其中包含云掩膜信息。该波段使用