Hoạ tiết

Earth Engine có một số phương thức đặc biệt để ước tính hoạ tiết không gian. Khi hình ảnh có giá trị rời rạc (không phải dấu phẩy động), bạn có thể sử dụng image.entropy() để tính toán entropy trong một vùng lân cận:

Trình soạn thảo mã (JavaScript)

// Load a high-resolution NAIP image.
var image = ee.Image('USDA/NAIP/DOQQ/m_3712213_sw_10_1_20140613');

// Zoom to San Francisco, display.
Map.setCenter(-122.466123, 37.769833, 17);
Map.addLayer(image, {max: 255}, 'image');

// Get the NIR band.
var nir = image.select('N');

// Define a neighborhood with a kernel.
var square = ee.Kernel.square({radius: 4});

// Compute entropy and display.
var entropy = nir.entropy(square);
Map.addLayer(entropy,
             {min: 1, max: 5, palette: ['0000CC', 'CC0000']},
             'entropy');

Xin lưu ý rằng băng NIR được điều chỉnh theo tỷ lệ 8 bit trước khi gọi entropy() vì quá trình tính toán entropy lấy đầu vào có giá trị riêng biệt. Các phần tử khác 0 trong hạt nhân chỉ định vùng lân cận.

Một cách khác để đo lường hoạ tiết là sử dụng ma trận xuất hiện đồng thời cấp độ màu xám (GLCM). Sử dụng hình ảnh và hạt nhân từ ví dụ trước, hãy tính độ tương phản dựa trên GLCM như sau:

Trình soạn thảo mã (JavaScript)

// Compute the gray-level co-occurrence matrix (GLCM), get contrast.
var glcm = nir.glcmTexture({size: 4});
var contrast = glcm.select('N_contrast');
Map.addLayer(contrast,
             {min: 0, max: 1500, palette: ['0000CC', 'CC0000']},
             'contrast');

image.glcm() sẽ xuất ra nhiều chỉ số về hoạ tiết. Để biết tài liệu tham khảo đầy đủ về đầu ra, hãy xem Haralick et al. (1973)Conners et al. (1984).

Bạn có thể tính toán các chỉ số liên kết không gian cục bộ như C của Geary (Anselin 1995) trong Earth Engine bằng cách sử dụng image.neighborhoodToBands(). Sử dụng hình ảnh trong ví dụ trước:

Trình soạn thảo mã (JavaScript)

// Create a list of weights for a 9x9 kernel.
var row = [1, 1, 1, 1, 1, 1, 1, 1, 1];
// The center of the kernel is zero.
var centerRow = [1, 1, 1, 1, 0, 1, 1, 1, 1];
// Assemble a list of lists: the 9x9 kernel weights as a 2-D matrix.
var rows = [row, row, row, row, centerRow, row, row, row, row];
// Create the kernel from the weights.
// Non-zero weights represent the spatial neighborhood.
var kernel = ee.Kernel.fixed(9, 9, rows, -4, -4, false);

// Convert the neighborhood into multiple bands.
var neighs = nir.neighborhoodToBands(kernel);

// Compute local Geary's C, a measure of spatial association.
var gearys = nir.subtract(neighs).pow(2).reduce(ee.Reducer.sum())
             .divide(Math.pow(9, 2));
Map.addLayer(gearys,
             {min: 20, max: 2500, palette: ['0000CC', 'CC0000']},
             "Geary's C");

Để biết ví dụ về cách sử dụng độ lệch chuẩn của vùng lân cận để tính toán hoạ tiết hình ảnh, hãy xem trang Thống kê về vùng lân cận của hình ảnh.