Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория информации - курс лекций.doc
Скачиваний:
432
Добавлен:
13.03.2015
Размер:
4.65 Mб
Скачать

4. Блочное двоичное кодирование

Вернемся к проблеме оптимального кодирования.

Наилучший результат (наименьшая избыточность) был получен при кодировании по методу Хаффмана – для русского алфавита избыточность оказалась менее 1. При этом указывалось, что код Хаффмана улучшить невозможно. На первый взгляд это противоречит первой теореме Шеннона, утверждающей, что всегда можно предложить такой способ кодирования, при котором избыточность будет сколь угодно малой величиной. На самом деле это противоречие возникло из-за того, что до сих пор мы ограничивались алфавитным кодированием. При алфавитном кодировании передаваемое сообщение представляет собой последовательность кодов отдельных знаков первичного алфавита. Однако возможны варианты кодирования, при которых кодовая комбинация относится сразу к нескольким буквам первичного алфавита или даже к целому слову первичного языка, то есть кблоку. Кодирование блоков понижает избыточность кода. В этом легко убедиться на простом примере.

Пусть имеется словарь некоторого языка, содержащий слов (это, безусловно, более, чем солидный словарный запас!). Поставим в соответствие каждому слову равномерный двоичный код. Очевидно, длина кода может быть найдена из соотношения. Таким образом, для кодирования любого слова необходимо и достаточнодвоичных разрядов (14 бит). Следовательно, каждое слово кодируется комбинацией из 14 нулей и единиц – получатся своего рода двоичные иероглифы. Например, пусть слову «Информатика» соответствует код 10101011100110, слову «наука» соответствует код 00000000000001, а слову «интересная» – код 00100000000010. Тогда кодовая последовательность

101010111001100010000000001000000000000001

будет означать «Информатика интересная наука».

Легко оценить, что при средней длине русского слова буквы (5.3 буквы + пробел между словами) средняя информация на знак первичного алфавита оказывается равной, что более чем в 2 раза меньше, чем 5 бит при равномерном алфавитном кодировании. Для английского языка такой метод кодирования даетна знак. Таким образом, кодирование слов оказывается более выгодным, чем алфавитное (кодирование отдельных букв).

Можно кодировать сочетания букв – блоки букв. В принципе, такие блоки можно считать словами равной длины, не имеющими, однако, смыслового содержания. Удлиняя блоки, теоретически можно добиться того, что средняя информация на знак кода будет сколь угодно приближаться к минимальному значению , а избыточность будет стремиться к нулю.

5. Кодирование графических данных

Если рассмотреть с помощью увеличительного стекла черно-белое графическое изображение, напечатанное в газете или книге, то можно увидеть, что оно состоит из мельчайших точек, образующих характерный узор, называемый растром.

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

Общепринятым на сегодняшний день считается представление черно-белых иллюстраций в виде комбинации точек с 256 градациями серого цвета, и, таким образом, для кодирования яркости любой точки обычно достаточно восьмиразрядного двоичного числа ().

Для кодирования цветных графических изображений применяется принцип декомпозиции произвольного цвета на основные составляющие. В качестве таких составляющих используют три основных цвета: красный (Red, R), зеленый (Green, G) и синий (Blue, B).

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

Для кодирования яркости каждой из трех (R, G, B) основных составляющих цвета используют 256 значений (восемь двоичных разрядов, один байт), как это принято для полутоновых черно-белых изображений. Поэтому для кодирования цвета одной точки необходимо затратить разряда. То есть нужный цвет получается путем смешивания трех основных цветов, каждый из которых имеет свою яркость, выражающуюся одним из 256 значений. При этом система кодирования обеспечивает однозначное кодирование (определение)различных цветов, что на самом деле близко к чувствительности человеческого глаза. Режим представления цветной графики с использованием 24 двоичных разрядов называетсяполноцветным (True Color). Обозначают 24 bpp (bits per pixel – битов на пиксел, или, что тоже самое, на точку).

Если уменьшить количество двоичных разрядов, используемых для кодирования цвета каждой точки, то можно сократить объем данных, но при этом диапазон кодируемых цветов заметно сокращается. Кодирование цветной графики 16-разрядными двоичными числами (16 bpp) называется режимомHigh Color. При этом возможно однозначно закодироватьцветов.

При кодировании информации о цвете точки с помощью 8 бит данных можно передать только цветов.