נתונים סטטיסטיים של שכונות תמונות

במקום לציין אזור שבו מבצעים הפחתה, אפשר גם לציין שכונה שבה מחילים הפחתה. כדי לצמצם את שכונות התמונות, משתמשים ב-image.reduceNeighborhood(). במקרה כזה, ההקטנה תתבצע בחלון הזזה מעל לתמונה הקלט, כאשר גודל החלון והצורה שלו יצוינו על ידי ee.Kernel. הפלט של reduceNeighborhood() יהיה תמונה אחרת, שבה כל ערך פיקסל מייצג את הפלט של הפחתת הרעש בסביבה של הפיקסל הזה בתמונה הקלט. איור 1 ממחיש את סוג ההפחתה הזה.

תרשים reduceNeighborhood
איור 1. איור של reduceNeighborhood(), שבו המצמצם מיושם בליבה.

לדוגמה, אפשר להשתמש בתמונות של National Agriculture Imagery Program‏ (NAIP) כדי למדוד את ההבדלים בנוף שנובעים מהכריתה של יערות הסקויה בקליפורניה. באופן ספציפי, משתמשים בסטיית התקן (SD) בשכונה כדי לייצג את ההבדל במרקם בין האזור הרשום ביומן (בדרום-מערב התמונה באיור 2) לבין האזור המוגן (במזרח-צפון התמונה באיור 2). לדוגמה, כדי לקבל את המרקם של תמונה של אינדקס הפרש מנורמל של צמחייה (NDVI) ב-NAIP, משתמשים ב-reduceNeighborhood() כדי לחשב את SD בסביבה שמוגדרת על ידי ליבה:

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

בדף סביבת Python מפורט מידע על Python API ועל השימוש ב-geemap לפיתוח אינטראקטיבי.

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

כל פיקסל עם ערך ליבה שאינו אפס נכלל בחישוב. כברירת מחדל, המערכת משתמשת במשקלים של הליבה, אבל אפשר לשנות את ההתנהגות הזו באמצעות הארגומנט inputWeight. באיור 2 מוצגת השוואה בין תמונה הקלט לבין הפלט של reduceNeighborhood().

קלט של reduceNeighborhood
איור 2א. תמונות NAIP של החוף הצפוני של קליפורניה.
הפלט של reduceNeighborhood
איור 2ב. פלט של reduceNeighborhood() באמצעות פונקציית הפחתת סטיית תקן רגילה.