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

Z GeoWikiCZ
Přejít na: navigace, hledání
m (sablona)
(Osnova: detekce hran)
Řádek 8: Řádek 8:
 
__TOC__
 
__TOC__
 
== Osnova ==
 
== Osnova ==
 +
 +
== Detekce hran ==
 +
 +
Hranu lze definovat jako ''diskontinuitu'' obrazové funkce (tj. signifikatní změnu digitálních hodnot). Hrana je tedy oblast v obraze, kde se výrazně nebo skokově mění hodnota stupňů šedi. Hrany lze rozdělit na tři základní typy:
 +
 +
* ''střechová hrana'' (roof edge) - světlejší liniový útvar na tmavším pozadí (např. polní cesta, betonová silnice)
 +
* ''příkopová hrana'' (ditch edge) - tmavší liniový útvar na světlejším pozadí (např. vodní tok)
 +
* ''stupňová hrana'' (step edge) - rozhraní mezi tmavějším a světlejším objektem (např. rozhraní pole-les)
 +
 +
Filtry (vysokofrekvenční) určené k detekci hran jsou založeny na principu ''plovoucího okna''. Tím se vyhledávají lokální hrany, v další fázi je nutno rozhodnout, zda jde o skutečné hrany či pouhé vnitřní nespojitosti obrazu. Zde se obvykle používá metoda ''práhování''. Nakonec se provádí ''ztenčení hran'' a konečná filtrace.
 +
 +
'''[http://en.wikipedia.org/wiki/Sobel Sobelův filtr]'''
 +
 +
Tento filtr nejdříve operuje ve směru sever-jih (N-S) a následně ve směru východ-západ (E-W). Definice pro {{GrassPrikaz|r.mfilter}}:
 +
 +
TITLE Sobel (3x3)
 +
MATRIX 3
 +
-1 0 1
 +
-2 0 2
 +
-1 0 1
 +
DIVISOR 1
 +
TYPE P
 +
 +
MATRIX 3
 +
1 2 1
 +
0 0 0
 +
-1 -2 -1
 +
DIVISOR 1
 +
TYPE P
 +
 +
g.region rast=tm1
 +
r.mfilter input=tm1 output=tm1_sobel filter=sobel.txt
 +
r.colors map=tm1_sobel color=grey.eq
 +
d.rast tm1_sobel
 +
 +
[[Soubor:ZOD-cv6-tm1_tm1_sobel.png|frame|center|Obr. č.1: Vybraný detail prvního pásma LandSat-TM5, vlevo originální data, vpravo po aplikaci Sobelova filtru]]
 +
 +
Dále můžeme provést {{153YZODCv|6|Práhování|práhování}} obrazu
 +
 +
pokud je DH kladná, ulož do výstupní vrstvy hodnotu "1",
 +
v opačném případě "žádná data" (null data)
 +
 +
v zápisu pro {{r.mapcalc}} vypadá podmínka '''if''' takto:
 +
 +
r.mapcalc 'tm1_hrana=if (tm1_sobel > 0, 1, null())'
 +
d.rast tm1_hrana
 +
 +
Nakonec můžeme provést ztenčení detekovaných hran pomocí modulu {{GrassPrikaz|r.thin}}:
 +
 +
# ztenčení hran
 +
#
 +
r.thin input=tm1_hrana output=tm1_hrana1
 +
d.rast tm1_hrana1
 +
 +
[[Soubor:ZOD-cv6-tm1_tm1_hrany.png|frame|center|Obr. č.2: Detekované hrany po binarizaci (vlevo) a jejich ztenčení (vpravo)]]
 +
 +
# barevná syntéza ve skutečných barvách
 +
#
 +
d.rgb red=tm3 green=tm2 blue=tm1
 +
#
 +
# zobrazení rastrové vrstvy se ztenčenými hranami (pozor na přepínač -o: transparentní mód)
 +
#
 +
d.rast -o tm1_hrana1
 +
 +
[[Soubor:ZOD-cv6-rgb_hrany.png|frame|center|Obr. č.3: Prezentace výsledků Sobelova filtru, na pozadí barevná syntéza ve skutečných barvách]]
 +
 +
'''[http://en.wikipedia.org/wiki/Roberts_Cross Robertsův gradient]'''
 +
 +
Tento operátor je definován vztahem
 +
 +
<math>p(i,j) = |f(i,j) - f(i+1,j+1)| + |f(i+1,j) - f(i,j+1)|\,</math>
 +
 +
v zápisu pro {{GrassPrikaz|r.mapcalc}}:
 +
 +
# aplikace Robertsova grafientu
 +
#
 +
r.mapcalc 'tm1_roberts = abs (tm1[0,0]-tm1[1,1]) + abs (tm1[1,0]-tm1[0,1])'
 +
r.colors tm1_roberts col=grey.eq
 +
 +
'''[http://en.wikipedia.org/wiki/Prewitt Prewittův operátor]'''
 +
 +
Definice pro {{GrassPrikaz|r.mfilter}}:
 +
 +
TITLE Prewittuv operator (3x3)
 +
MATRIX 3
 +
-1 -1 -1
 +
0 0 0
 +
1 1 1
 +
DIVISOR 1
 +
TYPE P
 +
 +
MATRIX 3
 +
-1 0 1
 +
-1 0 1
 +
-1 0 1
 +
DIVISOR 1
 +
TYPE P
 +
 +
r.mfilter in=tm1 out=tm1_prewitt filter=prewitt.txt
 +
r.colors map=tm1_prewitt color=grey.eq
 +
 +
[[Soubor:ZOD-cv6-tm1_roberts_prewitt.png|frame|center|Obr č.4: První kanál LandSat-TM5, Robertsův a Prewittův operátor]]
  
  

Verze z 28. 10. 2008, 20:47

Detekce hran, ostřící operátory, prahování

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

Osnova

Detekce hran

Hranu lze definovat jako diskontinuitu obrazové funkce (tj. signifikatní změnu digitálních hodnot). Hrana je tedy oblast v obraze, kde se výrazně nebo skokově mění hodnota stupňů šedi. Hrany lze rozdělit na tři základní typy:

  • střechová hrana (roof edge) - světlejší liniový útvar na tmavším pozadí (např. polní cesta, betonová silnice)
  • příkopová hrana (ditch edge) - tmavší liniový útvar na světlejším pozadí (např. vodní tok)
  • stupňová hrana (step edge) - rozhraní mezi tmavějším a světlejším objektem (např. rozhraní pole-les)

Filtry (vysokofrekvenční) určené k detekci hran jsou založeny na principu plovoucího okna. Tím se vyhledávají lokální hrany, v další fázi je nutno rozhodnout, zda jde o skutečné hrany či pouhé vnitřní nespojitosti obrazu. Zde se obvykle používá metoda práhování. Nakonec se provádí ztenčení hran a konečná filtrace.

Sobelův filtr

Tento filtr nejdříve operuje ve směru sever-jih (N-S) a následně ve směru východ-západ (E-W). Definice pro r.mfilter:

TITLE Sobel (3x3)
MATRIX 3
-1 0 1
-2 0 2
-1 0 1
DIVISOR 1
TYPE P

MATRIX 3
1 2 1
0 0 0
-1 -2 -1
DIVISOR 1
TYPE P
g.region rast=tm1
r.mfilter input=tm1 output=tm1_sobel filter=sobel.txt
r.colors map=tm1_sobel color=grey.eq
d.rast tm1_sobel
Obr. č.1: Vybraný detail prvního pásma LandSat-TM5, vlevo originální data, vpravo po aplikaci Sobelova filtru

Dále můžeme provést práhování obrazu

pokud je DH kladná, ulož do výstupní vrstvy hodnotu "1",
v opačném případě "žádná data" (null data)

v zápisu pro Šablona:R.mapcalc vypadá podmínka if takto:

r.mapcalc 'tm1_hrana=if (tm1_sobel > 0, 1, null())'
d.rast tm1_hrana

Nakonec můžeme provést ztenčení detekovaných hran pomocí modulu r.thin:

# ztenčení hran
#
r.thin input=tm1_hrana output=tm1_hrana1
d.rast tm1_hrana1
Obr. č.2: Detekované hrany po binarizaci (vlevo) a jejich ztenčení (vpravo)
# barevná syntéza ve skutečných barvách
#
d.rgb red=tm3 green=tm2 blue=tm1
#
# zobrazení rastrové vrstvy se ztenčenými hranami (pozor na přepínač -o: transparentní mód)
#
d.rast -o tm1_hrana1
Obr. č.3: Prezentace výsledků Sobelova filtru, na pozadí barevná syntéza ve skutečných barvách

Robertsův gradient

Tento operátor je definován vztahem

p(i,j) = |f(i,j) - f(i+1,j+1)| + |f(i+1,j) - f(i,j+1)|\,

v zápisu pro r.mapcalc:

# aplikace Robertsova grafientu
#
r.mapcalc 'tm1_roberts = abs (tm1[0,0]-tm1[1,1]) + abs (tm1[1,0]-tm1[0,1])'
r.colors tm1_roberts col=grey.eq

Prewittův operátor

Definice pro r.mfilter:

TITLE Prewittuv operator (3x3)
MATRIX 3
-1 -1 -1
0 0 0
1 1 1
DIVISOR 1
TYPE P

MATRIX 3
-1 0 1
-1 0 1
-1 0 1
DIVISOR 1
TYPE P
r.mfilter in=tm1 out=tm1_prewitt filter=prewitt.txt
r.colors map=tm1_prewitt color=grey.eq
Obr č.4: První kanál LandSat-TM5, Robertsův a Prewittův operátor



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