En lugar de especificar una región sobre la que realizar una reducción, también es posible especificar un vecindario en el que aplicar un reductor. Para reducir los vecindarios de imágenes, usa image.reduceNeighborhood()
. En este caso, la reducción se realizará en una ventana deslizante sobre la imagen de entrada, con el tamaño y la forma de la ventana especificados por un ee.Kernel
. El resultado de reduceNeighborhood()
será otra imagen, en la que cada valor de píxel representará el resultado de la reducción en un vecindario alrededor de ese píxel en la imagen de entrada. En la Figura 1, se ilustra este tipo de reducción.

reduceNeighborhood()
, en la que se aplica el reductor en un kernel.Por ejemplo, considera usar imágenes del Programa Nacional de Imágenes Agrícolas (NAIP) para cuantificar las diferencias en el paisaje resultantes de la tala en los bosques de secuoyas de California.
Específicamente, usa la desviación estándar (DE) en un vecindario para representar la diferencia de textura entre el área registrada (SW de la imagen en la Figura 2) y el área protegida (NE de la imagen en la Figura 2). Por ejemplo, para obtener la textura de una imagen del índice de vegetación con diferencia normalizada (NDVI) de NAIP, usa reduceNeighborhood()
para calcular la desviación estándar en un vecindario definido por un kernel:
// Define a region in the redwood forest. var redwoods = ee.Geometry.Rectangle(-124.0665, 41.0739, -123.934, 41.2029); // Load input NAIP imagery and build a mosaic. var naipCollection = ee.ImageCollection('USDA/NAIP/DOQQ') .filterBounds(redwoods) .filterDate('2012-01-01', '2012-12-31'); var naip = naipCollection.mosaic(); // Compute NDVI from the NAIP imagery. var naipNDVI = naip.normalizedDifference(['N', 'R']); // Compute standard deviation (SD) as texture of the NDVI. var texture = naipNDVI.reduceNeighborhood({ reducer: ee.Reducer.stdDev(), kernel: ee.Kernel.circle(7), }); // Display the results. Map.centerObject(redwoods, 12); Map.addLayer(naip, {}, 'NAIP input imagery'); Map.addLayer(naipNDVI, {min: -1, max: 1, palette: ['FF0000', '00FF00']}, 'NDVI'); Map.addLayer(texture, {min: 0, max: 0.3}, 'SD of NDVI');
import ee import geemap.core as geemap
# Define a region in the redwood forest. redwoods = ee.Geometry.Rectangle(-124.0665, 41.0739, -123.934, 41.2029) # Load input NAIP imagery and build a mosaic. naip_collection = ( ee.ImageCollection('USDA/NAIP/DOQQ') .filterBounds(redwoods) .filterDate('2012-01-01', '2012-12-31') ) naip = naip_collection.mosaic() # Compute NDVI from the NAIP imagery. naip_ndvi = naip.normalizedDifference(['N', 'R']) # Compute standard deviation (SD) as texture of the NDVI. texture = naip_ndvi.reduceNeighborhood( reducer=ee.Reducer.stdDev(), kernel=ee.Kernel.circle(7) ) # Display the results. m = geemap.Map() m.center_object(redwoods, 12) m.add_layer(naip, {}, 'NAIP input imagery') m.add_layer( naip_ndvi, {'min': -1, 'max': 1, 'palette': ['FF0000', '00FF00']}, 'NDVI' ) m.add_layer(texture, {'min': 0, 'max': 0.3}, 'SD of NDVI') m
Cualquier píxel con un valor de kernel distinto de cero se incluye en el cálculo. Los pesos del kernel se usan de forma predeterminada, aunque puedes cambiar ese comportamiento con el argumento inputWeight
. En la Figura 2, se comparan la imagen de entrada y la salida de reduceNeighborhood()
.


reduceNeighborhood()
con un reductor de desviación estándar.