Earth Engine에는 공간 텍스처를 추정하기 위한 몇 가지 특별한 메서드가 있습니다. 이미지가 부동 소수점 값이 아닌 불연속 값인 경우 image.entropy()
를 사용하여 주변에서 엔트로피를 계산할 수 있습니다.
코드 편집기 (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');
엔트로피 계산은 불연속 값 입력을 사용하므로 entropy()
를 호출하기 전에 NIR 대역이 8비트로 크기 조정됩니다. 커널의 0이 아닌 요소는 이웃을 지정합니다.
텍스처를 측정하는 또 다른 방법은 회색조 공동발생 행렬 (GLCM)을 사용하는 것입니다. 이전 예의 이미지와 커널을 사용하여 다음과 같이 GLCM 기반 대비를 계산합니다.
코드 편집기 (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)를 참고하세요.
Geary의 C
(Anselin 1995)와 같은 지역적 공간 연관성 측정값은 Earth Engine에서 image.neighborhoodToBands()
를 사용하여 계산할 수 있습니다. 이전 예시의 이미지를 사용합니다.
코드 편집기 (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");
이웃 표준 편차를 사용하여 이미지 텍스처를 계산하는 예는 이미지 이웃 통계 페이지를 참고하세요.