Kasutusele võetud QOI kujutise tihendamise formaat

Kasutusele on võetud uus kerge kadudeta pildi tihendamise formaat - QOI (Quite OK Image), mis võimaldab väga kiiresti RGB ja RGBA värviruumides pilte kokku suruda. Võrreldes jõudlust PNG-vorminguga, on C-keele QOI-vormingu ühelõimeline referentsrakendus, mis ei kasuta SIMD-juhiseid ega kooste optimeerimisi, kodeerimiskiiruselt 20–50 korda kiirem kui libpng- ja stb_image-teegid ning 3 -4 korda kiirem dekodeerimise kiirus. Tihendusefektiivsuse poolest on QOI enamikes testides libpng-i lähedal (mõnes testis on see veidi ees, teistes aga kehvem), kuid üldiselt edestab see tuntavalt stb_image (võimendus kuni 20%).

QOI viiterakendus C-s on ainult 300 koodirida. Lähtekoodi levitatakse MIT litsentsi all. Lisaks on entusiastid valmistanud ette kodeerijate ja dekoodrite juurutused Go, Zig ja Rust keeltes. Projekti arendab Dominic Szablewski, mänguarendaja, kellel on kogemusi MPEG1 video dekodeerimiseks kasutatava raamatukogu loomisel. Kasutades QOI-vormingut, soovis autor näidata, et ülikeerulistele kaasaegsetele piltide kodeerimisvormingutele on võimalik luua tõhus ja lihtne alternatiiv.

QOI jõudlus ei sõltu kodeeritud kujutise eraldusvõimest ja olemusest (O(n)). Kodeerimine ja dekodeerimine toimub ühe käiguga - iga pikslit töödeldakse ainult üks kord ja seda saab kodeerida ühel neljast viisist, mis valitakse sõltuvalt eelmiste pikslite väärtustest. Kui järgmine piksel langeb kokku eelmisega, siis korduste loendur ainult suureneb. Kui piksel ühtib ühega 4 varasema piksli puhvris olevast väärtusest, asendatakse väärtus 64-bitise nihkega möödunud piksli suhtes. Kui eelmise piksli värvus on veidi erinev, näidatakse erinevust lühidalt (6, 2,4 ja 5 bitti mahtuvate värvikomponentide erinevuste lühike kodeerimine). Kui optimeerimine pole rakendatav, esitatakse täielik rgba väärtus.

Allikas: opennet.ru

Lisa kommentaar