我希望使用灰度共生矩阵(GLCM)在Google Earth Engine (GEE)中提取一组RGB卫星图像的纹理摘要统计信息。GEE有一个内置的image.glcm()函数来做这件事,但是这个页面(https://developers.google.com/earth-engine/image_texture)中的示例代码表明它需要一个单独的波段作为输入:
// 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回答将是理想的,但任何建议都将不胜感激!
发布于 2019-08-24 19:33:09
好吧,我想出了一个方法。本文(https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3254613/)评估了不同RGB到灰度转换的性能,发现亮度在纹理识别方面表现得特别好,在目标检测方面表现一般,因此是一个很好的选择。亮度以0.3R + 0.59G + 0.11B计算。
我在这里放了一些Python代码来创建一个亮度层:
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示例:
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');https://stackoverflow.com/questions/57633820
复制相似问题