153ZODH / 8. cvičení
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.
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
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.
# 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
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