Алгоритм RLE: описание, характеристики, правила и примеры
Опубликованно 13.01.2018 05:24
Алгоритм RLE-это алгоритм сжатия данных, поддерживает большинство форматов файлов растровые изображения: TIFF, BMP и PCX. RLE подходит для любого типа сжатия данных, независимо от их содержания, но содержание данных влияет на коэффициент сжатия. Несмотря на то, что большинство алгоритмов не обеспечивают высокой степенью сжатия RLE можем советовать более сложные методы, которые реализуют средство легко и быстро достичь, так что это хорошая альтернатива.
Что является основой алгоритма сжатия RLE?
RLE работает, уменьшить физический размер повторяющихся строк. Эта строка, так называемая run, как правило, кодируется в двух байтах. Первый байт-это количество символов в ход и используется в качестве счетчика цикла. На практике coded Run может содержать от 1 до 128 и 256 символов. Счетчик, как правило, содержит количество символов минус (значение в диапазоне от 0 до 127 и 255). Второй байт-это значение символа в исполнении, в диапазоне от 0 до 255 и будет значением Start.
Без сжатия значный пробег в 15 символов обычно требует 15 байт для хранения:
AAAAAAAAAAAAAAA.
В той же строке после RLE-кодирования нужно всего два байта: 15а.
Кодирование 15а, созданные для обозначения строки, называется RLE-пакет. В этом коде первый байт будет 15, счетчик владельца и содержит необходимое количество повторений. Второй байт, A, значение run и содержит фактический повторяющиеся значения в перспективе.
Новый пакет генерируется каждый раз, когда кнопка "Пуск" будет изменен, или каждый раз, когда количество символов в пробег превышает максимальное число. Предположим, что 15-значный строки в соответствии с условиями содержит 4 различных символа:
AAAAAAbbbXXXXXt
С кодирования с длиной строки, это может быть упакованы в пакет из четырех двухбайтовых:
6A3b5X1t
После кодирования для строк длины для 15-байт-строк всего восемь байт данных для представления строк, в отличие от первоначальных 15 байт. В этом случае кодирование коэффициента сжатия во время выполнения было почти 2 к 1.Особенности
Долго выполняется редко в некоторых типах данных. Например, ASCII-текст содержит редко долго работает. В предыдущем примере последний ход (с символом t) будет только один символ был в длину. 1-значный хода работает до сих пор. И через ввод в эксплуатацию и запуск записываются для каждого пробега в 2 символа. Для кодирования пробега с RLE-алгоритма требует, состоящая как минимум из двух символов. В связи с проведением одиночных символов, на самом деле больше места. По тем же причинам данные, полностью состоящая из 2-знак-прогоны, остаются неизменными после кодирования RLE.
Схема алгоритм сжатия RLE отличаются простотой и высокой скоростью исполнения, но их эффективность зависит от типа кодируемых изображений. Черно-белое изображение, особенно белый, как страницы книги, будет очень хорошо кодирует из-за большого количества взаимосвязанных данных, имеющих одинаковый цвет. Но картинка с большим количеством цветов, например фотографию, будет не кодируются одинаково хорошо. Это связано с тем, что сложность изображения проявляется в виде большого количества разных цветов. И из-за этой сложности относительно бега мало будет одного цвета. Варианты кодирования по длине
Существует несколько способов кодирования во время выполнения. Данные изображения, закодированные, как правило, непрерывный процесс, который обрабатывает как визуальный контент 1D-Stream, а не 2D-просмотр данных. При последовательной обработке растрового изображения кодирует, статуя из верхнего левого угла и идет слева направо в каждой строке сканирования в нижнем правом углу растрового изображения. Но альтернативные системы RLE пути могут быть записаны также для кодирования данных по длине растрового изображения вдоль столбцов для сжатия в 2D-плитки или даже для кодирования пикселей по диагонали зигзагом. Odd опции RLE используются в специализированных приложениях, но, как правило, довольно редко.
Алгоритм кодирования с ошибкой длина ствола
Другие редко встречающиеся варианте алгоритм кодирования RLE с ошибкой длины ствола. Эти инструменты выполняют сжатие вообще без потерь, но пропуск данных в процессе кодирования, как правило, положить на ноль одного или двух младших значащих (Тор) бит в каждом пикселе, увеличить коэффициент сжатия, не влияя отрицательно на качество сложных изображений. Эту программу RLE-алгоритм работает только с изображениями реального мира, много значений тонкие вариации пикселей.Кросс-Кодирования
Кросс-кодирование-это объединение сканирования строк, которое происходит, когда процесс сжатия теряет различие между исходными линиями. Если данные отдельных линий в сочетании алгоритма кодирования повторов RLE, точка, где линия сканирование закончилось, а другой потерял, уязвим и трудно обнаружить.
Иногда есть Cross-coding, которая затрудняет процесс декодирования путем деления времени. Для форматы файлов растровых изображений этот метод призван организовать растрового изображения вдоль линии сканирования. Хотя многие спецификации расширение формата файлов явно указать, что эти строки должны быть кодированы по отдельности, многих приложениях кодирования этих изображений, а сплошным потоком, игнорируя границы строк.Как с помощью алгоритма RLE кодирования изображения?
Индивидуальное кодирование строк сканирования имеет преимущества в тех случаях, когда необходимо применение только часть изображения. Предположим, что фотография содержит 512 строк изображения, и отображать только строки от 100 до 110. Если мы не знали, где развертки строк и начали закончились кодированных данных изображения, нашего приложения нужно найти декодирование строк от 1 до 100, до десяти строк, которые вам нужны. Если переходы между линий развертки были с некоторыми легко узнаваемой маркировки разграничения, приложение может легко читать закодированные данные маркеры не в счет достигли еще, ему правильными рядами. Но такой подход был бы довольно неэффективно.Альтернативой
Другая возможность определения определенной начальной точки сканирования строк в блок закодированных данных, как создать таблицу строк изображения. Эта табличная структура обычно содержит один элемент для каждой сканирующей строке изображения, и каждый элемент содержит значение смещения соответствующую строку сканирование. Чтобы RLE первый пакет 10 строк сканирования, все, что вам нужно сделать декодеру, значение offset-позиция, хранится в десятый элемент таблицы для сканирования строки. Таблицы строки, содержащие количество байт для кодирования отдельных строк. Используя этот метод с целью RLE первый пакет сканирования 10 строк, ваш декодер значения первых 9 элементов объединяться в таблице строк изображения. Первый пакет для сканирующей строке 10 начать с этой offset байт от начала изображения с кодированием данных RLE.Единицы измерения
Частей алгоритмов кодирования по длине, различны, это решение будет принято, основываясь на типе данных, который декодирует (например, длина носителя данных). Схема использует RLE для сжатия растровой графики, обычно делятся на классы по типу атома (т. е. фундаментальных) элементов, которые они кодируют. Три класса, которые большинство графических форматов, — RLE это биты, байты и пиксели.Качество сжатия
Бит-уровни RLE-схемы кодирования подачи пара битов в строке сканирования и игнорировать границы байтов и слов. Только монохромный (черно-белый), 1-битные изображения содержат достаточное количество битов, чтобы этот класс RLE-кодирования эффективен. Типичная схема RLE на уровне битов кодирует от одного до 128 бит в дерево пакет. Семь младших значащих бита содержат счетчик минус один запуск, а старший бит бит содержит значение носителя, равны 0 или 1. Прогон длиной более 128 пикселей разделить на несколько RLE-кодированных пакетов.
Исключения
Схема RLE на уровне байт кодируют прогоны одинаковые байтовые значения, игнорировать сканировании некоторые биты и границ слов в строке. Самая распространенная схема RLE на с Томом уровне кодирует символы перевода байт в 2-байтовые пакеты. Первый байт содержит значение счетчика от 0 до 255, а второй байт содержит значение Пуск. Также часто помимо двухбайтовые кодировки емкостью literal, незаписанных прогоны байт в поток кодированных данных.
В этой схеме с семи младший значащий бит первого байта содержат счетчик минус один водила, а старший бит первого байта является показателем манерой исполнения, вы можете рассчитывать на байт-носителя. Если старший бит установлен на 1, он тест-драйв-это кодовый. Закодированные символы перевода декодируется путем считывания значения повторения его пробега и количество раз, заданное число циклов. Если старший бит установлен на 0, то значит literal Run, что считать байты следующего цикла считываются буквально из кодированных данных изображения. Затем байт-счетчик исполнения содержит значение в диапазоне от 0 до 127 (запустить счетчик минус один). Схема RLE на уровне байтов хорошо для изображения данных, которые хранятся в виде байтов на пиксел.
Схема RLE на уровне пикселей используются, когда два или более последовательных байтов данных изображения используются для хранения значений одного пикселя. На уровне пикселей биты игнорируются, и подсчитывает байты только для идентификации каждого значения пикселя. Размер кодированных пакетов значения в зависимости от размера кодируемых пикселей. Количество бит или байт на пиксель хранится в заголовке файла изображения. Пуск данных изображения, хранящихся в виде 3-байтовые значения пикселей, закодированный в 4 байта пакета, байт с числом операций подсчета, следуют три байта с байтом. Метод кодирования остается такой же, как в байт-RLE.
Категория: Hi-Tech