Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программа / Лаб1 / Описание работы.doc
Скачиваний:
5
Добавлен:
29.08.2023
Размер:
489.47 Кб
Скачать

Оценка эффективности кодирования

Основная теорема о кодировании сообщений заданного алфавита гласит, что такие сообщения всегда можно закодировать префиксными последовательностями так, что среднее значение длины кодовой комбинации будет удовлетворять неравенству: . Таким образом, Н битов информации нельзя представить в виде набора нулей и единиц длиной менее Н знаков, но можно сколь угодно близко подойти к этой границе.

Для оценки эффективности неравномерных кодов используется коэффициент относительной эффективности , где это энтропия источника с алфавитом, имеющим объем N знаков, равная среднему количеству информации, приходящемуся на один знак на выходе источника и измеряющаяся в битах. Здесь - вероятность появления i-го символа из N различных символов алфавита источника, а средняя длина кодовой комбинации. Отношение среднего числа двоичных символов, приходящихся на один знак алфавита, при кодировании заданного источника неравномерным кодом к длине кодовой комбинации в случае кодирования источника равномерным кодом называется коэффициентом сжатия . Однако коды Хаффмана для своего декодирования используют некоторую служебную информацию, поэтому, рассчитывая коэффициент сжатия, необходимо учитывать это. Следующая формула иллюстрирует сказанное: , где - объем служебной информации; - объем полезной информации; V – объем исходных данных.

В качестве равномерного кода для цифрового представления текстовой информации используются коды ASCII. Таблицы кодов символов ASCII содержат десятичные и шестнадцатеричные представления расширенного ASCII (American Standards Committee for Information Interchange) набора символов. Расширенный набор ASCII символов включает в себя набор символов ASCII и 128 других символов, для представления графики и рисования линий, часто называемых набором символов IBM. Кроме того, существуют расширения кодов ASCII для представления символов национальных алфавитов, называемые кодовыми страницами или кодировками. Для русского языка существует две кодовые страницы с номерами 866 (DOS кодировка) и 1251 (Windows кодировка). Все названные таблицы приведены в приложении. Для представления каждого символа ASCII кодом необходимо 8 бит, т.е. длина кодовой комбинации в этом случае равна 8.

Для вычисления объема занимаемого служебной информацией при кодировании черно-белых изображений алгоритмом Хаффмана с использованием длин серий будем исходить из следующих соображений.

Кодирование изображения представленного совокупностью блоков размера w * h осуществляется сопоставлением каждому типу блока кодовой комбинации кода Хаффмана. Код Хаффмана построен для распределения вероятностей типов блоков встречающихся в кодируемом изображении. На рисунке 4 схематично показана структура файла для хранения изображения сжатого этим методом:

Рисунок 4 – Структура заголовка файла HFI

В верхней части рисунка указаны номера байтов начиная с 0. Для каждого байта номер поставлен в его начале и в конце. Первые 3 байта используются для кодирования формата файла (каждый байт содержит символ в ASCII коде), в данном случае это символы hfi. Следующие два поля содержат ширину и высоту кодируемого изображения, каждое поле занимает два байта, т.о. максимальная высота\ширина равняется пикселей. Затем два поля по одному байту для ширины и высоты блока (т.е. максимальное значение этих полей 255). Для декодирования изображения необходимо знать соответствие типа блока и кода Хаффмана, для этого предназначены поля список блоков и список счетчиков длин. Т.к. указанные поля имеют переменную величину, то необходимо сохранять размер для каждого из них – поля размер списка блоков и размер списка счетчиков длин соответственно. Кроме того, размер блоков в списке может быть не кратен восьми, поэтому может присутствовать дополнительное поле в конце списка блоков для выравнивания на границу байта. Максимальный размер этого поля семь бит. Полезная нагрузка также выравнивается на границу байта.

Итак, служебная информация будет рассчитываться по следующей формуле:

, байт.

Здесь - длина списка счетчиков, - мощность алфавита источника, скобки обозначают округление до целого в большую сторону после деления.

Объем полезной нагрузки буде вычисляться как:

, байт.

Здесь -средняя длина кодовой комбинации, а - суммарное количество появлений всех элементов алфавита источника на его выходе.