Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 / Salmon_sjatie_dannyh_izobrajeniy_i_zvuka[torrents.ru]

.pdf
Скачиваний:
24
Добавлен:
05.06.2015
Размер:
7.92 Mб
Скачать

Глава 5. Сжатие видео

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

Компенсация движения: Просмотр любого фильма наводит на мысль, что разница между последовательными кадрами мала изза движения на сцене, перемещения камеры или в силу обеих причин. Это свойство можно использовать для улучшения сжатия. Если ко­ дер обнаружил, что часть Р предыдущего кадра, как одно целое, переместилась в новое положение на текущем кадре, то Р можно сжать, записав следующие три компонента: предыдущее местополо­ жение, новое местоположение и информацию о границе области Р. Следующее обсуждение метода компенсации движения позаимство­ вано из [Manning 98].

В принципе, эта перемещающаяся часть может иметь любую форму. На практике мы ограничены блоками с равными сторона­ ми (обычно это квадраты или прямоугольники). Кодер сканирует текущий кадр блок за блоком. Для каждого блока В на предыду­ щем кадре делается поиск тождественного блока С (если сжатие без потерь) или близкого блока (если сжатие с потерями). Если та­ кой блок найден, то кодер записывает разность между его прошлым и настоящим положением. Эта разность имеет вид

И она называется вектором перемещения. На рис. 5.2 показан про­ стой пример, на котором солнце и деревья движутся вправо (из-за перемещения видеокамеры), а ребенок перемещается влево (это дви­ жение сцены).

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

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

5.1. Основные принципы 291

впадений, а маленькие блоки приводят к большому числу векторов перемещения. На практике применяются блоки, размеры которых являются степенями числа 2, например, 8 или 16; это упрощает про­ граммное обеспечение.

ш\

 

 

1 1 1 is ^' 1 1 1 1 1 1 i

тФ

i

 

 

гт4

А

 

 

 

ГТА

 

1

г1

1А1

 

1

1 1 Й1 1 AM А 1 1

1 1 1 Д1

1Д1

 

tn1

1 Т

А

 

1

1 Ч]

1 \Щт

1

 

 

 

шЕк

 

I I I

^1

1 "1

 

1 '^1?'^?^

1

 

W

fr6*^ <

Г

 

 

 

 

}бЦ

 

 

V- ^

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(а)

 

 

 

(Ь)

 

 

 

 

Рис. 5.2. Компенсация движения.

Порог поиска: Каждый блок В текущего кадра сначала срав­ нивается со своим двойником на предыдущем кадре. Если они со­ впадают или величина разности между ними меньше некоторого наперед заданного порога, то кодер считает, что данный блок не двигался.

Поиск блока: Эта процедура обычно занимает много време­ ни, поэтому ее следует тщательно оптимизировать. Если В - теку­ щий блок текущего кадра, то необходимо сделать поиск совпада­ ющего или близкого к нему блока на предыдущем кадре. Обычно этот поиск делается в небольшой области (называемой областью поиска) вокруг В^ которая задается с помощью параметров мак­ симального смещения dx и dy. Эти параметры определяют макси­ мальное допустимое расстояние по горизонтали и вертикали в пик­ селах между В и его копией на предыдущем кадре. Если блок В - это квадрат со стороной 6, то область поиска состоит из (6 4- 2dx)(b-\-2dy) пикселов (рис 5.3), по которым можно построить [2dx-\- \){2dy+\) различных, частично перекрывающихся квадратов разме­ ра 6 х 6. Значит, число возможных блоков-кандидатов в этой области пропорционально dxdy.

Измерение расхолсдения: Это наиболее чувствительная часть кодера. Здесь необходимо выбрать наиболее близкий блок к исход-

292 Глава 5. Cotcamue видео

ному блоку В. Эта процедура должна быть простой и быстрой, но, вместе с тем, надежной.

1^Реды

Рис. 5.3. Область поиска.

Средняя абсолютная разность (или средняя абсолютная ошибка) вычисляет среднее значение модуля разностей между пикселами Bij блока В и пикселами Cij блока-кандидата С по формуле

. 6 6

 

&2

С а

 

--1 j=i

Для этого потребуется выполнить Ь^ операций вычитания, столько же операций взятия модуля числа и одной операции деления. Эта величина вычисляется для каждого из {2dx + l){2dy + 1) блоковкандидатов для нахождения блока с наименьшим отклонением от блока В (обозначим его Ck)- Если это отклонение меньше задан­ ного порога, то блок Ck выбирается в качестве похожей пары для блока В. В противном случае такой пары нет, и блок В необходимо кодировать без компенсации движения.

В этом месте можно задать законный вопрос: «Как может слу­ читься, что некоторый блок текуш;его кадра не имеет подходяп];ей похожей пары на предыдущем кадре?» Для ответа представим себе, что снимаюш;ая видеокамера движется слева направо. Новые объек­ ты попадают в поле зрения камеры справа. Поэтому самый правый блок кадра может содержать объекты, которых не было на предыдуш;ем кадре.

Другой мерой расхождения может служить «среднеквадратическое отклонение», в формуле которого вместо функции взятия мо­ дуля стоит возведение в квадрат разности пикселов:

5.1. Основные принципы

^ь ь

&2

Функция рандюирования разностей пикселов PDC (pixel difference classificatin) определяет, сколько разностей \Bij — Cij\ меньше, чем заданное число р.

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

 

b

b

 

Y1 ^^j Z^^ij

+ E / . ^ij

- 2 ^ Cij

г=1 j=i

j=l

j=i i=l

i=l

Методы подоптимального поиска: Такие методы делают поиск по части блоков среди всех (2dx + l){2dy -\- 1) кандидатов. Это ускоряет поиск подходящего схожего блока, но платой служит эффективность сжатия. Некоторые подобные методы будут обсу­ ждаться в следующем параграфе.

Корректировка вектора перемещения: Если блок С выбран в качестве самого похожего на блок В^ то для нахождения вектора перемещения следует найти разность между верхними левым угла­ ми блоков С и В. Независимо от выбора подходящего блока вектор перемещения может оказаться неверным из-за шума, локального ми­ нимума в кадре, или по причине недостатков самого алгоритма по­ иска. Тогда можно применить технику сглаживания вектора переме­ щения для достижения большей схожести блоков. Пространственная корреляция изображения предопределяет также корреляцию векто­ ров перемещения. Если некоторый вектор нарушает это правило, то его следует подправить.

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

Кодирование векторов перемещения: Большая часть теку­ щего кадра (возможно, половина его) может быть преобразована в

Глава 5. Coicamue видео

векторы перемещения, поэтому кодирование этих векторов весьма актуально. Это кодирование должно быть без потерь. Два свойства векторов перемещения позволяют осуществить эффективное коди­ рование: (1) эти векторы коррелированы и (2) они имеют нерав­ номерное распределение. При сканировании кадров блок за блоком оказывается, что прилегающие блоки обычно имеют близкие век­ торы перемещения. Кроме того векторы также не имеют любые направления. Они, как правило, направлены в одну, реже, в две сто­ роны; значит, векторы распределены неравномерно.

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

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

изакодировать его по Хаффману. Этот метод весьма важен. Он используется в MPEG-1 и в других алгоритмах сжатия.

2.Сгруппировать векторы перемещения в блоки. Если все векторы

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

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

5.2. Методы подоптимального поиска

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

5.2. Методы подоптимального поиска

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

+6^> - —<>- —<>—р - О ——0— —0— —0

+4( >——< у-

—<J

 

Y

су- --0

4-2< У- —<у-

 

 

 

—6——6

0(ь- —< )—

 

 

 

 

—6

-2<к

/к

 

 

 

f\

д

 

 

 

 

 

 

 

у

-4( у— — ( )

().

с1^

Q)

с,)—-<)

-6(

>- •—с—(^>— >- -V

—<>——0

 

у—

 

—("

у-

 

 

- 6

- 4

- 2

О

+2

+4

+6

(а)

V

V

кчJ

чJ

S

/^S

\

/\

кчJ

г

— (

м м

 

 

м

Jгf т

о — первый этап

с7"V (.

v^J

VJ

^).

 

/^

f

\

^\

S

 

V.)

J

к)

\

(\

с\

У-<)

V.)

\.)

т

т

\

# — лучшие на первом этапе

(Ь)

V

\U

к)

(Ц

кJ

/\

^

V.)

V.У-\

(\

(\

V.)

 

т]

Ф— второй этап

Рис. 5.4. (а) Поиск с разбавленным расстоянием при dx = dy = 6.

(b) Локализованный поиск.

Глава 5. Сжатие видео

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

Поиск с разбавленным расстоянием: Из опыта известно, что быстро перемещающиеся объекты выглядят смазанными при воспроизведении на экране, даже если они имеют четкие очертания на каждом кадре. Это подсказывает возможный путь для отбрасы­ вания части информации. Можно требовать хорошего совпадения для медленно перемещающихся объектов, и приблизительного со­ впадения для тех, что перемещаются быстро. В итоге получаем ал­ горитм, который оценивает для каждого блока В все ближайшие к нему блоки-кандидаты, а для более удаленных блоков он рассматри­ вает все меньшую часть блоков. На рис. 5.4а показано, как такой метод мог бы работать для параметров максимального смещения dx = dy = 6. Общее число оцениваемых блоков С сокращается с {2dx + l){2dy + 1) = 13 X 13 = 169 до всего 65, то есть, до 39%!

Локализованный поиск: Этот метод основан на гипотезе, что если хорошее совпадение найдено, то еще лучшее совпадение, возможно, находится где-то рядом (напомним, что поиск делается среди сильно перекрывающихся блоков). Очевидный алгоритм по­ иска начинается с изучения разреженного семейства блоков. Затем наиболее подходящий блок из этого семейства используется в каче­ стве центра для более тщательного поиска. На рис. 5.4Ь показаны два этапа поиска: первый этап рассматривает широко расставлен­ ные блоки и выбирает наиболее близкий из них, а второй тестирует каждый блок в окрестности этого хорошего блока.

Монотонный поиск по квадрантам: Это один из вариан­ тов метода локализованного поиска. Сначала анализируется разре­ женное семейство блоков С. Для каждого блока из этого семейства вычисляется мера расходимости. Идея заключается в том, что вели­ чина этой меры увеличивается при удалении от оптимального блока, имеющего минимальное расхождение с блоком В. Это позволяет до­ статочно хорошо спрогнозировать область, в которой расположен оптимальный блок. На втором шаге изучается каждый блок из этой

5.2. Методы подоптимального поиска

области. На рис 5.5 показан пример поиска области размера 2x2. Ве­ личины расхождения показывают направление дальнейшего поиска оптимального блока.

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

0—|—О—Г т

р-О—р-О——0— —0

у

 

О

 

0

о

0 ^

у

• у

у

 

у

••

у

0

у - ... fj

•у

 

 

 

 

 

 

 

(У'^

 

 

А

 

h-^ ^^iу у

 

 

 

 

1^^

^

 

/tf^

д

А

Д

Д

 

/ т

 

 

 

 

А«

 

^

 

р

о ••

т

Р

р

у

Jf

 

у

 

 

сЫJAJ--6— —(V-"—0— —0

Рис. 5.5. Монотонный поиск по квадрантам.

Зависимые алгоритмы: Как уже выше упоминалось, движе­ ние в кадре может происходить в результате перемепцения объектов съемки или самой видеокамеры. Если предположить, что объекты съемки больше, чем блок, то логично допустить, что векторы перемеш;ения близких блоков будут коррелированы. Поэтому алгоритм поиска может оценить вектор перемещения блока В с помош;ью уже найденных векторов перемещения соседних к нему блоков. Затем ал­ горитм уточняет эту оценку тестированием соответствующих близ­ ких блоков-кандидатов С. Это соображение лежит в основе многих зависимых алгоритмов, которые могут быть пространственными или временными.

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

Глава 5. Сэ/сатие видео

наилучшей стратегии (кроме того, не для всех этих соседей векто­ ры перемещения будут уже вычислены). Если блоки сравниваются в растровом порядке, то имеет смысл использовать одного, двух или трех подходящих соседей, как показано на рис. 5.6а,Ь,с. Одна­ ко, в силу симметрии будет лучше использовать четырех соседей, показанных на рис 5.6d,e. При этом можно применить метод, состо­ ящий из трех проходов, который анализирует блоки, отмеченный на рис. 5.6f. На первом проходе сканируются черные блоки (четверть всех блоков на рисунке). Векторы перемещения для этих блоков вы­ числяются некоторым другим методом. На втором проходе оцени­ ваются серые блоки (их тоже 25% от общего числа), с помощью векторов перемещения их угловых соседей. Наконец, белые блоки (их 50%) изучаются на третьем проходе. Для вычисления их векто­ ров перемещения используются четыре соседа, прилегающие к их сторонам. Если векторы перемещений соседних блоков сильно раз­ личаются, то их не стоит использовать, а вектор перемещения блока В придется вычислять другим методом.

i Ш L...JB 1 Ш Щ ! ^ I

(а) (Ь) (с) (d) 1е)

(f)

Рис. 5.6. Стратегии алгоритмов с пространственной зависимостью.

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

Вариант метода монотонного поиска по квадрантам: Сле­ дующие подоптимальные алгоритмы используют основную идею ме-

5.2. Методы подоптималъного поиска

тода монотонного поиска подходящего блока.

Двумерный логарифмический поиск: Этот многошаговый алгоритм сокращает область поиска на каждом шаге, пока она не сведется к одному блоку. Предположим, что текущий блок В лока­ лизован в точке (а, Ь) текущего кадра. Эта точка берется за центр поиска. Алгоритм зависит от параметра d, задающего удаление от центра поиска. Этот параметр контролируется пользователем. Квад­ ратная область поиска состоит из (2с/Н- \){2d-\-1) блоков с центром в блоке В.

Шаг 1: Размер шага вычисляется по формуле

и алгоритм сравнивает блок В с пятью блоками в точках с коорди­

натами (a,fe), (a,b-\-s), (а,6 —5), {а-\-8,Ь)и

(а— 5,6) на предыдущем

кадре. Эти пять блоков образуют шаблон

в форме знака +.

Шаг 2: Выбирается наилучший из этих пяти блоков. Обозначим его координаты через (ж, у). Если (ж, у) = (а, 6), то s делится попо­ лам (поэтому алгоритм называется логарифмическим). В против­ ном случае шаг s не меняется, а центр поиска (а, Ь) перемещается в точку (ж,у).

Шаг 3: Если 5 = 1, то оцениваются девять блоков вокруг центра поиска (а, 6), и наилучший блок становится результатом работы ал­ горитма. В противном случае делается переход на Шаг 2.

Если нужный алгоритму блок выходит за пределы области по­ иска, то он игнорируется и не используется. Рис. 5.7 иллюстрирует случай, когда d = S. Для простоты предполагается, что текущий блок В имеет координаты (0,0). Поиск ограничивается областью из 17 X 17 блоков с центром в Б . На шаге 1 вычисляется

g^ 2^^^S2 8j-i ^ 2^"^ = 4 ,

и изучаются пять блоков с координатами (0,0), (4,0), (—4,0), (0,4), (О, —4). Предположим, что наилучшее значение имеет блок (0,4), ко­ торый становится центром нового поиска. Теперь на втором ша­ ге изучаются три блока (помеченные цифрой 2) с координатами (4,-4), (4,4), (8,0).

Если лучшим среди них будет блок (4,4), то на следующем шаге будут исследоваться 2 блока с меткой 3 с координатами (8,4) и (4,8), блок (4,4) с меткой 2 и два блока (0,4) и (4,0), имеющие метку 1.

Предположим, что на следующем шаге наилучшим выбором бу­ дет блок (4,4). Поскольку этот блок находится в центре знака -f.

Соседние файлы в папке 1