Önálló labor beszámoló Képek szegmentálása textúra analízis segítségével 2011. május 22. Konzulens: Dr. Pataki Béla
Tartalomjegyzék 1. Bevezetés 2 2. Források 2 3. Kiértékelő szoftver 3 4. A képek feldolgozása 5 5. További teendők 6 A. Kép készlet 8 1. Bevezetés A textúra analízis a képfeldolgozás egyik aspektusa, más tulajdonságok mellett ez is segíthet a képek osztályozásában, szegmentálásában, amikor alapvetőbb módszerek (éles kontúrok keresés, vagy fényesség-beli eltérés) sikertelenek. A textúra analízis a kép mintázatát veszi figyelembe, ennek a konkrét megvalósítására az évek folyamán sok különböző, többé vagy kevésbé hatékony módszer alakult ki a textúrák jellemzésére, pl. ko-okkurencia mátrix, Laws szűrők, SRDM, futási hossz elemzés, stb. Azonban ezeket a módszereket a legtöbbször egy konkrét célra alakították ki, és általában bonyolult paraméterezésük van, amelyek beállítása egy adott alkalmazáshoz nagy szakértelmet igényel. Ezért a cél egy olyan eszköz kialakítása lenne, amely ezeket a beállításokat a képtől függően automatikusan elvégzi. Ennek első lépéseként az egyik legelterjettebb módszert, a ko-okkurencia mátrixot vizsgáltam, hogy a kép valamilyen előfeldolgozásával tudok-e a képből olyan információt kinyerni, ami sikeresen használható a módszer beállításához. A teszteket egy, a Berkeley egyetemen kialakított kép készleten végeztem, amelyhez szolgáltattak emberek által végzett szegmentációkat, ami sokat segített abban, hogy az algoritmus képességét a különböző felületek megkülönböztetésére teszteljem. 2. Források Az algoritmust egy a Berkeley egyetemen kialakított kép készlet egy részhalmazán végeztem. Ennek a képhalmaznak az a specialitása, hogy minden 2
képhez megadott több emberek által elvégzet szegmentálás is, így van mihez hasonlítani az algoritmust. Például a egy kép és a szementálása látható a 1. ábrán. A teljes készlet elérhető a http://www.eecs.berkeley.edu/ Research/Projects/CS/vision/bsds/ címen. 1. ábra. Egy kép, és az ember által végzett szegmentálása Ott arra használják a halmazt, hogy különböző szegmentálási algoritmusokat teszteljenek vele. Ezért hozzáférhető a honlapon egy kiértékelő szoftver is, amivel ki lehet próbálni saját szegmentálási algoritmusokat, azonban mivel az Önálló labor keretein belül én még szegmentáló algoritmust nem hozok létre, ezért ezt nem használom. Ez az oka hogy szét vannak választva a képek egy 200 képes tanuló, és egy 100 képes tesztelő halmazra, azzal az utasítással, hogy a tanuló halmazt használjuk csak esetleg az algoritmusunk finomhangolására, ezért én is csak a tanuló halmazból választottam képeket az én tesztelésemhez. Viszont ez a kép készlet általánosan a képszegmentálás minden fajtájának kipróbálására készült, azonban én csak textúra analízist végzek, ezért kiválasztottam a képek közül 14-et, amelyeken viszonylag nagy, konzisztens textúrájú részek vannak. Például a 2. ábrán egy emberi arc van, és az alapján van szegmentálva, így nem lenne jó mércéje a textúra jellemzők hatékonyságának. Emellett a képekből van színes, és fekete-fehér változat is, ebből most én a fekete-fehéret használom, mert az általam most tesztelt módszer fekete-fehér képekre működik, de ez a program színesekre is ugyanilyen jól 3
működne. 2. ábra. Bizonyos képek nem alkalmasak a textúrajellemzők tesztelésére A teljes általam kiválasztott képhalmaz megtalálható az A függelékben. 3. Kiértékelő szoftver A különböző, megalkotandó textúra tulajdonságok kiértékelésére készítettem egy szoftvert, C++ nyelven, a Qt keretrendszer segítségével. A program kezelőfelülete a 3. ábrán látható. Ezzel a programmal be lehet tölteni egy képet, egy hozzá tartozó szegmentálást, majd egy vagy több tulajdonságot. A tulajdonságnak úgy kell kinéznie, hogy a kép minden pixeléhez rendel egy számértéket, és lehet képfájlban, vagy az értékek sorfolytonosan egy szövegfájlban. A kiértékelésnél azt csinálja a program, hogy minden szegmensre megnézi az arra eső értékek átlagát, és szórását (ha több tulajdonságot betöltöttem, akkor ez többdimenziós átlag ill. szórás). Ezután minden seg1, seg2 szegmens párra kiszámol egy ( ) Szoras[seg1] + Szoras[seg2] arctan 2/π Atlag[seg1] Atlag[seg2] értéket, ami azt jellemzi hogy mennyire rosszul elválasztható az adott szegmens pár, egy 0 és 1 közötti számmal. (Az arctan segítségével visszük a 0 4
3. ábra. A kiértékelő program és végtelen közötti értéket 0 és 1 közé.) Ezután ezt az értéket átlagoljuk az összes párra, és ez a kimenet. Ezt az értéket szeretnénk minél jobb jellemzők megtalálásával minimalizálni a kiválasztott képekre. A program kezelhető a kezelőfelületen keresztül, amit például a működés kipróbálására lehetett használni, és így egyesével lehet kiértékelni a képeket. Vagy van egy parancssoros változat, ami egy szövegfájlt vár, amiből olvassa be a kép-, szegmentálás- és tulajdonságfájlok helyét, így akár több tulajdonság feldolgozása is végezhető egy körben. 4. A képek feldolgozása A képek feldolgozására a ko-okkurancia mátrixot használtam, azonban mivel ez egyben tud egy nagyobb területet vizsgálni, ezért a használata előtt a képet négyzet alakú részekre bontottam. A ko-okkurancia mátrixnál úgy próbáljuk jellemezni a textúrát, hogy valamilyen eltolási vektort választunk, és azt vizsgáljuk, hogy milyen világosság szintről milyenre hányszor megy a kép az adott vektor mentén. Így a létrejött mátrix n n-es, ha n világossági szint van a képen, így érdemes a képet kevesebb szintre kvantálni a feldolgozás előtt, hogy gyorsítsuk a számítást. Egy egyszerű példát lehet látni a 4. ábrán. A Matlab szoftvercsomag az Image Processing Toolbox-ában tartalmaz a ko-okkurancia mátrix kezelésére függvényeket. Képes a ko-okkurancia mátrix 5
4. ábra. Egy egyszerű példa 8 szintű ko-okkurencia mátrixra Kontraszt Korreláció Energia Homogenitás i,j i j 2 p(i, j) (i µi)(j µj)p(i,j) i,j σ i σ j i,j p(i, j)2 p(i,j) i,j 1+ i j 1. táblázat. A Matlab által ismert ko-okkurancia mátrix tulajdonságok kiszámolására, és különböző tulajdonságainak kinyerésére beépített függvényeivel. A 1. táblázatban láthatóak az általa ismert ko-okkurancia mátrix tulajdonságok. Létrehoztam egy függvényt Matlabban, ami egyben elvégzi a kép beolvasását, felvágását kisebb négyzetekre, azokon a ko-okkurancia mátrix létrehozását, majd a tulajdonság kinyerését, és elmenti a kimenetet egy kép, vagy szövegfájlba. Ez paraméterül kapja azt, hogy mekkorák legyenek a felbontás négyzetei, hogy melyik tulajdonságot nyerje ki a ko-okkurancia mátrixból, hogy mekkora legyen a ko-okkurancia mátrix offset-je és hogy hány szintre kvantálja az eredeti képet a mátrix létrehozása előtt. A lehetséges tulajdonságok jelenleg azok, amiket a Matlab nyújt. Ezek lesznek azok a tulajdonságok, amiket a késöbbiekben majd minél optimálisabb értékre szeretnénk beállítani. Kétféle paraméterezéssel feldolgozott változata a képnek látható a 2. táblázatban. 6
Kontraszt Blokkméret: 20 Eltolás: (0, 5) Érték: 0.572521 Kontraszt Blokkméret: 20 Eltolás: (5, 0) Érték: 0.795217 Homogenitás Blokkméret: 20 Eltolás: (0, 5) Érték: 0.545281 Homogenitás Blokkméret: 15 Eltolás: (0, 5) Érték: 0.582069 2. táblázat. Néhány teszt és az eredménye 7
5. További teendők Az önálló labor tárgy alatt létrehoztam egy keretet, amivel képes leszek kutatásokat végezni a ko-okkurancia mátrix paraméterezésével, vagy akár más textúra jellemzőkkel. Már mindkét oldalról (feldolgozás, kiértékelés) automatizálható a folyamat, még valamilyen módot kéne kialakítani a kettő összekötésére. Az lenne a cél, hogy a feldolgozás eredményét automatikusan továbbadja a kiértékelőnek, azokkal az adatokkal együtt, hogy milyen paraméterezéssel dolgozta éppen fel, így majd valamelyik oldal össze tudja foglalni az eredményeket. Ezek után lehet nagyobb szabású teszteket végezni, amikben a különböző paraméterezéseket, esetleg több tulajdonság együttes használatát kipróbálom hatékonyság szempontból. Megvizsgálhatom, hogy melyik tulajdonságok működnek jól, illetve hogy melyik kombinációk. A tényleges cél pedig az lenne, hogy valamilyen módon automatikusan beállítsuk az értékeket. Több lehetőség is felmerül, például a teljesítményspektrum, vagy az autokorreláció alapján lehet az eltolási vektort és a blokk méretét próbálni beállítani. Az lenne siker, ha a teljes képhalmazon jobb eredményt tudna elérni automatikus beállítással, mint bármelyik fix paraméterrel. A. Kép készlet 8
9