153ZODH / 10. cvičení

Z GeoWikiCZ

Klasifikace obecně, neřízená klasifikace

Osnova

Teoretický základ klasifikace obrazových dat s důrazem na implementaci v systému GRASS. Ukázka neřízené klasifikace.

Seznam příkazů

Teorie

Klasifikací označujeme třídění objektů do jednotlivých skupin (tříd). Tzv. příznaková klasifikace (tj. metoda klasifikace operující v tzv. příznakovém prostoru) patří mezi základní metody DPZ. Na základě multispektrálního obrazu jsou sestaveny spektrální příznaky (tj. charakteristické změny radiační veličiny v závislosti na změně druhového či stavového parametru), dochází tak ve své podstatě ke třídění obrazových pixelů do jednotlivých skupin o podobných vlastnostech - ke klasifikaci dat na základě určitého rozhodovacího pravidla (klasifikátoru).

Počet pixelů pokrývající stejné území (v geografickém smyslu slova) závisí na počtu pásem (obrazových vrstev) družicového snímku vstupujících do procesu klasifikace. Tato množina pixelů se často označuje jako spektrální vektor. Algoritmus klasifikace se obecně snaží separovat jednotlivé spektrální vektory do předem definovaných tříd (např. půda, vegetace, vodní plochy, atd.). Výsledná tematická mapa tak odráží počet a proporce těchto tříd.

Rozlišujeme dva základní typy příznakové klasifikace:

  • neřízenou (unsupervised) a
  • řízenou (supervised) klasifikaci.

Klasifikace jako taková vyžaduje dva kroky. Nejprve je analyzována podobnost spektrálních vektorů v ohledu na spektrální odrazivost (naplnění příznakového prostoru), v druhém kroku následuje vlastní klasifikace, tj. přiřazení k jednotlivým třídám.

V případě neřízené klasifikace je tento proces plně automatizován, je založen na statistice obrazu. Nejprve se vytvoří tzv. shluky, dojde k naplnění příznakového prostoru. Výsledkem této klasifikace jsou nicméně čistě abstraktní třídy. Základní otázkou je tedy nalezení smysluplného počtu tříd, které by vhodně popsaly dané území.

V případě řízené klasifikace je naopak vyžadován vstup od uživatele, konkrétně výběr tzv. trénovacích ploch, tzn. jakýchsi vzorů pro jednotlivé třídy. Následuje výpočet příznakového prostoru a pak vlastní klasifikace. Statistika obrazových dat je tak přímo ovlivněna výběrem trénovacího souboru, uživatel má tak možnost ovlivnit nejen počet výsledných tříd ale i jejich význam.

GRASS nabízí dva obecné klasifikátory:

  • Maximum Likelihood classifier (MLC) - je založen na předpokladu, že rozdělení bodů tvořících jednu třídu tréninkových dat má Gaussovo, tedy normální rozdělení. Lze tak určit statistickou pravděpodobnost dané hodnoty pixelu jako člena vybrané třídy. Pixel je nakonec zařazen do třídy s největší určenou pravděpodobností.
  • Sequential Maximum A Posteriori classifier (SMAP)

Omezíme-li se na implementaci v systému GRASS, můžeme rozlišit dvě hlavní skupiny (viz tab. č.1):

Tab č.1: Přehled metod klasifikace v systému GRASS
  radiometrická radiomerická radiometrická/geometrická
  neřízená řízená řízená
předzpracování i.cluster g.gui.iclass (interaktivní) i.gensig (mapa trénovacích) i.gensigset
výpočet i.maxlik i.maxlik i.smap

Jedním z problémů klasifikace jsou tzv. smíšené pixely, tj. ty které odrážejí hned několik objektů (např. hranice les-pole, zástavba, atd.). V této situaci je pixel přiřazen k dominantní třídě s nízkou pravděpodobností tohoto přiřazení. Často je tak vhodné problémové oblasti před vlastní klasifikací nejprve maskovat.

Další klasifikátory jako je Artificial Neural Networks (ANN), k-Nearest Neighbor classification (kNN), Support Vector Machines (SVM) a řada dalších je dostupná v R (program pro statistické výpočty a generování grafů). Tato aplikace může být propojena se systémem GRASS přes speciální rozhraní GRASS / R.

Poznámka: Jedním z problémů klasifikace jsou lokální diference (způsobené změnou míry a expozice svahu, atmosferických podmínek). Nejprve je tak vhodné aplikovat radiometrické korekce pro minimalizaci těchto nežádoucích vlivů.

Hodnocení výsledků klasifikace

Otázka hodnocení výsledků klasifikace není vůbec jednoduchá, nejčastěji se využívá porovnání v testovacích plochách, které jsou známy z dalších testovacích dat. Ve výjimečných případech se zkoumá celý výsledek klasifikace, což je přirozeně finančně i časově velmi náročné.

Úpravy po klasifikaci

Výsledkem klasifikace jsou často díky spektrální variabilitě nepříliš homogenní plochy, což nemusí být, např. pro účel prezentace výsledků, úplně optimální stav. V takovýchto případech je nutno výsledný obraz vyhladit.

Postklasifikační filtr je založen na logickém operátoru a nikoliv na operacích aritmetickým (potom by mohly vznikat hodnoty neexistujících tříd). Často se využívá majoritní filtr, který přiřadí středovému pixelu kernelu hodnotu majoritní třídy.

Neřízená klasifikace

Metoda klasifikace je založena na automatickém přiřazení spektrálních vektorů ke spekrálním třídám. Toto přiřazení je založeno na statistice obrazových dat, tj. není použito trénovací množiny.

V první fázi jsou seskupeny jednotlivé spektrální vektory na základě blízké spektrální odezvy do tzv. shluků (clusterů). Výsledek tohoto procesu je možné ovlivnit zadáním minimální velikosti clusteru, stupně separability či maximálním počtem clusterů, atd. Toto přiřazení můžeme přirovnat k sestavení legendy mapy, odrážející signaturu mapy. Iterativní algoritmus pro sestavení clusterů nejprve vypočte střední hodnoty shluků a sestaví příslušné kovarianční matice (modul i.cluster). Je tak testována stabilita tohoto přiřazení mezi jednotlivými iteracemi (χ2 test). Účelem je identifikovat mračna pixelů s podobnou spektrální odrazivostí. Množina spektrálních vektorů je takto zpracována v rámci daného clusteru a posléze přiřazena k dané třídě. Po klasifikaci je tedy nutné provést šetření, co jednotlivé třídy vlastně představují.

Dále je nasazen klasifikátor MLC (modul i.maxlik), který určuje ke které spektrální třídě spektrální vektor s největší pravděpodobnosti patří. Výsledkem je tematická vrstva (daná počtem tříd) a tzv. "zamítací vrstva" (pravděpodobnosti nesprávného přiřazení reklasifikovaného pixelu k dané třídě) - reject threshold map layer. Tuto rastrovou vrstvu lze velmi snadno použít jako masku pro zobrazení pixelů, které byly během klasifikace zařazeny s nízkou pravděpodobností.

Sestavení clusterů

Nejprve je nutno vytvořit obrazovou skupinu/podskupinu a vložit do ní všechny požadované obrazové vrstvy (tj. jednotlivá pásma družicového snímku vyjma termálního pásma) - modul i.group.

 # sestavení obrazové skupiny
 #
 i.group group=tm subgroup=tm input=tm1,tm2,tm3,tm4,tm5,tm7

Z menu wxGUI Imagery → Develop images and groups → Create/edit group

Založení obrazové skupiny ve wxGUI (výběr rastrových map)
Založení obrazové skupiny ve wxGUI

Sestavení clusterů je provedeno modulem i.cluster, kromě udání obrazové skupiny a podskupiny (group, subgroup), souboru obsahující výsledné příznaky result signature file (sigfile) je možné nastavit:

  • minimum class size (min_size): minimální počet pixelů definující cluster.
  • class separation (separation): minimální stupeň separace, při kterém budou během iteračního procesu clustery spojeny (závisí na povaze obrazových dat a maximálním počtu clusterů, které jsou ze statistického hlediska akceptovatelné). Hodnota se obvykle pohybuje v intervalu [0.5; 1.5]. Při zvýšení této hodnoty je nutné zvýšit i maximální počet iterací (tak aby mohla být splněna podmínka konvergence).
  • percent convergence (convergence): určuje při jakém stupni konvergence lze považovat cluster za stabilní. Střední hodnota clusteru se během iteračního procesu mění a to podle počtu nově přiřazených pixelů. Snahou je maximální stupeň odlišnosti jednotlivých clusteru. Proces je ukončen po dosažení dané konvergence či maximálního počtu iterací.
  • maximum number of iterations (iterations): určuje maximální počet povolených iterací, tedy větší počet než by podle předpokladu (dle testu χ2) mělo být potřeba pro dosažení konvergence. Pokud je tato hodnota během sestavení clusterů dosažena, je nutné výpočet zopakovat a zvýšit hodnotou tohoto parametru.
  • sampling intervals (sample): umožňuje zjednodušení výpočtu seskupením pixelů do bloků.

V případě opakovaného výpočtu lze využít výsledek předcházejícího sestavení clusterů udáním souboru obsahující tzv. zárodečné příznaky (parametr seed - seed signature). Poslední parametr reportfile udává název souboru pro zprávu o výpočtu.

Při prvním sestavení clusterů (výpočtu příznakového prostoru) zvolíme počet výchozích tříd (number of initial classes) "20". Ostatní parametry můžeme ponechat ve výchozím nastavení. Pokud výpočet neproběhne podle našich představ stačí změnit vhodně dané parametry a výpočet opakovat.

 # nastavení regionu a sestavení clusterů
 #
 g.region rast=tm1
 i.cluster group=tm subgroup=tm sigfile=tm_nerpri20 reportfile=tm_rep20.txt classes=20
Iteration 1: %Convergence 48.32 (0s elapsed, 0s left)
Iteration 2: %Convergence 69.98 (0s elapsed, 0s left)
...
Iteration 17: %Convergence 98.08 (1s elapsed, 0s left)

V tomto případě bylo potřeba 17 iterací s dosaženou konvergencí 98%. Výsledná zpráva výpočtu je uložena v aktuálním adresáři pod názvem 'tm_rep20.txt'.

Klasifikace

Klasifikátor MLC je v systému GRASS dostupný jako modul i.maxlik. Modul vyžaduje název obrazové skupiny a podskupiny, název souboru s uloženými příznaky (vytvořeného modulem i.cluster). Výstupem je tematická (klasifikovaná) rastrová vrstva (parametr class) a tzv. "zamítací rastrová vrstva" (reject) reprezentující pravděpodobnost nesprávného přiřazení daného pixelu k třídě.

Zamítací vrstva je zobrazena v odstínech šedi. Čím menší a více homogenní jsou hodnoty rastrových buněk, tím menší je alokovaná chyba přiřazení k dané třídě. Pokud nelze výsledek klasifikace akceptovat, je nutné celý výpočet (počínaje sestavením clusterů) s vhodně přenastavenými parametry zopakovat. V tomto případě je vhodné použít výsledky sestavení příznaků jako tzv. zárodečné příznaky, viz modul i.cluster.

K jednotlivým třídám (tj. kategoriím rastrové vrstvy) přiřadíme textové popisky popisující danou třídu. Toho lze docílit pomocí modulu r.category nebo reklasifikacím modulem r.reclass.

 # klasifikátor maximum likelihood (MLC)
 #
 i.maxlik group=tm subgroup=tm sigfile=tm_nerpri20 class=tm_nerkl20 reject=tm_nerza20
 #
 # zobrazit výsledek neřízené klasifikace
 #
 d.rast.leg map=tm_nerkl20
 d.rast.leg map=tm_nerza20
Výsledek neřízené klasifikace při počátečním počtu tříd "20"
Odpovídající zamítací rastrová vrstva

Tabulka ploch jednotlivých tříd (hektary, procenta):

 # plocha tříd a pravděpodobnosti nesprávného přiřazení v hektarech a procentech
 #
 r.report map=tm_nerkl20 units=h,p 
 r.report map=tm_nerza20 units=h,p

Rastrovou vrstvu pravděpodobnosti přiřazení můžeme úspěšně použít jako masku, například chceme-li zobrazit plochy, které byly přiřazeny k dané třídě s pravděpodobností menší než 10% (stupeň zamítnutí 90%) Hodnotě 90% odpovídá kategorie mapy "12" (viz r.stats -l tm_nerza20).

 # maskovaní ploch s pravděpodobností >= 90%
 #
 r.mapcalc 'MASK = if(tm_nerza20 >= 12, 1, null())'
 # nebo
 r.mask -i input=tm_nerza20 maskcats="1 thru 11"
 #
 d.rast map=tm_nerkl20
 #
 # deaktivace masky
 #
 r.mask -r
Maskování ploch s pravděpodobností přiřazení menší než 10%

Postklasifikační úpravy

Vytvoříme rastrovou vrstvu, která bude obsahovat pouze plochy větší než 1 ha. Poté vyplníme vzniklé mezery pomocí modulu r.grow.distance (interpolace "inverzní vážená vzdálenost") a na závěr aplikujeme jednoduchý postklasifikační filtr. Více k filtrování obrazu v 5. cvičení.

 # výběr rastrových ploch s výměrou větší než 1 ha
 #
 r.reclass.area input=tm_nerkl20 greater=1 output=tm_nerkl20_1ha
 #
 # vyplnění vzniklých "děr"
 #
 r.grow.distance input=tm_nerkl20_1ha value=tm_nerkl20_int
 #
 # postklasifikační filtr
 #
 r.neighbors input=tm_nerkl20_int output=tm_nerkl20_f method=mode size=3
 #
 # odstranění již nepotřebných rastrových vrstev
 #
 g.remove rast=tm_nerkl20_1ha,tm_nerkl20_int
Tematická mapa po klasifikaci, rastrová vrstva s plochami o výměře větší než 1 ha, vpravo po aplikaci postklasifikačního filtru (modus), počet tříd 20
Tematická mapa po klasifikaci, rastrová vrstva s plochami o výměře větší než 1 ha, vpravo po aplikaci postklasifikačního filtru (modus), počet tříd 5