Различие между этими способами кодирования заключается в формировании пакетов, соответствующих группам символов.
Большинство форматов графических файлов в зависимости от уровня обрабатываемых данных выделяют 3 класса RLE схем.
RLE-схемы битового уровня
Кодируют в группы биты строк развертки, игнорируя при этом границы байтов и слов. Используются только для обработки монохромных, т.е. однобитовых изображений, содержащих достаточное количество битовых групп.
RLE схемы битового уровня кодируют в группу от 1 до 128 битов, создавая из них однобайтовые пакеты. 7 младших битов этого байта – это счетчик группы, старший бит содержит значение группы.
7 – ой бит – (0/1), значение группы
6-0 – ой биты – счетчик группы (0-127)
Зн-е
Счетчик
99(в двоичном коде)
100 пикселей черного цвета
127(в двоичном коде)
71(в двоичном коде)
200 черных пикселей
RLE-схемы байтового уровня
Кодируют в группы одинаковые байтовые значения, игнорируя отдельные биты и слова.
Используются для изображений, в которых каждый пиксель содержит 8 бит информации.
RLE кодирует группы байтов в 2-х байтовые пакеты
1-ый байт – счетчик группы(0-255)
2-ой байт – значение группы (0-255)
99(в двоичном коде)
0(в двоичном коде)
100 черных пикселей
(возможно 256 цветов)
255(в двоичном коде)
0(в двоичном коде)
43(в двоичном коде)
0(в двоичном коде)
300 черных пикселей
Существует схема 2-х байтового кодирования, позволяющая хранить в потоке закодированных данных – литералы – незакодированные группы байтов.
В такой схеме 7 младших битов 1-го байта пакета содержат счетчик группы, а старший бит 1-го байта – тип группы:
1 – закодированная группа
0 – литеральная группа, т. е следующие байты должны читаться напрямую из закодированных данных изображения в количестве, указанном счетчиком группы +1.
1-ый байт 1-127 – счетчик
2-ой байт 0-255 – значение группы
счетчик группы
значение группы
99(в двоичном коде)
0(в двоичном коде)
закодированная группа
счетчик значений
зн1
зн2
зн3
…
7 0
7 0
7 0
7 0
литеральная группа
Эффективно для изображений, содержащих 1 байт информации на пиксель.
RLE-схемы пиксельного уровня
Применяется, когда для хранения одного пиксельного значения используется два или более смежных байтов изображения.
На пиксельном уровне биты игнорируются, а байты принимаются во внимание только для идентификации цветового канала. Размер закодированного пакета зависит от размера пиксельных значений , подлежащих кодированию.
счетчик
значение
7 0
7 0
7 0
7 0
RGB – 100 синих пикселей
1-ый байт – счетчик (0-255)
2-ой байт – пиксель 1-го канала (0-255)
3-ий байт – пиксель 2-го канала (0-255)
4-ый байт – пиксель 3-го канала (0-255)
Сведения о количестве битов или байтов в пикселе записаны в заголовке файла изображения, там же сведения о схеме кодирования.
В RLE схемах пиксельного уровня счетчик содержит сведения о количестве пикселей, а не о количестве байтов.
Существуют литеральные группы пиксельного уровня.
Самый старший бит 1-го байта группы содержит указатель на то, является ли группа литеральной. 7 младших битов этого байта содержат счетчик группы. Остальные 3 байта информации содержат значения группы.
Если старший бит установлен в 1, то это закодированная группа. Закодированные группы декодируются посредством чтения значения группы и повторения его столько раз, сколько указано в счетчике +1.
Если самый старший бит установлен в 0, то он указывает на литеральную группу, т.е. следующие байты в количестве, указанном в счетчике группы +1, должны читаться напрямую из закодированных данных. В литеральных группах максимальное значение счетчика 128 байт.
Применение литеральных RLE групп при обработке потока данных, содержащих много одно- и 2-хпиксельных групп более эффективно, чем кодирование этих групп, т.к. позволяет избежать отрицательного сжатия, т.е. увеличения объема данных в процессе сжатия.