340 likes | 504 Views
Dobókocka projekt. Képfeldolgozás II. A csapat. Bátori Csaba Borbola Péter Kovács Norbert. Feladatkiírás. A feladat szerint két dobókockával kell dobni, majd készíteni egy olyan képet, amin mindkét dobókocka 3 lapja látszik, végül a két felső lapon látható pontokat összeadni.
E N D
Dobókocka projekt Képfeldolgozás II.
A csapat • Bátori Csaba • Borbola Péter • Kovács Norbert
Feladatkiírás • A feladat szerint két dobókockával kell dobni, majd • készíteni egy olyan képet, amin mindkét dobókocka 3 lapja látszik, • végül a két felső lapon látható pontokat összeadni
Kezdeti problémák • Legelső probléma maga a kocka • Kezdetben úgy véltük, hogy a kerekített csúcsú kocka nem megfelelő /kiderült, hogy más a gond/ • üzletekben csak ilyen kapható ¯ • saját dobókocka készítése
Kezdeti problémák • Következő nehézség a szegmentálás • Ezt megfelelő világítással küszöböltük ki • A kockák felső lapja kellőképpen megvilágítva jó eredményt hozott • Fontos a képalkotás megfelelő szöge • Mind a látható felszínek • Mind a későbbi feladatok miatt
Kezdeti problémák • Ami menetközben került felszínre: • Az órán bemutatott K-means klaszterezés • „cityblock”-ot használunk, de néha jobb a „sqEuclidean” • Mindössze a tapasztalat döntött
A program felépítése • Szürkeárnyalatossá alakítás • Otsu algoritmus végrehajtása • Mediánszűrés • Objektumszám vizsgálat (>2?) • Ha szükséges, eróziót hajtunk végre • Egy újabb objektumszám vizsgálat (==2?) • Ha az objektumok száma kettő, akkor megvizsgáljuk, hogy a második komponens kocka felszíne-e 7. a, Felszínek kiválasztása, majd a pöttyök megszámolása 7. b, Egyébként klaszterezés, végül az egyes klasszterekbe tartozó pöttyök összeadása
Szürkeárnyalatossá alakítás • Egy beépített Matlab függvényt használtunk: I a beolvasott kép J = rgb2gray(I);
Otsu-algoritmus • A bemeneti J kép szürkeárnyalatos • A normalizált hisztogram minden x szürkeértékhez megadja az előfordulási gyakoriságát(valószínűségét): px • Az algoritmus lényege: keressük meg azt a T küszöbszámot, amely maximalizálja az objektumháttér közötti varianciát.
Otsu-algoritmus • A globális küszöbérték meghatározása:level = graythresh(J); • A küszöbérték alapján a bináris kép előállítása:BW = im2bw(J,level);
A mediánszűrés • Ez szintén beépített Matlab függvény: BWMED = medfilt2(BW,[25 20]); • Ahol szűrő mérete 25x20 maszk, mert ekkora méret már kellően zaj mentesíti a képet.
Az objektumszám vizsgálata • Megnézzük, hogy az objektumok száma nagyobb-e mint 2 (bwlabel()) • Ha igen, akkor eróziót hajtunk végre: st = strel('disk',6); //6-os méretű ‘disk’ szerkesztőelem BWR = imerode(BWMED,st); • Ha pontosan kettő, akkor megnézzük, hogy a második kockafelszín-e (pöttyök keresése az objektumon)
Első eset • Amikor mindkét objektum kockafelszín A felszínek különválasztása: [r,c] = find(bwlabel(BWR)==1); • CUBE1 = bwselect(BWR,c,r) Inverzképzés (pöttyszámolás miatt): CUBE1INV = ~CUBE1; Pöttyszámolás: [labeled,numObjects] = bwlabel(CUBE1INV); • cube1Sum = numObjects-1; (-1 a háttér miatt)
Második eset • A két kocka felszíne összefolyik • Inverzképzés (pöttyszámolás miatt) • Pöttyök koordinátájának tárolása (medián x,y) • Ezeken K-means eljárás végrehajtásakMeansResult = kmeans(comps,2,'Distance','cityblock'); • Klasszterek alapján az eredeti képen színezünk is
Ennyit az elméleti háttérről Magának a programnak a bemutatása
A felhasználói felület Fejléc A betöltött kép Tallózás Tallózás után Futtatás Az egyes eredményképek Végül az összeg
Az összesített képek Szürkeárnyalatos Otsu Mediánszűrés Inverzek Két dobókocka felszín
Lehetséges esetek • A kockák egymáshoz való viszonya különböző lehet • Különálló felszínek • Összeérő felszínek
Első eset • Különálló felszínek esetén erózió legtöbbször nem szükséges • A mediánszűrés szépen letisztítja az Otsu-algoritmus eredményét • Erre példát korábban láthattunk
Második eset • Amikor a kockák felszíne összeér szükség lehet erózióra • De vannak esetek, amikor az sem szükséges
Összeér, de nem kell erózió Mediánszűrés letisztította Zaj, az Otsu után
Összeér és kell erózió Zaj, amiből maradt a mediánszűrés után is
Összeér, kell erózió, nincs zaj Összeérő felszínek, de itt az erózió leszedte a zajt
Volt…., Nincs… volt nincs
Ahogy semmi, ez sem tökéletes • Nem megfelelő elhelyezkedés (szög) • Kis pöttyöt a mediánszűrés leszedi
Ahogy semmi, ez sem tökéletes Van, amikor a „zaj is pötty”
Ahogy semmi, ez sem tökéletes • Ha nem megfelelő a megvilágítás, nyílván az Otsu-algoritmus sem működik megfelelően, ahogy azt korábban megemlítettük. • Valamint a K-means esetében a távolságszámítás néha nem megfelelő, vagyis a ‘cityblock’, ilyenkor a 'sqEuclidean 'jól működne. Gyakorlatban a ‘cityblock’ több jó eredményt produkál.
Összefoglalás • Kiindulási ötletként a felülről való megvilágítást találtuk ki, a szegmentálás megkönnyítésre • Ehhez Otsu algoritmus megtalálása hozta meg a sikert • Ezek után már csak a dobókockák elhelyezkedése (összeér, nem ér össze) okozta a nehézséget • Mediánszűrés, erózió, objektum címkézés, kiválasztás, klaszterezés • Továbbá készítettünk egy grafikus felhasználó felületet, megkönnyítve ezzel a program kezelését • Vannak esetek, amikor egy gyári dobókockára is működik
Részletek A zaj itt is szépen eltűnt A klaszterezés is jól működik