Az algoritmus leírása
A légyszámláló algoritmus az alábbi lépésekből áll:
-
Szín-alapú küszöböléssel szegmentáljuk a légypapír által befoglalt régiót. A légypapírra utaló sárga színű pixelek vörös és zöld komponenseinek intenzitása lényegesen nagyobb, mint a kék komponensé, így a vörös-kék és zöld-kék különbségek szerint küszöbölünk. Tapasztalati úton azokat a pixeleket tekintjük előtérbelinek, amelyekre az említett mindkét különbség 60-nál nagyobb.
-
Meghatározzuk a szegmentált bináris kép konvex burkát.
-
Detektáljuk a konvex burok sarokpontjait. A légypapír valójában nagyjából téglalap alakú objektum, amelynek négy sarokpontja van, viszont a feldolgozandó képen a perspektívikus torzítás és a raszteres ábrázolásból adódó pontatlanságok miatt a légypapírnak megfelelő alakzat akár négynél több csúcsú sokszög is lehet. Ezért a művelethez olyan sarokdetektort használunk, amelyre megszorítható a két sarokpont közötti minimális euklideszi távolság: az elvártnál közelebb eső detektált pontokat nem tekintjük valódi sarkoknak, így azok nem szerepelnek az eredményül kapott pont listában. Tapasztalati úton 1500-as értéket állítottunk be az említett minimális távolságnak. Előfordul azonban egy-két kép esetén, hogy ezen érték mellett négynél kevesebb pontot talál a detektor, ez esetben megismételjük a sarokdetektálást, de ezúttal egy kevésbé szigorú minimális távolság értéket szabunk meg (600).
-
A négy sarokpont ismeretében rektifikáljuk az eredeti kép szürkeárnyalatos változatán a légypapír által meghatározott régiót: perspektív transzformációt hajtunk végre úgy, hogy a négy detektált sarokpont képe egy 750 x 1000 pixel méretű téglalapnak egy-egy sarka legyen, ezáltal a perspektivikus torzításból adódó eltéréseket nagyjából ki tudjuk küszöbölni a légyszámlálásnál.
-
Küszöböljük a legyeket a rektifikált képen: megfigyelések alapján a 90-nél kisebb intenzitású pixelek felelnek meg a legyeknek. A küszöbölt képen eltávolítjuk a 10-nél kisebb vagy 6000-nél nagyobb területű (pixelszámú) objektumokat, mivel azok feltehetően nem legyeket határoznak meg.
-
Becslést adunk a papíron levő legyek számára. A küszöbölt képeken az objektumok darabszáma általában téves eredményt adhat, mert az egy-egy légynek megfelelő régiók gyakran „összetapadhatnak”, összeérhetnek, ezáltal több legyet is egynek számolnánk. Ehelyett egy közelítő érték próbálunk meghatározni a papír legyek által lefedett összterülete alapján úgy, hogy egy légy-objetumnak megbecsültük az átlagos terület értékét (40 pixel) a rendelkezésre álló felvételek alapján, így az összterületet az utóbbi területtel osztva megkapjuk a becsült darabszámot.
Az eljárás hajlamos a sötét színű filccel vékonyan felírt számokat, szöveget is „légy-szerűnek” tekinteni, ilyen esetben ezeket a hamis objektumokat is beleszámítja a becsült darabszámba. Ezért célszerűbb, ha a légypapíron és annak környezetében egyáltalán nem szerepel felirat a felvétel során.