Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_2010.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
23.45 Mб
Скачать

Методы сжатия цифровых изображений

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

Сжатие без потерь основано на том, что всякие цифровые данные, рассмотренные как последовательность (поток) бит информационно избыточны. Это позволяет ставить вопрос о сжатии данных в классической постановке, подразумевая под «сжатием» передачу того же количества информации с помощью последовательностей бит меньшей длины. Для этого используются специальные алгоритмы сжатия, уменьшающие избыточность. Эффект сжатия оценивают коэффициентом сжатия

K=n/q,

где п — число минимально необходимых символов для передачи сообщения (практически это число символов на выходе эталонного алгоритма сжатия); q — число символов в исходном сообщении. При двоичном кодировании п равно энтропии источника информации.

Среди простых алгоритмов сжатия без потерь наиболее известными являются алгоритмы кодирования цепочек (Run Length Encoding, RLE). В них все последовательные цепочки одинаковых символов заменяются парами значений {повторяющийся символ, длина цепочки}. Трудно представить себе реальный текст, в котором буквы часто ппппппппповторялись бы подряд. Однако на цифровых изображениях вполне могут встречаться значительные области равной яркости. Поэтому данный метод достаточно эффективен при передаче растровых изображений (особенно созданных искусственно в графических редакторах), но малополезен при передаче текста. К методам сжатия без потерь относят также методы разностного кодирования, основанные на том, что разности амплитуд последовательных отсчетов, как правило, представляются меньшим числом разрядов, чем сами амплитуды.

Статистические методы сжатия можно проиллюстрировать на примере известного метода Хаффмана. Идея этого метода заключается в том, что часто повторяющиеся символы следует кодировать более короткими цепочками битов, чем символы, которые встречаются реже. Для этого строится двоичное дерево, листья которого соответствуют кодируемым символам, а код символа представляется последовательностью значений ребер, ведущих от корня к листу (все они принимают соответственно значения 0 или 1). При этом листья символов с высокой вероятностью появления располагаются ближе к корню, чем листья маловероятных символов. Очевидный недостаток данного метода заключается в необходимости заранее знать вероятности присутствия различных символов. Если они неизвестны априори, то для сжатия методом Хаффмана требуются два прохода по изображению: на первом проходе собирается гистограмма изображения (подсчитываются вероятности появления каждого возможного значения пикселов), на втором проходе производится собственно кодирование. Этот недостаток устраняется в однопроходных алгоритмах адаптивного сжатия, в которых для кодирования используется не гистограмма всего объема кодируемых данных, а только последних N просмотренных пикселов.

Обобщением этого метода является метод, основанный на словаре сжатия данных. В таких алгоритмах происходит выделение и запоминание в специальном словаре уже не отдельных символов, а повторяющихся цепочек символов, которые соответственно кодируются цепочками меньшей длины. В настоящее время наиболее распространенным алгоритмом сжатия без потерь является алгоритм LZW, предложенный Лемпелем, Зивом и Уэлчем (Lempel, Ziv, Welch). Идея этого метода заключается в следующем. Предположим, у нас имеется словарь, хранящий строки символов (значений яркости). Запишем в первые 256 ячеек простейшие «строки», состоящие из одного символа, номер которого равен номеру ячейки. Далее алгоритм просматривает входной поток байт, разбивая его на подстроки и добавляя новые ячейки в конец словаря. Пусть из входного потока прочитаны несколько последовательных символов, составляющих строку s. Найдем в текущем словаре строку t, являющуюся самым длинным «префиксом» строки s. Под «префиксом» здесь понимается строка, целиком совпадающая с первыми символами данной строки, если отсчитывать их «слева». Допустим, самый длинный префикс, включающий максимальное количество символов, совпадающих с первыми символами данной строки, найден в ячейке с номером n. В этом случае мы выводим число n в выходной поток, перемещаем указатель входного потока на длину строки t вперед и добавляем в словарь новую ячейку, содержащую строку «t+c», где с – символ анализируемой строки s, следующий сразу после префикса t. Таким образом, данный алгоритм преобразует поток символов на входе в поток индексов ячеек словаря на выходе. При размере словаря, например, в 4096 ячеек можно передавать 12 бит на каждый индекс. Каждая распознанная цепочка символов добавляет в словарь одну ячейку. Любая ячейка словаря, кроме самых первых, содержащих одиночные символы, хранит копию некоторой другой ячейки, к которой в конец приписан один символ. При переполнении словаря упаковщик может либо прекратить его заполнение, либо очистить словарь (полностью или частично). Данный алгоритм отличают высокая скорость работы – как при упаковке, так и при распаковке данных, умеренные требования к объему памяти и простая аппаратная и программная реализация. Он используется во многих форматах хранения цифровых изображений.

Сжатие с потерями основано на том, что перед кодированием данные предварительно подготавливаются (фильтруются) таким образом, что сжатие отфильтрованных данных описанными выше методами становится существенно более эффективным, нежели сжатие самих исходных данных. Идею такого преобразования легко понять на следующем примере. Пусть имеется некоторое полутоновое изображение «естественной» сцены, включающее большие области приблизительно однородной яркости. В таких областях различия значений интенсивности соседних пикселов различаются лишь на несколько градаций серого, что существенно меньше, чем перепады яркости на границах областей. Если мы попробуем непосредственно применить к таким изображениям, например, алгоритм RLE, то он будет совершенно неэффективен, так как средняя длина цепочек в точности одинаковых значений яркости вдоль строк изображения будет 1-2 пиксела, что не даст никакого выигрыша при кодировании таких данных «длинами цепочек». В то же время, с точки зрения особенностей зрительного восприятия человека, незначительными флуктуациями яркости вполне можно пренебречь. Допустим, мы сумели отфильтровать эти малые отклонения каким-либо алгоритмом помеховой фильтрации изображений (алгоритмы помеховой фильтрации будут рассмотрены в разделах 3.3, 3.4 данной книги). В результате такой обработки «гладкость» изображения в однородных областях существенно повысится, и как следствие, эффективность сжатия изображения даже таким простым алгоритмом как RLE сразу увеличится в несколько раз. В качестве примера современного алгоритма эффективного сжатия с потерями ниже будет рассмотрен алгоритм сжатия JPEG.

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

Теперь рассмотрим вкратце каждый из ранее упомянутых форматов цифровых изображений.