GrabCut algoritmus (OpenCV)
Működése
A GrabCut algoritmus iteratív módon működő, gráfvágáson alapuló előtér-háttér szegmentáló módszer. Egymás után többször is érdemes meghívni, mert finomítja (vagy elrontja...) az előző eredményt.
Egy szegmentálási eredmény 4 féle, az OpenCV csomagban előre definiált konstans értéket tartalmazhat.
- Biztosan a háttérhez tartozik (cv2.GC_BGD).
- Biztosan az előtérhez tartozik (cv2.GC_FGD).
- Valószínűleg a háttérhez tartozik (cv2.GC_PR_BGD).
- Valószínűleg az előtérhez tartozik (cv2.GC_PR_FGD).
Már első híváskor át kell adni egy előzetes szegmentálást vagy egy befoglaló téglalapot. A téglalap lehet a teljes kép tartalma is, de az inicializálást célszerűbb úgy lehet elvégezni, hogy a felhasználó interaktívan az egérrel rajzol egy téglalapot a szegmentálandó objektum körül. Ami ezen kívül van, az mind "Biztosan háttér" (cv2.GC_BGD) pont lesz. A téglalapon belüliek "Valószínűleg előtér" (cv2.GC_PR_FGD) címkét kapnak. Az iterációs lépés ezt fogja finomítani, amit további iterációknak adhatunk át bemenetként.
Természetesen lehetőségünk van a fenti 4 címke bármelyikét előzetesen elhelyezni a szegmentálási mátrixban, interaktívan vagy automatikusan. Akkor is jól használható a módszer, ha egy előzetes szegmentálás vagy objektum detekció eredményét szeretnénk finomítani. Elsőre példa lehet egy színhasonlóság, majd összefüggő komponens keresés, utóbbira például arcok vagy emberalakok detekciója a képen. A detekciók jellemzően egy befoglaló téglalapot adnak, amiben a GrabCut finomítani tudja a szegmentálást.
Kapcsolódó OpenCV dokumentáció