Prezantohet formati i ngjeshjes së imazhit QOI

Është prezantuar një format i ri i kompresimit të imazhit me peshë të lehtë dhe pa humbje - QOI (Imazhi mjaft OK), i cili ju lejon të kompresoni shumë shpejt imazhet në hapësirat e ngjyrave RGB dhe RGBA. Kur krahasojmë performancën me formatin PNG, zbatimi i referencës me një fillesë të formatit QOI në gjuhën C, i cili nuk përdor udhëzime SIMD dhe optimizime të montimit, është 20-50 herë më i shpejtë në shpejtësinë e kodimit sesa bibliotekat libpng dhe stb_image, dhe 3 -4 herë më i shpejtë në shpejtësinë e dekodimit. Për sa i përket efikasitetit të kompresimit, QOI është afër libpng në shumicën e testeve (në disa teste është pak përpara, dhe në të tjera është inferior), por në përgjithësi është dukshëm përpara stb_image (fitim deri në 20%).

Zbatimi i referencës së QOI në C është vetëm 300 rreshta kodi. Kodi burimor shpërndahet nën licencën MIT. Për më tepër, entuziastët kanë përgatitur zbatime të koduesve dhe dekoderëve në gjuhët Go, Zig dhe Rust. Projekti po zhvillohet nga Dominic Szablewski, një zhvillues lojërash me përvojë në krijimin e një biblioteke për dekodimin e videos MPEG1. Duke përdorur formatin QOI, autori donte të tregonte se është e mundur të krijohet një alternativë efektive dhe e thjeshtë për formatet moderne të kodimit të imazheve tepër të ndërlikuara.

Performanca e QOI është e pavarur nga rezolucioni dhe natyra e imazhit të koduar (O(n)). Kodimi dhe dekodimi kryhen me një kalim - çdo piksel përpunohet vetëm një herë dhe mund të kodohet në një nga 4 mënyrat, të zgjedhura në varësi të vlerave të pikselëve të mëparshëm. Nëse piksel tjetër përkon me atë të mëparshëm, atëherë numëruesi i përsëritjes vetëm rritet. Nëse piksel përputhet me një nga vlerat në tampon 64 pixel të kaluar, atëherë vlera zëvendësohet nga një zhvendosje 6-bit me pikselin e kaluar. Nëse ngjyra e pikselit të mëparshëm është paksa e ndryshme, ndryshimi tregohet në një formë të shkurtër (kodim i shkurtër i ndryshimeve në përbërësit e ngjyrave që përshtaten në 2,4, 5 dhe XNUMX bit). Nëse optimizimi nuk është i zbatueshëm, jepet vlera e plotë rgba.

Burimi: opennet.ru

Shto një koment