Skip navigation

3. megközelítés

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Programkód és futtatás

A program forráskódja és futtatható változata az alábbi linken érhető el: Termésmennyiség-becslés, Google Drive link

A program forrása két Matlab fájlból (termesbecsles.m, process_video.m) és a GUI elemeket tartalmazó termesbecsles.fig fájlból áll. A termesbecsles.m futtatásával jelenik meg a grafikus felület, amelyen a „Feldolgozás” gombra kattintva hívódik meg a process_video.m-ben levő videófeldolgozó eljárás. A programnak fejlesztőkörnyezet nélkül is futtatható változata a termesbecsles.exe. Használatához szükséges a 9.4. verziószámú MATLAB 2018a runtime program telepítése, a telepítő az alábbi oldalról letölthető Windows, Linux és Mac operációs rendszerekre: https://www.mathworks.com/products/compiler/matlab-runtime.html