Существует большая гибкость в том, как вы можете настроить файл JPEG для наилучшего представления изображения. Теперь Guetzli от Google может находить оптимальные настройки и таким образом создавать файлы, которые на 45% превосходят другие кодеры, работающие с тем же качеством восприятия.
Это не займет много времени, чтобы найти примеры огромных файлов jpeg, которые действительно не улучшают качество типичной веб-страницы. Вы даже можете найти большие изображения, уменьшенные до крошечного размера на странице, но оставленные при 95% сжатии JPEG. Простое упрощение или, возможно, обязательное увеличение размера и сжатие изображений JPEG до более разумных уровней значительно ускорит работу некоторых частей Интернета.
То, что сделала команда Google, гораздо более радикально, чем просто настройка параметров сжатия в GIMP или PhotoShop. Первой проблемой, которую они должны были решить, была попытка оценить качество изображения. Для этого они изобрели Баттераугли, модель человеческого зрения.
«Butteraugli-это проект, который оценивает психовизуальное сходство двух изображений. Он дает оценку для изображений, которая надежна в области едва заметных различий. Баттераугли не только дает скалярную оценку, но и вычисляет пространственную карту уровня различий.
Одной из основных мотиваций для этого проекта являются статистические различия в расположении и плотности различных цветовых рецепторов, особенно низкая плотность синих колбочек в ямке. Другая мотивация исходит из более точного моделирования ганглиозных клеток, в частности, ингибирования частотного пространства.»
Как только у них появился метод оценки качества изображения, следующим шагом было внедрение процедуры оптимизации, которая корректировала параметры сжатия JPEG для получения наименьшего файла с заданным качеством. Программа для выполнения этой работы называется Guetzli [guɛtsli] — печенье на швейцарском немецком языке.
Две корректировки сжатия, которые могут быть сделаны, — это глобальная настройка таблиц квантования и локальная оптимизация замены некоторого значения частоты на ноль. Первая оптимизация соответствует обычной настройке качества, которую вы найдете на любом кодере. Установка некоторых частот на ноль позволяет кодированию длины выполнения уменьшить размер файла за счет потери детализации в области изображения, которое кодирует блок. Оптимизация происходит путем изменения глобального качества, а затем оптимизации коэффициентов.
Полученные изображения на 29-45% меньше по сравнению с другими кодерами того же качества. Большая проблема заключается в том, что оптимизация требует много памяти и очень медленная. Он может использоваться только для сжатия статического содержимого. Однако. после того, как вы создали оптимизированное изображение JPEG, оно может быть декодировано любым стандартным декодером JPEG, и никаких изменений в стандарте не требуется.
Оба проекта с открытым исходным кодом и доступны на GitHub.