Zamiast określać region, w którym ma być wykonywane zmniejszanie, możesz też wskazać sąsiedztwo, w którym ma być stosowany reduktor. Aby zmniejszyć sąsiedztwo obrazu, użyj opcji image.reduceNeighborhood()
. W takim przypadku redukcja zostanie przeprowadzona w ślizgającym oknie na obrazie wejściowym, a jej rozmiar i kształt zostaną określone przez ee.Kernel
. Wyjście funkcji reduceNeighborhood()
to inny obraz, w którym każda wartość piksela reprezentuje wynik redukcji w sąsiedztwie tego piksela na obrazie wejściowym. Rysunek 1 przedstawia tego typu redukcję.

reduceNeighborhood()
, w której reduktor jest stosowany w jądrze.Możesz na przykład użyć zdjęć z National Agriculture Imagery Program (NAIP), aby określić różnice w krajobrazie wynikające z pozyskiwania drewna w kalifornijskich lasach sekwoi.
W szczególności użyj odchylenia standardowego (SD) w sąsiedztwie, aby przedstawić różnicę w teksturze między zarejestrowanym obszarem (SW obrazu na rysunku 2) a obszarem chronionym (NE obrazu na rysunku 2). Aby na przykład uzyskać teksturę obrazu znormalizowanego różnicowego wskaźnika wegetacji (NDVI), użyj funkcji reduceNeighborhood()
do obliczenia SD w sąsiedztwie zdefiniowanym przez kernel:
Edytor kodu (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
W obliczeniach uwzględniany jest każdy piksel o wartości jądra innej niż 0. Domyślnie używane są wagi jądra, ale możesz zmienić to zachowanie za pomocą argumentu inputWeight
. Obraz wejściowy i reduceNeighborhood()
wyjściowy są porównane na rysunku 2.


reduceNeighborhood()
za pomocą standardowego reduktora odchylenia standardowego.