
- •Сжатие данных
- •Терминология
- •Физическое и логическое сжатие
- •Симметричное и асимметричное сжатие
- •Адаптивное, полуадаптивное и неадаптивное кодирование
- •Сжатие с потерями и минимизация потерь
- •Варианты группового кодирования
- •Пакеты вертикального повторения
- •Удаление шума и дифференцирование
- •Варианты алгоритма lzw
- •Юридические вопросы использования lzw
- •Историческая справка
- •Одномерное кодирование Group 3 (g31d)
- •Сжатие tiff Type 2
- •Двухмерное кодирование Group 3 (g32d)
- •Двухмерное кодирование Group 4 (g42d)
- •Советы по разработке кодировщиков и декодеров ccitt
- •Jpeg в перспективе
- •Основы jpeg
- •Преобразование изображения
- •Субдискретизация компонентов цветности
- •Применение дискретного косинус-преобразования
- •Квантование каждого блока
- •Арифметическое кодирование
- •Сжатие jpeg без потерь
- •Селективное улучшение
- •Фрагментация изображения
- •Принцип работы jbig
- •Принципы работы art
- •Основы фрактальной графики
- •Мультимедиа
- •Анимация
- •Цифровая видеоинформация
- •Цифровая аудиоинформация
- •Стандарт midi
Сжатие данных
Сжатие — это процесс, применяемый для уменьшения физического размера блока информации. Работая с компьютерной графикой, мы заинтересованы в том, чтобы уменьшить размер блока графических данных и таким образом поместить в заданное физическое пространство больше информации. Сжатие можно применять и для того, чтобы помещать большие изображения в блок памяти заданного размера. Просмотрев спецификации файловых формата, вы обнаружите, что термин кодирование данных применяется для алгоритмов сжатия. В действительности же кодирование данных — понятие более широкое, чем просто сжатие. Сжатие данных — это один из типов кодирования, применяемый для уменьшения их объема. Другие типы кодирования включают шифрование (криптографию) и передачу данных (например, азбука Морзе).
Программа-компрессор осуществляет сжатие данных, а программа-декомпрессор — их восстановление. Декомпрессор может выполнять свои функции только на базе алгоритма сжатия, использованного для преобразования оригинальных данных в сжатую форму. На практике это означает, что если вы интересуетесь манипулированием файлами данных, то без понимания алгоритмов сжатия, применяемых на рынке сегодня, вам не обойтись. Как минимум, вам потребуются хорошие общие знания концептуальных основ этих алгоритмов.
Прочитав ряд спецификаций, вы увидите, что почти каждый формат включает в себя какой-нибудь метод сжатия (иногда элементарный). Вы также обнаружите, что всего лишь несколько схем сжатия применяются довольно широко. Большинство из них являются вариантами методов:
• группового кодирования (RLE);
• Лемпела-Зива-Велча (LZW);
• CCITT (один из типов этого сжатия является вариантом сжатия по алгоритму Хаффмена);
• дискретных косинус-преобразований (DCT), применяемого в JPEG-сжатии;
• JBIG;
• ART;
• фрактального сжатия.
Кроме того, мы рассмотрим, как осуществляется упаковка пикселей, которая не является методом сжатия, но позволяет довольно эффективно сохранять данные в последовательно расположенных байтах памяти.
Сжатие растровых, векторных и метафайловых данных осуществляется по-разному. В растровых файлах сжимаются только данные изображения; заголовок и все остальные данные (таблица цветов, концовка и т.п.) всегда остаются несжатыми. Правда, несжатые данные в данном случае занимают очень незначительную часть растрового файла.
Векторные файлы обычно не имеют "родной" формы сжатия данных. В этих файлах хранятся математические описания изображения, а не сами данные изображения. Приведем несколько соображений, поясняющих почему векторные файлы редко сжимаются:
• Представление данных изображения в компактной форме заложено в основу любого векторного формата, поэтому сжатие даст очень незначительный эффект.
• Векторные изображения обычно читаются с незначительной скоростью; если добавить еще и распаковку, то этот процесс может стать еще более медленным.
Если все же векторный файл сжимается, то, как правило, сжимаются все данные, включая заголовок.
Схемы сжатия, применяемые в метафайлах, часто похожи на схемы, используемые для сжатия растровых изображений. Их выбор зависит от типа содержащейся в метафайлах информации.
Очень важно уяснить, что алгоритмы сжатия не описывают определенный дисковый файловый формат. Многие программисты интересуются спецификациями файловых форматов CCITT или JPEG. Таких спецификаций не существует. Алгоритмы сжатия определяют только способ кодирования данных, но не формат их записи на диск. Для получения подробной информации о том, как данные хранятся на диске, смотрите действующую спецификацию файлового формата (например, BMP или GIF), в которой описаны заголовок файла, порядок байтов и другая информация, не ограниченная рамками обсуждения алгоритмов сжатия.
В следующих разделах освещены понятия, которые используются при описании процесса сжатия данных, основные алгоритмы сжатия, применяемые сегодня в форматах графических файлов.