Алгоритм RLE: описание, особенности, правила и примеры
Опубликованно 12.01.2018 00:09
Алгоритм RLE-алгоритм сжатия данных, поддерживает большинство форматов файлов растровых изображений TIFF, BMP и PCX. RLE для сжатия любого типа данных, независимо от ее содержания, но содержание данных влияет на степень сжатия. Несмотря на то, что большинство алгоритмов RLE не могут обеспечить высокие коэффициенты сжатия более сложных методов, инструмент легко понять и быстро выполнить, что делает его хорошей альтернативой.На чем основан алгоритм сжатия RLE?
RLE работает путем уменьшения физического размера периодического, строка символов. Эта линия, которая называется run, как правило, кодируется в двух байтах. Первый байт представляет количество символов в гонке и называется счетчик балки. На практике, закодированный цикл может содержать от 1 до 128 и 256 символов. Счетчик, как правило, содержит определенное количество символов меньше (значение в диапазоне значений от 0 до 127 и 255). Второй байт-это значение символа в цикле, который содержится в диапазоне значений от 0 до 255 и называется значение запуска.
Без сжатия характер пробег 15 символов, как правило, требует 15 байт для хранения данных:
AAAAAAAAAAAAAAA.
В той же строке, после RLE кодирования, это займет всего два байта: 15А.
Кодирование 15А, созданный для обозначения строку символов, которая называется RLE-pack. В этом коде первый байт, 15, число цикла и число повторений. Второй байт, Имеет, значение run и содержит фактическое значение в гонке.
Новый пакет генерируется каждый раз, когда кнопка "пуск" изменяется, или каждый раз, когда количество символов в гонке превышает. Предположим, что 15-это строка символов, в соответствии с условиями содержит 4 символа:
AAAAAAbbbXXXXXt
Использованием кодирования с длиной строки, она может быть сжата в четыре двухбайтовых символов пакета:
6A3b5X1t
После кодирования длины цепи для 15-байтовой строки понадобится всего восемь байт данных для представления строки, в отличие от источника 15 байт. В этом случае, кодирование при запуске давал коэффициент сжатия около 2: 1.Характеристики
Длительные перебои редки в некоторых типов данных. Например, ASCII-текст, редко содержит длинные циклы. В предыдущем примере, последняя гонка (содержащий символ t) был только символом длину. 1-символы цикл работает до сих пор. И стартовую учетную запись, и значение запуска должны быть сохранены для каждой гонки 2 символов. Для кодирования гонки с помощью алгоритма RLE нуждается в информации, в том числе не менее двух символов. И что запуск уникальные символы, на самом деле занимает больше места. По тем же причинам, данные, состоящие полностью из 2 символов проходы остаются неизменными после кодирования RLE.
Схема алгоритм сжатия RLE отличаются простотой и высокой скоростью выполнения, но их эффективность зависит от типа кодирования данных изображения. Черно-белые изображения, которые в основном белые, например страницы книги, будет очень хорошо быть закодированы из-за большого количества смежных данных, имеющие тот же цвет. Тем не менее, изображения с большим количеством цветов, например, фото не будет кодироваться, а также. Это обусловлено тем, что сложность изображения выражается в виде большого количества различных цветов. И из-за этого сложность будет относительно немного точек одного цвета. Варианты кодирования в длину
Существует несколько вариантов кодирования во время выполнения. Данные изображения, как правило, закодированные в последовательный процесс, который управляет визуальным контентом, что 1D-поток, а не как карты в 2D-данных. При последовательной обработке изображений растровое изображение кодируется, начиная с верхнего левого угла и движется слева направо по каждой линии сканирования в нижнем правом углу рисунка. Но альтернативные схемы, РОЛЬ могут также быть сохранены для кодирования данных на длину растрового изображения вдоль столбцов для сжатия 2D плитки или же для кодирования пикселей на диагонали зигзаг способом. Odd варианты РОЛИ могут быть использованы в специализированных приложений, но, как правило, довольно редки.Алгоритм кодирования ошибка длины гонки
Другие редко встречается вариант-это алгоритм кодирования RLE с ошибкой ход. Эти инструменты, как правило, выполнять сжатие без потери качества, но отказ данных в процессе кодирования, как правило, путем обнуления одного или двух молодых значащих бит в каждом пикселе, может увеличить степень сжатия, не влияя отрицательно на качество изображения сложных. Эта программа алгоритма RLE хорошо работает только с изображениями реального мира, которые содержат много вариации значений пикселей.Мульти-кодирования
Мульти-кодирования — это слияние линий развертки, которая возникает, когда процесс сжатия теряет различие между основными линиями. Если строки в сочетании с алгоритмом кодирования повторов RLE, точки, где линии развертки остановлена, а другой теряется, становится уязвимой и трудно обнаружить.
Иногда происходит перекрестное кодирование, что затрудняет процесс декодирования, добавляя ценность времени. Для форматов растровых графических файлов этот способ предназначен для организации изображения на линии развертки. Хотя многие технические характеристики формат файлов четко указывают на то, что линии должны быть индивидуально закодированы, много приложений кодирует эти образы, как поток, не обращая внимания на границы линий.Как с помощью алгоритма RLE кодирования изображения?
Индивидуальное кодирование линий развертки имеет преимущества в тех случаях, когда приложение должно использовать только часть изображения. Предположим, что фото отображает 512 строк развертки, которые вы хотите отобразить только строки от 100 до 110. Если мы не знали, где линии развертки начинаются и заканчиваются кодирования данных изображения, наше приложение пришлось декодировать линий от 1 до 100, прежде чем найти десять строк, которые необходимы. Если переходы между строками сканирования были отмечены некоторые легко узнаваемые, маркер различие, приложение может просто считывать данные, закодированные, по числу маркеров, пока не достигнет линии. Но этот подход не будет достаточно неэффективным.Вариант
Другой вариант, чтобы установить точку начала линии развертки в блоке данных, закодированных строительство таблица строк развертки. Эта структура трубчатая, как правило, содержит один элемент для каждой строки сканирования изображения, и каждый элемент содержит значение смещения, соответствующей линии сканирования. Чтобы найти первая РОЛЬ-пакет из 10 строк сканирования, все, что вам нужно сделать, декодер, это найти значения смещение, хранящееся в десятый элемент таблицы поиск строки сканирования. Таблица строк развертки может также содержать число байтов, используемых для кодирования каждой строки. Используя этот метод, чтобы найти первую РОЛЬ-пакет линия развертки 10, декодер будет сочетать в себе значения первых 9 элементов таблицы строк развертки. Первая партия линии 10 сканирование будет начинаться с этого смещения в байтах от начала данных изображения кодирования RLE.Единицы измерения
Некоторые алгоритмы кодирования длины, которая изменяется, - это решения, которые принимаются на основе типа данных, которые декодируются (например, длины балки). Схема RLE, используемые для сжатия растровой графики, обычно подразделяются на классы в зависимости от типа оружия (это самые основные) элементы, которые они кодируют. Три класса, которые используются большинством форматов графических файлов, бит, байт и пиксель РОЛЬ.Качество сжатия
Бит-уровни RLE-схемы кодирования циклов несколько битов в строке сканирования и игнорировать границы байтов и слов. Только монохромных (черно-белых), 1-битные изображения содержат определенное количество бит, чтобы сделать этот класс RLE-кодирование эффективным. Типичная схема RLE бит кодирует в 128 бит мы пьем пакет. Семь молодых значащих бита содержат счетчик загрузки меньше, и бит содержит двоичное значение, балки равна 0 или 1. Цикл длиной более 128 пикселей, делится на несколько RLE-кодированных пакетов.Исключения
Схема RLE на уровне байтов, кодирующих циклов одинаковых значений байтов, игнорируя некоторые биты и границы слов в строке сканирования. Наиболее распространенная схема RLE на уровне байт кодирует циклов байт 2 байт пакетов. Первый байт содержит счетчик от 0 до 255, а вторая содержит значение в байтах загрузки. Распространен более двухбайтовые символы, схемы кодирования с емкостью для хранения литералов, не устанавливается циклов байт в поток закодированных данных.
В такой схеме, семь молодых значащих бит в первом байте содержат счетчик цикла меньше, но старший бит в первом байте-индикатор тип запуска, который следует младший байт счетчика цикла. Если бит установлен в 1, это указывает, закодированы гонки. Закодированный балки, раскодируются чтение значения пробега, и повторить столько раз, сколько указано циклов. Если бит установлен в 0, отображается буквальном цикла, что означает, что байты подсчета в следующем цикле считываются буквально кодирования данных изображения. Затем счетчик байт выполнения содержит значение в диапазоне от 0 до 127 (счетчик загрузки меньше). Схема RLE на уровне байтов хороши для данных изображения, которые сохраняются как один байт на пиксель.
Схема RLE на уровне пикселов, которые используются, когда два или более последовательных байта данных изображения, которые используются для хранения значений пиксела. На уровне пикселей биты игнорируются, и байты считаются, что для идентификации каждого значения пикселя. Размер пакетов кодированных зависит от размера кодирование значений пикселей. Количество бит или байт на пиксел записывается в заголовок файла изображения. Запуск данных изображения, сохраненных в виде 3-байтовые значения пикселей, закодированный на 4-байтовый пакет, с одного байта, подсчет количества операций, за которыми следуют три байта байт. Метод кодирования остается такой же, как с байт РОЛЬ.
Категория: обо всём