Konvolüsyonlar

Görüntülerde doğrusal örtüşme yapmak için image.convolve() simgesini kullanın. Dağıtılacak tek bağımsız değişken, bir şekil ve çekirdekteki ağırlıklarla belirtilen bir ee.Kernel bağımsız değişkenidir. convolve() tarafından oluşturulan görüntünün her pikseli, çekirdek değerleri ile çekirdek tarafından kapsanan giriş görüntü pikselleri arasındaki doğrusal bir kombinasyondur. Çekirdekler her banda ayrı ayrı uygulanır. Örneğin, yüksek frekanslı bilgileri kaldırmak için düşük geçiren (yumuşatıcı) bir çekirdek kullanmak isteyebilirsiniz. Aşağıda, Landsat 8 görüntüsüne uygulanan 15x15 düşük geçirgenlik çekirdeği gösterilmektedir:

Kod Düzenleyici (JavaScript)

// Load and display an image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');
Map.setCenter(-121.9785, 37.8694, 11);
Map.addLayer(image, {bands: ['B5', 'B4', 'B3'], max: 0.5}, 'input image');

// Define a boxcar or low-pass kernel.
var boxcar = ee.Kernel.square({
  radius: 7, units: 'pixels', normalize: true
});

// Smooth the image by convolving with the boxcar kernel.
var smooth = image.convolve(boxcar);
Map.addLayer(smooth, {bands: ['B5', 'B4', 'B3'], max: 0.5}, 'smoothed');

Düşük geçiren filtreyle yapılan convolve işleminin çıkışı Şekil 1'e benzer şekilde görünmelidir. Çekirdeğin boyutunu ve katsayılarını çekirdeğe ait bağımsız değişkenlerin belirlediğini unutmayın. Daha açık belirtmek gerekirse, units parametresi piksel olarak ayarlandığında radius parametresi, çekirdeğin merkezden itibaren kapsayacağı piksel sayısını belirtir. normalize doğru değerine ayarlanırsa çekirdek katsayıları toplamı bir olur. magnitude parametresi ayarlanırsa çekirdek katsayıları büyüklükle çarpılır (normalize da doğruysa katsayıların toplamı magnitude olur). Çekirdek katsayılarından herhangi birinde negatif değer varsa normalize değerini doğru olarak ayarlamak, katsayıların toplamının sıfır olmasını sağlar.

boxcar_sf
Şekil 1. Yumuşatma çekirdeğiyle örtüşen Landsat 8 görüntüsü. San Francisco Körfez Bölgesi, Kaliforniya, ABD.

İstediğiniz görüntü işleme efektini elde etmek için diğer çekirdekleri kullanın. Bu örnekte, izotropik kenar algılama için Laplacian çekirdeği kullanılmaktadır:

Kod Düzenleyici (JavaScript)

// Define a Laplacian, or edge-detection kernel.
var laplacian = ee.Kernel.laplacian8({ normalize: false });

// Apply the edge-detection kernel.
var edgy = image.convolve(laplacian);
Map.addLayer(edgy,
             {bands: ['B5', 'B4', 'B3'], max: 0.5, format: 'png'},
             'edges');

Görselleştirme parametrelerindeki biçim belirteci dikkatinizi çekecektir. Earth Engine, verimlilik için görüntü karolarını Kod Düzenleyici'ye JPEG biçiminde gönderir. Ancak kenar karoları, resim sınırının dışındaki piksellerin şeffaflığını işlemek için PNG biçiminde gönderilir. Görsel kesinti oluştuğunda, biçimi PNG olarak ayarlamak tutarlı bir görüntüleme sağlar. Laplas kenar algılama çekirdeğiyle gerçekleştirilen convolve işleminin sonucu Şekil 2'ye benzer şekilde görünür.

laplacian_sf
Şekil 2. Laplacian kenar algılama çekirdeğiyle örtüşen Landsat 8 görüntüsü. San Francisco Körfez Bölgesi, Kaliforniya, ABD.

Ayrıca, kernel.rotate() ile yönü değiştirilebilen anizotropik kenar algılama çekirdekleri (ör. Sobel, Prewitt, Roberts) de vardır. Diğer düşük geçirimli çekirdekler arasında Gauss çekirdeği ve eşit ağırlıklara sahip çeşitli şekillerde çekirdekler bulunur. İsteğe bağlı olarak tanımlanmış ağırlıklara ve şekle sahip çekirdekler oluşturmak için ee.Kernel.fixed() değerini kullanın. Örneğin, bu kod ortasında sıfır bulunan 9x9 boyutunda bir 1'den oluşan çekirdek oluşturur:

Kod Düzenleyici (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.
var kernel = ee.Kernel.fixed(9, 9, rows, -4, -4, false);
print(kernel);