前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Earth Engine(GEE)——当我们遇到色差问题应该如何处理?

Google Earth Engine(GEE)——当我们遇到色差问题应该如何处理?

作者头像
此星光明
发布2024-02-02 08:05:04
1670
发布2024-02-02 08:05:04
举报

这里的这个代码是有问题的,本来代码的本意是想去除条带,可以他采取的做法却是利用mean或者median等方式来进行,这只是影像聚合的一种方式,并不是通过改变影像的DN值来改变影像的的色调,所以我们可以先看下面的代码,然后回给大家在文章末尾提供两个直方图匹配的修复方案!

代码:

代码语言:javascript
复制
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)

处理完后有很明显的条带信息

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档