跳至內容
AI Segmentation
QGIS
教學

QGIS 游泳池偵測:5 種方法

發布於 更新於

有後院的郊區住宅,由空中俯瞰,自動偵測游泳池前後 (after)
有後院的郊區住宅,由空中俯瞰,自動偵測游泳池前後 (before)
ImageryDetected
拖動比較
在 Long Island 的郊區街區上,以 Google Satellite 影像做一次自動偵測。40 個游泳池以洋紅色框出,包括樹下的小型游泳池。拖曳滑桿即可比較。

要在 QGIS 中偵測游泳池,先查 OpenStreetMap:「向量」→「QuickOSM」→「QuickOSM…」,key leisure,value swimming_pool。圖資稀疏的地方,就跑分割模型,或在網格計算器對藍色設門檻。用哪一種,由地面解析度決定。

您的輸入方法花費
OSM 圖客活躍的任何地區方法 1,用 QuickOSM 查 leisure=swimming_pool免費,一次查詢
RGB 正射影像和數百個游泳池方法 2,分割模型免費外掛要自備模型或 GPU。雲端外掛有免費額度,之後要訂閱
5 到 30 cm 的 RGB 正射影像方法 3,在網格計算器做色彩門檻免費,QGIS 核心內建
有近紅外或短波紅外波段的影像方法 4,算水體指數再設門檻免費,衛星影像看不到庭院游泳池
多光譜影像和一個下午方法 5,SCP 或 dzetsaka外掛免費,花的是您畫訓練區的時間

每個版本、價格和選單路徑,都是在 2026 年 9 月 3 日對著 QGIS 3.44 手冊和各工具說明文件讀過的。

方法 1:拿別人已經畫好的游泳池

OpenStreetMap 有 3,036,801 個標 leisure=swimming_pool 的物件,其中 2,731,704 個是帶真實幾何的 ways,這是 2026 年 9 月 3 日 taginfo 的數字。

開啟 QuickOSM 並查詢

「向量」→「QuickOSM」→「QuickOSM…」,會查詢 Overpass API。key leisure,value swimming_pool,範圍用畫布範圍或指定的行政區。

保留多邊形,篩出庭院

以節點標記的游泳池沒有面積,所以請取多邊形圖層。其中有 1,808,809 個游泳池同時帶有 access=private,這就是篩出後院游泳池的條件。

leisure=swimming_area 是另一種物件:湖裡或海邊指定的游泳區。

衛星影像上的一個郊區街區,三個游泳池上有藍色的 OSM 游泳池多邊形,另外七個看得見的游泳池卻完全沒有多邊形。
三個有測繪,七個沒有。圖客會畫公共與飯店的游泳池,私人庭院的游泳池則沒人費心,卻正是稅務機關在找的。

**適合時機:**您要的是公共和商業游泳池。

**不適合時機:**工作是要找出沒人申報的。

方法 2:分割模型

分割模型讀形狀和上下文,所以同樣顏色的游泳池和帆布分得開。我們自己做的就是這一種,AI Segmentation。這一節講的是我們自己的工具。

安裝並登入

外掛管理員,QGIS 3.22 或更新版本。不用 GPU,不用模型權重。註冊帳戶,領免費額度,之後每月 €39,未稅。

畫出區域、輸入關鍵字、篩選

輸入 swimming pool 後執行。多邊形會以專案 CRS 回傳,帶有面積、周長和信心度。排序後,刪掉錯的。

我們調參表裡的兩個數字,執行時讀到。游泳池偵測約要求每像素 0.13 m、圖磚邊長最多 300 m,粗過這個,游泳池會糊進露台裡。swimming pool 的檢視從 0.20 信心度開始,building 則是 0.30,因為游泳池遮罩的分數本來就比屋頂低。

QGIS 中航照影像上的一個住宅街區,每個後院游泳池都填上各自的顏色,屋頂和庭院則不受影響。
一個區域、一個關鍵字,在 20 cm 影像上。每個游泳池是一個獨立的多邊形,帶有面積,可像任何向量圖徵一樣編輯。

一個限制:加蓋的游泳池到不了模型,所以一定漏。兩種雲端模式都會把影像送到我們在歐盟的伺服器。

同一三座花園的兩張對照圖。在冬季影像中,兩個游泳池帶有青色偵測框,而被圈起、蓋著棕褐色覆蓋物的游泳池則沒有。在夏季影像中,被圈起的位置是開放的藍色水面。
相同的花園,兩張影像。被圈起的游泳池在冬季蓋著覆蓋物,偵測直接略過它。在整個圖磚中,同一提示在夏季影像中找到 58 個游泳池,在冬季影像中只找到 2 個,不過這兩張影像不僅季節不同,也來自不同供應商。

同樣做這件事的還有四家,都是 2026 年 9 月 3 日讀的。

工具安裝什麼GPU帳號影像是否離開您的電腦游泳池支援費用
Deepness外掛管理員、它的 Python 套件、一個 ONNX 模型可選,CPU 能跑不用不用看您給什麼模型免費
Geo-SAM外掛管理員、相依套件、模型權重可選不用不用一次點選或框選一個物件免費
samgeo一個 Python 套件,沒有 QGIS 面板建議有不用不用可寫腳本,沒有游泳池類別免費
Mapflow外掛管理員不用要雲端服務是,企業版提供本地部署專用 Swimming pools 模型,隨選提供點數,付費
AI Segmentation(我們的)外掛管理員不用要兩種雲端模式要,地端模型不用輸入 swimming pool免費額度,之後每月 €39,未稅

**適合時機:**游泳池多到您不想手動描繪。

**不適合時機:**影像不能離開您的電腦。用 Deepness 或 Geo-SAM。

要掃圖並由別人為公開精度數字背書,就用 Mapflow。它有專用的 Swimming pools 模型,隨選提供,旁邊標著 F1 高於 0.95。游泳池的數字,我們自己不公布。

方法 3:在網格計算器對藍色設門檻

先用投影坐標系工作,因為下面有三步要用圖層單位按面積篩選。

這是 QGIS 核心最接近的做法。打開「影像」→「網格計算器…」,波段寫法是 layer_name@band_number。在 RGB 正射影像上,下面這組會留下又亮又藍的像素:

("ortho@3" > 90) AND ("ortho@3" - "ortho@1" > 25) AND ("ortho@3" - "ortho@2" > 10)

這組數字是我在 20 cm 正射影像上調的。取二十個游泳池像素和二十個屋頂像素,自己再移動。

用「影像」→「轉換」→「影像向量化(影像轉向量)」轉成向量,再用 native:extractbyexpression 篩選:面積用 $area > 6 AND $area < 400,形狀用我自己的比值 4 * pi() * $area / ($perimeter ^ 2) > 0.5,因為 QGIS 沒有內建的緊湊度函數。

一張郊區正射影像,網格計算器產生的紅色遮罩蓋住每個游泳池、一個藍色金屬屋頂,以及柴堆上的一塊藍色防水布。
上面的規則,在 20 cm 影像上。它找到每個露天游泳池,也找到一個藍色金屬屋頂和一塊防水布。

RGB 值會跟著太陽角度和曝光跑,在一條航線調好的門檻,換一條就破功。色相和飽和度撐得比較久,用空間運算工具箱的 i.rgb.his,它「transforms raster maps from RGB (Red-Green-Blue) color space to HIS (Hue-Intensity-Saturation) color space」。

兩種規則都不知道那個藍色東西是什麼。

  • **陰影。**背陰的屋頂斜面看起來深藍。提高下限,樹下的游泳池就沒了。
  • **藍色屋頂和帆布。**又亮又藍,形狀還常常剛好。
  • **深色池底和發綠的池水。**黑色池底看起來像柏油,長藻看起來像草地。我的規則兩個都漏掉。
  • **加蓋的游泳池。**根本不在影像裡。
三張緊密裁切圖並排:花園上的藍色防水布、陰影中的屋頂斜面,以及花園中的深色池底游泳池。
防水布和陰影通過了顏色規則,但本不該通過。深色池底游泳池沒有通過,但本不該失敗。裁切圖來自 Cape Coral, Florida 的 20 cm 影像。

**適合時機:**同一張正射影像,您會人工檢查。

**不適合時機:**多條航線拼起來的鑲嵌影像。

方法 4:有波段就用水體指數

再檢查解析度。法國游泳池協會說新建地下游泳池是 29 到 30 m²,在 10 cm 正射影像上是 3,000 個像素,在 10 m Sentinel-2 波段上是三分之一個像素。

水幾乎完全吸收近紅外,所以在 NIR 波段裡水是黑的,藍色屋頂還是亮的。

  • NDWI,McFeeters 1996:(Green - NIR) / (Green + NIR)。在 Sentinel-2 上是 (B3 - B8) / (B3 + B8)。
  • MNDWI,Xu 2006:(Green - SWIR) / (Green + SWIR)。在 Sentinel-2 上是 (B3 - B11) / (B3 + B11)。把 NIR 換成 SWIR 可以壓住建築地,在郊區這點很關鍵。

大於零取出來,轉向量,照方法 3 篩選。Rodríguez-Cuenca 和 Alonso 在 2014 年為這個工作調過一個正規化游泳池差異指數。

Sentinel-2 的 B3 和 B8 是 10 m,B11 是 20 m,所以 30 m² 的游泳池永遠分不出花園。對住宅街區跑 MNDWI,只會回傳城邊的水庫,其他什麼都沒有。

同一個郊區的兩張對照圖:一張有十一個看得見游泳池的 20 cm 正射影像,以及同一範圍的 Sentinel-2 MNDWI,呈現均勻的灰色,看不到任何游泳池。
左邊十一個游泳池,右邊一個也沒有。同一範圍、同一週。30 m² 的游泳池對 10 m 的感測器來說,從來不是一個物件。

**適合時機:**正射影像在 50 cm 或更細且有 NIR 波段。它直接打敗色彩門檻。

**不適合時機:**只有三波段 RGB,或用 Sentinel-2 找庭院游泳池。

方法 5:在自己的影像上訓練分類器

分類器從您畫的範例學游泳池像素,所以固定門檻會破功的鑲嵌影像,它撐得住。

Luca Congedo 的 Semi-Automatic Classification Plugin 是常用選擇。在 SCP dock 裡建訓練輸入(.scpx),畫 ROI,再到主視窗跑 SCP > Band processing > Classification。六種演算法,從 Minimum Distance 到 Random Forest。9.0.4 版在 2026 年 7 月 11 日發布,但它宣告 QGIS 最低版本是 3.99,所以 QGIS 3.x 還是裝 8.5.0。

Nicolas Karasiak 的 dzetsaka 5.0.11 比較輕:十一種分類器,它的 Gaussian Mixture Model 不用 scikit-learn 也能跑。

藍色屋頂類和陰影類也要畫。分類器只會排除您給它看過的東西。

同一郊區的兩張對照圖:一張 20 cm 正射影像,以及其 minimum distance classification,游泳池類別以青色顯示,其中一片藍灰色屋頂比旁邊兩個真正的游泳池還要大。
對同一張 20 cm 正射影像進行 minimum distance classification,游泳池類別以此圖磚中的 58 個游泳池訓練。在整個圖磚中,被判為游泳池的像素有 46% 並不是游泳池,其中大多是藍灰色屋頂,就像中間這一塊。

**適合時機:**多航線或多季節,工作流程會重複用。

**不適合時機:**一張正射影像、跑一次。兩個都是分像素,不是分物件,所以還是要轉向量再篩選。

五種方法並排

您有什麼方法
圖資完整的城鎮,公共游泳池就夠方法 1,QuickOSM
幾百個游泳池,不想清假陽性方法 2,分割模型
一張優於 30 cm 的 RGB 正射影像方法 3,色彩門檻再篩選
帶 NIR 波段的正射影像方法 4,NDWI
Sentinel-2 或任何 10 m 影像庭院游泳池都不行。去找更細的影像
多航線、會重複用的流程方法 5,SCP 或 dzetsaka

結論

先看解析度,再看波段,最後看您能吞多少人工檢查。

30 m² 的游泳池在 10 m 解析度下永遠分不出花園,所以不管跑什麼指數,Sentinel-2 都不是找庭院游泳池的感測器。

色彩門檻會把街區上所有藍色的東西都撿回來,所以看結果之前,先按面積和緊湊度篩選。

加蓋的游泳池不在影像裡,所以這頁的方法都找不到,什麼價格都改變不了。

偵測結果是候選。無論跑哪一種,動圖層之前,先打開信心最低的十個多邊形看過。

在 QGIS 免費試用,不需信用卡

常見問題

QGIS 自己能偵測游泳池嗎?

沒有這個功能。QGIS 核心給的是網格計算器、轉向量和向量篩選,也就是方法 3。要把游泳池認成物件,需要外掛。

Sentinel-2 影像找得到庭院游泳池嗎?

找不到。綠光和近紅外是 10 m 波段,短波紅外是 20 m,30 m² 的游泳池只有三分之一個像素。請用 30 cm 或更細的航照影像。

藍色屋頂為什麼一直被當成游泳池?

漆過的金屬屋頂比池水更亮更藍,而色彩規則只認顏色。按面積和緊湊度篩選,改用 NDWI,或用模型。

從航照影像偵測游泳池合法嗎?

把偵測結果接到地籍和屋主姓名,就變成個人資料,在歐盟要有 GDPR 的合法依據。稅務機關有寫進法律的依據,一般公司通常沒有,串接之前先問資料保護長,模型的輸出也絕不能是開帳單前的最後一步。

精度可以期待多少?

單一數字一定是假的,跟您的影像和季節走。20 cm 的露天游泳池回來得不錯,加蓋的這裡全部漏掉,藍色屋頂就是您要手動刪除的。

偵測結果已經是可以直接採取行動的游泳池清單嗎?

法國稅務單位用 IGN 航照影像跑過一次,最後還是逐一發函給屋主。它的 Foncier innovant 試點對 2022 年九個省的 20,356 個游泳池課稅,金額 €980 萬,2023 年全國跑一次,又找到 150,000 個該課稅卻漏列的游泳池。偵測結果只是候選,把它接到地籍和人名,就變成個人資料。

篩選的完整步驟,看 QGIS 建物輪廓偵測。遮罩後面的清理,看 QGIS 網格轉向量。要在整個市鎮的影像上重複同樣的偵測再篩選流程,AI Agent 能在 QGIS 中依一句指令執行這些步驟。其餘的在 QGIS AI hub。