Ismertető | Pixeles kép vektorizálása
Mielőtt még nagyszerű vektorgrafikai szerkesztőink lettek volna…
Még mielőtt 640×480 felbontásúak lettek volna a számítógépeink kijelzői…
Gyakran játszottunk alacsony felbontású kijelzőkön olyan videojátékokkal, melyeket gondosan, képpontonként alakítottak ki.
„Pixelművészetnek” neveztük el ennek a korszaknak a szüleményeit.
Az Inkscape része a libdepixelize könyvtár, amellyel lehetséges automatikusan vektorossá alakítani ezeket a speciális pixelművészeti képeket. Más típusú képekkel is meg lehet próbálkozni, de figyelem: a végeredmény nem lesz olyan jó minőségű és talán jobb lenne az Inkscape másik vektorizáló alkalmazását, a Potrace-t használni.
Kezdjük egy példa képpel a vektorizáló motor képességeinek a felmérését. Alább található egy raszteres kép (a Liberated Pixel Cup egyik eleme) a bal oldalon és a vektorizált kimenet a jobb oldalon.
A libdepixelize a Kopf-Lischinski algoritmust alkalmazza a képek vektorizálásához. Az algoritmus néhány számítástudományi technika és matematikai elmélet ötleteit gyűjti össze, hogy a pixeles képekből jó vektoros eredményt kapjunk. Egyből meg kell jegyezni, hogy az algoritmus teljes mértékben figyelmen kívül hagyja az alfa csatornát. A libdepixelize jelenleg nem tartalmaz megoldást arra, hogy első osztályú módon kezelje ezeket a típusú képeket, de elmondható, hogy az összes alfa csatornát tartalmazó kép hasonló eredményt ad, mint a Kopf-Lischinski algoritmussal vektorizált képek fő kategóriája.
A fenti kép tartalmaz alfa csatornát és az eredmény mégis egész szép. Azonban, ha egy pixeles képnek rossz lesz az eredménye ‒ vélhetően az alfa csatorna miatt – érdemes lehet a libdepixelize karbantartójával kapcsolatba lépni (pl. egy hibajelentés erejéig a hibakezelőben) és talán örömmel kiegészíti az algoritmust. Vegyük figyelembe, hogy nem tudja kiegészíteni az algoritmust addig, amíg nem tudja, hogy mely képek eredménye lesz rossz minőségű.
Az alábbi képernyőképen a Pixelmű vektorizálása párbeszédablak látható. A párbeszédablak az Útvonal⇒Bitkép vektorizálása…⇒Pixelmű menüpontban érhető el, vagy egy képen történő jobb kattintással és a Bitkép vektorizálása pontot választva.
A párbeszédablak két részből áll: heurisztikák és kimenet. A heurisztikák a haladóbb felhasználást célozzák, ezek jó alapértékek, nem kell ezeken aggódni, egyelőre hagyjuk ezeket későbbre és kezdjük a kimenet megértését.
A Kopf-Lischinski algoritmus (magasból nézve) úgy működik, mint egy fordító, és az adatokat többféle reprezentációtípusok között konvertálja. Minden lépésnél az algoritmusnak lehetősége van felfedezni a reprezentáció által kínált műveleteket. Néhány köztes reprezentációnak van egy helyes vizuális ábrázolása (mint például az átformált cellagrafikon Voronoj kimenete), másoknak meg nincs (mint a hasonlósági grafikon). A libdepixelize fejlesztése során a felhasználók többször kérték, hogy ezen közbülső állapotokat ki lehessen exportálni a libdepixelize-be, és az eredeti libdepixelize szerző teljesítette ezen kívánságokat.
Az alapértelmezett kimenetnek a legsimább eredményt kellene adnia, és valószínűleg ez a kívánt szándék is. Az alapértelmezett kimenetek láthatóak az ismertető eddig példáin. Ha szeretné kipróbálni ezeket, csak nyissa meg a Bitkép vektorizálása… párbeszédablakot, ott a Pixelmű fület és kattintson az OK gombon valamely kép kiválasztása után.
Alább látható a Voronoj-kimenet, amely egy „átformált pixeles kép”, ahol a cellák (korábban képpontok) átformálódtak, hogy összekapcsolják az azonos jellemzőkkel rendelkező képpontokat. Nincsenek görbék, és a kép továbbra is egyenesekből áll. A különbség akkor figyelhető meg, ha nagyítjuk a képet. Korábban a képpontok nem oszthatták meg az éleiket az átlós szomszédaikkal, akkor sem, ha egy vonásra vonatkoztak. De most (köszönhetően a színes hasonlósági grafikonnak és a heurisztikának, melyet a jobb eredmény elérése érdekében lehet beállítani), két átlós cella osztozhat egy élen (korábban csak egyetlen csúcsot osztottak meg két átlós cellával).
A szabványos B-spline kimenetek sima eredményt nyújtanak, mivel az előző Voronoj-kimenet négyzetes Bézier-görbékké alakul át. Az átalakítás azonban nem lesz 1: 1, mert több heurisztika működik annak eldöntésére, hogy mely görbék egyesülnek az egyikbe, ha az algoritmus eléri a T-kapcsolatot a látható színek között. Információ: a heurisztikák ezen fázisában nem lehet hangolni őket.
A libdepixelize végső fázisa (jelenleg az Inkscape felhasználói felületének kísérleti és hiányos állapota miatt nem exportálható) a „görbék optimalizálása” a B-spline görbék lépcsőzetes hatásának eltávolítására. Ez a fázis egy szegélydetektálási technikát is végez, hogy megakadályozza bizonyos jellemzők simítását és egy háromszögelési technikát, hogy javítsa a csomópontok helyzetét az optimalizálás után. Lehetővé kell tenni, hogy egyenként letiltsa ezeket a funkciókat, ha ez a kimenet elhagyja a „kísérleti szakaszt” a libdepixelizeben (remélhetőleg hamarosan).
A felhasználói felület heurisztika szakasza lehetővé teszi a libdepixelize által használt heurisztika beállítását, hogy eldöntsük, mi a teendő, ha 2×2 képpontos blokkot észlel, ahol a két átló hasonló színekkel rendelkezik. „Milyen kapcsolatot kell tartanom?” kérdezi a libdepixelize. Megpróbálja alkalmazni az összes heurisztikát az ütköző átlókra, és megtartja a győztes kapcsolatát. Ha egy kötés történik, két kapcsolat törlődik.
Ha minden egyes heurisztika hatását elemezni szeretné és a játszani egy kicsit a számokkal, a legjobb kimenet a Voronoj-kimenet. A heurisztika hatásait könnyebben láthatja a Voronoj-kimeneten, és ha elégedett a beállított beállításokkal, akkor csak megváltoztathatja a kívánt kimeneti típust.
Az alábbi képnek van egy képe, és a B-spline kimenetek minden próbálkozásnál csak egy bekapcsolt heurisztikája. Legyünk figyelemmel a lila körökre, amelyek kiemelik a különbségeket, amelyeket minden heurisztika elvégez.
Az első próbálkozásnál (a felső képen) csak a görbék heurisztika van engedélyezve. Ez a heurisztika megpróbálja egyben tartani a hosszú görbéket. Megfigyelhető, hogy az eredmény hasonló az utolsó képhez, ahol az elszórt képpontok heurisztika lett alkalmazva. Az egyik különbség az, hogy „erősség” finomabb, és csak akkor ad nagy értéket a saját szavazatának, ha nagyon fontos a kapcsolatok megőrzése. A „finomabb” fogalom, koncepció itt „emberi intuícióra" épül, az elemzett képpontadatbázis alapján. A másik különbség az, hogy ez a heurisztika nem tudja eldönteni, hogy mit kell tennie, ha a kapcsolatok csoportja nagy blokkokká válik a hosszú görbék helyett (pl. egy sakktábla).
A második próbálkozásnál (a középső képen) csak a sziget heurisztika lett engedélyezve. Az egyetlen dolog, amit ez a heurisztika tesz az az, hogy megpróbálja egy állandó súlyú szavazással megtartani a kapcsolatot, amely egyébként több elszigetelt képpontot (szigetet) eredményezne. Ez a helyzet nem olyan gyakori, mint a többi heurisztika által kezelt helyzet, de ez a heurisztika nagyon hasznos és még jobb eredményeket hoz.
A harmadik próbálkozásnál (az alsó képen) csak az elszórt képpontok heurisztika van engedélyezve. Ez a heurisztika megpróbálja megtartani az előtér színével összekapcsolt görbéket. Annak megállapításához, hogy mi az előtérszín, a heurisztika egy képpontablakot elemez az egymással konfliktusban lévő görbék körül. Ezen heurisztika esetén nem csak a „erejét” lehet hangolni, hanem az elemzendő képpontablak méretét is. De érdemes észben tartani, hogy az elemzendő képpontok növelésekor a szavazás maximális „ereje” is nőni fog, és a szorzót a szavazatához érdemes igazítani. Az eredeti libdepixelize szerző azt gondolja, hogy ez a heurisztika túl mohó és ezért a „0.25” szorzót érdemes használni.
Még ha a görbék heurisztika és az elszórt képpontok heurisztika hasonló eredményt is adnak, érdemes lehet mindkettőt bekapcsolva hagyni, hiszen a görbék heurisztika extra biztonságot nyújthat abban, hogy a kontúr képpontok fontos görbéi ne legyenek akadályoztatva, és vannak olyan esetek is, amelyekre csak az elszórt képpontok heurisztika tud válaszolni.
Tipp: Minden heurisztika kikapcsolható a szorzó/súly értékük nullára való állításával. Bármely heurisztika ténykedése átfordítható az alapelveivel szemben, ha negatív értékeket állítunk be a szorzó/súly értéknek. Miért akarnánk megváltoztatni az ellenkezőjére azt a viselkedést, amely azért lett létrehozva, hogy szebb eredményt kapjunk? Mert lehetőség van rá… mert esetleg így egy „művészi” eredményt kapunk… és hasonlók… mert megtehetjük.
És ennyi! A libdepixelize kezdeti kiadásában ezek a lehetőségek. De ha az eredeti libdepixelize szerző és a kreatív mentora kutatásai sikeresek lesznek, további lehetőségekkel bővülhet, amelyek kiszélesíthetik a képek skáláját, amelyekkel a libdepixelize jó eredményt ad. Kívánj nekik szerencsét.
Minden itt bemutatott kép a Liberated Pixel Cup projektből származik a szerzői jogi problémák elkerülése végett. A hivatkozások:
http://opengameart.org/content/memento
http://opengameart.org/content/rpg-enemies-bathroom-tiles
Vinícius dos Santos Oliveira; Nicolas Dufour; Kris De Gussem; Gellért Gyuris
Gyuris Gellért — 2018, 2019
Esteban Capella — 2019