Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Коды Грея.






Код Грея — система счисления, в которой два соседних значения различаются только в одном разряде. Наиболее часто на практике применяется рефлексивный двоичный код Грея, хотя в общем случае существует бесконечное множество кодов Грея для систем счисления с любым основанием. В большинстве случаев, под термином «код Грея» понимают именно рефлексивный бинарный код Грея.

Методы сжатия изображений, разработанные для конкретных типов графических образов, иногда могут успешно применяться для компрессии других типов. Например, любой метод сжатия двухуровневых изображений годится для полутоновых образов, если предварительно расслоить полутоновой образ на несколько двухуровневых и каждый слой сжимать независимо. Представим себе изображение с 16 градациями серого цвета. Каждый пиксел определяется 4 битами, поэтому изображения разделяется на 4 двухуровневых. Однако при таком подходе может нарушиться основной принцип сжатия изображений. Вообразим себе два прилегающих 4-битных пиксела со значениями и . Эти пикселы имеют близкие значения, но при их разделении на 4 слоя, они будут различаться во всех 4 слоях! Происходит это из-за того, что в двоичном представлении числа 7 и 8 различаются во всех четырех разрядах. Для того, чтобы успешно применить здесь метод сжатия двухуровневых изображений необходимо, чтобы в двоичном представлении два последовательных числа имели двоичные коды, различающиеся только на один бит. Такое представление чисел существует и оно называется рефлексными кодами Грея (RGC, reflected Gray code). Их легко построить, следуя предлагаемому рекурсивному правилу.

Начнем с двух однобитных кодов (0, 1). Построим два семейства двухбитных кодов, повторив (0, 1), а потом добавив слева (или справа), сначала 0, а потом 1 к исходным семействам. В результате получим (00, 01) и (10, 11). Теперь следует переставить (отразить) коды второго семейства в обратном порядке и приписать к первому семейству. Тогда получатся 4 двухбитных кода RGC (00, 01, 11, 10), с помощью которых можно кодировать целые числа от 0 до 3, причем последовательные числа будут различаться ровно в одном двоичном разряде. Применяем эту процедуру еще раз и получаем два семейства кодов длины 3: (000, 001, 011, 010) и (110, 111, 101, 100). Объединяем их и получаем 3-битные коды RGC. Проделаем первые три шага для образования 4-битных кодов Грея:

добавить 0: (0000, 0001, 0011, 0010, 0110, 0111, 0101, 0100),

добавить 1: (1000, 1001, 1011, 1010, 1110, 1111, 1101, 1100),

отразить: (1100, 1101, 1111, 1110, 1010, 1011, 1001, 1000).

Коды RGC можно построить для целого , и не прибегая к рекурсивной процедуре. Достаточно применить функцию «ИСКЛЮЧАЮЩЕЕ ИЛИ» к числу и к его логическому сдвигу на один разряд вправо. На языке С это запишется следующими операторами:

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

На рисунке показаны 4 побитных картинок «попугаев», в обычном двоичном представлении (слева) и в виде кодов Грея (справа).

К цветным изображениям также можно применять методы компрессии, разработанные для других типов изображений. Любой метод сжатия полутоновых образов позволяет сжимать цветные изображения. В цветном изображении каждый пиксел состоит из трех цветных компонент (например, RGB). Представим себе цветное изображение, в котором все компоненты состоят из одного байта. Пиксел описывается тремя байтами или 24 битами, но эти биты нельзя рассматривать как одно число. Три пиксела 118|206|12 и 117|206|12 различаются только на единицу в первом компоненте, поэтому они имеют близкие цвета. Если же их рассматривать в виде 24-битных чисел, то они будут сильно различаться, поскольку они разнятся в старшем бите. Любой метод компрессии, который будет основываться на таком различении пикселов, будет сильно неоптимальным. В этом смысле более подходящим является метод разделения изображения на цветные компоненты с их последующим независимым сжатием методом полутоновой компрессии.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.