Компания Google открыла код эффективного JPEG-кодировщика Guetzli
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.
Источник: http://www.opennet.ru/opennews/art.shtml?num=46208
|
0 | Tweet | Нравится |
|