Earth Engine چندین روش ویژه برای تخمین بافت فضایی دارد. هنگامی که تصویر دارای مقدار گسسته است (نه ممیز شناور)، می توانید از image.entropy()
برای محاسبه آنتروپی در یک همسایگی استفاده کنید:
ویرایشگر کد (جاوا اسکریپت)
// 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 قبل از فراخوانی entropy()
به 8 بیت کوچک شده است زیرا محاسبات آنتروپی ورودیهای با مقدار گسسته را میگیرد. عناصر غیر صفر در هسته، همسایگی را مشخص می کنند.
روش دیگر برای اندازهگیری بافت، استفاده از ماتریس هموضعیت سطح خاکستری (GLCM) است. با استفاده از تصویر و هسته مثال قبلی، کنتراست مبتنی بر GLCM را به صورت زیر محاسبه کنید:
ویرایشگر کد (جاوا اسکریپت)
// 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) و کانرز و همکاران. (1984) .
معیارهای محلی ارتباط فضایی مانند Geary's C (Anselin 1995) را می توان در Earth Engine با استفاده از image.neighborhoodToBands()
محاسبه کرد. با استفاده از تصویر مثال قبلی:
ویرایشگر کد (جاوا اسکریپت)
// 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");
برای مثالی از استفاده از انحراف استاندارد همسایگی برای محاسبه بافت تصویر، به صفحه آمار محلههای تصویر مراجعه کنید.