Statistiche dei quartieri di immagini

Anziché specificare una regione su cui eseguire una riduzione, è anche possibile specificare un quartiere in cui applicare un riduttore. Per ridurre i quartieri di immagini, utilizza image.reduceNeighborhood(). In questo caso, la riduzione avviene in una finestra scorrevole sull'immagine di input, con le dimensioni e la forma della finestra specificate da un ee.Kernel. L'output di reduceNeighborhood() sarà un'altra immagine, con ogni valore del pixel che rappresenta l'output della riduzione in un insieme di pixel attorno a quel pixel nell'immagine di input. La Figura 1 illustra questo tipo di riduzione.

Diagramma di reduceNeighborhood
Figura 1. Illustrazione di reduceNeighborhood(), dove il riduttore viene applicato in un kernel.

Ad esempio, valuta la possibilità di utilizzare le immagini del National Agriculture Imagery Program (NAIP) per quantificare le differenze del paesaggio derivanti dall'abbattimento nelle foreste di sequoie della California. Nello specifico, utilizza la deviazione standard (DS) in un quartiere per rappresentare la differenza nella trama tra l'area registrata (a sud-ovest dell'immagine nella Figura 2) e l'area protetta (a nord-est dell'immagine nella Figura 2). Ad esempio, per ottenere la texture di un'immagine NDVI (Normalized Difference Vegetation Index) NAIP, utilizza reduceNeighborhood() per calcolare la deviazione standard in un'area definita da un kernel:

Editor di codice (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');

Configurazione di Python

Per informazioni sull'API Python e sull'utilizzo di geemap per lo sviluppo interattivo, consulta la pagina Ambiente Python.

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

Nel calcolo viene incluso qualsiasi pixel con un valore del kernel diverso da zero. I coefficienti del kernel vengono utilizzati per impostazione predefinita, anche se puoi modificare questo comportamento con l'argomento inputWeight. L'immagine di input e l'output reduceNeighborhood() sono confrontati nella Figura 2.

input reduceNeighborhood
Figura 2a. Immagini NAIP della costa della California settentrionale.
Output di reduceNeighborhood
Figura 2b. reduceNeighborhood() utilizzando un riduttore della deviazione standard.