遥感影像数据处理-栅格影像边界提取
遥感影像变化检测中,边界提取是确保多时相影像对齐的关键步骤。传统方法通过影像四角坐标生成矢量面,但会包含无效数据区域(NaN值)。本文提出使用rasterio的read_masks函数识别有效数据区(非NaN值标记为255),结合shapes函数生成精确的多边形边界(如图示)。该方法避免了无效区域的干扰,能准确提取实际影像覆盖范围,为后续变化检测提供可靠数据基础。
功能需求
在遥感影像变化检测中,当我们已有一个时期的影像时,需要从一些数据网站上下载其他时期的影像,这时我们就要对影像的边界进行提取,然后基于这个边界矢量从其他网站上裁剪不同时期的影像,这样就能保证不同时期的影像在同一区域了。
解决思路
一个首先能想到的办法就是直接获取影像的四个角点的坐标,基于这四个点的坐标生成一个面矢量,虽然这种方法简单,但会有一定的弊端,对于影像中边界部分很多都是nan值,但是在获取边界范围时还是把这些区域算在内了,这样生成的矢量范围实际不是我们需要的。那么怎么去掉这些nan值区域呢?我们可以使用rasterio中的read_masks函数,这个函数会将有效数据区域(非nan值)设置为255,无效区域(nan值)设置为0 ,然后使用 shapes 函数就可以得到一个多边形几何对象,这个区域就是非nan值的有效数据区域。核心代码如下:
mask = src.read_masks(1)
shapes = features.shapes(mask, mask=mask, transform=src.transform)
原始影像如下图所示:
边界提取如下图所示:
获取本博客全部代码资料或咨询交流见 博主首页→个人简介
1、本博客相关代码;
2、指导代码运行;
3、同类任务咨询交流;

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)