Em vez de especificar uma região para realizar uma redução, também é possível especificar um bairro para aplicar um redutor. Para reduzir as vizinhanças de imagens, use
image.reduceNeighborhood()
. Nesse caso, a redução vai
ocorrer em uma janela deslizante sobre a imagem de entrada, com o tamanho e a forma da janela especificados
por um ee.Kernel
. A saída de reduceNeighborhood()
será
outra imagem, com cada valor de pixel representando a saída da redução em uma
vizinhança ao redor desse pixel na imagem de entrada. A Figura 1 ilustra esse tipo de
redução.

reduceNeighborhood()
, em que o redutor
é aplicado em um kernel.Por exemplo, considere usar imagens do Programa de Imagens de Agricultura Nacional (NAIP, na sigla em inglês) para quantificar as diferenças de paisagem resultantes da extração de madeira nas florestas de sequoia da Califórnia.
Especificamente, use a variação padrão (SD, na sigla em inglês) em uma vizinhança para representar a diferença
na textura entre a área registrada (SW da imagem na Figura 2) e a área protegida
(NE da imagem na Figura 2). Por exemplo, para conseguir a textura de uma imagem de índice de vegetação por diferença normalizada (NDVI, na sigla em inglês) do NAIP, use reduceNeighborhood()
para calcular o desvio padrão em uma vizinhança definida por um kernel:
Editor de código (JavaScript)
// 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
Colab (Python)
# 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
Qualquer pixel com um valor de kernel diferente de zero é incluído na computação. Os pesos do kernel
são usados por padrão, mas é possível mudar esse comportamento com o
argumento inputWeight
. A imagem de entrada e a saída de reduceNeighborhood()
são comparadas na Figura 2.


reduceNeighborhood()
usando um redutor de desvio
padrão.