Алгоритм RLE: описание, характеристики, правила и примеры


Опубликованно 18.01.2018 07:14

Алгоритм RLE: описание, характеристики, правила и примеры

Алгоритм RLE алгоритм сжатия данных, который поддерживается большинство форматов файлов растровых изображений: TIFF, BMP и PCX. RLE подходит для сжатия любого типа данных, независимо от ее содержания, но содержание данных влияет на степень сжатия. Несмотря на то, что большинство алгоритмов RLE не могут обеспечить высокие коэффициенты сжатия, более сложные методы, чем этот инструмент прост в реализации и быстрее в реализации, что делает его хорошей альтернативой.

На чем основан алгоритм сжатия RLE?

RLE работает, уменьшая физический размер повторяющейся строки символов. Эта линия, называемая run, как правило, кодируется в двух байтах. Первый байт представляет собой число символов в пробег и называется счетчик балки. На практике закодированный луч, который может содержать от 1 до 128 и 256 символов. Счетчик, как правило, содержит количество символов минус один (значение в диапазоне значений от 0 до 127 и 255). Второй байт-это значение символа, работает, который содержится в диапазоне значений от 0 до 255, а значения запуска.

Без сжатия шрифта пробег 15 символов, как правило, занимает 15 байт для хранения:

AAAAAAAAAAAAAAA.

В той же строке после RLE-кодирования нужно только два байта: 15.

Кодирование 15А, создан для того, чтобы указать строку символов, называется RLE-пакет. В этот код, первый байт, 15, счетчик балки и содержит необходимое количество повторений. Второй байт, В, это значение run и содержит повторяющееся значение в милях.

Новый пакет генерируется каждый раз, когда символ запуска меняется, или каждый раз, когда количество символов в гонке, превышает максимальное количество. Предположим, что 15-строка символов, в соответствии с условиями содержит 4 различных символа:

AAAAAAbbbXXXXXt

С помощью кодирования с длиной строки, может быть сжат в четыре двухбайтовых символов пакета:

6A3b5X1t

После кодирования по длине строки по 15 байт команды, нужно в общей сложности восемь байт данных для представления строки, в отличие от оригинала, в 15 байт. В этом случае кодирование во время выполнения он дал степень сжатия почти 2 к 1.Особенности

Вдоль балок редки в некоторых типов данных. Например, открытый текст ASCII редко содержит длинные балки. В предыдущем примере, последняя поездка (с символом t) - это только символ длины. 1-символы балки, что еще работает. И через запуск, и значение запуска должны быть записаны для каждой гонки 2 символов. Для кодирования пути с помощью алгоритма RLE требует информации, состоящий из не менее двух символов. Из-за выполнения отдельных символов, на самом деле занимает больше места. По тем же причинам, полностью состоит из 2 символов балки, остаются неизменными после кодирования RLE.

Схема алгоритма сжатия RLE, простота и скорость выполнения, но их эффективность зависит от типа данных, для кодирования изображения. Черно-белые изображения, которые в основном белый цвет, например, страницы книги, будет очень хорошо закодированы из-за большого количества непрерывных данных, имеющих тот же цвет. Тем не менее, изображение с множеством цветов, например, свою фотографию, не будет закодирован так же хорошо. Это связано с тем, что сложность изображения, выражается в виде большого количества разных цветов. И из-за этой сложности является относительно мало гонок того же цвета. Варианты кодирования по длине

Существует несколько вариантов кодирования во время выполнения. Данные изображения, как правило, кодируется в последовательном процессе, который управляет отображением содержания, как 1-поток, а не как 2D-данные карты. Во время обработки современного растровое изображение кодируется, начиная с левого верхнего угла и идет слева направо в каждой строке сканирования, в правом нижнем углу растрового изображения. Но альтернативные схемы RLE также могут быть записаны для кодирования данных, чтобы длина растрового изображения вдоль столбцов для сжатия в 2D плитки или даже для кодирования пиксела по диагонали zig-zag образом. Нечетные варианты RLE могут быть использованы в нишевых приложений, но, как правило, довольно редки.

Алгоритм кодирования с ошибкой длины пробега

Другой редкий вариант-это алгоритм кодирования RLE с ошибкой длина пути. Эти инструменты, как правило, выполнять сжатие без потери данных, но смещение информации в процессе кодирования, как правило, через обнуление одного или двух молодых людей, наименее значимый бит каждого пикселя, способен увеличить степень сжатия, не влияя отрицательно на качество изображения трудно. Эта программа-это алгоритм RLE хорошо работает только с изображениями реального мира, которые содержат много тонких изменений значений пикселей.Кросс-кодирования

Кросс-кодирование-это конкатенация строк сканирования, которая возникает, когда процесс сжатия теряет различие между исходными линиями. Если данные из отдельных линий в сочетании алгоритма кодирования повторов RLE, точка, в которой линия сканирование прекращается и другой, потерянной, уязвимой и сложной для обнаружения.

Иногда происходит перекрестное кодирование, что осложняет процесс декодирования, плюс стоимость времени. Для форматы файлов растровых изображений этот метод ставит целью организовать растровое изображение линий сканирования. Хотя многие спецификации формата файла ясно показывают, что линии передачи данных должны быть закодированы по отдельности, многие приложения шифруют эти образы, как непрерывный поток, не обращая внимания на границы строк.Как с помощью алгоритма RLE кодирования изображения?

Индивидуальный кодирование строк сканирования имеет преимущества в тех случаях, когда приложение должно использовать только часть изображения. Предположим, что фото содержит 512 линий сканирования и отображения только строк от 100 до 110. Если вы не знаете, где строки сканирования начинались и заканчивались закодированные данные изображения, на наше приложение, он должен декодировать строки от 1 до 100, прежде чем найти десять строк, сколько необходимо. Если переходы между линиями сканирования были отмечены, как что-то легко узнаваемым маркером разграничения, приложение может просто прочитать закодированные данные, которые подсчитывает голы, до тех пор, пока не достигает строк. Но этот подход был довольно неэффективным.Альтернатива

Другой вариант, чтобы определить начальную точку в определенной строке сканирования в блок закодированных данных, чтобы построить таблицу строки поиска. Эта таблица структура, как правило, содержит один элемент для каждой строки сканирования в изображение, и каждый элемент содержит значение смещения строки сканирования. Чтобы найти первый RLE-пакет 10 строк сканирования, все, что вам нужно сделать декодер, найти значение смещения, хранимое десятый элемент таблицы поиска строки сканирования. Таблицы, строки поиска, может также содержать число байтов, используемых для кодирования каждой строки. С помощью этого метода, с целью найти первую RLE-пакет строк сканирования 10, декодер будет объединять значения первых 9 элементов в таблице строки поиска. Первый пакет 10 строк сканирования начинается с это смещение в байтах от начала данных изображения с кодирования RLE.Единицы измерения

Алгоритмы кодирования длины, которые варьируются, - это решения, которые принимаются на основе типа данных, которые декодируются (например, длина балки данных). Схема RLE, используется для сжатия растровых изображений, как правило, делятся на классы в зависимости от типа атомных электростанций (т. е. основных) элементов, которые кодируют. Три класса, которые используются в большинстве графических форматов файлов, это бит, байт и пикселей RLE.Качество сжатия

Бит уровни RLE-схемы кодируют балки за несколько бит в строку сканирование и игнорируют границы байтов и слов. Только монохромные (черно-белый), 1-битные изображения содержат достаточное количество битов, чтобы сделать этот класс RLE-кодирование эффективно. Типичная схема RLE на уровне битов кодирования от одного до 128 бит в, где том пакете. Семь молодых значимые биты содержат счетчик запуска, минус один, и бит содержит значение двоичного балки, равное 0 или 1. Балки, длина которых превышает 128 пикселей разбивается на более RLE-кодирования пакетов.

Исключения

Схема RLE на уровне байтов, кодирующих балки одинаковых значений байтов, игнорируя некоторые части, и границы между словами в строке сканирования. Наиболее распространенная модель RLE на уровне байтов кодировки балки байт 2 байт пакетов. Первый байт содержит счетчик от 0 до 255, в то время как второй содержит значение байт работает. Также распространен более чем в два раза-байт-схема кодирования с возможностью хранения литералов, развязал балки байт в поток кодированных данных.

В этой схеме, семи молодых людей, значимых бит в первом байте содержит счетчик балки, минус один, наиболее значимый бит первого байта-это указатель на тип загрузки, который требуется для байт-подсчет балки. Если бит установлен в 1, то кодируется балки. Кодирование балки декодируются путем считывания значения пробега и повторения его указанное число раз число циклов. Если бит установлен в 0, отображается значение буквального выполнения, и это означает, что байты подсчета следующего запуска буквально из закодированных данных изображения. Затем счетчик выполнения байт содержит значение между 0 и 127 (счетчик запуска менее одной). Схема RLE на уровне байтов, они хороши для того, чтобы данные изображения, хранящиеся как один байт на пиксель.

Схема RLE на уровне пикселей используются, когда два или более последовательных байтов данных изображения используются для хранения значений одного пикселя. На уровне пикселей биты игнорируются, и байты учитываются только для определения каждого значения пикселя. Размер закодированных пакетов зависит от размера кодируемых значений пикселей. Количество бит или байт на пиксель хранится в заголовке файла изображения. Запуск данных изображения, хранящихся в виде 3 байт значения пикселя кодируется в 4 байта пакета, с байта, подсчет количества операций, а затем из трех байт в байт. Метод кодирования остается такой же, как и с байт RLE.



Категория: Мобильная техника