遥感深度学习:如何读取TIFF文件和切片成256*256?

01 前言

最近打算认真从头开始学习深度学习和遥感结合的相关内容,主要通过Python进行处理。此前用深度学习进行遥感相关的学习一直都是用 tensorflow3.0 框架,但是考虑很多因素我后面打算换用 Pytorch 进行学习。好在tensorflow我只是浅尝辄止,不然还真有点不舍。

02 如何读取TIFF文件

2.1 安装GDAL

读取TIFF文件我们就用GDAL吧,安装稍麻烦。如果通过pip方式无法安装模块,可通过下方链接下载Wheel文件:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#

下载后通过pip install wheel文件绝对路径即可安装。如果想要安装在虚拟环境,需要先进入对应虚拟环境路径activate再进行pip安装。

在这里插入图片描述

2.2 读取TIFF文件

这个就仅仅给出代码吧,其它时间有限自行理解。

一个波段一个波段的读取:

def read_img(img_path):"""该函数用于读取TIFF文件中各个波段数据集:param img_path: TIFF文件路径:return: 多波段数据集(ndarray, [波段数, 行数, 列数])"""# 打开文件ds = gdal.Open(img_path)if not ds:return False# 读取bands = []for band_ix in range(1, ds.RasterCount + 1):band = ds.GetRasterBand(band_ix)band_data = band.ReadAsArray()bands.append(band_data)bands = np.asarray(bands)return bands

当然,一下全部读取也可以:

def read_img(img_path):"""该函数用于读取TIFF文件中各个波段数据集:param img_path: TIFF文件路径:return: 多波段数据集(ndarray, [波段数, 行数, 列数])"""# 打开文件ds = gdal.Open(img_path)if not ds:return Falsebands = ds.ReadAsArray()return bands

03 如何切片?

切片你可以用numpy的 from numpy.lib.stride_tricks import as_strided 自己写(谨慎使用该函数),当然或者完全自己写。但是运行的效率自然无法保证。

这里我们用 skimage 模块的 view_as_windows 函数进行切片,不仅支持高维度切片并且效率非常高。

import numpy as np
from skimage.util import view_as_windowsdef make_chips(ds, window_shape, stride, stacking=False):"""对数据集进行切片处理:param ds::param window_shape: 滑动窗口大小:param stride: 步幅大小:return: 返回切片后的数据"""chips = view_as_windows(ds, window_shape, step=stride)chips = np.squeeze(chips)  # 去除维度上数值为1的所有维度if stacking:chips = np.reshape(chips.shape[0] * chips.shape[1], -1)return chips

使用:

img_paths = glob.glob(os.path.join(in_dir, '**', 'GF2*MSS*.tiff'), recursive=True)
for img_path in img_paths:# 读取data = read_img(img_path)# img_transform = get_transform(img_path)# 切片chips = make_chips(data, (4, 256, 256), 256, False)

data的shape为(4, 6908, 7300),我需要切片为(4,256, 256),那么滑动窗口大小设置为(4, 256, 256),窗口在各个维度上移动的步幅大小这里设置为256(当然你也可以设置为(4, 256,256),即具体指定各个维度上移动的步幅)。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习深度强化学习---第1部分----RL介绍、基本模型、Gym介绍

文章目录 1.1节 强化学习简介1.2节 强化学习的模型1.3节 Gym介绍 视频所在地址:深度强化学习的理论与实践 经典的强化学习有三种:1、基于动态规划的强化学习、2、基于蒙特卡洛算法的强化学习、3、基于时序差分的强化学习,以上3种方法分为第2、…

错误记录 apt --fixed-broken install

1.报错 E: Unmet dependencies. Try apt --fix-broken install with no packages (or specify a solution). 无法直接运行apt --fix-broken install解决 直接报错 没有输入y那个步骤 无法直接使用 sudo apt-get remove 无法使用 sudo dpkg -r 删除 查了很多解决方式无法…

10.仿简道云公式函数实战-逻辑函数-XOR

1. XOR函数 XOR 函数可返回所有参数的异或值。异或的含义是:两个逻辑值相同,返回 false,两个逻辑值不同,则返回 true。 2. 函数用法 XOR(logical1,logical2, …) 3. 函数示例 如,判断两个答案值是否一致时&#x…

机器学习顶会 NeurIPS 2023 6篇获奖论文速览

噔噔!NeurIPS 2023 今天开奖啦! 防止有些同学不太清楚这个会议,我先简单介绍一下:NeurIPS是机器学习领域的顶级会议,与ICML,ICLR并称为机器学习领域难度最大,水平最高,影响力最强的…

AOP跨模块捕获异常遭CGLIB拦截而继续向上抛出异常

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、BUG详情 1.1 报错信息 1.2 接口响应信息 1.3 全局异常处理器的定义 二、排查过程 三、解决方案 四、总结 前言 最近&…

Web安全之XXE漏洞原理及实践学习

一、原理: XXE漏洞全称即XML外部实体注入漏洞。 攻击者强制XML解析器去访问攻击者指定的资源内容(可能是系统上本地文件亦或是远程系统上的文件),导致可加载恶意外部文件,利用file协议造成文件读取、命令执行、内网端口扫描、攻击内网网站等…

Linux高级管理--安装MySQL数据库系统

MySQL服务基础 MySQL.是一个真正的多线程、多用户的SQL数据库服务,凭借其高性能、高可靠和易于使 用的特性,成为服务器领域中最受欢迎的开源数据库系统。在2008年以前,MySOL项目由MySQL AB公司进行开发,发布和支持,之后…

4年外包终上岸,我只能说这类公司能不去就不去......

我大学学的是计算机专业,毕业的时候,对于找工作比较迷茫,也不知道当时怎么想的,一头就扎进了一家外包公司,一干就是4年。现在终于跳槽到了互联网公司了,我想说的是,但凡有点机会,千万…

广州芳村超5亿元“金融茶”爆雷,涉案金额高达5亿元。

昌世茶是一家茶叶厂商,在芳村茶叶市场开展业务。他们通过多位销售人员宣传其茶叶具有巨大的投资价值,并承诺高价回收。投资者被诱以高价购买茶叶,但随后发现价格迅速下跌,且昌世茶不再履行回收承诺。许多投资者因此遭受重大损失。…

靠着这份280页的前端面试指南,拿下了字节跳动offer

笔者是在今年秋招面试的头条教育线,顺利拿到了offer,把还记得的东西写下来,供大家参考一下。 一面 tcp 和 udp 的区别和使用场景?quic 基于 udp 怎么保证可靠性?讲一下同源策略和跨域方案?CORS 的几个头部…

MeterSphere实战(一)

MeterSphere是一位朋友讲到的测试平台,说这东西是开源的,因为我是做测试的,很乐意了解一些新鲜事物。在我看来,测试就是要专注一些领域,然后要啥都会一点点,接着融会贯通起来,这样就可以万变不离…

如何在 Git 中创建分支

1.打开命令行终端,执行以下命令来查看当前分支列表: git branch 显示当前仓库中的所有分支,以及当前所在的分支(显示为带有星号 * 的分支)。 2.创建一个新的分支,可以使用以下命令: git bran…