这里的这个代码是有问题的,本来代码的本意是想去除条带,可以他采取的做法却是利用mean或者median等方式来进行,这只是影像聚合的一种方式,并不是通过改变影像的DN值来改变影像的的色调,所以我们可以先看下面的代码,然后回给大家在文章末尾提供两个直方图匹配的修复方案!
代码:
var L8SR_collection = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2"),
roi =
/* color: #d63000 */
/* shown: false */
/* displayProperties: [
{
"type": "rectangle"
}
] */
ee.Geometry.Polygon(
[[[35.656721917962024, -9.845627851094253],
[35.656721917962024, -10.34249880734705],
[36.4353779238214, -10.34249880734705],
[36.4353779238214, -9.845627851094253]]], null, false),
geometry_1 = /* color: #d63000 */ee.Geometry.Point([35.78712134946283, -9.929366325427338]),
geometry_2 = /* color: #98ff00 */ee.Geometry.Point([36.311674920891406, -10.291949698399549]);
//**
Map.centerObject(roi,9.3)
var empty = ee.Image().byte()
var outline = empty.paint({featureCollection:roi, color:1, width:1})
Map.addLayer (outline,{palette:'red'},'Boundary')
//===============================================================================\\
/*
1. 影像集合和筛选 (TOA & SR)
*/
//================================================================================\\
//** Timeframe
var start = '2014-06-01'
var end = '2014-11-01'
var cloudcover = 30
var cloudProperty = 'CLOUD_COVER_LAND'
//** 1. Dry
var drystart = 6
var dryend = 9
//** 2. Wet
var wetstart = 1
var wetend = 5
//============================================================================\\
/*
2.数据预处理 (TOA & SR)
*/
//=============================================================================\\
// 对Landsat Collection 2 SR图像进行缩放,并将云层掩码添加为波段。
function maskL8sr(image) {
// 为不需要的像素制定蒙版(填充、云、云影)。
var qaMask1 = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0)
.rename('dilated');
var qaMask2 = image.select('QA_PIXEL').bitwiseAnd(parseInt('11101', 2)).eq(0)
.rename('not_dilated');
// 将缩放系数应用于适当的波段。
var getFactorImg = function(factorNames) {
var factorList = image.toDictionary().select(factorNames).values();
return ee.Image.constant(factorList);
};
var scaleImg = getFactorImg([
'REFLECTANCE_MULT_BAND_.|TEMPERATURE_MULT_BAND_ST_B10']);
var offsetImg = getFactorImg([
'REFLECTANCE_ADD_BAND_.|TEMPERATURE_ADD_BAND_ST_B10']);
var scaled = image.select('SR_B.|ST_B10').multiply(scaleImg).add(offsetImg);
// 用按比例的波段替换原来的波段,并添加mask。
return image.addBands(scaled, null, true).addBands([qaMask1, qaMask2]);
}
//** 波段选择
//** Surface Reflectance
var l8_bands_sr = ['SR_B1','SR_B2','SR_B3','SR_B4','SR_B5','SR_B6','SR_B7'];
var L8SR_new_names = ['SR_ULTRABLUE','SR_BLUE','SR_GREEN','SR_RED','SR_NIR','SR_SWIR1','SR_SWIR2'];
//============================================================================\\
/*
3. 应用函数到影像 (TOA & SR)
*/
//=============================================================================\\
var L8SR_1 = L8SR_collection.filterDate(start,end)
.filter(ee.Filter.lte(cloudProperty,cloudcover))
.sort(cloudProperty)
.filterBounds(geometry_1)
.map(maskL8sr)
.select(l8_bands_sr,L8SR_new_names)
.first()
//.clip(roi)
var L8SR_2 = L8SR_collection.filterDate(start,end)
.filter(ee.Filter.lte(cloudProperty,cloudcover))
.sort(cloudProperty)
.filterBounds(geometry_2)
.map(maskL8sr)
.select(l8_bands_sr,L8SR_new_names)
.first()
//.clip(roi)
var collection = ee.ImageCollection([L8SR_1,L8SR_2])
var L8_SRMosaic = collection.median()
//============================================================================\\
/*
4. 可视化参数设定 (TOA & SR)
*/
//=============================================================================\\
//** Prefered band combination
var truecolor_SR = ['SR_RED','SR_GREEN','SR_BLUE']
var falsecolor_SR = ['SR_NIR','SR_SWIR1','SR_SWIR2']
var l8SR_visualization = {
bands: falsecolor_SR,
min: 0.05,
max: 0.39,
};
//============================================================================\\
/*
5. 添加图层到地图上
*/
//=============================================================================\\
Map.addLayer (L8_SRMosaic.clip(roi),l8SR_visualization,'L8 SR Mosaic'+start+'/'+end)
处理完后有很明显的条带信息
我们这里面并不是通过最大、最小或者中位数的不同合成来改变影像的色调,我们需要色彩平衡函数来完成,这里有两个博客链接提供给大家:
(1233条消息) GEE(Google Earth Engine)消除影像色差——直方图匹配算法_此星光明的博客-CSDN博客
(1233条消息) Google Earth Engine(GEE)——python影像色差匹配(直方图匹配算法)万字长文_此星光明的博客-CSDN博客_python 色差计算