Алгоритмы энтропийного кодирования при сжатии спектра телевизионного сигнала

Алгоритмы энтропийного кодирования при сжатии спектра телевизионного сигнала

Видеоинформационный сигнал в системах цифрового телевидения представляет собой упорядоченную совокупность изображений и служебной информации. Составляющие спектра сигнала телевизионного изображения подвергаются обязательной процедуре энтропийного кодирования, направленной на увеличение степени результирующего сжатия. Это обеспечивает передачу всего объема информации, представляющей видеоинформационный сигнал нескольких телевизионных программ, в стандартной полосе частот телевизионного канала связи. Соответственно алгоритм энтропийного кодирования, применяемый для сжатия изображений, и результат его работы влияют на скорость и производительность работы системы передачи в целом, а также — на качество и достоверность восстановления исходного сигнала на приемной стороне канала связи. Рассматриваются современные и широко применяемые в системах цифрового телевидения энтропийные методы сжатия составляющих спектра сигнала изображения без потерь. Среди таких методов сжатия выделены статистические, адаптивные и динамические алгоритмы сжатия. Раскрывается понятие энтропии и её связь с количеством поступающей информации. Рассматриваются различные способы формирования кода при сжатии спектра видеоинформации, конкретизированы преимущества и недостатки отдельных вариан-Кпючввые спою энцрс^^ое кодирование, Тов кодирования. В качестве основного алгоритма выбран и подробно рассмотрен метод ко-

телевиыошй сигтл, алюритм сжатия дирования на основе алгоритма сжатия Хаффмана, который используется в соответствующих

Хоффмана. „

элементах оборудования современных систем цифрового телевидения.

Попов А.В.,

ФГОБУВПО МТУСИ, Аспирант кафедры ТВ и ЗВ, 6649910@gmail.com

Энтропия определяется количеством информации, которое содержится в символе а имеющего вероятность Р.

При этом информация символа, имеющего вероятность Р, определятся формулой:

1

Под символом здесь подразумевается один из отличающихся друг от друга элементов, полный набор которых, образует сообщение, которое формируется некоторым источником сообщений.

Общая совокупность символов, доступных источнику при формировании сообщений - алфавит А={а|, а2> ••• > Зм}. Вероятность появления в сообщении того или иного символа из совокупности соответственно равна (Р|, Р2, ... , Рц). Имея такие данные, можно определить энтропию этого алфавита в соответствии с формулой:

N

Я = £-/>в2

/

Энтропия сообщения, которое образовано из таких символов, будет определяться аналогичным образом. Соответственно для данного случая будет верно сказать, что энтропия сообщения - это мера количества информации содержащейся в этом сообщении.

Своего максимального значения энтропия будет достигать в случае равновероятностного появления всех символов, и приобретать меньшие значения при резко отличающихся вероятностях появления символов. Для этого в качестве примера можно рассмотреть энтропию для сообщения, состоящего из двух символов, т.е. двоичного. К тому же, источник таких сообщений имеет особое значение, т.к. с его помощью можно описать процесс передачи данных. Итак, на рисунке 1 видно, что максимум энтропии приходится на случай, когда вероятности обоих символов равны 0,5 и минимум для случая, когда один из символов не появится совсем, а другой будет появляться в 100% случаях.

Рис. 1. Энтропия сообщения состоящего из двух символов

С практической точки зрения это говорит о том, что в случае максимального значения энтропии избыточность сообщения равна 0, при этом сжать это сообщение, более не возможно. В случае резко отличающихся вероятностях сообщений, значение энтропии уменьшается, в сообщении появляется избыточность и соответственно возможность его сжатия. Таким образом, пользуясь энтропией, можно определить теоретический предел, до которого возможно сжать сообщение и к которому следует стремиться подбором наиболее оптимального кодера.

Возьмем алфавит символов A=(alt а2, а3, а4, а5, а6), вероятности которых соответственно равны 0,3; 0,2; 0,2; 0,1; 0,1; 0,1. Вероятность того, что источник сообщений сформирует сообщение вида Я\ ai а? а2 аз аз а» а5 а* будет равна Р = 0,33 х 0,22 х 0,22 х 0,1 х 0,1 х 0,1 = 1,44 х ю 1. Информация, которую содержит данное сообщение, соответственно равна I(P) = -log2 1,44 х 10'7 = 22,73. Число 22,73 является наименьшим, в среднем, числом информации, которая может быть представлена битами, требуемой для кодирования этого сообщения. Кодер, который достигает такого сжатия, называется энтропийным кодером.

Основным механизмом в работе энтропийного кодера является кодирование алфавита символов переменным числом бит, еще известное как VLC (variable length code) кодирование. Количество бит, которое будет приходиться на тот или иной символ напрямую зависит от вероятности появления этого символа. Соответственно, чем ближе вероятность появления символа к единице, тем меньшим количеством бит будет кодироваться этот символ. Такой способ кодирования обеспечивает достаточно высокую степень устранения избыточности сообщения и как следствие высокий уровень сжатия при кодировании без потерь. Однако обязательным требованием к кодировочному коду символов является пре-фиксность этого кода. Данные коды, не смотря на переменность длины, обладают свойством следовать подряд без разделительного знака, и быть при этом однозначно декодированными на исходные символы.

На текущий момент существует несколько алгоритмов кодирования, обеспечивающих формирование кода, отвечающего требованиям, описанным в предыдущем абзаце. В зависимости от способа формирования кода, такие алгоритмы кодирования принято разделять на три группы:

1. Статические алгоритмы сжатия;

2. Адаптивные алгоритмы сжатия;

3. Динамические алгоритмы сжатия.

К статическим алгоритмам сжатия относят код Хаффмана. Идея этого кода заключается в том, что часто используемые символы в сообщении передаются коротким кодом, реже используемые символы - длинным. Процесс кодирования по Хаффману является одним из самых простых и понятных. Вначале символы алфавита располагают в порядке убывания вероятностей их появления. Далее два символа, вероятности которых наименьшие, объединяют в один новый составной символ, при этом вероятность составного символа будет равна сумме вероятностей символов, из которых он составлен. Затем символы снова располагают в порядке описанном в начале. Эти два процесса продолжаются до момента, когда все символы будут объединены. На завершающей стадии последнему символу, вошедшему в состав составного символа, присваивают значение 0, а остальной части - 1. Процесс присвоения продолжается до тех пор, пока всем символам не будут присвоены значения. Для наглядности процесс формирования изображают в виде дерева

или в нашем случае схемой. На рисунке 2 представлена схема кодирования для сообщения а: Э| а, а2 а^ аз аз а4 а5 а*.

Рис. 2. Схема кодирования кодом Хаффмана

После кодирования символам присваиваются префиксные коды различной длины. Пример присвоенных кодов для кодирования на рис. 2 приведен в табл. 1.

Таблица 1

Кодирование кодом Хаффмана для рисунка 2

Символ Код

а-> 10

аз 010

aj 011

35 110

Зб 111

С момента открытия Хаффманом своего кодирования прошло немало времени, но оно все еще остается достаточно популярным в кодировании текста, изображений, аудио- и видеоинформации.

Не смотря на простоту реализации, испытанность временем и популярность, кодирование Хаффмана имеет свои недостатки. Основным недостатком кодирования Хаффмана является то, что максимальная эффективность сжатия достигается в случае отражения значений вероятности символов величиной 2 ", где п — целое число.

В противном случае действительная степень сжатия отличается от эффективного значения. Снижение эффективности обусловлено появлением избыточность в коде символов, появляющаяся при использовании целого числа бит.

Кроме этого, для каналов передачи данных играют роль и другие недостатки этого кодирования:

- неодинаковые длины кодов, что приводит к неравномерным задержкам декодирования;

- за счет снижения избыточности при кодировании, сжатый поток становится более уязвимым к появлению в последовательности кода ошибок. Это приводит к тому, что один неверно декодированный бит в последовательности приводит к неверному декодированию последующих символов закодированной последовательности.

У

- при кодировании по Хаффману предполагается наличие известных вероятностей появления символов, но в реальности эти вероятности не доступны. Это приводит к тому, что при реализации кодека необходимо заставлять кодек сжимать сообщение в два этапа - один для набора статистики и составления кодовой таблицы, второй — для непосредственного сжатия. Кроме того, эта же статистика должна быть известна декодеру, что подразумевает её передачу вместе с закодированным сообщением.

Примером адаптивного алгоритма служит модифицированное кодирование Хаффмана. Отличительной чертой этого кодирования от классического статического кода Хаффмана является то, что нет необходимости знать вероятности символов заранее, кодирование осуществляется в процессе поступления данных.

Дерево, при этом, адаптивно подстраивается к получающейся последовательности. Такой подход позволяет исключить из работы кодека этап набора вероятностной статистики и дальнейшей ее передачи на декодер. В тоже время по сравнению с классическим кодированием по Хаффману, адаптивное кодирование Хаффмана выполнит сжатие менее эффективно, по той причине, что в первом вероятности символов известны заранее перед кодированием, что дает возможность сделать длины кодов более близкими к оптимуму, а в последнем они становятся известными постепенно в процессе работы кодера.

К динамическим алгоритмам сжатия следует отнести арифметическое кодирование. Арифметическое кодирование является хорошей альтернативой алгоритмам Хаффмана. Кроме того на эффективность сжатия при арифметическом кодировании не влияет зависимость вероятностей символов от величины 2'". Идея арифметического кодирования заключается в присвоении кода не отдельным символам образующих сообщение, а сообщению в целом.

Объяснить идею кодирования проще на следующем примере. Имеется сообщение представленное набором символов а^заза^^азаза^!. Вероятности появления этих символов равны а! = 0,5; а2 = 0,1; аз = 0,2; а4 = 0,1; а5 = 0,1. В арифметическом кодировании символы выражаются интервалами в диапазоне чисел [0; 1). Диапазон каждого символа определен в соответствии с вероятностями появления этих символов. Для нашего сообщения символы будут выражены интервалами, представленными на рис. 3.

0 0,1 0,2 0,4 0,5 1

Рис. 3. Присвоенные символам интервалы в диапазоне чисел

Далее кодек последовательно считывает символы из сообщения и распределяет их вероятности в диапазоне чисел, который будет меняться в зависимости от вероятности предыдущего символа, т.е. если первым следует символ а| и соответственно его интервал [0,5; 1), следующий за ним символ а2 должен укладываться в интервале символа а, с соблюдением пропорций интервала присвоенного а2 на начальном этапе. Эта идея поясняется на рис. 4.

0 0,1 0,2 0,4 0,5

__________••***----0,7 0,75

Р—% ................1I............

0,7 ____0,71 0,72

РЦ I * I------------------

0,7175325 0,71753375 0,717535

I---------%----------1--------*-----------1

Рис. 4. Процесс арифметического кодирования сообщения

Для того чтобы вычислить новый интервал для последующего символа с учетом пропорций пользуются формулами 3 и 4.

у"=х +

х" = х +

где х - нижняя граница интервала предыдущего символа; у - верхняя граница интервала предыдущего символа; х’ - нижняя граница, присвоенного на начальном этапе, интервала текущего символа; у ’ - верхняя граница, присвоенного на начальном этапе, интервала текущего символа; х” - новая нижняя граница текущего символа в интервале предыдущего символа; у” - новая верхняя граница текущего символа в интервале предыдущего символа.

Завершающим этапом кодирования сообщения является последнее значение переменной х” конечного символа сообщения, при этом в записи этого значения исключается

целая часть, т.е. 0. В нашем случае число 0,71753375 будет представлено значением 71753375. Окончательным кодом арифметического кодирования, которое будет присвоено нашему сообщению, является любое число из диапазона [0,71753375; 0,717535). Для примера, с учетом исключения “0,” это может быть число 717534 как самое короткое.

На практике идея арифметического кодирования в чистом виде, описанная выше, не используется, вследствие того, что конечный результат такой арифметической операции может приобретать бесконечную точность, что не реализуемо на любой из современных аппаратных частях кодирующего устройства. Поэтому для реализации применяют модифицированный вариант этой идеи. Подход модифицированного варианта направлен на искусственное ограничение точности, где значения переменных х” и у” не превышают длины в 16 или 32 бита. В этом случае все переменные в формулах 3 и 4 представляются целыми числами, а также переменной у” присваивается вместо значения 1 значение 9999, которое соответствует бесконечной десятичной дроби

0,(9). Поэтому если вначале символ а] с интервалом [0; 1) имел границы с пределами

у”=х + (у-х)у’ = 0 + (1,0-0) 1,0=1 х” =х + (у-х) х' = 0 + (1,0 - 0) 0,5 = 0,5 то с учетом необходимости представление переменных целыми значениями, в модифицированном варианте границы символа а1 будут иметь пределы

у"=х + (у-х)у' = 0 + (10000-0) 1,0= 10000 х" = х + (у - х) х' = 0 + (10000 - 0) 0,5 = 5000

учитывая тот факт, что граница переменной у” является открытой - 10000 не включается, нам необходимо из этой переменной вычесть 1. Тогда переменная у” будет иметь значение

/’ = х + (у-х)/ = 0 + (10000-0) 1,0-1 =9999

Если в процессе вычисления кода самые левые цифры в переменных х” и у" совпадают, то переменные дг” и у” сдвигаются на одну позицию влево, затем в самую правую позицию переменной х” записывается 0, а в самую правую позицию переменной у ’' записывается 9.

Промежуточные результаты процесса кодирования модифицированным методом нашего примера сообщения представлены в табл. 2.

Таблица 2

Результаты расчеты числового кода для сообщения а^аза'Я^а.саза'а!

Коди- руемый символ сообще- ния Операция вычисления Результат операции вычисле- ния Присваиваемое кодирующее значение

ai у" = 0+( 10000-0)*0.5 5000

.г‘ = 0+(10000-0)»1.0-1 9999

£>2 у" = 5000+(10000-5000)*0.4 7000 7

х ’ • = 5000+( ! 0000-5000)*0.5 7499

а3 у"ш 0+(5000-0)*0.2 1000 1

* ” = 0+(5000-0)*0.4-1 1999

ai у" = 0+( 10000-0)*0.5 5000

х" = 0+(10000-0)* 1.0-1 9999

Э| у" = 5000+( 10000-5000)*0.5 7500

х" = 5000+( 10000-5000)* 1.0-1 9999

ai у" = 7500+( 10000-7500)*0.0 7500 7

.г ' ' = 7500+( 10000-7500)*0.1 -1 7749

а5 у"= 5000+(7500-5000)*0.1 5250 5

*'= 5000+(7500-5000)*0.2 5499

а3 у”= 2500+(5000-2500)*0.2 3000 3

* " = 2500+(5000-2500)*0.4-1 3499

Э| у"- 0+(5000-0)*0.5 2500

дс ” = 0+(5000-0)* 1.0-1 4999

Э| у ' ’ = 2500+(5000-2500)*0.5 3750 3750

л- ’ ' = 2500+(5000-2500)* 1.0-1 4999 4999

По завершению кодирования получается диапазон [0,717533750; 0,717535).

Таким образом, для того чтобы закодировать сообщение а^аза^^а.^аза^! нам потребуется число 717534, которое будет занимать 20 бит - 10101111001011011110. Такой объем очень близок к энтропии нашего сообщения, которая составляет 19,6 бит и соответственно показывает высокую эффективность арифметического кодирования.

Если сообщение а^аза^а^аза^, закодировать кодом Хаффмана, то на выходе также получим 20 битовую последовательность, но при кодировании более длинных последовательностей в сообщениях, арифметическое кодирование

окажется наиболее эффективным для применения. В силу этого, кодеры, реализующие арифметическое кодирование являются одними из лучших среди энропийных кодеров сжатия.

Однако в отличие от кодирования по Хаффману, арифметическое является более сложным для реализации из-за не полноценной универсальности идеи работы этого алгоритма. Речь идет о том, что для сообщений, символы которых имеют специфический набор вероятностей или последовательность следования, кодек должен работать несколько иначе и в случае, если в кодере не предусмотрены режимы для сжатия таких последовательностей, сообщение окажется сжато не эффективно. Кроме этого, арифметическое сжатие производит большее количество арифметических операций, чем Хаффмана, что подразумевает использование больших мощностей аппаратных ресурсов.

Таким образом, при выборе используемого метода кодирования следует учитывать уровень сложности вычислений и выигрыш в степени сжатия. В подавляющем большинстве наиболее эффективным методом энтропийного сжатия, с точки зрения соотношения сложность вычислений/степень сжатия является алгоритм Хаффмана, что дает ему преимущество над другими методами сжатия.

Рассмотрим его применение на примере формата сжатия JPEG, так как именно этот стандарт в настоящее время часто используется при устранении внугрикадровой избыточности в видеоинформационном сигнале.

В стандарте JPEG энтропийное сжатие является последнем этапом в сжатии изображения. Предшествующие этапы кодирования доступно описаны в литературе [1,2].

Как известно, изображение, при кодировании в JPEG, разделятся на блоки размером 8x8 пикселей, называемые также MCU (Минамально кодируемая единица) блоками, которые можно представить в виде квадратных матриц размером 8x8. После процедуры ДКП в такой матрице содержатся значения составляющих спектра MCU блока, который она представляет. Кодированию методом Хаффмана подвергается последовательно каждая из матриц с использованием одной таблицы кодов Хаффмана для всех MCU. В таблице кодов Хаффмана приведены соответствия между значениями составляющих спектра и описывающими их кодами переменной длины (набор бит). Кодек JPEG может использовать стандартные таблицы, приведенные в приложении (К) к спецификации стандарта JPEG [6], либо сформировать оригинальную таблицу, либо оптимизировать с учетом специфики кодируемого сигнала изображения стандартную. В первом случае исключается операция набора статистических данных по изображению и формирования на их основе дерева Хаффмана, что приводит к снижению вычислительной нагрузки и уменьшению времени, необходимого для кодирования изображения.

В остальных случаях, в ущерб количеству вычислений и скорости кодирования, достигается наиболее эффективное сжатие изображений, за счет того, что таблица кодов Хаффмана будет составлена с учетом особенностей ансамбля кодируемых сигналов изображений.

Для возможности последующего декодирования изображения, на приемной стороне канала связи, таблицы кодов Хаффмана введены в выходной сигнал цифрового потока кодера. При этом в передаваемой таблице записываются только количество бит кодов переменной длины и соответствующие этим длинам значения коэффициентов матриц, а не фактическое перечисление “битовая строка - значение

коэффициента”. Пример такой таблицы в декодированном, с использованием программы Л’ЕОвпоор, виде приведен на рис. 5.

Для оптимального кодирования значений кодов переменной длины, полученных в результате кодирования Хаффмана, в коде изображения чаще всего представляются таблицами в количестве до 4 штук, начало которых обозначено маркером DHT (FFC4). Количество используемых таблиц поясним следующим образом - начальным этапом кодирования изображения в JPEG является перевод цветового пространства RGB в YCrCb, поэтому одна таблица содержит матрицы значений коэффициентов яркостных составляющих Y, вторая - цветовых компонентов СгСЬ.

Кроме этого, при кодировании, коэффициенты каждой матрицы блока 8x8 подразделяются на АС и DC коэффициенты.

DC коэффиценты - это коэффициенты постоянных составляющих или коэффициенты низких частот. В каждой

матрице М размером 8x8, DC коэффициент представлен крайним верхним левым значением М(0,0).

Предварительно перед кодированием значение коэффициента М(0,0) меняется на величину: А = M(0,0)„-A/(0,0)„_i, где А/(0,0)„ - значение коэффициента А/(0,0) в текущем блоке; М0,0)„.| — значение коэффициента А/(0,0) в предыдущем по порядку блоке.

Этот шаг позволяет уменьшить общее число двоичных символов для представления всех коэффициентов М0,0) всех блоков изображения [1].

Остальные 63 коэффициента блока - АС коэффициенты, кодируются независимо от коэффициентов в других блоках. Таким образом, две таблицы для DC коэффициентов Y и СгСЬ составляющих, еще две для АС коэффициентов Y и СгСЬ составляющих.

На приемной стороне канала связи декодер считывает данные из этих таблиц и на их основе реконструирует деревья Хаффмана, далее составляет таблицу кодов Хаффмана, в которой отражено соответствие между кодами переменной длины и конкретными значениями коэффициентов ДКП.

В JPEG предусмотрено и использование арифметического сжатия вместо кодирования Хаффмана, но применяется оно крайне редко, по ряду причин, основные из которых перечислены выше, а другие связаны с отсутствием поддержки этого кодирования большинством декодеров и наличием патентных ограничений.

Литература

1. Смирнов A.B.. Пескин А.Е. Цифровое телевидение. От теории к практике. - М: Горячая линия-Телеком, 2003. - 352 с.

2. Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео.

- М.: ДИАЛОГ-МИФИ, 2003. - 384 с.

3. Дж. Миано. Форматы и алгоритмы сжатия изображений в действии. - М.: Триумф, 2003. - 336 с.

4. Д. Сэломон. Сжатие данных, изображений и звука. - М.: Техносфера, 2004. - 368 с.

5. М Вернер. Основы кодирования. - М.: Техносфера, 2006. -288 с.

6. ITU-CC1TT Recommendation Т.81 Information technology -Digital compression and coding of continuous-tone still images -Requirements and Guidelines. 1SO/1EC 10918-1, 1992.

Entropy coding algorithms for compressing television signal spectrum

Popov A.V., Moscow Technical University of Communications and informatics, Russia, 6649910@gmail.com

Abstract

Video information signal in digital television is an ordered set of images and service information. The components of the signal are mandatory television image entropy coding procedure aimed at increasing the degree of compression of the result . This ensures that only the amount of information representing the video information signal to a television program in a standard bandwidth television channel communications. Accordingly, the entropy encoding algorithm used for compression of images, and the result of the influence on the speed and performance of the transmission system as a whole, and - the quality and reliability of the recovery of the original signal at the receiving end of the link. In this regard, the article examines the current and w'dely used in digital television entropy methods of compression of the signal components of the image without loss. Among these methods are highlighted statistical compression , adaptive and dynamic compression algorithms . Besides reveals the concept of entropy and its relationship to the number of incoming information. Various methods of forming the despreading code with the v'deo and specified advantages and disadvantages of individual coding options . Thus as the basic algorithm and the selected encoding method discussed in detail based on the Huffman compression algorithm used in the respective equipment of modern digital television systems .

References

1. Smirnov AV., Peskin A.E. Digital TV From theory to practice. M: Hotline Telecom, 2003. 352 p.

2. Vatoiin D, Ratushnjack A., SmirnovM., Yukin V. Methods of data compression. Device archives , image and video compression. M.: Dialog-MIFI , 2003. 384 p .

3. J. Miano. Formats and image compression algorithms in action. M.: Triumph, 2003. 336 p .

4 . Salomon D. Data compression, image and sound. M.: Tekhnosfera, 2004. 368 ph .

5. M. Werner. Basics of coding. M.: Tekhnosfera 2006. 288 p.

6. ITU-CCITT Recommendation T.81 Information technology. Digital compression and coding of continuous-tone still images - Requirements and Guidelines. ISO/IEC 10918-1, 1992 .