Компания Google открыла код эффективного JPEG-кодировщика Guetzli

16 марта 2017 года

Компания Google объявила об открытии кода высококачественного JPEG-кодировщика Guetzli с реализацией нового алгоритма кодирования, позволяющего добиться существенного сокращения размера изображения без ухудшения качества, но с сохранением совместимости со всеми штатными декодировщиками JPEG и полным соответствием стандарту JPEG. Например, по сравнению с эталонной библиотекой libjpeg предложенный алгоритм позволяет сократить размер изображений на 20-30% c сохранением идентичного качества. Код библиотеки и базовых утилит с реализацией Guetzli написан на языке С++ и распространяется под лицензией Apache 2.0.

Guetzli близок по своему назначению к алгоритму Zopfli, позволяющему добиться повышения уровня сжатия файлов PNG и gzip, без потери совместимости. В отличие от WebP, RAISR (Rapid and Accurate Image Super-Resolution) и алгоритмов упаковки изображения на базе нейронных сетей, требующих специальных декодировщиков, Guetzli нацелен на достижение максимального уровня сжатия без нарушения совместимости с уже существующим клиентским ПО. Обратной стороной предложенного алгоритма является очень большая ресурсоёмкость. Guetzli также требует достаточно много оперативной памяти, например, для каждого 1MPix картинки требуется 300 Мб ОЗУ. Относительно других кодировщиков Guetzli работает очень медленно и не подходит для сжатия на лету, но вполне пригоден для одноразовой переупаковки имеющегося контента.

В процессе кодирования JPEG наиболее заметная потеря качества наблюдается на стадии квантования. Стадии преобразования цветового пространства и дискретное косинусное преобразование ( DCT) не столь сильно поддаются оптимизации. Guetzli оптимизирует таблицы квантования и коэфициенты DCT для каждого блока JPEG, применяя специальный оптимизатор с обратной связью (closed-loop). Для оценки оптимальности найденных параметров квантования Guetzli применяет алгоритм Butteraugli, использующий в качестве метрики уровень различий между психовизуальным моделированием JPEG и собственным более эффективным методом психовизуального моделирования, что позволяет снизить число возникающих артефактов. Например, на изображениях ниже слева представлен исходный вариант, в центре результат работы libjpeg, а справа - Guetzli.

Дополнение: Разработчики развиваемой сообществом Mozilla библиотеки кодирования JPEG-изображений MozJPEG, ориентированной на достижение более высокой степени сжатия при сохранении совместимости с существующими декодировщиками, в текущем виде не собираются добавлять поддержку алгоритма Guetzli. Несмотря на то, что уровень сжатия MozJPEG при сравнении с libjpeg-turbo не превышает 5-10%, Guetzli слишком медленный. Например, кодирование небольшого файла, размером 38 Кб, заняло 10 секунд, что в 120 раз медленнее MozJPEG.

Из недостатков Guetzli также упоминается поддержка кодирования только в режиме наивысшего качества (-quality 90). Например, MozJPEG может обеспечить более высокий уровень сжатия в режимах с приемлемым качеством. Высокая ресурсоёмкость и невозможность манипуляции уровнем качества затрудняет применение Guetzli во многих областях, на которые рассчитан MozJPEG, а именно переупаковка на лету, оптимизация изображений в высоком разрешении и сжатие с различными режимами качества. Guetzli ещё достаточно молодой проект и, возможно, в будущем проблемы с производительностью будут устранены, тогда можно будет вернуться к вопросу по интеграции его поддержки в MozJPEG.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Компания Google открыла код эффективного JPEG-кодировщика Guetzli», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.