QOI bildkomprimeringsformat introducerat

Ett nytt lättviktigt, förlustfritt bildkomprimeringsformat har introducerats - QOI (Quite OK Image), som gör att du mycket snabbt kan komprimera bilder i RGB- och RGBA-färgrymden. När man jämför prestanda med PNG-formatet är den enkeltrådade referensimplementeringen av QOI-formatet i C-språket, som inte använder SIMD-instruktioner och monteringsoptimeringar, 20-50 gånger snabbare i kodningshastighet än biblioteken libpng och stb_image, och 3 -4 gånger snabbare i avkodningshastighet. När det gäller kompressionseffektivitet är QOI nära libpng i de flesta tester (i vissa tester är det något före, och i andra är det sämre), men i allmänhet ligger det märkbart före stb_image (vinst på upp till 20%).

Referensimplementeringen av QOI i C är endast 300 rader kod. Källkoden distribueras under MIT-licensen. Dessutom har entusiaster förberett implementeringar av kodare och avkodare i språken Go, Zig och Rust. Projektet utvecklas av Dominic Szablewski, en spelutvecklare med erfarenhet av att skapa ett bibliotek för avkodning av MPEG1-video. Med hjälp av QOI-formatet ville författaren visa att det är möjligt att skapa ett effektivt och enkelt alternativ till alltför komplicerade moderna bildkodningsformat.

QOI-prestandan är oberoende av den kodade bildens upplösning och karaktär (O(n)). Kodning och avkodning utförs i ett pass - varje pixel bearbetas endast en gång och kan kodas på ett av fyra sätt, valda beroende på värdena för tidigare pixlar. Om nästa pixel sammanfaller med den föregående, ökar bara upprepningsräknaren. Om pixeln matchar ett av värdena i bufferten med 4 tidigare pixlar, ersätts värdet med en 64-bitars offset till den tidigare pixeln. Om färgen på föregående pixel är något annorlunda indikeras skillnaden i en kort form (kort kodning av skillnaderna i färgkomponenter som passar in i 6, 2,4 och 5 bitar). Om optimering inte är tillämplig tillhandahålls hela rgba-värdet.

Källa: opennet.ru

Lägg en kommentar