用 QGIS 和 Orfeo ToolBox 進行物件導向影像分類 (OBIA)

qgis 進行 obia 影像分類與判定

物件導向影像分類 (Object-based Image classification) 是空間地理分析常用的技術之一,主要運作方式是透過機器學習 (Machine learning) 的監督式學習 (Supervised learning) 來快速判斷並進行地物分類。

 

而除了 ArcGIS、GRASS 有內建這類工具之外,我們也可以用免費的 Orfeo ToolBox (OTB) 工具箱來執行這項任務。雖然它沒辦法做到人工智慧部門拿麼厲害的影像判識,但對多數於 GIS 工作人員來說已經算是相當不錯的工具了。

 

以下糊塗流浪貓將用之前 WebODM 拼接出來的 Aukerman 地圖,來示範 OTB 工具箱的監督式物件導向影像分類工作流程。

 

 

於系統上安裝 OTB 工具箱並內嵌至 QGIS

請參考安裝 Orfeo ToolBox (OTB) 工具箱並將其內嵌至 QGIS教學。

 

 

建立地物目標向量圖徵與進行光譜區域統計

可參考這篇 用 QGIS 進行區域統計,計算影像 RGB 光譜數值建立均勻分佈的網格圖徵,或採用下個步驟的工具進行地物分割圖徵。

 

 

用 OTB 建立正射影像的地物目標分割

這個步驟的主角 LargeScaleMeanShift 整合了 MeanShiftSmoothing、LSMSSegmentation、LSMSSmallRegionsMerging 與 LSMSVectorization 這四項工具,讓使用者更快速方便的產出像樣的地物目標向量圖徵。

 

雖然這個工具會很體貼的幫我們把 RGB 光譜數值一併算好,但它運算的來源是我們前面降低解析度的地圖,因此建議移除欄位數值後,用 Zonal statistics 對原始影像進行統計分析。

 

預設值不一定能獲得最佳結果,多數情況還是要使用者自行反覆測試與調整參數。

 

 

用點圖徵選取訓練樣本和標籤

在地圖上用點圖徵來挑選訓練樣本,並建立 cid 欄位來為樣本命名。以本例來說,湖水的 cid 代號為 1、樹林為 2、草皮為 3... 並依此類推。

 

接著用 Extract by location 將前面的地物分割向量圖徵取出,然後以 Join attributes by location 工具將點圖徵的 cid 欄位結合入樣本圖徵即可。翠大大

 

點圖層取樣

 

 

以 TrainVectorClassifier 進行機器訓練

  • Input Vector Data: 選擇目標圖層
  • Field name for training feautures: 選擇 RGB 光譜欄位
  • Field containing the class integer label for supervision: 選擇 cid 欄位
  • Classifier to use for the training: libsvm
  • Output model: .xml, .model, .txt 選擇存檔位置

 

 

進行 VectorClassifier OBIA 影像分類

  • Name of the input vector data: 選擇目標圖層
  • Model File: 輸入訓練檔案位置
  • Field names to be calculated: 選擇 RGB 光譜欄位

 


成果 

otb 工具箱物件導向影像分析結果

 

 

otb 工具箱物件導向影像分析結果

 

 

 

結語

本文只是粗略示範用 Orfeo ToolBox (OTB) 工具箱來進行 OBIA 物件導向影像分析的過程,由於影像中部份目標樣本不足 (房屋只有一棟) 的關係,因此多少會出現誤判的狀況。但草皮、樹林、石子路和柏油路等物件因為樣本數夠多且差異較大,因此正確率相對比較高。

 

而訓練方式除了用 libsvm 這套由台大林智仁 (Chih-Jen Lin) 副教授設計的分析工具之外,也可以用 ANN 或 KNN 來執行,通常能獲得不錯的結果。

 

 

 

延伸閱讀

Orfeo ToolBox (OTB) 工具箱並將其內嵌至 QGIS

更多 QGIS

在 Linux Mint 上用 WebODM 進行影像拼接實測結果

LargeScaleMeanShift

LibSVM

Support-vector machine

 

 

 

留言