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

3D滤波器处理遥感tif图像

import cv2
import numpy as np
from osgeo import gdal# 定义 Gabor 滤波器的参数
kSize = 31  # 滤波器核的大小
g_sigma = 3.0  # 高斯包络的标准差
g_theta = np.pi / 4  # Gabor 函数的方向
g_lambda = 10.0  # 正弦波的波长
g_gamma = 0.5  # 空间纵横比
g_psi = np.pi / 2  # 相位偏移# 生成 Gabor 滤波器核
kernel = cv2.getGaborKernel((kSize, kSize), g_sigma, g_theta, g_lambda, g_gamma, g_psi, ktype=cv2.CV_32F)# 使用gdal读取遥感图像
dataset = gdal.Open("1.tif")
image = dataset.ReadAsArray().transpose((1, 2, 0))  # 将波段维度转置到最后# 获取图像的波段数
num_bands = image.shape[2]# 初始化处理后的多波段图像
filtered_image = np.zeros_like(image, dtype=np.float32)# 遍历每个波段
for band in range(num_bands):# 提取当前波段band_image = image[:, :, band]# 应用 Gabor 滤波器filtered_band_image = cv2.filter2D(band_image, cv2.CV_32F, kernel)# 将处理后的波段放回结果图像中filtered_image[:, :, band] = filtered_band_image# 将处理后的图像转换为合适的数据类型
filtered_image = np.clip(filtered_image, 0, 255).astype(np.uint8)# 保存结果
driver = gdal.GetDriverByName('GTiff')
out_dataset = driver.Create('gaofen2_image.tif', dataset.RasterXSize, dataset.RasterYSize, num_bands, gdal.GDT_Byte)
out_dataset.SetProjection(dataset.GetProjection())
out_dataset.SetGeoTransform(dataset.GetGeoTransform())
for band in range(num_bands):out_band = out_dataset.GetRasterBand(band + 1)out_band.WriteArray(filtered_image[:, :, band])
out_dataset.FlushCache()# 关闭数据集
dataset = None
out_dataset = None

在这里插入图片描述

在这里插入图片描述

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

相关文章:

  • fisco bcosV3 Table智能合约开发
  • leetcode刷题记录(四十八)——128. 最长连续序列
  • HTML中如何保留字符串的空白符和换行符号的效果
  • Linux入门——环境基础开发(上)
  • c++类和对象---下
  • 组件中的Props
  • 并行服务、远程SSH无法下载conda,报错404
  • 迅为RK3568开发板篇OpenHarmony配置HDF驱动控制LED-新增 topeet子系统-编写 bundle.json文件
  • 深度剖析RabbitMQ:从基础组件到管理页面详解
  • usb通过hdc连接鸿蒙next的常用指令
  • 【落羽的落羽 C语言篇】文件操作
  • RNN之:LSTM 长短期记忆模型-结构-理论详解-及实战(Matlab向)
  • 战略与规划方法——深入解析波士顿矩阵(BCG Matrix):分析产品组合的关键工具
  • 【记录52】el-table-column 添加fixed属性 滚动条无法滑动
  • 晨辉面试抽签和评分管理系统之十:如何搭建自己的数据库服务器,使用本软件的网络版
  • 主链和Layer2之间资产转移
  • 麒麟操作系统服务架构保姆级教程(十)rewrite跳转
  • MySQL表的创建实验
  • 【高可用自动化体系】自动化体系
  • 总结SpringBoot项目中读取resource目录下的文件多种方法
  • Java-KMP字符串匹配算法
  • Vue3使用vue-count-to数字滚动模块报错解决方案
  • 【高阶数据结构】线段树加乘(维护序列)详细解释乘与加懒标记
  • replaceState和vue的router.replace删除query参数的区别
  • [USACO14JAN] Ski Course Rating G
  • 初步认识 Neo4j 图数据库
  • Qt中容器 QVector、QList、QSet和QMap 性能与用途比较
  • ASP.NET Core - 依赖注入(四)
  • 数学用语中 up to 的含义
  • Spring Boot + MyBatis-Flex 配置 ProxySQL 的完整指南