Struktur

In Earth Engine gibt es mehrere spezielle Methoden zur Schätzung der räumlichen Textur. Wenn das Bild diskrete Werte (keine Gleitkommawerte) hat, können Sie mit image.entropy() die Entropie in einem Umkreis berechnen:

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

Hinweis: Das NIR-Band wird vor dem Aufruf von entropy() auf 8 Bit skaliert, da für die Entropieberechnung diskrete Werte verwendet werden. Die nicht nullwertigen Elemente im Kernel geben die Nachbarschaft an.

Eine weitere Möglichkeit zur Messung der Textur ist die Graustufen-Ko-Okkurrenzmatrix (GLCM). Berechnen Sie mit dem Bild und dem Kernel aus dem vorherigen Beispiel den GLCM-basierten Kontrast so:

Code-Editor (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() gibt viele Texturmesswerte aus. Eine vollständige Referenz zu den Ergebnissen finden Sie unter Haralick et al. (1973) und Conners et al. (1984).

Lokale Maße der räumlichen Assoziation wie Geary's C (Anselin 1995) können in Earth Engine mit image.neighborhoodToBands() berechnet werden. Anhand des Bildes aus dem vorherigen Beispiel:

Code-Editor (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");

Ein Beispiel für die Verwendung der Standardabweichung der Nachbarschaft zur Berechnung der Bildtextur finden Sie auf der Seite Statistiken zu Bildumgebungen.