Казанцев Г.Д., Капустин В.В. Сети и системы цифрового

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего
профессионального образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И
РАДИОЭЛЕКТРОНИКИ»
(ТУСУР)
Кафедра телевидения и управления (ТУ)
УТВЕРЖДАЮ
Заведующий кафедрой ТУ, профессор
_______И.Н. Пустынский
«___»___________2014 г.
Лабораторный практикум по дисциплине
«Сети и системы цифрового телерадиовещания»
Лабораторная работа № 1
«Компрессия и декомпрессия видеоданных на основе дискретного косинусного
преобразования»
РАЗРАБОТАЛИ
_________ Г.Д. Казанцев, доцент
_________ В.В. Капустин, инженер
«______»_________2014 г.
2014
2
Методические указания к выполнению работы
Цель работы: изучение основ процесса компрессии (декомпрессии)
видеоданных, на примере преобразования статического изображения из формата
BMP в формат JPEG.
1 Вводная часть
Компрессия (декомпрессия) видеоданных на основе дискретного косинусного
преобразования (далее ДКП) используется в стандарте MPEG-4. Лабораторная
работа представляет собой программную оболочку (интерфейс) с помощью которой
студент может изучить все этапы кодирования изображения. Интерфейс позволяет
работать с частным случаем видеоданных - со статическим изображением, т.е.
предполагается, что рассматривается только один кадр изображения. Входным
источником для него является файл формата BMP, в цветовом пространстве RGB. В
процессе кодирования последовательно происходит преобразование изображения из
цветового пространства RGB в пространство YCbCr, при условии того, что
изображение цветное. Черно белое изображение в формате BMP, представляет
собой аналог яркостной компоненты пространства YCbCr.
Итак, рассмотрим алгоритм подробнее. Пусть мы сжимаем 24-битное
изображение, на каждую из компонент выделяется по 8 бит/пиксель.
Переводим изображение из цветового пространства RGB, с компонентами,
отвечающими за красную (Red), зеленую (Green) и синюю (Blue) составляющие
цвета точки, в цветовое пространство YCrCb (иногда называют YUV).
В нем Y - яркостная составляющая, а Cr, Cb - компоненты, отвечающие за цвет
(хроматический красный и хроматический синий). За счет того, что человеческий
глаз менее чувствителен к цвету, чем к яркости, появляется возможность
архивировать массивы для Cr и Cb компонент с большими потерями и,
соответственно, большими коэффициентами сжатия. Подобное преобразование уже
давно используется в телевидении. На сигналы, отвечающие за цвет, там выделяется
более узкая полоса частот.
Упрощенно перевод из цветового пространства RGB в цветовое пространство
YCrCb можно представить с помощью матрицы перехода:
Y
0.299
0.587
0.114
R
0
Cb  0.5
0.4187 0.0813  G  128
Cr 0.1687 0.3313
0.5
B 128
Обратное преобразование осуществляется умножением вектора YUV на
обратную матрицу.
R 1
0
1.402
 Y
0 


G  1 0.34414 0.71414   Cb  128 
 Cr 128 
B 1
1.772
0


3
Разбиваем исходное изображение на матрицы 8х8. Формируем из каждой три
рабочие матрицы ДКП - по 8 бит отдельно для каждой компоненты. При больших
коэффициентах сжатия этот шаг может выполняться чуть сложнее. Изображение
делится по компоненте Y - как и в первом случае, а для компонент Cr и Cb матрицы
набираются через строчку и через столбец. Т.е. из исходной матрицы размером
16x16 получается только одна рабочая матрица ДКП. При этом, как нетрудно
заметить, мы теряем 3/4 полезной информации о цветовых составляющих
изображения и получаем сразу сжатие в два раза. Мы можем поступать так
благодаря работе в пространстве YCrCb. На результирующем RGB изображении,
как показала практика, это сказывается несильно.
Применяем ДКП к каждой рабочей матрице. При этом мы получаем матрицу, в
которой коэффициенты в левом верхнем углу соответствуют низкочастотной
составляющей изображения, а в правом нижнем - высокочастотной.
1 n1 n1
Y [u, v]   C (i, u)  C ( j, v)  y[i, j ]
4 i 0 j 0
В упрощенном виде это преобразование можно представить так:
где:
 (2  i  1)  u  
C (i, u )  A(u )  cos 
2n

 1

, for u  0 

A(u )   2

 1, for u  0 



,

Производим квантование с округлением. В принципе, это просто деление
рабочей матрицы на матрицу квантования поэлементно с округлением. Для каждой
компоненты (Y, U и V), в общем случае, задается своя матрица квантования q[u,v]
(далее МК).
 Y [u, v] 
Yq[u, v]  IntegerRound 

 q[u, v] 
На этом шаге осуществляется управление степенью сжатия, и происходят
самые большие потери. Понятно, что, задавая МК с большими коэффициентами, мы
получим больше нулей и, следовательно, большую степень сжатия. В стандарт JPEG
включены рекомендованные МК, построенные опытным путем. Матрицы для
большего или меньшего коэффициентов сжатия получают путем умножения
исходной матрицы на некоторое число m. Каждый элемент матрицы, кроме
q(1,1)=16 (по установленному стандарту). вычисляется по формуле:
q (u , v)  1  (u  v)  m
4
С квантованием связаны и специфические эффекты алгоритма. При больших
значениях коэффициента m потери в низких частотах могут быть настолько велики,
что изображение распадется на квадраты 8х8. Потери в высоких частотах могут
проявиться в так называемом «эффекте Гиббса», когда вокруг контуров с резким
переходом цвета образуется своеобразный «нимб».
Переводим матрицу 8x8 в 64-элементный вектор при помощи «зигзаг»сканирования, т.е. берем элементы с индексами (0,0), (0,1), (1,0), (2,0)... Таким
образом, в начале вектора мы получаем коэффициенты матрицы, соответствующие
низким частотам, а в конце - высоким.
Рис. 1. Зигзаг-сканирование
Свертываем вектор с помощью алгоритма RLE. При этом получаем пары типа
(пропустить, число), где «пропустить» является счетчиком пропускаемых нулей, а
«число» - значение, которое необходимо поставить в следующую ячейку. Так,
вектор 42 3 0 0 0 -2 0 0 0 0 1 ... будет свернут в пары (0,42) (0,3) (3,-2) (4,1) ... .
Свертываем получившиеся пары кодированием по Хаффману с фиксированной
таблицей (см. Приложение 1). Каждая матрица 8x8 квантованных коэффициентов
ДКП содержит коэффициент DC [в позиции (0,0) в левом верхнем углу], а также 63
коэффициента АС. Коэффициент DC равен среднему значению всех 64 пикселей
исходного блока. Наблюдения показывают, что при сжатии непрерывно-тоновых
изображений, коэффициенты DC соседних единиц обычно являются
коррелированными. Известно, что этот коэффициент равен сумме всех пикселей
блока с некоторым общим множителем. Все это указывает на то, что коэффициенты
DC близких блоков не должны сильно различаться. Поэтому JPEG записывает
первый (закодированный) коэффициент DC, а затем кодирует разности
коэффициентов DC последовательных блоков. DC и АС коэффициенты состоят из
основного и дополнительного кода.
Дополнительный код для AC и DC коэффициентов находится следующим
образом:
Пример 1. DC=18
5
Воспользовавшись таблицей 1, приложения 1 сначала находим диапазон в
который входит коэффициент. Коэффициент 16 входит в диапазон (-31,...-16,
16,…,31), этому диапазону соответствует категория DC разностей 5. Основной код
(табл.2, Прил.1) для категории 5 равен 110, общая длина кода равна 8 битам. Первые
три бита нам уже известны это 110, (3-битовый код). Однако суммарная длина
полностью закодированного коэффициента категории 5 составит 8 бит - оставшиеся
5 бит должны быть взяты из младших разрядов (MP) значения разности. В общем
случае, для конкретной категории DC разностей (скажем, категории К),
дополнительно требуется К битов, которые вычисляются или как К младших
разрядов положительной разности, или как К младших разрядов отрицательной
разности минус 1. Т.е. для положительного коэффициента берется двоичное
представление длДопКода=дл - длина основного кода, где дл значение колонки
длина для категории из табл.2 приложения 1. Для нашего числа она равна:8-3=5.
Сам дополнительный код будет выглядеть: 182=10010. Полностью код выглядит как
11010010.
Пример 2. DC=-5
С помощью таблицы 1, приложения 1 находим категорию (3), табл.2 основной
код(00) и длину =5, Длина дополнительного кода равна 5 - 2 =3 . Дополнительный
код для отрицательного числа находится по формуле:
Допкод=МЗД-К,
где МЗД – максимальное положительное значение диапазона, в которое входит
искомое число; К – модуль искомого значения;
Допкод=7-5=2
22==10, но длина дополнительного кода равна 3, следовательно
число необходимо дополнить числом 0 в старший разряд: 22=010.
Полностью код выглядит как 00010.
Пример 3 RLE(5,-3)
Для нахождения основного кода для коэффициентов AC используется код
полученный с помощью RLE. Для RLE равного (A,B) основной код находится
следующим образом: Сначала находится диапазон для числа «B» в таблице 1,
приложения 1и соответствующая ему категория AC (С). Далее с помощью таблицы
3, приложения 1 находится основной код. В колонке «Длина серии/категория»
находим соответствие нашему значению (A,C), где А- длина серии нулей(5) перед
значением -3; С – категория (2) для АС коэффициента (-3) из таблицы 1. В таблице
3. для (5, 2) значение основного кода равна 1111111001. Основной код для АС
коэффициентов находится также как для DC коэффициентов.
Процесс восстановления изображения в этом алгоритме полностью
симметричен. Метод позволяет сжимать некоторые изображения в 10-15 раз без
серьезных потерь.
6
Преобразование
из RGB В YCbCr
Разбиение
изображения
на блоки 8х8
Дискретное
Косинусное
Преобразование
Квантование
с
округлением
Зигзаг
сканирование
RLE
Кодирование
Хаффмана
Рис. 2. Конвейер операций, используемый в алгоритме JPEG.
Существенными положительными сторонами алгоритма является возможность
изменения степень сжатия (зависящего от коэффициента квантования m) и то, что
выходное цветное изображение может иметь 24 бита на точку. Отрицательными
сторонами является распад изображение на отдельные квадраты (8x8) при
повышении степени сжатия. Это связано с тем, что происходят большие потери в
низких частотах при квантовании, и восстановить исходные данные становится
невозможно. А также проявление эффекта Гиббса – возникновение ореолов по
границам резких переходов цветов.
1.2 Описание лабораторного макета
Лабораторный макет представляет собой программную реализацию эмулятора
компрессии/декомпрессии изображений, основанного на стандарте сжатия
изображений JPEG. Эмулятор разработан в среде MATLAB и включает в себя:
графический интерфейс, перевод цветового пространства, разбиение на блоки 8х8,
дискретное косинусное преобразование, квантование с округлением, RLE,
кодирование Хаффмана, деквантование, обратное дискретное косинусное
преобразование.
Рис.3. Интерфейс программы в режиме выполнения.
7
Для начала работы необходимо:
- Выбрать и загрузить BMP-файл для обработки (кнопка «Загрузить изображение»).
После загрузки BMP - файла входное не сжатое изображение загружается в память и
отбражается в левом верхнем окне программы, а так же активируются кнопка
открытия изображения в отдельном окне. Для преобразования цветного
изображения в ч/б нужно установить флаг ч/б перед загрузкой изображения;
Рис. 4. Клавиша «Загрузить изображение»
- Установить параметры кодирования в панели «параметры кодирования»: качество
кодирования – от минимального m=100, «ползунок» справа, до максимального m=1,
«ползунок» слева.
Рис. 5. Элемент управления качеством кодирования
Или поставив флаг «не квантовать» и выбрать в активизированном меню
«Параметры гармоник» выделение одной из восьми гармоник для визуальной
оценки вклада любой из гармоник в изображение. Выделение гармоник выполнено
только для ч/б изображений. Для преобразования можно воспользоваться флагом
ч/б.
Рис. 6. Панель выбора гармоник
8
- С помощью кнопки «Матрица квантования Q» можно посмотреть Таблицу
матрицы квантования, сформированную по формуле
Q(i, j )  1  (i  j )  m,
где i-номер столбца, j-номер строки, а m-коэффициент квантования. По стандарту
для JPEG элемент Q(0,0), независимо от величины коэффициента квантования
всегда равен 16. Матрица квантования формируется после нажатия на кнопку
«Кодировать».
Рис. 7. Сформированная матрица квантования
- Выполнить кодирование и декодирование изображения (кнопка «Кодировать»). По
нажатию на кнопку «Кодировать» начинается процесс обработки загруженного в
память изображения, под правым верхним окном, в которое выводится
восстановленное изображение, появляется поясняющая надпись «Выполняется
кодирование…». После выполнения кодирования, на месте этой надписи появится
«Кодирование завершено» и в правом верхнем окне будет выведено
восстановленное изображение, а также будет рассчитан размер закодированного
изображения и коэффициент компрессии изображения в панели «параметры
кодирования»;
- Процесс выбора блока изображения, для последующего анализа, очень прост. Для
выбора блока необходимо подвести курсор мыши к левому верхнему окну
«Исходное изображение» и нажав в любом месте в окне выбрать блок. Так же,
можно «зафиксировать» выбранный блок, с помощью флага «Зафиксировать блок»,
находящийся в поле «Обработка блока изображения», для оценки изменения блока
при различных параметрах кодирования. Поле «Обработка блока изображения»
состоит из двух окон, в которые выводятся исходный и декодиро-ванный
(восстановленный) блоки изображения.
9
Рис. 8. Флаг «Зафиксировать блок»
- Кнопки «Блок до ДКП» для Y, Cb и Cr открывают новые окна, в которых в виде
матриц 8х8 отображаются коэффициенты в пространственной области (входного
несжатого) изображения для выбранного блока.
Рис. 9. Блок до ДКП
- Кнопки «Блок после ДКП» для Y, Cb и Cr открывают новые окна, в которых в виде
матриц 8х8 отображаются коэффициенты в частотной области (ДКП коэффициенты)
изображения для выбранного блока
Рис. 10. Блок после ДКП
10
- Кнопки «Блок после квантования» для Y, Cb и Cr открывают новые окна, в
которых в виде матриц 8х8 отображаются квантованные с округлением ДКП
коэффициенты изображения для выбранного блока
Рис. 11. Блок после ДКП и квантования
- Кнопки «Блок изометрическое представление» для Y, Cb и Cr открывают новые
окна, в которых в изометрическом представлении отображаются исходный блок (до
ДКП), блок после ДКП, после квантования и декодированный (восстановленный)
блоки. Необходимо отметить, что, коэффициент (1,1) матрицы для блока после
ДКП был уменьшен в 5 раз, для лучшей визуализации.
Рис. 12. Изометрическое представление выбранного блока на различных этапах
кодирования
11
1.3 Методика проведения эксперимента
При проведении данной работы используется ПК с установленным эмулятором
JPEG.
Главное содержание лабораторной работы состоит в следующем:
а) во-первых, изучение интерфейса программы, знакомство с назначением основных
и вспомогательных органов управления и настроек кодера;
б) во-вторых, проведение экспериментов с целью оценки влияния на качество и
степень компрессии основных параметров алгоритма кодирования.
1.4 Порядок выполнения работы
Перед началом работы изучить теорию алгоритма JPEG и кодирования Хаффмана.
1.
Загрузить файл из банка изображений имя файла: «вариант»_1.bmp (RGB).
Установив параметр кодирования m провести кодирование. Выбрать блок
изображения, и открывая поочередно окна значений блока до ДКП, после ДКП и
после квантования с округлением проанализировать происходящие изменения с
блоком в процессе кодирования. Ознакомится с изометрией блока.
2.
Загрузить файл «вариант»_2.bmp (grayscale). Повторить пункт 1 для чернобелого изображения.
3.
Установить флаг «не квантовать» в блоке «Параметры кодирования». В блоке
«Параметры гармоник» выбирая гармоники и производя кодирование оценить вклад
каждой гармоники в восстановленное изображение. Отобразить выводы в отчете.
4.
Изменяя параметр кодирования m от 1 до 100 построить графики зависимости
степени сжатия от параметра кодирования m для обоих изображений (не менее 12
точек в каждом графике). В отчете представить таблицы значений и
полученные графики с объяснением поведений кривых. Объяснить различие
полученных графиков для цветного и черно-белого изображения.
Таблица 1. Зависимость степени сжатия от m для цветного и ч/б изображения
Цветное
Чернобелое
Параметр m
Степень сжатия
Параметр m
Степень сжатия
5.
Загрузить файл «вариант»_1.bmp, меняя параметр кодирования m найти
максимальный коэффициент компрессии при минимальном влиянии на качество
изображения (оценивается визуально). В выводе указать степень сжатия и значение
m.
12
6.
Кодировать изображение с коэффициентом m=1. Установить флаг
«Зафиксировать блок» в блоке «Обработка блока изображения». Изменяя m
проанализировать изменения коэффициентов блока при разном параметре
кодирования m. Для наглядности использовать изометрические представления блока
для компонент сигнала. Выводы занести в отчет.
7.
Провести вручную зигзаг сканирование, RLE кодирование и кодирование
Хаффмана, для произвольно выбранного блока используя таблицы в приложении 1.
Проверив его с помощью выданного пароля, для двух-трёх разных m.
8.
Загрузить файл (имя файла и параметр кодирования m сообщается студенту
преподавателем). Провести кодирование. Для блока(1,1), используя матрицу блока
для яркостной компоненты, вручную сделать зигзаг сканирование, RLE
преобразование и кодирование Хаффмана. В отчет занести в виде матрицы значения
коэффициентов блока после квантования, полученный RLE и код Хаффмана.
1.5 Содержание отчета
1. Методика проведения эксперимента с краткими пояснениями.
2. Оценка вклада гармоник в восстановленное изображение.
3. Таблица 1 и зависимость степени сжатия от m для цветного и ч/б изображения на
одном графике.
4. Выводы по пунктам 5 и 6.
5. Результат по пункту 7.
1.6 Контрольные вопросы
1. Почему компрессия цветных изображений выше компрессии черно-белых
изображений. За счет чего происходит сжатие изображений?
2. Нарисовать структурную схему кодера стандарта JPEG. Рассказать по пунктам.
3. Почему при выделении нулевой гармоники сжатие изображения выше, чем при
максимальном m?
4. Почему при m=100 в изображении возникают блоки?
5. Как рассчитываются DC и AC коэффициенты при кодировании Хаффмана?
Литература
1. Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде
MATLAB. – М.: Техносфера, 2006. – 616 с. – ISBN 5-94836-092-X.
2. Сэломон Д. Сжатие данных, изображений и звука: Пер. с англ. В.В. Чепыжова. –
М.: Техносфера, 2004. – 368 с. – ISBN 5-94836-027-X.
13
3. Ян Ричардсон
Видеокодирование. H.264 и MPEG-4 – стандарты нового
поколения. – М.: Техносфера, 2005. – 368 с. – ISBN 5-94836-041-5
4. Дьяконов В. П. MATLAB 7.*/R2006/R2007: Самоучитель. – М.: ДМК Пресс, 2008.
– 768 с. - ISBN 978-5-94074-424-5
5. Гонсалес Р., Вудс Р. Цифровая обработка изображений. – М.: Техносфера, 2005. –
1072 с. – ISBN 5-94836-028-8
14
ПРИЛОЖЕНИЕ 1
Таблица 1. Категории кодирования JPEG коэффициентов.
Таблица 2. Стандартные JPEG коды для DC коэффициентов (яркость).
15
Таблица 3. Стандартные JPEG коды для AC коэффициентов (яркость).
16
Таблица 3(продолжение). Стандартные JPEG коды для AC коэффициентов
(яркость).
Related documents
Download