Statistik Lingkungan Gambar

Daripada menentukan wilayah tempat pengurangan akan dilakukan, Anda juga dapat menentukan lingkungan tempat pengurangan akan diterapkan. Untuk mengurangi lingkungan gambar, gunakan image.reduceNeighborhood(). Dalam hal ini, pengurangan akan terjadi dalam jendela geser pada gambar input, dengan ukuran dan bentuk jendela yang ditentukan oleh ee.Kernel. Output reduceNeighborhood() akan berupa gambar lain, dengan setiap nilai piksel mewakili output pengurangan di lingkungan di sekitar piksel tersebut dalam gambar input. Gambar 1 mengilustrasikan jenis pengurangan ini.

Diagram reduceNeighborhood
Gambar 1. Ilustrasi reduceNeighborhood(), tempat pengurangan diterapkan dalam kernel.

Misalnya, pertimbangkan untuk menggunakan citra National Agriculture Imagery Program (NAIP) untuk mengukur perbedaan lanskap yang dihasilkan dari penebangan hutan redwood California. Secara khusus, gunakan deviasi standar (SD) di lingkungan untuk merepresentasikan perbedaan tekstur antara area yang dicatat (SW gambar pada Gambar 2) dan area yang dilindungi (NE gambar pada Gambar 2). Misalnya, untuk mendapatkan tekstur gambar NAIP Normalized Difference Vegetation Index (NDVI), gunakan reduceNeighborhood() untuk menghitung SD di lingkungan yang ditentukan oleh kernel:

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

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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

Setiap piksel dengan nilai kernel bukan nol disertakan dalam komputasi. Bobot kernel digunakan secara default, meskipun Anda dapat mengubah perilaku tersebut dengan argumen inputWeight. Gambar input dan output reduceNeighborhood() dibandingkan dalam Gambar 2.

Input reduceNeighborhood
Gambar 2a. Gambar NAIP dari pantai California Utara.
Output reduceNeighborhood
Gambar 2b. Output reduceNeighborhood() menggunakan pengurangan simpangan baku.