Наведено формат стиснення зображень 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

Додати коментар або відгук