- •Основы теории цифровой связи Часть 1 кодирование информации
- •1. Введение
- •1.1. Модель радиотехнической системы связи
- •Контрольные вопросы
- •1.2. Статистическая трактовка процесса передачи информации
- •Контрольные вопросы
- •1.3. Основные понятия и элементы математического аппарата теории связи
- •1.3.1. Сигналы и помехи
- •1.3.2. Разложение сигнала по системе ортогональных функций. Спектр сигнала
- •1.3.3. Cвойства преобразования Фурье
- •1.3.4. Корреляционная функция сигнала
- •1.3.5. Связь между корреляционной функцией и спектром сигнала
- •1.3.6. Случайные сигналы и их характеристики
- •Контрольные вопросы
- •1.4. Источники информации
- •1.5. Теорема дискретизации
- •1.6. Дискретизация изображений
- •Контрольные вопросы
- •1.7. Квантование. Ошибки квантования
- •Контрольные вопросы
- •1.8. Количество информации, содержащейся в сообщении
- •1.8.1. Энтропия сложных сообщений, избыточность источника
- •Контрольные вопросы и задачи
- •2. Основы экономного кодирования информации
- •2.1. Способы представления кодов
- •Контрольные вопросы и задачи
- •2.2. Типы систем сжатия
- •X Квантователь Xq Кодер без потерь информации b (Xq) Декодер X*
- •Методы кодирования без потерь
- •2.3.1. Понятие префиксного множества
- •2.3.2. Алгоритм кодирования Хаффмена
- •2.3.3. Алгоритм Шеннона–Фано
- •2.3.4. Блочные коды
- •2.3.5. Арифметическое кодирование
- •2.3.6. Словарное кодирование. Метод Зива–Лемпеля
- •2.3.7. Кодирование длин повторений (rle)
- •2.3.8. Дифференциальное кодирование
- •Контрольные вопросы и задачи
- •2.4. Методы сжатия с потерей информации
- •2.4.1. Функции “скорость–искажение” и “искажение–скорость”
- •2.5. Сжатие речевых сигналов
- •2.5.1. Кодирование формы сигнала, икм
- •2.5.2. Дифференциальная икм
- •2.5.3. Адаптивная дифференциальная икм (адикм)
- •2.5.4. Дельта-модуляция
- •2.5.5. Другие методы кодирования формы сигнала
- •2.5.6. Кодирование источника
- •2.5.7. Гибридные методы кодирования речи
- •2.5.8. Полноскоростной кодер rpe-ltp (стандарт gsm 06.10)
- •2.5.9. Кодер vselp (стандарт d-amps)
- •Контрольные вопросы и задачи
- •2.6. Кодирование изображений. Стандарт сжатия jpeg
- •Процедуру дкп можно записать в матричной форме:
- •2.6.1. Рекурсивный (вэйвлет) алгоритм
- •2.7. Сжатие подвижных изображений (видео)
- •3. Основы помехоустойчивого кодирования
- •3.1. Основные принципы. Типы кодов
- •3.2. Линейные блочные коды
- •3.2.1. Код с проверкой на четность
- •3.2.2. Итеративный код
- •3.2.3. Порождающая матрица линейного блочного кода
- •3.2.4. Проверочная матрица
- •3.2.5. Дуальные коды
- •3.2.6. Синдром и обнаружение ошибок
- •3.2.7. Синдромное декодирование линейных блочных кодов
- •3.2.8. Мажоритарное декодирование линейных блочных кодов
- •3.2.9. Декодирование методом максимального правдоподобия
- •Поскольку
- •Если принятый сигнал дискретизован и Si – I-й отсчет принятого сигнала.
- •3.2.10. Вес и расстояние Хемминга. Способность кодов обнаруживать и исправлять ошибки
- •Контрольные вопросы и задачи
- •3.3. Полиномиальные коды
- •3.3.1. Циклические коды
- •3.3.2. Кодирование с использованием циклических кодов
- •3.3.3. Вычисление синдрома и исправление ошибок в циклических кодах
- •3.3.4. Неалгебраические методы декодирования циклических кодов
- •3.4. Сверточные коды
- •3.4.1. Кодирование с использованием сверточных кодов
- •3.4.2. Синдромное декодирование сверточных кодов
- •3.4.3. Кодовое дерево и решетчатая диаграмма
- •3.4.4. Декодирование сверточных кодов. Алгоритм Витерби
- •3.4.5. Алгоритмы поиска по решетке
- •Контрольные вопросы и задачи
- •3.5. Применение корректирующего кодирования в системах связи
- •3.5.1. Каскадные коды
- •3.5.2. Кодирование с перемежением
- •Библиографический список
- •Часть 1 1
2.3.7. Кодирование длин повторений (rle)
Кодирование длин участков (или повторений) может быть достаточно эффективным при сжатии двоичных данных, например черно-белых факсимильных изображений, черно-белых изображений, содержащих множество прямых линий и однородных участков (BMP, GIF, TIFF), а также любых других данных, содержащих длинные цепочки повторяющихся символов. Кодирование длин повторений является одним из элементов известного алгоритма сжатия изображений JPEG.
Идея сжатия данных на основе кодирования длин повторений состоит в том, что вместо кодирования собственно данных подвергаются кодированию числа, соответствующие длинам участков, на которых данные сохраняют неизменное значение.
Существует множество разновидностей RLE-кодирования. Рассмотрим несколько примеров.
Очень часто в различных цифровых данных встречаются участки с большим количеством нулевых значений. В частности, такая ситуация имеет место при сжатии изображений с использованием алгоритма JPEG. В этом случае RLE-кодирование производится следующим образом. Всякий раз, когда в потоке данных встречается “ноль”, он кодируется двумя числами. Первое 0, являющееся флагом начала кодирования длины потока нулей, и второе – количество нулей в очередной группе. Если среднее число нулей в группе больше двух, будет иметь место сжатие. С другой стороны, большое число отдельных нулей может привести даже к увеличению размера кодируемого файла:
Другим примером RLE-сжатия может служить кодирование байтовых данных. При этом цепочки или серии повторяющихся байтов заменяются на один кодирующий байт и счетчик числа их повторений.
Пример.
44 44 44 11 11 11 11 11 01 33 FF 22 22 исходная последовательность; 03 44 04 11 00 03 01 03 FF 02 22 сжатая последовательность.
Здесь
первый байт указывает, сколько раз нужно
повторить следующий байт. Если первый
байт равен 00, то за ним следует счетчик,
показывающий сколько неповторяющихся
данных следует за ним, а также сами
неповторяющиеся данные, в этом примере
– 01 03 FFм
следуетт равен 00, то затем
этомны
Наконец, более сложный пример, в котором реализовано сразу и RLE-кодирование и кодирование по Хаффмену. Предположим, что нужно закодировать двоичное изображение размером 8 х 8 элементов, показанное на рис. 2.6.
Рис. 2.6
Просканируем это изображение по строкам (белым и черным участкам на изображении будут соответствовать 0 и 1), в результате получим двоичный вектор данных
X= (0111000011110000000100000001000000010000000100000001111111010111),
длиной 64 бита. При этом скорость исходного кода составляет 1 бит на элемент изображения.
Выделим в векторе X участки, на которых данные сохраняют неизменное значение, и определим их длины. Результирующая последовательность длин участков целых чисел, соответствующих исходному вектору данных X, будет иметь вид r = (1, 3, 4, 4, 7, 1, 7, 1, 7, 1, 7, 1, 7, 7, 1, 1, 1, 3).
Теперь эту последовательность, в которой заметна явная неравновероятность символов (единиц и семерок гораздо больше, чем других символов), можно закодировать каким-либо статистическим кодом, например кодом Хаффмена, имеющим таблицу кодирования (табл. 2.6)
Таблица 2.6
-
Кодер
Длина участка
Кодовое слово
1
0
7
10
4
110
3
111
Для того чтобы указать, что кодируемая последовательность начинается с нуля, добавим в начале кодового слова префиксный символ 0. В результате получим кодовое слово B (r) = ( 001111101101001001001001010000111) длиной в 33 бита, то есть результирующая скорость кода R составит 33/64, или немногим более 0,5 бита, на элемент изображения (при исходном – 1 бит/точку). При сжатии изображений большего размера, содержащих множество повторяющихся элементов, эффективность сжатия может оказаться гораздо более высокой.
