QOI-beeldcompressieformaat geïntroduceerd

Er is een nieuw lichtgewicht, verliesvrij beeldcompressieformaat geïntroduceerd: QOI (Quite OK Image), waarmee u zeer snel afbeeldingen in de RGB- en RGBA-kleurruimten kunt comprimeren. Wanneer de prestaties worden vergeleken met het PNG-formaat, is de single-threaded referentie-implementatie van het QOI-formaat in C-taal, die geen SIMD-instructies en assemblage-optimalisaties gebruikt, 20-50 keer sneller in coderingssnelheid dan de libpng- en stb_image-bibliotheken, en 3 -4 keer sneller in decoderingssnelheid. In termen van compressie-efficiëntie ligt de QOI in de meeste tests dicht bij libpng (in sommige tests ligt hij iets voor, en in andere is hij inferieur), maar over het algemeen ligt hij merkbaar voor op stb_image (winst tot 20%).

De referentie-implementatie van QOI in C bedraagt ​​slechts 300 regels code. De broncode wordt gedistribueerd onder de MIT-licentie. Bovendien hebben enthousiastelingen implementaties voorbereid van encoders en decoders in de talen Go, Zig en Rust. Het project wordt ontwikkeld door Dominic Szablewski, een game-ontwikkelaar met ervaring in het creëren van een bibliotheek voor het decoderen van MPEG1-video. Met behulp van het QOI-formaat wilde de auteur laten zien dat het mogelijk is een effectief en eenvoudig alternatief te creëren voor de te ingewikkelde moderne beeldcoderingsformaten.

QOI-prestaties zijn onafhankelijk van de resolutie en de aard van het gecodeerde beeld (O(n)). Het coderen en decoderen wordt in één keer uitgevoerd - elke pixel wordt slechts één keer verwerkt en kan op een van de vier manieren worden gecodeerd, geselecteerd afhankelijk van de waarden van voorgaande pixels. Als de volgende pixel samenvalt met de vorige, neemt de herhalingsteller alleen maar toe. Als de pixel overeenkomt met een van de waarden in de buffer van 4 eerdere pixels, wordt de waarde vervangen door een 64-bits offset ten opzichte van de vorige pixel. Als de kleur van de vorige pixel iets afwijkt, wordt het verschil in een korte vorm aangegeven (korte codering van de verschillen in kleurcomponenten die in 6, 2,4 en 5 bits passen). Als optimalisatie niet van toepassing is, wordt de volledige rgba-waarde weergegeven.

Bron: opennet.ru

Voeg een reactie