Bevezették a QOI képtömörítési formátumot

Egy új, könnyű, veszteségmentes képtömörítési formátum került bevezetésre - a QOI (Guite OK Image), amely lehetővé teszi a képek nagyon gyors tömörítését RGB és RGBA színterekben. Ha összehasonlítjuk a teljesítményt a PNG formátummal, a QOI formátum egyszálú referencia megvalósítása C nyelven, amely nem használ SIMD utasításokat és összeállítás-optimalizálásokat, 20-50-szer gyorsabb kódolási sebességgel, mint a libpng és stb_image könyvtárak, és 3 -4-szer gyorsabb dekódolási sebességben. A tömörítési hatékonyságot tekintve a QOI a legtöbb tesztben közel áll a libpng-hez (egyes tesztekben kissé előrébb van, másokban gyengébb), de általánosságban észrevehetően megelőzi az stb_image-et (akár 20%-os nyereség).

A QOI referencia megvalósítása C-ben mindössze 300 kódsor. A forráskód az MIT licence alatt kerül terjesztésre. Ezenkívül a rajongók elkészítették a kódolók és dekóderek megvalósítását Go, Zig és Rust nyelveken. A projektet Dominic Szablewski, egy olyan játékfejlesztő fejleszti, aki tapasztalattal rendelkezik az MPEG1 videók dekódolására szolgáló könyvtár létrehozásában. A szerző a QOI formátum használatával azt kívánta bemutatni, hogy lehetséges hatékony és egyszerű alternatívát alkotni a túlbonyolított modern képkódolási formátumokkal szemben.

A QOI teljesítmény független a kódolt kép felbontásától és jellegétől (O(n)). A kódolás és a dekódolás egy lépésben történik - minden pixel csak egyszer kerül feldolgozásra, és a korábbi pixelek értékétől függően négyféle módon kódolható. Ha a következő pixel egybeesik az előzővel, akkor az ismétlésszámláló csak növekszik. Ha a pixel egyezik a 4 múltbeli pixel puffer egyik értékével, akkor az értéket egy 64 bites eltolás helyettesíti a múltbeli pixelhez képest. Ha az előző pixel színe kissé eltér, a különbséget rövid formában jelzi (a színösszetevők különbségeinek rövid kódolása, amely 6, 2,4 és 5 bitbe illeszkedik). Ha az optimalizálás nem alkalmazható, akkor a teljes rgba értéket adjuk meg.

Forrás: opennet.ru

Hozzászólás