Усовершенствованные технологии интерполяции для компенсации движения при кодировании видео
Иллюстрации
Показать всеИзобретение относится к кодированию цифрового видео, и в частности к дробным интерполяциям прогнозирующих данных, используемым при кодировании видео. Техническим результатом является создание технологии интерполяции, выполняемой посредством кодера и декодера в ходе процесса компенсации движения кодирования видео. Указанный технический результат достигается тем, что кодер интерполирует пиксельные значения опорных видеоданных на основе множества различных заранее заданных интерполяционных фильтров. Декодер принимает элемент синтаксиса, который идентифицирует интерполяционный фильтр, и интерполирует пиксельные значения опорных видеоданных на основе интерполяционного фильтра, идентифицированного посредством элемента синтаксиса. В другом примере способ интерполяции прогнозирующих видеоданных включает в себя формирование полупиксельных значений на основе целопиксельных значений, округление полупиксельных значений, чтобы формировать полупиксельные интерполированные значения, сохранение полупиксельных значений как неокругленных версий полупиксельных значений и формирование четвертьпиксельных значений на основе неокругленных версий полупиксельных значений и целопиксельных значений. 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 для компонентов сигнала яркости и соответствующих масштабированных размеров для компонентов сигнала цветности. Видеоблоки могут содержать блоки пиксельных данных или блоки коэффициентов преобразования, к примеру, после процесса преобразования, такого как дискретное косинусное преобразование или концептуально аналогичный процесс преобразования.
Меньшие видеоблоки могут предоставлять лучшее разрешение и могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детальности. В общем, ма