Быстрое сжатие без потери качества c помощью алгоритма ImageZero (IZ)
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)