Алгоритм сжатия, поддерживающий большое число растровых форматов (tif, wmp и т.д.)
Позволяет сжимать данные любых типов не взирая на содержащуюся в них инфо. Сама инфо влияет на полноту сжатия. RLE не достигает большой степени сжатия, но выполняется легко и быстро.
Суть метода: RLE уменьшает физический размер повторяющихся строк символов. Повторяющиеся строки – группы, и обычно кодируются в 2-х байтах.
1 байт: количество символов в группе – счетчик группы. Закодируемая группа содержит 1-128(256)символов, что записывается в счетчик группы как количество символов – 1.
2 байт: содержит значение символов группы, значение группы.
Если программа считает подряд несколько пикселей с одинаковыми значениями она не записывает значение пикселя еще раз, а запоминает сколько пикселей с этими значениями следуют др. за другом.
Этот код сгенерированный для представления строки – RLE пакет.
Он создается всякий раз когда изменяется группа или когда количество символов в группе больше максимального значения счетчика. Простой растровый рисунок с помощью RLE – пакета сжат следующим образом.
(3-1).255, (4-1).0, (3-1).255, (6-1).0
Для кодирования в RLE требуется минимум 2 байта.
Эффективность сжатия зависит от типа данных изо-я. Для сложного изо-я с большим количеством цветов групповое кодирование практически не используется.
Групповое кодирование не является форматом файла. Это метод кодирования который может быть включен в некоторые графические форматы (gif, tif, jpeg)
Данные изображения кодируются последовательно. Растр кодируется, начиная с верхнего левого угла по оси Х слева на право конец нижнему правому углу.
Альтернативные схемы позволяют записывать закодированные данные по высоте растра по оси У. Иначе кодировать растр зигзагами.
иногда встречаются варианты кодирования с потерями. Отбрасывают данные вывод процессе кодирования младший бит вывод пикселе. Это повышает степень сжатия изображения, но использовать можно лишь для многоцветных изображений.
RLE кодировщик должен остановиться вывод конце любой строки развертки растровых данных, таким образом решена проблема перекрестного кодирования.
Перекрестное кодирование слияние строк развертки происходящее из-за того, что вывод процессе кодирования различия между нами исчезают. При
выигрыше вывод несколько байтов процессы сжатия без «конца строки» усложняется вывод процессе декодирования информации. Программа должна понимать закодированные данные маркера конца строки развертки. Этот маркер – уникальный пакет, определенный вывод спецификации RLE. Маркер конца строки – 1 байт.
Ещё одно преимущество построчного кодирования - программа легко воспроизводит любую часть изображения .
Другим способом определения в блоке закодированных данных начальных точек любой строки развертки является создание таблиц строк разверток TCR, содержащих по 1 элементу для любой строки, в этот элемент записана информация о смещении начала любой строки развертки в файле.
Любой алгоритм группы кодирования отличаются друг от друга длиной групп данных. RLE схема для кодирования растровых изображений и использования в большинстве форматов.
1. битовый уровень
кодирует в группы биты строк развертки, игнорируя при этом границы байтов и слов. Используется для обработки монохромных однобитовых изображений .
RLE кодирует в группу от 1 до 128 битов, создавая из них 1 байтовые пакеты.
7 младших битов содержат счетчик группы, старший бит содержит значение группы.
8 –ой бит – (0\1), значение группы
1-7 – ой биты – счетчик группы (0-127)
2. байтовый уровень
Кодирует одинаковые байтовые значения, игнорируя отдельные биты. RLE кодируется в 2-х байтовый пакет
1-ый байт – счетчик группы(0-255)
2-ой байт – значение группы (0-255)
Используемая схема 2х байтового кодирования, позволяет хранить в потоке данных как закодированные, так и не закодированные группы.
Незакодированные группы – литералы. В этом случае 1-7 бит 1- го байта пакета содержит счетчик группы, а самый старший бит 1-го байта – тип группы:
1- закодированная группа
0 – литеральная группа, т. е следующие байты должны читаться на прямую из закодированных данных изображения в количестве, указанном счетчиком группы +1.
1 – ый байт 1-127 - счетчик
0-255 – значение группы
0-127
0-255
0-127
1,2,3,4,…,255
закод.
литеральная
Эффективно для изображений ,хранящихся в виде 1 байта на пиксель.
3. пиксельного уровня
Используется для хранения 1 пиксельного значения , 2 или более смежных байтов изображения.
На пиксельном уровне биты игнорируются, а байты принимаются во внимание любого пиксельного значения. Размер закодированного пакета зависит от размера пиксельных значений , подлежащих кодированию.
Сведения о количестве битов или байтов пикселя записаны в заголовке файла изображения.
1-ый байт – счетчик(0-255)
N
red
green
blue
2-ой байт – пиксель1 го канала(0-255)
3-ий байт – пиксель 2го канала(0-255)
4-ый байт – пиксель 3 го канала(0-255)
Существуют литеральные группы пиксельного уровня для этого также как и в схемах байтового уровня используется старший бит 1 го байта.
В RLE схемах пиксельного уровня счетчик содержит данные о количестве пикселей .