หากต้องการใช้การฟัซซิออนเชิงเส้นกับรูปภาพ ให้ใช้ image.convolve()
อาร์กิวเมนต์เดียวที่ใช้กับการดำเนินการฟิวชันคือการคูณ ee.Kernel
ซึ่งระบุด้วยรูปร่างและน้ำหนักใน Kernel พิกเซลแต่ละพิกเซลของเอาต์พุตรูปภาพจาก convolve()
คือชุดค่าผสมเชิงเส้นของค่า Kernel และพิกเซลรูปภาพอินพุตที่ Kernel ครอบคลุม โดยจะใช้กับแต่ละย่านความถี่แยกกัน เช่น คุณอาจต้องการใช้ Kernel แบบ Low Pass (การปรับให้เรียบ) เพื่อนำข้อมูลความถี่สูงออก รูปภาพต่อไปนี้แสดงการใช้ Kernel ชนิด Low Pass ขนาด 15x15 กับภาพ Landsat 8
เครื่องมือแก้ไขโค้ด (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 โปรดทราบว่าอาร์กิวเมนต์ของ Kernel จะกําหนดขนาดและค่าสัมประสิทธิ์ของ Kernel
กล่าวโดยละเอียดคือ เมื่อตั้งค่าพารามิเตอร์ units
เป็นพิกเซล พารามิเตอร์ radius
จะระบุจํานวนพิกเซลจากศูนย์กลางที่ Kernel จะครอบคลุม หากตั้งค่า normalize
เป็น "จริง" สัมประสิทธิ์ของ Kernel จะมีผลรวมเท่ากับ 1 หากตั้งค่าพารามิเตอร์ magnitude
ระบบจะคูณค่าสัมประสิทธิ์ของ Kernel กับขนาด (หาก normalize
เป็นจริงด้วย ค่าสัมประสิทธิ์จะรวมกันเป็น magnitude
) หากค่าสัมประสิทธิ์ของ Kernel เป็นค่าลบ การตั้งค่า normalize
เป็นจริงจะทำให้ค่าสัมประสิทธิ์รวมกันเป็น 0
ใช้กรวยกรองอื่นๆ เพื่อให้ได้เอฟเฟกต์การประมวลผลรูปภาพที่ต้องการ ตัวอย่างนี้ใช้ลิบบาล์กัลเพื่อตรวจหาขอบแบบไอโซทรอปิก
เครื่องมือแก้ไขโค้ด (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 จะส่งไทล์ที่แสดงไปยังเครื่องมือแก้ไขโค้ดในรูปแบบ JPEG เพื่อประสิทธิภาพ แต่ระบบจะส่งไทล์ขอบในรูปแบบ PNG เพื่อจัดการกับระดับการโปร่งใสของพิกเซลที่อยู่นอกขอบเขตรูปภาพ เมื่อเกิดภาพที่ไม่ต่อเนื่อง การตั้งค่ารูปแบบเป็น PNG จะทำให้การแสดงผลสอดคล้องกัน ผลลัพธ์ของการฟิวส์กับเคอร์เนลการตรวจหาขอบแบบ Laplace ควรมีลักษณะดังรูปที่ 2
นอกจากนี้ยังมีนิวเคลียสตรวจหาขอบแบบ anisotropic (เช่น Sobel, Prewitt, Roberts) ซึ่งสามารถเปลี่ยนทิศทางได้ด้วย kernel.rotate()
อื่นๆ ได้แก่ พารามิเตอร์ Gaussian และพารามิเตอร์รูปทรงต่างๆ ที่มีน้ำหนักสม่ำเสมอ หากต้องการสร้าง Kernel ที่มีน้ำหนักและรูปร่างที่กําหนดเอง ให้ใช้ ee.Kernel.fixed()
ตัวอย่างเช่น โค้ดนี้จะสร้างนิวเคลียส 9x9 ของ 1 โดยมี 0 อยู่ตรงกลาง
เครื่องมือแก้ไขโค้ด (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);