Статистика окрестностей изображений

Вместо указания региона, в котором необходимо выполнить сокращение, также можно указать окрестность, в которой следует применить редуктор. Чтобы уменьшить окрестности изображения, используйте image.reduceNeighborhood() . В этом случае уменьшение будет происходить в скользящем окне над входным изображением, размер и форма которого определяются ee.Kernel . Результатом работы reduceNeighborhood() будет другое изображение, где каждое значение пикселя представляет результат уменьшения в окрестности этого пикселя во входном изображении. Рисунок 1 иллюстрирует этот тип сокращения.

уменьшить диаграмму соседства
Рис. 1. Иллюстрация функции reduceNeighborhood() , где редуктор применяется в ядре.

Например, рассмотрите возможность использования изображений Национальной программы изображений сельского хозяйства (NAIP) для количественной оценки ландшафтных различий, возникающих в результате вырубки калифорнийских лесов красного дерева. В частности, используйте стандартное отклонение (SD) в окрестности, чтобы представить разницу в текстуре между зарегистрированной областью (SW изображения на рисунке 2) и защищенной областью (NE изображения на рисунке 2). Например, чтобы получить текстуру изображения индекса нормализованной разницы растительности (NDVI) NAIP, используйте reduceNeighborhood() для вычисления SD в окрестности, определенной ядром:

Редактор кода (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» для получения информации об API Python и использовании geemap для интерактивной разработки.

import ee
import geemap.core as geemap

Колаб (Питон)

# 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 . Входное изображение и выходные данные reduceNeighborhood() сравниваются на рисунке 2.

уменьшить ввод соседства
Рисунок 2а. Снимки NAIP побережья Северной Калифорнии.
уменьшить выход соседства
Рисунок 2б. reduceNeighborhood() выводит результат с использованием преобразователя стандартного отклонения.