Earth Engine dispone di diversi metodi speciali per la stima della trama spaziale. Quando
l'immagine ha valori discreti (non a virgola mobile), puoi utilizzare image.entropy()
per calcolare l'entropia
in un intorno:
Editor di codice (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');
Tieni presente che la banda NIR viene scalata a 8 bit prima di chiamare entropy()
poiché il calcolo dell'entropia richiede input con valori discreti. Gli elementi diversi da zero nel
kernel specificano il vicinato.
Un altro modo per misurare la trama è utilizzare una matrice di co-occorrenza a livello di grigio (GLCM). Utilizzando l'immagine e il kernel dell'esempio precedente, calcola il contrasto basato su GLCM come segue:
Editor di codice (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()
genera molte misure della trama. Per una consultazione completa sulle uscite, consulta Haralick et al. (1973) e Conners et al. (1984).
Le misure locali di associazione spaziale, come il C di Geary
(Anselin 1995), possono essere calcolate in Earth Engine utilizzando
image.neighborhoodToBands()
. Utilizzando l'immagine dell'esempio precedente:
Editor di codice (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");
Per un esempio di utilizzo della deviazione standard del vicinato per calcolare la trama dell'immagine, consulta la pagina Statistiche dei vicini dell'immagine.