3.3.2. Сжатие графических данных
Для электронных изданий, зачастую распространяемых по сетям, объем занимаемый файлом представляет собой очень важную характеристику. Понятно поэтому стремление использовать векторные форматы или же специальные растровые форматы с внутренним сжатием информации для представления графических файлов. Кратко остановимся на методах и средствах сжатия изображений.
Существует 2 группы методов сжатия изображений: без потерь и с потерями. В первом случае при распаковке сжатого графического файла полностью восстанавливается вся исходная информация, в том числе, цветовой оттенок каждого отдельного пиксела. Во втором же – часть информации теряется, т. е. изображение становится несколько менее качественным, некоторые мелкие его детали утрачиваются. Во многих случаях это вполне допустимо, так как человеческий глаз различает, в лучшем случае, лишь несколько тысяч оттенков цвета. Кроме того, он не реагирует на мелкие детали изображения (разрешение глаза близко к одной угловой минуте, откуда при нормальном расстоянии до изображения в 25—30 см можно подсчитать величину линейного разрешения глаза, которая близка к 90—100 мкм).
Большинство методов сжатия без потерь основано на варианте группового кодирования RLE (Run-Length Encoding). Идея такого метода заключается в том, что последовательности повторяющихся значений заменяются на пару чисел, первое из которых дает количество повторяющихся значений, а второе – само это значение. В описаниях многоцветных изображений очень часто соседние пикселы характеризуются одними и теми же тоновыми и цветовыми характеристиками, что и обеспечивает эффективность такого сжатия [29].
Схема сжатия без потерь Лемпела-Зива-Велча (LZW) в последние годы используется все шире и шире. Она позволяет работать с данными любого типа, обеспечивая достаточно быстрое сжатие и распаковку данных. Этот алгоритм называют алгоритмом подстановок или алгоритмом сжатия словарного типа. На основе входного потока данных алгоритм формирует словарь данных (его также называют переводной таблицей или таблицей строк). Образцы новых данных сравниваются с записями словаря. Если они там не представлены, то создается новая кодовая фраза. Если строка повторно встречается во входном потоке, то в выходной поток записывается ссылка на соответствующую строку словаря, которая имеет меньшую величину, чем исходный фрагмент данных. Так реализуется сжатие информации.
Декодирование LZW-данных производится в обратном порядке. Декомпрессор читает код из потока данных и, если этого кода еще нет в словаре, добавляет его туда. Затем этот код переводится в строку, которую он представляет, и заносится в выходной поток несжатых данных. Ряд графических форматов, в том числе и один из базовых – TIFF – используют в современных своих версиях встроенное LZW-сжатие. В частности, этот формат использован для представления рисунков в данной книге. Достоинством этого метода для графических файлов СКАЧАТЬ