153ZODH / 6. cvičení
< Stránky předmětu • Př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.
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

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

# 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

Tento operátor je definován vztahem
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
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
