geemap学习笔记047:边缘检测

前言

边缘检测适用于众多的图像处理任务,除了上一节[[geemap046:线性卷积--低通滤波器和拉普拉斯算子|线性卷积]]中描述的边缘检测核之外,Earth Engine 中还有几种专门的边缘检测算法。其中Canny 边缘检测算法使用四个独立的滤波器来识别对角线、垂直和水平边缘。计算提取水平和垂直方向的一阶导数值并计算梯度幅值, 较小幅度的梯度则会被抑制。

1 导入库并显示地图

python 复制代码
import ee
import geemap
ee.Initialize()

2 Canny边缘检测

为了消除高频噪声,可以选择使用高斯核对图像进行预滤波。'threshold' 参数确定最小梯度幅度,而 'sigma' 参数是高斯预滤波器的标准差 (SD),以去除高频噪声。

python 复制代码
# Create a map centered at (lat, lon).
Map = geemap.Map(center=[40, -100], zoom=4)

# 加载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')
Map

3 Hough 变换

为了从边缘检测器中提取线条,Earth Engine 实现了 Hough 变换,使用以下操作从 Canny 检测器中提取线条:

python 复制代码
# 对Canny结果进行Hough变换并显示。
hough = ee.Algorithms.HoughTransform(canny, 256, 600, 100)
Map.addLayer(hough, {}, 'hough')
Map

4 zeroCrossing边缘检测

Earth Engine 中的另一个专用算法是 ZeroCrossing()。 zeroCrossing被定义为右侧、底部或对角右下角像素具有相反符号的任何像素。 如果这些像素中的任何一个具有相反的符号,则当前像素设置为 1(zero-crossing); 否则它被设置为零。 为了检测边缘,可以将zero-crossing算法应用于图像二阶导数的估计。

python 复制代码
# 定义一个 "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",谢谢。

相关推荐
韩曙亮20 分钟前
【思维模型】第一性原理 ② ( 利用 “ 第一性原理 “ 进行创新 : 归零 -> 解构 -> 重构 | 跨学科学习 )
学习·重构·第一性原理·思维模型·解构·归零
秦奈21 分钟前
Unity复习学习随笔(五):Unity基础
学习·unity·游戏引擎
我的xiaodoujiao24 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 32--开源电商商城系统项目实战--如何区分登录状态
python·学习·测试工具·pytest
电子小子洋酱1 小时前
Linux显示设备驱动开发 Drm驱动&&Makefile
linux·驱动开发·笔记
电子小子洋酱1 小时前
Linux驱动开发学习笔记(更新中)
linux·笔记·单片机
AI即插即用1 小时前
即插即用系列 | MICCAI EM-Net:融合 Mamba 与频域学习的高效 3D 医学图像分割网络
网络·人工智能·深度学习·神经网络·学习·计算机视觉·视觉检测
Chunyyyen1 小时前
【第二十六周】OCR学习01
学习·计算机视觉·ocr
AI视觉网奇1 小时前
图生3d 人脸 算法笔记 2025
笔记·3d
charlie1145141911 小时前
现代C++工程实践:简单的IniParser4——实现ini_parser
开发语言·c++·笔记·学习·工程
好奇龙猫1 小时前
【AI学习-comfyUI学习-第十五节-FLUX修复工作流-各个部分学习】
学习