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