Скачиваний:
471
Добавлен:
04.03.2014
Размер:
4.9 Mб
Скачать

6.5.2. Сжатие изображений

Одной из важнейших процедур обработки изображений является сжатие. Ее целью является уме­нь­шение физического размера массива данных. В СТЗ применяется сжатие как статических, так и динамических изображений. В первом случае говорят о графических файлах, во втором - о видеоизображениях.

6.5.2.1. Сжатие графических файлов

Сначала рассмотрим наиболее известные принципы сжатия статических изображений. Процедуры сжатия могут встраиваться в спецификацию графического формата или выполняться отдельно. Существует два основных подхода к сжатию изображений: сжатие без потери информации (примерами являются методы Ха­ф­­фмена, LZW, группового кодирования - RLE и др.) и сжатие с потерей информации (например, дискретное ко­синусное преобразование - ДКП, JPEG и MPEG). В большинстве спецификаций графических форматов включены процедуры сжатия. Анализ этих процедур показывает, что чаще всего они являются модификациями нескольких базовых методов сжатия, к которым относятся: метод группового кодирования (RLE); метод Лемпела-Зива-Велча (LZW); метод CCITT (один из вариантов этого сжатия является сжатие по алгоритму ДКП, применяемого в формате JPEG), метод фрактального сжатия и ряд других.

Заметим, что сжатие растровых, векторных и метафайловых данных осуществляется по-разному. В растровых фай­лах сжимаются только данные изображения, за­головок и все остальные данные (таблица цветов, концовка и т.п.) всегда остаются несжатыми. При этом несжатые данные занимают очень незначительную часть растрового файла. Векторные файлы обычно не имеют «родной» формы сжатия данных, т.к. в них хранятся ма­те­матические описания изображения, а не сами дан­ные изображения. Учитывая, что представление данных в компактной форме заложено в основу любого векторного формата, их сжатие дает очень незначительный эффект.

Методы сжатия изображений разделяются на две категории: симметричные и асимметрич­ные.

Симметричные методы используют при сжатии и распаковке примерно одинаковые алгоритмы. Поэтому длительность процедур сжатия и распаковки примерно одинаковы. Такие алгоритмы применяются в программах обмена данными (например, протоколы V42).

При асимметричном сжатии в одном направлении выполняется значительно больший объем работы, чем в другом. Обычно на сжатие затрачивается намного больше времени и системных ресурсов, чем на распаковку. Это имеет смысл, например, если создается база данных изображений - изображения сжимаются для хранения всего однажды, зато распаковываться с целью отображения они могут неоднократно.

Алгоритмы сжатия изображений базируются на модификациях стандартных кодировщиков. Таких программ существует довольно много и они, как правило, специализированные, т.е. созданы специально для обработки данных только определенных типов. Их особенностью является применение процедуры подстановки данных из словаря. Примером подобного алгоритма, получившего название неадапти­вного кодировщика,  является алгоритм сжатия CCITT. Он  содержит статический словарь предопределенных подстрок, о которых известно, что они появляются в кодиру­емых данных достаточно часто. В отличие от него адаптивный кодировщик не содержит априорных эвристических правил для сжимаемых данных. Адаптивные компрессоры, такие как LZW, не зависят от типа обрабатываемых данных, поскольку строят свои словари полностью из поступивших (рабочих) данных. Они не имеют предопределенного списка статических подстрок, а, наоборот, строят фразы динамически, в процессе кодирования. Наконец, метод полуадаптивного кодирования  основан на применении обоих принципов кодирования. Кодировщик  работает в два прохода. При первом он просматривает все данные и строит свой словарь, при втором - выпол­няет кодирование. Этот метод позволяет постро­ить оптимальный словарь прежде, чем приступить к кодированию.

Рассмотрим подробнее некоторые типовые алгоритмы сжатия изображений без потерь информации. Существует два основных подхода; либо оптимизируется кодирование минимального элемента информации - байта, либо удаляется избыточная информация. Представителем первого подхода является метод Хаффмана, второго - метод LZW, разработанный Лемпелем и Зивом и дополненным Велчем, а также групповое кодирование.

В методе Хаффмана сжатие проводится в два этапа. Сначала считываются данные, и определяется частота встречаемости отдел­­­ьных байтов данных. Затем байты кодируются, причем, наиболее часто встречающиеся значения кодируются меньшим количеством символов. (Например, самое часто встре­чающееся значение яркости -183 кодируется одним битом, что в 8 раз меньше, чем при использовании стандартной кодовой таблицы). По мере снижения частоты появления значений используются все более длинные слова для их кодирования. В сжатый файл записывается поток битов и информация о том, как этот поток интерпретировать. Этот метод используется, например, при факсимильной передаче. Кодирование по Хаффману неэффективно, если значения данных распределены статистически равномерно.

Групповое кодирование (RLE) - представляет собой алгоритм сжатия данных, поддерживаемый большинством растровых файловых форматов, включая такие популярные как TIFF, BMP и PCX. В СТЗ данный алгоритм имеет также и другое название КДС - кодирование методом длин серий. Алгоритм RLE позволяет сжи­мать данные любых типов, невзирая на содержащуюся в них информацию. Групповое кодирование уменьшает физический размер повторяющихся строк символов. Такие повторяющиеся строки, называемые группами, обычно кодируются в двух байтах. Первый байт определяет количество символов в группе и называется счетчиком группы. На практике закодированная группа может содержать от 1 до 128 или 256 символов. Второй байт содержит значение символа в группе, которое находится в диапазоне от 0 до 255 и называется  зна­чением группы. Например, несжатая символьная группа из 15 символов А обычно занимает 15 байтов:

Соседние файлы в папке Учебник - информационные системы