Felvételek osztályozása, objektumfelismerés

A fejezet során felhasználandó téradatok (elérhetők a Letöltéseknél):

  • Ortofotó
  • Épületek
  • Településhatár

A fejezet a felvételek osztályozását GRASS függvények, eljárások alkalmazásával mutatja be. A GRASS a QGIS-hez hasonlóan szintén egy térinformatikai rendszer. Mivel a GRASS C nyelven íródott, ezért a függvények rendkívül gyorsan lefutnak.

Választásom azért is a GRASS-ra esett, mivel a GRASS függvények a QGIS környezetből könnyen elérhetők. Megjegyzem az Orfeo Toolbox is telepíthető, illetve kapcsolható a QGIS-hez, azonban a szegmentációs eljárásaik számos hibát tartalmaznak.

Az RGB színes, illetve több spektrális sávot tartalmazó felvételek osztályozásának, illetve objektumok detektálásának számtalan módja létezik.
A legkorszerűbb elemzéséket az OBIA (Object-Based Image Analysis) eszközöknek, szoftvereknek tulajdonítják, újabban a GEOBIA rövidítés is használatos. Néhány szoftver a területről:

  • eCognition (kereskedelmi)
  • GRASS (szabad szoftver)
  • Opticks (szabad szoftver)
  • Orfeo Toolbox (szabad szoftver)

Osztályozási terület előkészítése

A "Topográfiai térkép készítése" fejezethez hasonlóan most is Balatonakarattyán dolgozzunk. Töltsük be az OSM-ből levezetett épületeket, majd szelektáljuk a településréteg segítségével szelektáljuk azokat, amelyek Balatonakarattyára esnek. Készítsünk egy új réteget a szelektáltakból.

Töltsünk be georeferált ortofotó(ka)t a területre, helyezzük őket az épületek alá:

1. ábra: OpenStreetMap épület 'körvonalak', alatta 2009-es FÖMI ortofotó, nyári.
1. ábra: OpenStreetMap épület 'körvonalak', alatta 2009-es FÖMI ortofotó, nyári.

Mivel Balatonakarattyán az épületek javát az OSM felhasználók felszerkesztették, ezért ez a település különösen alkalmas lehet a különféle szegmentálási módszerek minőségi ellenőrzésére. Az is jól látható, hogy a nyári növényzet komoly nehézséget fog okozni a feladatban, illetve nagy hatással lesz az eredmények minőségére.

Radiometriai osztályozás

Alakítsuk át az ortofotó RGB sávait önálló R, G és B sávokká a Raszter kalkulátor segítségével:

Raszter / Raszter kalkulátor
Kifejezés: "ortofoto@1"

2. ábra: Vörös sáv intenzitás értékei, Balatonakarattya.
2. ábra: Vörös sáv intenzitás értékei, Balatonakarattya.

Hasonlóan készítsük el a további sávokat is.

Először készítsünk spektrális lenyomatokat (spectral signature) az ortofotó sávértékeiből, intenzitásaiból. Mivel felügyelet nélküli osztályozást hajtunk végre, így ezekhez a spektrális lenyomatokhoz nem tartoznak előre megadott osztálynevek (pl. aszfalt, kukorica nyáron), úgymond 'a poszteriori' utólagosan tudjuk eldöntető, hogy az osztály neve pl. "balatonakarattyai háztető"-k lesz.

A klaszterek (más néven csoport, osztály) N-dimenziós (sávok száma) középpontjait, illetve a klaszterekhez tartozó eloszlás jellemzőket - szórásokat - tartalmazó spektrális lenyomat szövegfájlt az i.cluster függvény meghívásával tudjuk elkészíteni:

Bemeneti raszterek: állítsuk be a három sávról készített rasztereket
Kezdeti klaszterek száma: 5
Signature file: mentsük egy önálló fájlba

Az alsó háromszögmátrix főátlója a varianciákat (az osztályhoz sorolt elemeknek az adott sávbeli eltérésnégyzeteit), a főátló alatti részek a kovarianciákat (az osztályhoz sorolt elemek más sávokkal számított eltérésösszegeit) tartalmazza.

3. ábra: A GRASS-ban számított 5 osztály kovariancia mátrixaiból levezetett 95 %-os szórás ellipszoidok az RGB térben, Wolfram Mathematica.
3. ábra: A GRASS-ban számított 5 osztály kovariancia mátrixaiból levezetett 95 %-os szórás ellipszoidok az RGB térben, Wolfram Mathematica.

Ezt követően a lenyomat fájlt már be tudjuk tölteni az i.maxlik függvénybe, amivel osztályozni tudjuk a felvételünket:

Bemeneti raszter: állítsuk be a három sávról készített rasztereket
Bemeneti lenyomat fájl: a korábban elmentett fájl

4. ábra: Ortofotó öt radiometriai osztályba sorolva.
4. ábra: Ortofotó öt radiometriai osztályba sorolva.

Az i.maxlik (Maximum likelihood classifier - legvalószínűbb osztályozó) függvény a kovariancia mátrixok alapján kiszámítja, hogy a vizsgált cella melyik osztályhoz milyen valószínűséggel tartozik. Majd végül a valószínűségeket tartalmazó listából azt az osztályt (klasztert) rendeli a cellához, ahol a legnagyobb az érték - ami a legvalószínűbb.

Érdemes elvégezni a raszter vektorizálását:

Raszter / Konverzió / Felület készítés

Illetve kézzel készítsünk egy szűrést arról, vagy azokról az osztályokról szelektáljuk, amelyik látszólag a legtöbb épületet tartalmazzák:

5. ábra: Épületek radiometriai lehatárolása.
5. ábra: Épületek radiometriai lehatárolása.

Látható, hogy az eredmény nem tökéletes, mivel bizonyos házak tetejének csak az egyik felét tartalmazza, illetve az utak is ebbe az osztályba kerültek. De alapvetően nem rossz, az utak a méretük alapján törölhetők, a kisebb foltok szintén, a megmaradt vonalak egyszerűsíthetők, befoglaló téglalapok készíthetők rájuk, és így tovább.

Objektum-orientált osztályozás

Nézzünk meg egy másik osztályozási módszertant. Teszteljük a GRASS i.segment szegmentáló algoritmusát, futtassuk az eljárást az ortofotón különféle paraméter beállításokkal.

Input rasters: ortofoto
Difference threshold: 0.25
Minimum number of cells in a segment: 40

6. ábra: Szegmentáció eredménye 0.25 küszöbértékkel. Néhány háztető passzol csupán.
6. ábra: Szegmentáció eredménye 0.25 küszöbértékkel. Néhány háztető passzol csupán.

Az eredmények értelmezéséhez érdemes átalakítani a szegmentált rasztert vektorossá.

A többi ábrához hasonlóan állítsunk be piros szegélyvonalat, és átlátszó kitöltést a rétegen:

7. ábra: A szegmentálás eredménye vektorfelületekkel, 0.25 küszöbértékkel.
7. ábra: A szegmentálás eredménye vektorfelületekkel, 0.25 küszöbértékkel.

A 7. ábrán jól látható, hogy a fák mellett az árnyékok is komoly akadályt képeznek a szegmentálásban. Illetve vannak esetek amikor az épületek és a füves területek összemosódnak. Nézzük meg az eljárást eltérő küszöbérték használatával.

8. ábra: A szegmentálás eredménye 0.50 küszöbértékkel. A vektoros elemek száma közel 20 %-kal csökkent.
8. ábra: A szegmentálás eredménye 0.50 küszöbértékkel. A vektoros elemek száma közel 20 %-kal csökkent.

Következésképp minél nagyobb a küszöbérték, annál kevesebb szegmenst kapunk eredményül, így a képen összemosódhatnak olyan objektumok, amelyeknek nem kellene.

9. ábra: Szegmentálás eredmények, sárga - 0.50, piros - 0.25.
9. ábra: Szegmentálás eredmények, sárga - 0.50, piros - 0.25.

Alapvetően az i.segment eljárás egy alulról-fölfelé (bottom-up) építkező módszer, amely az objektumok primitív jellemzőit veszi figyelembe. Ha két szomszédos szegmens hasonlósága - ezt az eljárás valamilyen távolságmetrikával méri, tehát a hasonló szegmensek úgymond közel vannak egymáshoz - a beállított küszöbérték alatt van, akkor a szegmensek összevonódnak. Az eljárás addig fut, amíg már nincs két olyan szomszédos szegmens, ami összevonható lenne.

© Dr. Wirth Ervin