腾冲住房和城乡建设局网站,江苏工程建设信息网官网,网站建设工作分解,公司经营范围分类目录前言
边缘检测适用于众多的图像处理任务#xff0c;除了上一节[[geemap046#xff1a;线性卷积–低通滤波器和拉普拉斯算子|线性卷积]]中描述的边缘检测核之外#xff0c;Earth Engine 中还有几种专门的边缘检测算法。其中Canny 边缘检测算法使用四个独立的滤波器来识别对角…前言
边缘检测适用于众多的图像处理任务除了上一节[[geemap046线性卷积–低通滤波器和拉普拉斯算子|线性卷积]]中描述的边缘检测核之外Earth Engine 中还有几种专门的边缘检测算法。其中Canny 边缘检测算法使用四个独立的滤波器来识别对角线、垂直和水平边缘。计算提取水平和垂直方向的一阶导数值并计算梯度幅值 较小幅度的梯度则会被抑制。
1 导入库并显示地图
import ee
import geemap
ee.Initialize()2 Canny边缘检测
为了消除高频噪声可以选择使用高斯核对图像进行预滤波。‘threshold’ 参数确定最小梯度幅度而 ‘sigma’ 参数是高斯预滤波器的标准差 (SD)以去除高频噪声。
# Create a map centered at (lat, lon).
Map geemap.Map(center[40, -100], zoom4)# 加载Landsat 8 影像, 选择全色波段.
image ee.Image(LANDSAT/LC08/C02/T1/LC08_044034_20140318).select(B8)
Map.addLayer(image, {max: 12000}, image)# 执行Canny边缘检测并显示结果非0值表示边缘
canny ee.Algorithms.CannyEdgeDetector(**{image: image, threshold: 10, sigma: 1
})
Map.setCenter(-122.054, 37.7295, 10)
Map.addLayer(canny, {}, canny)
Map3 Hough 变换
为了从边缘检测器中提取线条Earth Engine 实现了 Hough 变换使用以下操作从 Canny 检测器中提取线条
# 对Canny结果进行Hough变换并显示。
hough ee.Algorithms.HoughTransform(canny, 256, 600, 100)
Map.addLayer(hough, {}, hough)
Map4 zeroCrossing边缘检测
Earth Engine 中的另一个专用算法是 ZeroCrossing()。 zeroCrossing被定义为右侧、底部或对角右下角像素具有相反符号的任何像素。 如果这些像素中的任何一个具有相反的符号则当前像素设置为 1zero-crossing 否则它被设置为零。 为了检测边缘可以将zero-crossing算法应用于图像二阶导数的估计。
# 定义一个 “fat” 高斯核。
fat ee.Kernel.gaussian(**{radius: 3,sigma: 3,units: pixels,normalize: True,magnitude: -1
})# 定义一个 “skinny” 高斯核。
skinny ee.Kernel.gaussian(**{radius: 3,sigma: 1,units: pixels,normalize: True,
})# 计算高斯差分 (difference-of-Gaussians, DOG) 核。
dog fat.add(skinny)# 计算二阶导数的零交叉点并显示
zeroXings image.convolve(dog).zeroCrossing()
Map.setCenter(-122.054, 37.7295, 10)
Map.addLayer(zeroXings.updateMask(zeroXings), {palette: FF0000}, zero crossings)Map后记
大家如果有问题需要交流或者有项目需要合作可以加Q Q 504156006详聊加好友请留言“CSDN”谢谢。