- •Основы теории цифровой связи Часть 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
Процедуру дкп можно записать в матричной форме:
DCT = TC T∙IMG∙TC, (2.36)
где TC – матрица базисных (косинусных) коэффициентов для преобразования размером 8 х 8, имеющая вид
.353553
.353553 .353553 .353553 .353553 .353553 .353553 .353553
.490393 .415818 .277992 .097887 -.097106 -.277329 -.415375 -.490246
.461978 .191618 -.190882 -.461673 -.462282 -.192353 .190145 .461366
TC = .414818 -.097106 -.490246 -.278653 .276667 .490710 .099448 -.414486 (2.37)
.353694 -.353131 -.354256 .352567 .354819 -.352001 -.355378 .351435
.277992 -.490246 .096324 .416700 -.414486 -.100228 .491013 -.274673
.191618 -.462282 .461366 -.189409 -.193822 .463187 -.460440 .187195
.097887 -.278653 .416700 -.490862 .489771 -.413593 .274008 -.092414
Итак, в результате применения к блоку изображения размером 8 х 8 пикселов дискретного косинусного преобразования получим двумерный ДКП спектр, также имеющий размер 8 х 8 отсчетов. Иными словами, 64 числа, представляющие собой отсчеты изображения, превратятся в 64 числа, представляющие собой отсчеты его ДКП-спектра. Отдельные спектральные составляющие, на которые раскладывается сигнал, называют базисными функциями. Для ПФ базисными функциями являются синусы и косинусы разных частот.
Для ДКП размером 8 х 8 система базисных функций задается формулой
.
(2.38)
Представить, как выглядят двумерные базисные функции ДКП с различными индексами u и ν, можно из рис. 2.32.
Самая низкочастотная базисная функция, соответствующая индексам (0,0), изображена в левом верхнем углу рисунка. Все ее значения равны единице. Это означает, что спектральная составляющая DCT(0,0) получается как сумма всех пикселей блока изображения 8 х 8 (средняя яркость блока). Самая высокочастотная базисная функция изображена в нижнем правом углу. Базисная функция для (0,1) представляет собой половину периода косинусоиды по одной координате и константу – по другой, базисная функция с индексами (1,0) – то же самое, но по другой координате.
Рис. 2.32
Дискретное косинусное преобразование вычисляется путем поэлементного перемножения и суммирования блоков изображения 8 х 8 пикселов с каждой из этих базисных функций. В результате компонента ДКП-спектра с индексами (0,0) будет представлять собой просто сумму всех элементов блока изображения, то есть среднюю для блока яркость. В компоненту с индексом (0,1) усредняются с одинаковыми весами все горизонтальные детали изображения, а по вертикали вычисляется разница яркостей верхней и нижней частей фрагмента изображения. Компонента с индексом (1,0) – это разница яркостей правой и левой частей фрагмента изображения и т.д. Чем ниже и правее в матрице DCT его компонента, тем более высокочастотным деталям изображения она соответствует.
Для того чтобы получить исходное изображение по его ДКП-спектру (выполнить обратное преобразование), нужно теперь базисную функцию с индексами (0,0) умножить на спектральную компоненту с координатами (0,0), прибавить к результату произведение базисной функции (1,0) на спектральную компоненту (1,0) и т.д. Иными словами, нужно с весами ДКП сложить все базисные функции.
В приведенной ниже табл. 2.7 представлены числовые значения пикселов для одного из блоков изображения и его ДКП-спектра.
Таблица 2.7
Отсчеты изображения |
|||||||
139 |
144 |
149 |
153 |
155 |
155 |
155 |
155 |
144 |
151 |
153 |
156 |
159 |
156 |
156 |
156 |
150 |
155 |
160 |
163 |
158 |
156 |
156 |
156 |
159 |
161 |
161 |
160 |
160 |
159 |
159 |
159 |
159 |
160 |
161 |
162 |
162 |
155 |
155 |
155 |
161 |
161 |
161 |
161 |
160 |
157 |
157 |
157 |
161 |
162 |
161 |
163 |
162 |
157 |
157 |
157 |
162 |
162 |
161 |
161 |
163 |
158 |
158 |
15 |
Результат ДКП |
|||||||
235,6 |
-1 |
-12,1 |
-5,2 |
2,1 |
-1,7 |
-2,7 |
1,3 |
-22,6 |
-17,5 |
-6,2 |
-3,2 |
-2,9 |
-0,1 |
0,4 |
-1,2 |
-10,9 |
-9,3 |
-1,6 |
1,5 |
0,2 |
-0,9 |
-0,6 |
-0,1 |
-7,1 |
-1,9 |
0,2 |
1,5 |
0,9 |
-0,1 |
0 |
0,3 |
-0,6 |
-0,8 |
1,5 |
1,6 |
-0,1 |
-0,7 |
0,6 |
1,3 |
1,8 |
-0,2 |
1,6 |
-0,3 |
-0,8 |
1,5 |
1 |
-1 |
-1,3 |
-0,4 |
-0,3 |
-1,5 |
-0,5 |
1,7 |
1,1 |
-0,8 |
-2,6 |
1,6 |
-3,8 |
-1,8 |
1,9 |
1,2 |
-0,6 |
-0,4 |
Отметим очень интересную особенность полученного ДКП-спектра: наибольшие его значения сосредоточены в левом верхнем углу табл. 2.7 (низкочастотные составляющие), правая же нижняя его часть (высокочастотные составляющие) заполнена относительно небольшими числами. Чисел этих столько же, сколько и в блоке изображения: 8 х 8 = 64, то есть пока никакого сжатия c потерями не произошло, и если выполнить обратное преобразование, то будет получен тот же самый блок изображения. Правда, закодировать ДКП спектр можно уже меньшим числом бит, поскольку правая нижняя часть таблицы состоит из чисел с гораздо меньшими величинами, чем ранее.
Очередным этапом работы алгоритма JPEG является квантование коэффициентов ДКП, смысл которого состоит в следующем.
Если внимательно посмотреть на полученные в результате ДКП коэффициенты, то будет видно, что большая их часть, расположеная справа внизу, – нулевые или имеет очень небольшие значения. Это высокочастотные компоненты, которые обычно могут быть без больших потерь отброшены или по крайней мере округлены до ближайшего целого значения.
Квантование заключается в делении каждого коэффициента ДКП на некоторое число в соответствии с матрицей квантования. Эта матрица может быть фиксированной, или (для более качественного и эффективного сжатия) получена в результате анализа характера исходной картинки. Чем больше числа, на которые происходит деление, тем больше в результате деления будет нулевых значений, а значит, сильнее сжатие и заметнее потери.
Таблица 2.8
Ранее полученный результат ДКП |
|||||||
235,6 |
-1 |
-12,1 |
-5,2 |
2,1 |
-1,7 |
-2,7 |
1,3 |
-22,6 |
-17,5 |
-6,2 |
-3,2 |
-2,9 |
-0,1 |
0,4 |
-1,2 |
-10,9 |
-9,3 |
-1,6 |
1,5 |
0,2 |
-0,9 |
-0,6 |
-0,1 |
-7,1 |
-1,9 |
0,2 |
1,5 |
0,9 |
-0,1 |
0 |
0,3 |
-0,6 |
-0,8 |
1,5 |
1,6 |
-0,1 |
-0,7 |
0,6 |
1,3 |
1,8 |
-0,2 |
1,6 |
-0,3 |
-0,8 |
1,5 |
1 |
-1 |
-1,3 |
-0,4 |
-0,3 |
-1,5 |
-0,5 |
1,7 |
1,1 |
-0,8 |
-2,6 |
1,6 |
-3,8 |
-1,8 |
1,9 |
1,2 |
-0,6 |
-0,4 |
Таблица квантования |
|||||||
16 |
11 |
10 |
16 |
24 |
40 |
51 |
61 |
12 |
12 |
14 |
19 |
26 |
58 |
60 |
55 |
14 |
13 |
16 |
24 |
40 |
57 |
69 |
56 |
14 |
17 |
22 |
29 |
51 |
87 |
80 |
62 |
18 |
22 |
37 |
56 |
68 |
109 |
103 |
77 |
24 |
35 |
55 |
64 |
81 |
104 |
113 |
92 |
49 |
64 |
78 |
87 |
103 |
121 |
120 |
101 |
72 |
92 |
95 |
98 |
112 |
100 |
103 |
99 |
Результат квантования |
|||||||
15 |
0 |
-1 |
0 |
0 |
0 |
0 |
0 |
-2 |
-1 |
0 |
0 |
0 |
0 |
0 |
0 |
-1 |
-1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Очевидно, что от выбора таблицы квантования будет в значительной степени зависеть как эффективность сжатия – число нулей в квантованном (округленном) спектре, так и качество восстановленного изображения.
Таким образом, после округления (квантования) результата ДКП получен квантованный (искаженный) поблочный спектр изображения.
Следующим этапом работы алгоритма JPEG является преобразование 8 х 8 матрицы ДКП-спектра в линейную последовательность. Но делается это таким образом, чтобы сгруппировать по возможности вместе все большие и все нулевые значения спектра. Совершенно очевидно, что для этого нужно прочесть элементы матрицы коэффициентов ДКП в порядке, изображенном на рис. 2.33, то есть зигзагообразно – из левого верхнего угла к правому нижнему. Эта процедура называется зигзаг-сканированием.
В
результате такого преобразования
квадратная матрица 8 х 8 квантованных
коэффициентов ДКП
превратится в линейную последовательность
из 64 чисел, большая часть из которых –
это идущие подряд нули. Известно, что
такие потоки можно очень эффективно
сжимать путем кодирования
длин повторений.
Именно так это и делается.
На следующем, пятом, этапе JPEG-коди-рования получившиеся цепочки нулей подвергаются кодированию длин повторений для
Рис. 2.33 исключения длинных цепочек повторяющихся
символов (в данном случае – нулей).
Последним этапом работы алгоритма JPEG является кодирование получившейся последовательности каким-либо статистическим алгоритмом. Обычно используется арифметическое кодирование или алгоритм Хаффмена. В результате получается новая последовательность, размер которой существенно меньше размера массива исходных данных.
Декодирование данных, сжатых согласно алгоритму JPEG, проводится точно так же, как и кодирование, но все операции следуют в обратном порядке.
После неразрушающей распаковки методом Хаффмена (или LZW, или арифметического кодирования) и расстановки линейной последовательности в блоки размером 8 х 8 чисел спектральные компоненты деквантуются с помощью сохраненных при кодировании таблиц квантования. Для этого распакованные 64 значения ДКП умножаются на соответствующие числа из таблицы. После этого каждый блок подвергается обратному косинусному преобразованию, процедура которого совпадает с прямым и различается только знаками в матрице преобразования. Последовательность действий при декодировании и полученный результат иллюстрируются приведенной ниже табл. 2.9.
Таблица 2.9
Квантованные данные |
||||||||||||||
15 |
0 |
-1 |
0 |
0 |
0 |
0 |
0 |
|||||||
-2 |
-1 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
-1 |
-1 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
Деквантованные данные |
||||||||||||||
240 |
0 |
-10 |
0 |
0 |
0 |
0 |
0 |
|||||||
-24 |
-12 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
-14 |
-13 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|||||||
Результат обратного ДКП |
||||||||||||||
144 |
146 |
149 |
152 |
154 |
156 |
156 |
156 |
|||||||
148 |
150 |
152 |
154 |
156 |
156 |
156 |
156 |
|||||||
155 |
156 |
157 |
158 |
158 |
157 |
156 |
155 |
|||||||
160 |
161 |
161 |
162 |
161 |
159 |
157 |
155 |
|||||||
163 |
163 |
164 |
163 |
162 |
160 |
158 |
156 |
|||||||
163 |
164 |
164 |
164 |
162 |
160 |
158 |
157 |
|||||||
160 |
161 |
162 |
162 |
162 |
161 |
159 |
158 |
|||||||
158 |
159 |
161 |
161 |
162 |
161 |
159 |
158 |
|||||||
Отсчеты исходного изображения (для сравнения) |
||||||||||||||
139 |
144 |
149 |
153 |
155 |
155 |
155 |
155 |
|||||||
144 |
151 |
153 |
156 |
159 |
156 |
156 |
156 |
|||||||
150 |
155 |
160 |
163 |
158 |
156 |
156 |
156 |
|||||||
159 |
161 |
161 |
160 |
160 |
159 |
159 |
159 |
|||||||
159 |
160 |
161 |
162 |
162 |
155 |
155 |
155 |
|||||||
161 |
161 |
161 |
161 |
160 |
157 |
157 |
157 |
|||||||
161 |
162 |
161 |
163 |
162 |
157 |
157 |
157 |
|||||||
162 |
162 |
161 |
161 |
163 |
158 |
158 |
157 |
|||||||
Видно, что восстановленные данные несколько отличаются от исходных. Это естественно, потому что JPEG и разрабатывался как сжатие с потерями.
На представленном ниже рис. 2.34 показано исходное изображение (справа), а также изображение, сжатое с использованием алгоритма JPEG в 10 раз (слева) и в 45 раз (в центре). Потеря качества в последнем случае достаточно заметна, но и выигрыш по размеру кода также очевиден.
Рис. 2.34
Итак, JPEG-сжатие состоит из следующих этапов:
Разбиение изображения на блоки размером 8 х 8 пикселов.
Применение к каждому из блоков дискретного косинусного преобразования.
Округление коэффициентов ДКП в соответствии с заданной матрицей весовых коэффициентов.
Преобразование матрицы округленных коэффициентов ДКП в линейную последовательность путем их зигзагообразного чтения.
Кодирование повторений для сокращения количества нулевых компонент.
Статистическое кодирование результата кодом Хаффмена или арифметическим кодом. Декодирование производится точно так же, но в обратном порядке.
Существенными положительными сторонами алгоритма сжатия JPEG являются:
– возможность задания в широких пределах (от 2 до 200) степени сжатия;
– возможность работы с изображениями любой разрядности;
– симметричность процедур сжатия–распаковки.
К недостаткам можно отнести наличие ореола на резких переходах цветов – эффект Гиббса, а также распадение изображения на отдельные квадратики 8 х 8 при высокой степени сжатия.
