Усовершенствованные технологии интерполяции для компенсации движения при кодировании видео

Изобретение относится к кодированию цифрового видео, и в частности к дробным интерполяциям прогнозирующих данных, используемым при кодировании видео. Техническим результатом является создание технологии интерполяции, выполняемой посредством кодера и декодера в ходе процесса компенсации движения кодирования видео. Указанный технический результат достигается тем, что кодер интерполирует пиксельные значения опорных видеоданных на основе множества различных заранее заданных интерполяционных фильтров. Декодер принимает элемент синтаксиса, который идентифицирует интерполяционный фильтр, и интерполирует пиксельные значения опорных видеоданных на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса. В другом примере способ интерполяции прогнозирующих видеоданных включает в себя формирование полупиксельных значений на основе целопиксельных значений, округление полупиксельных значений, чтобы формировать полупиксельные интерполированные значения, сохранение полупиксельных значений как неокругленных версий полупиксельных значений и формирование четвертьпиксельных значений на основе неокругленных версий полупиксельных значений и целопиксельных значений. 6 н. и 20 з.п. ф-лы, 11 ил., 8 табл.

 

Данная заявка притязает на приоритет предварительной заявки на патент (США) 61/044023, поданной 10 апреля 2008 года, предварительной заявки на патент (США) 61/044240, поданной 11 апреля 2008 года, и предварительной заявки на патент (США) номер 61/057373, поданной 30 мая 2008 года, все содержимое которых содержится в данном документе по ссылке.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Данное раскрытие сущности относится к кодированию цифрового видео, а более конкретно, к дробным интерполяциям прогнозирующих данных, используемым при кодировании видео.

УРОВЕНЬ ТЕХНИКИ

Возможности цифрового видео могут быть встроены в широкий диапазон устройств, в том числе в цифровые телевизоры, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), портативные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, устройства видеоигр, консоли видеоигр, сотовые или спутниковые радиотелефоны и т.п. Цифровые видеоустройства реализуют такие технологии сжатия видеоизображения, как MPEG-2, MPEG-4 или ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), чтобы более эффективно передавать и принимать цифровую видеоинформацию. Технологии сжатия видео могут выполнять пространственное прогнозирование и/или временное прогнозирование, чтобы уменьшать или удалять избыточность, внутренне присутствующую в видеопоследовательностях.

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

Видеокодер также может применять процессы преобразования, квантования и энтропийного кодирования для того, чтобы дополнительно уменьшать скорость передачи битов, ассоциированную с передачей остаточных блоков. Технологии преобразования могут содержать дискретные косинусные преобразования (DCT) или концептуально аналогичные процессы. Альтернативно, вейвлет-преобразования, целочисленные преобразования или другие типы преобразований могут использоваться. В процессе DCT в качестве примера набор пиксельных значений преобразуется в коэффициенты преобразования, которые могут представлять энергию пиксельных значений в частотном домене. Квантование применяется к коэффициентам преобразования и, в общем, заключает в себе процесс, который ограничивает число битов, ассоциированных с любым данным коэффициентом преобразования. Энтропийное кодирование содержит один или более процессов, которые совместно сжимают последовательность квантованных коэффициентов преобразования. Примеры энтропийного кодирования включают в себя, но не только, контекстно-адаптивное кодирование переменной длины (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (CABAC).

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

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Технологии, описанные в данном раскрытии сущности, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. Если реализованы в программном обеспечении, программное обеспечение может выполняться в одном или более процессоров, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или процессор цифровых сигналов (DSP). Программное обеспечение, которое выполняет технологии, может быть первоначально сохранено на машиночитаемом носителе и загружено и приведено в исполнение в процессоре.

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

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

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Фиг.1 является примерной блок-схемой, иллюстрирующей систему кодирования и декодирования видео.

Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера в соответствии с этим раскрытием сущности.

Фиг.3 является блок-схемой, иллюстрирующей пример видеодекодера в соответствии с этим раскрытием сущности.

Фиг.4A-4D являются концептуальными схемами, иллюстрирующими целочисленные пикселы и интерполированные пикселы, которые могут содержать пикселы прогнозных видеоблоков.

Фиг.5-8 являются блок-схемами последовательности операций способа, иллюстрирующими технологии в соответствии с этим раскрытием сущности.

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

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

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

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

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

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

Фиг.1 является блок-схемой, иллюстрирующей одну примерную систему 10 кодирования и декодирования видео, которая может реализовывать технологии этого раскрытия сущности. Как показано на фиг.1, система 10 включает в себя исходное устройство 12, которое передает кодированное видео в целевое устройство 16 через канал 15 связи. Исходное устройство 12 и целевое устройство 16 могут содержать любые из широкого диапазона устройств. В некоторых случаях исходное устройство 12 и целевое устройство 16 содержит устройства беспроводной связи, такие как беспроводные переносные телефоны, так называемые сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 15 связи, когда канал 15 связи является беспроводным. Технологии этого раскрытия сущности тем не менее, которые касаются интерполяции с компенсацией движения, не обязательно ограничены беспроводными приложениями или настройками.

В примере по фиг.1 исходное устройство 12 может включать в себя видеоисточник 20, видеокодер 22, модулятор/демодулятор (модем) 23 и передающее устройство 24. Целевое устройство 16 может включать в себя приемное устройство 26, модем 27, видеодекодер 28 и отображающее устройство 30. В соответствии с этим раскрытием сущности, видеокодер 22 исходного устройства 12 может быть выполнен с возможностью применять одну или более технологий интерполяции как часть процесса кодирования видео. Аналогично, видеодекодер 28 целевого устройства 16 может быть выполнен с возможностью применять одну или более технологий интерполяции этого раскрытия сущности как часть процесса декодирования видео.

Проиллюстрированная система 10 по фиг.1 является просто примерной. Технологии интерполяции этого раскрытия сущности могут выполняться посредством любого устройства кодирования, которое поддерживает интерполяцию с компенсацией движения до субпиксельного разрешения. Исходное устройство 12 и целевое устройство 16 являются просто примерами таких устройств кодирования. В этом случае исходное устройство 12 формирует кодированные видеоданные для передачи в целевое устройство 16. Устройства 12, 16 могут работать практически симметрично так, что каждое из устройств 12, 16 включает в себя компоненты кодирования и декодирования видео, к примеру, в комбинированном кодере-декодере (кодеке). Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 16, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.

Видеоисточник 20 исходного устройства 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, или видеопередачу от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 20 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию передаваемого впрямую видео, архивного видео и машиногенерируемого видео. В некоторых случаях, если видеоисточником 20 является видеокамера, исходное устройство 12 и целевое устройство 16 могут формировать так называемые камерофоны или видеофоны. В каждом случае захватываемое, предварительно захваченное или машиногенерируемое видео может быть кодировано посредством видеокодера 22. Кодированная видеоинформация затем может модулироваться посредством модема 23 согласно стандарту связи, к примеру, такому как множественный доступ с кодовым разделением каналов (CDMA) или другой стандарт связи, и передаваться в целевое устройство 16 через передающее устройство 24. Модем 23 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, разработанные для модуляции сигналов. Для беспроводных приложений передающее устройство 24 может включать в себя схемы, разработанные для передачи данных, в том числе усилители, фильтры и одну или более антенн.

Приемное устройство 26 целевого устройства 16 принимает информацию по каналу 15, и модем 27 демодулирует информацию. С другой стороны, процесс кодирования видео может реализовывать одну или более технологий, описанных в данном документе, чтобы улучшать интерполяцию в ходе компенсации движения. Процесс декодирования видео, выполняемый посредством видеодекодера 28, также может выполнять интерполяцию в ходе стадии компенсации движения процесса декодирования. Отображающее устройство 30 отображает декодированные видеоданные пользователю и может содержать любое из множества отображающих устройств, таких как электронно-лучевая трубка, жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип отображающего устройства.

В примере по фиг.1 канал 15 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 15 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 15 связи, в общем, представляет любую надлежащую среду связи или набор различных сред связи для передачи видеоданных из исходного устройства 12 в целевое устройство 16.

Видеокодер 22 и видеодекодер 28 могут работать согласно стандарту сжатия видео, такому как стандарт ITU-T H.264, альтернативно описанный как MPEG-4, часть 10, усовершенствованное кодирование видео (AVC). Технологии этого раскрытия сущности тем не менее не ограничены каким-либо конкретным стандартом кодирования. Хотя не показано на фиг.1, в некоторых аспектах, видеокодер 22 и видеодекодер 28 могут быть интегрированы с аудиокодером и декодером, соответственно, и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).

Стандарт ITU H.264/MPEG-4 (AVC) сформулирован экспертной группой в области кодирования видео (VCEG) ITU-T совместно с экспертной группой по киноизображению (MPEG) ISO/IEC как продукт совместного партнерского проекта, известного как объединенная группа по видеостандартам (JVT). В некоторых аспектах, технологии, описанные в этом раскрытии сущности, могут быть применены к устройствам, которые, в общем, соответствуют стандарту H.264. Стандарт H.264 описан в ITU-T Recommendation H.264 "Advanced Video Coding for Generic Audiovisual Services" от исследовательской группы ITU-T и датирован мартом 2005 года, который может упоминаться в данном документе как стандарт H.264 или спецификация H.264 либо стандарт или спецификация H.264/AVC. Объединенная группа по видеостандартам (JVT) продолжает работать над дополнениями к H.264/MPEG-4 AVC.

Видеокодер 22 и видеодекодер 28 могут быть реализованы как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые комбинации вышеозначенного. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодека в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере и т.п.

Видеопоследовательность типично включает в себя серии видеокадров. Видеокодер 22 оперирует с видеоблоками в рамках отдельных видеокадров, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированный или изменяющийся размер и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр включает в себя серии последовательных макроблоков. Каждая серия последовательных макроблоков может включать в себя серии макроблоков, которые могут быть скомпонованы в субблоки. В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее прогнозирование для различных размеров блоков, таких как 16х16, 8х8 или 4х4 для компонентов сигнала яркости и 8x8 для компонентов сигнала цветности, а также взаимное прогнозирование для различных размеров блоков, таких как 16х16, 16х8, 8х16, 8х8, 8х4, 4х8 и 4х4 для компонентов сигнала яркости и соответствующих масштабированных размеров для компонентов сигнала цветности. Видеоблоки могут содержать блоки пиксельных данных или блоки коэффициентов преобразования, к примеру, после процесса преобразования, такого как дискретное косинусное преобразование или концептуально аналогичный процесс преобразования.

Меньшие видеоблоки могут предоставлять лучшее разрешение и могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детальности. В общем, макроблоки (MB) и различные субблоки могут считаться видеоблоками. Помимо этого серия последовательных макроблоков может считаться серией видеоблоков, таких как MB и/или субблоки. Каждая серия последовательных макроблоков может быть независимо декодируемой единицей видеокадра. Видеокодер 22 и видеодекодер 28 выполняют взаимное прогнозирующее кодирование, которое заключает в себе формирование прогнозирующих опорных данных и вычитание видеоблока, который должен быть кодирован, из прогнозирующих опорных данных, чтобы формировать остаточные данные, которые затем могут быть преобразованы, квантованы и энтропийно кодированы. Взаимное прогнозирующее кодирование может включать в себя интерполяцию прогнозирующих данных в соответствии с этим раскрытием сущности.

После взаимного прогнозирующего кодирования (которое включает в себя технологии интерполяции этого раскрытия сущности) и после всех преобразований (к примеру, целочисленного преобразования 4x4 или 8x8, используемого в H.264/AVC, или дискретного косинусного преобразования, DCT), квантование может выполняться. Квантование, в общем, означает процесс, в котором коэффициенты квантуются, чтобы, возможно, уменьшать объем данных, используемый для того, чтобы представлять коэффициенты. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, 16-битовое значение может быть округлено в меньшую сторону до 15-битового значения во время квантования. После квантования энтропийное кодирование может выполняться, к примеру, согласно контекстно-адаптивному кодированию переменной длины (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC) или другой технологии энтропийного кодирования.

Согласно технологиям этого раскрытия сущности, видеокодер 22 может применять множество заранее заданных интерполяционных фильтров, чтобы формировать множество различных интерполированных прогнозирующих данных. Интерполированные прогнозирующие данные, которые достигают наивысших уровней сжатия, могут выбираться посредством видеокодера 22, и интерполяционный фильтр, который использован для выбранных интерполированных прогнозирующих данных, может кодироваться как синтаксис и передаваться в целевое устройство 16 как часть кодированных видеоданных. В этом случае видеодекодер 28 принимает кодированные видеоданные и может интерпретировать синтаксис, чтобы идентифицировать интерполяционный фильтр, который использован посредством видеокодера 22. Соответственно, видеодекодер 28 может идентифицировать и использовать интерполяционный фильтр в ходе своего процесса декодирования с компенсацией движения, который является идентичным фильтру, использованному в ходе процесса кодирования. Различные заранее заданные интерполяционные фильтры могут содержать аналогичные фильтры с различными наборами коэффициентов фильтрации (отводами фильтра). Альтернативно, различные заранее заданные интерполяционные фильтры могут содержать фильтры, имеющие различные числа отводов фильтра или, возможно, различные типы конфигураций фильтра, в общем.

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

Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера 50, который может выполнять технологии интерполяции с компенсацией движения в соответствии с этим раскрытием сущности. Видеокодер 50 может соответствовать видеокодеру 22 устройства 20 или видеокодеру другого устройства. Видеокодер 50 может выполнять внутреннее и взаимное кодирование блоков в рамках видеокадров, хотя внутреннее кодирование не проиллюстрировано. Внутреннее кодирование основано на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре. Взаимное кодирование основано на временном прогнозировании, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах видеопоследовательности. Внутренний режим (I-режим) может упоминаться как пространственный режим сжатия, а взаимные режимы, такие как режим прогнозирования (P-режим) или двунаправленный режим (режим B), могут упоминаться как временные режимы сжатия. Технологии этого раскрытия сущности типично могут применяться во время взаимного кодирования, и следовательно, модули внутреннего кодирования, к примеру, модуль пространственного прогнозирования, не проиллюстрированы на фиг.2 для простоты и удобства иллюстрации. Тем не менее технологии округления этого раскрытия сущности также могут быть применимыми к технологиям пространственного прогнозирования и внутреннего кодирования.

Как показано на фиг.2, видеокодер 50 принимает текущий видеоблок в видеокадре, который должен быть кодирован. В примере по фиг.2 видеокодер 50 включает в себя модуль 32 оценки движения, модуль 35 компенсации движения, модуль 34 хранения опорных кадров, сумматор 48, модуль 38 преобразования, модуль 40 квантования и модуль 46 энтропийного кодирования. Для восстановления видеоблока видеокодер 50 также включает в себя модуль 42 обратного квантования, модуль 44 обратного преобразования и сумматор 51. Фильтр удаления блочности (не показан) также может быть включен, чтобы фильтровать границы блоков, чтобы удалять артефакты блочности из восстановленного видео. Если требуется, фильтр удаления блочности типично должен фильтровать вывод сумматора 51.

В ходе процесса кодирования видеокодер 50 принимает видеоблок, который должен кодироваться, и модуль 32 оценки движения, и модуль 35 компенсации движения выполняют взаимное прогнозирующее кодирование. Модуль 32 оценки движения и модуль 35 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в концептуальных целях. Оценка движения типично считается процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение прогнозного блока в рамках прогнозирующего кадра (или другой кодированной единицы) относительно текущего блока, кодируемого в рамках текущего кадра (или другой кодированной единицы). Компенсация движения типично считается процессом выборки или формирования прогнозного блока на основе вектора движения, определенного посредством оценки движения. С другой стороны, модуль 32 оценки движения и модуль 35 компенсации движения могут быть функционально интегрированы. Технологии интерполяции, описанные в этом раскрытии сущности, описываются как выполняемые посредством модуля 35 компенсации движения. Тем не менее интерполяция может выполняться во время оценки движения, чтобы упрощать выбор наилучших векторов движения.

В соответствии с этим раскрытием сущности, оценка 32 движения выбирает соответствующий вектор движения для видеоблока, который должен быть кодирован, посредством сравнения видеоблока с видеоблоками прогнозирующей кодированной единицы (к примеру, предыдущего кадра). Здесь модуль 35 компенсации движения может выполнять интерполяцию, чтобы формировать прогнозирующие данные при субпиксельном разрешении. В некоторых случаях во время оценки движения интерполяция может быть основана на неперестраиваемом интерполяционном фильтре. В других случаях различные интерполяционные фильтры, применяемые в ходе компенсации движения (как указано ниже), также могут использоваться в ходе процесса оценки движения в целях выбора вектора движения.

После того как модуль 32 оценки движения выбирает вектор движения для видеоблока, который должен кодироваться, модуль 35 компенсации движения формирует прогнозный видеоблок, ассоциированный с этим вектором движения. Согласно этому раскрытию сущности, тем не менее модуль 35 компенсации движения может рассматривать несколько версий любого прогнозного видеоблока, который имеет субпиксельное разрешение. В этом случае модуль 35 компенсации движения может применять множество заранее заданных интерполяционных фильтров, чтобы формировать множество различных интерполированных прогнозирующих данных для видеоблока, который должен кодироваться. Модуль 35 компенсации движения затем выбирает интерполированные прогнозирующие данные (к примеру, интерполированный видеоблок, ассоциированный с одним из интерполяционных фильтров), которые достигают наивысших уровней сжатия. Интерполяционный фильтр, который использован для того, чтобы формировать интерполированные данные, может кодироваться как синтаксис интерполяции и передаваться в модуль 46 энтропийного кодирования для включения в кодированный поток битов. После того как модуль 35 компенсации движения выбирает и применяет наилучший интерполяционный фильтр, модуль 35 компенсации движения формирует прогнозирующие данные с использованием этого интерполяционного фильтра, и видеокодер применяет сумматор 48, чтобы вычитать эти прогнозирующие данные из кодируемого видеоблока, чтобы формировать остаточные данные.

Кроме того, согласно другому аспекту этого раскрытия сущности, видеокодер 22 и видеодекодер 28 могут применять технологии интерполяции, которые исключают или значительно уменьшают промежуточное округление полупиксельных значений для четвертьпиксельной интерполяции. В этом случае видеокодер 22 и видеодекодер 28 могут округлять интерполированные полупиксельные значения в целях полупиксельной интерполяции. Для четвертьпиксельной интерполяции тем не менее видеокодер 22 и видеодекодер 28 могут сохранять и использовать неокругленные версии полупиксельных значений, чтобы уменьшать или исключать распространение неточностей округления с полупиксельных значений до четвертьпиксельных значений. В некоторых случаях небольшое округление может применяться к одному конкретному полупиксельному значению, которое требует двух уровней интерполяции, чтобы обеспечивать то, что запоминающие элементы фиксированного размера (к примеру, 16-битовые регистры) могут использоваться для того, чтобы сохранять все промежуточные значения.

Как отмечается, после того как модуль 35 компенсации движения формирует прогнозирующие данные (к примеру, интерполированный прогнозный видеоблок), видеокодер 50 формирует остаточный видеоблок посредством вычитания прогнозирующих данных из кодируемого исходного видеоблока. Сумматор 48 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 38 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий остаточные блочные коэффициенты преобразования. Модуль 38 преобразования, например, может выполнять другие преобразования, заданные посредством стандарта H.264, которые являются концептуально аналогичными DCT. Вейвлет-преобразования, целочисленные преобразования, субполосные преобразования или другие типы преобразований также могут использоваться. В любом случае модуль 38 преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пиксельного домена в частотный домен.

Модуль 40 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, 16-битовое значение может быть округлено в меньшую сторону до 15-битового значения во время квантования. После квантования модуль 46 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 46 энтропийного кодирования может выполнять контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) или другую технологию энтропийного кодирования. После энтропийного кодирования посредством модуля 46 энтропийного кодирования кодированное видео может быть передано в другое устройство или заархивировано для последующей передачи или извлечения. Кодированный поток битов может включать в себя энтропийно кодированные остаточные блоки, векторы движения для таких блоков и другой синтаксис, в том числе синтаксис интерполяции, который идентифицирует интерполяционные фильтры, которые применены посредством модуля 35 компенсации движения.

Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пиксельном домене, к примеру, для последующего использования в качестве опорного блока. Сумматор 51 прибавляет восстановленный остаточный блок к прогнозному блоку с компенсацией движения, сформированному посредством модуля 35 компенсации движения, чтобы сформировать восстановленный видеоблок для хранения в модуле 34 хранения опорных кадров. Восстановленный видеоблок может использоваться посредством модуля 32 оценки движения и модуля 35 компенсации движения в качестве опорного блока для того, чтобы взаимно кодировать блок в последующем видеокадре.

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

Модуль 52 энтропийного декодирования энтропийно декодирует принимаемый поток битов, чтобы формировать квантованные коэффициенты и синтаксис (к примеру, синтаксис интерполяции и векторы движения, отправляемые в модуль 55 компенсации движения). Модуль 56 обратного квантования обратно квантует, т.е. деквантует квантованные блочные коэффициенты. Процесс обратного квантования может быть традиционным процессом, как задано посредством декодирования H.264. Модуль 58 обратного преобразования применяет обратное преобразование, к примеру, обратное DCT или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пиксельном домене. Модуль 55 компенсации движения формирует блоки с компенсацией движения способом, описанным в данном документе, к примеру, включающим в себя интерполяцию на основе набора коэффициентов интерполяционной фильтрации, идентифицированного посредством элемента синтаксиса (т.е. синтаксиса интерполяции).

Сумматор 64 декодирует остаточные блоки посредством суммирования остаточных блоков с соответствующими прогнозными блоками, сформированными посредством модуля 55 компенсации движения, чтобы формировать декодированные блоки. Если требуется, фильтр удаления блочности также может быть применен для того, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Декодированные видеоблоки затем сохраняются в модуле 62 хранения опорных кадров, который является запоминающим элементом, который предоставляет опорные блоки для последующей компенсации движения и также формирует декодированное видео, чтобы возбуждать отображающее устройство (такое как устройство 30 по фиг.1).

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

Фиг.4A-4D являются концептуальными схемами, иллюстрирующими целочисленные пикселы и интерполированные пикселы, которые могут содержать пикселы прогнозных видеоблоков. В концептуальной иллюстрации по фиг.4 различные прямоугольники представляют пикселы. Заглавные буквы (в прямоугольниках со сплошными линиями) представляют целопиксельные местоположения, при этом строчные буквы (в прямоугольниках с пунктирными линиями) представляют интерполированные пиксельные местоположения. Обозначенные буквами метки могут использоваться в данном документе, чтобы описывать пиксельные местоположения или пиксельные позиции, или могут упоминаться как пиксельные значения, ассоциированные с различными местоположениями. Пиксельные местоположения "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii" и "jj" являются полупиксельными местоположениями, используемыми в дробных интерполяциях различных дробных местоположений, ассоциированных с пиксельным местоположением "C3".

Каждое пиксельное местоположение может иметь ассоциированные пятнадцать различных дробных местоположений, к примеру, в соответствии с интерполяциями, совместимыми со стандартом H.264/AVC ITU. В примере по фиг.4A-4D проиллюстрированы эти 15 различных дробных местоположений, ассоциированных с пикселом "C3". Для простоты и удобства иллюстрации большинство других дробных местоположений не показано (кроме упомянутых выше, которые используются для того, чтобы формировать одно или более из 15 различных дробных местоположений, ассоциированных с пикселом "C3").

В стандарте ITU H.264/AVC, чтобы получать сигналы яркости в полупиксельных позициях, типично используется 6-отводный фильтр Винера с коэффициентами [1, -5, 20, 20, -5, 1]. Затем, чтобы получать сигналы яркости в четвертьпиксельных местоположениях, используется билинейный фильтр. Билинейный фильтр также может использоваться при дробнопиксельной интерполяции для компонентов сигнала цветности, которые могут иметь точность вплоть до 1/8 пиксела в H.264/AVC.

Полупиксельные интерполяции пиксельных местоположений "b" и "h" демонстрируются на фиг.4B в горизонтальном и вертикальном направлениях, соответственно. В этом случае пиксельное местоположение "b" может быть интерполировано на основе целочисленных пикселов "C1", "C2", "C3", "C4", "C5" и "C6". Аналогично, пиксельное местоположение "h" может быть интерполировано на основе целочисленных пикселов "A3", "B3", "C3", "D3", "E3" и "F3". Различные интерполяционные фильтры (к примеру, различные наборы отводов фильтра) могут применяться, чтобы формировать различные интерполированные значения пиксельных местоположений "b" и "h", как описано в данном документе. На фиг.4B интерполированные пиксельные местоположения "b" и "h" показаны с помощью заштриховки, а целопиксельные местоположения "C1", "C2", "C3", "C4", "C5", "C6", "A3", "B3", "C3", "D3","E3" и "F3" показаны с помощью знаков "решетка".

Фиг.4C иллюстрирует один частный случай, который может требовать двух уровней интерполяции. В частности, пиксельное местоположение "j" является отличным от других полупиксельных местоположений, поскольку само пиксельное местоположение "j" интерполируется на основе других полупиксельных значений. Например, пиксельное местоположение "j" может быть интерполировано на основе полупиксельных интерполированных значений "cc", "dd", "h", "ee", "ff" и "gg" в горизонтальном направлении. Альтернативно, пиксельное местоположение "j" может быть интерполировано на основе полупиксельных интерполированных значений "aa", "bb", "b", "hh", "ii" и "jj" в вертикальном направлении. На фиг.4C интерполированное пиксельное местоположение "j" показано с помощью заштриховки, полупиксельные интерполированные значения "aa", "bb", "b", hh", "ii" и "jj" в вертикальном направлении показаны с помощью знаков "решетка" справа налево, а полупиксельные интерполированные значения "cc", "dd", "h", "ee", "ff" и "gg" показаны с помощью знаков "решетка" слева направо.

Фиг.4D иллюстрирует четвертьпиксельные местоположения "a", "c", "d", "e", "f", "g", "i", "k", "l", "m", "n" и "o" с помощью заштриховки и иллюстрирует целочисленно- и полупиксельные местоположения, используемые для такой четвертьпиксельной интерполяции (к примеру, "C3", "b", "C4", "h", "j", "ee", "D3", "hh" и "D4") с помощью знаков "решетка".

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

С другой стороны, фиг.4A-4D показывают целопиксельные выборки (также называемые полнопиксельными) в сплошных прямоугольниках с заглавными буквами. Для любой данной целопиксельной выборки предусмотрено всего 15 субпиксельных позиций, которые показаны для целопиксельной выборки "C3" и помечены a-o на фиг.4A-4D. В H.264/AVC полупиксельные позиции "b", "h" и "j" могут вычисляться сначала с использованием одномерного 6-отводного фильтра Винера. Как отмечается, полупиксельная позиция "j" может требовать двух уровней этой интерполяции с использованием 6-отводной фильтрации. В этом случае для пиксельной позиции "j" интерполяционный фильтр применяется сначала в горизонтальном направлении и затем в вертикальном направлении, возможно, с промежуточным округлением значений интерполированного пиксела после интерполяции в одной размерности, чтобы обеспечивать то, что данные могут сохраняться в шестнадцатибитовых запоминающих элементах. Оставшиеся четвертьпиксельные позиции затем интерполируются через фильтрацию, которая использует билинейный фильтр и уже вычисленные полупиксельные выборки.

Комитет ITU-T SG16/Q.6/VCEG (экспертная группа в области кодирования видео) исследует технологии кодирования, которые предлагают более высокую эффективность кодирования, чем H.264/AVC. Это исследование проводится в форуме KTA (ключевые технологические области). Одно из инструментальных средств кодирования, которые приспособлены в KTA, называется адаптивным интерполяционным фильтром (AIF). AIF предлагает большую эффективность кодирования по сравнению H.264/AVC, в частности, для видеопоследовательностей с высоким разрешением (к примеру, 720p). В AIF интерполяционный фильтр для каждой субпиксельной позиции аналитически вычисляется для каждого видеокадра посредством минимизации энергии ошибок прогнозирования. Аналитически извлеченные коэффициенты адаптивной фильтрации для каждого кадра затем прогнозируются, квантуются, кодируются и отправляются в потоке видеобитов.

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

Три различных типа схем AIF приспособлены в KTA. Первая - это двумерный неразделимый AIF (NS-AIF), вторая - это разделимый AIF (S-AIF), а третья - это AIF с направленными фильтрами (DAIF). Тем не менее все три схемы AIF используют идентичный аналитический процесс, чтобы извлекать коэффициенты фильтрации, что поясняется ниже с использованием неразделимого AIF в качестве примера.

Допустим, что двумерный неразделимый фильтр 6x6 имеет коэффициенты , где i, j=0,..., 5, и SP представляет одну из 15 субпиксельных позиций (a-o), показанных на фиг.4A-4D. Следует отметить, что 6 из 15 субпиксельных позиций "a", "b", "c", "d", "h" и "l" являются одномерными субпиксельными позициями, которые могут использовать 6-отводный фильтр для интерполяции. Кроме того, допустим, что прогнозирующие пикселы в целопиксельных позициях (A1-F6 на фиг.3) в опорном кадре принимают пиксельные значения , где i, j=0,..., 5. Таким образом, A1 принимает значение ,..., A6 принимает значение ,..., F1 принимает значение ,..., и F6 принимает значение . Затем интерполированное значение в субпиксельной позиции SP, , может вычисляться с использованием следующего уравнения:

Пусть является пиксельным значением в текущем видеокадре в позиции .

,

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

(2)

Для каждой из субпиксельных позиций a-o отдельная система уравнений может устанавливаться посредством вычисления производной относительно коэффициентов фильтрации. Число уравнений в этом случае равно числу коэффициентов фильтрации, используемых для текущей субпиксельной позиции . Для каждой двумерной субпиксельной позиции "e", "f", "g", "i", "j", "k", "m", "n" и "o" с использованием 6x6-отводного двумерного фильтра может разрешаться система из 36 уравнений с 36 неизвестными. Для оставшихся субпиксельных позиций "a", "b", "c", "d", "h" и "l", которые могут требовать только одномерного фильтра, системы из 6 уравнений могут разрешаться.

(3)

Подводя итог вышеупомянутого, примерный процесс извлечения и применения AIF-фильтров может иметь следующие этапы:

1. Векторы движения могут быть оценены для каждого видеокадра, который должен кодироваться. Во время оценки движения неперестраиваемый интерполяционный фильтр (к примеру, интерполяционный процесс H.264/AVC) может применяться.

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

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

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

Как упомянуто выше, в H.264/AVC, интерполяция выполняется с помощью операций промежуточного округления. Традиционно, полупиксельные позиции ("b", "h" и "j") фильтруются и округляются до того, как они используются для того, чтобы получать четвертьпиксельные позиции. Кроме того, во время билинейной фильтрации, которая используется для того, чтобы получать четвертьпиксельные значения, округление в большую сторону может использоваться (т.е. (a+b+1)>>1 может использоваться в традиционных билинейных фильтрах). Такие частые и смещенные операции округления могут уменьшать точность интерполяционных фильтров. В частности, моделирование показывает, что интерполяционные фильтры с более высокой точностью, извлеченные непосредственно из 6-отводного фильтра Винера, и билинейный фильтр, используемый в H.264/AVC, предоставляют значительную эффективность по сравнению с H.264/AVC, в частности, для видеопоследовательностей высокой четкости, таких как последовательности 720p. Значительная часть эффективности, достигаемая посредством схем AIF (NS-AIF, S-AIF и DAIF), может исходить из того факта, что эти схемы AIF используют фильтры с более высокой точностью, чем H.264/AVC.

В соответствии с этим раскрытием сущности, может использоваться относительно простая схема коммутируемого интерполяционного фильтра со смещением (SIFO). Вместо адаптивного извлечения коэффициентов фильтрации для каждого кадра, что является очень затратным процессом на стороне кодера, SIFO-схема выбирает между неперестраиваемыми фильтрами множества, к примеру, которые могут быть, соответственно, заданы посредством множества различных заранее заданных наборов коэффициентов интерполяционной фильтрации. Выбор интерполяционного фильтра может выполняться либо на уровне кадра, либо на уровне субпиксельной позиции, что может упоминаться как выбор на основе кадров либо выбор на основе выборок, соответственно. Если требуется, DC-смещения также могут добавляться после прогнозирования, и DC-смещения также могут добавляться на основе кадров или выборок. Таким образом, одно или более DC-смещений могут быть заданы для каждого кадра, различные DC-смещения (или наборы DC-смещений) могут быть заданы для различных видеоблоков кадра. Различные DC-смещения могут быть заданы для каждой пиксельной и субпиксельной интерполированной позиции. Кадры являются одним примером кодированных единиц, и фраза "выбор на основе кадров" более широко упоминается как выбор на основе кодированных единиц. В некотором случае серии последовательных макроблоков или части кадра, например, могут кодироваться отдельно как отдельные кодированные единицы.

Различные наборы неперестраиваемых фильтров могут использоваться посредством модулей 35 и 55 компенсации движения по фиг.2 и 3, соответственно. Примеры включают в себя стандартный набор фильтров H.264, набор фильтров на основе H.264/AVC, но с более высокой точностью (без промежуточного округления для полупиксельных позиций и смещенного округления для четвертьпиксельных позиций), или один или более наборов настраиваемых интерполяционных фильтров. Набор или наборы настраиваемых интерполяционных фильтров могут получаться посредством использования набора обучающих видеопоследовательностей. Адаптивные фильтры, которые минимизируют энергию ошибок прогнозирования, могут извлекаться посредством применения аналитического процесса, используемого в схемах AIF, к обучающему видеонабору. Затем средние фильтры для каждой субпиксельной позиции могут вычисляться и использоваться как настраиваемые интерполяционные фильтры, которые применяются посредством модулей 35 и 55 компенсации движения, как описано в данном документе.

Средний фильтр для конкретной субпиксельной позиции также может быть нормализован так, что все коэффициенты фильтрации составляют в целом 1,0. Средний фильтр также может квантоваться с определенной точностью с фиксированной запятой (к примеру, 13-битовой точностью). Использование точности с фиксированной запятой в коэффициенте фильтрации обеспечивает то, что реализации для различных платформ не имеют отклонений. Кроме того, истинная реализация с фиксированной запятой может извлекаться из таких заранее заданных коэффициентов фильтрации. Настраиваемые фильтры могут иметь различные характеристики. В частности, различные фильтры могут быть неразделимыми фильтрами или разделимыми фильтрами, и различные фильтры могут задавать различные поддержки фильтра (к примеру, 6x6 или 4x4).

В любом случае набор фильтров, который предлагает наилучшее прогнозирование в любом приведенном примере (к примеру, наименьшую энергию ошибок прогнозирования), может выбираться посредством модуля 35 компенсации движения в ходе процесса кодирования. С другой стороны, выбор набора фильтров может быть значением на основе выборок или на основе кадров, что означает то, что фильтры могут выбираться для каждого кадра (или другой кодированной единицы) или могут выбираться для различных видеоблоков каждого кадра. Когда множество опорных кадров используется, различные наборы фильтров могут выбираться для различных опорных кадров. Кроме того, некоторые опорные кадры могут иметь выбор фильтра на основе кадров, при этом другие опорные кадры могут иметь выбор фильтра на основе выборок. Когда выбор фильтра на основе кадров используется, и когда настраиваемый набор фильтров выбирается, стандартные фильтры по-прежнему могут применяться для полупиксельных позиций (к примеру, позиций "b", "h" и "j"), при этом настраиваемый набор фильтров может применяться для других субпиксельных позиций.

Смещение также может добавляться во время интерполяции. Добавление DC-смещений к значениям прогнозирования может помогать захватывать изменения освещения между различными видеокадрами, такие как вспышки, сумеречное небо и т.п. В схеме этого раскрытия сущности DC-смещение может применяться на уровне кадра (все пикселы в кадре используют идентичное DC-смещение) или на уровне позиции выборки (различные пиксельные местоположения имеют различные DC-смещения). Когда DC-смещения на основе выборок используются, всего шестнадцать DC-смещений, возможно, должны отправляться в потоке видеобитов так, что целопиксельные местоположения и пятнадцать возможных нецелопиксельных местоположений могут задавать различные смещения. Применение DC-смещений на основе выборок может быть полезным, поскольку оно может выступать в качестве простого, но эффективного инструментального средства сегментации движения. Рассмотрим, например, видеокадр, который содержит темнеющее небо в качестве неподвижного фона и движущийся объект в качестве переднего плана. В этом случае фон и передний план могут иметь различные степени изменений освещения, и использование DC-смещений на основе выборок может помогать захватывать различные степени изменений освещения в переднем плане и фоне.

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

Субпиксельный вектор движения упоминается как субпиксельная позиция в опорном изображении, которое должно быть интерполировано. H.264 задает один интерполяционный процесс для субпикселов, в котором субпикселы b и h (см. фиг.4A-4D) могут вычисляться посредством горизонтальной и вертикальной фильтрации с помощью 6-отводного фильтра, имеющего значения отводов (1, -5, 20, 20, -5, 1), следующим образом:

b1=C1-5*C2+20*C3+20*C4-5*C5+C6

где "C1", "C2", "C3", "C4", "C5" и "C6" представляют шесть ближайших целочисленных пикселов, которые окружают "b" в горизонтальном направлении, причем пикселы "C3" и "C4", являются ближайшими, "C2" и "C5" являются следующими ближайшими, и "C1" и "C6" являются следующими ближайшими.

h1=A3-5*B3+20*C3+20*D3-5*E3+F3

где "A3", "B3", "C3", "D3", "E3" и "F3" представляют шесть ближайших целочисленных пикселов, которые окружают "h" в вертикальном направлении, причем пикселы "C3" и "D3" являются ближайшими, "B3" и "E3" являются следующими ближайшими, и "A3" и "F3" являются следующими ближайшими.

В этом случае значения "b" и "h" могут быть заданы следующим образом:

b=max(0, min(255, (b1+16)>>5))

h=max(0, min(255, (h1+16)>>5))

где ">>" - это операция сдвига вправо. В этом раскрытии сущности, ">>" представляет операцию сдвига вправо, а "<<" представляет операцию сдвига влево.

Чтобы интерполировать субпиксел "j", промежуточное значение "j1" сначала извлекается следующим образом:

j1=aa1-5*bb1+20*b1+20*hh1-5*ii1+jj1,

где промежуточные значения, обозначенные как "aa1", "bb1", "hh1", "ii1" и "jj1", извлекаются посредством применения 6-отводного фильтра горизонтально способом, идентичным вычислению b1 в позициях "aa", "bb", "hh", "ii" и "jj". Конечное значение j может вычисляться следующим образом:

j=max(0, min(255, (j1+512)>>10)).

Пикселы в четвертьпиксельных позициях, помеченные как "a", "c", "d", "l", "f", "i", "k" и "n", могут извлекаться согласно таблице 1 посредством усреднения двух ближайших пикселов в целочисленно- и полупиксельных позициях и последующего применения округления в большую сторону.

Таблица 1
a=(C3+b+1)>>1
c=(C4+b+1)>>1
d=(C3+h+1)>>1
l=(D3+h+1)>>1
f=(j+b+1)>>1
i=(j+h+1)>>1
k=(j+ee+1)>>1
n=(j+hh+1)>>1

Пикселы в четвертьпиксельных позициях, помеченные как "e", "g", "m" и "o", вычисляются согласно таблице 2 посредством усреднения двух ближайших пикселов в полупиксельных позициях в диагональном направлении и последующего применения округления в большую сторону.

Таблица 2
e=(b+h+1)>>1
g=(b+ee+1)>>1
m=(h+hh+1)>>1
o=(ee+hh+1)>>1

Конечные значения этих четвертей пикселов могут быть в завершение отсечены до значений в интервале (0,255).

Чтобы сохранять максимально возможную точность на промежуточных этапах, все операции сдвига, округления и отсечения могут исключаться до самого последнего этапа интерполяционного процесса. В отличие от этого, в реализации, заданной согласно стандарту H.264, пикселы в четвертьпиксельных позициях, помеченные как "a", "c", "d", "l", "f", "i", "k" и "n", извлекаются согласно таблице 3 посредством усреднения двух ближайших пикселов в целочисленно- и полупиксельных позициях "b", "h", "j", "ee" и "hh", с округлением в большую сторону.

Таблица 3
a=(C3<<5+b1+32)>>6
c=(C4<<5+b1+32)>>6
d=(C3<<5+h1+32)>>6
l=(D3<<5+h1+32)>>6
f=(j1>>5+b1+32)>>6
i=(j1>>5+h1+32)>>6
k=(j1>>5+ee1+32)>>6
n=(j1>>5+hh1+32)>>6

В этом случае промежуточные значения, обозначенные как "ee1" и "hh1", извлекаются посредством применения 6-отводного фильтра вертикально и горизонтально таким же образом, как при вычислении "h1" и "b1", упомянутом выше, но в позициях "ee" и "hh". Округления можно не допускать на этой стадии при формировании "ee1" и "hh1", как описано в данном документе.

Пикселы в четвертьпиксельных позициях, помеченные как "e", "g", "m" и "o", могут вычисляться согласно таблице 4 посредством усреднения двух ближайших пикселов в полупиксельных позициях в диагональном направлении с округлением в большую сторону.

Таблица 4
e=(b1+h1+32)>>6
g=(b1+ee1+32)>>6
m=(h1+hh1+32)>>6
o=(ee1+hh1+32)>>6

Конечные значения этих четвертей пикселов могут быть отсечены до значений в диапазоне (0,255). Посредством сохранения полной точности промежуточных значений, интерполированные субпикселы должны быть более точными. В частности, полупиксельные значения в местоположениях "b", "h", "ee" и "hh" могут быть неокругленными значениями, обозначенными как "b1", "h1", "ee1" и "hh1" в целях четвертьпиксельного формирования.

К сожалению, интерполяция значения "j" может быть более сложной, поскольку интерполяция в позиции j требует двух уровней полупиксельной интерполяции. В частности, чтобы интерполировать "j", двадцать битов могут требоваться, чтобы представлять промежуточное значение "j1". В этом случае промежуточная версия "j1" для "j" может округляться, чтобы соответствовать шестнадцати битам. В этом случае операции, поясненные выше, могут быть реализованы с незначительной модификацией так, что все операции могут соответствовать шестнадцатибитовым структурам данных без снижения точности. Интерполяция "b" и "h" может быть идентичной интерполяции, заданной выше, за исключением того, что их промежуточные версии "b1" и "h1" могут сохраняться для другой субпиксельной интерполяции. Следующие таблицы показывают интерполяционный процесс для других субпикселов в шестнадцатибитовых запоминающих элементах. В нижеприведенных таблицах операции, заданные в каждом столбце, выполняются последовательно для соответствующей таблицы. Заштрихованные строки содержат операции, которые выполняются в конце процесса и не используются для интерполяции других субпиксельных позиций.

Таблица 5
позиции {a,c,d,l} по фиг.4A-4D
Операция Комментарий Минимальное значение Максимальное значение Размер регистра
r1=x r1 - целочисленный пиксел x 0 255 8u
r1=r1<<5 r1 - это 32*x 0 8160 13u
r2=y0 r2 - это y0 (y0 - это одномерный -2550 10710 15s
полупиксел, такой как b1, h1, ee1 и hh1, перед сдвигом в сторону младших разрядов)
r1=r1+r2 r1 - это 32*x+y0 -2550 18870 16s
r1=r1+32 r1 - это 32*x+y0+32 -2518 18902 16s
r1=r1>>6 r1 - это (32*x+y0+32)>>6 -39 295 11s
r1=max(0, r1) отсечение r1 на низкой стороне 0 295 10u
r1=min(255, r1) отсечение r1 на высокой стороне 0 255 8u
Таблица 6
позиции {e,g,m,o} по фиг.4A-4D
Операция Комментарий Минимальное значение Максимальное значение Размер регистра
r1=y0 r1 - это y0
(y0 - это одномерный полупиксел, такой как b1, h1, ee1 и hh1, перед сдвигом в сторону младших разрядов)
-2550 10710 15s
r2=y1 r2 - это y1 (y1 - это одномерный -2550 10710 15s
полупиксел, такой как b1, h1, ee1 и hh1, перед сдвигом в сторону младших разрядов)
r1=r1+r2 r1 - это y0+y1 -5100 21420 16s
r1=r1+32 r1 - это y0+y1+32 -5068 21452 16s
r1=r1>>6 r1 - это (y0+y1+32)>>6 -79 335 11s
r1=max(0, r1) отсечение r1 на низкой стороне 0 335 10u
r1=min(255, r1) отсечение r1 на высокой стороне 0 255 8u

Таблица 7 ниже иллюстрирует шестнадцатибитовую реализацию извлечения пиксельного значения в пиксельном местоположении "j". Все одномерные полупикселы "aa1", "bb1", "b1", "hh1", "ii1" и "jj1" получаются без какого-либо сдвига в сторону младших битов. Диапазон отсечения, чтобы не допускать переполнения, составляет (-2372,18640). Кроме того, заштрихованные строки в таблице указывают операции, которые выполняются только в конце интерполяционного процесса, и эти результаты не используются для интерполяции других субпиксельных позиций. Промежуточное значение "j1" должно быть сохранено для интерполяции "f", "i", "k" и "n".

Таблица 8 ниже демонстрирует этапы, которые могут быть выполнены для шестнадцатибитовой реализации интерполяции {f,i,k,n}, которые являются позициями, которые используются для интерполяции промежуточного значения "j1".

Таблица 8
позиции {f,i,k,n} по фиг.4A-4D
Операция Комментарий Минимальное значение Максимальное значение Размер регистра
r1=y0 r1 - это y0 (одномерный полупиксел, такой как b1, h1, ee1 и hh1, перед сдвигом в сторону младших разрядов) -2550 10710 15s
r2=j1 r2 - это j1 (двумерный полупиксел j1 перед сдвигом в сторону младших разрядов) -9914 26232 16s
r2=r2>>1 r2 - это j1>>1 -4957 13116 15s
r1=r1+r2 r1 - это y0+(j1>>1) -7507 23826 16s
r1=r1+32 r1 - это y0+(j1>>1)+32 -7491 23842 16s
r1=r1>>6 r1 - это (y0+(j1>>1)+32)>>6 -235 745 11s
r1=max(0, r1) отсечение r1 на низкой стороне 0 745 10u
r1=min(255, r1) отсечение r1 на высокой стороне 0 255 8u

Вкратце пояснение выше демонстрирует законченную технологию для интерполяции всех возможных субпиксельных местоположений "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n" и "o" без превышения шестнадцатибитовых запоминающих элементов, что является желательным для реализации. Большинство промежуточных полупиксельных значений остаются неокругленным в целях четвертьпиксельной интерполяции. Тем не менее пиксельное местоположение "j" является частным случаем, который может требовать округления промежуточных результатов в целях формирования своего полупиксельного значения, поскольку пиксельное местоположение "j" требует двух уровней полупиксельной интерполяции. В соответствии с этим раскрытием сущности, тем не менее округление в пиксельном местоположении "j" не оказывает влияние на точность конечного значения четвертей пикселов, которые основываются на "j".

Фиг.5 является блок-схемой последовательности операций, согласованной с одним или более аспектов кодирования видео в соответствии с этим раскрытием сущности. Фиг.5 поясняется с точки зрения видеокодера 50, показанного на фиг.2. В частности, модуль 35 компенсации движения формирует прогнозирующие данные (101), что включает в себя интерполяцию на основе множества заранее заданных интерполяционных фильтров. Модуль 35 компенсации движения затем кодирует видеоданные, к примеру видеоблок на основе прогнозирующих данных, ассоциированных с каждым из заранее заданных интерполяционных фильтров (102). Например, модуль 35 компенсации движения может активировать сумматор 48, чтобы формировать остаточные блоки, ассоциированные с каждым из заранее заданных интерполяционных фильтров так, что различные остаточные блоки могут сравниваться друг с другом, чтобы находить наилучший остаточный блок. Модуль 35 компенсации движения выбирает видеоданные, которые достигают наивысших уровней сжатия (103). В частности, выбранные видеоданные проиллюстрированы как вывод "остаточный блок" сумматора 48, который является окончательным результатом. Этот окончательный результат сумматора 48 преобразуется посредством модуля 38 преобразования, квантуется посредством модуля 40 квантования и энтропийно кодируется посредством модуля 46 энтропийного кодирования.

Модуль 35 компенсации движения также идентифицирует конкретный интерполяционный фильтр, который ассоциирован с выбранными остаточными видеоданными, которые достигают наивысших уровней сжатия (104). Модуль 35 компенсации движения перенаправляет элемент синтаксиса интерполяции в модуль 46 энтропийного кодирования. Элемент синтаксиса интерполяции идентифицирует конкретный интерполяционный фильтр, который использован. Модуль 46 энтропийного кодирования кодирует элемент синтаксиса (105), чтобы формировать часть выводимого потока битов. Таким образом, интерполяционный фильтр, используемый в кодере 50 (к примеру, используемые коэффициенты фильтрации или другие схемы или параметры фильтров), может передаваться в целевое устройство так, что целевое устройство может выполнять надлежащую интерполяционную фильтрацию во время восстановления видео.

Интерполяционная фильтрация может быть задана на основе каждого кадра или может быть задана на основе каждого видеоблока. В еще других случаях интерполяционная фильтрация может быть задана на основе каждой выборки или может быть задана на основе каждой подвыборки. Термин "видеоединицы" может упоминаться как видеокадры, видеоблоки, видеовыборки или видеоподвыборки. В любом случае видеокодер 50 может кодировать различные элементы синтаксиса, чтобы идентифицировать различные интерполяционные фильтры для различных опорных видеоединиц, которые используются для того, чтобы формировать прогнозирующие данные для различных кодированных единиц видеоданных. Альтернативно, видеокодер может кодировать различные элементы синтаксиса, чтобы идентифицировать различные интерполяционные фильтры, которые используются для различных видеоблоков опорных видеоданных. В любом случае интерполяционные фильтры могут быть заранее заданы с использованием тестовых видеопоследовательностей. В этом случае, например, адаптивная интерполяционная фильтрация (AIF) может применяться к видеопоследовательностям, чтобы задавать различные интерполяционные фильтры, которые достигают желательных результатов, и эти интерполяционные фильтры могут программироваться в модуле 35 компенсации движения.

Фиг.6 является блок-схемой последовательности операций, согласованной с одним или более аспектов декодирования видео в соответствии с этим раскрытием сущности. Фиг.6 поясняется с точки зрения видеокодера 50, показанного на фиг.2. В частности, видеокодер 60 принимает кодированные видеоданные (111) и принимает элемент синтаксиса, который идентифицирует интерполяционный фильтр из множества интерполяционных фильтров (112). Кодированный поток битов может включать в себя как кодированные остаточные видеоданные, так и элемент синтаксиса, который идентифицирует интерполяционный фильтр, который использован в кодере. Модуль 52 энтропийного декодирования может энтропийно декодировать принимаемый поток битов, чтобы синтаксически анализировать преобразованные и квантованные остаточные блоки, которые отправляются в модуль 56 квантования с обратным преобразованием и модуль 58 обратного преобразования, и синтаксически анализировать элемент синтаксиса интерполяции и векторы движения, которые отправляются в модуль 55 компенсации движения.

Модуль 55 компенсации движения формирует прогнозирующие данные (113), которые включают в себя интерполяции на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса. Видеодекодер 60 декодирует видеоданные на основе прогнозирующих данных (114). В частности, прогнозирующие данные, сформированные посредством модуля 55 компенсации движения, могут быть комбинированы с остаточными данными через сумматор 64, чтобы восстанавливать видеоданные в пиксельном домене. Декодированное видео затем может сохраняться в модуле 62 хранения опорных кадров для последующего использования при прогнозировании и также может выводиться для представления пользователю, к примеру, через дисплей или другое устройство вывода.

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

Фиг.7 иллюстрирует технологию интерполяции, которая может выполняться посредством модуля 35 компенсации движения в ходе процесса кодирования или посредством модуля 55 компенсации движения в ходе процесса декодирования. Как показано на фиг.7, модуль 35 или 55 компенсации движения формирует полупиксельные значения на основе целопиксельных значений (121). Например, эти полупиксельные значения могут соответствовать пиксельным значениям в местоположениях "b" и "h" фиг.4A-4D. Модуль 35 или 55 компенсации движения округляет эти полупиксельные значения, чтобы формировать полупиксельные интерполированные значения (122), а также сохраняет неокругленные версии полупиксельных значений (123). Модули 35 и 55 компенсации движения могут иметь запоминающие элементы, чтобы упрощать это временное хранение промежуточных значений, соответствующих неокругленным версиям полупиксельных значений. Модуль 35 или 55 компенсации движения затем может формировать четвертьпиксельные значения на основе неокругленных полупиксельных значений и целопиксельных значений (124). Эти четвертьпиксельные значения, например, могут соответствовать местоположениям "a", "c", "d" и "l", показанным на фиг.4A-4D.

Как пояснено выше, полупиксельные значения в местоположении "j" на фиг.4A-4D может требовать некоторого округления промежуточных значений, поскольку местоположение "j" может требовать двух уровней полупиксельных интерполяций. Фиг.8 иллюстрирует технологию интерполяции, которая может выполняться посредством модуля 35 компенсации движения в ходе процесса кодирования или посредством модуля 55 компенсации движения в ходе процесса декодирования, чтобы формировать все интерполированные значения (a-o, показанные на фиг.4A-4D) в рамках реализации с фиксированным числом битов, к примеру, для шестнадцати битов.

Аналогично процессу по фиг.7, процесс по фиг.8 начинается с формирования посредством модуля 35 или 55 компенсации движения полупиксельных значений на основе целопиксельных значений (131), к примеру, которые могут соответствовать пиксельным значениям в местоположениях "b" и "h" фиг.4A-4D. Модуль 35 или 55 компенсации движения затем округляет эти полупиксельные значения, чтобы формировать полупиксельные интерполированные значения (132), а также сохраняет неокругленные версии полупиксельных значений (133).

Далее, модуль 35 или 55 компенсации движения формирует дополнительное полупиксельное значение (к примеру, значение, соответствующее местоположению "j" на фиг.4A-4D) на основе неокругленных полупиксельных значений. Модуль 35 или 55 компенсации движения округляет дополнительное полупиксельное значение (к примеру, значение, соответствующее местоположению "j" на фиг.4A-4D) в случае необходимости, чтобы обеспечивать то, что это значение находится в рамках фиксированной битовой глубины (к примеру, в рамках шестнадцати битов) (135) без снижения точности четвертей пикселов на основе "j". Модуль 35 или 55 компенсации движения затем может формировать четвертьпиксельные значения на основе неокругленных полупиксельных значений, дополнительных полупиксельных значений и целопиксельных значений (136). Таким образом, все четвертьпиксельные значения, показанные с помощью заштриховки на фиг.4В (к примеру, местоположения"a", "c", "d", "e", "f", "g", "i", "k", "l", "m", "n" и "o" могут быть сформированы). Вышеприведенные таблицы и пояснение предоставляют более конкретные подробности относительно операций, которые могут выполняться в этом процессе.

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

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

Технологии, описанные в данном документе, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой их комбинации. Если реализованы в аппаратных средствах, любые признаки, описанные как модули, узлы или компоненты могут быть реализованы совместно в интегрированном логическом устройстве или отдельно как дискретные, но взаимодействующие логические устройства. Если реализованы в программном обеспечении, технологии могут быть реализованы, по меньшей мере, частично посредством машиночитаемого носителя, содержащего инструкции, которые, когда выполняются в процессоре, осуществляют один или более способов, описанных выше, Машиночитаемый носитель может содержать машиночитаемый носитель хранения данных и может являться частью компьютерного программного продукта, который может включать в себя упаковку. Машиночитаемые носители хранения данных могут содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитные или оптические носители хранения данных и т.п. Дополнительно или альтернативно, технологии могут быть реализованы, по меньшей мере, частично посредством машиночитаемой среды связи, которая переносит или передает код в форме инструкций или структур данных, и к которой можно осуществлять доступ, считывать или выполнять посредством компьютера.

Код может выполняться посредством одного или более процессоров, например одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в рамках специализированных программных модулей или аппаратных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный видеокодер-декодер (кодек). Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.

Описаны различные аспекты раскрытия сущности. Эти и другие аспекты находятся в рамках объема прилагаемой формулы изобретения.

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

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

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

4. Способ по п.1, дополнительно содержащий этап, на котором кодируют один или более видеоблоков с использованием прогнозирующих данных.

5. Способ по п.1, дополнительно содержащий этап, на котором декодируют один или более видеоблоков с использованием прогнозирующих данных.

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

7. Устройство по п.6, в котором модуль компенсации движения: формирует другое полупиксельное значение в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; и формирует множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.

8. Устройство по п.6, в котором модуль компенсации движения: сохраняет множество полупиксельных интерполированных значений и множество четвертьпиксельных значений в шестнадцатибитовой структуре данных; формирует другое полупиксельное значение в дополнение к множеству полупиксельных значений, на основе множества неокругленных версий множества полупиксельных значений; округляет другое полупиксельное значение так, что другое полупиксельное значение может сохраняться в шестнадцатибитовой структуре данных; и формирует множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.

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

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

11. Устройство по п.6, при этом устройство содержит интегральную схему.

12. Устройство по п.6, при этом устройство содержит микропроцессор.

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

14. Компьютерно-читаемый носитель хранения по п.13, дополнительно содержащий инструкции, которые при выполнении инструктируют устройству: формировать другое полупиксельное значение в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; и формировать множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.

15. Компьютерно-читаемый носитель хранения по п.13, дополнительно содержащий инструкции, которые при выполнении инструктируют устройству: сохранять множество полупиксельных интерполированных значений и множество четвертьпиксельных значений в шестнадцатибитовой структуре данных; формировать другое полупиксельное значение в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; округлять другое полупиксельное значение так, что другое полупиксельное значение может сохраняться в шестнадцатибитовой структуре данных; и формировать множество дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.

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

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

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

19. Устройство по п.18, дополнительно содержащее: средство для формирования другого полупиксельного значения в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; и средство для формирования множества дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.

20. Устройство по п.18, дополнительно содержащее: средство для сохранения множества полупиксельных интерполированных значений и множества четвертьпиксельных значений в шестнадцатибитовой структуре данных; средство для формирования другого полупиксельного значения в дополнение к множеству полупиксельных значений на основе множества неокругленных версий множества полупиксельных значений; средство для округления другого полупиксельного значения так, что другое полупиксельное значение может сохраняться в шестнадцатибитовой структуре данных; и средство для формирования множества дополнительных четвертьпиксельных значений в дополнение к множеству четвертьпиксельных значений на основе другого полупиксельного значения и множества неокругленных версий множества полупиксельных значений.

21. Устройство по п.18, дополнительно содержащее: средство для кодирования одного или более видеоблоков с использованием прогнозирующих данных.

22. Устройство по п.18, дополнительно содержащее: средство для декодирования одного или более видеоблоков с использованием прогнозирующих данных.

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

24. Устройство по п.23, при этом устройство содержит переносной телефон беспроводной связи.

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

26. Устройство по п.25, при этом устройство содержит переносной телефон беспроводной связи.



 

Похожие патенты:

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

Изобретение относится к цифровому видеокодированию и декодированию и, более конкретно, к способам фильтрации, применяемым для генерирования данных предсказания, используемых в видеокодировании и декодировании.

Изобретение относится к кодированию и декодированию цифрового видео и более конкретно к технологиям фильтрации, примененным для генерирования данных предсказания, используемых в кодировании и декодировании видео.

Изобретение относится к кодированию цифрового видео, а более конкретно к способу интерполяции значений под-пикселов. .

Изобретение относится к цифровому кодированию видеосигнала и, более конкретно, к методикам квантования для процессов кодирования видеосигнала, которые поддерживают адаптивное двоичное арифметическое кодирование, основанное на контексте (САВАС).

Изобретение относится к области кодирования и декодирования видеосигналов. .

Изобретение относится к кодированию цифрового видео, а более конкретно к технологиям масштабируемого кодирования видео (SVC), которые предоставляют пространственную масштабируемость.

Изобретение относится к способу и устройству управления квантованием для управления битовой скоростью кодирования при кодировании видеосигнала. .

Изобретение относится к поблочному видеокодированию, используемому для сжатия видеоданных, и, в частности, к кодированию коэффициентов фильтра, связанных с фильтрацией видеоблоков

Изобретение относится к видеокодированию и, в частности, к способам квантования для процессов видеокодирования, которые поддерживают контекстно-зависимое адаптивное двоичное арифметическое кодирование (САВАС)

Изобретение относится к кодированию видеосигналов и, в частности, к интерполированию опорных кадров в системах сжатия видеоизображений
Наверх