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

Z GeoWikiCZ
m (155zddp)
 
(Není zobrazeno 22 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
<div style="font-size: 13pt; font-weight: bold">Metoda hlavních komponent, transformace RGB - IHS</div>
{{Zastaralé|155ZDDP}}
----
{{Cvičení|153ZODH|8|Metoda hlavních komponent, transformace RGB - IHS}}
 
{{Upravit}}
 
< [[153YZOD Zpracování obrazových dat|Stránky předmětu]] {{bullet}} [[153YZOD Zpracování obrazových dat - cvičení 7|Předchozí cvičení]] {{bullet}} [[153YZOD Zpracování obrazových dat - cvičení 9|Další cvičení]]
 
__TOC__
== Osnova ==
== Osnova ==


Řádek 35: Řádek 29:
Metoda hlavních komponent je v GRASSu dostupná pomocí modulu {{GrassPrikaz|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 <tt>rescale</tt>).
Metoda hlavních komponent je v GRASSu dostupná pomocí modulu {{GrassPrikaz|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 <tt>rescale</tt>).


<source lang="bash">
  g.region rast=tm1
  g.region rast=tm1
  #
  #
  # transformace hlavních komponent v GRASSu
  # transformace hlavních komponent v GRASSu
  #
  #
  i.pca input=tm1,tm2,tm3,tm4,tm5,tm7 output=pc
  i.pca input=tm1,tm2,tm3,tm4,tm5,tm7 output_prefix=pc
</source>


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


<source lang="bash">
  # hromadné nastavení tabulky barev pro kanály PC
  # hromadné nastavení tabulky barev pro kanály PC
  #
  #
Řádek 48: Řádek 45:
  r.colors map=$pc color=grey.eq; \
  r.colors map=$pc color=grey.eq; \
  done
  done
</source>


[[Soubor:ZOD-cv8-pc1-6.png|frame|center|Obr. č.3: Přehled PC kanálů]]
[[Soubor:ZOD-cv8-pc1-6.png|frame|center|Obr. č.3: Přehled PC kanálů]]
Řádek 55: Řádek 53:
== Transformace RGB - IHS ==
== Transformace RGB - IHS ==


Transformaci RGB - IHS (více {{153YZODCv|3|Barevné modely RGB a IHS|3. cvičení}}) lze mimo jiné využít pro zvětš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).
Transformaci [http://cs.wikipedia.org/wiki/RGB RGB] - [http://cs.wikipedia.org/wiki/HSV IHS] (více {{153YZODCv|3|Barevné modely RGB a IHS|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í a následně tento celek transformován zpět do prostoru barev RGB.
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.


[[Soubor:ZOD-cv8-rgb2ihs.png|frame|center|Obr č.5: Postup při zvýšení geometrického rozlišení prvních tří pásem LandSat7-ETM+ metodou transformace RGB &rarr; IHS &rarr; RGB]]
[[Soubor:ZOD-cv8-rgb2ihs.png|frame|center|Obr č.5: Postup při zvýšení geometrického rozlišení prvních tří pásem LandSat7-ETM+ metodou transformace RGB &rarr; IHS &rarr; RGB]]


  # nastavit region podle vrstvy etm1
<source lang="bash">
  # nastavit region podle vrstvy tm1 (-p zaroven vytiskne nastaveni regionu)
  #
  #
  g.region rast=etm1 -p
  g.region rast=tm1 -p
</source>
   
   
  projection: 99 (krovak)
  projection: 99 (krovak)
Řádek 79: Řádek 78:
  cols:      2223
  cols:      2223


  # nastavit tabulku barev "grey.eq" pro první tři pásma LandSat7-ETM+
<source lang="bash">
  # 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
</source>
 
''Poznámka:'' pro nastavení tabulky barev pro první tři kanály lze také použít modul {{grassPrikaz|i.landsat.rgb}}.
 
Následně je provedena transformace RGB &rarr; IHS a to pomocí modulu {{GrassPrikaz|i.rgb.his}}.
 
<source lang="bash">
# transformace RGB -> IHS
  #
  #
  r.colors color=grey.eq map=etm1
  i.rgb.his red_input=tm3 green_input=tm2 blue_input=tm1 \
r.colors color=grey.eq map=etm2
  hue_output=hue intensity_output=int saturation_output=sat
  r.colors color=grey.eq map=etm3
</source>


Následně je provedena transformace RGB &rarr; IHS a to pomocí modulu {{GrassPrikaz|i.rgb.his}}. Před vlastní transformací je nutné nastavit požadované rozlišení (v tomto případě 15m).
Před další transformací je nutné nastavit požadované rozlišení (v tomto případě 15m).


<source lang="bash">
  # nastavení požadovaného rozlišení
  # nastavení požadovaného rozlišení
  #
  #
  g.region res=15 -p
  g.region res=15 -p
</source>
 
  projection: 99 (krovak)
  projection: 99 (krovak)
  zone:      0
  zone:      0
Řádek 103: Řádek 117:
  rows:      3321
  rows:      3321
  cols:      4445
  cols:      4445
# transformace RGB -> IHS
#
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, modul {{GrassPrikaz|i.his.rgb}}.
Takto vytvořené obrazové vrstvy (model barev IHS) zpětně převedeme do prostoru barev RGB, modul {{GrassPrikaz|i.his.rgb}}.


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


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


<source lang="bash">
  # nastavit tabulku barev na "grey.eq"
  # nastavit tabulku barev na "grey.eq"
  #
  #
  r.colors col=grey.eq map=tm1_15
  r.colors color=grey.eq map=tm1_15
  r.colors col=grey.eq map=tm2_15
  r.colors color=grey.eq map=tm2_15
  r.colors col=grey.eq map=tm3_15
  r.colors color=grey.eq map=tm3_15
  #
  #
  # RGB syntéza ve skutečných barvách (321)
  # RGB syntéza ve skutečných barvách (321)
  #
  #
  d.rgb r=tm3_15 g=tm2_15 b=tm1_15
  d.rgb red=tm3_15 green=tm2_15 blue=tm1_15
</source>


[[Soubor:ZOD-cv8-rgb_ihs_detail.png|frame|center|Obr č.6: Detail scény, RGB syntéza ve&nbsp;skutečných barvách (321); vlevo originální data, vpravo po&nbsp;transformaci RGB &rarr; IHS &rarr; RGB]]
[[Soubor:ZOD-cv8-rgb_ihs_detail.png|frame|center|Obr č.6: Detail scény, RGB syntéza ve&nbsp;skutečných barvách (321); vlevo originální data, vpravo po&nbsp;transformaci RGB &rarr; IHS &rarr; RGB]]
Řádek 132: Řádek 145:
== Broveyova transformace ==
== Broveyova transformace ==


<source lang="bash">
  # region na požadované rozlišení
  # region na požadované rozlišení
  #
  #
Řádek 144: Řádek 158:
  # tabulka barev "grey"
  # tabulka barev "grey"
  #
  #
  r.colors col=grey map=brov.red
  r.colors color=grey map=brov.red
  r.colors col=grey map=brov.green
  r.colors color=grey map=brov.green
  r.colors col=grey map=brov.blue
  r.colors color=grey map=brov.blue
  #
  #
  # RGB syntéza ve skutečných barvách
  # RGB syntéza ve skutečných barvách
  #
  #
  d.rgb r=brov.red g=brov.green b=brov.blue
  d.rgb red=brov.red green=brov.green blue=brov.blue
</source>


GRASS disponuje navíc speciálním modulem {{GrassPrikaz|i.fusion.brovey}}.
GRASS disponuje navíc speciálním modulem {{GrassPrikaz|i.fusion.brovey}}.


  i.fusion.brovey -l ms1=etm2 ms2=etm4 ms3=etm5 pan=etm8 out=brov
<source lang="bash">
  i.fusion.brovey -l ms1=etm2 ms2=etm4 ms3=etm5 pan=etm8 output=brov
</source>


[[Soubor:ZOD-cv8-rgb_brovey.png|frame|center|Obr č.7: RGB syntéza (321) - data po Broveyově transformaci]]
[[Soubor:ZOD-cv8-rgb_brovey.png|frame|center|Obr č.7: RGB syntéza (321) - data po Broveyově transformaci]]
----
< [[153YZOD Zpracování obrazových dat|Stránky předmětu]] {{bullet}} [[153YZOD Zpracování obrazových dat - cvičení 7|Předchozí cvičení]] {{bullet}} [[153YZOD Zpracování obrazových dat - cvičení 9|Další cvičení]]


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

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

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