Formatul de compresie a imaginii QOI introdus

A fost introdus un nou format ușor de compresie a imaginii, fără pierderi - QOI (Imagine destul de OK), care vă permite să comprimați foarte rapid imaginile în spațiile de culoare RGB și RGBA. Când se compară performanța cu formatul PNG, implementarea de referință cu un singur thread a formatului QOI în limbajul C, care nu utilizează instrucțiuni SIMD și optimizări de asamblare, este de 20-50 de ori mai rapidă ca viteză de codare decât bibliotecile libpng și stb_image și 3 - De 4 ori mai rapid la viteza de decodare. În ceea ce privește eficiența compresiei, QOI este aproape de libpng în majoritatea testelor (în unele teste este ușor înainte, iar în altele este inferior), dar în general este vizibil înaintea stb_image (câștig de până la 20%).

Implementarea de referință a QOI în C este de doar 300 de linii de cod. Codul sursă este distribuit sub licența MIT. În plus, pasionații au pregătit implementări de codificatoare și decodoare în limbile Go, Zig și Rust. Proiectul este dezvoltat de Dominic Szablewski, un dezvoltator de jocuri cu experiență în crearea unei biblioteci pentru decodarea videoclipurilor MPEG1. Folosind formatul QOI, autorul a dorit să arate că este posibil să se creeze o alternativă eficientă și simplă la formatele moderne de codare a imaginilor prea complicate.

Performanța QOI este independentă de rezoluția și natura imaginii codificate (O(n)). Codificarea și decodificarea se realizează într-o singură trecere - fiecare pixel este procesat o singură dată și poate fi codificat într-unul din 4 moduri, selectate în funcție de valorile pixelilor anteriori. Dacă următorul pixel coincide cu cel anterior, atunci contorul de repetiții crește doar. Dacă pixelul se potrivește cu una dintre valorile din buffer-ul de 64 de pixeli din trecut, atunci valoarea este înlocuită cu un offset de 6 biți față de pixelul trecut. Dacă culoarea pixelului anterior este ușor diferită, diferența este indicată într-o formă scurtă (codificarea scurtă a diferențelor de componente de culoare care se încadrează în 2,4, 5 și XNUMX biți). Dacă optimizarea nu este aplicabilă, este furnizată valoarea rgba completă.

Sursa: opennet.ru

Adauga un comentariu