Program

Az algoritmus megvalósítása Matlab 7.0-ban történt, a program neve: vinp (a Video INPainting kifejezésből).

Telepítés

A telepítéshez mindössze a forráskódot tartalmazó könyvtárat és annak alkönyvtárait kell a Matlab keresési útvonalához a Set Path paranccsal hozzáadni.

Használat

A vinp_gui parancs kiadására megjelenik a grafikus felhasználói felület, amellyel a továbbiakban lépésről lépésre haladva retusálhatjuk videónkat.
Megnyitás:
A program feltételezi, hogy az előteret és a hátteret elkülönítő szegmentálást már elvégeztük, egy másik program felhasználásával vagy akár kézi szegmentálással, és az eredményt két könyvtárba mentettük el: az egyik a frame-eket tartalmazza, a másik pedig azok szegmentálását, a maszkokat. A képek bármilyen – a Matlab által ismert – formátumúak lehetnek (pl. .bmp, .gif, .jpg, .tif), csatornánként 8 bitesnek és azonos méretűeknek kell lenniük. A képkockákat tartalmazó fájloknak tetszés szerinti nevet adhatunk (például 01.bmp, 02.bmp, stb.), a program név szerinti sorrendben olvassa be őket, tehát a könyvtár első fájlja lesz az első frame, a második fájl a második frame és így tovább. Minden maszk fájl nevének és kiterjesztésének rendre meg kell egyeznie a hozzátartozó frame fájl nevével és kiterjesztésével. A maszkoknak csak az első csatornája kerül felhasználásra, a 0 szín jelenti a hátteret, a 255 az előteret, minden más szín retusálandó területként van értelmezve (nem kötelező előre kijelölni a kitöltendő területet, a vinpben is meg lehet azt határozni, lásd a következő lépést).
Az első párbeszédablakon található két gomb segítségével tudjuk betölteni a képkockákat (Frame folder), illetve a maszkokat (Mask folder). Mindkét esetben meg kell adnunk a könyvtárak elérési útját. Amikor kijelöltük a könyvtárakat, a program beolvassa azok tartalmát.

1. lépés: A képkockákat és a maszkokat tartalmazó könyvtárak kiválasztása
A retusálandó terület kijelölése:
Lehetőségünk van további retusálandó területek hozzáadására. Kattintsunk a Make hole gombra, majd jelöljük ki a képen a retusálásra szánt téglalap alakú területet, két átellenben lévő sarkának megadásával. A lépést többször is megismételhetjük. Ha akarjuk, az összes frame-re egyidejűleg megrajzolhatjuk a téglalapot, ehhez az Apply to all frames opciót be kell kapcsolni. Ha törölni szeretnénk a most megadott kitöltendő területeket és vissza szeretnénk térni a maszkok beolvasása utáni állapothoz, kattintsunk a Clear holes gombra. A képkockák és a maszkok nézete között bármikor átválthatunk a Show mask gombbal.
Ha végeztünk a retusálandó terület megadásával, kattintsunk a Finished gombra. Ekkor elkezdődik a retusálási folyamat.

2. lépés: A retusálandó terület kijelölése
Előfeldolgozás:
Elsőként az előfeldolgozási lépés hajtódik végre: a vinp egymás után kiszámítja az optical flow-t, a kameramozgást és a mozaikokat.
A számítás aktuális állását egy folyamatjelzőn láthatjuk, ezenkívül a Matlab szöveges kimenetén is megjelennek az egyes lépések főbb adatai, a későbbi elemzés céljából.

3. lépés: Előfeldolgozás
A mozgó objektum retusálása:
A következő ablak az előtér helyreállításának aktuális állapotáról ad képi információt. Bal oldalon láthatjuk az eredeti, jobbról pedig a retusált képkockát. A hozzájuk tartozó maszkokat most is megtekinthetjük a Show mask gomb megnyomásával.
A mozgó objektum retusálása alapértelmezésben automatikusan történik. Ha az Advance automatically jelölőnégyzetet kikapcsoljuk, lehetőségünk van minden frame retusálása után eldönteni, hogy elégedettek vagyunk-e az eredménnyel. A Patch size nevű legördülő menüből kiválaszthatjuk, hogy mekkora sugarú négyzettel kívánunk dolgozni, az érték 2 és 9 között lehet.
Ha elvégeztük a szükséges beállításokat, kattintsunk az Inpaint gombra az aktuális frame retusálásához. Amikor a helyreállítás véget ért, két eset lehetséges:
  • Ha az automatikus továbblépés engedélyezve van, a feldolgozás két másodperc várakozási idő után folytatódik a következő képkockával. Ha eközben kikapcsoljuk az automatikus továbblépést, akkor a második eset kerül érvénybe.
  • Ha az automatikus továbblépés nincs engedélyezve, választhatunk, hogy elfogadjuk az eredményt vagy nem. Ha elégedettek vagyunk az előtér retusálásával, kattintsunk az Ok gombra, ekkor a következő frame kijavítása következik. Ha nem az elvárt eredményt produkálja a program, próbálkozhatunk egy másik ablakmérettel. Ehhez válasszuk a Revert gombot, változtassuk meg a Patch size értékét, majd kattintsunk az Inpaint gombra.
Mikor az utolsó képkocka előterét is retusáltuk, az Ok gomb Finished feliratúra változik. Rákattintva rátérünk a fennmaradó feladatra: a háttér retusálására.

4. lépés: A mozgó objektum retusálása
A háttér retusálása:
Az utolsó részfeladat a szomszédos frame-ekben található ismert pixelek közvetlen átmásolásából és a textúra-szintézisből áll. Ezekhez semmilyen felhasználói beavatkozás nem szükséges.

5. lépés: A háttér retusálása
Az eredmény elmentése:
Végül megtekinthetjük a retusált képkockákat. Az eddigiekhez hasonlóan balról láthatók az eredeti frame-ek, jobbról pedig azok kijavított változatai. Ha a Link sliders opciót kiválasztjuk, egyszerre tudjuk léptetni az összetartozó frame-eket.
Ha elégedettek vagyunk az eredménnyel, el is menthetjük azt .avi formátumban a Save movie gombra kattintva. A vinp az .avi tömörítéséhez Windows alatt Indeo 5 codecet használ. Unix rendszeren nem történik tömörítés.
A program bezárásához az Exit gombot kell megnyomni.

6. lépés: Mentés
Rideg Zoltán, SZTE TTK, 2007.