153YZOD Zpracování obrazových dat 2006 - 8. cvičení
Metoda hlavních komponent, transformace RGB - IHS
osnona
Nejprve se seznámíme s metodou hlavních komponent a její aplikací v GRASSu. Dále bude předvedena metoda zvýšení geometrického rozlišení pomocí transformace RGB - IHS a Brovey transformace.
seznam příkazů
metoda hlavních a obecných komponent
Multispekrální obrazové kanály velmi často obsahují korelace a to díky podobné spekrální odezvě sledovaných objektů nebo mírně se překrývající funkci filtru spekrálního skeneru. Metoda hlavních komponent (Principal Component Transformation) provede transformaci těchto dat do nového spekrá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 multispekrálního datasetu do nového spekrálního souřadnicového systému.


První kanál po transformaci (označme jej 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 nicméně 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).
GRASS > g.region rast=tm1 #transformace hlavních komponent v GRASSu # GRASS > i.pca in=tm1,tm2,tm3,tm4,tm5,tm7 out=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 # GRASS > for pc in `g.mlist pat=pc*`;do \ r.colors map=$pc color=grey.eq;\ done

transformace RGB - IHS
Nyní se vrátíme k modelům barev popsaných v jednom z předchozích kurzů. Předvedeme si transformaci mezi modelem barev RGB a IHS s důrazem na praktické využití této operace - zvýšení geometrického rozlišení prvních tří pásem LandSat7-ETM+. Předpokládejme, že máme k dispozici družicové snímky (LandSat5-TM či LandSat7-ETM+) pořízené v úzkém časovém horizontu (tak abychom mohli zanedbat změny, které za tento časový interval nastaly).
Postup při této transformaci naznačuje obr. č. 4, 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í a následně tento celek transformován zpět do prostoru barev RGB. Ve výsledku získáme data s vyšším geometrickým rozlišením než ta co byla na vstupu.

#nastavit region podle vrstvy etm1, aktuální region vypsat do konzole # GRASS > g.region rast=etm1 -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
Pokud není nastavena tabulka barev "grey.eq", učiníme tak nyní:
#nastavit tabulku barev "grey.eq" pro první tři pásma LandSat7-ETM+ # GRASS > r.colors color=grey.eq map=etm1 GRASS > r.colors color=grey.eq map=etm2 GRASS > r.colors color=grey.eq map=etm3
Následně je provedena transformace RGB → IHS a to pomocí modulu i.rgb.ihs. Před vlastní transformací je nutné nastavit požadované rozlišení (v tomto případě 15 m).
#nastavení požadovaného rozlišení, aktuální region vypsat do konzole # GRASS > 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
#transformace RGB -> IHS # GRASS > i.rgb.his red_input=etm3 green_input=etm2 blue_input=etm1 \ hue_output=hue intensity_output=int saturation_output=sat
Takto vytvořené obrazové vrstvy (model barev IHS) zpětně převedeme do prostoru barev RGB. K tomu nám poslouží modul i.his.rgb.
#transformace IHS -> RGB # GRASS > 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" # GRASS > r.colors col=grey.eq map=tm1_15 GRASS > r.colors col=grey.eq map=tm2_15 GRASS > r.colors col=grey.eq map=tm3_15 # #RGB syntéza ve skutečných barvách (321) # GRASS > d.rgb r=tm3_15 g=tm2_15 b=tm1_15

Brovey transformace
Aplikace této transformace je v GRASSu poměrně jednoduchá (rovnice pro r.mapcalc):
#nastavit region na požadované rozlišení # GRASS > g.region rast=tm1 res=15 # #Brovey transformace # GRASS > r.mapcalc 'brov.red = 1.0 * etm5 / (etm2 + etm4 + etm5) * etm8' GRASS > r.mapcalc 'brov.green = 1.0 * etm4 / (etm2 + etm4 + etm5) * etm8' GRASS > r.mapcalc 'brov.blue = 1.0 * etm2 / (etm2 + etm4 + etm5) * etm8' # #tabulka barev "grey" # GRASS > r.colors col=grey map=brov.red GRASS > r.colors col=grey map=brov.green GRASS > r.colors col=grey map=brov.blue # #RGB syntéza ve skutečných barvách # GRASS > d.rgb r=brov.red g=brov.green b=brov.blue
