השלכות

כדי לבצע עיבוד ליניארי של תמונות, משתמשים ב-image.convolve(). הארגומנט היחיד של convolve הוא ee.Kernel שמצוין על ידי צורה והמשקלים בליבה. כל פיקסל של התמונה שיוצאת מהפונקציה convolve() הוא השילוב הליניארי של ערכי הליבה ופיקסלי התמונה של הקלט שמכוסים על ידי הליבה. הליבות חלות על כל תדר בנפרד. לדוגמה, יכול להיות שתרצו להשתמש בליבה של מסנן תדר נמוך (החלקה) כדי להסיר מידע בתדר גבוה. באיור הבא מוצג גרעין מסנן מסוג 15x15 שמוחל על תמונה של Landsat 8:

Code Editor‏ (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');

הפלט של המצטבר עם המסנן מסוג 'מסנן מסנן נמוך' אמור להיראות בערך כמו באיור 1. שימו לב שהארגומנטים של הליבה קובעים את הגודל והמקדמים שלה. באופן ספציפי, כשהפרמטר units מוגדר לפי פיקסלים, הפרמטר radius מציין את מספר הפיקסלים מהמרכז שהליבה תכסה. אם הערך של normalize מוגדר כ-true, סכום המקדמים של הליבה יהיה אחד. אם הפרמטר magnitude מוגדר, מקדם הליבה יוכפל בערך המגדר (אם גם normalize מוגדר כ-True, הסכום של המקדם יהיה magnitude). אם יש ערך שלילי באחד מהמקדם של הליבה, הגדרת normalize כ-True תגרום לכך שהערך הכולל של המקדם יהיה אפס.

boxcar_sf
איור 1. תמונה של Landsat 8 שעברה עיבוד קונוולוציה עם ליבה של החלקה. אזור מפרץ סן פרנסיסקו, קליפורניה, ארה"ב.

שימוש בליבות אחרות כדי להשיג את האפקט הרצוי של עיבוד התמונה. בדוגמה הזו נעשה שימוש ב-kernel של Laplacian לזיהוי קצוות איזוטרופיים:

Code Editor‏ (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');

שימו לב למפרט הפורמט בפרמטרים של התצוגה החזותית. כדי לשפר את היעילות, Earth Engine שולח משבצות תצוגה ל-Code Editor בפורמט JPEG. עם זאת, משבצות קצה נשלחות בפורמט PNG כדי לטפל בשקיפות של פיקסלים מחוץ לגבולות התמונה. אם יש הפרעה חזותית, הגדרת הפורמט ל-PNG תגרום לתצוגה עקבית. התוצאה של המצטבר עם הליבה של זיהוי הקצוות של Laplacian אמורה להיראות בערך כמו באיור 2.

laplacian_sf
איור 2. תמונה של Landsat 8 שעברה עיבוד קונוולוציה עם ליבה לזיהוי קצוות של Laplacian. אזור מפרץ סן פרנסיסקו, קליפורניה, ארה"ב.

יש גם ליבות אנאיזוטרופיות לזיהוי קצוות (למשל Sobel, ‏ Prewitt, ‏ Roberts), שאפשר לשנות את הכיוון שלהן באמצעות kernel.rotate(). גרעיני פס נמוך אחרים כוללים גרעיני גאוס וגרעינים בצורות שונות עם משקלים אחידים. כדי ליצור ליבות עם משקלים וצורה שהוגדרו באופן שרירותי, משתמשים ב-ee.Kernel.fixed(). לדוגמה, הקוד הזה יוצר ליבה בגודל 9x9 של 1 עם אפס באמצע:

Code Editor‏ (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);