构建自己的哨兵数据集(以sentinel-1为例,使用SNAP软件)

一、获取哨兵数据

首先进入欧洲航空局网站,哨兵1号由两颗极轨卫星A星和B星组成。两颗卫星搭载的传感器为合成孔径雷达(SAR),属于主动微波遥感卫星。
1.点击“Open Hub”
Alt
2.点击右上角完成账户注册(这一步很简单)。
在这里插入图片描述
3.点击下图中“1”,选择要查找的区域(本文以西安为例),选择完成后,点击“2”来完成具体的数据选择。
产品类型中:
SLC(Single Look Complex):这些产品包含原始SAR数据的相位和振幅信息,通常用于制作高分辨率SAR图像,进行地质勘探和地震监测等应用。(博主因为要用于SAR图像训练,所以选择了该产品类型)
GRD(Ground Range Detected:这些产品包含了原始合成孔径雷达数据的地表反射率信息,可以用于监测土地覆盖和变化,如农田、森林和城市。
OCN(Ocean):主要用于监测和研究地球的海洋环境,提供了关于海洋表面特征和动态的有用信息。
RAW属于为加工的原始SAR数据,加工后得到SLC、GRD、OCN。
传感器模式选项:
Stripmap(SM)模式: Stripmap模式提供了中等分辨率的SAR图像,适用于地质、环境和农业监测等应用。
Interferometric Wide (IW) 模式: IW模式具有较高的分辨率,适用于地表变形监测、森林监测和海洋应用。
Extra Wide (EW) 模式: EW模式提供更宽的覆盖范围,适用于大范围地表监测,如洪水监测和农业用途。

在这里插入图片描述
该图的极化模式需要改为VV+VH
4.设置完毕后,点击搜索按钮,并选择一款产品加入购物车(为了防止下一次找不到),再点击下载按钮。得到的是一个非常大的压缩包。
在这里插入图片描述

二、处理哨兵计划产品数据

1.下载SNAP软件进行哨兵数据的处理,进入下载官网,选择版本。
2.打开软件,点击“File”,再点击“Open Product…”,选择刚刚下载的安装包,在“Bands”中就可以查看图像了(西安古城墙清晰可见23333)
至此,数据的获取就完成了,后续就可以进行其他专业处理了,本人后面只介绍如何导出成图片,以及分割图片
在这里插入图片描述
在这里插入图片描述

三、导出图片格式并切割图片

1.导出图片,点击“File”–>“Export”–>“Other”–>“View as image”,接下来在图片右侧窗口进行分辨率的选择。
在这里插入图片描述
在这里插入图片描述
2.切割图片。(因为本人需要训练网络,所以要分辨率较小的图片),这里本人使用python写了一个简单的脚本,使用到了PIL的Image库。

def batch_crop(input_dir, crop_size=128):
    # input_dir 传入的照片路径
    # crop_size 所截取图片的大小
    # dirs = os.listdir(input_dir)    # 保存input_dir目录下所有文件至dirs
    # for item in dirs:
    im = Image.open(input_dir)
    print("图像尺寸(宽,高): ", im.size)
    (width, height) = im.size
    stepping = 32              # 设置步进大小,每隔32个像素点,截取一次
    right_times = (width - crop_size) // stepping
    down_times = (height - crop_size) // stepping
    print("右移次数:", right_times)
    print("下移次数:", down_times)
    # left, top = 0, 0
    number = 0
    for i in range(right_times + 1):
        for j in range(down_times + 1):
            if i == right_times:
                left = width - crop_size	#此时顶格裁切
            else:
                left = stepping * i
            if j == down_times:
                top = height - crop_size
            else:
                top = stepping * j
            im_crop = im.crop((left, top, left + crop_size, top + crop_size))
            # 输入保存地址
            im_crop.save(f'./xiAn_datasets/Amplitude-VV/{i}_{j}.png')
            number += 1
    print(number)