RLE (Часть 1).pptx
- Количество слайдов: 12
RLE (Run Length Encoding) Часть 1 Паначёв Максим Александрович / ассистент кафедры вычислительной математики ИМКН / Солодушкин Святослав Игоревич / к. ф. -м. н. , доцент кафедры вычислительной математики ИМКН) /
Кодирование и шифрование • Кодирование и шифрование информации – близкие по смыслу термины, однако: q Кодирование – способ представления информации в какомлибо «удобном» виде; q Шифрование – способ защиты/сокрытия информации. • Закодированный текст может понять каждый, кто знает способ кодирования. • Смысл зашифрованного текста должен быть ясен только определённым лицам. • От остальных смысл зашифрованного текста должен быть скрыт и способ его расшифровки без знания секретного кода должен быть как можно более длительным и трудоёмким.
Кодирование и шифрование • В зависимости от выбранного способа кодирование может как увеличить объём передаваемой информации, так и уменьшить его (а также оставить неизменным). • Шифрование – в самом лучшем случае оставляет объём таким же, а как правило – увеличивает объём передаваемого сообщения.
RLE (Run Length Encoding) • RLE – один и самых популярных и простых вариантов кодирования информации. • Как правило его применяют для кодирования/сжатия изображений (BMP). • Основная идея алгоритма – замена серии повторяющихся «символов» на её код. • Например, AAAAA 5 A. • В рисунках очень часто можно найти области/пятна одного (примерно одного) цвета.
RLE (Run Length Encoding) • Идею данного алгоритма рассмотрим на примере текста. • Для удобства будем считать, что каждый символ текста занимает 1 байт.
ESCAPE-кодирование • Кодирование с помощью специального ESCAPE-символа. • В качестве ESCAPE-символа обычно выбирают такой символ, который не встречается в наших данных. • Если такого символа не существует - то, вообще говоря, любой другой, вероятность встречи которого, в кодируемом сообщении достаточно мала.
ESCAPE-кодирование • Для примера в качестве ESCAPE-символа возьмём знак «#» . • Записью «(n)» будем обозначать символ с кодом n. • Под понятием «подстановка» будем иметь ввиду замену одной серии символов на другую.
ESCAPE-кодирование: правила подстановки • Правило #1: k подряд идущих одинаковых базовых символов при k > 3 будем заменять на тройку: ESCAPE-символ, символ с кодом k - 3, базовый символ. • Пример: AA…. A #(k-3)A.
ESCAPE-кодирование: правила подстановки • Правило #2: ESCAPE-символ кодируется всегда: # #(1)# ## #(2)# ### #(3)# ##. . . # #(k)#
ESCAPE-кодирование: правила подстановки • Правило #3: Менее четырех подряд идущих символов (за исключением ESCAPEсимвола) оставляем без изменения. • Пример: AAAAABCDCDBBBB #(2)ABCDCD#(1)B.
ESCAPE-кодирование: правила подстановки • Очевидно, что если значение счетчика подряд идущих символов будет достаточно большим, то он в байт не поместится. • Следовательно, длинные последовательности одинаковых символов необходимо разбивать на несколько цепочек. • Например, 500 символов «A» можно закодировать следующим образом: A…A #(255)A#(239)A Процесс декодирования достаточно очевиден и предполагает использование тех же правил, только в обратном порядке.
Контрольные вопросы 1. 2. 3. Могут ли алгоритмы шифрования использоваться для сжатия данных? – Да – Нет Как будет выглядеть ESCAPE-код для 758 подряд идущих букв «B» ? – #(758)B – #(255)B#(242)B – (255)B(242)B Как будет выглядеть ESCAPE-код для следующей строки: ABBBB#A#B? – – A#(1)B#A#B A#(4)B#(1)#A#(1)#B A#(1)B#(1)#A#(1)#B A#(4)B#A#B