python-opencv裁剪tif遥感影像

在遥感影像变化检测作业中,由于影像过大,首先需要进行裁剪操作。通过切片指定[y0:y1, x0:x1]坐标,从原图像裁取出所需部分。参考博客介绍了利用Python的Pillow和OpenCV库进行图片裁剪的方法,同时提供了一个读取TIFF影像的辅助函数。" 133965595,13681461,寻找主元素的高效算法,"['算法', '数据结构']

最近在做关于遥感影像变化检测的作业,影像太大了,首先需要对遥感影像进行裁剪。

import cv2 as cv

src=cv.imread('before.tif')

print(src.shape)

cropImg = src[600:1100,600:1100] 
cv.imwrite("./be.tif",cropImg) 

print(cropImg.shape)

输出:

(15354, 32507, 3)
(500, 500, 3)

切片给出的坐标为需要裁剪的图片在原图片上的坐标,顺序为[y0:y1, x0:x1],其中原图的左上角是坐标原点。

参考博客:Python实现图片裁剪的两种方式——Pillow和OpenCV

补一个读文件函数,做笔记用

import cv2 

#读取文件函数,返回变化前,变化后以及变化结果
def get_files(filename):
    before=cv2.imread('./data/before.tif',-1)
    after=cv2.imread('./data/after.tif',-1)
    change_label=cv2.imread('./data/change_label.tif ',-1)
    # print(before.dtype)  原格式是unit8
    
    #转换成数组以及float16. 并不明白为什么要转换数据格式
    before = np.array(before).astype(np.float16)
    after = np.array(after).astype(np.float16)
    chang
遥感影像降位技术通常指的是将高分辨率的遥感影像通过一定的算法或处理手段,降低其空间分辨率、光谱分辨率或时间分辨率,以满足特定应用需求的过程。这种操作可能用于数据压缩、预处理、快速浏览、模型输入适配等场景。 ### 1. 遥感影像降位的主要技术方法 - **空间分辨率降位** 空间分辨率降位是将高分辨率图像转换为低分辨率图像的过程,常用的方法包括最近邻插值、双线性插值、双三次插值以及更高级的深度学习超分辨率重建反过程(如使用卷积神经网络进行下采样)[^2]。 - 示例代码(使用GDAL进行空间降位): ```bash gdal_translate -outsize 50% 50% input.tif output_50pct.tif ``` - **光谱分辨率降位** 光谱降位是指减少图像波段数量的过程,常用于多光谱或高光谱影像向RGB影像或其他简化波段组合转换。例如,使用主成分分析(PCA)或选择特定波段合成真彩色/假彩色图像。 - 示例代码(使用QGIS或ENVI选择特定波段): - 在QGIS中可通过“图层属性 -> 波段设置”更改显示波段。 - ENVI支持波段子集提取功能。 - **时间分辨率降位** 时间分辨率降位主要指对时间序列遥感影像进行采样,保留关键时相信息。可以通过时间聚合(如平均、最大值合成)、时间间隔重采样等方式实现。 ### 2. 常见处理工具与平台 - **GDAL(Geospatial Data Abstraction Library)** GDAL 是一个开源的地理空间数据处理库,广泛用于遥感影像的格式转换、投影变换、分辨率调整等任务。 - 支持命令行操作和编程接口(C++, Python等)。 - **QGIS** QGIS 提供了图形化界面支持遥感影像的空间降位、波段管理、渲染设置等功能,适合非编程用户使用- **ENVI(Environment for Visualizing Images)** ENVI 是专业的遥感图像处理软件,提供了多种降维、降位、分类和增强工具,适用于科研与工程应用。 - **SNAP(Sentinel Application Platform)** SNAP 主要用于处理欧洲空间局(ESA)提供的哨兵卫星数据,支持影像裁剪、重采样、波段运算等功能。 - **Python + Rasterio + Scikit-image** 结合Python生态中的Rasterio、Scikit-image、OpenCV等库,可以灵活实现遥感影像的降位处理。 - 示例代码(使用Rasterio和OpenCV进行降采样): ```python import rasterio import cv2 import numpy as np with rasterio.open('input.tif') as src: img = src.read() profile = src.profile # 假设img为单波段图像 resized_img = cv2.resize(img[0], (img.shape[2]//2, img.shape[1]//2)) with rasterio.open('output_lowres.tif', 'w', **profile) as dst: dst.write(resized_img[np.newaxis, :, :]) ``` ### 3. 深度学习在遥感影像降位中的应用 随着深度学习的发展,一些基于卷积神经网络(CNN)的方法也被用于遥感影像的降位任务,尤其是在图像压缩和特征保留方面。例如: - 使用U-Net架构进行图像压缩与重建; - 利用Autoencoder结构提取低维表示后还原图像; - 使用GAN进行图像风格迁移的同时完成分辨率调整。 这些方法在保持图像语义信息的前提下实现了高效的降位处理,但需要大量训练数据和计算资源。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值