Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
02.05.2014
Размер:
359.94 Кб
Скачать

Одномерное кодирование Group 3 (g31d)

Одномерное кодирование Group 3 является вариацией схемы сжатия Хаффмена. Двухуровневое изображение представляется в виде серий черно-белых однобитовых пиксельных групп переменной длины (1 = черный, 0 = белый). Кодировщик Group 3 определяет длину пиксельной группы в строке развертки и выводит двоичное кодовое слово переменной длины, представляющее.длину и цвет группы. Поскольку выводимое кодовое слово короче, чем исходные данные, происходит сжатие.

Кодовые слова берутся из предопределенной таблицы значений, представляющих группы белых или черных пикселей. Эта таблица является частью спецификации Т.4 и применяется для кодирования и декодирования данных по схеме Group 3.

Размер кодовых слов определяется CCITT очень оригинально — на основе статистической усредненной частоты черно-белых групп, появляющихся в типичных печатных и рукописных документах. Эти документы могут включать и штриховую графику и быть написанными на различных языках. Длине групп, встречающихся более часто, присваивается меньшее кодовое слово, чем длине групп, которые появляются менее часто.

В печатных и рукописных документах короткие группы встречаются чаще, чем длинные, причем наиболее часто — черные 2- и 4-пиксельные. Максимальный размер длины группы ограничен максимальной шириной строки развертки в Group 3.

Длина группы представляется двумя типами кодовых слов: образующими и терминальными. Закодированная пиксельная группа строится из терминального кодового слова и образующих кодовых слов (которых может и не быть). Терминальные кодовые слова представляют собой короткие группы, а образующие — более длинные. Для белых и черных групп существуют отдельные терминальные и образующие кодовые слова.

Группы длиной от 0 до 63 пикселей кодируются одним терминальным кодом, длиной от 64 до 2623 пикселей — одним образующим и одним терминальным. Группа, длина которой составляет более 2623 пикселей, кодируется одним или несколькими образующими и одним терминальным кодами. Длина всей группы — это сумма значений длины всех входящих в нее кодовых слов.

• Группа из 20 черных пикселей будет представлена терминальным кодом длины черной группы 20. Это уменьшит 20-битовую группу до 11-битового кодового слова. Степень сжатия составит примерно 2:1.

• Белая группа из 100 пикселей будет закодирована образующим кодом для длины белой группы в 64 пикселя, за которым следует терминальный код для длины белой группы в 36 пикселей (64 + 36 = 100). Такое кодирование уменьшит количество битов со 100 до 13; степень сжатия при этом составит более чем 7:1.

• Группа из 8800 черных пикселей будет закодирована тремя образующими кодами 2560 черных пикселей (7680 пикселей) и одним образующим кодом 1088 черных пикселей, за которым следует терминальный код 32 черных пикселей (2560 + 2560 + 2560 + 1088 + 32 = 8800). В этом случае 8800 битов будут закодированы пятью кодовыми словами общей длиной в 61 бит и будет достигнута степень сжатия, примерно равная 144:1.

Применение нескольких образующих кодов при кодировании длины групп фактически является расширением Group 3 и предназначено для обработки изображений с высоким разрешением. И хотя большинство декодеров Group 3 поддерживают это расширение, не следует ожидать, что так будет во всех случаях.

Стандарт Group 3 для декодирования данных требует применения методов, отличных от большинства других схем сжатия. Поскольку каждое кодовое слово имеет собственную длину, поток закодированных данных должен читаться побитово до тех пор, пока не будет опознано кодовое слово. Это медленный и кропотливый процесс. Чтобы облегчить эту работу, для побайтовой обработки закодированных данных следует применять таблицу состояний. Это один из самых быстрых и эффективных способов реализации декодера CCITT.

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

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

В потоке данных, закодированных с использованием Group 3, определены также некоторые специальные кодовые слова. Эти коды применяются для синхронизации, поскольку при передаче по телефонным каналам нужно учитывать помехи. Посредством идентификации этих специальных кодов декодер CCITT может выявить ошибки передачи и попытаться применить алгоритм восстановления потерянных данных.

Код конца строки (EOL) представляет собой 12-битовое кодовое слово (рис. 9.8), которое в Group 3 передается в начале каждой строки. Оно применяется для обозначения начала/конца строки развертки при передаче изображения. Если помехи временно разрушают сигнал, декодер Group 3 отбрасывает нераспознанные данные, полученные до того, как встретился код EOL. Затем декодер начинает принимать поступающие данные, предполагая, что полученный EOL указывает начало следующей строки развертки. Декодер также может заменить испорченную строку неким предопре­деленным набором данных, например белой строкой развертки.

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

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

Когда в данные Group 3 инкапсулируется файл изображения, информация, определяющая длину и ширину данного изображения и обычно записываемая в заголовке файла, читается декодером перед декодированием изображения.

Передачи сообщений Group 3 прерываются кодом "Возврат к управлению" (RTC), который появляется в конце каждого потока данных Group 3 и применяется для задания конца передачи сообщения (рис. 9.9). Кодовое слово RTC — это шесть кодов EOL, передаваемых один за другим. В действительности RTC является частью протокола, используемого для организации факсимильной связи, а не частью закодированных данных сообщения. Он исполь­зуется как сигнал приемнику переключиться с высокоскоростной несущей для сообщений, на низкоскоростную несущую для послестраничных команд.

Код "заполнитель" (FILL) фактически является не кодовым словом, а группой из одного или нескольких нулевых битов, которая появляется между закодированными данными строки развертки и кодом EOL (но никогда в самой закодированной строке развертки). Биты-заполнители используются для набивки длины закодированной строки развертки до требуемой или для набивки кодового слова RTC до границ байта.

Соседние файлы в папке Лекции по компьютерной графике