رصد الحواف

يمكن تطبيق ميزة "اكتشاف الحواف" على مجموعة كبيرة من مهام معالجة الصور. بالإضافة إلى نوى رصد الحواف الموضّحة في قسم عمليات التفاف، هناك العديد من الخوارزميات المتخصّصة لرصد الحواف في Earth Engine. تستخدم خوارزمية Canny لرصد الحواف (Canny 1986) أربعة فلاتر منفصلة لتحديد الحواف القطرية والرأسية والأفقية. يستخرج حساب قيمة المشتقة الأولى للاتجاهين الأفقي والعمودي ويحسب شدة التدرّج. يتمّ إخفاء التدرجات ذات الحجم الأصغر. ل القضاء على التشويش العالي التردد، يمكنك اختياريًا فلترة الصورة مسبقًا باستخدام نواة غاوسية. على سبيل المثال:

محرِّر الرموز البرمجية (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 تحدّد الحد الأدنى لمقدار التدرّج والمَعلمة sigma هي الانحراف المعياري (SD) لفلترة غوسية مسبقة لإزالة الضوضاء ذات التردد العالي. لاستخراج الخطوط من أداة رصد الحواف، تُنفِّذ Earth Engine عملية تحويل Hough (Duda and Hart 1972). استنادًا إلى المثال السابق، يمكنك استخراج الخطوط من أداة الكشف Canny باستخدام:

محرِّر الرموز البرمجية (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 هي zeroCrossing(). يتم تعريف نقطة العبور إلى الصفر على أنّها أي بكسل يعرض إشارة معاكسة في بكسل اليمين أو القاع أو القاع الأيمن القطري. إذا كان أيّ من هذه البكسلات يحمل علامة معاكسة، يتم ضبط البكسل الحالي على 1 (نقطة عبور الصفر)، وإلا يتم ضبطه على صفر. لرصد الحواف، يمكن تطبيق خوارزمية نقاط تقاطع الصفر على تقدير للناسخ الثاني للصورة. يوضّح ما يلي استخدام zeroCrossing() لرصد الحواف:

محرِّر الرموز البرمجية (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');

يجب أن يبدو ناتج نقاط تقاطع الصفر لمنطقة بالقرب من مطار سان فرانسيسكو في كاليفورنيا مماثلاً للشكل 1.

نقاط العبور الصفرية SFO
الشكل 1. ناتج نقاط تقاطع الصفر (باللون الأحمر) مع النطاق الملوّن بالكامل من Landsat 8 في الخلفية لمنطقة بالقرب من مطار سان فرانسيسكو، كاليفورنيا (على اليمين).