2020年9月12日 星期六

QGIS 操作多光譜

每次發現多光譜的影像無法直接用相片瀏覽器打開,一整個就是眼神死😪😪😪,在俊毅的幫忙之下開始使用QGIS來看影像,自己可以疊合出NDVI的照片,總算知道自己沒有那麼笨,可以做一點基礎的工作。今天的目的是完成打開影像、套疊NDVI、轉成XYZ格式的練習,之後來試試使用Python進行。

這裡面最主要是使用Tool box 裡面的兩個工具,Raster calculator 可以進行波段的計算,長出具有特色的波段圖層(例如NDVI, NBI....),Rearrange Bands 把我們感興趣的波段匯出,這裡我選擇xyz產出習慣處理的資料格式。

有關影像

這邊使用的是正射過的影像為案例,鏡頭是MicaSense的RedEdge-MX,屬於5波段的多光譜相機,總共有藍光(475 nm, 20 nm width)、綠光(560 nm, 20 nm width)、紅光(668 nm, 10 nm width)、紅邊(717nm, 10 nm width)、近紅外光(840 nm, 40 nm width)。

操作的時候會有5個band,band 1 是波長最短的藍光,依序到波長最長的進紅外光(band 5)。

打開影像

用QGIS打開影像,一般的RGB影像(左圖)看起來就是舒舒服服,可是多光譜影像(右圖)長得麻麻喳喳的,越看越懷疑自己眼睛業障重。
我發現在QGIS可以設定波段的呈現,但似乎怎麼調都怎麼怪。

 Raster calculator - 波段疊加

在Tool box 裡面有一個 raster calculator,可以用來進行波段的套疊,打開後就可以選擇波段進行計算,我們發現這裡面有一個NDVI的功能,點了add之後就會跑出一個對話視窗,選擇NIR是第5個波段,Red是第3個波段。


點選確認之後,就會發現Expression 的地方會變成
(0808多光譜正射@5 - 0808多光譜正射@3) / (0808多光譜正射@5 + 0808多光譜正射@3)
之後也可以直接輸入公式,來呈現我們要的波長疊合方式。
科普一下,NDVI = (NIR - R) / (NRI + R) ,越健康的植物越會反射紅外光,因此越接近1。

這邊有一個bug,Reference layer(s)的地方一定要輸入參考圖層,作為CRS的選擇,雖然它叫做optional,但是不選擇就會有錯誤訊息,這根本就是:「沒關係,我沒有強迫你一定要選擇哦。」決定不選就發現爆掉了,有夠機歪的啦。

算完之後預設是灰階的圖片,這裡有一個小技巧,在圖層屬性的Symbology,選擇 single band pseudocolor,選擇紅黃綠的色階,把最小值設定為0,最大值設定為1。

將~將~將~,一張看起來舒服的NDVI照片就出現了。


單一波段匯出

先前測試的結果,轉成xyz之後檔案會變得非常大(大概有5G,根本打不開),我們就選定中間都是鳳梨的區域來進行。
先數化圖層
再從Raster -> Extraction -> Clip Raster by Mask Layer,記得選擇多光譜的圖層和數化的polygon進行裁剪。
套疊RGB一下,我們感興趣的區域就是這麼大

重點就是 Rearrange Band

選擇Tool box 裡面的 Rearrange Bands,可以將波段分開來
我們就從藍光開始做起,選擇Band 1

副檔名選擇.xyz
經過來漫長的等待後,就順利的產製檔案

用notepad打開來看看

果然資料就是用XYZ的方式呈現,我有發現,QGIS會把圖片修正為長方形,雖然原本我們所切割的圖層面積較小,但它似乎會用圖層最邊界的XY座標進行計算,目前還想不到破解方法。



















沒有留言:

張貼留言

肥料成分計算

很早以前肥料是先灰化再進行成分分析,因此對於那一些不揮發的元素,通常會使用氧化物的型態進行表示,例如磷就使用P2O5 、鉀則使用K2O 肥料1,肥料品目為硝酸鈣 (Calcium nitrate) 銨態氮              1.26 % 硝酸態氮        13.5...