Классы приложений
Примеры приложений, использующих алгоритмы компрессии графики
Рассмотрим следующую простую классификацию приложений,
использующих алгоритмы компрессии:
- Класс 1. Характеризуются высокими требованиями ко времени
архивации и разархивации. Нередко требуется просмотр уменьшенной копии
изображения и поиск в базе данных изображений. Примеры: Издательские
системы в широком смысле этого слова. Причем как готовящие качественные
публикации (журналы) с заведомо высоким качеством изображений и использованием
алгоритмов архивации без потерь, так и готовящие газеты, и информационные
узлы в WWW, где есть возможность оперировать изображениями меньшего качества
и использовать алгоритмы сжатия с потерями. В подобных системах приходится
иметь дело с полноцветными изображениями самого разного размера (от 640х480
— формат цифрового фотоаппарата, до 3000х2000) и с большими двуцветными
изображениями. Поскольку иллюстрации занимают львиную долю от общего объема
материала в документе, проблема хранения стоит очень остро. Проблемы также
создает большая разнородность иллюстраций (приходится использовать универсальные
алгоритмы). Единственное, что можно сказать заранее, это то, что будут
преобладать фотореалистичные изображения и деловая графика.
- Класс 2. Характеризуется высокими требованиями к степени
архивации и времени разархивации. Время архивации роли не играет. Иногда
подобные приложения также требуют от алгоритма компрессии легкости масштабирования
изображения под конкретное разрешение монитора у пользователя. Пример:
Справочники и энциклопедии на CD-ROM. С появлением большого количества
компьютеров, оснащенных этим приводом (в США — у 50% машин), достаточно
быстро сформировался рынок программ, выпускаемых на лазерных дисках. Несмотря
на то, что емкость одного диска довольно велика (примерно 650 Мб), ее,
как правило, не хватает. При создании энциклопедий и игр большую часть
диска занимают статические изображения и видео. Таким образом, для этого
класса приложений актуальность приобретают существенно асимметричные по
времени алгоритмы (симметричность по времени — отношение времени
компрессии ко времени декомпрессии).
- Класс 3. Характеризуется очень высокими требованиями к
степени архивации. Приложение клиента получает от сервера информацию
по сети. Пример: Новая быстро развивающаяся система “Всемирная информационная
паутина” — WWW. В этой гипертекстовой системе достаточно активно используются
иллюстрации. При оформлении информационных или рекламных страниц хочется
сделать их более яркими и красочными, что естественно сказывается на размере
изображений. Больше всего при этом страдают пользователи, подключенные
к сети с помощью медленных каналов связи. Если страница WWW перенасыщена
графикой, то ожидание ее полного появления на экране может затянуться.
Поскольку при этом нагрузка на процессор мала, то здесь могут найти применение
эффективно сжимающие сложные алгоритмы со сравнительно большим временем
разархивации. Кроме того, мы можем видоизменить алгоритм и формат данных
так, чтобы просматривать огрубленное изображение файла до его полного получения.
Можно привести множество более узких классов приложений.
Так, свое применение машинная графика находит и в различных информационных
системах. Например, уже становится привычным исследовать ультразвуковые
и рентгеновские снимки не на бумаге, а на экране монитора. Постепенно в
электронный вид переводят и истории болезней. Понятно, что хранить эти
материалы логичнее в единой картотеке. При этом без использования специальных
алгоритмов большую часть архивов займут фотографии. Поэтому при создании
эффективных алгоритмов решения этой задачи нужно учесть специфику рентгеновских
снимков — преобладание размытых участков.
В геоинформационных системах — при хранении аэрофотоснимков
местности — специфическими проблемами являются большой размер изображения
и необходимость выборки лишь части изображения по требованию. Кроме
того, может потребоваться масштабирование. Это неизбежно накладывает
свои ограничения на алгоритм компрессии.
В электронных картотеках и досье различных служб для изображений
характерно подобие между фотографиями в профиль, и подобие между фотографиями
в фас, которое также необходимо учитывать при создании алгоритма архивации.
Подобие
между фотографиями наблюдается и в любых других специализированных
справочниках. В качестве примера можно привести энциклопедии птиц или цветов.
Итог: Нет смысла говорить о том, что какой-то
конкретный алгоритм компрессии лучше другого, если мы не обозначили
класс приложений, для которого мы эти алгоритмы собираемся сравнивать.
Требования приложений к алгоритмам компрессии
В предыдущем разделе мы определили, какие приложения являются
потребителями алгоритмов архивации изображений. Однако заметим, что приложение
определяет характер использования изображений (либо большое количество
изображений хранится и используется, либо изображения скачиваются по сети,
либо изображения велики по размерам, и нам необходима возможность получения
лишь части...). Характер использования изображений задает степень важности
следующих ниже противоречивых требований к алгоритму:
- Высокая степень компрессии. Заметим, что далеко не
для всех приложений актуальна высокая степень компрессии. Кроме того, некоторые
алгоритмы дают лучшее соотношение качества к размеру файла при высоких
степенях компрессии, однако проигрывают другим алгоритмам при низких степенях.
- Высокое качество изображений. Выполнение этого требования
напрямую противоречит выполнению предыдущего...
-
Высокая скорость компрессии. Это требование для некоторых
алгоритмов с потерей информации является взаимоисключающим с первыми двумя.
Интуитивно понятно, что чем больше времени мы будем анализировать изображение,
пытаясь получить наивысшую степень компрессии, тем лучше будет результат.
И, соответственно, чем меньше мы времени потратим на компрессию (анализ),
тем ниже будет качество изображения и больше его размер.
-
Высокая скорость декомпрессии. Достаточно универсальное
требование, актуальное для многих приложений. Однако можно привести примеры
приложений, где время декомпрессии далеко не критично.
-
Масштабирование изображений. Данное требование подразумевает
легкость изменения размеров изображения до размеров окна активного приложения.
Дело в том, что одни алгоритмы позволяют легко масштабировать изображение
прямо во время декомпрессии, в то время как другие не только не позволяют
легко масштабировать, но и увеличивают вероятность появления неприятных
артефактов после применения стандартных алгоритмов масштабирования к декомпрессированному
изображению. Например, можно привести пример “плохого” изображения для
алгоритма JPEG — это изображение с достаточно мелким регулярным рисунком
(пиджак в мелкую клетку). Характер вносимых алгоритмом JPEG искажений таков,
что уменьшение или увеличение изображения может дать неприятные эффекты.
-
Возможность показать огрубленное изображение (низкого
разрешения), использовав только начало файла. Данная возможность актуальна
для различного рода сетевых приложений, где перекачивание изображений может
занять достаточно большое время, и желательно, получив начало файла, корректно
показать preview. Заметим, что примитивная реализация указанного требования
путем записывания в начало изображения его уменьшенной копии заметно ухудшит
степень компрессии.
-
Устойчивость к ошибкам. Данное требование означает
локальность нарушений в изображении при порче или потере фрагмента передаваемого
файла. Данная возможность используется при широковещании (broadcasting
— передача по многим адресам) изображений по сети, то есть в тех случаях,
когда невозможно использовать протокол передачи, повторно запрашивающий
данные у сервера при ошибках. Например, если передается видеоряд, то было
бы неправильно использовать алгоритм, у которого сбой приводил бы к прекращению
правильного показа всех последующих кадров. Данное требование противоречит
высокой степени архивации, поскольку интуитивно понятно, что мы должны
вводить в поток избыточную информацию. Однако для разных алгоритмов объем
этой избыточной информации может существенно отличаться.
- Учет специфики изображения. Более высокая степень
архивации для класса изображений, которые статистически чаще будут применяться
в нашем приложении. В предыдущих разделах это требование уже обсуждалось.
- Редактируемость. Под редактируемостью понимается минимальная
степень ухудшения качества изображения при его повторном сохранении после
редактирования. Многие алгоритмы с потерей информации могут существенно
испортить изображение за несколько итераций редактирования.
-
Небольшая стоимость аппаратной реализации. Эффективность
программной реализации. Данные требования к алгоритму реально предъявляют
не только производители игровых приставок, но и производители многих информационных
систем. Так, декомпрессор фрактального алгоритма очень эффективно и коротко
реализуется с использованием технологии MMX и распараллеливания вычислений,
а сжатие по стандарту CCITT Group 3 легко реализуется аппаратно.
Очевидно, что для конкретной задачи нам будут очень
важны одни требования и менее важны (и даже абсолютно безразличны) другие.
Итог: На практике для каждой задачи мы можем
сформулировать набор приоритетов из требований, изложенных выше,
который и определит наиболее подходящий в наших условиях алгоритм (либо
набор алгоритмов) для ее решения.
Критерии сравнения алгоритмов
Заметим, что характеристики алгоритма относительно некоторых
требований приложений, сформулированные выше, зависят от конкретных условий,
в которые будет поставлен алгоритм. Так, степень компрессии зависит
от того, на каком классе изображений алгоритм тестируется. Аналогично,
скорость
компрессии нередко зависит от того, на какой платформе реализован алгоритм.
Преимущество одному алгоритму перед другим может дать, например, возможность
использования в вычислениях алгоритма технологий нижнего уровня, типа MMX,
а это возможно далеко не для всех алгоритмов. Так, JPEG существенно выигрывает
от применения технологии MMX, а LZW нет. Кроме того, нам придется учитывать,
что некоторые алгоритмы распараллеливаются легко, а некоторые нет.
Таким образом, невозможно составить универсальное сравнительное
описание известных алгоритмов. Это можно сделать только для типовых
классов приложений при условии использования типовых алгоритмов на типовых
платформах. Однако такие данные необычайно быстро устаревают.
Так, например, еще три года назад, в 1994, интерес к
показу огрубленного изображения, используя только начало файла (требование
6), был чисто абстрактным. Реально эта возможность практически нигде не
требовалась и класс приложений, использующих данную технологию, был крайне
невелик. С взрывным распространением Internet, который характеризуется
передачей изображений по сравнительно медленным каналам связи, использование
Interlaced GIF (алгоритм LZW) и Progressive JPEG (вариант алгоритма JPEG),
реализующих эту возможность, резко возросло. То, что новый алгоритм (например,
wavelet) поддерживает такую возможность, существеннейший плюс для него
сегодня.
В то же время мы можем рассмотреть такое редкое на сегодня
требование, как устойчивость к ошибкам. Можно предположить, что
в скором времени (через 5-10 лет) с распространением широковещания в сети
Internet для его обеспечения будут использоваться именно алгоритмы, устойчивые
к ошибкам, даже не рассматриваемые в сегодняшних статьях и обзорах.
Со всеми сделанными выше оговорками, выделим несколько
наиболее важных для нас критериев сравнения алгоритмов компрессии, которые
и будем использовать в дальнейшем. Как легко заметить, мы будем обсуждать
меньше критериев, чем было сформулировано выше. Это позволит избежать лишних
деталей при кратком изложении данного курса.
- Худший, средний и лучший коэффициенты сжатия. То есть
доля, на которую возрастет изображение, если исходные данные будут наихудшими;
некий среднестатистический коэффициент для того класса изображений, на
который ориентирован алгоритм; и, наконец, лучший коэффициент. Последний
необходим лишь теоретически, поскольку показывает степень сжатия наилучшего
(как правило, абсолютно черного) изображения, иногда фиксированного размера.
-
Класс изображений, на который ориентирован алгоритм.
Иногда указано также, почему на других классах изображений получаются худшие
результаты.
-
Симметричность. Отношение характеристики алгоритма
кодирования к аналогичной характеристике при декодировании. Характеризует
ресурсоемкость процессов кодирования и декодирования. Для нас наиболее
важной является симметричность по времени: отношение времени кодирования
ко времени декодирования. Иногда нам потребуется симметричность по памяти.
-
Есть ли потери качества? И если есть, то за счет чего
изменяется коэффициент архивации? Дело в том, что у большинства алгоритмов
сжатия с потерей информации существует возможность изменения коэффициента
сжатия.
-
Характерные особенности алгоритма и изображений, к
которым его применяют. Здесь могут указываться наиболее важные для алгоритма
свойства, которые могут стать определяющими при его выборе.
Используя данные критерии, приступим к рассмотрению алгоритмов
архивации изображений.
Прежде, чем непосредственно начать разговор об алгоритмах,
хотелось бы сделать оговорку. Один и тот же алгоритм часто можно реализовать
разными способами. Многие известные алгоритмы, такие как RLE, LZW или JPEG,
имеют десятки различающихся реализаций. Кроме того, у алгоритмов бывает
несколько явных параметров, варьируя которые, можно изменять характеристики
процессов архивации и разархивации. (См. примеры в разделе о форматах).
При конкретной реализации эти параметры фиксируются, исходя из наиболее
вероятных характеристик входных изображений, требований на экономию памяти,
требований на время архивации и т.д. Поэтому у алгоритмов одного семейства
лучший и худший коэффициенты могут отличаться, но качественно картина не
изменится.
Контрольные вопросы к разделу
- Какие параметры надо определить, прежде чем сравнивать два
алгоритма компрессии?
- Почему некорректно сравнивать временные параметры реализаций
алгоритмов компрессии, оптимально реализованных на разных компьютерах?
Приведите примеры ситуаций, когда архитектура компьютера дает преимущества
тому или иному алгоритму.
- Предложите пример своего класса изображений.
- Какими свойствами изображений мы можем пользоваться, создавая
алгоритм компрессии? Приведите примеры.
- Что такое редактируемость?
- Назовите основные требования приложений к алгоритмам компрессии.
- Что такое симметричность?
- Предложите пример своего класса приложений.
- Приведите примеры аппаратной реализации алгоритма сжатия
изображений (повседневные и достаточно новые).
- Почему высокая скорость компрессии, высокое качество изображений
и высокая степень компрессии взаимно противоречивы? Покажите противоречивость
каждой пары условий.
|