-
Notifications
You must be signed in to change notification settings - Fork 0
algorithm
-
A digitális kép előkészítése
-
Hough transzformáció segítségével körök keresése
-
Színinformáció alapján csoportosítás és az érmék beazonosítása
-
Az eredmények megjelenítése
Ebben a szekcióban a feladat az, hogy adott színes képet olyan bináris képpé alakítsunk amelyen csak az érmék körvonalai vannak. Ez a következő lépés számára fontos, mivel így az gyorsan, sokkal pontosabb eredményt tud nyújtani. Ezt a következő lépésekkel érjük el:
- Az adott képet 8 bites szürkeárnyalatos képpé alakítjuk.
- Az átlagos színérték alapján egy küszöbölést végzünk. Ez az átlagos érték alatti pixeleket feketévé, a többit pedig fehérré alakítja.
- Az előző pontban kapott képet binárissá alakítjuk.
- Ebben a pontban egy bináris képünk van, amin az érmék fekete, a háttér pedig fehér színnel van ábrázolva. Az érmék körvonalai ilyenkor még szaggatottak, egyenetlenek, ezért szükség van azok kisimítására. Ezt a képen végrehajtott dilatálással majd ezt követően egy erodálással érjük el.
- A következő lépés a lyukak kitöltése következne, azonban ha több érme (legalább három darab) körben érinti egymás, akkor egy nagy zárt alakzatot hoznak létre, melyet a lyuk kitöltő algoritmus egy alakzatként tölteni ki. Így nagyon sok körvonal elveszne ami lehetetlenné tenné a későbbiekben a pontos detektálást. Ezért először meg kell keresni azon régiókat melyeket több érintkező érme zár be. Ezt a kép invertálása után (tehát most a háttér a fekete, az érmék fehérek) egybefüggő területek keresésével lehet megtalálni.
- A 4. pontban előállított képen lyukkitöltés alkalmazása, így az egyes érmék teljesen egybefüggőek lesznek.
- Ezután el kell távolítani a képről a feleslegesen kitöltött régiókat, amiket az 5. pontban detektáltunk.
- Körvonalazást végrehajtásával az előkészítés végéhez értünk.
Ebben a részben az előző szekcióban előkészített képen megadott méretű kör alakzatokat keresünk. Ezt a Hough transzformáció algoritmus körök keresésére módosított változatával tesszük. Az algoritmust annyiban módosítottuk, hogy ha a transzformált képen talált lokális maximum (kör középpontja) értéke nem ér el egy megadott küszöbértéket akkor nem fogja körként azonosítani az adott régiót. Ez a keresés pontosítását teszi lehetővé. A küszöbértéket az eredeti színes képen számított átlag pixelérték alapján határozzuk meg.
A Hough transzformációról bővebb információ itt található.
A körkeresést minden érmetípus méretére külön futtatjuk (méret alapján növekvő sorrendben). Az egyes futtatások alkalmával detektált körök mindegyikének meghatározzuk a színét, és ha az megegyezik a keresett érme típusának színével akkor ezt a kört kivonjuk a képből (a területét fehérre festjük), mivel ilyenkor nagy valószínűséggel jó volt a detektálás. Ellenkező esetben nem történik meg a kivonás, így más érmének is detektálhatjuk a későbbiek folyamán. Ez azonban azt eredményezi hogy egy érmét többször is detektálhatja az algoritmus. Ezek közül a 3. lépésben választjuk ki a megfelelőt.
Szín meghatározása a körön belül mért átlagos telítettség (saturation) alapján történik. Ha egy bizonyos érték felett van akkor "sárga", ha egy másik érték alatt van akkor "fehér", különben "kettő színű" beazonosítást kap. A kör belsejébe eső pontokat a következő képlettel kapjuk (ahol x,y a kör középpontja, a,b a vizsgált pont, r pedig a sugár):
( (x-a)^2 + (y-b)^2 \le r^2 )
Világos pontok a kör középpontok
Az előző rész futtatása során meg van annak a veszélye, hogy egy érmét többször is detektál az algoritmus. Ilyen esetekben a megfelelő köröket egy csoportba kell rendezni, majd minden csoportból pontosan egy darab kört kell kiválasztani.
A csoportosítást egy hierarchikus klaszterezéssel végezzük el. Egymáshoz viszonyítva megvizsgáljuk a köröket, ha két érme középpontjának távolsága kisebb mint egy megadott érték, akkor azokat egy csoportba tesszük.
Ezután minden csoportból kiválasztjuk az első olyan kört, melynek a mért színe megegyezik a hozzá tartozó érmetípus színével (ha nincs ilyen akkor is kiválasztunk egyet).
Az utolsó lépés a talált körök megjelenítése az eredeti színes képen, illetve az érmék összértékének megjelenítése.