Книги по разным темам ОПТИМИЗАЦИЯ АЛГОРИТМА КОМПЕНСАЦИИ ДВИЖЕНИЯ В СИСТЕМАХ КОДИРОВАНИЯ ПОДВИЖНЫХ ИЗОБРАЖЕНИЙ Загайнов И.Г. (logicview@hotmail.com) Институт Проблем Передачи Информации Российской Академии Наук Предисловие В системах, использующих стандарты MPEG-1, MPEG-2, H.261, H.263 поиск векторов перемещения блоков изображения в кадре является процедурой, требующей наибольших вычислительных затрат, что, как правило, является препятствием к созданию программных кодеров, работающих в реальном масштабе времени. Представленная ниже методика позволяет ускорить процедуру поиска векторов перемещений блоков для компенсации движения в подвижных изображениях. При использовании нового подхода удается повысить производительность алгоритма в 5-10 раз по сравнению с алгоритмом простого перебора, при незначительном снижении вероятности нахождения оптимального вектора перемещения блока. Учитывая тот факт, что алгоритм поиска векторов перемещения не регламентирован для кодеров перечисленных стандартов, описываемая методика может быть рекомендована для использования в таких системах.

Кодирование подвижных изображений при использовании компенсации движения Приведем краткое описание алгоритма кодирования подвижных изображений с использованием компенсации движения. Метод кодирования состоит в следующем:

Х исходный кадр 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]. Основным препятствием для его использования в программных кодерах являются высокие вычислительные затраты на поиск вектора перемещения для каждого блока изображения.

Поясним это следующими рассуждениями: пусть размер кадра составляет 176*144 пикселей, в этом случае общее количество блоков в кадре составляет 22*18 = 396, пусть допустимый вектор перемещения лежит лишь в диапазоне пикселей (в большинстве систем он лежит в диапазоне 31 пиксел), тогда в случае простого перебора векторов необходимо провести 225*396 = 89100 сравнений блоков изображения, каждое из которых подразумевает вычисление метрики Lдля блока размером 8*8 пикселей, что в общей сложности требует порядка 5.млн. операций умножения и более 11 млн. операций сложения-вычитания.

Целью данной работы является снижение вычислительных затрат, необходимых для нахождения оптимального вектора перемещения блока изображения. На сегодняшний день известно несколько способов ускорения этой процедуры, рассмотренный здесь не претендует на полноту и может быть использован наряду с другими подходами. За подробным описанием других алгоритмов поиска рекомендуется обратиться к [5].

Оптимизация алгоритма Снижение вычислительных затрат на поиск оптимального вектора перемещения может быть достигнуто либо за счет упрощения процедуры сравнения блоков (путем замены метрики L2 или уменьшением количества выборок), либо за счет снижения необходимого числа таких сравнений.

Остановимся далее на рассмотрении второго варианта. На рисунке 2(а) представлена диаграмма распределения вероятности вектора перемещения блоков размером 8*8 пикселей для тестовой видеопоследовательности Salesman (176*пикселей, 10 кадр/сек). На рисунке 2(в) приведено то же распределение для блоков размером 4*4 пикселей. Из приведенного распределения видно, что для подавляющего большинства блоков вектор перемещения мал (т.е. перемещение происходит лишь на несколько пикселей). Если проводить поиск векторов перемещения блоков по спирали начиная от кодируемого блока и при достижении удовлетворительного отличия в смысле выбранной метрики считать найденный вектор оптимальным, можно существенно снизить вычислительные затраты (в 2-раза), однако далеко не во всех случаях найденный вектор перемещения будет оптимальным среди допустимых (поскольку мы прекращаем поиск при достижении некоторого критерия). В данной работе рассматривается другой подход, также сокращающий пространство поиска, который работает по иерархическому принципу.

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

Х поиск вектора перемещения блока на первом этапе производится с некоторым начальным шагом S1 по всей допустимой области;

Х далее, на втором этапе, при нахождении оптимального вектора перемещения поиск производится в окрестности данной точки с уменьшенным шагом S2 = S1 / q1;

Х при необходимости, процесс луточнения повторяется до тех пор, пока шаг Sn = Sn-1 / qn-1 не станет равным минимальному для вектора перемещения (как правило равным 1, хотя некоторые системы, например использующие стандарт H.263, могут иметь шаг вектора перемещения пиксела [4]).

Рисунок 3 иллюстрирует данный алгоритм. Можно показать также, что при использовании такого подхода у нас появляется вероятность найти локальный минимум функции метрики и, как следствие, пропустить оптимальный вектор перемещения (см. рисунок 4). Найденный таким образом вектор перемещения будем называть суб-оптимальным. Вопросу о вероятности такого события будет уделено внимание при анализе экспериментальных данных.

Сравнительный анализ алгоритмов При проведении экспериментов использовался 2-х уровневый иерархический метод нахождения векторов перемещения блоков со смещением 7 пикселей (см.

рисунок 3). Параметры алгоритма были выбраны следующими: S1 = 3; S2 = 1. В качестве метрики для нахождения оптимальных векторов использовалась метрика MSE (mean squared error, аналогичная L2). Изначально осуществлялась проверка на неподвижность блока с критерием MSE<130, затем проводился поиск оптимальных векторов перемещения для оставшихся блоков с критерием MSE<150. Этим объясняется наличие большого количества векторов перемещения (0,0) на графиках на рисунке 2, для которых значение метрики попадало в этот диапазон.

Исходный алгоритм Модифицированный алгоритм (а) Блоки размером 8*8 пикселей (б) Блоки размером 8*8 пикселей (в) Блоки размером 4*4 пикселей (г) Блоки размером 4*4 пикселей Рисунок 2. Распределение вероятности вектора перемещения блоков изображения для исходного алгоритма и алгоритма иерархического поиска (горизонтальным направлениям соответствует смещение блока в изображении) Область поиска Область поиска (7 пикселей) (7 пикселей) Блоки, проверяемые на втором этапе Блоки, проверяемые на первом этапе Блок 8*8 Блок 8*пикселей со пикселей со смещением (0,0) смещением (0,0) Рисунок 3. Полный перебор векторов перемещения (слева) и 2-х уровневый иерархический поиск (справа) 1120-1040-960-880-800-1200 720-1120 640-560-480-400-320-240-160-80-0-Рисунок 4. Функция метрики L2 определенная на пространстве поиска, темным областям соответствуют меньшие значения функции, светлым - большие; локальный минимум в одной из темных областей не соответствует глобальному минимуму функции На рисунках 2(б) и 2(г) приведены диаграммы распределения вероятности вектора перемещения блоков размером 8*8 пикселей и 4*4 пикселей соответственно для иерархического алгоритма поиска. Диаграмма на рисунке 2(б) в целом соответствует диаграмме 2(а) для исходного алгоритма, в то время как на диаграмме 2(г) видны структурные изменения по сравнению с диаграммой 2(в).

Изменения характеризуются слабыми всплесками в распределении вероятности в узлах, соответствующих первому уровню иерархического поиска с шагом S1 = 3.

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

В таблице 1 приведены распределения блоков по их типам для двух тестовых видеопоследовательностей - Salesman и Missa, для исходного и модифицированного алгоритма. По данным из таблицы можно судить о вероятности пропуска оптимального вектора в случае использования иерархического алгоритма поиска вместо алгоритма полного перебора.

salesman missa (176*144 пикселей, (176*144 пикселей, Видеопоследовательности 10 кадр/с, 180 кадров) 10 кадр/с, 60 кадров) Полный перебор Иерархический Полный перебор Иерархический блоков поиск блоков поиск Блоки 8*8 пикселей: кол-во % кол-во % кол-во % кол-во % неподвижные 60756 93.51% 60923 93.93% 19876 87.74% 19863 88.63% подвижные 4098 6.31% 3812 5.88% 2473 10.92% 2240 9.99% однородные 116 0.18% 125 0.19% 305 1.35% 309 1.38% Всего: 64970 100% 64860 100% 22654 100% 22412 100% Блоки 4*4 пикселей: кол-во % кол-во % кол-во % кол-во % неподвижные 6816 27.00% 6945 27.04% 820 18.34% 1118 20.73% подвижные 8559 33.91% 6598 25.69% 1741 39.35% 1709 31.70% однородные 696 2.76% 816 3.18% 197 4.45% 212 3.93% новые 9169 36.33% 11321 44.08% 1666 37.66% 2353 43.64% Всего: 25240 100% 25680 100% 4424 100% 5392 100% Таблица В таблице 2 приведены результаты измерений времени работы алгоритмов для тестовых видеопоследовательностей. Для определения времени производились замеры с однократным и двукратным исполнением процедуры поиска векторов перемещения блоков. Замеры производились троекратно, в таблице приведены средние значения времени. Программа для измерений времени написана на языке С и запускалась на компьютере с процессором Pentium-166. В таблице также присутствуют данные по объему цифрового кода, получаемого в результате работы каждого алгоритма.

salesman missa (176*144 пикселей, (176*144 пикселей, Видеопоследовательности 10 кадр/с, 180 кадров) 10 кадр/с, 60 кадров) Полный Иерархический Полный Иерархический перебор блоков поиск перебор блоков поиск Время работы программы с однократным 30.28 17.28 8.56 4.исполнением процедуры поиска, сек Время работы программы с двукратным 45.44 19.75 13.97 5.исполнением процедуры поиска, сек Время работы процедуры поиска, сек 15.16 2.47 5.41 0.Увеличение производительности 6.147.Объем цифрового кода, бит 623125 690735 150476 Изменения в объеме цифрового кода, бит 67610 Увеличение потока данных, % 10.85% 17.28% Таблица По данным из таблицы видно что модифицированный иерархический алгоритм быстрее алгоритма полного перебора в 6..7 раз, что хорошо согласуется с ожидаемым результатом. Действительно, в случае полного перебора метрика MSE вычисляется (7+7+1)*(7+7+1) = 225 раз для каждого блока, для модифицированного метода лишь 5*5+8 = 33 раза. Таким образом, можно было ожидать увеличения производительности в 6.82 раза. Для исходного алгоритма скорость работы на компьютере Pentium-166 составляла 6..7 кадр/сек (с учетом времени чтения/записи в файл и показа изображения) или 11..12 кадр/сек (без учета времени ввода/вывода). Для модифицированного алгоритма эти величины составили 10..13 кадр/сек и 73..81 кадр/сек соответственно.

Выводы Описанный в данной работе метод, при использовании двухуровневого иерархического алгоритма, позволил ускорить процесс поиска векторов перемещения блоков изображения в 6..7 раз. При использовании многоуровневой схемы можно ожидать более высоких результатов, например в случае поиска векторов перемещения с шагом в пиксела (для стандарта H.263). Следует отметить, что начальный шаг иерархического алгоритма S1 должен быть меньше размеров блока, чтобы по возможности избежать нахождения суб-оптимального вектора перемещения вместо оптимального, что может в свою очередь привести к уменьшению количества найденных векторов перемещения, удовлетворяющих критерию качества. По мере уменьшения начального шага алгоритма вероятность такой ситуации снижается, однако снижается и эффективность подхода.

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

итература 1. УThe JPEG Still Picture Compression Standard,Ф Communications of the ACM, v.34, No.4, Apr. 2. JTS 1/SC 29, УInformation technology - Coding of moving pictures and associated audio for digital storage media at up to about 1.5 Mbit/s - part 2: Video,Ф ISO/IEC 11172-2, 3. JTS 1/SC 29, УInformation technology - Generic coding of moving pictures and associated audio information: Video,Ф ISO/IEC 13818-2, 4. ITU-T SG15, УVideo Coding For Low Bitrate Communication,Ф DRAFT ITU-T Recommendation H.263, May 5. B. Liu and A. Zaccarin, УNew fast algorithms for the estimation of block motion vectors,Ф IEEE Trans. Circ. And Syst. for Video Technol., vol. 3, pp. 148-157, Apr.

   Книги по разным темам