GEE:Sobel算子卷积

作者:CSDN @ _养乐多_

本文将深入探讨边缘检测中的一个经典算法,即Sobel算子卷积。我们将介绍该算法的基本原理,并演示如何在Google Earth Engine中应用Sobel算子进行图像卷积操作。并以试验区NDVI为例子,研究区真彩色影像、NDVI图像以及Sobel卷积结果如下所示,

在这里插入图片描述


文章目录

      • 一、Sobel算子卷积
      • 二、完整代码
      • 三、代码链接


一、Sobel算子卷积

Sobel算子卷积的卷积核如下所示,详细介绍介绍参考《遥感数字图像处理教程(第三版),韦玉春,汤国安…》。

            [0, 0, 24, 24, 0, 0, 0],
            [0, 0, 24, 24, 0, 0, 0],
            [0, 0, 24, 24, 0, 0, 0],
            [0, 0, 24, 24, 24, 24, 24],
            [0, 0, 24, 24, 24, 24, 24],
            [0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0]

二、完整代码

// 设置感兴趣区域(ROI)并可视化
var roi = geometry; // 定义感兴趣区域
var roiImage = ee.Image().toByte().paint({ featureCollection: roi, color: 'red', width: 1 });
Map.addLayer(roiImage, { palette: 'red' }, '感兴趣区域'); // 在地图上添加感兴趣区域图层
Map.centerObject(roi, 11); // 将地图中心设置为感兴趣区域的中心位置

// 获取LANDSAT遥感影像数据集
var dataset = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2')
    .filterDate('2022-01-01', '2022-12-31'); // 筛选日期范围

// 应用缩放因子
function applyScaleFactors(image) {
    var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2); // 光学波段缩放
    var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0); // 热红外波段缩放
    return image.addBands(opticalBands, null, true)
        .addBands(thermalBands, null, true);
}

dataset = dataset.map(applyScaleFactors);

// 从数据集中选择波段创建影像
var imageYLD = dataset.select(['SR_B5', 'SR_B4', 'SR_B3', 'SR_B2'])
    .filterBounds(roi).median()
    .clip(roi);

// 可视化真彩色影像
var visualization = {
    bands: ['SR_B4', 'SR_B3', 'SR_B2'],
    min: 0.0,
    max: 0.3,
};

Map.addLayer(imageYLD, visualization, '真彩色 (432)');

// 计算归一化植被指数(NDVI)
var ndvi = imageYLD.normalizedDifference(['SR_B5', 'SR_B4']);
var visParam = {
    palette:
        'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400,' +
        '3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301'
};
Map.addLayer(ndvi, visParam, 'NDVI');

// 定义滤波窗口大小
var windowSize = 3;

// Roberts算子卷积函数
function RobertsConvolve(image) {
  
    var Roberts_Kernel = ee.Kernel.fixed(7, 7,
        [
            [0, 0, 12, 0, 0, 0, 0],
            [0, 0, 12, 0, 0, 0, 0],
            [0, 0, 12, 0, 0, 0, 0],
            [0, 0, 12, 12, 12, 12, 12],
            [0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0]
        ]); // 定义Roberts算子卷积核

    return image.convolve(Roberts_Kernel);
};

// 应用Roberts算子卷积
var convolvedRobertsImage = RobertsConvolve(ndvi);

// 定义自适应可视化函数
function adaptiveVisualization(image, layerName, roi, visualSwitch, scale, palette) {
  
    // 计算影像的最小值和最大值
    var imageMin = image.reduceRegion({
        reducer: ee.Reducer.min(),
        geometry: roi,
        scale: scale,
        crs: "EPSG:4326",
        bestEffort: true,
        tileScale: 5
    });

    var imageMax = image.reduceRegion({
        reducer: ee.Reducer.max(),
        geometry: roi,
        scale: scale,
        crs: "EPSG:4326",
        bestEffort: true,
        tileScale: 5
    });

    // 打印最小值和最大值
    // print(imageMin, imageMax);

    // 影像可视化
    var viz = {
        palette: palette,
        min: imageMin.getNumber('nd').getInfo(),
        max: imageMax.getNumber('nd').getInfo()
    };
    Map.addLayer(image, viz, layerName, visualSwitch);
}

// 使用自适应可视化函数
adaptiveVisualization(convolvedRobertsImage, 'Roberts', roi, false, 30, ['black', 'blue', 'purple', 'cyan', 'green', 'yellow', 'red']);

// Sobel算子卷积函数
function SobelConvolve(image) {
  
    var Sobel_Kernel = ee.Kernel.fixed(7, 7,
        [
            [0, 0, 24, 24, 0, 0, 0],
            [0, 0, 24, 24, 0, 0, 0],
            [0, 0, 24, 24, 0, 0, 0],
            [0, 0, 24, 24, 24, 24, 24],
            [0, 0, 24, 24, 24, 24, 24],
            [0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0]
        ]); // 定义Sobel算子卷积核

    return image.convolve(Sobel_Kernel);
};

// 应用Roberts算子卷积
var convolvedSobelImage = SobelConvolve(ndvi);

// 使用自适应可视化函数
adaptiveVisualization(convolvedSobelImage, 'Sobel', roi, true, 30, ['black', 'blue', 'purple', 'cyan', 'green', 'yellow', 'red']);

三、代码链接

https://code.earthengine.google.com/eabd1fa0a43348b17f47fbcc11f4ff1a?noload=true

声明:
本人作为一名作者,非常重视自己的作品和知识产权。在此声明,本人的所有原创文章均受版权法保护,未经本人授权,任何人不得擅自公开发布。
本人的文章已经在一些知名平台进行了付费发布,希望各位读者能够尊重知识产权,不要进行侵权行为。任何未经本人授权而将付费文章免费或者付费(包含商用)发布在互联网上的行为,都将视为侵犯本人的版权,本人保留追究法律责任的权利。
谢谢各位读者对本人文章的关注和支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/212667.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue+SpringBoot解决session跨域问题

做了一个前后端分离,因为前后端的 session id不一致,导致前端请求时,后端的session读取不到对应的值,造成登录问题。 解决方法: SpringBoot项目: 添加一个跨域配置 代码如下: 或者controller使用CrossOrigin Conf…

单细胞个性化细胞注释

关于单细胞中级的课程内容,前面已经有了三次直播。欢迎回看~ 单细胞直播一理解seurat数据结构与pbmc处理流程 单细胞直播二从GSE104154中理解seurat结构 单细胞直播三seurat数据结构与数据可视化 本期主要内容 本期指哪打哪,自己选定细胞&…

玻色量子事件活动

2023年 2023.7 玻色量子携最新相干光量子计算机惊艳亮相2023数字经济大会 2023.6 打造“新型计算数据中心”!玻色量子与科华数据(002335.SZ)携手共创 2023.6 玻色量子“天工量子大脑”亮相中关村论坛,大放异彩 2023.5 100量…

美容院管理系统服务预约会员小程序效果如何

美容院在美业场景中需求度较高,尤其女性爱美悦己消费逐年增加,如清洁焕肤、祛皱抗衰、激光脱毛等美容项目都有不少需求者。 互联网深入美业行业多年,传统线下经营模式已经很难满足当今客户消费流程,如品牌寻找、服务预约、到店、…

用HeidiSQL在MySQL中创建新的数据库

用有权限的用户登录: 右键单击,选择: 输入要创建的数据库名称,然后点击“确定”: 刷新下,就看到新创建的数据库了: 在新创建的数据库中,就可以做其它操作了,例如…

Python标准库:random库【侯小啾python领航班系列(十七)】

Python标准库random【侯小啾python领航班系列(十七)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

【SpringMVC】Spring Web MVC入门(一)

文章目录 前言什么是Spring Web MVC?什么是MVC什么是Spring MVC? Spring Boot 和 Spring MVC 的区别什么是Spring Boot?关系和区别 Spring MVC 学习注解介绍1. SpringBootApplication2. RestController3. RequestMapping3.1 RequestMapping 使…

(c语言)作业讲解

例一&#xff1a; 题目&#xff1a; 答案&#xff1a; #include<stdio.h> #include<math.h> int main() {int x;double sum0; int g 0; int i 0;scanf("%d",&x);while (x > 0){g x % 10;if (g % 2 0){g 0;}else{g 1;}sum g*pow(10,i);…

电子印章管理系统:是什么、3个平台推荐

说到印章&#xff0c;相信看过近现代电视剧的人都见过&#xff0c;一般在订立合约时最常用到&#xff0c;双方在合约上加盖印鉴&#xff0c;即代表着合约的成立。 我小时候还见过我父亲的印章&#xff0c;只是随着时代的发展&#xff0c;印章因为不易携带&#xff0c;容易被盗…

Spring事务传播机制

在上篇文章中&#xff0c;小编带领大家了解了Spring事务&#xff1a;Spring事务-CSDN博客&#xff0c;那么&#xff0c;本篇文章将会带领大家深入了解&#xff1a;Spring事务传播机制&#xff0c;感兴趣的各位老铁&#xff0c;欢迎深入探讨&#xff01;&#xff01; 事务传播机…

10行代码实现vue路由最简单的登陆拦截

需求&#xff1a;不涉及任何角色权限&#xff0c;基本实现目标&#xff0c;有token就可查看任何页面&#xff0c;否则就去登陆&#xff0c;来一步步实现 1. 创建你的路由页面&#xff0c;此处略了 2. 导航守卫拦截判断思路 // 创建路由 const router createRouter({history…

深度学习手势识别算法实现 - opencv python 计算机竞赛

文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习手势识别算法实现 - opencv python 该项目较为新颖…

智能优化算法应用:基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.狮群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

rman 0级 1级备份结合的注意事项 obsolete 和 FRA自动清理

1. 当心0级备份从controlfile中删除&#xff0c;0级备份决定recover windows时间 &#xff0c;一级不算 Incremental backup cycle: Sundays: Level 0 Monday-Sat: cumulative level 1 Every Friday and Saturday, the time for the incremental level 1 backup sud…

创投课程研报专题课 | 如何写出高质量研报

协会邀请了来自GPTDAO的分析师——Will作为VC创投课程研报专题课的嘉宾&#xff0c;将于北京时间12月2日(周六)晚上21:00 PM-22:00 PM&#xff0c;与所有对Web3投资、创业心怀热忱的朋友一同探讨《如何写出高质量的研报》这个激动人心的话题。 浙江大学学生区块链协会&#xff…

mybatis整合(手动添加jar包方式)

操作步骤 创建数据库 建立user表 放入数据 1、创建javaweb工程并添加Jar包 用到的jar包 junit 用于测试 mybatis框架&#xff1a;mybatis-3.5.9.jar mysql数据库&#xff1a;mysql-connector-java-8.0.28.jar 2、添加MyBatis核心配置文件 <?xml version"1.0"…

[原创][2]探究C#多线程开发细节-“线程的无顺序性“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delph…

TensorRT之LeNet5部署(onnx方式)

文章目录 前言LeNet-5部署1.ONNX文件导出2.TensorRT构建阶段(TensorRT模型文件)&#x1f9c1;创建Builder&#x1f367;创建Network&#x1f36d;使用onnxparser构建网络&#x1f36c;优化网络&#x1f361;序列化模型&#x1f369;释放资源 3.TensorRT运行时阶段(推理)&#x…

工业机器视觉megauging(向光有光)使用说明书(二,轻量级的visionpro)

测试程序暂时支持80万&#xff08;包含1024*768&#xff09;以上的gige工业相机&#xff0c;以后会支持640*480分辨率相机。 我们程序中使用注意力机制&#xff0c;其实就是感兴趣区域&#xff08;roi&#xff0c;你看过我前面博文&#xff0c;就应该明白&#xff09;精神的延…

mac截图Snagit 中文介绍

1.超越普通的屏幕截图 TechSmith Snagit 是唯一具有内置高级图像编辑和屏幕录制功能的屏幕捕获软件。因此&#xff0c;您可以在一个程序中轻松创建高质量的图像和视频。 2.最后&#xff0c;屏幕捕获软件可以完成您所做的一切 快速解释一个过程如果您正在努力清楚地沟通&…