Минус тридцать
АрхивГод начался весело. Компания Allume (более известная по названию семейства продуктов StuffIT) объявила, что научилась сжимать файлы в формате JPEG на тридцать процентов.
Год начался весело. Компания Allume (более известная по названию семейства продуктов StuffIT) объявила, что научилась сжимать файлы в формате JPEG на тридцать процентов. Тогда как любой пользователь, хоть раз работавший с архиватором, прекрасно знает, что JPEG сжимать бессмысленно. Он уже сжат. Дальше — некуда.
Когда мы обсуждали этот пресс-релиз в редакции, некоторые мои коллеги отнеслись к прорыву (в оригинале еще хлеще — revolutionary breakthrough) Allume скептически. Мол, сегодня хранение данных стоит так дешево, что проблемы компрессии изображений — и архивирования данных вообще — потеряли актуальность. Даже Дмитрий Ватолин, которого я попросил прокомментировать это событие, высказался сначала в том плане, что нынче работы над сжатием изображений ведутся, главным образом, из спортивного интереса и, конечно, для того, чтобы лишний раз себя показать. Практическая же ценность утилиты сжатия от Allume сомнительна.
Чтобы понять, что с каждым днем актуальность темы сжатия изображений повышается, достаточно посмотреть на объемы продаж цифровых фотоаппаратов, а потом немного посчитать в уме. Каждый день миллионы людей делают сотни тысяч снимков, которые, в конечном счете оседают на их жестких дисках. И через несколько месяцев активного фотографирования ты начинаешь понимать, что 200 Гбайт — величина конечная. Разумеется, если следить за своим архивом, то распухать он будет не слишком быстро — все-таки хороших снимков даже у самого талантливого фотографа очень немного. Но большинство из нас просто сливает содержимое флэшек на винчестер, предполагая разобраться с ними позднее, а втайне просто надеясь на то, что неудачные снимки, не выдержав собственного несовершенства, совершат виртуальное сеппуку и сами собой отправятся в корзину (Конечно, можно перегнать фотобиблиотеку на DVD, но работать с ней будет неудобно).
Проходит еще несколько месяцев, и ты понимаешь, что разобраться в этом бардаке совершенно невозможно. В папке foto порядка ста подпапок, в каждой из которых могут оказаться дополнительные папки. И каждый из каталогов заполнен фотографиями с удивительно информативными названиями: DSCF0001.JPG, DSCF0002.JPG и т. д.
Поскольку за неимением Геракла очистить эти авгиевы конюшни не представляется возможным, шанс заметно уменьшить их объем — это уже очень хорошо. А обещанный Allume уровень сжатия в 30 процентов для средней домашней фотобиблиотек означает экономию в несколько — а то и несколько десятков — гигабайт. При этом изображения не конвертируются в какой-то проприетарный формат, они просто архивируются и могут быть восстановлены в исходном виде с точностью до бита.
Что предлагает Allume
Первый продукт, в котором появится возможность сжимать JPEG на треть, появится в ближайшие месяц-два, — StuffIT Deuxe 9.0 for Windows. Пользователи StuffIT смогут создавать архивы формата SITX или переконвертировать изображения в формат SIF (в него можно переконвертировать не только JPEG, но и TIFF, GIF и т. д.). Сам пакет StuffIT — платный и недешевый (хотя это наших пользователей, кажется, еще ни разу не остановило), а вот утилита декомпрессии, по логике, должна быть абсолютно бесплатной. О том, как понимают «бесплатность» в Allume, — читайте чуть ниже.
Что касается формата SIF, то в Allume надеются, что он станет стандартом де-факто, подвинув JPEG на любительском рынке обработки изображений и TIFF — на профессиональном. Верится в это слабо — переход на проприетарный формат может обернуться намного дороже предполагаемой экономии дискового пространства (или трафика). К тому же, судя по распространенности SIT, старого формата StuffIT, Allume не слишком преуспела в маркетинге собственных технических решений. Потому что люди в компании работают хорошие, но очень уж хозяйственные.
Любой нормальный человек понимает: для того чтобы архиватор стал популярным, утилита распаковки должна быть бесплатной. Взять, например, RAR — закрытый формат, платный архиватор, но общая эффективность плюс бесплатная утилита распаковки ничуть его популярности не мешают. В Allume брать деньги за разархиватор не отважились, но скачать только его с сайта невозможно — он поставляется лишь в комплекте StuffIT Standard, за который, естественно, компания хочет денег. Получается, что пользователь, которому попался архив в формате SITX должен загрузить пробную версию StuffIT Standard, выдрать из нее утилиту распаковки, удалить StuffIT Standard, написать гневное письмо идиоту, который выбрал для архивации именно этот формат, и лишь после всех этих праведных трудов приступить собственно к работе с архивом.
Тем не менее, шансы у SITX есть — уж слишком много плюсов он предлагает для определенных категорий пользователей. Тридцать процентов — они и в Африке тридцать процентов.
Как это работает
Кодирование JPEG условно можно разбить на два этапа. Во время первого из исходного изображения в несколько проходов удаляется «лишняя» для человеческого восприятия информация — именно на этом этапе происходит потеря качества картинки, и появляются знакомые любому артефакты. На втором этапе происходит сжатие оставшихся данных. Как правило, кодирование ведется по алгоритму Хаффмана (изредка применяется арифметическое кодирование, но оно требует больших вычислительных ресурсов, заметного выигрыша не дает и на практике встречается гораздо реже). На беду, кодирование Хаффмана не очень эффективно, однако результат при этом очень плохо сжимается. С последней особенностью, наверняка, сталкивался каждый, кто пытался упаковать файл в формате JPEG с помощью обычного архиватора — в лучшем случае, выигрыш составит процент-два, в худшем — получившийся архив окажется больше исходного файла.
В Allume, судя по всему, решили попросту отказаться от кодирования Хаффмана и использовали свой собственный алгоритм, что и позволило добиться столь впечатляющего сжатия. Архиватор «знает», что он упаковывает JPEG-файл и эффективность его подобна флюсу — наверняка, во всех остальных случаях заметного выигрыша мы не увидим (а если и увидим, то достигнут он будет другими средствами). Об особенностях алгоритма пока ничего не известно, так как единственная доступная статья на эту тему («StuffIT Image Compression White Paper») на 90 процентов состоит из маркетинговых заклинаний.
Тем не менее, можно предположить, что предложенный способ оптимизации мог бы сработать и в случае с mp3-файлами, поскольку в них тоже используется кодирование по методу Хаффмана.
Оптимизация по Allume — при всей технической эффективности этого решения — вариант довольно неудобный. Остается надеяться, что самой идеей замены алгоритма сжатия без потерь, реализованного в JPEG, заинтересуются более дружелюбные к пользователям разработчики.
В конце концов, теперь очевидно, что сделать это можно. Осталось только сделать.
Фрактальное послесловие
Собственно, статья уже кончилась, но, возможно, кому-то будет интересно вспомнить о фрактальном сжатии изображений.
Десять назад об этом методе говорили очень много. Причем говорили совершенно чудесные вещи: продвинутые алгоритмы, якобы, позволяют сжимать изображения с коэффициентом 10000:1 и пройдет, дескать, лет пять, как все мы забудем корявое слово JPEG.
Забыли, скорее, про фракталы. Компании Iterated Systems, основанной «отцом» фрактального сжатия Майклом Барнсли (Michael Barnsley), более не существует, все ее активы приобрела корпорация Interwoven. Никаких особенно успешных конкурентов JPEG на рынке тоже не появилось (за исключением JPEG2000, в котором реализована схема вейвлет-преобразования, но его успешным считать пока рановато, и PNG, который все же более конкурирует с GIF). Главный продукт Iterated Systems — MediaBin — живет и здравствует, однако сегодня формат FIF позиционируется не столько как средство эффективного сжатия изображений, сколько как решения для качественного масштабирования. Никаких потрясающих результатов по части сжатия за приемлемое время разработчикам добиться так и не удалось, а вот масштабируются изображения в формате FIF куда лучше, чем JPEG или даже TIFF. Потому что в принципе не имеют такой характеристики, как разрешение — исходное изображение восстанавливается с помощью системы итеративных функций, и повысить разрешение можно всего лишь увеличив количество итераций.
«Всего лишь увеличив количество итераций» — звучит здорово, пока не попробуешь проделать это на практике. MediaBin рассчитан на использование в больших организациях, поэтому я решил познакомиться с настоящим фрактальным сжатием на примере более скромного продукта Genuine Fractals от LizardTech, который реализован в виде плагина к Adobe Photoshop. Компьютер под рукой оказался не очень мощный (Pentium 4 1,4 ГГц; 256 Мбайт RAM), однако мне казалось, что этого для работы плагина должно быть достаточно. И действительно — на то, чтобы сконвертировать изображение, компьютерных ресурсов хватило (медленно, но терпимо). Я смог его даже переоткрыть. А вот когда я попытался увеличить разрешение в пять раз — начались проблемы.
Через час сорок минут я решил перегрузиться.
Genuine Fractals предлагает два способа конвертации изображений — lossless и visual lossless. В первом случае качественное масштабирование изображения гарантируется, во втором — нет. Исходный файл, с которым я мучался, был снят цифровой камерой и сохранен в формате JPEG (2832x2128, 24 бита, 2,19 Мбайт). Тот же файл, сконвертированный в STN в режиме lossless, занимает на диске 6,36 Мбайт, в режиме visual lossless — 1,46 Мбайт. На открытие файла в стандартном разрешении уходит порядка 30 секунд (включая два обязательных щелчка мышкой). Даже при большом увеличении картинки, сохраненного с установкой visual lossless, никаких отличий от исходного джипега не видно.
Я охотно допускаю, что если бы исходником был TIFF, то STN-файл выглядел бы предпочтительнее. Экономия места заметная, однако в моем случае овчинка выделки не стоит — слишком много времени уходит на перекодировку, слишком неудобно работать с изображениями после нее. Сегодня у фракталов, собиравшихся когда-то заполонить весь рынок сжатия изображений, весьма ограниченная область применения — они нужны для пересылки огромных картинок полиграфического качества (впрочем, конечный пункт пересылки — типография — все равно потребует файл в нормальном формате), используются для хранения и передачи оцифрованных геоданных и применяются дизайнерами для повышения четкости картинок, которые после всех манипуляций снова сохраняются в JPEG или TIFF.
Насколько это актуально?
— Актуальность на сегодня средняя, так скажем. Интересно сжатие JPEG трем категориям потребителей. Во-первых, продвинутым пользователям, которые не боятся ставить новинки, и у которых большие коллекции картинок. Во-вторых, это интересно производителям архиваторов, ибо преимущество в 25-30% на сжатии JPEG — это заметный стимул, воспользоваться именно этим архиватором, отсылая другу несколько фотографий. И, в-третьих, серьезными заказчиками являются компании, производящие канальные и серверные акселераторы. На западе, в отличие от нас, сейчас очень распространены безлимитные тарифы. Соответственно, растет трафик и провайдеры весьма заинтересованы в его эффективном сжатии. Например, по оценкам некоторых аналитиков, объем рынка продажи средств компрессии трафика для WAN в ближайшие несколько лет составит 5 млрд. долларов.
Разве JPEG недостаточно?
— JPEG был принят в 1991 году, там использованы старые методы. Сейчас можно его пережать весьма эффективно. Впрочем, в скором времени распространится более эффективный стандарт JPEG-2000 (в последнем Photoshop его поддержка уже появилась). Он реально дает лучшее сжатие при том же качестве. НО! Это если сжимается оригинал. При пережатии JPEG с таким же или меньшим размером качество станет хуже. Поэтому пережатие JPEG без потерь весьма интересно!
И еще замечание — авторы не приводят статистики, но по опыту дожатия у них наверняка выяснится, что алгоритм более эффективен для одних коэффициентов сжатия и менее — для других. С большой вероятностью алгоритм будет более эффективен на очень слабых и очень сильных сжатиях (по опыту оптимизации его таблиц Хаффмана). Это значит, что применение его к домашней коллекции бережно зажатых фото с фотоаппарата даст значительный выигрыш.
Почему никто не сделал этого раньше?
— Методы, с помощью которых это стало возможно (то же контекстное моделирование), появились и активно развились сравнительно недавно. Опять же памяти и операций новые алгоритмы требуют часто на порядок больше. Только закон Мура спасает, да массовую доступность новым методам дает.
Есть ли перспективы у фрактального сжатия изображений? В конце 80-х о нем очень много говорилось, но спустя несколько лет, как отрезало.
Почему?
— Шумиха была во многом из-за революционности принципа, красивости названия и реально высокой степени сжатия некоторых (далеко не всех) изображений. Опять же сильно сказалось, что ключевые патенты на алгоритм не лицензировались, поэтому ни одна компания, будучи в здравом уме, не могла финансировать такие проекты. Были достаточно массовые эксперименты с алгоритмами в университетах, но дальше дело не пошло.