ToB企服应用市场:ToB评测及商务社交产业平台

标题: 3D滤波器处理惩罚遥感tif图像 [打印本页]

作者: 美丽的神话    时间: 2025-1-16 16:35
标题: 3D滤波器处理惩罚遥感tif图像
  1. import cv2
  2. import numpy as np
  3. from osgeo import gdal
  4. # 定义 Gabor 滤波器的参数
  5. kSize = 31  # 滤波器核的大小
  6. g_sigma = 3.0  # 高斯包络的标准差
  7. g_theta = np.pi / 4  # Gabor 函数的方向
  8. g_lambda = 10.0  # 正弦波的波长
  9. g_gamma = 0.5  # 空间纵横比
  10. g_psi = np.pi / 2  # 相位偏移
  11. # 生成 Gabor 滤波器核
  12. kernel = cv2.getGaborKernel((kSize, kSize), g_sigma, g_theta, g_lambda, g_gamma, g_psi, ktype=cv2.CV_32F)
  13. # 使用gdal读取遥感图像
  14. dataset = gdal.Open("1.tif")
  15. image = dataset.ReadAsArray().transpose((1, 2, 0))  # 将波段维度转置到最后
  16. # 获取图像的波段数
  17. num_bands = image.shape[2]
  18. # 初始化处理后的多波段图像
  19. filtered_image = np.zeros_like(image, dtype=np.float32)
  20. # 遍历每个波段
  21. for band in range(num_bands):
  22.     # 提取当前波段
  23.     band_image = image[:, :, band]
  24.     # 应用 Gabor 滤波器
  25.     filtered_band_image = cv2.filter2D(band_image, cv2.CV_32F, kernel)
  26.     # 将处理后的波段放回结果图像中
  27.     filtered_image[:, :, band] = filtered_band_image
  28. # 将处理后的图像转换为合适的数据类型
  29. filtered_image = np.clip(filtered_image, 0, 255).astype(np.uint8)
  30. # 保存结果
  31. driver = gdal.GetDriverByName('GTiff')
  32. out_dataset = driver.Create('gaofen2_image.tif', dataset.RasterXSize, dataset.RasterYSize, num_bands, gdal.GDT_Byte)
  33. out_dataset.SetProjection(dataset.GetProjection())
  34. out_dataset.SetGeoTransform(dataset.GetGeoTransform())
  35. for band in range(num_bands):
  36.     out_band = out_dataset.GetRasterBand(band + 1)
  37.     out_band.WriteArray(filtered_image[:, :, band])
  38. out_dataset.FlushCache()
  39. # 关闭数据集
  40. dataset = None
  41. out_dataset = None
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4