当前位置: 首页 > news >正文

geemap学习笔记047:边缘检测

前言

边缘检测适用于众多的图像处理任务,除了上一节[[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], 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

image.png

3 Hough 变换

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

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

image.png

4 zeroCrossing边缘检测

Earth Engine 中的另一个专用算法是 ZeroCrossing()。 zeroCrossing被定义为右侧、底部或对角右下角像素具有相反符号的任何像素。 如果这些像素中的任何一个具有相反的符号,则当前像素设置为 1(zero-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

image.png

后记

大家如果有问题需要交流或者有项目需要合作,可以加Q Q :504156006详聊,加好友请留言“CSDN”,谢谢。

http://www.lryc.cn/news/280831.html

相关文章:

  • 《Git学习笔记:IDEA整合Git》
  • Scipy 高级教程——统计学
  • 《向量数据库指南》RAG 应用中的指代消解——解决方案初探
  • CSS 一行三列布局,可换行(含grid网格布局、flex弹性布局/inline-block布局 + 伪类选择器)
  • class_3:lambda表达式
  • Hadoop 实战 | 词频统计WordCount
  • SpringCloud.04.熔断器Hystrix( Spring Cloud Alibaba 熔断(Sentinel))
  • python 八大排序_python-打基础-八大排序
  • 运维知识点-Sqlite
  • 我为什么要写RocketMQ消息中间件实战派上下册这本书?
  • 24校招,Moka测试开发工程师一面
  • Docker(网络,网络通信,资源控制,数据管理,CPU优化,端口映射,容器互联)
  • 开发实践5_project
  • 蓝桥杯准备
  • AtCoder Beginner Contest 336 A-E 题解
  • node各个版本的下载地址
  • JVM实战(17)——模拟对象晋升
  • 帆软笔记-决策表报对象使用(两表格联动)
  • DataGear专业版 1.0.0 发布,数据可视化分析平台
  • AS,android SDK
  • LeetCode第155题 - 最小栈
  • Java微服务系列之 ShardingSphere - ShardingSphere-JDBC
  • Unity中URP下实现能量罩(外发光)
  • Golang 中哪些类型可以作为 map 类型的 key?
  • C# 导出EXCEL 和 导入
  • 学网络必懂的华为CSS堆叠技术
  • SV-7041T 30W网络有源音箱校园教室广播音箱,商场广播音箱,会议广播音箱,酒店广播音箱,工厂办公室广播音箱
  • Could NOT find Threads (missing: Threads_FOUND)
  • 1114: 逆序(数组)
  • uniapp如何调用ANDROID原生函数