Новый формат QOI может заменить PNG и позволит в десятки раз быстрее сжимать изображения

Новый формат QOI можно найти на хостинге Github
Всё написанное проверено на личном опыте и сверено с официальной информацией.

Программист Доминик Саблевски из Германии представил широкой публике совершенно новый и простой формат, который позволяет в десятки раз быстрее сжимать картинки в цветовой модели RGBA. При этом итоговый размер файла лишь немного отличается от популярного формата PNG. Автор разработки признался, что в алгоритмах сжатия мало что понимает, а идея пришла к нему при работе над проектом в смежной области.

Формат PNG может отойти на второй план

В новом формате сжатия растровых изображений с цветовой моделью RGB(A) качество не теряется. Эта разработка называется кратко QOI, (Quite OK Image, что переводится как «вполне нормальное изображение»). Здесь все очень просто и лаконично, а также доступна высокая скорость скачивания.
Автор разработки Доминик Саблевски рассказал, что скорость кодирования при скачивании картинки в 20-50 раз выше, в сравнении с популярным форматом PNG. По скорости декодирования QOI тоже превосходит популярный формат где-то в 3 раза.

Разработчик производил множество экспериментов и замерял производительность алгоритмов сжатия и распаковки картинок. Всего в работе было 185 изображений, среди которых обои для рабочего стола, фотографии, скриншоты и текстуры. В работе использовались открытые библиотеки изображений.

Исходный код доступен всем

Все материалы, имеющие отношение к формату QOI уже размещены на хостинге Github и доступны всем желающим. На конец ноября 2021 года проект включал в себя всего три файла:

  1. Заголовочный или qoi.h. Он включает функцию кодирования и декодирования изображений.
  2. Утилита командной строки qoiconv.c. Используется для преобразования файлов из формата PNG в QOI и обратно;
  3. Инструмент-обертка qoibench.c. Помогает сравнивать скорости кодирования.

Сторонние разработчики дополнительно подготовили реализации кодировщиков и декодировщиков на языках Go, Zig и Rust.

Автор совсем не разбирается в алгоритмах сжатия

Программист Доминик Саблевски написал в своем блоге, что совершенно не разбирается в алгоритмах сжатия. Он признался, что вообще еле понимает принцип работы алгоритма кодирования Хаффмана. Не очень понимает он и процесс дискретного конусного преобразования.
Изначально перед программистом не стояла задача создать новый формат для сжатия изображений. Саблевски вообще специализируется над созданием игр и работал над очередным проектом. По его словам требовалось создать какую-то простую схему сжатия, которая была бы похожа на MPEG, но с более простым форматом файла.
Но это открытие уже привлекло много программистов-любителей, которые внесли в программу ряд изменений, чтобы улучшить функции. В своем блоге Саблевски написал, что совсем не ожидал такого интереса к своей разработке.

Особенности нового метода

Саблевски в своем блоге объяснил, что формат QOI позволяет кодировать и декодировать изображение всего в один проход. Получается, что каждый пиксель, а это минимальный элемент изображения, алгоритм обрабатывает всего один раз. При этом каждый отдельный пиксель может быть закодирован четырьмя различными способами, это напрямую зависит от параметров соседнего элемента.

Новый формат QOI может заменить PNG и позволит в десятки раз быстрее сжимать изображения
В случае, если анализируемый пиксель аналогичен по цвету с соседним, то полные его характеристики не записываются, а счетчик повторений просто увеличивается на единицу. Именно поэтому новый алгоритм сжатия может обеспечить хороший результат даже при наличии большого количества точек одного цвета.
Бывает так, что анализируемый пиксель совсем незначительно отличается от соседнего. В таком случае в сокращенной форме записывается разница между цветовой гаммой.

Благодаря новому формату формируется и поддерживается в актуальном состоянии массив, состоящий из 64 последних обработанных пикселей. Если анализируемая точка совпадает с теми, которые уже были обработаны, то ему присваивается аналогичный индекс.
Случается и так, что входной поток данных не получается оптимизировать. В таком случае пишется полный индекс цвета в формате RGBA.

Новый формат сжатия имеет линейную сложность. За счет этого его производительность совершенно не зависит от объема исходных данных, то есть размера картинки.

0 0 Голоса
Рейтинг статьи
Задай вопрос оператору!
Подписаться
Уведомление о
guest

0 комментариев
старее
новее большинство голосов
Встроенные отзывы
Посмотреть все комментарии
Горячие новости
0
Будем рады вашему мнению. Прокомментируйтеx