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

Z GeoWikiCZ
Řádek 53: Řádek 53:
[[Soubor:ZOD-cv8-tm1_amp.png|center|frame|Obr č.3: Obrazová vrstva s vypočtenou amplitudou]]
[[Soubor:ZOD-cv8-tm1_amp.png|center|frame|Obr č.3: Obrazová vrstva s vypočtenou amplitudou]]


Periodický šum je identifikovatelný jako pruhy ortogonální vůči směru poruch v originálních datech (často totožného se směrem letu nosiče skeneru). Tyto pruhy se tedy maskují a tím pádem neovlivní výsledek inverzní Fourierovy transformace. Masku (v podstatě binární filtr) lze vytvořit ''přímo'' pomocí {{GrassPrikaz|r.digit}} (zásadní nevýhodou modulu je nemožnost zoomování či posunu během vytváření nové rastrové vrstvy) či ''nepřímo'' - vytvoření masky ve vektorovém formátu ({{GrassPrikaz|v.digit}} či pomocí digitalizačního modulu {{GrassPrikaz|wxGUI}} a rasterizace masky pomocí {{GrassPrikaz|v.to.rast}}. Následuje postup pro wxGUI.
Periodický šum je identifikovatelný jako pruhy ortogonální vůči směru poruch v originálních datech (často totožného se směrem letu nosiče skeneru). Tyto pruhy se tedy maskují a tím pádem neovlivní výsledek inverzní Fourierovy transformace. Masku (v podstatě binární filtr) lze vytvořit ''přímo'' pomocí {{GrassPrikaz|r.digit}} (zásadní nevýhodou modulu je nemožnost zoomování či posunu během vytváření nové rastrové vrstvy) či ''nepřímo'' - vytvoření masky ve vektorovém formátu ({{GrassPrikaz|v.digit}} či pomocí digitalizačního modulu {{GrassPrikaz|wxGUI}}) a rasterizace masky pomocí {{GrassPrikaz|v.to.rast}}. Následuje postup pro wxGUI.


Do seznamu vrstev přidáme rastrovou vrstvu 'tm1_amp', která bude použita jako podklad pro vektorizaci pruhů. Digitalizační modul wxGUI spustíme z mapového okna "Tools->Digitize". Novou vektorovou vrstvu vytvoříme zvolením "Select vector map->Create new vector map". Vrstvu nazveme 'filtr' a vytvoříme ji bez atributové tabulky. V nastavení digitalizačního nástroje zrušíme volbu "Attributes->Digitize new feature->Add new record into table". Dále nastavíme výchozí kategorii na "1" ("Attributes->Digitize new feature->Category mode" nastavit na  
Do seznamu vrstev přidáme rastrovou vrstvu 'tm1_amp', která bude použita jako podklad pro vektorizaci pruhů. Digitalizační modul wxGUI spustíme z mapového okna "Tools->Digitize". Novou vektorovou vrstvu vytvoříme zvolením "Select vector map->Create new vector map". Vrstvu nazveme 'filtr' a vytvoříme ji bez atributové tabulky. V nastavení digitalizačního nástroje zrušíme volbu "Attributes->Digitize new feature->Add new record into table". Dále nastavíme výchozí kategorii na "1" ("Attributes->Digitize new feature->Category mode" nastavit na  

Verze z 29. 11. 2008, 14:34

Fourierova transformace

< Stránky předmětuPředchozí cvičeníDalší cvičení

Osnova

Teorie

Fourierova transfomace je založena na převodu dat z geometrického znázornění (tj. prostorového souřadnicového systému) do domény frekvenční (souřadnicového systému frekvenčního) - komplexního znázornění složkových četností výskytu. Během této transformace je tak obraz rozložen na frekvenční komponenty (diskrétními DH je proložena spojitá funkce, jde o funkce sinus a kosinus s různými amplitudami, frekvencemi), které jsou uloženy jako komplexní čísla. V případě dvoudimenzionální Fourierovy transformace jsou výsledkem dvě obrazové vrstvy - reálná a imaginarní část.

Tyto četnosti výskytu jsou rozloženy podél obou os a lze je znázornit ve dvourozměrném rozptylogramu (tzv. Fourierově spektru). Nulový bod ("DC" - direct current) má četnost 0,0 (viz obr. č.1). Se vzrůstající vzdáleností od nulového bodu stoupají četnosti výskytu (jsou kolem DC uspořádány symetricky). Jevy, které mají v původním obraze horizontální trend se vyskytují ve vertikálních komponentách Fourierova spektra a naopak.

Obr č.1: Rozdělení frekvencí ve Fourierově spektru

Tuto metodu lze využít např. pro identifikaci a eliminaci periodického šumu obsaženého v družicovém snímku. V tomto případě je nejprve provedena Fourierova transformace, posléze aplikována maska (šum se zobrazí ve Fourierově spektru ve tvaru pruhů) a data zpětně transformována do prostorové domény (inverzní Fourierova transformace).

FFT

Aplikace Fourierovy transformace (Fourierova transformace v diskrétním tvaru - Fast Fourier Transformation - FFT):

# nastavit výpočetní region
#
g.region rast=tm1
#
# Fourierova transformace
#
i.fft input=tm1 real=tm1_r imag=tm1_i

Následně můžeme vrstvy (reálnou 'tm_r' a imaginární část 'tm_i') vzniklé po Fourierově transformaci zobrazit v GRASS monitoru:

# nastavit region a zobrazit výsledné obrazové vrstvy 
#
g.region rast=tm1_r
d.erase -e
d.rast tm1_r
d.rast tm1_i
Obr č.2: Reálná část Fourierova spektra

Filtrace šumu pomocí FFT

Pro identifikaci šumu je použita reálná část nebo doplňková obrazová vrstva obsahující vypočtenou amplitudu (vytvořená pouze pro účel vizualizace):

# pomocná vrstva s vypočtenou amplitudou
#
r.mapcalc 'tm1_amp = sqrt (tm1_r^2 + tm1_i^2)'
d.rast tm1_amp
Obr č.3: Obrazová vrstva s vypočtenou amplitudou

Periodický šum je identifikovatelný jako pruhy ortogonální vůči směru poruch v originálních datech (často totožného se směrem letu nosiče skeneru). Tyto pruhy se tedy maskují a tím pádem neovlivní výsledek inverzní Fourierovy transformace. Masku (v podstatě binární filtr) lze vytvořit přímo pomocí r.digit (zásadní nevýhodou modulu je nemožnost zoomování či posunu během vytváření nové rastrové vrstvy) či nepřímo - vytvoření masky ve vektorovém formátu (v.digit či pomocí digitalizačního modulu wxGUI) a rasterizace masky pomocí v.to.rast. Následuje postup pro wxGUI.

Do seznamu vrstev přidáme rastrovou vrstvu 'tm1_amp', která bude použita jako podklad pro vektorizaci pruhů. Digitalizační modul wxGUI spustíme z mapového okna "Tools->Digitize". Novou vektorovou vrstvu vytvoříme zvolením "Select vector map->Create new vector map". Vrstvu nazveme 'filtr' a vytvoříme ji bez atributové tabulky. V nastavení digitalizačního nástroje zrušíme volbu "Attributes->Digitize new feature->Add new record into table". Dále nastavíme výchozí kategorii na "1" ("Attributes->Digitize new feature->Category mode" nastavit na "Manual entry"). Nyní přikročíme k vlastní digitalizaci.

Nejprve si zvětšíme detail pruhu, který chceme vektorizovat, z nástrojové lišty digitalizačního nástroje zvolíme "Digitize new boundary". Plochu digitalizujeme (levé tlačítko myši pro výběr dalšího lomové bodu, pravé tlačítko myši pro ukončení digitalizace). Tímto způsobem zvektorizujeme všechny identifikovatelné pruhy (ortogonální na směr letu nosiče). Poté každou plochu označíme centroidem nezbytně nutným pro rasterizaci této vektorové vrstvy. Editaci vektorové vrstvy ukončíme z kontextového menu vrstvy "Stop editing".

Provedeme rasterizaci vektorové vrstvy 'filtr' (Šablona:GRASSPrikaz).

# nutno přenastavit výpočetní region
#
g.region rast=tm1_amp
#
# rasterizace na základě kategorií ploch
#
v.to.rast in=filtr out=filtr use=cat
Obr č.5: Příklad filtru použitého jako masky pro inverzní Fourierovu transformaci

Masku vytvoříme jako doplněk k rastrové vrstvě pomocí r.mapcalc:

# vytvoření masky
#
r.mapcalc 'MASK=if(isnull(filtr),1,null())'
Obr č.6: Vizualizace tm1_amp s aktivovanou maskou

Nyní aplikuje inverzní Fourierovu transformaci.

# inverzní Fourierova transformace
#
i.ifft real=tm1_r imag=tm1_i output=tm1_fft
#
# odstranění (deaktivace) masky
#
g.remove rast=MASK
#
# nastavení tabulky barev na "grey.eq"
#
g.region rast=tm1
GRASS > r.colors map=tm1_fft color=grey.eq
d.rast tm1_fft
Obr č.7: První pásmo LandSat5-TM po odstranění periodického šumu



< Stránky předmětuPředchozí cvičeníDalší cvičení