Способ межкадрового прогнозирования для кодирования многоракурсной видеопоследовательности
Иллюстрации
Показать всеИзобретение относится к вычислительной технике. Технический результат заключается в уменьшении объема служебной информации в области сжатия многоракурсных видеопоследовательностей с картами глубин. Способ межкадрового прогнозирования для кодирования многоракурсной видеопоследовательности, в котором кодируемый кадр из видеопоследовательности кодируемого ракурса представляют как набор блоков, определяют, по меньшей мере, один восстановленный кадр из видеопоследовательности кодируемого ракурса, обозначаемый как опорный кадр, генерируют синтезированные кадры, соответствующие кодируемому кадру и каждому из опорных кадров, используя восстановленные карты глубин и восстановленные кадры видеопоследовательности из, по меньшей мере, одного другого ракурса, причем дополнительно: определяют в синтезированном кодируемом кадре синтезированный текущий блок, который соответствует кодируемому блоку; получают, по меньшей мере, один синтезированный вектор движения для синтезированного текущего блока с помощью синтезированных опорных кадров; выводят, по меньшей мере, один уточненный вектор движения для кодируемого блока с использованием метода сопоставления шаблонов, с использованием шаблона кодируемого блока, с использованием опорных кадров и с использованием полученного синтезированного вектора движения; вычисляют блок-прогноз для кодируемого блока с использованием уточненных векторов движения. 8 з.п. ф-лы, 9 ил.
Реферат
Изобретение относится к технологиям сжатия многоракурсных видеопоследовательностей с картами глубин (MVD видео).
Здесь и далее под MVD видео будет пониматься набор ракурсов одной и той же сцены, где каждый ракурс представляет собой отдельную видеопоследовательность и/или информацию о глубине сцены, изменяющеюся во времени и обозначаемую как карты глубины. Недавно введенный международный стандарт MPEG-4 AVC/H.264 Annex.H Multiview Video Coding (MVC) [1] дает возможность кодировать MVD видео. Обычно MVD видео кодируют как набор обычных видеопоследовательностей, применяя гибридное кодирование: кадр из вновь кодируемого ракурса или видеопоследовательности карт глубин разделяют на неперекрывающиеся блоки пикселей, которые подвергают разностному кодированию для уменьшения межкадровой корреляции. Остатки, содержащиеся в разностном блоке, полученном из кодируемого блока и поставленного ему в соответствие блока-прогноза, подвергают пространственному преобразованию.
Блоки-прогнозы формируют из опорных кадров, которые были закодированы ранее (далее по тексту любая информация, которая была закодирована, возможно, с потерями, и потом декодирована, называется «восстановленной информацией»). При этом используется служебная информация о движении (MSI является аббревиатурой термина Motion Side Information), которая необходима кодеру и декодеру для того, чтобы сформировать блок-прогноз. MSI - такая, как тип макроблока, векторы движения, индексы опорных кадров и режимы разбиения макроблока - формируется на стороне кодера и обычно передаётся в декодер в виде сжатого битового потока (далее по тексту называется «потоком»). Чем более полной и детальной является MSI, тем точнее блок-прогноз и тем меньше амплитуда остатков в разностном блоке. В то же время, более точная MSI требует больше битов для передачи её в декодер, но в результате требуется меньше битов для представления остатков. Поэтому одной из проблем эффективного сжатия является уменьшение объема MSI, передаваемой в потоке в декодер, при сохранении малой амплитуды остатков.
Метод сопоставления шаблонов (ТМ: Template Matching) известен как эффективный метод формирования блоков-прогнозов, который позволяет уменьшить объем MSI, передаваемой в потоке [2, 3, 9-13]. ТМ использует корреляцию между пикселями в кодируемом блоке и пикселями, окружающими кодируемый блок. Пиксели, принадлежащие окрестности блока, но не включенные в блок, называются шаблоном. При проведении ТМ шаблон выбирается в окрестности кодируемого блока и включает в себя только пиксели, которые были уже закодированы и декодированы ранее. Далее вместо сопоставления кодируемого блока и блоков из опорного кадра для нахождения вектора движения используется сопоставление шаблона кодируемого блока и шаблонов такой же формы в опорном кадре. Найденный для шаблонов вектор и иная MSI (индекс опорного кадра и т.д.) используется для формирования блока-прогноза. Так как в данном методе MSI для кодируемого блока определяется только с помощью уже восстановленной ранее информации и без участия значений пикселей кодируемого блока, то идентичную процедуру можно произвести на стороне декодера и получить идентичную MSI, поэтому передача такой MSI в потоке не требуется. Далее любую информацию, определённую таким образом, далее будем называть «выведенной информацией».
Так как движение в видеопоследовательностях соседних ракурсов является высококоррелированным, возникает возможность получения MSI из соседнего уже восстановленного ракурса для применения в кодируемом ракурсе [4]; такую информацию также можно не передавать в потоке кодируемого ракурса. Также имеется возможность получения синтезированной видеопоследовательности для одного ракурса с помощью одной из известных процедур синтеза, использующей видеопоследовательность соседнего ракурса и карт глубин одного из ракурсов. Характеристики синтезированной видеопоследовательности ракурса намного ближе к характеристикам оригинальной видеопоследовательности ракурса, чем характеристики видеопоследовательности соседнего ракурса. Эта корреляция характеристик также используется для более эффективного сжатия видеопоследовательностей нескольких ракурсов.
Для решения проблемы, связанной с большим объёмом MSI, передаваемой в потоке, широко используется уже упомянутый метод сопоставления шаблонов. Есть несколько модификаций ТМ, но все они имеют следующий недостаток. Поскольку пиксели кодируемого блока не используются при сопоставлении, качество блока-прогноза, полученного при сопоставлении шаблонов, практически всегда хуже, чем качество блока-прогноза, полученного при сопоставлении блоков. И чем меньше фактическая корреляция между вектором движения кодируемого блока и вектором движения шаблона кодируемого блока, тем более будет проявляться данный недостаток. Таким образом, MSI, полученная с помощью ТМ, может быть неподходящей для кодируемого блока, что подразумевает увеличение амплитуды остатков.
Другой известный из уровня техники способ уменьшения объема MSI заключается в использовании специфических особенностей MVD видео [15]: корреляция движения в видеопоследовательностях смежных ракурсов. В этом способе в качестве MSI кодируемого блока используют MSI из видеопоследовательности соседнего ракурса. Для идентификации этой MSI в соседнем ракурсе используют вектор диспарантности. Однако вычисление вектора диспарантности, а также его эффективное кодирование также представляет собой проблему. Кроме того, в видеопоследовательностях смежных ракурсов имеются существенные геометрические различия, поэтому MSI одного ракурса может не точно соответствовать MSI другого ракурса, что приводит к формированию ухудшенного блока-прогноза и росту амплитуд остатков.
Наиболее близкими признаками с заявляемым изобретением обладает способ, описанный в публикации [5]: "Улучшенное прогнозирование синтезированного ракурса на основе выведения движения на стороне декодера для кодирования многоракурсного видео". Способ формирования кадра-прогноза по [5] включает следующие шаги:
- генерируют синтезированные кадры для кодируемого кадра и для опорного кадра кодируемой видеопоследовательности с помощью восстановленных кадров видеопоследовательности смежного ракурса и карт глубин;
- все сгенерированные синтезированные кадры обрабатываются низкочастотным фильтром, чтобы повысить надежность оценки векторов движения;
- применяют алгоритм сопоставления блоков для оценки векторов движения каждого блока в синтезированных кадрах;
- к найденным векторам движения применяют медианный взвешивающий фильтр, чтобы увеличить пространственную когерентность векторов движения;
- выполняют прогнозирование кодируемого кадра с помощью отфильтрованных векторов движения, используя для прогнозирования опорный кадр из кодируемой видеопоследовательности текущего ракурса.
Недостатки прототипа состоят в следующем. В синтезированных кадрах присутствуют искажения в виде локальных и глобальных сдвигов, которые появляются вследствие использования изначально неверных или искажённых сжатием с потерями карт глубин. Эти искажения ведут к ухудшению качества оценки векторов движения в синтезированных кадрах. Искажения синтезированных кадров и векторов частично устраняются в прототипе с помощью низкочастотного фильтра и фильтрации векторов. Но эти дополнительные меры и сами по себе вносят дополнительные искажения в найденные вектора движения. Блоки-прогнозы, полученные с помощью таких векторов движения, дают во многих случаях высокоамплитудные остатки, что увеличивает битовую скорость потока (ухудшает эффективность кодирования).
Задача, на решение которой направлено заявляемое изобретение, заключается в разработке более эффективного способа снижения битовой скорости MSI в MVD видео.
Технический результат достигается за счет разработки усовершенствованного способа получения такой MSI, что, с одной стороны, она может быть получена на стороне кодера и на стороне декодера идентичным образом без передачи её в виде элементов битового потока; с другой стороны, блок-прогноз, полученный с помощью такой MSI, является достаточно близким к кодируемому блоку, поэтому остатки разностного блока имеют низкую амплитуду и могут быть эффективно сжаты. При этом заявляется способ межкадрового прогнозирования для кодирования многоракурсной видеопоследовательности, в котором кодируемый кадр из видеопоследовательности кодируемого ракурса представляют как набор блоков, определяют, по меньшей мере, один восстановленный кадр из видеопоследовательности кодируемого ракурса, обозначаемый как опорный кадр, генерируют синтезированные кадры, соответствующие кодируемому кадру и каждому из опорных кадров, используя восстановленные карты глубин и восстановленные кадры видеопоследовательности из, по меньшей мере, одного другого ракурса, отличающийся тем, что дополнительно выполняют следующие операции:
- определяют в синтезированном кодируемом кадре синтезированный текущий блок, который соответствует кодируемому блоку;
- получают, по меньшей мере, один вектор движения для синтезированного текущего блока с помощью синтезированных опорных кадров, полученный вектор движения далее обозначается как «синтезированный вектор движения»;
- выводят, по меньшей мере, один вектор движения для кодируемого блока с использованием метода сопоставления шаблонов, с использованием шаблона кодируемого блока, с использованием опорных кадров и с использованием полученного синтезированного вектора движения, выведенный вектор движения далее обозначается как «уточненный вектор движения»;
- вычисляют блок-прогноз для кодируемого блока с использованием уточненных векторов движения.
Предположим, что кадр видеопоследовательности одного ракурса кодируется блок за блоком. Обозначим этот кадр как кодируемый кадр, а ракурс как кодируемый ракурс. Кроме того, имеется, по меньшей мере, один восстановленный кадр видеопоследовательности кодируемого ракурса; такой кадр(ы) обозначается как опорный кадр(ы). Предположим, что имеется, по меньшей мере, одна восстановленная видеопоследовательность соседнего ракурса и восстановленная карта глубины. Тогда возникает возможность сгенерировать с помощью заранее известной процедуры синтеза синтезированную видеопоследовательность для кодируемого ракурса и получить из неё синтезированные кадры, соответствующие опорным кадрам и кодируемому кадру. Синтезированный кадр, который соответствует кодируемому кадру, обозначим как синтезированный кодируемый кадр. Синтезированные кадры, соответствующие опорным кадрам, обозначим как синтезированные опорные кадры. Главная цель заявляемого способа состоит в формировании для каждого кодируемого блока кодируемого кадра наиболее близкого блока-прогноза так, чтобы появилась возможность осуществить такое же прогнозирование на стороне декодера без передачи в потоке служебной информации о том, как это прогнозирование формировалось (пример: индексы опорных кадров, векторы движения и т.д).
Формирование блока-прогноза производится с использованием выведенной информации о движении. Процесс выведения векторов движения начинается с получения синтезированного вектора движения для синтезированного текущего блока. Поскольку информация о движении, относящаяся к синтезированному текущему блоку, будет применяться к кодируемому блоку, то важно найти такую информацию о движении, которая будет применима для кодируемого блока (т.е. сформированный на её основе блок-прогноз позволит получить малые остатки). Поэтому синтезированный текущий блок должен быть похож на кодируемый блок с точки зрения оценки вектора движения.
Синтезированные векторы движения являются прогнозами для векторов движения кодируемого блока. Но они могут быть неточными из-за локальных и глобальных смещений в существующих синтезированных кадрах. Поэтому синтезированные векторы движения полезно уточнять с помощью группы восстановленных пикселей, расположенных вблизи кодируемого блока (такая группа восстановленных пикселей вблизи блока далее упоминается как «шаблон»).
Имеет смысл определять синтезированный текущий блок в синтезированном кодируемом кадре таким образом, чтобы размеры синтезированного текущего блока были не меньше, чем размеры кодируемого блока, а его координаты определялись как одно из следующих:
- координаты центра синтезированного текущего блока совпадают с координатами центра кодируемого блока;
- координаты синтезированного текущего блока определяются вектором смещения, который передается в декодер в потоке;
- координаты синтезированного текущего блока определяются вектором смещения, который получен с помощью метода сопоставления шаблонов, и этот вектор смещения не передаётся в декодер в потоке.
Для более надежной оценки движения размеры синтезированного текущего блока могут отличаться от размеров кодируемого блока. Использование сравнительно небольшого блока часто приводит к некорректной оценке движения. Поэтому используют синтезированный текущий блок с размерами, большими, чем размеры кодируемого блока.
При выведении векторов движения для кодируемого блока представляется целесообразным определять уточненный вектор движения в окрестности координат, на которые указывает синтезированный вектор движения в соответствующем опорном кадре, с помощью метода сопоставления шаблонов.
При этом недостаток метода сопоставления шаблонов, связанный с обнаружением неточной MSI, частично устраняется благодаря использованию синтезированного вектора, найденного с помощью синтезированного текущего блока, связанного с кодируемым блоком.
Дальнейшее усовершенствование способа выведения векторов движения для кодируемого блока заключается в том, что определение уточненного вектора движения на основе метода сопоставления шаблонов включает в себя следующие этапы:
- вычисляют функцию сходства для шаблона кодируемого блока и шаблона, который задан уточненным вектором движения;
- вычисляют функцию сходства для шаблона кодируемого блока и шаблона, который задан нулевым вектором движения в опорном кадре, на который указывает уточненный вектор движения;
- обнуляют уточненный вектор движения, если значение функции сходства для нулевого вектора движения меньше, чем значение функции сходства для уточненного вектора движения.
Далее имеет смысл улучшить способ выведения векторов движения для кодируемого блока, вычисляя при поиске уточненного вектора движения методом сопоставления шаблонов функцию сходства как норму градиентов GradNorm для шаблона кодируемого блока и шаблона, на который указывает оцениваемый вектор движения, который является одним из вариантов выбора уточненного вектора движения:
m'=m+rmvx, n'=n+rmvy.
где Et(m,n) - значения восстановленных пикселей шаблона кодируемого блока, Rt(m+rmvx, n+rmvy) - значения пикселей шаблона, на который указывает кандидат в уточненный вектор движения (rmvx, rmvy).
Пиксели опорного кадра Rt должны использоваться вместо соответствующих пикселей Et, когда координаты m+1,n или m,n+1 или m+1, n+1 находятся вне шаблона.
В некоторых случаях бывает целесообразным осуществить вывод нескольких векторов движения для кодируемого блока, что создает возможность выполнения многонаправленного прогноза (например, двунаправленное прогнозирование). В таких случаях векторы движения обозначают как гипотезы. Несколько гипотез используют совместно для формирования единого блока-прогноза (такой единый блок-прогноз можно получить, например, с помощью усреднения блоков, на которые указывает каждая из гипотез). Эти совместно используемые гипотезы обозначают как набор гипотез. Получение набора гипотез включает в себя проведение поиска двух или более уточненных векторов движения, которые и образуют набор. Поиск проводят методом сопоставления шаблонов в окрестности координат, на которые указывают ранее найденные уточненные векторы движения или синтезированные векторы движения в соответствующих опорных кадрах.
Имеет смысл определять наилучший набор гипотез среди всех возможных наборов (наборов-кандидатов) методом сопоставления шаблонов со следующим способом использования критерия минимизации:
- осуществляют формирование опорного шаблона; при этом вычисляют опорный шаблон, используя те шаблоны, на которые указывают гипотезы набора-кандидата, причем для формирования опорного шаблона вычисляют значение каждого пикселя опорного шаблона путем усреднения соответствующих ему пикселей шаблонов, на которые указывают гипотезы набора-кандидата;
- вычисляют критерий минимизации между опорным шаблоном и шаблоном кодируемого блока, при этом вычисленный критерий минимизации используют для определения наилучшего набора гипотез среди всех наборов-кандидатов.
Представляется целесообразным использование способа многонаправленного прогноза, при котором вычисление блока-прогноза включает в себя следующие этапы:
- вычисляют весовой коэффициент для каждого блока-прогноза, на который указывает соответствующая гипотеза из набора гипотез, в виде функции от функции сходства (Norm) шаблона кодируемого блока и шаблона, на который указывает гипотеза (например: весовой коэффициент: W=exp(-C·Norm), где C - предопределенная константа больше 0);
- вычисляют многонаправленный прогноз на основе использования блоков-прогнозов, на которые указывают соответствующие гипотезы, и с использованием вычисленных весовых коэффициентов.
С целью дальнейшего улучшения имеет смысл выполнять многонаправленный прогноз, в котором одна из гипотез указывает в синтезированный кодируемый кадр, таким образом, что вычисление весовых коэффициентов блока-прогноза, на который указывает эта гипотеза, включает в себя следующие этапы:
- вычисляют весовой коэффициент как функцию от функции сходства для блока-прогноза, на который указывает гипотеза, указывающая на синтезированный закодированный кадр. Функцию сходства вычисляют для шаблона кодируемого блока и шаблона, на который указывает данная гипотеза. Перед вычислением функции сходства в каждом из шаблонов из значения каждого пикселя производится вычитание среднего уровня всех значений пикселей по шаблону. Например, когда функция сходства представляет собой сумму модулей разностей, вычисления проводятся следующим образом:
где Et(m,n) - значения восстановленных пикселей шаблона кодируемого блока, Rt(m,n) - значения восстановленных пикселей шаблона, на который указывает гипотеза, |Template| - означает число пикселей в шаблоне, template - пиксели, принадлежащие области шаблона.
И при этом вычисление многонаправленного прогноза с использованием блока-прогноза, на который указывает гипотеза, указывающая на синтезированный кодируемый кадр, включает в себя выполнение следующих операций:
- корректируют яркость и контрастность блока-прогноза, на который указывает гипотеза, указывающая на синтезированный закодированный кадр.
- вычисляют многонаправленный прогноз с использованием скорректированного блока-прогноза и вычисленного весового коэффициента для скорректированного блока-прогноза.
Далее существо изобретения поясняется с привлечением графических материалов.
Фиг.1 - Структурная схема гибридного кодера многоракурсных видеопоследовательностей.
Фиг.2 - Схема части гибридного видеокодера многоракурсных видеопоследовательностей, в которой заявляемый способ реализуется в рамках блоков оценки служебной информации и формирования прогноза.
Фиг.3 - Поиск синтезированного вектора движения.
Фиг.4 - Основной принцип формирования шаблона.
Фиг.5 - Процесс уточнения синтезированного вектора движения с помощью шаблона.
Фиг.6 - Процедура осуществления выбора между нулевым вектором движения и уточненным вектором движения.
Фиг.7 - Определение весовых коэффициентов для вычисления суммы взвешенных модулей разности.
Фиг.8 - Оценка двунаправленного вектора движения.
Фиг.9 - Поиск смещения в синтезированном кодируемом кадре.
Описанные далее варианты реализации приведены в качестве иллюстрации и не ограничивают объем охраны заявляемого изобретения, определенный формулой изобретения.
Фиг.1 - структурная схема гибридного кодера многоракурсных видеопоследовательностей. Входные данные для гибридного кодера 105 многоракурсного видео включают видеопоследовательность 101 кодируемого ракурса и восстановленные видеопоследовательности 102 уже закодированных ракурсов, которые являются частью многоракурсного видео. Восстановленные видеопоследовательности 102 и восстановленные карты 103 глубины используют для формирования синтезированной видеопоследовательности 104 кодируемого ракурса посредством процедуры синтеза ракурсов. Сгенерированная синтезированная видеопоследовательность также является частью входных данных для гибридного кодера 105 многоракурсного видео.
Гибридный кодер 105 многоракурсного видео включает в себя следующие блоки, используемые для кодирования видеопоследовательности кодируемого ракурса: блок 106 управления опорными кадрами, блок 107 межкадрового прогнозирования, блок 108 внутрикадрового прогнозирования, блок 109 формирования прогноза и остатков, блок 110 пространственного преобразования, блок 111 оптимизации соотношения скорость/искажения и блок 112 энтропийного кодирования. Более детальная информация об упомянутых инструментах приведена в [6]. Предложенный способ может быть реализован в рамках блока 107 межкадрового прогнозирования.
Фиг.2 - схема части гибридного видеокодера многоракурсных видеопоследовательностей, в которой реализуется заявляемый способ. Схема включает в себя блок 201 формирования остатков, блок 202 преобразования и квантования, блок 203 энтропийного кодирования, блок 204 обратного преобразования и обратного квантования, блок 205 формирования прогноза, блок 206 синтеза кадра, блок 207 компенсации, блок 208 буфера опорных кадров, блок 209 оценки служебной информации и блок 210 фильтра в цепи обратной связи кодера. Блоки 201-204, 207 и 210 являются стандартными блоками кодирования, которые используются в известном способе [6] гибридного кодирования.
Блок 206 синтеза кадра является специфическим для сценария многоракурсного кодирования. Блок 206 синтезирует дополнительные синтезированные кадры для кодируемого ракурса из восстановленных кадров других уже закодированных ракурсов и карт глубин. Блок 208 является расширенным буфером опорных кадров, а именно к стандартному буферу опорных кадров (см. [6]) добавлены: функция хранения восстановленных карт глубин и дополнительных синтезированных опорных кадров.
Стандартный блок оценки движения и стандартный блок компенсации движения представляют собой основу для блоков 205 и 209 [6]. Заявляемый способ может быть реализован в рамках блоков 205 и 209. Блок 209 разделен на два подблока. Подблок 209.1 генерирует служебную информацию, передаваемую в декодер в виде элементов битового потока. Подблок 209.2 формирует служебную информацию, которая может быть сгенерирована на стороне декодера без ее передачи в сжатом потоке. Заявляемый способ включен в подблок 209.2.
Вектора движения и индексы опорных кадров, в которые указывают эти вектора, являются основной частью служебной информации кодируемого блока. В [1] сначала производится оценка вектора движения путем сопоставления пикселей кодируемого блока и пикселей блоков области поиска блока-прогноза. Спрогнозированный вектор движения представляют как сумму прогноза вектора движения (этот прогноз представляет собой выведенную служебную информацию, не передаваемую в потоке) и поправки к прогнозу вектора движения (эта поправка передаётся в потоке и представляет собой передаваемую в потоке служебную информацию). Такое представление используется для эффективного кодирования вектора движения. Прогноз вектора движения рассчитывают (выводят) с помощью векторов движения из ранее закодированных блоков.
В заявляемом способе предлагается не передавать в потоке поправку к прогнозу вектора движения, а выведение прогноза вектора движения и индекса опорного кадра осуществлять с помощью синтезированных опорных кадров, опорных кадров из видеопоследовательности кодируемого ракурса и восстановленных (уже закодированных и декодированных) пикселей области в окрестности кодируемого блока. Таким образом, для выведения вектора движения и индекса опорного кадра для кодируемого блока используется только восстановленная информация, идентичная той, что есть и на стороне декодера. Следовательно, та же процедура выведения вектора движения и индекса опорного кадра может быть выполнена на стороне декодера идентичным образом с идентичным результатом. Поэтому не требуется передача дополнительной служебной информации о движении в потоке (такой как поправка к прогнозу вектора движения или индекс опорного кадра).
Основной этап заявляемого способа - это поиск вектора движения и индекса опорного кадра для кодируемого блока. Результатом выполнения этого этапа является выбор опорного кадра (индекс опорного кадра) и блока в этом опорном кадре (вектор движения указывает на этот блок), который является блоком-прогнозом для кодируемого блока.
На Фиг.3 показано, что для каждого кодируемого блока 305 в кодируемом кадре 301 выполняют следующие этапы, исходя из того, что размер кодируемого блока определен как M×N (например: 4×4); и координаты кодируемого блока (его левого верхнего угла) в кодируемом кадре обозначены как (i,j).
Этап 1. В синтезированном кодируемом кадре 302 выбирают синтезированный текущий блок 306. Размер синтезированного текущего блока определяется как (M+2·OSx)×(N+2·OSy) (например: 8×8). Координаты синтезированного текущего блока в синтезированном кодируемом кадре определяются как (i-OSx, j-OSy). Выполняют поиск синтезированного вектора 310 движения (VMV) для синтезированного текущего блока в синтезированном опорном кадре 303, который соответствует опорному кадру 304 видеопоследовательности кодируемого ракурса. Поиск производится в ограниченной опорной зоне 309 методом полного перебора. Сначала производится поиск наилучшей позиции с целочисленными координатами, а затем производится поиск позиции с четвертьпиксельными координатами вокруг наилучшей позиции с целочисленными координатами. Поиск производится методом сопоставления блоков. Сопоставляются синтезированный текущий блок и каждый из блоков в опорной зоне синтезированного опорного кадра.
Для определения наилучшего сопоставления задаётся критерий минимизации (которым может служить норма или функция сходства сопоставляемых блоков [7]), который вычисляется каждый раз для синтезированного текущего блока и блока-кандидата из опорной зоны. Блок в опорной зоне синтезированного опорного кадра, сопоставление с которым даёт минимум критерия минимизации, признаётся лучшим, а смещение данного блока относительно позиции синтезированного текущего блока и есть синтезированный вектор движения.
Этап 2. VMV уточняют с помощью метода сопоставления шаблонов. Основной принцип формирования шаблона показан на Фиг.4. Цель использования этого метода состоит в том, чтобы осуществить такое же уточнение в декодере, не используя исходные значения пикселей кодируемого блока. Для этого идентичным образом на стороне кодера и на стороне декодера для кодируемого блока 401 в кодируемом кадре 402 определяют область 403 в виде Г-образного шаблона толщиной ts пикселей, расположенную слева сверху от кодируемого блока. Таким образом, этот шаблон покрывает только часть восстановленной области 404 кодируемого кадра, поскольку декодирование блоков, как и кодирование, выполняется слева направо сверху вниз. На Фиг.5 даны пояснения к тому, как выполняется поиск с помощью метода сопоставления шаблонов. Выбирают шаблон кодируемого блока 501, который имеет координаты (i,j) 502, задающие положение кодируемого блока в кодируемом кадре 508. Поиск наилучшего соответствующего шаблона в опорном кадре 509 выполняют в ограниченной окрестности позиции 503, на которую указывает найденный на этапе 1 синтезированный вектор 504 движения VMV. Наилучшее смещение 506 определяется методом сопоставления шаблонов с помощью критерия минимизации между шаблоном кодируемого блока в кодируемом кадре 508 и шаблонами-кандидатами в опорном кадре 509. Сопоставление проводится таким же образом, как и на этапе 1, с тем отличием, что сопоставляются шаблоны, а не блоки и может быть задан другой критерий минимизации. Поиск наилучшего смещения 506 выполняют в относительно малой области 505 в окрестности позиции 503. Размеры этой области - несколько четвертьпикселей. Смещение 506 добавляется к VMV 504, формируя, таким образом, уточненный вектор движения - (RMV) 507. Этот RMV задаёт координаты (i',j') блока-прогноза для кодируемого блока: (i',j')=(i,j);
Во многих реальных видеопоследовательностях присутствует множество неподвижных объектов с нулевыми векторами движения, такие как здания (если камера неподвижна). Кроме того, нулевой вектор движения часто представляет собой более близкий прогноз, чем найденный синтезированный вектор движения. Например, когда в синтезированных кадрах присутствуют ошибочные локальные смещения. Поэтому нулевой вектор движения (ZMV) имеет смысл дополнительно рассматривать в качестве альтернативного прогноза вектора движения. Третий этап используется в одной из реализаций заявляемого способа.
Этап 3. Для выбора между RMV и ZMV используют методику, также основанную методе сопоставления шаблонов. Более детально это показано на Фиг. 6. Для этого вычисляют значение функции сходства между шаблоном кодируемого блока 601 в кодируемом кадре и шаблоном 602, на который указывает RMV 604 в опорном кадре. Затем вычисляют значение функции сходства между шаблоном кодируемого блока 601 и шаблоном 603, который задаётся координатами (i,j) в опорном кадре, что соответствует применению ZMV 605. ZMV выбирается в качестве окончательного вектора движения (FMV) для кодируемого блока, когда значение функции сходства для шаблона RMV меньше значения функции сходства для шаблона ZMV. RMV выбирается в качестве FMV в противном случае.
FMV (или RMV, если этап 3 не выполнялся) используется для формирования блока-прогноза традиционным способом [6].
Различные критерии минимизации (функции сходства) могут использоваться в каждом этапе. Для первого этапа, когда выполняют поиск VMV, рекомендуется использование критериев минимизации, которые используются для поиска естественного движения и для зашумлённых изображений [7]. В качестве примера можно использовать сумму модулей разностей (SAD):
где Es[m,n] - значения пикселей синтезированного текущего блока в синтезированном кодируемом кадре Es, Rs[m+vmvx,n+vmvy] - значения пикселей синтезированного опорного блока в синтезированном опорном кадре Rs, на синтезированный опорный блок указывает кандидат в синтезированные векторы движения [vmvx, vmvy], [m,n] - это координаты пикселя в кадре.
Для второго и третьего этапов, когда используется метод сопоставления шаблонов, рекомендуется применять одну из двух функций сходства:
- Первая представляет собой сумму взвешенных модулей разности WSAD .
где Et[m,n] - значения восстановленных пикселей шаблона в кодируемом кадре Et, Rt[m+rmvx, n+rmvy] - значения пикселей шаблона в опорном кадре Rt, [rmvx, rmvy] - координаты кандидата в уточненные векторы движения или нулевой вектор движения. Весовые коэффициенты w(m,n) определяют для каждого пикселя с координатами [m,n] в шаблоне. Весовой коэффициент равен разности между размером шаблона ts и кратчайшим расстоянием в пикселях от текущего пикселя с координатами [m,n] шаблона 702 до блока 701, которому данный шаблон соответствует (см. пример распределения веса на Фиг. 7, где ts=3).
- Вторая функция сходства GradNorm использует локальные градиенты:
m'=m+rmvx, n'=n+rmvy.
Пиксели опорного кадра Rt следует использовать, когда координаты m+1, n или m, n+1 или m+1, n+1 расположены вне области шаблона.
Для улучшения результатов работы алгоритма оценки движения [6] используют несколько опорных кадров, а не один. В традиционных схемах кодирования видеопоследовательностей выполняют оценку векторов движения для каждого опорного кадра, и затем выбирают опорный кадр с наилучшим вектором движения (с минимальным критерием минимизации или лучшей функцией сходства).
В случае наличия нескольких опорных кадров, предлагается использовать заявляемый способ следующим образом. Основной этап вышеизложенного способа повторяют для каждого опорного кадра. Затем выбирают тот опорный кадр, на который указывает FMV и который обеспечивает наименьшее значение критерия минимизации.
Оценка двунаправленного движения представляет собой еще одно усовершенствование традиционной схемы кодирования видеопоследовательностей [6]. Эта процедура состоит в использовании в качестве блока-прогноза полусуммы (или взвешенной суммы) двух блоков-прогнозов, на которые указывают два разных вектора движения. Обычно, такие векторы движения указывают на различные опорные кадры.
Предлагается следующий способ оценки двунаправленного вектора движения:
- Этап 1 выполняют для каждого синтезированного опорного кадра и находят синтезированный вектор движения для каждого из них. Затем этапы 2 и 3 выполняются для каждого опорного кадра для того, чтобы получить FMV. Найденные FMV запоминаются для каждого опорного кадра.
Далее осуществляют корректировку каждой пары, FMVr1, FMVr2 из опорных кадров (r1, r2) (см. Фиг. 8):
где Norm - это критерий минимизации (или функция сходства), например, GradNorm или WSAD; biFMVr1, biFMVr2 - это скорректированный двунаправленный вектор движения; biRt(mvr1, mvr2) - полу-сумма шаблонов из опорного кадра r1 801, и опорного кадра r2 802; Et - это шаблон кодируемого блока 804 в кодируемом кадре 803; Rtr1(mvr1) и Rtr2(mvr2) - шаблоны 805 и 806 из опорного кадра r1 и опорного кадра r2, на которые указывают векторы-кандидаты mvr1, mvr2 807, 808; SAr1, SAr2 - это малые опорные области 809, 810 в опорном кадре r1 и опорном кадре r2 с центрами в координатах, указанных векторами FMVr1, FMVr2 811, 812. Выбирают пару (biFMVr1, biFMVr2) с наилучшим критерием минимизации из всех возможных пар (r1, r2) в качестве окончательного двунаправленного вектора движения biFMV. biFMV используется для компенсации движения обычным образом (см. [6]) путём получения блока-прогноза tPb из опорных кадров.
Важно, чтобы критерий минимизации для biFMV и критерий минимизации для однонаправленного вектора движения FMV были одинаковыми. Тогда имеется возможность выбрать наилучший вектор движения из biFMV и FMV.
Вышеупомянутый способ достаточно просто обобщается на случай многонаправленной схемы [8] компенсации движения. Так как векторы движения и индексы опорных кадров не передаются в потоке (следовательно, битовая скорость кодирования не увеличивается), можно найти векторы движения для каждого имеющегося опорного кадра. Более того, появляются широкие возможности использования взвешенных блоков-прогнозов вместо усреднения, которое производится в [8]. Например, можно использов