Přeskočit obsah

Neřízená klasifikace


Cíl cvičení

  • Naučit se klasifikovat optická družicová data pomocí neřízené klasifikace s cílem vytvořit vrstvu pokrytí území (land cover)
  • Porozumět rozdílu mezi neřízenou a řízenou klasifikací
  • Pochopit princip neřízené klasifikace

Základní pojmy

Klasifikace obecně

  • Klasifikaci lze obecně definovat jako seskupování vzájemně si podobných prvků do určitých skupin (tříd, kategorií).
  • V dálkovém průzkumu Země klasifikace představuje proces, při kterém se jednotlivé pixely originálního numerického záznamu zařazují do tříd, a vzniká tak klasifikovaný snímek. Originální obrazový záznam se tak stává tematickou mapou (nejčastěji mapa land cover).
  • Přiřazování pixelů do tříd probíhá na základě tzv. příznaků (u optických dat mluvíme o spektrálních příznacích, tj. hodnoty spektrální odrazivosti různých povrchů).
  • Příznaky tvoří tzv. příznakový prostor, který je definován všemi pásmy, v nichž lze naměřit nebo vypočíst určitou charakteristiku.

Zjednodušené schéma klasifikace, kdy se z multispektrálních dat tvoří tematická mapa

Dělení klasifikace

Klasifikaci obrazových dat můžeme dělit dvěma způsoby. První způsob klasifikaci dělí podle toho, kdy do ní my jakožto operátor vstupujeme. Mluvíme poté o následujících typech klasifikací:

  • Neřízená klasifikace - Na začátku zadáváme pouze počet tříd, které chceme klasifikovat. Co ale dané třídy ve skutečnosti představují, musíme určit až dodatečně po samotné klasifikaci.
  • Řízená klasifikace - Na začátku určujeme konkrétní třídy, které chceme klasifikovat. Klasifikátoru zároveň poskytujeme trénovací množiny, na kterých se klasifikátor jednotlivé třídy "učí".
  • Hybridní klasifikace - Kombinuje dohromady neřízenou a řízenou klasifikaci.

Druhým způsobem je dělení klasifikace podle toho, zda do tříd přiřazujeme jednotlivé pixely nebo skupiny pixelů. Mluvíme pak o následujících typech klasifikací:

  • Pixelová (per-pixel) klasifikace - Ke konkrétní třídě jsou postupně přiřazovány jednotlivé pixely.
  • Objektová klasifikace - Do konkrétních tříd nejsou přiřazovány jednotlivé pixely, ale skupiny pixelů.

Princip neřízené klasifikace

Většina algoritmů neřízené klasifikace je založena na shlukové analýze. Ta iterativním způsobem slučuje pixely do shluků se stejnými či podobnými spektrálními vlastnostmi. Základním předpokladem tedy je, že pixely, které patří do jedné třídy, jsou ve vícerozměrném prostoru přirozeně blízko sebe a naopak pixely odlišných skupin, které představují povrchy lišící se svým spektrálním chováním, jsou dobře separované. Vytvořené shluky se nazívají spektrální třídy. Tyto spektrální třídy ale nemají požadovanou informační hodnotu a teprve jejich interpretací a postupným spojováním vzikají třídy informační.

V rámci tohoto cvičení si ve SNAP vyzkoušíme neřízenou klasifikaci pomocí metody K-Means Cluster Analysis. Ta po uživateli před spuštěním požaduje pouze zadání konkrétního počtu shluků a počet iterací. Postup výpočtu lze pak shrnout do následujících kroků:

  1. Definování počtu výsledných shluků a určení počtu iterací
  2. Určení počáteční polohy centroidu pro každý shluk (pokud není poloha explicitně zadána, jsou centroidy rozmístěny rovnoměrně po diagonále příznakového prostoru)
  3. Postupné přiřazení všech pixelů k tomu shluku, k němuž mají v příznakovém prostoru nejblíže
  4. Výpočet nové polohy centroidu pro každý shluk na základě nově přiřazených pixelů
  5. Opakování kroků 3. a 4. dokud nenastane jedna z následujících momžností:
    1. Bylo dosaženo jednoho z kritérií konvergence, tj. poloha centroidů či počet pixelů zařazených do jednotlivých shluků se již výrazně nemění
    2. Bylo dosaženo maximálního počtu iterací zadaného uživatelem

Princip iteračního postupu shlukování

Následně pak uživatel již samostatně provádí následující dva kroky, které jsou stejné pro všechny metody neřízené klasifikace.

  1. Přiřazení konkrétního významu každému tzv. stabilnímu shluku (spektrální třídě)
  2. Vytvoření informačních tříd spojováním tříd spektrálních

Neřízená klasifikace ve SNAP

Neřízenou klasifikaci ve SNAP najdeme v menu RasterClassificationUnsupervised Classification, kde poté zvolíme jednu ze dvou nabízených možností. V našem případě zvolíme K-Means Cluster Analysis.

Otevře se nám nové okno, kde nejprve v záložce I/O Parameters zvolíme Source Product, což bude náš převzorkovaný subset (do výpočtu musí vstupovat pásma se stejným prostorovým rozlišením), a dále pak název nového produktu, zda ho chceme uložit atd. V záložce Processing Parameters poté nastavíme parametry algoritmu, jimiž jsou počet spektrálních tříd (Number of clusters) a počet iterací (Number of iterations). Parametr Random seed můžeme nechat tak, jak je. Ten pouze náhodně generuje počáteční shluky. V Source band names nakonec vybereme jednotlivá pásma, která budou do klasifikace vstupovat (můžeme použít např. i jednotlivé spektrální indexy, pokud je máme v produktu uloženy). Pokud bychom chtěli klasifikaci provést jen na určité části území, můžeme použit ROI-mask k vybrání konkrétní masky.

 Pozn.

Výpočet může být v závislosti na vstupních parametrech a velikosti území časově trochu náročnější.

Po dokončení výpočtu se do Product Explorer přidá nový produkt, kde v Bands najdeme naší klasifikovanou vrstvu pod názvem class_indices.


Vliv počátečních parametrů na výsledek

Vcelku rozumná úvaha by byla nastavit Number of clusters na počet tříd, které na scéně doopravdy vidíme. Těmi mohou být například Zástavba, Holá půda, Zemědělské oblasti, Les a Vodní plocha (tříd je reálně samozřejmě víc, nicméně např. třídu Traviny jen těžko rozeznáme na datech Sentinel-2 od třídy Zemědělské oblasti). Zkusme tedy začít s těmito parametry:

První pokus

  • Number of clusters = 5
  • Number of iterations = 1

Druhý pokus

  • Number of clusters = 5
  • Number of iterations = 30

Vlevo - RGB scéna, uprostřed - 5 tříd a 1 iterace, vpravo - 5 tříd a 30 iterací

Z výsledků je patrné, že při pěti třídách a jedné iteraci nedochází k dobré separabilitě tříd. V tomto případě jedna třída pokrývá jak vodní plochu, tak i holou půdu a les. Při třiceti iteracích je pak už vidět, že se jednotlivé třídy od sebe oddělily již mnohem lépe, a názorně to tak ilustruje princip fungování algoritmu K-Means. Nicméně výsledek není ani tak optimální. Došlo sice k separování jednotlivých tříd, ale ne těch, u kterých bychom to chtěli. Vodní plocha, holá půda a z část i zástavba v tomto případě stále spadají pod jednu spektrální třídu a je tedy potřeba zvýšit počet klastrů. Můžeme takto vyzkoušet například 10, 15 či 20 tříd, případně i navyšovat počet iterací.

Vlevo - RGB scéna, uprostřed - 10 tříd a 30 iterací, vpravo - 10 tříd a 50 iterací

Zvýšením počtu tříd na 10 již výsledky vypadají nadějněji. Tentokrát se již holá půda z větší části odseparovala od vody, a se zvýšením počtu iterací na 50 došlo i k poměrně dobrému separování vody od zástavby (byť ne kompletně).

Vlevo - RGB scéna, uprostřed - 15 tříd a 30 iterací, vpravo - 15 tříd a 50 iterací

U patnácti tříd vypadají výsledky zas o něco lépe, byť alespoň na této části scény dochází stále k míchání zástavby a holé půdy jak při 30 iterací, tak při 50 iterací. Zároveň ale s přibývajícím počtem tříd začíná být klasifikovaný snímek čím dál méně přehledný a je potřeba při posuzování výsledku být více pečlivější.


Úkol - Neřízená klasifikace

  • Provést neřízenou klasifikaci na svém území
  • Seskupit spektrální třídy do informačních tříd (mít pokud možno správně klasifikovanou vodu, zemědělské oblasti, les, holou půdu a zástavbu)
  • Zhodnotit výsledek (jakou jste použili klasifikaci, jaké jste nastavili parametry, kolik je ve výsledku tříd, s čím a proč byly problémy atd.)

Postup

Neřízenou klasifikaci ve SNAP jsme si ukazovali již výše. SNAP bohužel neumožňuje nějaké jednoduché seskupování tříd v rastru, nicméně pro náš účel postačí, když si třídy pojmenujeme, a těm třídám, které představují stejný povrch, přidělíme stejnou barvu. Upravíme tedy tabulku v Colour Manipulation, kde se mimochodem dozvíme i četnost jednotlivých spektrálních tříd.

Při vyšším počtu tříd může ale nastat situace, že mezi sebou začnou jednotlivé barvy splývat, což zhoršuje orientaci, co jaká třída vlastně znamená. Samozřejmě lze využít nástroj Pixel Info, který nám řekne, o jakou hodnotu se na konkrétním místě jedná. Mnohem přehlednější je ale využítí maskování s tím, že si jednotlivé spektrální třídy zobrazíme přímo na RGB scéně. K tomu ale potřebujeme propsat klasifikovanou vrstvu do našeho produktu s pásmy Sentinel-2. To uděláme pomocí funkce Band Maths..., kde jako Target product zvolíme produkt s pásmy Sentinel-2 a klikneme na Edit Expression... Zde poté přepneme produkt na produkt s klasifikovanou vrstvou, kterou následně dvojklikem vložíme do Expression. Nakonec dáme OK a znovu OK, čímž dostaneme klasifikovanou vrstvu do našeho produktu.

Když si tuto vrstvu poté zobrazíme v mapovém okně, zobrazuje se pouze v odstínech šedi. Z klasifikovaného produktu si ale můžeme uložit barevnou paletu a nahrát jí do klasifikované vrstvy, kterou jsme si vytvořili v původním produktu. Nicméně i tak bychom doporučovali využít tuto vrstvu pouze pro maskování a barevné úpravy provádět v klasifikovaném produktu, u kterého se tabulka s hodnotami a barvami jednotlivých spektrálních tříd zobrazuje lépe a přehledněji. Masku pro konkrétní spektrální třídu vytvoříme v Mask Manager pomocí funkce Creates a new mask based on a logical band maths expression.

Poté se můžeme podívat, s jakým krajinným prvkem se vypočtená maska překrývá. V tomto případě lze vidět, že spektrální třída s hodnotou 0 odpovídá holé půdě.

Tuto informaci následně zaneseme do tabulky v Colour Manipulation u klasifikovaného produktu. Do tabulky napíšeme název třídy a přiřadíme nějakou barvu.

Stejný postup provedeme pro všechny spekrální třídy. Není ale potřeba vytvářet pokaždé novou masku. Stačí upravit tu stávající pomocí funkce Edit the selected mask.

Konečný výsledek může vypadat nějak takto: