Az algoritmus leírása
Az eljárás a gombaültetvényen készült olyan videót feltételez inputként, amelyen a kamera mozgása következtében a gombák nagyjából látszólag felülről lefelé „haladnak”. A videó feldolgozása frame-ről frame-re történik az alábbi lépésekben:
- A frame-et szürkeárnyalatossá alakítjuk, majd azt tapasztalati úton megállapított küszöbérték (115) felett küszöböljük.
- A kapott bináris képen morfológiai nyitással távolítjuk el a kis objektumokat, és szüntetjük meg az üregeket, a morfológiai szűrés szerkesztőelemének méret 10-nek választottuk meg.
- A küszöbölés az egymáshoz szorosan közel álló gombákat egyetlen objektumként detektálja. Ennek javítására Watershed-szegmentációs technikát alkalmaztunk, amelynek segítségével gyakran szétválasztható a helyenként „összetapadónak” látszó objektumok kontúrja.
- A kapott képen töröljük a 400-nál kevesebb vagy 30000-nél több pixelből álló komponenseket, mert azok feltehetően nem gombának felelnek meg.
A frame-ek 400-adik sorát ún. ellenőrző sávként használjuk a számoláshoz. Az első frame fenti lépésekkel előálló binarizált változatán megszámoljuk azokat az objektumokat, amelyeknek a súlypontja az ellenőrző sáv alatt található, és feljegyezzük a kapott darabszámot. Ezenkívül a képnek az ellenőrző sávra eső sorát is elmentjük.
A további binarizált frame-eken megvizsgáljuk, hogy az ellenőrző sávra eső sorban, mint egydimenziós „képen” hány olyan gombakomponens található, amelyek oszlopindexei által meghatározott intervallum az előző frame elmentett sorában csak 0 értékeket tartalmaz. Ilyen esetekben feltételezhető, hogy új objektumok haladnak át az ellenőrző sávon, tehát ezeket a példányokat hozzáadjuk az eddigi darabszámhoz.
Az eljárást megvalósító alkalmazás grafikus felületén az input videó kiválasztása után megadható, hogy a videó mely részét dolgozzuk fel (kezdő és záró frame beállításával), ill. hova és milyen néven legyen elmentve a kimeneti videófájl. A program a feldolgozás után kiírja a becsült darabszámot, ezenkívül a kimeneti fájlban az input videó frame-jeire vörös színnel vannak megjelölve a szegmentált gombaobjektumok, zöld színnel pedig az ellenőrző sáv, továbbá a bal felső sarokban mutatja egy számláló az eddig detektált gombák darabszámát.
Bár a Watershed-alapú szegmentálással több esetben szétválaszthatóak a videó nem kellő élessége miatt látszólag összetapadó gombaobjektumok, ez sem mindig garantál helyes eredményt. Ezenkívül további problémát jelenthet a feldolgozásban, ha a kamera haladása iránya ill. dőlésszöge megváltozik felvétel közben. A számolás pontosságát tehát úgy lehetne javítani, ha a videófelvételek élesebbek lennének és a kamera végig csak egyenes irányban haladna az ültetőpolc felett.