Прадстаўлены фармат сціску малюнка QOI

Прадстаўлены новы легкаважны фармат сціску малюнкаў без страт – QOI (Quite OK Image), які дазваляе вельмі хутка сціскаць выявы ў каляровых прасторах RGB і RGBA. Пры параўнанні прадукцыйнасці з фарматам PNG аднаструменная эталонная рэалізацыя фармату QOI на мове Сі, якая не выкарыстоўвае SIMD-інструкцыі і асэмблерныя аптымізацыі, па хуткасці кадавання ў 20-50 разоў пераўзыходзіць бібліятэкі libpng і stb_image, а па хуткасці дэкадавання ў 3-4 разы. Па эфектыўнасці сціску QOI у большасці тэстаў блізкі да libpng (у нейкіх тэстах трохі апярэджвае, а ў нейкіх прайгравае), але ў цэлым прыкметна апярэджвае stb_image (выйгрыш аж да 20%).

Эталонная рэалізацыя QOI на мове Сі налічвае ўсяго 300 радкоў кода. Зыходныя тэксты распаўсюджваюцца пад ліцэнзіяй MIT. Дадаткова энтузіястамі падрыхтаваны рэалізацыі кадавальнікаў і дэкадавальнікаў на мовах Go, Zig і Rust. Праект развівае Даменік Саблеўскі (Dominic Szablewski), распрацоўшчык гульняў, які мае досвед стварэння бібліятэкі для дэкадавання відэа ў фармаце MPEG1. Пры дапамозе фармату QOI аўтар хацеў паказаць, што магчыма стварэнне эфектыўнай і простай альтэрнатывы пераўскладненай сучасным фарматам кадавання малюнкаў.

Прадукцыйнасць QOI не залежыць ад дазволу і характару кадаванай выявы (O(n)). Кадаванне і дэкадаванне выконваецца ў адзін праход - кожны піксель апрацоўваецца толькі адзін раз і можа кадзіравацца адным з 4 спосабаў, выбіраемых у залежнасці ад значэнняў мінулых пікселяў. Калі чарговы піксель супадае з папярэднім, то толькі павялічваецца лічыльнік паўтораў. Калі піксель супадае з адным са значэнняў у буферы 64 мінулых пікселяў, то замест значэння паказваецца 6-бітавае зрушэнне на мінулы піксель. Калі колер мінулага пікселя нязначна адрозніваецца, у кароткай форме паказваецца адрозненне (скарочанае кадоўванне адрозненняў каляровых складнікаў, якія ўкладваюцца ў 2,4 і 5 біта). Калі аптымізацыя не прымяняецца, паказваецца поўнае значэнне rgba.

Крыніца: opennet.ru

Дадаць каментар