153ZODH / 10. cvičení: Porovnání verzí

Z GeoWikiCZ
(→‎Osnova: prikazy)
mBez shrnutí editace
 
(Není zobrazeno 43 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
<div style="font-size: 13pt; font-weight: bold">Klasifikace obecně, neřízená klasifikace</div>
{{Zastaralé|155ZDDP}}
----
{{Cvičení|153ZODH|10|Klasifikace obecně, neřízená klasifikace}}
 
{{Upravit}}
 
< [[153YZOD Zpracování obrazových dat|Stránky předmětu]] {{bullet}} [[153YZOD Zpracování obrazových dat - cvičení 9|Předchozí cvičení]] {{bullet}} [[153YZOD Zpracování obrazových dat - cvičení 11|Další cvičení]]
 
__TOC__
== Osnova ==
== Osnova ==


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


=== Seznam příkazů ===
=== Seznam příkazů ===
Řádek 25: Řádek 19:
== Teorie ==
== Teorie ==


Klasifikací označujeme třídění objektů do jednotlivých skupin (''tříd''). Tzv. ''příznakovou'' 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).  
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é uzemí (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.
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:
Rozlišujeme dva základní typy příznakové klasifikace:
Řádek 42: Řádek 36:
GRASS nabízí dva obecné ''klasifikátory'':
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í.
* ''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 {{wikipedia|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)
* ''Sequential Maximum A Posteriori classifier'' (SMAP)


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


* ''radiometrická klasifikace''
* ''radiometrická klasifikace''
** ''neřízená klasifikace'' ({{GrassPrikaz|i.cluster}}, {{GrassPrikaz|i.maxlik}})
** ''neřízená klasifikace'' ({{GrassPrikaz|i.cluster}}, {{GrassPrikaz|i.maxlik}})
** ''řízená klasifikace'' a ''kombinovaná částečně řízená klasifikace'' ({{GrassPrikaz|i.class}}, {{GrassPrikaz|i.gensig}}, {{GrassPrikaz|i.maxlik}})
** ''řízená klasifikace'' a ''kombinovaná částečně řízená klasifikace'' ({{GrassPrikaz|g.gui.iclass}}, {{GrassPrikaz|i.gensig}}, {{GrassPrikaz|i.maxlik}})
* ''kombinovaná radiometrická/geometrická klasifikace'' ({{GrassPrikaz|i.gensigset}}, {{GrassPrikaz|i.smap}})
* ''kombinovaná radiometrická/geometrická klasifikace'' ({{GrassPrikaz|i.gensigset}}, {{GrassPrikaz|i.smap}})


<center>
<center>
{|class="border"
{|class="wikitable"
|+Tab č.1: Přehled metod klasifikace v GRASSu
|+Tab č.1: Přehled metod klasifikace v systému GRASS
|-
|-
|&nbsp;|| style="text-align: center" | radiometrická || colspan="2" style="text-align: center" |  radiomerická || style="text-align: center" | radiometrická/geometrická
|&nbsp;|| style="text-align: center" | radiometrická || colspan="2" style="text-align: center" |  radiomerická || style="text-align: center" | radiometrická/geometrická
Řádek 60: Řádek 54:
|&nbsp;|| style="text-align: center" | neřízená || colspan="2" style="text-align: center" | řízená || style="text-align: center" | řízená
|&nbsp;|| style="text-align: center" | neřízená || colspan="2" style="text-align: center" | řízená || style="text-align: center" | řízená
|-  
|-  
| předzpracování || {{GrassPrikaz|i.cluster}} || {{GrassPrikaz|i.class}} (monitor) || {{GrassPrikaz|i.gensig}} (mapa) || {{GrassPrikaz|i.gensigset}}  
| předzpracování || {{GrassPrikaz|i.cluster}} || {{GrassPrikaz|g.gui.iclass}} (interaktivní) || {{GrassPrikaz|i.gensig}} (mapa trénovacích) || {{GrassPrikaz|i.gensigset}}  
|-
|-
| výpočet || {{GrassPrikaz|i.maxlik}} || {{GrassPrikaz|i.maxlik}} || {{GrassPrikaz|i.maxlik}} || {{GrassPrikaz|i.smap}}
| výpočet || {{GrassPrikaz|i.maxlik}} || colspan=2 style="text-align: center" | {{GrassPrikaz|i.maxlik}} || {{GrassPrikaz|i.smap}}
|-
|-
|}
|}
Řádek 69: Řádek 63:
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.
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.


Za poznámku stojí fakt, že 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&nbsp;[http://www.r-project.org R] (program pro statistické výpočty a&nbsp;generování grafů). Tato aplikace může být propojena s GRASSem přes speciální rozhraní [http://r-spatial.sourceforge.net GRASS/R].
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&nbsp;[http://www.r-project.org R] (program pro statistické výpočty a&nbsp;generování grafů). Tato aplikace může být propojena se systémem GRASS přes speciální rozhraní {{freegis|GRASS GIS / Propojení s R|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ů.''
''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ů.''
Řádek 75: Řádek 69:
=== Hodnocení výsledků klasifikace ===
=== 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 jiných testovacích dat. Ve vyjímečných případech se zkoumá celý výsledek klasifikace, což je přirozeně finančně i časově velmi náročné.
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 ===
=== Úpravy po klasifikaci ===
Řádek 87: Řádek 81:
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.
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 {{GrassPrikaz|i.cluster}}). Je tak testována stabilita tohoto přiřazení mezi jednotlivými iteracemi (test &chi;<sup>2</sup>). Úč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í.
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 {{GrassPrikaz|i.cluster}}). Je tak testována stabilita tohoto přiřazení mezi jednotlivými iteracemi ({{wikipedia|Chi-squared test|&chi;<sup>2</sup> test|lang=en}}). Úč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 {{GrassPrikaz|i.maxlik}}), který určuje ke které spektrální třídě spektrální vektor s největší pravděpodobnosti patří. Výsledkem je tematická mapa (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&nbsp;nízkou pravděpodobností.
Dále je nasazen klasifikátor MLC (modul {{GrassPrikaz|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&nbsp;nízkou pravděpodobností.


=== Sestavení clusterů ===
=== Sestavení clusterů ===
Řádek 95: Řádek 89:
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 {{GrassPrikaz|i.group}}.
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 {{GrassPrikaz|i.group}}.


<source lang="bash">
  # sestavení obrazové skupiny
  # sestavení obrazové skupiny
  #
  #
  i.group group=tm subgroup=tm input=tm1,tm2,tm3,tm4,tm5,tm7
  i.group group=tm subgroup=tm input=tm1,tm2,tm3,tm4,tm5,tm7
</source>
Z menu {{grassPrikaz|wxGUI}} {{menu|Imagery|Develop images and groups|Create/edit group}}
<center>
{|table
| [[Image:group-dialog-1.png|thumb|400px|Založení obrazové skupiny ve wxGUI (výběr rastrových map)]]
| [[Image:group-dialog-2.png|thumb|185px|Založení obrazové skupiny ve wxGUI]]
|}
</center>


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


* ''minimum class size'' (<tt>min_size</tt>): minimální počet pixelů definující cluster.
* ''minimum class size'' (<tt>min_size</tt>): minimální počet pixelů definující cluster.
* ''class separation'' (<tt>separation</tt>): minimální stupeň separace, při které budou během iteračního procesu clustery spojeny (závisí na&nbsp;povaze obrazových dat a maximálním počtu clusterů, které jsou ze statistického hlediska akceptovatelné). Hodnota se obvykle pohybuje v&nbsp;intervalu [0.5; 1.5]. Při zvýšení této hodnoty je nutné zvětšit i maximální počet iterací (tak aby mohla být splněna podmínka konvergence).
* ''class separation'' (<tt>separation</tt>): minimální stupeň separace, při kterém budou během iteračního procesu clustery spojeny (závisí na&nbsp;povaze obrazových dat a maximálním počtu clusterů, které jsou ze statistického hlediska akceptovatelné). Hodnota se obvykle pohybuje v&nbsp;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'' (<tt>convergence</tt>): 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í.
* ''percent convergence'' (<tt>convergence</tt>): 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'' (<tt>iterations</tt>): určuje maximální počet povolených iterací, tedy větší počet než by podle předpokladu (dle testu &chi;<sup>2</sup>) 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.
* ''maximum number of iterations'' (<tt>iterations</tt>): určuje maximální počet povolených iterací, tedy větší počet než by podle předpokladu (dle testu &chi;<sup>2</sup>) 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.
Řádek 111: Řádek 116:
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.
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.


<source lang="bash">
  # nastavení regionu a sestavení clusterů
  # nastavení regionu a sestavení clusterů
  #
  #
  g.region rast=tm1
  g.region rast=tm1
  i.cluster group=tm subgroup=tm sigfile=tm_nerpri20 reportfile=tm_rep20.txt classes=20
  i.cluster group=tm subgroup=tm sigfile=tm_nerpri20 reportfile=tm_rep20.txt classes=20
</source>
   
   
  Iteration 1: %Convergence 48.32 (0s elapsed, 0s left)
  Iteration 1: %Convergence 48.32 (0s elapsed, 0s left)
Řádek 126: Řádek 132:
=== Klasifikace ===
=== Klasifikace ===


Klasifikátor MLC je v GRASSu dostupný jako modul {{GrassPrikaz|i.maxlik}}. Modul vyžaduje název obrazové skupiny a podskupiny, název souboru s uloženými příznaky (vytvořeného modulem {{GrassPrikaz|i.cluster}}). Výstupem je tematická (klasifikovaná) rastrová vrstva (parametr <tt>class</tt>) a tzv. "zamítací rastrová vrstva" (<tt>reject</tt>) reprezentující pravděpodobnost nesprávného přiřazení daného pixelu k třídě.
Klasifikátor MLC je v systému GRASS dostupný jako modul {{GrassPrikaz|i.maxlik}}. Modul vyžaduje název obrazové skupiny a podskupiny, název souboru s uloženými příznaky (vytvořeného modulem {{GrassPrikaz|i.cluster}}). Výstupem je tematická (klasifikovaná) rastrová vrstva (parametr <tt>class</tt>) a tzv. "zamítací rastrová vrstva" (<tt>reject</tt>) 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. Pokud nelze výsledek klasifikace akceptovat, je nutné celý výpočet (počínaje sestavením clusterů) s vhodně přenastavenými parametry zopakovat.
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 {{grassPrikaz|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 {{GrassPrikaz|r.support}} nebo reklasifikacím modulem {{GrassPrikaz|r.reclass}}.
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 {{GrassPrikaz|r.category}} nebo reklasifikacím modulem {{GrassPrikaz|r.reclass}}.


<source lang="bash">
  # klasifikátor maximum likelihood (MLC)
  # klasifikátor maximum likelihood (MLC)
  #
  #
Řádek 138: Řádek 145:
  # zobrazit výsledek neřízené klasifikace
  # zobrazit výsledek neřízené klasifikace
  #
  #
  d.rast.leg tm_nerkl20
  d.rast.leg map=tm_nerkl20
  d.rast.leg tm_nerza20
  d.rast.leg map=tm_nerza20
</source>


[[Soubor:ZOD-cv10-nerkl20.png|center|frame|Obr č.1: Výsledek neřízené klasifikace při počátečním počtu tříd "20"]]
{{fig|ZOD-cv10-nerkl20|Výsledek neřízené klasifikace při počátečním počtu tříd "20"}}


[[Soubor:ZOD-cv10-nerza20.png|center|frame|Obr č.2: Odpovídající zamítací rastrová vrstva]]
{{fig|ZOD-cv10-nerza20|Odpovídající zamítací rastrová vrstva}}


Za požadovaný výstup může být považována i přehledná tabulka ploch jednotlivých tříd:
Tabulka ploch jednotlivých tříd (hektary, procenta):


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


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 <tt>r.stats -l tm_nerza20</tt>).
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 <tt>r.stats -l tm_nerza20</tt>).


<source lang="bash">
  # maskovaní ploch s pravděpodobností >= 90%
  # maskovaní ploch s pravděpodobností >= 90%
  #
  #
  r.mapcalc 'MASK = if(tm_nerzam >= 12, 1, null())'
  r.mapcalc 'MASK = if(tm_nerza20 >= 12, 1, null())'
# nebo
r.mask -i input=tm_nerza20 maskcats="1 thru 11"
  #
  #
  d.rast tm_nerkl20
  d.rast map=tm_nerkl20
  #
  #
  # deaktivace masky
  # deaktivace masky
  #
  #
  g.remove rast=MASK
  r.mask -r
</source>


[[Soubor:ZOD-cv10-nerzam90.png|center|frame|Obr č.3: Maskování ploch s&nbsp;pravděpodobností přiřazení větší než 10%]]
{{fig|ZOD-cv10-nerzam90|Maskování ploch s&nbsp;pravděpodobností přiřazení menší než 10%}}


=== Postklasifikační úpravy ===
=== Postklasifikační úpravy ===


Vytvoříme rastrovou vrstvu, která bude obsahovat pouze plochy větší než 1 ha. Poté vyplníme vzniklé mezery pomocí modulu {{GrassPrikaz|r.surf.idw}} (interpolace "inverzní vážená vzdálenost") a na závěr aplikujeme jednoduchý postklasifikační filtr.
Vytvoříme rastrovou vrstvu, která bude obsahovat pouze plochy větší než 1 ha. Poté vyplníme vzniklé mezery pomocí modulu {{GrassPrikaz|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 [[153ZODH / 5. cvičení|5. cvičení]].


<source lang="bash">
  # výběr rastrových ploch s výměrou větší než 1 ha
  # výběr rastrových ploch s výměrou větší než 1 ha
  #
  #
  r.reclass.area in=tm_nerkl20 greater=1 output=tm_nerkl20_1ha
  r.reclass.area input=tm_nerkl20 greater=1 output=tm_nerkl20_1ha
#
# vyplnění vzniklých "děr" (interpolace IDW)
#
r.surf.idw input=tm_nerkl20_1ha output=tm_nerkl20_int
  #
  #
  # výsledná rastrová vrstva by neměla obsahovat žádné buňky s hodnotou "žádná data" (znak '*')
  # vyplnění vzniklých "děr"
  #
  #
  r.stats -c tm_nerkl20_int | grep '*'
  r.grow.distance input=tm_nerkl20_1ha value=tm_nerkl20_int
  #
  #
  # postklasifikační filtr
  # postklasifikační filtr
  #
  #
  r.neighbors in=tm_nerkl20_int out=tm_nerkl20_f method=mode size=3
  r.neighbors input=tm_nerkl20_int output=tm_nerkl20_f method=mode size=3
  #
  #
  # odstranění již nepotřebných rastrových vrstev
  # odstranění již nepotřebných rastrových vrstev
  #
  #
  g.remove rast=tm_nerkl20_1ha,tm_nerkl20_int
  g.remove rast=tm_nerkl20_1ha,tm_nerkl20_int
</source>


[[Soubor:ZOD-cv10-nerpostkl20.png|center|frame|Obr č.4: Tematická mapa po klasifikaci, rastrová vrstva s&nbsp;plochami o výměře větší než 1 ha, vpravo po aplikaci postklasifikačního filtru (modus), počet tříd 20]]
{{fig|ZOD-cv10-nerpostkl20|Tematická mapa po klasifikaci, rastrová vrstva s&nbsp;plochami o výměře větší než 1 ha, vpravo po aplikaci postklasifikačního filtru (modus), počet tříd 20}}
 
[[Soubor:ZOD-cv10-nerpostkl5.png|center|frame|Obr č.5: Tematická mapa po klasifikaci, rastrová vrstva s&nbsp;plochami o výměře větší než 1 ha, vpravo po aplikaci postklasifikačního filtru (modus), počet tříd 5]]
 


----
{{fig|ZOD-cv10-nerpostkl5|Tematická mapa po klasifikaci, rastrová vrstva s&nbsp;plochami o výměře větší než 1 ha, vpravo po aplikaci postklasifikačního filtru (modus), počet tříd 5}}
< [[153YZOD Zpracování obrazových dat|Stránky předmětu]] {{bullet}} [[153YZOD Zpracování obrazových dat - cvičení 9|Předchozí cvičení]] {{bullet}} [[153YZOD Zpracování obrazových dat - cvičení 11|Další cvičení]]


{{ZOD}}
{{ZOD}}
{{GRASS}}

Aktuální verze z 5. 9. 2014, 18:48

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