Pull to refresh

Алгоритм ImageZero (IZ): быстрое сжатие без потери качества

Reading time 1 min
Views 5.6K
JPEG является стандартом в области компрессии изображений и это один из самых быстрых алгоритмов, но у него одна проблема: JPEG сжимает с потерей качества. Если фотография подвергается многократной обработке, это неприемлемо, и в таких случаях приходится искать альтернативу. Хочется чего-нибудь быстрого и при этом с приемлемой степенью сжатия.

Беглый взгляд на бенчмарки losless-алгоритмов на выборке фотографий не даёт оснований для радости: оказывается, PNG очень быстр на распаковке, но исключительно медленно работает на сжатии изображений.

Есть ещё JPEG-LS, хороший на первый взгляд. Но на него патент у компании HP, так что без шансов на использование. Немецкий программист Кристоф Фек (Christoph Feck) решил исправить ситуацию и выпустил свой алгоритм ImageZero сжатия фотографий без потери качества. Он примерно в 20 раз быстрее PNG, а по степени сжатия сравним с JPEG-LS.


London Bridge (Tower Bridge): Reflection on the River Thames. Автор фотографии: Anirudh Koul

Результаты обработки полноразмерной версии фотографии London Bridge (4507×3512 пикселей)
Метод Размер файла Сжатие Распаковка
Без сжатия 46380 КБ - -
JLS 14984 КБ 6,6 с 7,3 с
PNG 16256 КБ 42,4 с 2,4 с
IZ 15496 КБ 1,2 с 1,3 с
Судя по первым независимым тестам, IZ претендует на то, чтобы быть вообще самым быстрым lossless-алгоритмом для 24-битных фотографий, и по степени сжатия тоже хорошо выглядит.

Автор алгоритма пишет, что IZ не предназначен для greyscale-изображений или синтетических изображений, но он может его приспособить для этих задач. Сейчас IZ лучше всего работает на полноцветных фотографиях и может использоваться в системах хранения, для генерации уменьшенных копий для предпросмотра, ну и как будущий формат для иконок.

Исходный код ImageZero (под лицензией BSD)
Tags:
Hubs:
+45
Comments 31
Comments Comments 31

Articles