遥感深度学习:如何读取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

相关文章

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 读取

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3