边缘检测适用于广泛的图像处理任务。除了卷积部分中描述的边缘检测内核之外,Earth Engine 中还有几种专门的边缘检测算法。 Canny 边缘检测算法 (Canny 1986) 使用四个单独的过滤器来识别对角线、垂直和水平边缘。该计算提取水平和垂直方向的一阶导数值并计算梯度幅值。较小量级的梯度被抑制。要消除高频噪声,可选择使用高斯内核对图像进行预过滤。
一个最简单的代码:
一起看代码
// Load a Landsat 8 image, select the panchromatic band. var image = ee.Image('LANDSAT/LC08/C01/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'); // Perform Hough transform of the Canny result and display. var hough = ee.Algorithms.HoughTransform(canny, 256, 600, 100); Map.addLayer(hough, {}, 'hough');
请注意,该threshold参数决定了最小梯度幅度,该sigma参数是高斯预滤波器去除高频噪声的标准偏差 (SD)。为了从边缘检测器中提取线,Earth Engine 实现了 Hough 变换 (Duda 和 Hart 1972)。继续前面的例子,从 Canny 检测器中提取线:通过Algorithms.HoughTransform()中提取线: