Képek leméretezése 2021

Nagy József képe

A képek méretének lecsökkentése, nem pusztán a fotósok (egyik) technológia kihívása, a különböző kép-, fájlmegosztó és
közösségi oldalak szintén -meglehetősen drága- erőforrásokat szánnak a legoptimálisabb megoldás megtalálására és annak alkalmazására. Mielőtt kivesézzük a különböző folyamatokat lássuk
mi a probléma:


Az RGB skálán egy pixel színét a három alapszín (vörös, zöld, kék) együttes intenzitása határozza meg.
Mindegyik alapszín 0-255 tartományokban vehet fel értéket. Ezek a számok nyilván nem véletlenszerűek, a fotózásban
is meghatározó a matematika és a fizika. 2^8 pontosan 256, ami megegyezik a felvehető értékek számával.
Ha ezt binarizáljuk, az azt jelenti, hogy az alapszín deklarációja 8 bit hosszan történik alapszínenként, amiből három van.
Most azt hihetnénk, hogy mivel 8 bit az 1 bájt, így egy pixel mérete 3 bájt lesz, ebből következően egy BPH specifikusra méretezett, standard 16:9
oldalarányú fotó 1200x675x3 bájt, azaz 2,31Mb méretű lesz -és még olyan csekélységgel, mint a meta-adatok, nem is számoltunk.
Szerencsére nem ennyire meredek a helyzet, hiszen ha minden pixel kerek 3 bájt lenne, akkor az a kép teljesen fekete színű volna.
Másrészt pedig rendelkezésre állnak különböző képtömörítési eljárások.
Mivel a nagy adatmennyiség hatékony csökkentése minden esetben a minőség romlásával jár, ráadásul a kimeneti fájl méretét sem nevezhetjük marginális tulajdonságnak,
a képkidolgozás egy kardinális eleme, hogy melyik algoritmust választjuk a folyamat során. A kockafejű programozók és matematikusok szégyentelenül interpolációs
eljárásoknak nevezik ezeket a folyamatokat. Ez a gyakorlatban -nagyon tömören- azt jelenti, hogy az algoritmus kiszámolja, hogy a leméretezés által megváltozott
pixelek adatai mik legyenek. A kalkulációkhoz eltérő eljárásokat alkalmaznak és természetesen a végeredmény is nagyon sokféle lehet.
Lássuk tehát a fegyvertárunkat:

Hogy jobban tudjam szemléltetni a differenciát, kitűzök egy viszonylag szélsőséges célt, szeretném az egyik fotóm 1200x675 pixelre leméretezni, mégpedig úgy,
hogy a kimeneti fájlméret ne haladja meg a 200Kb-ot. Igazán nemes küldetés. Kezdjük a legtöbb kereskedelmi szoftverbe integrált és egyben legnépszerűbb lehetőségekkel, a teljesség igénye nélkül.
Én most Adobe PhotoShop-ot fogok használni. A képem a vágás után 6040x3398 pixel lett.
Először a Bicubic Sharpen (kettős-köbös élesítéssel) fogom kipróbálni:


A felbontást beírva máris kapunk egy előrejelzést a kép leendő méretét illetően, ez 2,32Mb. Mivel ez messze van a célomhoz, mentéskor korrigálnom kell a minőséget.



9-re húzva a csúszkát már kielégítő, 165,2Kb fájlméret az előrejelzés.

Ennek az algoritmusnak a lényege, hogy minden leendő pixel tartalmát a környező 16 pixel átlaga alapján tölti ki.

Az eredmény nem túl meggyőző, kaptunk egy szemre erősen kontrasztos hatást keltő képet és az élek is elég karakteresek lettek.


Belenagyítva tapasztalható ugyan némi banding a kontrasztátmeneteknél, de teljes méretben szemlélve ez alig észrevehető.


A következő tesztalany a bilineáris interpoláció, mely az előző 16-hoz képest, mindössze 4 (jellemzően horizontális és vertikális) szomszédos pixel adatai alapján átlagol.




Az eredmény egy sokkal lágyabb élsimítás, nagyítva jól észrevehetően természetesebben hatnak a formák és a banding is csökkent valamelyest.



A soron következő algoritmus, az eddigiekkel ellentétben nem átlagot von, hanem nemes egyszerűséggel a szomszédos ismert adattartalommal rendelkező pixel adatait
emeli át a kitöltendő pixel helyére. Erre utal a neve is: Nearest neighbor, azaz legközelebbi szomszéd. Az eljárás az egyszerűsége végett kis erőforrásigényű művelet, viszont a produktum is ennek megfelelő minőségű:


Hangyás, pixeles, erősen kontrasztos és nagyon rossz az élsimítás is.


Végül lássunk egy kevésbé ismert, de rendkívül hatékony módszert, melynek még hazai vonatkozása is van, ez a Lanczos metódus.
Lánczos Kornél magyar matematikus elméletét sikeresen alkalmazza a mai napig az informatika és természetesen a képdigitalizálásba is implementálták.
Az Adobe termékek egyelőre nem alkalmazzák, a legismertebb szoftver az ingyenes XnView, mely használja.


A teszthez egyszerűen elmentettem leméretezés nélkül az eredeti méretű képet, betöltöttem az XnView-ba, rányomtam a leméretezésre (itt a Lanczos alapértelmezett), majd mentés másként.



A kimenet hasonló mint a bilineáris esetén, viszont a fájl mérete rendkívül impresszív, mindössze 99Kb!


Végső összehasonlításban:

Fájlméretek:
Bicubic: 154.946Kb
Bilinear: 183.640Kb
Neigbor: 185.640Kb
Lanczos: 99.157Kb

A fentiek miatt én tehát a leméretezést soha nem a Photoshop-ban végzem.
Ott megcsinálom az alapkorrekciókat, megvágom, majd a teljes képet kimentem, betöltöm az XnView-ba, lemérezetem és elmentem.
A kép a leméretezést követően is garantáltan belefér a 600Kb-os limitbe, nem macerás és viszonylag kielégítő eredményt hoz.

A gondolatmenetből kimaradt a fraktális interpoláció, mely igény esetén akár egy külön topicot is érdemelhetne.



© 2011 All rights reserved BPH.