Python和Google Colab进行卫星图像二维小波变化和机器学习

2D 小波分解是图像处理中的一种流行技术,使用不同的滤波器将图像分解为不同的频率分量(“近似”和“细节”系数)。该技术对于各种图像处理任务特别有用,例如压缩、去噪、特征提取和边缘检测。

在本文中,我们将演示如何在 Google Colab 中使用 Python 下载高分辨率样本卫星图像,执行 2D 小波分解,可视化高频和低频分量,并使用逆小波方法重建图像,机器学习(ML)算法和耦合线性回归优化模型。为了提高 ML 模型的复杂性,我们将从输入中消除主要组件,并仅使用细节组件重新训练 ML 模型。在整个过程中,我们将评估每种方法在重建阶段的性能,并将 ML 模型的输出可视化。

目录

  1. 🌟简介
  2. 🌐 在 Google Colab 中下载卫星图像
  3. ⚙️ 应用小波分解
  4. 🔄 使用小波逆变换重建图像
  5. 🔄 使用 ML 算法重建图像
  6. 🔄 使用线性回归模型重建图像
  7. 🔄 使用耦合线性回归模型和优化算法重建图像
  8. 📈 评估不同的重建方法
  9. 🔃 使用没有近似系数的 ML 重建图像
  10. 📄 结论

🌟简介

小波分解的过程包括对图像应用一系列高通和低通滤波器,将图像分离成不同的频率分量。通常,分解分多个阶段完成,在每个级别生成一组近似系数和细节系数。近似系数代表图像的低频分量,而细节系数则捕获高频分量。

小波分解通常与其他技术(例如机器学习)结合使用,以增强图像的分析和处理。通过利用小波的多分辨率功能,研究人员和从业人员可以为各种图像相关任务开发更有效和高效的算法。

总体而言,小波分解已成为图像处理领域的重要工具,并在卫星图像分析、医学成像、信号处理等各个领域都有应用。如果您有兴趣探索 2D 小波分解和 ML 算法在无人机图像中缩小地表温度的主要应用之一

🌐 在 Google Colab 中下载卫星图像

第一步涉及找到下载高分辨率图像的方法。为此,强烈推荐使用 Google 地图的高分辨率航空和卫星图像,尤其是在城市地区。使用 Qiusheng Wu 创建的库可以简化此步骤。确保您已安装必要的组件,包括“segment-geospatial”、“leafmap”和“localtileserver”。接下来,定义所需感兴趣区域 (AOI) 的纬度和经度并继续绘制多边形:

%pip install segment-geospatial leafmap localtileserver
import os
import leafmap
from samgeo import SamGeo, tms_to_geotiff
m = leafmap.Map(center=[37.716956, -120.951107], zoom=20, height="800px")
m.add_basemap("SATELLITE")
m

 

bbox = m.user_roi_bounds()
image = "satellite.tif"
tms_to_geotiff(output=image, bbox=bbox, zoom=20, source="Satellite", overwrite=True)

在最后三行中,将感兴趣区域 (AOI) 的边界分配给“bbox”变量,设置输出名称,然后执行“tms_to_geotiff”以指定名称保存卫星图像,在本例中为“satellite” .tif”。

⚙️ 应用小波分解

为了对 2D 图像执行小波分解,我们将使用 Rasterio 库读取下载的图像,并使用 Daubechies 小波家族的一个成员(例如 db1)和“对称”模式实现 2D 分解。

Daubechies 小波是正交小波族,广泛应用于信号处理和图像压缩。“DB”后面的数字表示小波函数中消失矩的数量。小波的消失矩越多,它就越平滑。

另一方面,模式是指执行小波分解的具体方式。该模式可以确定如何计算小波系数以及分解过程如何处理图像的边缘和边界。不同的模式可能导致小波分解输出的变化,特别是在图像的边缘。

小波分解后,原始图像将被划分为不同的频率分量。近似系数表示为cA,而cH、cV和cD分别称为水平、垂直和对角线细节系数。这些系数中的每一个都捕获有关水平、垂直和对角边缘的信息。图像分解后,将绘制每个子带:

import pywt
import rasterio
import numpy as np
import matplotlib.pyplot as plt

# Load GeoTIFF image
with rasterio.open('satellite.tif') as src:
    img = src.read(1)

# Perform 2D wavelet decomposition
coeffs = pywt.dwt2(img, 'db1', mode='symmetric')

# Extract detail and approximation coefficients
cA, (cH, cV, cD) = coeffs

# Plot the decomposed coefficients
fig, ax = plt.subplots(2, 2, figsize=(10, 10))
ax[0, 0].imshow(cA, cmap='seismic')
ax[0, 0].set_title('Approximation Coefficient')
ax[0, 1].imshow(cH, cmap='seismic')
ax[0, 1].set_title('Horizontal Detail Coefficient')
ax[1, 0].imshow(cV, cmap='seismic')
ax[1, 0].set_title('Vertical Detail Coefficient')
ax[1, 1].imshow(cD, cmap='seismic')
ax[1, 1].set_title('Diagonal Detail Coefficient')
plt.show()

在上图中,图像的主要部分已保持在近似系数内,而其余元素代表各种方向边缘特征。

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

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

相关文章

弄清Resource、ResourceLoader、容器之间的微妙关系

Resource: 在Java中,资源会被抽象成url,通过url前面的协议(如file:,classpath:)来处理不同的操作逻辑,resource是一个接口 Resource家族 具体的资源访问由其实现类完成&a…

Python学习日记之学习turtle库(下 篇)

前言: 书接上篇,我们继续来了解Python内置库 turtle功能库。在前面的文章中,我们初步的了解了一下 turtle库,画布和画笔相关的函数,那么我们继续来深入了解一下吧。 详情见: Python学习日记之学习turtle库…

Spring web MVC(入门)

1、什么是MVC(一种思想) Model View Controller : Model—模型 View—视图 Controller—控制器 2、Spring MVC是一种实现(我们现在学的是Spring web,Spring mvc过时了) View属于前端问题我们后端人员不必太过于关注…

Prometheus添加nginx节点显示不支持stub_status 解决办法

1、我们在使用Prometheus监控添加nginx节点监控的时候,在被监控节点的nginx配置文件中添加下面的模块 server { listen 80; server_name localhost; location /stub_status { stub_status on; access_log off; …

Leetcode 73. 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为 0 。请使用原地算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 示例 2: 输入&a…

力扣hot100题解(python版63-68题)

63、搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输…

在Blender中清理由Instant-NGP等几何学习技术生成的网格

使用布尔运算: 创建一个大的立方体或其他简单几何体包裹住全部网格。使用布尔修改器对两个网格进行“差集”运算。这将移除超出包裹体之外的多余网格部分。 手动选择并删除: 进入编辑模式(按Tab键)。按A键取消选择所有顶点。按B键并拖动以选择您想要删除…

【论文笔记】Language Models are Few-Shot Learners

Language Models are Few-Shot Learners 本部分是 GPT-3 技术报告的第一部分:论文正文、部分附录。 后续还有第二部分:GPT-3 的广泛影响、剩下的附录。 以及第三部分(自己感兴趣的):GPT-3 的数据集重叠性研究。 回顾…

vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载

文章目录 导文文章重点内容效果展示:代码展示这些方法适用于哪些场景 总结 导文 vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载 文章重点 内容效果展示: 当div拉到底部的时候: 编辑器返回: 代码展示 在…

来点基础的吧,JavaScript、JSP怎么打印输出,方便调试

这个对初学者肯定有用,自己写了代码,想看看对不对,想打印到页面上看看,都有哪些地方需要打印用哪些方法呢? 一、JavaScript的打印输出 1、console.log() console.log()是JavaScript中最常用的打印值方法之一。它将指…

React-router之简单使用

1.概念 说明:页面的跳转 2.安装 说明:路由采用CRA创建项目的方式进行基础环境配置。 npx create-react-app react-router-pro npm i react-router-dom 3.使用 import React from react; import ReactDOM from react-dom/client; import ./index.css;…

嵌入式学习第二十五天!(网络的概念、UDP编程)

网络: 可以用来:数据传输、数据共享 1. 网络协议模型: 1. OSI协议模型: 应用层实际收发的数据表示层发送的数据是否加密会话层是否建立会话连接传输层数据传输的方式(数据包,流式)网络层数据的…

C#学习:初识各类应用程序

编写我们第一个程序——Hello,World! 1.编程不是“学”出来的,而是“练”出来的 2.在反复应用中积累,忽然有一天就会顿悟 3.学习原则: 3.1从感官到原理 3.2从使用别人的到创建自己的 3.3必需亲自动手 3.4必需学以致用,紧跟实际…

大模型思维链(CoT prompting)

思维链(Chain of Thought,CoT) **CoT 提示过程是一种大模型提示方法,它鼓励大语言模型解释其推理过程。**思维链的主要思想是通过向大语言模型展示一些少量的 exapmles,在样例中解释推理过程,大语言模型在…

HTML 学习笔记(七)列表

html中的列表分为以下三种:有序列表,无序列表和自定义列表 1.有序列表 有序列表由两个元素组成:元素ol和元素li,此两个元素是父子关系,li必须包裹在ol里使用, ol里直接嵌套的只有li,其嵌套效果…

【亲身经历】linux中使用mv命令之后,文件找不到

先说解决方案:移动过程的目的目录,使用了"/",这个斜杠标识加到目录名前面,表示会移动到根目录下的文件夹,而不是你想移动的那个文件夹,最后导致没找到。 某次升级tomcat的过程中,使用了mv移动文…

ky10 server 银河麒麟服务器主备搭建 (nginx+keepalived)

下载脚本代码 git clone https://gitcode.net/zengliguang/nginx_keepalived_ky10_x.git 进入脚本路径 更新脚本代码 更新完成 执行安装脚本 安装nginx离线编译安装依赖 解压nginx源码 检查环境 编译 nginx安装成功 安装keepalived keepalived安装成功

详解前端登录流程:实现原理与最佳实践

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Mysql安装好后my.ini文件在何处

文章目录 报错 Invalid default value for ‘‘begin_time‘‘my.ini文件何在 背景:导入一个sql脚本时执行报错,需要修改my.ini中的一个配置 报错 Invalid default value for ‘‘begin_time‘‘ 需要修改my.ini中的slq-mode配置 参考的这个哥们博客配…

unityplayer.dll是什么,电脑缺少unityplayer.dll的解决方法分享

如何解决“缺失unityplayer.dll”错误?当您尝试启动一个应用程序或游戏时,您可能会看到一个错误消息,显示“找不到unityplayer.dll”或unityplayer.dll丢失。这通常是因为Unity引擎未正确安装或文件已丢失或损坏。这篇文章将向您介绍如何解决…