Ismertető | Pixeles kép vektorizálásaMielő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 ÚtvonalBitké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/mementohttp://opengameart.org/content/rpg-enemies-bathroom-tilesVinícius dos Santos Oliveira; Nicolas Dufour; Kris De Gussem; Gellért GyurisGyuris Gellért — 2018Esteban Capella — 2019