מרקם

ב-Earth Engine יש כמה שיטות מיוחדות להערכת המרקם המרחבי. כשהתמונה היא בעלת ערכים בדידים (לא נקודה צפה), אפשר להשתמש ב-image.entropy() כדי לחשב את האנטרופיה בסביבה:

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');

שימו לב שפס ה-NIR מותאם ל-8 ביט לפני הקריאה ל-entropy() כי חישוב האנטרופיה מחייב קלט עם ערכים בדידים. הרכיבים שאינם אפס בליבה מציינים את השכונה.

דרך נוספת למדוד את המרקם היא באמצעות מטריצת חפיפה ברמת אפור (GLCM). בעזרת התמונה והליבה מהדוגמה הקודמת, מחשבים את הניגודיות שמבוססת על GLCM באופן הבא:

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() מפיק הרבה מדדים של מרקם. למידע מלא על הפלט, ראו Haralick et al.‏ (1973) ו-Conners et al.‏ (1984).

אפשר לחשב ב-Earth Engine מדדים מקומיים של קשר מרחבי, כמו C של Geary‏ (Anselin 1995), באמצעות הפונקציה image.neighborhoodToBands(). באמצעות התמונה מהדוגמה הקודמת:

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");

דוגמה לשימוש בסטיית התקן של שכונה כדי לחשב את המרקם של תמונה מופיעה בדף Statistics of Image Neighborhoods.