Некоторые особенности одномерного кодирования данных

Каждая строка пелов кодируется отдельно, заканчиваясь специальным 12-битным EOL-кодом 000000000001. К каждой строке также добавляется слева один белый пел. Это делается для того, чтобы избежать неопределенности в декодировании при получении конца. Прочитав код EOL для предыдущей строки, приемник знает, что новая строка начнется с одного белого пела и игнорирует первого из них.

Дело в том, что каждая отсканированная строка начинается белым пелом, и декодер знает, какого цвета будет следующая серия. Примером нарушения свойства префикса служит код для пяти черных пелов (ООН), которым начинаются коды белых серий длины 61, 62 и 63. Коды Group 3 не могут исправлять ошибки, но они могут обнаружить многие из них. Дело в том, что по природе кодов Хаффмана, даже один плохо переданный бит вынудит приемник потерять синхронизацию и породить последовательность неправильных пелов. Поэтому последовательные строки следует кодировать независимо друг от друга.
Если декодер обнаруживает ошибку, он пропускает биты, разыскивая EOL. При таком методе одиночная ошибка может испортить не более одной строки. Если декодер не может долгое время обнаружить EOL, он предполагает высокую зашумленность канала и прерывает процесс, сообщая об этом передатчику. Поскольку длины кодов лежат в диапазоне от 2 до 12, то приемник обнаруживает ошибку, если он не в состоянии выявить правильный код, прочитав 12 бит.

В начале каждой страницы передается код EOL, а в конце страницы ставится 6 кодов EOL. Поскольку все строки кодируются независимо, эта схема называется схемой одномерного кодирования. Коэффициент сжатия зависит от передаваемого изображения. Если оно состоит из крупных соприкасающихся белых и черных областей (текст, таблицы или графики), то он будет сильно сжат. А изображения, в которых присутствует много коротких серий могут вызвать отрицательное сжатие. Это может случиться при передаче полутоновых изображений, например, фотографий. Такие изображения при сканировании порождают множество коротких пелов длины 1 или 2.

Поскольку стандарт Т4 основан на длинных сериях, он может давать плохое сжатие, если все серии будут короткими. Экстремальный случай - это, когда все пелы имеют длину 1. Белый пел имеет код 000111, а черный - 010. Поэтому при кодировании двух последовательных разноцветных пелов требуется 9 бит, тогда как без кодирования можно обойтись двумя битами (01 или 10). Значит, коэффициент сжатия равен 9/2=4.5 (сжатый файл будет в 4.5 раза длиннее исходного).

Стандарт Т4 допускает добавление нулевых бит между кодом данных и кодом EOL. Это делается, если необходимо сделать паузу, например, в связи с тем, что число передаваемых битов кодирующих целую строку должно делиться на 8. Пример: Двоичная строка 000111|10|0111|11|1111|000000000001 становится немного длиннее 000111|10|0111|11|1111|00|000000000001 после добавления 2 нулей, чтобы общая длина строки была 32 бит (=8x4) . Декодер обнаружит это добавление перед одиннадцатью нулями кода EOL. 98% всей статистики выдумана — Неизвестный.

-----------------------------