遥感深度学习二维图像样本制作—异常值处理—零值(均值)填充—滑动窗口分割—数据增强(多波段遥感图像),python

一、问题引入

        最近在做遥感语义分割的实验时,发现样本的制作是一个比较棘手的问题,因此想要整理下代码,以供学习交流。

         我的原始遥感图像样本是有54个波段(这是经过特征提取的,每个波段代表一个特征信息),最后一个波段是标签,因此我的目标是利用前53个特征波段来预测最后一个标签波段。现在我有一组大的遥感影像作为训练样本,但是这些图像形状不规则,因此想要输入深度学习模型中进行训练就需要进行图像切割,变成比如64*64的小尺寸的多个样本,这个就是本文想要分享的内容。

        废话不多说,直接开始上码。

二、异常值处理

        首先导入要用到的python库

import os
from osgeo import gdal
import numpy as np
import pandas as pd

  这里我进行了一步异常值处理,由于我的第54波段,即标签存在一定的问题,因此我进行了一步根据阈值的滤除,去除了一些极大和极小值

 先定义输入和输出的文件夹路径(输出文件夹一定要先创建好,不然会报错),并获取这个路径下的tif文件,如果大家是单个tif文件,可以直接将tiff_files改为文件路径

# 输入文件夹路径,包含要处理的TIFF文件,即大遥感图像
input_folder = "UNet实验数据/原始数据"

# 输出文件夹路径,用于存储处理后的TIFF文件
output_folder = "UNet实验数据/异常值处理"

# 获取输入文件夹中的所有TIFF文件
tiff_files = [f for f in os.listdir(input_folder) if f.endswith('.tif')]

下面写一段循环来处理这个文件夹下的遥感图像异常值,if语句后是处理的条件,这里我写的channel == 53,即第54波段,如果存在异常值,即 <label_min 或 >label_max,就变为nan值,这里label_min和label_max是我之前定义的,大家自行可以换成别的值。

# 循环处理每个TIFF文件
for tiff_file in tiff_files:
    # 构建输入和输出文件的完整路径
    input_path = os.path.join(input_folder, tiff_file)
    output_path = os.path.join(output_folder, tiff_file)

    # 打开输入TIFF文件
    ds = gdal.Open(input_path, gdal.GA_ReadOnly)

    # 获取输入TIFF文件的宽度、高度和通道数
    image_width = ds.RasterXSize
    image_height = ds.RasterYSize
    num_channels = ds.RasterCount

    # 创建输出TIFF文件
    driver = gdal.GetDriverByName("GTiff")
    out_ds = driver.Create(output_path, image_width, image_height, num_channels, gdal.GDT_Float32)

    # 处理每个通道
    for channel in range(num_channels):
        channel_data = ds.GetRasterBand(channel + 1).ReadAsArray()

        if channel == 53:
            channel_data = np.where((channel_data < label_min) | (channel_data > label_max), np.nan, channel_data)
            
        # 写入处理后的通道数据
        out_ds.GetRasterBand(channel + 1).WriteArray(channel_data)

    # 释放数据集
    out_ds = None

print("处理完成。")

        到这里就完成了异常值的处理,在输出文件夹中

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值