Số liệu thống kê về khu vực lân cận của hình ảnh

Thay vì chỉ định một vùng để thực hiện việc giảm, bạn cũng có thể chỉ định một vùng lân cận để áp dụng một trình giảm. Để giảm vùng ảnh lân cận, hãy sử dụng image.reduceNeighborhood(). Trong trường hợp này, việc giảm kích thước sẽ diễn ra trong một cửa sổ trượt trên hình ảnh đầu vào, với kích thước và hình dạng cửa sổ do ee.Kernel chỉ định. Kết quả của reduceNeighborhood() sẽ là một hình ảnh khác, trong đó mỗi giá trị pixel đại diện cho kết quả của việc giảm trong một vùng lân cận xung quanh pixel đó trong hình ảnh đầu vào. Hình 1 minh hoạ loại giảm thiểu này.

biểu đồ reduceNeighborhood
Hình 1. Hình minh hoạ reduceNeighborhood(), trong đó bộ giảm được áp dụng trong một hạt nhân.

Ví dụ: hãy cân nhắc sử dụng hình ảnh của Chương trình hình ảnh nông nghiệp quốc gia (NAIP) để định lượng sự khác biệt về cảnh quan do hoạt động khai thác gỗ trong rừng cây tuyết tùng ở California. Cụ thể, hãy sử dụng độ lệch chuẩn (SD) trong một khu vực lân cận để thể hiện sự khác biệt về kết cấu giữa khu vực được ghi lại (phía Tây Nam của hình ảnh trong Hình 2) và khu vực được bảo vệ (phía Đông Bắc của hình ảnh trong Hình 2). Ví dụ: để lấy hoạ tiết của hình ảnh Chỉ số thực vật (NDVI) chênh lệch chuẩn hoá NAIP, hãy sử dụng reduceNeighborhood() để tính toán SD trong một vùng lân cận do hạt nhân xác định:

Trình soạn thảo mã (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');

Thiết lập Python

Hãy xem trang Môi trường Python để biết thông tin về API Python và cách sử dụng geemap để phát triển tương tác.

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

Mọi pixel có giá trị hạt nhân khác 0 đều được đưa vào quá trình tính toán. Theo mặc định, các trọng số hạt nhân được sử dụng, mặc dù bạn có thể thay đổi hành vi đó bằng đối số inputWeight. Hình ảnh đầu vào và đầu ra reduceNeighborhood() được so sánh trong Hình 2.

đầu vào reduceNeighborhood
Hình 2a. Hình ảnh NAIP của bờ biển Bắc California.
đầu ra reduceNeighborhood
Hình 2b. Đầu ra reduceNeighborhood() sử dụng một trình giảm độ lệch chuẩn.