PIE-Engine实践篇:详解去云操作(一)
PIE-Engine是基于容器云技术构建的面向地球科学领域的时空遥感云平台,其内部包含自动管理的弹性大数据环境,集成了多源遥感数据处理、分布式资源调度、实时计算、批量计算和深度学习框架等技术。PIE-Engine遥感计算云服务平台结合了海量遥感数据及计算资源,通过简单的代码即可快速实现复杂的影像运算,为地球科学领域的研究提供开放的数据与弹性算力支持。
常见的遥感影像如MODIS、Landsat、Sentinel-2等,在使用这些数据时,由于云、雪、阴影等的存在会导致影像运算时出现偏差,因此需要做去云操作。在PIE-Engine 遥感计算云服务平台中实现去云操作比较简单,可以在影像级别筛选含云量符合条件的影像,也可以在像素级别掩膜掉有云的像素,下面分别介绍。
影像级别去云
影像级别去云就是通过云量覆盖百分比属性筛选影像含云量,对于Landsat 8 TOA系列,云量覆盖百分比属性表示为“cloudCover”,可据此筛选出影像整体含云量在某个范围内的影像。
Landsat 8 TOA 影像属性字段
以“cloudCover”属性筛选Landsat TOA影像含云量,代码如下:
在对特定日期、特定的区域的影像进行云量筛选之前,共有9景符合条件的影像,含云量分别为0.04%、7.72%、5.54%、52.25%、3.37%、14.67%、10.26%、96.19%和13.13%,增加含云量≤5%的筛选条件后(lte: less than and equal),只有两景影像符合条件,含云量分别为0.04%和3.37%。
注意,不同影像集合,其云量覆盖百分比属性字段的表示不完全一样,如Landsat 8 C2 SR 影像集合,其云量覆盖百分比属性以“cloud_cover”表示,使用时应具体查看。
像素级别去云
像素级别去云方式主要有两种:一种是使用QA质量波段去云;另一种是使用算法去云,下面分别进行介绍。
1. 通过QA波段做按位与操作掩膜掉有云的像素
一些影像提供了QA波段来表示该影像的质量相关信息,如Landsat 8 TOA的“BQA”波段,其各比特位的含义如下表所示:
注意,不同影像集合,其QA波段的表示不完全一样,如Landsat 8 C1 SR的QA波段表示为“pixel_qa”,而Landsat 8 C2 SR的QA波段表示为“QA_PIXEL”,且不同影像集合QA波段的各比特位含义也不相同,使用时应具体查看。
了解了不同影像QA波段的比特位信息,下面我们介绍去云时用到的两个主要操作:
(1)bitwiseAnd:Image按位与运算,返回一个Image对象。核心是对二进制像素值做按位与运算(&),即相同为1,相异为0。
(2)位移运算符:(左移<<、右移>>),其中左移运算符(<<) 是按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补0。例如1<<4:即是先将1转换为二进制01,然后将01向左移4位,低位补0,得到010000(十进制为16)。
下面来介绍影像去云操作步骤,主要分为三步:
(1)筛选影像,获取指定波段。
(2)提取QA波段,将QA波段与(1<<4)(即00010000)进行按位与运算,根据Bit 4 Cloud比特位的含义,得到0为无云,1为有云的二值图;为得到无云掩膜,再对其进行判断(eq(0)),若等于0(无云),则结果为真,返回值为1(无云),得到无云掩膜。
(3)最后将原影像与无云掩膜进行叠加,得到去云后的影像。
2. 通过算法去云
对于Landsat TOA 系列,PIE-Engine遥感计算云服务平台提供了专用的去云函数:pie.Algorithm.Landsat8.cloudMask() ,以更为便捷的方式去云。
其内部封装了对以“BQA”表示的QA波段进行去云的操作,识别出是云(Bit 4 Cloud)或者为云的置信度比较高(Bits 5-6 Cloud Confidence)的区域。
虽然Bits 5和6一起表示云置信度,但只需和Bit 6按位与即可得到置信度比较高的区域。
使用时直接调用cloudMask()即可得到无云掩膜,主要步骤仍分为三步,具体代码如下:
理解了以上内容后,下次我们来分享Sentinel-2和MODIS的去云操作。
本次代码链接:
https://engine.piesat.cn/engine-share/shareCode.html?id=26218bc96b79450986b5a4a971762958