При использовании этого подхода удается понизить цифровой объем передаваемых данных на 5-15% по сравнению с обычными методами компенсации движения, используемыми в системах кодирования MPEG.
Методика может быть использована как дополнительная обработка входных данных при кодировании информации любым кодеком, использующим блочный метод обработки изображений. Необходимые вычислительные затраты при использовании наряду с компенсацией движения составляют около 1% от их общего числа. При значительном росте производительности существующих микропроцессоров этими затратами можно пренебречь.
Кодирование подвижных изображений при использовании компенсации движения Приведем краткое описание алгоритма кодирования подвижных изображений с использованием компенсации движения. Метод кодирования состоит в следующем:
Х исходный кадр fi из видеопоследовательности разбивается на квадратные блоки размером 8*8 пикселей (иногда 16*16 пикселей);
Х далее, для каждого блока (xi,yi) изображения (кодируемого) находится блок (xi,yi-1) из предыдущего кадра видеопоследовательности fi-1, наименее 1 отличающийся от него (для этого лучше пользоваться метрикой, которая максимально учитывает свойства зрения, однако на практике, в целях снижения вычислительных затрат, используется метрика L2 или даже L1);
Х для найденного блока из предыдущего кадра определяется его вектор перемещения M(xi-xi-1, yi-yi-1) (см. также рисунок 1), таким образом для представления кодируемого блока необходимо лишь запомнить координаты вектора; более того вектора могут быть подвергнуты статистическому кодированию;
Х далеко не все блоки изображения могут быть закодированы с приемлемым качеством (например те, которые содержат принципиально новую информацию, а не подвижные объекты), поэтому если погрешность кодирования превышает определенную величину (как правило, наперед заданную), то данный блок изображения кодируется с использованием методов сжатия неподвижных изображений, например при помощи алгоритма JPEG [1].
Описанный метод можно развить в многоуровневую схему компенсации движения, если блоки, плохо подходящие для кодирования при помощи компенсации движения разбивать на блоки меньшего размера (скажем, на 4 блока размером 4*4 пикселей) и пытаться закодировать каждый из них с использованием той же методики.
Приведенный алгоритм позволяет существенно снизить объем передаваемой информации (в десятки раз) при кодировании подвижных изображений, так как при этом непосредственно передается лишь небольшая часть исходного кадра.
(xi,yi) M(xi-xi-1,yi-yi-1) (xi-1,yi-1) fi-1 fi Рисунок 1. Принцип компенсации движения Данный алгоритм (с некоторыми модификациями) успешно используется в большинстве систем передачи и хранения цифровых изображений (стандарты MPEG-1, MPEG-2, H.261, H.263) [2], [3], [4]. Однако он не учитывает некоторых особенностей, характерных для видеопоследовательностей, получаемых в системах видеоконференций. Целью данной работы является дальнейшее повышение степени сжатия информации (в таких системах этот фактор является наиболее критичным), при этом алгоритм, реализующий это, легко вписывается в любой из методов блочного кодирования подвижных изображений, т.е. не требуется существенных модификаций исходного алгоритма. Дополнительные вычислительные затраты при этом существенно меньше затрат на вычисление векторов перемещения блоков и составляют около 1%.
Построение кодека, использующего фоновое изображение Если обратить внимание на типичную видеопоследовательность для системы видеоконференц-связи (см. рисунок 2), то видно, что в изображении можно выделить подвижный объект (как правило, голову и плечи разговаривающего человека) и неподвижный фон или задний план изображения (стены, мебель и т.п.). Несмотря на то, что он обычно является расфокусированным, он может содержать в себе большой объем информации.
С одной стороны, для приведенного метода это не является существенным, ибо эта информация не представляется целиком от кадра к кадру, а кодируется как неподвижная часть изображения (в общем случае, вектор перемещения таких блоков изображения равен {0;0}).
t1 t2 tРисунок 2. Отдельные кадры из типичной видеопоследовательности (Salesman) Однако, если обратить внимание на блоки выделенные на рисунке 2, то можно видеть, что на первом кадре, соответствующем моменту времени t1, они являются неподвижной частью фона (фонового изображения), на втором кадре, соответствующем моменту времени t2, эти блоки являются частью подвижного (возможно, меняющегося со временем) объекта, на третьем кадре, соответствующем моменту времени t3, данные блоки снова являются частью неподвижного фона. Данная ситуация весьма вероятна, когда подвижный объект перемещается по неподвижному фону (необходимо заметить, что в системах видеоконференций камера как правило неподвижно закреплена). Приведенный выше алгоритм в данной ситуации будет вынужден передать часть фонового изображения, соответствующую выделенном блокам дважды: в начальный момент времени и в момент времени t3. Чтобы избежать этого, предлагается алгоритм для динамического построения фонового изображения (т.е., зависящего от конкретного сюжета) с целью повторного кодирования данных блоков как фоновых, т.е. требующих для этого лишь один-два бита информации (в зависимости от того сколькими типами блоков мы оперируем). Остается заметить, что нет необходимости в непосредственной передаче фонового изображения декодеру, ибо оно может быть также динамически построено на стороне, принимающей данные.
Модифицированный метод кодирования состоит в следующем:
В начальный момент времени заполнить фоновое изображение произвольным образом, например однородным серым фоном, для каждого блока размером 8*8 пикселей (16*16 пикселей) завести два параметра - приоритет блока в фоновом изображении, показывающий, в течении какого времени соответствующий блок на фоновом изображении был неподвижным и текущий приоритет кандидата на фоновый блок, оба параметра в начальный момент времени полагаются равными нулю. Далее, процесс кодирования изображения состоит в следующем:
Х исходный кадр из видеопоследовательности разбивается на квадратные блоки размером 8*8 пикселей (16*16 пикселей);
Х для каждого блока кодируемого изображения выполняется следующая процедура:
1. вычисляется его разница от соответствующего блока из фонового изображения, если эта разница меньше некоторой, наперед заданной величины, определяющей погрешность построения фонового изображения, то параметр, определяющий приоритет кандидата на фоновый блок увеличивается на единицу, в противном случае этому параметру присваивается нулевое значение;
2. если в некоторый момент времени приоритет кандидата превысил приоритет блока, блок из текущего кадра копируется в фоновое изображение, значение его приоритета копируется в приоритет блока в фоновом изображении.
Х помимо этих действий, теперь каждый блок изображения перед процедурой определения вектора перемещения проверяется на соответствие блоку из фонового изображения, имеющего те же координаты и если его отличие в смысле принятой метрики меньше величины допустимой погрешности, то блок считается фоновым и кодируется лишь посредством одного бита, определяющего его тип.
Дальнейший процесс кодирования блока аналогичен приведенному выше алгоритму. При обработке первого кадра изображения все блоки заносятся в фоновое изображение. Приоритет не меняющихся со временем фоновых блоков постоянно увеличивается, в то время как для подвижных он остается неизменным с момента первого изменения их содержимого. Если в дальнейшем в течение некоторого времени такой блок остается неподвижным, мы полагаем, что он содержит часть фонового изображения и запоминаем его; при этом его приоритет начинает возрастать. Приведенные рассуждения иллюстрирует рисунок 3, на котором виден процесс построения фонового изображения для тестовой видеопоследовательности.
Сравнительный анализ алгоритмов Для получения количественных оценок работы модифицированного алгоритма по сравнению с первоначальным, взятым за основу, в него были внесены соответствующие изменения. Проводился подсчет блоков, взятых из фонового изображения, оценивалось качество полученного закодированного кадра при помощи отношения пикового сигнала к шуму (peak signal-to-noise ratio, PSNR), сравнивалось количество блоков, которые могут быть закодированы лишь при помощи идентификатора типа блока.
В качестве тестовых изображений использовались получаемые от неподвижного источника (видеокамеры) последовательные кадры размером 160*120 или 176*144 пикселей, являющиеся типичными для систем видеоконференций, с частотой 10 кадров в секунду. Анализировалась компонента яркости Y исходного цветового сигнала (8 бит/элемент). Исходный кадр разбивался на блоки размером 8*8 пикселей, вычислялось отличие от блока с теми же координатами из предыдущего кадра, если оно превышало величину MSE = 150, то проводилось сравнение этого блока с фоновым, если отличие не превышали той же величины, блок кодировался как фоновый. Оставшиеся блоки кодировались либо как подвижные, и запоминался их вектор перемещения, либо как новые, в этом случае информация о них сохранялась так же, как в алгоритмах MPEG, H.26x, с той разницей, что при необходимости блок разбивался на 4 блока размером 4*4 пикселей и процесс кодирования выполнялся в отдельности для каждого из блоков.
n = 1 n = n = 2 n = n = 30 n = Рисунок 3. Процесс построения фонового изображения (n - порядковый номер кадра) Рисунок 4. 93-й кадр тестовой видеопоследовательности (слева - закодированный кадр, справа - диаграмма типов блоков) salesman missa news Видеопоследовательности (176*144 пикселей, (176*144 пикселей, (160*120 пикселей, 10 кадр/с, 180 кадров) 10 кадр/с, 60 кадров) 5 кадр/с, 84 кадра) Блоки 8*8 пикселей: кол-во % V(%) кол-во % V(%) кол-во % V(%) неподвижные 62483 96.00% 20.12% 20173 89.22% 26.23% 19343 92.28% 8.46% фоновые 202 0.31% 0.06% 112 0.50% 0.14% 319 1.52% 0.14% подвижные 2245 3.45% 3.25% 2005 8.87% 11.73% 1168 5.57% 2.30% однородные 154 0.24% 0.22% 320 1.42% 1.87% 132 0.63% 0.26% Всего: 65084 100% 23.66% 22610 100% 39.98% 20962 100% 11.16% Блоки 4*4 пикселей: кол-во % - кол-во % - кол-во % неподвижные 7497 30.25% 2.41% 1014 22.04% 1.32% 4497 26.53% 1.97% фоновые 442 1.78% 0.14% 73 1.59% 0.09% 325 1.92% 0.14% подвижные 6703 27.05% 9.71% 1534 33.35% 8.97% 3031 17.88% 5.97% однородные 851 3.43% 1.23% 205 4.46% 1.20% 393 2.32% 0.77% новые 9291 37.49% 62.83% 1774 38.57% 48.44% 8706 51.36% 79.99% Всего: 24784 100% 76.33% 4600 100% 60.02% 16952 100% 88.84% Таблица На рисунке 4 приведен типичный кадр из тестовой видеопоследовательности, закодированный с применением данного алгоритма. На приведенной рядом диаграмме кадра выделены различные типы блоков, темным выделены неподвижные блоки, серым - подвижные, светло-серым - новые блоки изображения и, наконец, ярко-белым выделены фоновые блоки.
В таблице 1 приведено количество блоков различного типа для нескольких тестовых видеопоследовательностей, их процентное соотношение (%), и доля в объеме цифрового кода V(%). Для того, чтобы оценить насколько эффективным оказывается на практике этот метод необходимо учесть, что на долю неподвижных блоков приходится небольшая часть информации, а на долю подвижных и новых блоков - наибольшая. Как можно видеть из таблицы, фоновые блоки занимают незначительный процент в объеме кода, что означает фактическое уменьшение объема цифрового кода на величину, занимаемую тем же количеством новых блоков. В таблице 2 приведены расчетные данные для оценки эффективности модифицированного метода кодирования.
Видеопоследовательности salesman missa news Объем цифрового кода для модифицированного 621047 153828 метода, бит Кол-во фоновых блоков 202 + 442 112 + 73 319 + Объем кода фоновых 1288 370 блоков, бит Объем кода соответствующего кол-ва 52500 21882 новых блоков, бит Объем цифрового кода в случае замены фоновых 673547 175340 блоков новыми, бит Уменьшение цифрового потока 7.60% 12.48% 12.61% данных, % Таблица На графике, приведенном на рисунке 5 для сравнения показаны величины PSNR для исходного алгоритма и для модифицированного (видеопоследовательность salesman).
Как видно из графика, отличие модифицированного алгоритма от базового в качестве получаемого изображения незначительное.
Выводы На основании полученных результатов можно сказать, что описанный в данной статье метод позволяет повысить степень сжатия потока видеоданных в системах кодирования с использованием компенсации движения на 5-15%.
Проведенные дополнительные эксперименты показали, что с увеличением длительности кодируемого видеоряда возрастает процент используемых фоновых блоков, и, таким образом, эффективность метода повышается. Все рассуждения справедливы лишь для случая неподвижного источника для получения видеосигнала (неподвижно закрепленной видеокамеры). В противном случае новый метод становится менее эффективным, однако в любом случае его эффективность остается на уровне исходного метода.
Вычислительные затраты нового метода незначительно превосходят (около 1%) затраты базового алгоритма кодирования. Качество получаемого изображения остается на прежнем уровне.
Применение данного метода было бы очень целесообразным в системах видеотелефонии и видеоконференц-связи, использующими в настоящее время стандарты H.261 и H.263.
Книги по разным темам