Квантовый Ёжик (overquantum) wrote,
Квантовый Ёжик
overquantum

Category:
  • Music:

Беспонтовые печенюшки

Как вы возможно слышали, Google открыл доступ к новому инструменту Guetzli для сжатия изображений формата JPEG.

Что пока удалось выяснить:
1) Guetzli формирует стандартный JPEG, который должен отображаться большинством программ.
2) Вся фишка в подборе таблиц квантования и Хаффмана, которые (как заявляет Google) позволяют добиться уменьшения объёма без потери визуального качества изображения.
3) Работает Guetzli очень медленно и требует много оперативной памяти.
4) Доступная для скачивания версия инструмента кодирует только картинки качеством 84-110. Качество выше 100 даёт пренебрежимо малое улучшение изображения и размера.
5) С точки зрения ремонтопригодности сформированные Guetzli картинки аналогичны адаптивным/оптимизированным - если таблицы Хаффмана (из заголовка) утрачены, то восстановить картинку не получится. Если таблицы Хаффмана уцелели, то восстановить можно всё или почти всё, что не утрачено.
Таблицы квантования хоть и тоже адаптивные, их утрата не критична для восстановления.

Подробнее:
6) JPEG формируется не совсем обычный - с маркером SOF1 (Extended sequential DCT) вместо типичного SOF0 (Baseline DCT).
Сделали это для формирования 6 таблиц Хаффмана (разные для Cb и Cr каналов) вместо 4 максимум в baseline.
Не исключаю, что какие-нибудь устройства (телевизоры, видеоплееры и т.д.) могут не справиться с отображением таких файлов.
Прогрессивное кодирование и sampling больше 1х1 пока не используются.
7) Таблица квантования подбирается из нечётных коэффициентов - 1,3,5,7,9,11. Наблюдаются таблицы состоящие из одного числа или из двух - поменьше в углу (для низкочастотных коэффициентов) и побольше для всех остальных. Формируется одна таблица для всех каналов, что немного странно при 6 таблицах Хаффмана. При качестве 100 и выше таблица состоит из всех 1 (как при качестве 100 в libjpeg), различия в изображении при этом, по всей видимости, из-за разного округления, а различия в размере файла - из-за разных таблиц Хаффмана.
8) Оценки на тестовых картинках типа "фото" и "рисунок" показывают, что Guetzli не обеспечивает меньший размер файла при том же среднеквадратичном отклонении (MSE) jpeg от оригинала или меньшее среднеквадратичное отклонение при том же размере, чем libjpeg в случае адаптивных таблиц Хаффмана и sampling 1x1. Однако величина среднеквадратичного отклонения не является строгой мерой визуального качества изображения. Сравнение Guetzli при q=84 и картинок от libjpeg сопоставимых по MSE или размеру показыает, что Guetzli теряет одни детали, но сохраняет другие.
Тесты проводил на 3 картинках - bees.png, cloth.png из тестов Google (как давних крайние результаты), а также самодельной test1.png. Среднеквадратичное отклонение считал ImageMagick (compare -metric MSE). Графики ниже.
9) JPEGfix загружает изображения от Guetzli без проблем (хотя текущая версия пишет сообщение про SOF1 в error_log.log, что будет исправлено).

Итог: не рекомендую использовать Guetzli для сжатия изображений, которые вам будет жаль утратить, по крайней мере если не оставляете других копий.
Аналогичная рекомендация по всем jpeg с адаптивными таблицами Хаффмана.




* MSE для bmp и png по факту равно 0, разумеется, на графиках линия приведена для демонстрации размера файлов.

test1.png:


Некоторые таблицы квантования

bees.jpg (q=84)
  9,  9,  9,  9, 11, 11, 11, 11,    
  9,  9,  9, 11, 11, 11, 11, 11,    
  9,  9,  9, 11, 11, 11, 11, 11,    
  9,  9, 11, 11, 11, 11, 11, 11,    
  9, 11, 11, 11, 11, 11, 11, 11,    
 11, 11, 11, 11, 11, 11, 11, 11,    
 11, 11, 11, 11, 11, 11, 11, 11,    
 11, 11, 11, 11, 11, 11, 11, 11,    

cloth.jpg (q=90)
  5,  5,  7,  7,  7,  7,  7,  7,    
  5,  7,  7,  7,  7,  7,  7,  7,    
  5,  7,  7,  7,  7,  7,  7,  7,    
  7,  7,  7,  7,  7,  7,  7,  7,    
  7,  7,  7,  7,  7,  7,  7,  7,    
  7,  7,  7,  7,  7,  7,  7,  7,    
  7,  7,  7,  7,  7,  7,  7,  7,    
  7,  7,  7,  7,  7,  7,  7,  7,   

cloth.jpg (q=99)
  1,  1,  1,  1,  1,  1,  1,  1,    
  1,  1,  1,  1,  1,  1,  1,  1,    
  1,  1,  1,  1,  1,  1,  1,  1,    
  1,  1,  1,  1,  1,  1,  1,  1,    
  1,  1,  1,  1,  1,  1,  1,  1,    
  1,  1,  1,  1,  1,  1,  1,  3,    
  1,  1,  1,  1,  1,  1,  3,  3,    
  1,  1,  1,  1,  3,  3,  3,  3,   

Tags: jpeg, jpg, science
Subscribe

  • Matrix Remix

    Ажно в 2002 году я запилил 15-минутный видеоролик MATRIXRemix из видеоряда "Матрицы" и звуков из "Кин-дза-дза!". После загрузки на YouTube ролик был…

  • Бабье в Тверской области

    Съёмка с квадрокоптера, август 2017 UPD 2018-04-02: Добавлено второе видео с исправлением дисторсии

  • Исправление сильной дисторсии / "рыбьего глаза" вручную

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

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments