Эффективное кодирование и цифровое представление изображений. Практикум № 37
.pdfТаким образом, служебная информация - это список символов кодируемого алфавита плюс список длин кодов. Однако на декодер можно передавать не сам список длин, а список счетчиков длин, т.е. список количества появлений каждой длины: от длины равной 1 до максимальной длины. Построим список счетчиков длин для нашего примера (табл. 3):
|
|
|
|
Таблица 3 |
|
Пример построения списка счетчика длин |
|
|
|||
|
|
|
|
|
|
Код длины |
|
|
|
|
|
1 |
|
Список счетчиков длин |
|
||
3 |
|
Длина |
|
Счетчик |
|
3 |
|
1 |
|
1 |
|
4 |
|
2 |
|
0 |
|
4 |
|
3 |
|
2 |
|
4 |
|
4 |
|
3 |
|
5 |
|
5 |
|
2 |
|
5 |
|
|
|
|
|
Вместо частот появления символов можно использовать вероятности появления. Если заданы только частоты появления, то, зная суммарное количество символов в кодируемой последовательности, можно перейти к вероятностям, разделив частоту появления каждого символа на общее количество.
Приведенный алгоритм, так же как и классический алгоритм Хаффмана, позволяет построить совокупность кодовых комбинаций различной длины, обладающих свойством преффиксности, которое гласит: никакая кодовая комбинация не может являться началом другой более длинной кодовой комбинации.
Если говорить о кодировании алгоритмом Хаффмана применительно к черно-белым изображениям, то возникает вопрос, каким образом выбирать алфавит источника-изображения. Так как пиксель может принимать только два значения, то при выборе в качестве элемента алфавита пикселя, алгоритм Хаффмана построит две кодовые комбинации: «0» и «1». Как несложно заметить, никакого сжатия в этом случае не будет. Для преодоления этой сложности будем объединять соседние пиксели в квадратные блоки так, чтобы соседние блоки соприкасались сторонами и вся плоскость изображения была ими покрыта. Для определённости, в данной лабораторной работе будем использовать квадратные блоки со стороной в 3 пикселя. Тогда, в качестве символа алфавита источника будет выступать уже блок. Максимальное количество различных символов в таком алфавите будет равно 512 (каждый блок со стороной 3 пикселя содержит 9 пикселей внутри, а число различных комбинаций, притом, что каждый пиксель принимает два значения, это 2 в степени 9), такой прием называется укрупнением алфавита.
11
Оценка эффективности кодирования
Основная теорема о кодировании сообщений заданного алфавита гласит, что такие сообщения всегда можно закодировать префиксными последовательностями так, что среднее значение длины кодовой комбинации будет удовлетворять неравенству: H nср H 1. Таким образом, Н битов
информации нельзя представить в виде набора нулей и единиц длиной менее Н знаков, но можно сколь угодно близко подойти к этой границе.
Для оценки эффективности неравномерных кодов используется коэффициент
|
|
N |
|
относительной эффективности |
КОЭ Н / nср , где |
Н pi log 2 pi |
это энтропия |
|
|
i 1 |
|
источника с алфавитом, имеющим объем N знаков, равная среднему количеству информации, приходящемуся на один знак на выходе источника, и измеряющаяся в битах. Здесь pi - вероятность появления i-го символа из N
|
N |
|
различных символов алфавита источника, а |
nср ni pi |
- средняя длина |
|
i 1 |
|
кодовой комбинации. Отношение среднего числа двоичных символов, приходящихся на один знак алфавита при кодировании заданного источника неравномерным кодом, к длине кодовой комбинации в случае кодирования источника равномерным кодом, называется коэффициентом сжатия КСЖ n ср / n . Однако коды Хаффмана для своего декодирования используют
некоторую служебную информацию, поэтому, рассчитывая коэффициент сжатия, необходимо учитывать это. Следующая формула иллюстрирует сказанное: КСЖ (Vсл Vпол )
V , где Vсл - объем служебной информации; Vпол - объем полезной информации; V – объем исходных данных.
В качестве равномерного кода для цифрового представления текстовой информации используются коды ASCII. Таблицы кодов символов ASCII содержат десятичные и шестнадцатеричные представления расширенного
ASCII (American Standards Committee for Information Interchange) набора символов. Расширенный набор ASCII символов включает в себя набор символов ASCII и 128 других символов, для представления графики и рисования линий, часто называемых набором символов IBM. Кроме того, существуют расширения кодов ASCII для представления символов национальных алфавитов, называемые кодовыми страницами или кодировками. Для русского языка существуют две кодовые страницы с номерами 866 (DOS кодировка) и 1251 (Windows кодировка). Все названные таблицы приведены в приложении. Для представления каждого символа ASCII кодом необходимо 8 бит, т.е. длина кодовой комбинации в этом случае равна восьми.
Для вычисления объема занимаемого служебной информацией при кодировании черно-белых изображений алгоритмом Хаффмана с использованием длин серий будем исходить из следующих соображений.
Кодирование изображения, представленного совокупностью блоков размера w * h, осуществляется сопоставлением каждому типу блока кодовой
12
комбинации кода Хаффмана. Код Хаффмана построен для распределения вероятностей типов блоков, встречающихся в кодируемом изображении. На рис. 4 схематично показана структура файла для хранения изображения, сжатого этим методом:
0 |
0 |
1 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
6 |
7 |
7 |
8 |
|
8 |
|
|
h |
|
f |
i |
|
|
Ширина изображения |
|
|
Высота изображения |
|
Ширна блока |
|
Высота блока |
|
||||
|
|
|
Размер списка блоков |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Список блоков |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0000000 |
|
|
Размер списка счетчиков длин |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
Список счетчиков длин (каждая позиция занимает 2 байта) |
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
Полезная нагрузка |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0000000 |
|
|
|
|
|
Рис. 4. |
Структура заголовка файла HFI |
|
|
|
|
|
|
||||||||
В верхней части рисунка указаны номера байтов начиная с 0. Для каждого байта номер поставлен в его начале и в конце. Первые три байта используются для кодирования формата файла (каждый байт содержит символ в ASCII коде), в данном случае это символы hfi. Следующие два поля содержат ширину и высоту кодируемого изображения, каждое поле занимает два байта, т.о. максимальная высота\ширина равняется 216 1 65535 пикселей. Затем два поля по одному байту для ширины и высоты блока (т.е. максимальное значение этих полей 255). Для декодирования изображения необходимо знать соответствие типа блока и кода Хаффмана, для этого предназначены поля список блоков и список счетчиков длин.
Т.к. указанные поля имеют переменную величину, то необходимо сохранять размер для каждого из них – поля размер списка блоков и размер списка счетчиков длин соответственно. Кроме того, размер блоков в списке может быть не кратен восьми, поэтому может присутствовать дополнительное поле в конце списка блоков для выравнивания на границу байта. Максимальный размер этого поля семь бит. Полезная нагрузка также выравнивается на границу байта.
Итак, служебная информация будет рассчитываться по следующей формуле:
V |
15 8 C 16 N w h |
, байт. |
||
|
|
|
||
сл |
|
|
||
|
8 |
|
|
|
|
|
|||
Здесь C - длина списка счетчиков, N - мощность алфавита источника, скобки обозначают округление до целого в большую сторону после деления.
Объем полезной нагрузки будет вычисляться как:
Vпол |
n ср М |
|||
|
|
, байт. |
||
8 |
||||
|
|
|
||
Здесь n ср - средняя длина кодовой комбинации, а М - суммарное количество появлений всех элементов алфавита источника на его выходе.
13
Лабораторное задание
1.На вкладке «Домашнее задание» введите свою фамилию, имя и отчество, записанные с заглавной буквы, через пробел и на русском языке, в верхнее поле. Во второе поле сверху введите список счетчиков длин кодов, разделяя числа запятыми. Поставьте переключатель в положение «ПРОВЕРИТЬ домашнее задание» и нажмите кнопку «Выполнить выбранное действие». Если домашнее задание выполнено правильно, то в низу экрана появится соответствующая надпись.
Выполнение лабораторного задания возможно только в случае правильно выполненного домашнего задания. Если перевести переключатель в положение «ПРОПУСТИТЬ домашнее задание» и затем нажать кнопку «Выполнить выбранное действие», то будет доступен тестовый режим. В тестовом режиме есть возможность использовать для измерений любое полутоновое изображение, однако тестовый набор изображений для выполнения лабораторного задания будет недоступен.
2.Перейдите на вторую вкладку «Лабораторное задание». В области «Выбор изображения» используйте поле с выпадающим списком для выбора источника информации. Вам доступно три тестовых полутоновых изображения: «Лена», «Барбара» и «Золотой холм» (эти изображения используются инженерами и исследователями по всему миру для тестирования алгоритмов сжатия). После выбора одного из изображений оно будет разложено на восемь черно-белых плоскостей. Из-за ограниченного размера экрана и соображений удобства, одновременно будет видна только одна плоскость. Для определения номера видимой плоскости и переключения между плоскостями нужно использовать группу элементов управления «Выбор плоскости». Сразу после выбора источника информации или после выбора другой плоскости в области «Анализ плоскости» будет показана соответствующая плоскость, её представление в виде совокупности блоков размером 3х3 (таблица чуть ниже). В текстовое поле под таблицей будут выведены: количество различных типов блоков в плоскости N , средняя длинна кода Хаффмана nср , суммарное количество блоков в плоскости М , длина списка счетчиков C , исходный размер плоскости и энтропия плоскости H .
14
3. Запишите выведенные значения для выбранной плоскости в табл. 4.
Таблица 4
Название изображения
№ плоскости |
nср |
M |
N |
C |
H |
Vпол |
Vсл |
Ксж |
Коэ |
|
|||||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.Для записанных величин рассчитайте объем служебной Vсл информации и полезной нагрузки Vпол .
5.Рассчитайте коэффициенты сжатия и относительной эффективности.
6.Для второй плоскости каждого изображения запишите коды Хаффмана для первых пяти блоков, для этого используйте алгоритм на рис. 3. Соответствующие позиции отмечены красным цветом в таблице в лабораторной работе. Есть возможность проверить правильность выполнения этого задания, заполнив пустые поля и нажав на кнопку
, находящуюся справа от таблицы. В случае успеха красные поля окрасятся в зеленый цвет.
7.Выберите следующую плоскость и переходите к пункту 3, если все плоскости исследованы, выберите следующее изображение и переходите к пункту 3.
8.Постройте на одном графике зависимости Ксж от номера плоскости для всех изображений, а на другом зависимости Н от номера плоскости для всех изображений. Сделайте выводы по построенным графикам.
9.Рассчитайте коэффициенты сжатия для трех тестовых полутоновых изображений. Пронумеруйте полутоновые изображения в соответствии с полученной степенью сжатия, напишите выводы.
15
Контрольные вопросы
1.Принцип получения длин кодовых комбинаций для набора элементов алфавита источника и соответствующих вероятностей появления.
2.Алгоритм преобразования длин кодовых комбинаций в кодовые комбинации.
3.Процедура построения списка счетчиков длин из списка длин и обратная ей процедура.
4.Принцип декодирования последовательности префиксного кода.
5.Количественная оценка эффективности неравномерного кодирования.
6.Представление служебной информации для последующего хранения или передачи.
7.Отличия векторных цифровых изображений от растровых цифровых изображений.
8.Понятие глубины цветопередачи цифрового изображения.
9.Каким образом можно улучшить коэффициенты сжатия для предлагаемого в настоящей лабораторной работе алгоритма сжатия и способа хранения сжатой информации, если допустить сжатие с
потерями и если не допускать сжатие с потерями? 10.Что такое укрупнение алфавита?
16
Содержание отчета
Отчет выполняется в отдельной тетради (использование листов А4 не допускается), аккуратным почерком, с использованием линейки и карандаша (допускается использование распечаток графиков, таблиц и т.д., с одним условием, что всё должно быть выполнено аккуратно) и должен содержать:
1.Титульный лист с названием и номером лабораторной работы, номером группы студента, фамилией именем и отчеством студента, фамилией именем и отчеством преподавателя.
2.Цель лабораторной работы.
3.Результаты выполнения домашнего задания (по этим записям вы должны уметь объяснить, как получены те или иные величины, как построены кодовые комбинации или списки).
4.Формулы и результаты расчетов для величин пунктов 3, 4 и 5 лабораторного задания. А также три полностью заполненные таблицы (табл. 4) для тестовых полутоновых изображений.
5.Пять первых кодовых комбинаций для второй плоскости каждого тестового изображения.
6.Два графика: для зависимостей коэффициента сжатия от номера плоскости и для зависимостей энтропии от номера плоскости.
7.Расчет коэффициентов сжатия для тестовых полутоновых изображений.
8.Выводы для пунктов 8 и 9 лабораторного задания.
17
Список литературы
1.Сэломон Д. Сжатие данных, изображений и звука. - М.: Техносфера,
2004.
2.Панин В.В. Основы теории информации: Учебное пособие для вузов. - М.: БИНОМ. Лаборатория знаний, 2007.
3.Information technology – Digital compression and coding оf continuoustone still images – Requirements and guidelines // ITU-T Recommendation T.81, 1993.
4.JPEG 2000 image coding system \\ ITU-T Recommendation T.800, 2000.
18
Практикум № 37
Эффективное кодирование и цифровое представление изображений
Подписано в печать 23.06.2014г. Формат 60х90 1/16. Объём 1,2 усл.п.л. Тираж 50 экз. Изд. № 89. Заказ 89.
ООО «ТРП». Москва, ул. Правды, д. 24, стр. 5.
19
