Statistiken zu Bildumgebungen

Anstatt eine Region anzugeben, in der eine Reduzierung durchgeführt werden soll, können Sie auch einen Umkreis angeben, in dem ein Reducer angewendet werden soll. Mit image.reduceNeighborhood() können Sie die Bildumgebung verkleinern. In diesem Fall erfolgt die Reduktion in einem gleitenden Fenster über dem Eingabebild. Größe und Form des Fensters werden durch ein ee.Kernel angegeben. Die Ausgabe von reduceNeighborhood() ist ein anderes Bild. Jeder Pixelwert entspricht der Ausgabe der Reduzierung in einem Umkreis um dieses Pixel im Eingabebild. Abbildung 1 veranschaulicht diese Art der Reduzierung.

reduceNeighborhood-Diagramm
Abbildung 1. Abbildung von reduceNeighborhood(), bei der der Reducer in einem Kernel angewendet wird.

Sie können beispielsweise Bilder des National Agriculture Imagery Program (NAIP) verwenden, um die Landschaftsunterschiede zu quantifizieren, die durch die Abholzung in den kalifornischen Redwood-Wäldern entstanden sind. Verwenden Sie insbesondere die Standardabweichung (SD) in einer Nachbarschaft, um den Unterschied in der Textur zwischen dem gerodeten Gebiet (SW des Bildes in Abbildung 2) und dem geschützten Gebiet (NO des Bildes in Abbildung 2) darzustellen. Wenn Sie beispielsweise die Textur eines NAIP-Bilds mit dem normierten differenzierten Vegetationsindex (NDVI) erhalten möchten, berechnen Sie mit reduceNeighborhood() die Standardabweichung in einem durch einen Kernel definierten Umkreis:

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

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

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

Alle Pixel mit einem nicht nullwertigen Kernelwert werden in die Berechnung einbezogen. Die Kernelgewichte werden standardmäßig verwendet. Sie können dieses Verhalten jedoch mit dem Argument inputWeight ändern. In Abbildung 2 werden das Eingabebild und die reduceNeighborhood()-Ausgabe verglichen.

Eingabe für „reduceNeighborhood“
Abbildung 2a. NAIP-Bilder der Küste von Nordkalifornien.
Ausgabe von „reduceNeighborhood“
Abbildung 2b. reduceNeighborhood()-Ausgabe mit einem Standardabweichungsminderer.