Новости Google пытается оптимизировать формат JPEG, увеличив компрессию на 35%. Что это за технология?

YURSHAT

Тех. админ
Администратор
Формат изображений JPEG появился ещё в конце прошлого века, причём актуальность он не теряет, а, наоборот, набирает. Казалось бы, что можно изменить в технологии, которой столько лет? В Google посчитали, что сейчас самое время для оптимизации формата, а именно повышения эффективности компрессии. Что предложили в Google и как работает новая технология?

JPEG и разработка корпорации
В Google предложили новую библиотеку для кодирования изображений в формате JPEG, о чём компания и сообщила в своём блоге. Называется новинка Jpegli, и, по словам её создателей, она обеспечивает до 35% более высокую степень сжатия относительно традиционных кодеков. При этом качество изображений будет хорошим, плюс сохраняется обратная совместимость с технологиями, которые использовались ранее.

По мнению корпорации, если файлы JPEG облегчить, то это даст лишь плюсы — как пользователям, так и компаниям. Что касается первых, то они получат более быструю загрузку веб-страниц, насыщенных графикой. Ну а вторые смогут оптимальнее использовать объём файловых хранилищ, также, возможно, снизится объём передаваемых по сети данных. Конечно, это будет возможно лишь при условии массового применения библиотеки.


Стоит напомнить, что у JPEG несколько преимуществ, которые и дали возможность формату существовать и быть актуальным много лет подряд. Дело в том, что при сжатии файла можно управлять уровнем качества, что даёт возможность гибко реагировать на решение разных задач. Кроме того, JPEG поддерживает и технологию EXIF, позволяющую хранить важные метаданные. Ну а совместимы с этим форматом практически все графические редакторы — как известные, так и пет-проекты с единицами пользователей.

Новый проект Google, по словам авторов, даёт возможность снизить шумы и в целом улучшить качество изображения. Одна из задействованных технологий — эвристика квантования, которая применяется JPEG XL. А ещё применялись оптимизированные алгоритмы выбора матриц квантования и вычисления промежуточных результатов. Также авторы библиотеки добавили более совершенные цветовые пространства.

Работа с Jpegli не создаёт никаких проблем, поскольку изображения, отредактированные или созданные с использованием этой библиотеки, совместимы с любыми технологиями, с которыми имеет совместимость и формат JPEG. Соответственно, такие «картинки» можно отображать на веб-страницах, работать с ними в графических редакторах, просматривать в любых других программах.

Что ещё?
По словам представителей Google, с библиотекой поставляются как кодер, так и декодер. Они соответствуют всем стандартам JPEG, а также обратно совместимы с libjpeg-turbo и MozJPEG.

libjpeg-turbo — высокопроизводительная библиотека для кодирования и декодирования изображений в формате JPEG. Libjpeg-turbo представляет собой совместимый на уровне API/ABI форк классической библиотеки libjpeg, нацеленный на обеспечение максимальной скорости обработки изображений.

MozJPEG — проект Mozilla, стартовавший в 2014 году. Его цель — создание качественного кодера JPEG, который улучшит сжатие изображений при сохранении совместимости с существующими декодерами.

По мнению Google, новая библиотека даёт возможность получать более качественные изображения на выходе после сжатия по сравнению с подавляющим большинством существующих решений. Результат выглядит более чётким и визуально: на картинке сложно обнаружить видимые проблемы. Всё это возможно благодаря задействованию целого комплекса современных технологий.

Кроме качества, ещё одно достоинство библиотеки — более быстрое выполнение операций кодирования и декодирования. По этому параметру новое решение идёт вровень или обгоняет существующие технологии. Соответственно, веб-разработчики могут без проблем интегрировать Jpegli в свои существующие рабочие процессы, не жертвуя производительностью кодирования или использованием памяти.

Jpegli может быть закодирован с использованием более 10 бит на компонент. Традиционные решения для кодирования JPEG предлагают только 8-битную кодировку на компонент, что приводит к видимым артефактам полос в медленных градиентах. 10-битное кодирование и кодирование с большей битностью в Jpegli происходит в исходном 8-битном формализме, и полученные изображения полностью совместимы с 8-битными программами просмотра. 10-битная динамика доступна в виде расширения API, и для её использования необходимо внести изменения в код приложения.

Немного тестов
Для того чтобы не быть голословными, разработчики из Google провели несколько тестов. Так, они упаковали в JPEG-файлы датасет изображений компании Cloudinary с использованием Jpegli, libjpeg-turbo и MozJPEG. При этом изображения представлены несколькими копиями с разным битрейтом.


Группу пользователей (не из Google, их привлекли при помощи различных сервисов) просили сравнивать пары изображений, полученные посредством работы с разными кодеками (Jpegli, libjpeg-turbo и MozJPEG), с тем чтобы выбирать самые качественные.

На диаграмме выше показаны результаты тестирования. Для их выведения применялся метод Эло.

Библиотека jpegli написана на языке C++ и распространяется под лицензией BSD, обеспечивая свободное использование и модификацию кода. Она полностью совместима на уровне API и ABI с libjpeg62. Вот ссылка на саму библиотеку.

 
Сверху