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

2023-12-08 16:36

本文主要是介绍遥感深度学习:如何读取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),即具体指定各个维度上移动的步幅)。

这篇关于遥感深度学习:如何读取TIFF文件和切片成256*256?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/470567

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码

利用Python实现添加或读取Excel公式

《利用Python实现添加或读取Excel公式》Excel公式是数据处理的核心工具,从简单的加减运算到复杂的逻辑判断,掌握基础语法是高效工作的起点,下面我们就来看看如何使用Python进行Excel公... 目录python Excel 库安装Python 在 Excel 中添加公式/函数Python 读取