153ZODH / 8. cvičení

Z GeoWikiCZ

Metoda hlavních komponent, transformace RGB - IHS

Osnova

Metoda hlavních komponent a její aplikace v GRASSu, transformace RGB - IHS a Broveyova transformace.

Seznam příkazů

Metoda hlavních a obecných komponent

Multispektrální obrazové kanály velmi často obsahují korelace a to díky podobné spektrální odezvě sledovaných objektů nebo mírně se překrývající funkci filtru spektrálního skeneru. Metoda hlavních komponent (Principal Component Transformation) provede transformaci těchto dat do nového spektrálního prostoru bez korelací mezi jednotlivými kanály. To ve svém důsledku vede ke koncentraci obrazové informace do menšího počtu kanálů.

Metoda je založena, jak ukazuje obr. č.1 a 2, na transformaci původního multispektrálního datasetu do nového spektrálního souřadnicového systému.

Obr. č.1: Redukce dat příznakového prostoru dvou kanálů satelitního snímku, amplituda A se redukuje na A' - převzato z GRASS příručky
Obr. č.2: Zobrazení bodových dat jako standardizovaných datových vektorů x1x5 s prvními dvěma přidruženými ortogonálními komponentami - vektory PCA1 a PCA2 v polárním zobrazení (vlevo) a bodová data v kartézském souřadnicovém systému (vpravo) - převzato z GRASS příručky

První kanál po transformaci 'PC1' obsahuje maximální stupeň možné variance původních obrazových vrstev. Druhý kanál 'PC2' pokrývá maximální varianci, která není obsažena v prvním kanálu. Další PC kanály obsahují zbytkové variance. Přičemž počet PC kanálů odpovídá počtu vstupních pásem. Poslední PC kanály obsahují pouze nekorelovaný šum. Tuto metodu tak lze použít pro zmenšení nároku na úložný prostor, obrazová informace je koncentrována v menším počtu kanálů.

Metoda hlavních komponent je v GRASSu dostupná pomocí modulu i.pca. Modul vyžaduje seznam vstupních obrazových vrstev (nejméně dvě), prefix pro výstupní kanály, volitelně je možné provést změnu rozsahu DH (parametr rescale).

 g.region rast=tm1
 #
 # transformace hlavních komponent v GRASSu
 #
 i.pca input=tm1,tm2,tm3,tm4,tm5,tm7 output_prefix=pc

Před dalším zpracováním nastavíme tabulku barev (hromadně pro všechny PC kanály):

 # hromadné nastavení tabulky barev pro kanály PC
 #
 for pc in `g.mlist pat=pc*`; do \
 r.colors map=$pc color=grey.eq; \
 done
Obr. č.3: Přehled PC kanálů
Obr. č.4: RGB syntéza -- PC kanály (321)

Transformace RGB - IHS

Transformaci RGB - IHS (více 3. cvičení) lze mimo jiné využít pro zvětšení geometrického rozlišení prvních tří pásem LandSat7-ETM+.

Postup při této transformaci naznačuje obr. č.5, nejprve jsou transformovány první tři pásma LandSat7-ETM+ z prostoru barev RGB do IHS. Poté je nahrazen kanál intenzity kanálem o vysokém geometrickém rozlišení (8.kanál) a následně tento celek transformován zpět do prostoru barev RGB.

Obr č.5: Postup při zvýšení geometrického rozlišení prvních tří pásem LandSat7-ETM+ metodou transformace RGB → IHS → RGB
 # nastavit region podle vrstvy tm1 (-p zaroven vytiskne nastaveni regionu)
 #
 g.region rast=tm1 -p
projection: 99 (krovak)
zone:       0
datum:      towgs84=570.8,85.7,462.8,4.998,1.587,5.261,3.56
ellipsoid:  bessel
north:      -957500
south:      -1007318
west:       -830529
east:       -763855.0602047
nsres:      29.99277544
ewres:      29.99277544
rows:       1661
cols:       2223
 # nastavit tabulku barev "grey.eq" pro první tři pásma LandSat5-TM
 #
 r.colors color=grey.eq map=tm1
 r.colors color=grey.eq map=tm2
 r.colors color=grey.eq map=tm3

Poznámka: pro nastavení tabulky barev pro první tři kanály lze také použít modul i.landsat.rgb.

Následně je provedena transformace RGB → IHS a to pomocí modulu i.rgb.his.

 # transformace RGB -> IHS
 #
 i.rgb.his red_input=tm3 green_input=tm2 blue_input=tm1 \
 hue_output=hue intensity_output=int saturation_output=sat

Před další transformací je nutné nastavit požadované rozlišení (v tomto případě 15m).

 # nastavení požadovaného rozlišení
 #
 g.region res=15 -p
projection: 99 (krovak)
zone:       0
datum:      towgs84=570.8,85.7,462.8,4.998,1.587,5.261,3.56
ellipsoid:  bessel
north:      -957500
south:      -1007318
west:       -830529
east:       -763855.0602047
nsres:      15.00090334
ewres:      14.99976148
rows:       3321
cols:       4445

Takto vytvořené obrazové vrstvy (model barev IHS) zpětně převedeme do prostoru barev RGB, modul i.his.rgb.

 # transformace IHS -> RGB
 #
 i.his.rgb hue_input=hue intensity_input=etm8 saturation_input=sat \
 red_output=tm3_15 green_output=tm2_15 blue_output=tm1_15

Ve výsledku můžeme nastavit tabulku barev na "grey.eq" a zobrazit barevnou syntézu ve skutečných barvách:

 # nastavit tabulku barev na "grey.eq"
 #
 r.colors color=grey.eq map=tm1_15
 r.colors color=grey.eq map=tm2_15
 r.colors color=grey.eq map=tm3_15
 #
 # RGB syntéza ve skutečných barvách (321)
 #
 d.rgb red=tm3_15 green=tm2_15 blue=tm1_15
Obr č.6: Detail scény, RGB syntéza ve skutečných barvách (321); vlevo originální data, vpravo po transformaci RGB → IHS → RGB

Broveyova transformace

 # region na požadované rozlišení
 #
 g.region rast=tm1 res=15
 #
 # Broveyova transformace
 #
 r.mapcalc 'brov.red   = 1.0 * etm5 / (etm2 + etm4 + etm5) * etm8'
 r.mapcalc 'brov.green = 1.0 * etm4 / (etm2 + etm4 + etm5) * etm8'
 r.mapcalc 'brov.blue  = 1.0 * etm2 / (etm2 + etm4 + etm5) * etm8'
 #
 # tabulka barev "grey"
 #
 r.colors color=grey map=brov.red
 r.colors color=grey map=brov.green
 r.colors color=grey map=brov.blue
 #
 # RGB syntéza ve skutečných barvách
 #
 d.rgb red=brov.red green=brov.green blue=brov.blue

GRASS disponuje navíc speciálním modulem i.fusion.brovey.

 i.fusion.brovey -l ms1=etm2 ms2=etm4 ms3=etm5 pan=etm8 output=brov
Obr č.7: RGB syntéza (321) - data po Broveyově transformaci