Kenar algılama, çok çeşitli resim işleme görevlerinde kullanılabilir. Dönüşümler bölümünde açıklanan kenar algılama çekirdeklerine ek olarak, Earth Engine'da çeşitli özel kenar algılama algoritmaları da vardır. Canny kenar algılama algoritması (Canny 1986) , çapraz, dikey ve yatay kenarları belirlemek için dört ayrı filtre kullanır. Hesaplama, yatay ve dikey yönler için ilk türevi değerini çıkarır ve gradyan büyüklüğünü hesaplar. Daha küçük gradyanlar atlanır. Yüksek frekanslı gürültüyü gidermek için isteğe bağlı olarak resmi bir Gauss çekirdeğiyle ön filtreleyin. Örneğin:
Kod Düzenleyici (JavaScript)
// Load a Landsat 8 image, select the panchromatic band. var image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318').select('B8'); // Perform Canny edge detection and display the result. var canny = ee.Algorithms.CannyEdgeDetector({ image: image, threshold: 10, sigma: 1 }); Map.setCenter(-122.054, 37.7295, 10); Map.addLayer(canny, {}, 'canny');
threshold
parametresinin minimum gradyan büyüklüğünü belirlediğini ve sigma
parametresinin, yüksek frekanslı gürültüyü gidermek için kullanılan Gauss ön filtresinin standart sapması (SD) olduğunu unutmayın. Earth Engine, kenar algılayıcıdan çizgi ayıklama için Hough dönüşümünü (Duda ve Hart 1972) uygular. Önceki örnekten devam ederek, Canny algılayıcıdan aşağıdakileri kullanarak satırlar ayıklayın:
Kod Düzenleyici (JavaScript)
// Perform Hough transform of the Canny result and display. var hough = ee.Algorithms.HoughTransform(canny, 256, 600, 100); Map.addLayer(hough, {}, 'hough');
Earth Engine'daki diğer bir özel algoritma zeroCrossing()
'tür. Sıfır kesişimi, sağ, alt veya çapraz sağ alt pikselin ters işarete sahip olduğu herhangi bir piksel olarak tanımlanır. Bu piksellerden herhangi biri ters işarete sahipse mevcut piksel 1 (sıfır kesme) olarak ayarlanır. Aksi takdirde sıfır olarak ayarlanır. Kenarları algılamak için sıfır kesişimi algoritması, görüntünün ikinci türevi tahminine uygulanabilir.
Aşağıda, kenar algılama için zeroCrossing()
kullanımı gösterilmektedir:
Kod Düzenleyici (JavaScript)
// Load a Landsat 8 image, select the panchromatic band. var image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318').select('B8'); Map.addLayer(image, {max: 12000}); // Define a "fat" Gaussian kernel. var fat = ee.Kernel.gaussian({ radius: 3, sigma: 3, units: 'pixels', normalize: true, magnitude: -1 }); // Define a "skinny" Gaussian kernel. var skinny = ee.Kernel.gaussian({ radius: 3, sigma: 1, units: 'pixels', normalize: true, }); // Compute a difference-of-Gaussians (DOG) kernel. var dog = fat.add(skinny); // Compute the zero crossings of the second derivative, display. var zeroXings = image.convolve(dog).zeroCrossing(); Map.setCenter(-122.054, 37.7295, 10); Map.addLayer(zeroXings.selfMask(), {palette: 'FF0000'}, 'zero crossings');
San Francisco, CA havaalanı yakınındaki bir alan için sıfır geçiş sayısı çıkışı Şekil 1'e benzer şekilde görünmelidir.
