Неявное взвешивание опорных изображений в видеокодере
Иллюстрации
Показать всеИзобретение относится к системам сжатия видеоизображения. Техническим результатом является улучшение сжатия видеоизображения. Результат достигается тем, что для обработки данных видеосигнала для блока изображения с индексами двух опорных изображений для предсказания этого блока изображения используют неявное взвешивание опорных изображений, при этом декодер включает в себя модуль неявных весовых коэффициентов опорных изображений для определения весового коэффициента, соответствующего каждому индексу опорного изображения; кодер включает в себя модуль назначения неявного весового коэффициента опорного изображения для определения весового коэффициента для каждого индекса опорного изображения, а способ декодирования включает в себя прием индексов опорных изображений с данными, которые соответствуют блоку изображения, определение неявного весового коэффициента в ответ на положение блока изображения относительно опорных изображений, указываемых каждым индексом опорного изображения, извлечение опорного изображения для каждого индекса, выполнение компенсации движения в отношении извлеченного опорного изображения и умножение опорных изображений, в отношении которых выполнена компенсация движения, на соответствующий вес. 2 н. и 12 з.п. ф-лы, 6 ил.
Реферат
Перекрестные ссылки на родственные заявки
По этой заявке испрашивается приоритет предварительной заявки на патент США № 60/415443, поданной 1 октября 2002 г., которая включена в настоящее описание посредством ссылки во всей своей полноте.
Область техники, к которой относится изобретение
Настоящее изобретение относится к видеокодекам.
Предшествующий уровень техники
Видеоданные в основном обрабатываются и передаются в виде битовых потоков. Обычно кодеры и декодеры ("кодеки") видеосжатия обеспечивают большую часть эффективности сжатия посредством формирования предсказания опорного изображения для изображения, подлежащего кодированию, и кодирования разности между текущим изображением и предсказанием. Чем сильнее это предсказание коррелировано с текущим изображением, тем меньше бит необходимо для сжатия этого изображения, вследствие чего увеличивается эффективность обработки. Таким образом, желательно, чтобы формировалось наилучшее возможное предсказание опорного изображения.
В некоторых видеопоследовательностях, в особенности с плавной сменой изображений (наплывом), текущее изображение, подлежащее кодированию или декодированию, более сильно коррелировано с опорным изображением, масштабированным некоторым весовым коэффициентом, чем с самим опорным изображением. Видеокодеки без весовых коэффициентов, применяемые к опорным изображениям, кодируют такие последовательности изображений с наплывом очень неэффективно. К сожалению, передача весовых коэффициентов требует, чтобы некоторые дополнительные биты пересылались в битовом потоке.
Во многих стандартах видеосжатия, включая стандарты Экспертной группы по вопросам движущегося изображения MPEG-1, MPEG-2 и MPEG-4, вариант предыдущего опорного изображения, в отношении которого выполнена компенсация движения, используется как предсказание для текущего изображения и кодируется только разность между текущим изображением и предсказанием. Когда используется предсказание единственного изображения ("Р"-изображение), опорное изображение не масштабируется, когда формируется предсказание с компенсацией движения.
Когда используются двунаправленные предсказания изображений ("В"-изображения), формируются промежуточные предсказания на основе двух различных изображений, и затем два промежуточных предсказания совместно усредняются с использованием одинаковых весовых коэффициентов (1/2, 1/2) для каждого с целью формирования единственного усредненного предсказания. В этих стандартах MPEG всегда есть два опорных изображения, одно из которых соответствует направлению вперед, а другое - направлению назад, для В-изображений.
Сущность изобретения
На разрешение этих и других недостатков предшествующего уровня техники ориентирован видеокодер, предназначенный для декодирования данных видеосигнала для блока изображения и множества индексов опорных изображений. Кодер содержит функциональный модуль задания весового коэффициента опорного изображения, реагирующий на положение блока изображения относительно первого и второго опорных изображений, указанных упомянутым множеством индексов опорных изображений. Модуль задания весового коэффициента опорного изображения используется для вычисления неявного весового коэффициента опорного изображения, соответствующего конкретному индексу опорного изображения.
Эти и другие аспекты, признаки и преимущества настоящего изобретения станут очевидными из нижеследующего описания примерных вариантов осуществления, которое следует читать совместно с сопровождающими чертежами.
Перечень фигур чертежей
Настоящее изобретение использует неявное взвешивание опорных изображений в видеокодерах и видеодекодерах в соответствии с нижеследующими примерными чертежами, на которых:
фиг.1 - блок-схема видеокодера в соответствии с принципами настоящего изобретения;
фиг.2 - блок-схема видеодекодера с неявным взвешиванием опорных изображений в соответствии с принципами настоящего изобретения;
фиг.3 - блок-схема алгоритма процесса декодирования в соответствии с принципами настоящего изобретения;
фиг.4 - блок-схема видеокодера в соответствии с принципами настоящего изобретения;
фиг.5 - блок-схема видеокодера с неявным взвешиванием опорных изображений в соответствии с принципами настоящего изобретения; и
фиг.6 - блок-схема алгоритма процесса кодирования в соответствии с принципами настоящего изобретения.
Подробное описание предпочтительных вариантов осуществления
Настоящее изобретение включает в себя устройство и способ для неявного взвешивания опорных изображений в видеокодеках. Например, в видеопоследовательностях с наплывом текущее изображение или блок изображения, подлежащий кодированию, более сильно коррелирован с опорным изображением, масштабированным некоторым весовым коэффициентом, чем с самим опорным изображением. Видеокодеки без весовых коэффициентов, применяемые к опорным изображениям, очень неэффективно кодируют последовательности с наплывом. Когда используются весовые коэффициенты при кодировании, видеокодеру необходимо определить как весовые коэффициенты, так и векторы движения.
В стандарте видеосжатия Объединенной видеогруппы (JVT) каждое Р-изображение может использовать множество опорных изображений для формирования предсказания изображения, но каждый отдельный блок движения или область 8×8 макроблока использует только одно опорное изображение для предсказания. В дополнении к кодированию и передаче векторов движения передается индекс опорного изображения для каждого блока движения или области 8×8, указывающий, какое опорное изображение используется. Ограниченный набор возможных опорных изображений сохраняется как в кодере, так и в декодере, и при этом передаются несколько допустимых опорных изображений.
Для изображений с двунаправленным предсказанием (также называемых "В"-изображениями) формируются два параметра предсказания (предиктора) для каждого блока движения или области 8×8, каждый из которых может быть от отдельного опорного изображения, и эти два параметра предсказания совместно усредняются для формирования одного усредненного параметра предсказания. Для блоков движения, кодированных с двунаправленным предсказанием, опорные изображения могут быть оба из направления вперед, оба из направления назад или одно из направлений вперед и одно из направлений назад. Поддерживаются два списка доступных опорных изображений, которые могут использоваться для предсказания. Два опорных изображения могут быть названы как параметры предсказания списка 0 и списка 1 или опорные изображения ref0 и ref1. Для каждого опорного изображения кодируется и передается индекс, ref_idx_I0 и ref_idx_I1, для опорных изображений списков 0 и 1 соответственно. Изображения двунаправленного предсказания Объединенной видеогруппы ("JVT") или "В"-изображения предложены для обеспечения адаптивного взвешивания между двумя предсказаниями, т.е.
Pred = P1 * Pred1 + P0 * Pred0 + D, (1)
где P1 и P0 - весовые коэффициенты, Pred0 и Pred1 - предсказания опорных изображений для списка 0 и списка 1 соответственно, а D - смещение.
Предложено по меньшей мере два способа для определения и использования весовых коэффициентов - неявный способ и явный способ. При использовании неявного способа весовые коэффициенты определяются направлениями, которые используются для опорных изображений. В этом способе, если индекс ref_fwd меньше, чем индекс ref_bwd, или равен индексу ref_bwd, используются весовые коэффициенты (1/2, 1/2), в противном случае используются весовые коэффициенты (2, -1). В неявном режиме весовые коэффициенты (2, -1) всегда используются для макроблоков, кодируемых в прямом режиме.
При использовании явного способа передается любое количество весовых коэффициентов для каждого слоя. Индекс весового коэффициента затем передается для каждого блока движения или области 8×8 макроблока, который использует двунаправленное предсказание. Декодер использует принятый индекс весового коэффициента для выбора соответствующего весового коэффициента из переданного набора для использования при декодировании блока движения или области 8×8.
Предложено также явно передавать весовой коэффициент, связанный с каждым индексом опорного изображения, один на слой или изображение. В этом случае требуется малое, но не пренебрежимое, количество битов, подлежащих передаче для каждого слоя или изображения.
Нижеследующее описание только иллюстрирует принципы изобретения. Таким образом, понятно, что специалист в данной области техники сумеет придумать различные компоновки, которые, хотя не описаны и не показаны здесь явно, воплощают принципы изобретения, и включены в рамки объема и сущности изобретения. Кроме того, все примеры и условный язык, приведенные здесь, принципиально и специально предназначены только для обучающих целей в помощь читателю при понимании принципов изобретения и концепций, внесенных изобретателем для развития уровня техники, которые должны истолковываться как не являющиеся ограниченными такими приведенными здесь конкретными примерами и условиями.
Кроме того, все утверждения относительно приводимых здесь принципов, аспектов и вариантов осуществления изобретения, а также конкретные его примеры предназначены для охвата его структурных и функциональных эквивалентов. Дополнительно подразумевается, что такие эквиваленты включают в себя известные на текущий момент эквиваленты и эквиваленты, которые будут разработаны в будущем, т.е. любые разработанные элементы, которые осуществляют такую же функцию, независимо от структуры.
Таким образом, например, специалистам в этой области техники будет понятно, что блок-схемы представляют здесь общие представления иллюстративной схемы, воплощающей принципы изобретения. Подобно этому будет понятно, что любые блок-схемы алгоритмов, блок-схемы последовательностей операций, диаграммы изменения состояний, псевдокод и тому подобное представляют различные процессы, которые могут быть по существу представлены в машиночитаемом носителе информации и исполнены компьютером или процессором, независимо от того, показан или нет явно такой компьютер или процессор.
Функции различных элементов, показанных на чертежах, могут быть обеспечены посредством использования специализированного аппаратного обеспечения, а также аппаратного обеспечения, выполненного с возможностью исполнения программного обеспечения в связке с соответствующим программным обеспечением. При обеспечении посредством процессора, функции могут быть обеспечены одним специализированным процессором, одним совместно используемым процессором или множеством отдельных процессоров, некоторые из которых могут совместно использоваться.
Кроме того, явное использование термина "процессор" или "контроллер" не следует истолковывать как относящийся исключительно к аппаратному обеспечению, выполненному с возможностью исполнения программного обеспечения, он может неявно включать, без ограничения, аппаратное обеспечение цифрового процессора сигналов (DSP), постоянное запоминающее устройство (ПЗУ, ROM) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ, RAM) и энергонезависимое запоминающее устройство. Другое аппаратное обеспечение, обычное и/или заказное, может быть также включено. Подобно этому, любые переключатели, показанные на чертежах, являются только схематичными. Их функция может быть выполнена благодаря работе логических программных средств, благодаря специализированным логическим средствам, благодаря взаимодействию программного управления и специализированных логических средств, или даже вручную, при этом конкретный способ выбирается производителем, как более конкретно понятно из контекста.
В формуле изобретения любой элемент, выраженный как средство для осуществления определенной функции, предназначен для обобщения любого пути осуществления этой функции, включая, например, а) комбинацию схемных элементов, которые осуществляют эту функцию, или б) программное обеспечение в любой форме, включая, в том числе, микропрограммное обеспечение, микрокод или тому подобное, объединенное с соответствующей схемой для выполнения этого программного обеспечения для исполнения функции. Изобретение, определенное такой формулой изобретения, указывает на тот факт, что функциональные возможности, обеспечиваемые различными упомянутыми средствами, объединяются и совместно сводятся таким образом, как предусмотрено в формуле изобретения. Заявитель, таким образом, рассматривает любые средства, которые могут обеспечивать эти функциональные возможности, как эквиваленты тем, которые показаны здесь.
В вариантах осуществления настоящего изобретения неявный весовой коэффициент применяется для предсказания опорного изображения в кодере и декодере видеосжатия, которые используют множество опорных изображений. Когда блок закодирован с двунаправленным предсказанием и используется новый неявный режим, описанный здесь, расстояния между текущим изображением и опорными изображениями используются для определения относительных весовых коэффициентов на основе формулы интерполяции/экстраполяции.
Как показано на фиг.1, видеодекодер обозначается в общем ссылочной позицией 100. Видеодекодер 100 включает в себя декодер 110 переменной длины поля (VLD), соединенный с возможностью обмена сигналами с инверсным квантователем 120. Инверсный квантователь 120 соединен с возможностью обмена сигналами с инверсным преобразователем 130. Инверсный преобразователь 130 соединен с возможностью обмена сигналами с первым входным контактом сумматора или суммирующего соединения 140, при этом выход суммирующего соединения 140 формирует выход видеодекодера 100. Выход суммирующего соединения 140 соединен с возможностью обмена сигналами с хранилищем 150 опорных изображений. Хранилище 150 опорных изображений соединено с возможностью обмена сигналами с компенсатором 160 движения, который соединен с возможностью обмена сигналами со вторым входным контактом суммирующего соединения 140.
На фиг.2 видеодекодер с неявным взвешиванием опорных изображений обозначен в общем ссылочной позицией 200. Видеодекодер 200 включает в себя VLD 210, соединенный с возможностью обмена сигналами с инверсным квантователем 220. Инверсный квантователь 220 соединен с возможностью обмена сигналами с инверсным преобразователем 230. Инверсный преобразователь 230 соединен с возможностью обмена сигналами связью с первым входным контактом суммирующего соединения 240, при этом выход суммирующего соединения 240 формирует выход видеодекодера 200. Выход суммирующего соединения 240 соединен с возможностью обмена сигналами с хранилищем 250 опорных изображений. Хранилище 250 опорных изображений соединено с возможностью обмена сигналами с компенсатором 260 движения, который соединен с возможностью обмена сигналами с первым входом перемножителя 270.
VLD 210, кроме того, соединен с возможностью обмена сигналами с поисковой таблицей 280 весовых коэффициентов опорных изображений для предоставления индекса неявного коэффициента двунаправленного предсказания поисковой таблице 280. Выход поисковой таблицы 280 предназначен для обеспечения весового коэффициента и соединен с возможностью обмена сигналами со вторым входом перемножителя 270. Выход перемножителя 270 соединен с возможностью обмена сигналами со вторым входным контактом суммирующего соединения 240.
На фиг.3 примерный процесс декодирования данных видеосигнала для блока изображения с неявным взвешиванием опорных изображений обозначен в общем ссылочной позицией 300. Процесс включает в себя этап 310 начала, с которого управление передается этапу 312 ввода. На этапе 312 ввода принимают сжатые данные блока изображения и передают управление этапу 313 ввода. На этапе 313 ввода принимают индекс первого опорного изображения, соответствующий первому конкретному опорному изображению, и передают управление этапу 314 ввода. На этапе 314 ввода принимают индекс второго опорного изображения, соответствующий второму конкретному опорному изображению. На этапе 314 ввода передают управление функциональному этапу 315, на котором определяют положение блока изображения относительно первого и второго опорных изображений. На функциональном этапе 315 передают управление функциональному этапу 316, на котором вычисляют неявный весовой коэффициент для каждого из принятых индексов опорных изображений на основе положения текущего блока изображения относительно первого и второго опорных изображений, и передают управление функциональному этапу 317.
На функциональном этапе 317 начинают программный цикл, подлежащий исполнению для каждого из двух индексов опорных изображений текущего блока изображения, и передают управление функциональному этапу 318. На функциональном этапе 318 извлекают опорное изображение, соответствующее текущему в цикле индексу опорного изображения, и передают управление функциональному этапу 320. На функциональном этапе 320, в свою очередь, выполняют компенсацию движения в отношении извлеченного опорного изображения и передают управление на функциональный этап 322. На функциональном этапе 322 умножают опорное изображение, в отношении которого выполнена компенсация движения, на соответствующий весовой коэффициент и передают управление на функциональный этап 323. На функциональном этапе 323 выполняют итерацию для повторения цикла с функционального этапа 317 и передают управление функциональному этапу 324, после двойного завершения цикла. На функциональном этапе 324, в свою очередь, формируют объединенное взвешенное опорное изображение, в отношении которого выполнена компенсация движения, и передают управление на этап 326 окончания. Таким образом, относительное положение, определенное на функциональном этапе 315, используется для определения весовых коэффициентов.
Как показано на фиг.4, стандартный видеокодер обозначен в общем ссылочной позицией 400. Вход кодера 400 соединен с возможностью обмена сигналами с неинвертирующим входом суммирующего соединения 410. Выход суммирующего соединения 410 соединен с возможностью обмена сигналами с блочным преобразователем 420. Преобразователь 420 соединен с возможностью обмена сигналами с квантователем 430. Выход квантователя 430 соединен с возможностью обмена сигналами с кодером переменной поля (VLC) 440, при этом выход VLC 440 является доступным извне выходом кодера 400.
Выход квантователя 430 также соединен с возможностью обмена сигналами с инверсным квантователем 450. Инверсный квантователь соединен с возможностью обмена сигналами с инверсным блочным преобразователем 460, который, в свою очередь, соединен с возможностью обмена сигналами с хранилищем 470 опорных изображений. Первый выход хранилища 470 опорных изображений соединен с возможностью обмена сигналами с первым входом модуля 480 оценки движения. Вход декодера 400 также соединен с возможностью обмена сигналами со вторым входом модуля 480 оценки движения. Выход модуля 480 оценки движения соединен с возможностью обмена сигналами с первым входом компенсатора 490 движения. Второй выход хранилища 470 опорных изображений соединен с возможностью обмена сигналами со вторым входом компенсатора 490 движения. Выход компенсатора 490 движения соединен с возможностью обмена сигналами с инвертирующим входом суммирующего соединения 410.
На фиг.5 видеокодер с неявным взвешиванием опорных изображений обозначен в общем позицией 500. Вход кодера 500 соединен с возможностью обмена сигналами с неинвертирующим входом суммирующего соединения 510. Выход суммирующего соединения 510 соединен с возможностью обмена сигналами с блочным преобразователем 520. Преобразователь 520 соединен с возможностью обмена сигналами с квантователем 530. Выход квантователя 530 соединен с возможностью обмена сигналами с VLC 540, при этом выход VLC 440 является доступным извне выходом кодера 500.
Выход квантователя 530 также соединен с возможностью обмена сигналами с инверсным квантователем 550. Инверсный квантователь 550 соединен с возможностью обмена сигналами с инверсным блочным преобразователем 560, который, в свою очередь, соединен с возможностью обмена сигналами с хранилищем 570 опорных изображений. Первый выход хранилища 570 опорных изображений соединен с возможностью обмена сигналами с первым входом модуля 572 назначения весового коэффициента опорного изображения. Вход кодера 500 также соединен с возможностью обмена сигналами со вторым входом модуля 572 назначения весового коэффициента опорного изображения. Выход модуля 572 назначения весового коэффициента опорного изображения, который служит для указания весового коэффициента, соединен с возможностью обмена сигналами с первым входом модуля 580 оценки движения. Второй выход хранилища 570 опорных изображений соединен с возможностью обмена сигналами со вторым входом модуля 580 оценки движения.
Вход кодера 500 также соединен с возможностью обмена сигналами с третьим входом модуля 580 оценки движения. Выход модуля 580 оценки движения, который служит для указания векторов движения, соединен с возможностью обмена сигналами с первым входом компенсатора 590 движения. Третий выход запоминающего устройства 570 соединен с возможностью обмена сигналами со вторым входом компенсатора 590 движения. Выход компенсатора 590 движения, который служит для указания опорного изображения, в отношении которого выполнена компенсация движения, соединен с возможностью обмена сигналами с первым входом перемножителя 592. Выход модуля 572 назначения весового коэффициента опорного сигнала, который служит для указания весового коэффициента, соединен с возможностью обмена сигналами со вторым входом перемножителя 592. Выход перемножителя 592 соединен с возможностью обмена сигналами с инвертирующим входом суммирующего соединения 510.
На фиг.6 примерный процесс для кодирования данных видеосигнала для блока изображения с неявным взвешиванием опорных изображений в общем обозначен позицией 600. Процесс включает в себя этап 610 начала, с которого управление передается этапу 612 ввода. На этапе 612 ввода принимают данные по существу несжатого блока изображения и передают управление функциональному этапу 614. На функциональном этапе 614 выбирают первое и второе опорные изображения для принятого блока изображения из любого или обоих направлений относительно положения блока изображения и передают управление функциональному этапу 616. На функциональном этапе 616 определяют положение блока изображения относительно первого и второго опорных изображений и передают управление функциональному этапу 618. На функциональном этапе 618 вычисляют неявные весовые коэффициенты для каждого конкретного опорного изображения блока изображения на основе относительного положения. С функционального этапа 618 управление передается функциональному этапу 620. На функциональном этапе 620 начинают программный цикл для каждого из двух индексов опорного изображения текущего блока изображения и передают управление функциональному этапу 622. На функциональном этапе 622 вычисляют вектор движения для блока изображения и конкретного опорного изображения и передают управление функциональному этапу 624. На функциональном этапе 624 выполняют компенсацию движения в отношении конкретного опорного изображения в соответствии с вектором движения и передают управление функциональному этапу 626. На функциональном этапе 626, в свою очередь, умножают опорное изображение, в отношении которого выполнена компенсация движения на неявный весовой коэффициент для формирования взвешенного опорного изображения, в отношении которого выполнена компенсация движения, и передают управление функциональному этапу 628. На функциональном этапе 628 выполняют итерацию для повторения цикла функционального этапа 620 и передают управление функциональному этапу 630 после двойного завершения цикла.
На функциональном этапе 630 формируют объединенное взвешенное опорное изображение, в отношении которого выполнена компенсация движения, и передают управление функциональному этапу 632. На функциональном этапе 632 вычитают объединенное взвешенное опорное изображение, в отношении которого выполнена компенсация движения, из по существу несжатого блока изображения и передают управление функциональному этапу 634. На функциональном этапе 634, в свою очередь, кодируют сигнал с помощью разности между по существу несжатым блоком изображения и объединенным взвешенным опорным изображением, в отношении которого выполнена компенсация движения, вместе с соответствующим индексом конкретного опорного изображения и передают управление этапу 636 завершения. Таким образом, два параметра предсказания, соответствующие положению перед, после или по обе стороны относительно текущего изображения, будут сформированы в случае двунаправленного предсказания.
В работе неявный весовой коэффициент применяется к предсказанию опорного изображения кодера и декодера видеосжатия, которые используют множество опорных изображений. Когда блок кодируется с двунаправленным предсказанием и используется новый неявный режим, расстояния текущего изображения от опорного изображения используются для определения соответствующих весовых коэффициентов на основе формулы интерполяции/экстраполяции.
Для предпочтительных вариантов осуществления настоящего изобретения устанавливается новое определение неявного двунаправленного предсказания. Используется формула интерполяции или экстраполяции, основывающаяся на расстоянии между кодированным изображением и его опорными изображениями. Одна и та же формула используется для интерполяции или экстраполяции. Формула становится формулой интерполяции, если одно из двух опорных изображений в порядке отображения находится перед текущим кодированным изображением, а другое - после текущего кодированного изображения, и она становится формулой экстраполяции, если опорные изображения в порядке отображения находятся или оба перед, или оба после текущего кодированного изображения.
Текущее изображение подлежит отображению во время Т, опорное изображение P0 подлежит отображению во время Т0, и опорное изображение Р1 подлежит отображению во время Т1. В этом неявном режиме для макроблоков, кодированных с двунаправленным предсказанием, предсказание определяется как
Pred=P0*(T1-T)/(T1-T0)+P1*(T-T0)/(T1-T0), (2)
Значения Т, Т1 и Т0 относительных времен отображения присутствуют в заголовках соответствующих изображений. В неявном режиме определение весового коэффициента WP может быть основано на счете порядка изображений (СПИ, POC), а не на времени отображения. СПИ присутствует в заголовке слоя или выводится из заголовка слоя. Таким образом, будет понятно специалисту в данной области техники, что СПИ может быть использован вместо времени отображения. Варианты осуществления, в которых сохраняют эту информацию о положении относительно опорных изображений при их декодировании, могут быть также реализованы. Времена Т1 и Т0 отображения сохраняют при декодировании изображений Р1 и Р0.
Когда изображения декодируются, их СПИ или времена отображения, или информация о положении сохраняются. Когда весовые коэффициенты подлежат вычислению, осуществляется доступ к этим сохраненным данным о положении с помощью индексов опорных изображений для указания того, какие сохраненные данные о положении использовать. Эта информация сохраняется для масштабирования векторов движения в прямом режиме. Вычисления (T1-T)/(T1-T0) и (T-T0)/(T1-T0) также используются для прямого режима, и результат вычисления может быть сохранен и повторно использован для исключения необходимости в повторных вычислениях. Эти вычисления деления могут быть выполнены для каждого кодированного изображения, однократно для каждого значения Т, Т0 и Т1, и этот результат может быть масштабирован постоянным коэффициентом Х для разрешения более эффективных операций сдвига, а не операций деления для вычисления значений Pred для каждого пикселя. Например, если Х равен 256, Z0 и Z1 могут быть вычислены один раз для каждого изображения следующим образом:
Z0=(256* (T1-T))/(T1-T0), (3)
Z1=(256* (T-T0))/(T1-T0), (4)
Затем Pred вычисляется один раз для каждого пикселя как:
Pred=(P00+P1 Z1+128)>>8, (5)
Ограничение значения Pred до желаемого диапазона, обычно от 0 до 255, может быть сделано после этого вычисления. Значения Z0 и Z1 могут также быть ограничены. Для коэффициентов цветности, которые центрируются около 128, может использоваться следующая примерная формула:
Pred=(P0-128)*(T1-T))/(T1-T0)+(P1-128)*(T-T0))/(T1-T0)+128, (6)
В прямом режиме опорные индексы опорного изображения 0 и опорного изображения 1 не передаются явно, но выводятся. В этом случае весовой коэффициент вычисляется на основе выведенных значений Т1 и Т0. Индексы опорных изображений в битовом потоке, когда они доступны, могут использоваться для нахождения Т0 и Т1.
С макроблоками, кодированными с двунаправленным предсказанием, при линейном наплыве предложенное взвешивание будет идеальным. В этом случае может быть достигнуто снижение скорости передачи в битах, поскольку не нужно никаких битов для передачи весовых коэффициентов, связанных с каждым опорным изображением.
Для случая, когда Р1 соответствует двум опорным изображениям, предшествующим текущему изображению, а Р0 соответствует одному опорному изображению, предшествующему текущему изображению, формула сводится к:
Pred=2*P0-P1, (7)
Эти и другие признаки и преимущества настоящего изобретения могут быть без труда установлены одним из специалистов в данной области техники на основе принципов, раскрытых здесь. Понятно, что принципы настоящего изобретения могут быть реализованы в различных формах аппаратного обеспечения, программного обеспечения, микропрограммного обеспечения, специализированных процессоров или их комбинаций.
Наиболее предпочтительна реализация настоящего изобретения в качестве комбинации аппаратного обеспечения и программного обеспечения. Кроме того, предпочтительной реализацией программного обеспечения является прикладная программа, материально воплощенная в устройстве хранения программ. Прикладная программа может быть загружена и исполнена машиной, содержащей любую подходящую архитектуру. Предпочтительно, машина реализована на компьютерной платформе, имеющей аппаратное обеспечение, такое как один или более центральных процессоров (ЦП, CPU), оперативное запоминающее устройство (ОЗУ) и интерфейсы ввода/вывода (I/O). Компьютерная платформа может также включать в себя операционную систему и код микрокоманд. Различные процессы и функции, описанные здесь, могут быть или частью кода микрокоманд, или частью прикладной программы, или какой-либо их комбинации, которые могут быть исполнены ЦП. В дополнение к этому к компьютерной платформе могут быть подсоединены различные другие периферийные устройства, такие как дополнительное устройство хранения данных и устройство печати.
Понятно также, что поскольку некоторые из составляющих системных компонентов и способов, описанных в сопровождающих чертежах, предпочтительно реализуются в программном обеспечении, действительные соединения между системными компонентами или функциональными блоками процесса могут отличаться в зависимости от способа, которым настоящее изобретение программируется. Имея принципы настоящего изобретения, описанные здесь, специалист в данной области техники сможет предположить эти и подобные реализации или конфигурации настоящего изобретения.
Хотя иллюстративные варианты осуществления описаны здесь со ссылками на сопровождающие чертежи, понятно, что настоящее изобретение не ограничивается именно этими вариантами осуществления и что различные изменения и модификации могут быть внесены в них специалистом в данной области техники без отхода от объема или сущности настоящего изобретения. Подразумевается, что все такие изменения и модификации включены в объем настоящего изобретения, определяемый прилагаемой формулой изобретения.
1. Видеокодер (500) для кодирования с предсказанием данных видеосигнала для блока изображения и множества индексов опорных изображений, при этом видеокодер содержит модуль (572) назначения весового коэффициента опорного изображения, реагирующий на положение блока изображения относительно первого и второго опорных изображений, указанных упомянутым множеством индексов опорных изображений, при этом модуль назначения весового коэффициента опорного изображения предназначен для вычисления неявного весового коэффициента для опорного изображения, соответствующего конкретному индексу опорного изображения.
2. Видеокодер (500) по п.1, в котором модуль (572) назначения весового коэффициента опорного изображения содержит
секцию интерполяции для интерполяции между частями двух опорных изображений, одно из которых расположено перед блоком изображения, а другое - после блока изображения в порядке отображения; и
секцию экстраполяции для экстраполяции из частей двух опорных изображений, оба из которых расположены перед блоком изображения или оба из которых расположены после блока изображения в порядке отображения.
3. Видеокодер (500) по п.1, дополнительно содержащий хранилище (570) опорных изображений, соединенное с возможностью обмена сигналами с модулем (572) назначения весового коэффициента опорного изображения и предназначенное для предоставления опорного изображения, соответствующего каждому индексу опорного сигнала.
4. Видеокодер (500) по п.1, дополнительно содержащий кодер (540) переменной длины поля, соединенный с возможностью обмена сигналами с модулем (572) назначения весового коэффициента опорного изображения и предназначенный для кодирования индексов первого и второго опорных изображений.
5. Видеокодер (500) по п.1, дополнительно содержащий модуль (590) компенсации движения, соединенный с возможностью обмена сигналами с модулем (572) назначения весового коэффициента опорного изображения и предназначенный для предоставления опорных изображений, в отношении которых выполнена компенсация движения, в качестве реакции на модуль назначения весового коэффициента опорного изображения.
6. Видеокодер (500) по п.5, дополнительно содержащий перемножитель (592), соединенный с возможностью обмена сигналами с модулем (590) компенсации движения и модулем (572) назначения весового коэффициента опорного изображения и предназначенный для применения весового коэффициента к опорному изображению, в отношении которого выполнена компенсация движения.
7. Видеокодер (500) по п.6, дополнительно содержащий средство предсказания для формирования первого и второго параметров предсказания на основе двух различных опорных изображений.
8. Видеокодер (500) по п.7, в котором упомянутые два различных опорных изображения соответствуют одному и тому же направлению по отношению к блоку изображения.
9. Способ (600) кодирования данных видеосигнала для блока изображения, содержащий этапы, на которых
принимают (612) по существу несжатый блок изображения;
вычисляют (614, 616, 618) неявные весовые коэффициенты для блока изображения в качестве реакции на положение блока изображения относительно первого и второго опорных изображений, указанных индексами первого и второго опорных изображений;
вычисляют (622) векторы движения для блока изображения и каждого из первого и второго опорных изображений;
выполняют компенсацию (624) движения в отношении каждого из первого и второго опорных изображений согласно соответствующим векторам движения; и
умножают (626) каждое из опорных изображений, в отношении которых выполнена компенсация движения, на его вычисленный неявный весовой коэффициент для формирования взв