Zavedený formát kompresie obrazu QOI

Bol predstavený nový ľahký, bezstratový formát kompresie obrazu – QOI (Quite OK Image), ktorý umožňuje veľmi rýchlu kompresiu obrázkov vo farebných priestoroch RGB a RGBA. Pri porovnaní výkonu s formátom PNG je jednovláknová referenčná implementácia formátu QOI v jazyku C, ktorá nepoužíva inštrukcie SIMD a optimalizácie zostavy, 20- až 50-krát rýchlejšia v rýchlosti kódovania ako knižnice libpng a stb_image a 3 -4-krát rýchlejšia rýchlosť dekódovania. Čo sa týka účinnosti kompresie, QOI je vo väčšine testov blízko libpng (v niektorých testoch je mierne popredu a v iných je horšia), ale vo všeobecnosti je výrazne pred stb_image (zisk až 20%).

Referenčná implementácia QOI v C je len 300 riadkov kódu. Zdrojový kód je šírený pod licenciou MIT. Nadšenci navyše pripravili implementácie kodérov a dekodérov v jazykoch Go, Zig a Rust. Projekt vyvíja Dominic Szablewski, herný vývojár so skúsenosťami s tvorbou knižnice na dekódovanie MPEG1 videa. Pomocou formátu QOI chcel autor ukázať, že je možné vytvoriť efektívnu a jednoduchú alternatívu k príliš komplikovaným moderným formátom kódovania obrázkov.

Výkon QOI je nezávislý od rozlíšenia a povahy kódovaného obrazu (O(n)). Kódovanie a dekódovanie sa vykonáva v jednom priechode - každý pixel je spracovaný iba raz a môže byť zakódovaný jedným zo 4 spôsobov, zvolených v závislosti od hodnôt predchádzajúcich pixelov. Ak sa nasledujúci pixel zhoduje s predchádzajúcim, počítadlo opakovaní sa iba zvýši. Ak sa pixel zhoduje s niektorou z hodnôt vo vyrovnávacej pamäti 64 minulých pixelov, potom sa hodnota nahradí 6-bitovým posunom k ​​predchádzajúcemu pixelu. Ak je farba predchádzajúceho pixelu mierne odlišná, rozdiel je uvedený v krátkej forme (krátke kódovanie rozdielov vo farebných zložkách, ktoré sa zmestia do 2,4, 5 a XNUMX bitov). Ak optimalizáciu nie je možné použiť, poskytne sa úplná hodnota rgba.

Zdroj: opennet.ru

Pridať komentár