首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google Earth Engine中使用Python API将RGB图像转换为单波段灰度图像

在Google Earth Engine中使用Python API将RGB图像转换为单波段灰度图像
EN

Stack Overflow用户
提问于 2019-08-24 06:55:33
回答 1查看 872关注 0票数 0

我希望使用灰度共生矩阵(GLCM)在Google Earth Engine (GEE)中提取一组RGB卫星图像的纹理摘要统计信息。GEE有一个内置的image.glcm()函数来做这件事,但是这个页面(https://developers.google.com/earth-engine/image_texture)中的示例代码表明它需要一个单独的波段作为输入:

代码语言:javascript
复制
// Load a high-resolution NAIP image.
var image = ee.Image('USDA/NAIP/DOQQ/m_3712213_sw_10_1_20140613');

// Get the NIR band.
var nir = image.select('N');

// Compute the gray-level co-occurrence matrix (GLCM), get contrast.
var glcm = nir.glcmTexture({size: 4});
var contrast = glcm.select('N_contrast');
Map.addLayer(contrast,
             {min: 0, max: 1500, palette: ['0000CC', 'CC0000']},
             'contrast');

有没有办法在GEE中将RGB图像转换为单波段灰度图像?

我使用的是Python API,所以用Python回答将是理想的,但任何建议都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2019-08-24 19:33:09

好吧,我想出了一个方法。本文(https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3254613/)评估了不同RGB到灰度转换的性能,发现亮度在纹理识别方面表现得特别好,在目标检测方面表现一般,因此是一个很好的选择。亮度以0.3R + 0.59G + 0.11B计算。

我在这里放了一些Python代码来创建一个亮度层:

代码语言:javascript
复制
image = ee.Image("COPERNICUS/S2/20160620T072622_20160620T075216_T36LYJ")

grayscale = image.expression(
      '(0.3 * R) + (0.59 * G) + (0.11 * B)', {
      'R': image.select(['B4']),
      'G': image.select(['B3']),
      'B': image.select(['B2'])
})

下面是一个在GEE代码编辑器中也可以使用的Java示例:

代码语言:javascript
复制
var image = ee.Image("COPERNICUS/S2/20160620T072622_20160620T075216_T36LYJ");

var grayscale = image.expression(
      '(0.3 * R) + (0.59 * G) + (0.11 * B)', {
      'R': image.select('B4'),
      'G': image.select('B3'),
      'B': image.select('B2')
});

Map.setCenter(35.524263, -14.955732, 9);
Map.addLayer(grayscale, {min:700, max:1300}, 'Grayscale');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57633820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档