ТЕХНОЛОГИИ ПРОГНОЗИРОВАНИЯ ДЛЯ ИНТЕРПОЛЯЦИИ ПРИ КОДИРОВАНИИ ВИДЕО
PREDICTION TECHNIQUES FOR INTERPOLATION IN VIDEO CODING

Данная заявка притязает на приоритет предварительной заявки на патент (США) 61/044020, поданной 10 апреля 2008 года, предварительной заявки на патент (США) 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).
Кодированный видеоблок может представляться посредством информации прогнозирования, которая может использоваться для того, чтобы создавать или идентифицировать прогнозный блок и остаточный блок данных, указывающих разности между кодируемым блоком и прогнозным блоком. Информация прогнозирования может содержать один или более векторов движения, которые используются для того, чтобы идентифицировать прогнозный блок данных. С учетом векторов движения, декодер может восстанавливать прогнозные блоки, которые использованы, чтобы кодировать остаток. Таким образом, с учетом набора остаточных блоков и набора векторов движения (и, возможно, некоторого дополнительного синтаксиса), декодер может восстанавливать видеокадр, который первоначально кодирован. Взаимное кодирование на основе оценки движения и компенсации движения может достигать очень хорошего сжатия, поскольку последовательные видеокадры или другие типы кодированных единиц зачастую являются в значительной степени аналогичными. Кодированная видеопоследовательность может содержать блоки остаточных данных, векторы движения и, возможно, другие типы синтаксиса.
Технологии интерполяции разработаны, чтобы повышать уровень сжатия, который может достигаться при взаимном внутрикадровом кодировании. В этом случае, прогнозирующие данные, сформированные в ходе компенсации движения, которая используется для того, чтобы кодировать видеоблок, могут быть интерполированы из пикселов видеоблоков видеокадра или другой кодированной единицы, используемой при оценке движения. Интерполяция зачастую выполняется для того, чтобы формировать прогнозирующие полупикселные значения (в половину пиксела) и прогнозирующие четвертьпикселные значения (в четверть пиксела). Полупикселные и четверьпикселные начения ассоциированы с субпикселными местоположениями. Дробные векторы движения могут использоваться для того, чтобы идентифицировать видеоблоки при субпикселном разрешении, чтобы фиксировать дробное перемещение в видеопоследовательности, и тем самым предоставлять прогнозные блоки, которые в большей степени аналогичны кодируемым видеоблокам, чем целочисленные видеоблоки.
Сущность изобретения
В общем, это раскрытие сущности описывает технологии фильтрации, применяемые посредством кодера и декодера во время стадии прогнозирования процесса кодирования и/или декодирования видео. Описанные технологии фильтрации позволяют повышать точность прогнозирующих данных, используемых во время дробной интерполяции, и в некоторых случаях позволяют улучшать прогнозирующие данные целочисленных блоков пикселов. Предусмотрено несколько аспектов для этого раскрытия сущности, в том числе применимая поддержка фильтра на двенадцать пикселов, который может использоваться для интерполяции, технологии, которые используют симметрию по коэффициентам и симметрию по пикселам, чтобы уменьшать объем данных, необходимых для отправки между кодером и декодером, чтобы конфигурировать поддержку фильтра для интерполяции, и технологии для фильтрации данных в целопикселных местоположениях способом, который является аналогичным субпикселной интерполяции. Другие аспекты этого раскрытия сущности касаются технологий для кодирования информации в потоке битов, чтобы передавать тип используемого фильтра и, возможно, используемые коэффициенты фильтрации. Технологии прогнозирующего кодирования для коэффициентов фильтрации также описываются. Эти и другие аспекты этого раскрытия сущности должны становиться очевидными из нижеприведенного описания.
В одном примере, это раскрытие сущности описывает способ, содержащий идентификацию набора коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео, формирование остаточных значений, ассоциированных с набором коэффициентов фильтрации, на основе прогнозирующего кодирования набора коэффициентов фильтрации относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, применение квантования к остаточным значениям и энтропийное кодирование и вывод квантованных остаточных значений как части кодированного потока битов.
В другом примере, это раскрытие сущности описывает способ, содержащий прием остаточных значений, ассоциированных с набором коэффициентов фильтрации, формирование набора коэффициентов фильтрации с использованием прогнозирующего декодирования на основе набора остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и применение набора коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные, используемые для прогнозирующего декодирования видеоблоков.
В другом примере, это раскрытие сущности описывает устройство, содержащее видеокодер, который идентифицирует набор коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео, формирует остаточные значения, ассоциированные с набором коэффициентов фильтрации, на основе прогнозирующего кодирования набора коэффициентов фильтрации относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, применяет квантование к остаточным значениям и энтропийно кодирует и выводит квантованные остаточные значения как часть кодированного потока битов.
В другом примере, это раскрытие сущности описывает устройство, содержащее видеодекодер, который принимает остаточные значения, ассоциированные с набором коэффициентов фильтрации, формирует набор коэффициентов фильтрации с использованием прогнозирующего декодирования на основе набора остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и применяет набор коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные, используемые для прогнозирующего декодирования видеоблоков.
В другом примере, это раскрытие сущности описывает устройство, содержащее средство для идентификации набора коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео, средство для формирования остаточных значений, ассоциированных с набором коэффициентов фильтрации, на основе прогнозирующего кодирования набора коэффициентов фильтрации относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, средство для применения квантования к остаточным значениям и средство для энтропийного кодирования и вывода квантованных остаточных значений как части кодированного потока битов.
В другом примере, это раскрытие сущности описывает устройство, содержащее средство для приема остаточных значений, ассоциированных с набором коэффициентов фильтрации, средства для формирования набора коэффициентов фильтрации с использованием прогнозирующего декодирования на основе набора остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и средство для применения набора коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные, используемые для прогнозирующего декодирования видеоблоков.
Технологии, описанные в данном раскрытии сущности, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. Если реализованы в программном обеспечении, программное обеспечение может выполняться в одном или более процессоров, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или процессор цифровых сигналов (DSP). Программное обеспечение, которое выполняет технологии, может быть первоначально сохранено на машиночитаемом носителе и загружено и приведено в исполнение в процессоре.
Соответственно, это раскрытие сущности также рассматривает машиночитаемый носитель хранения данных, содержащий инструкции, которые, когда выполняются посредством процессора, инструктируют процессору идентифицировать набор коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео, формировать остаточные значения, ассоциированные с набором коэффициентов фильтрации, на основе прогнозирующего кодирования набора коэффициентов фильтрации относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, применять квантование к остаточным значениям и энтропийно кодировать и выводить квантованные остаточные значения как часть кодированного потока битов.
В другом примере, это раскрытие сущности описывает машиночитаемый носитель хранения данных, содержащий инструкции, которые, когда выполняются посредством процессора, инструктируют процессору, после приема остаточных значений, ассоциированных с набором коэффициентов фильтрации, формировать набор коэффициентов фильтрации с использованием прогнозирующего декодирования на основе набора остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и применять набор коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные, используемые для прогнозирующего декодирования видеоблоков.
Подробности одного или более вариантов осуществления данного раскрытия сущности изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества технологий, описанных в данном раскрытии сущности, должны становиться очевидными из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
Фиг. 1 является блок-схемой, иллюстрирующей одну примерную систему кодирования и декодирования видео, которая может реализовывать технологии этого раскрытия сущности.
Фиг. 2 является блок-схемой, иллюстрирующей пример видеокодера, который может выполнять технологии фильтрации в соответствии с этим раскрытием сущности.
Фиг. 3 является концептуальной схемой, иллюстрирующей целопикселные позиции, ассоциированные с прогнозирующими данными, и субпикселные позиции, ассоциированные с интерполированными прогнозирующими данными.
Фиг. 4 является концептуальной схемой, иллюстрирующей поддержку фильтра на 12 пикселов относительно девяти субпикселных местоположений.
Фиг. 5 является концептуальной схемой, иллюстрирующей поддержку горизонтального фильтра на 6 пикселов относительно трех горизонтальных субпикселных местоположений и поддержку вертикального фильтра на 6 пикселов относительно трех вертикальных субпикселных местоположений.
Фиг. 6 является концептуальной схемой, иллюстрирующей поддержку фильтра на "пять пикселов по пять пикселов" для фильтрации целопикселного местоположения.
Фиг. 7 является концептуальной схемой, иллюстрирующей четыре целопикселные позиции и пятнадцать субпикселных позиций с заштриховкой, чтобы группировать позиции пиксела, которые могут использовать симметрию по пикселам для коэффициентов фильтрации в соответствии с этим раскрытием сущности.
Фиг. 8 является концептуальной схемой, иллюстрирующей шесть позиций поддержки горизонтальных линейных пикселов относительно субпиксела, с заштриховкой, которая показывает симметрию по коэффициентам.
Фиг. 9 является концептуальной схемой, иллюстрирующей шесть позиций поддержки горизонтальных линейных пикселов относительно субпиксела, с заштриховкой, которая показывает отсутствие симметрии по коэффициентам.
Фиг. 10 является концептуальной схемой, иллюстрирующей шесть позиций поддержки вертикальных линейных пикселов относительно субпиксела, с заштриховкой, которая показывает симметрию по коэффициентам.
Фиг. 11 является концептуальной схемой, иллюстрирующей шесть позиций поддержки вертикальных линейных пикселов относительно субпиксела, с заштриховкой, которая показывает отсутствие симметрии по коэффициентам.
Фиг. 12 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов относительно субпиксела, с заштриховкой, которая показывает отсутствие симметрии по коэффициентам.
Фиг. 13 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов относительно субпиксела, с заштриховкой, которая показывает симметрию по коэффициентам.
Фиг. 14 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов относительно субпиксела, с заштриховкой, которая показывает симметрию по коэффициентам.
Фиг. 15 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов относительно субпиксела, с заштриховкой, которая показывает симметрию по коэффициентам.
Фиг. 16 является блок-схемой, иллюстрирующей пример видеодекодера, который может декодировать видеопоследовательность, которая кодирована описанным в данном документе способом.
Фиг. 17 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует поддержку фильтра на двенадцать пикселов в соответствии с этим раскрытием сущности.
Фиг. 18 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует поддержку фильтра на двенадцать пикселов в соответствии с этим раскрытием сущности.
Фиг. 19 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует симметрию по коэффициентам и симметрию по пикселам в соответствии с этим раскрытием сущности.
Фиг. 20 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует симметрию по коэффициентам и симметрию по пикселам в соответствии с этим раскрытием сущности.
Фиг. 21 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует фильтрацию целопикселных местоположений, чтобы формировать регулируемые целопикселные значения в соответствии с этим раскрытием сущности.
Фиг. 22 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует фильтрацию целопикселных местоположений, чтобы формировать регулируемые целопикселные значения в соответствии с этим раскрытием сущности.
Фиг. 23 является блок-схемой последовательности операций, иллюстрирующей технологию для интерполяции на основе заданного искажения в зависимости от скорости передачи для кодирования видео на основе неперестраиваемого фильтра или адаптивного фильтра.
Фиг. 24 является блок-схемой последовательности операций, иллюстрирующей технологию для кодирования коэффициентов фильтрации с использованием прогнозирующего кодирования.
Фиг. 25 является другой блок-схемой последовательности операций, иллюстрирующей технологию для кодирования коэффициентов фильтрации с использованием прогнозирующего кодирования.
Фиг. 26 является блок-схемой последовательности операций, иллюстрирующей технологию для декодирования коэффициентов фильтрации с использованием прогнозирующего кодирования.
Фиг. 27 и 28 являются концептуальными графиками, иллюстрирующими коэффициенты фильтрации, которые могут прогнозирующе кодироваться.
Фиг. 29 является иллюстративным примером матрицы коэффициентов целопикселной фильтрации, для которых технологии прогнозирования могут использоваться для кодирования.
Подробное описание изобретения
Эта часть сущности описывает технологии фильтрации, применяемые посредством кодера и декодера во время стадии прогнозирования процесса кодирования и/или декодирования видео. Описанные технологии фильтрации позволяют повышать точность прогнозирующих данных, используемых во время дробной интерполяции, и в некоторых случаях позволяют улучшать прогнозирующие данные целых блоков пикселов. Предусмотрено несколько аспектов для этого раскрытия сущности, в том числе применимая поддержка фильтра на двенадцать пикселов, который может использоваться для интерполяции, технологии, которые используют симметрию по коэффициентам и симметрию по пикселам, чтобы уменьшать объем данных, необходимых для отправки между кодером и декодером, чтобы конфигурировать поддержку фильтра для интерполяции, и технологии для фильтрации данных в целопикселных местоположениях способом, который является аналогичным субпикселной интерполяции. Эти и другие технологии подробно описываются ниже.
Фиг. 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 и канал 15 связи. Модем 23 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, разработанные для модуляции сигналов. Передающее устройство 24 может включать в себя схемы, разработанные для передачи данных, в том числе усилители, фильтры и одну или более антенн.
Приемное устройство 26 целевого устройства 16 принимает информацию по каналу 15, и модем 27 демодулирует информацию. Аналогично передающему устройству 24, приемное устройство 26 может включать в себя схемы, разработанные для приема данных, в том числе усилители, фильтры и одну или более антенн. В некоторых случаях, передающее устройство 24 и/или приемное устройство 26 может быть включено в один компонент приемо-передающего устройства, который включают в себя как приемную, так и передающую схемы. Модем 27 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, разработанные для демодуляции сигналов. В некоторых случаях, модемы 23 и 27 могут включать в себя компоненты для выполнения как модуляции, так и демодуляции.
С другой стороны, процесс кодирования видео, выполняемый посредством видеокодера 22, может реализовывать одну или более технологий, описанных в данном документе, в ходе компенсации движения. Процесс декодирования видео, выполняемый посредством видеодекодера 28, также может выполнять такие технологии в ходе стадии компенсации движения процесса декодирования. Термин "кодер" используется в данном документе, чтобы упоминаться как специализированное компьютерное устройство, которое выполняет кодирование видео или декодирование видео. Термин "кодер", в общем, означает любое из видеокодера, видеодекодера или комбинированного кодера/декодера (кодека). Термин "кодирование" означает кодирование или декодирование. Дисплейное устройство 30 отображает декодированные видеоданные пользователю и может содержать любое из множества дисплейных устройств, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип дисплейного устройства.
В примере по фиг. 1, канал 15 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 15 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 15 связи, в общем, представляет любую подходящую среду связи или набор различных сред связи для передачи видеоданных из исходного устройства 12 в целевое устройство 16. Канал 15 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть применимым для того, чтобы упрощать передачу данных из исходного устройства 12 в целевое устройство 16.
Видеокодер 22 и видеодекодер 28 могут работать согласно стандарту сжатия видео, такому как стандарт ITU-T H.264, альтернативно описанный как MPEG-4, часть 10, усовершенствованное кодирование видео (AVC). Технологии этого раскрытия сущности, тем не менее, не ограничены каким-либо конкретным стандартом кодирования видео. Хотя не показано на фиг. 1, в некоторых аспектах, видеокодер 22 и видеодекодер 28 могут быть интегрированы с аудиокодером и декодером соответственно, и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
Видеокодер 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 для компонентов сигнала яркости и соответствующих масштабированных размеров для компонентов сигнала цветности. Видеоблоки могут содержать блоки пикселных данных или блоки коэффициентов преобразования, к примеру, после процесса преобразования, такого как дискретное косинусное преобразование (DCT) или концептуально аналогичный процесс преобразования.
Меньшие видеоблоки могут предоставлять лучшее разрешение и могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детализации. В общем, макроблоки и различные субблоки могут считаться видеоблоками. Помимо этого, серия последовательных макроблоков может считаться серией видеоблоков, таких как макроблоки и/или субблоки. Каждая серия последовательных макроблоков может быть независимо декодируемой единицей видеокадра. Альтернативно, сами кадры могут быть декодируемыми единицами, или другие части кадра могут быть заданы как декодируемые единицы. Термин "кодированная единица" означает любую независимо декодируемую единицу видеокадра, такую как весь кадр, серия последовательных макроблоков кадра или другая независимо декодируемая единица, заданная согласно используемым технологиям кодирования.
Чтобы кодировать видеоблоки, видеокодер 22 выполняет внутреннее или взаимное прогнозирование, чтобы формировать прогнозный блок. Видеокодер 22 вычитает прогнозные блоки из исходных видеоблоков, которые должны быть кодированы, чтобы формировать остаточные блоки. Таким образом, остаточные блоки служат признаком разностей между кодируемыми блоками и прогнозными блоками. Видеокодер 22 может выполнять преобразование для остаточных блоков, чтобы формировать блоки коэффициентов преобразования. После технологий внутреннего или взаимного прогнозирующего кодирования и преобразования, видеокодер 22 выполняет квантование. Квантование, в общем, означает процесс, в котором коэффициенты квантуются, чтобы, возможно, уменьшать объем данных, используемый для того, чтобы представлять коэффициенты. После квантования, энтропийное кодирование может выполняться согласно технологии энтропийного кодирования, такой как контекстно-адаптивное кодирование переменной длины (CAVLC) или контекстно-адаптивное двоичное арифметическое кодирование (CABAC). Дополнительные сведения по каждому этапу процесса кодирования, выполняемого посредством видеокодера 22, описываются подробнее ниже на фиг. 2.
В целевом устройстве 16, видеодекодер 28 принимает кодированные видеоданные. Видеодекодер 28 энтропийно декодирует принимаемые видеоданные согласно технологии энтропийного кодирования, такой как CAVLC или CABAC, чтобы получать квантованные коэффициенты. Видеодекодер 28 применяет функции обратного квантования (деквантования) и обратного преобразования, чтобы восстанавливать остаточный блок в пикселной области. Видеодекодер 28 также формирует прогнозный блок на основе управляющей информации или синтаксической информации (к примеру, режим кодирования, векторы движения, синтаксис, который задает коэффициенты фильтрации, и т.п.), включенной в кодированные видеоданные. Видеодекодер 28 суммирует прогнозный блок с восстановленным остаточным блоком, чтобы формировать восстановленный видеоблок для отображения. Дополнительные сведения по каждому этапу процесса кодирования, выполняемого посредством видеокодера 22, описываются подробнее ниже на фиг. 16.
Согласно технологиям этого раскрытия сущности, видеокодер 22 и видеодекодер 28 могут использовать одну или более технологий интерполяционной фильтрации в ходе компенсации движения. В частности, в соответствии с одним аспектом этого раскрытия сущности, видеокодер 22 и/или видеодекодер 28 может получать блок пикселов, при этом блок пикселов включает в себя целопикселные значения, соответствующие целопикселным позициям в рамках блока пикселов, вычислять субпикселные значения для субпикселных позиций, ассоциированных с блоком пикселов, на основе целопикселных значений, при этом вычисление субпикселных значений содержит применение интерполяционного фильтра, который задает двумерный массив позиций поддержки фильтра, соответствующих набору из двенадцати или более целопикселных позиций, которые окружают субпикселные позиции в радиальной форме, и формировать прогнозный блок на основе, по меньшей мере, некоторых из субпикселных значений. Пример двумерного массива позиций поддержки фильтра, соответствующих набору из двенадцати или более целопикселных позиций, подробнее поясняется ниже.
В соответствии с другим аспектом этого раскрытия сущности, видеокодер 22 и/или видеодекодер 28 может использовать аспекты симметрии, чтобы уменьшать объем данных, который должен передаваться между исходным устройством 12 и целевым устройством 16 для обмена коэффициентами фильтрации, используемыми при интерполяции. Видеокодер 22 может определять восемь наборов коэффициентов фильтрации для пятнадцати различных субпикселных местоположений, при этом восемь наборов коэффициентов фильтрации формируются на основе симметрии по коэффициентам и симметрии по пикселам для пятнадцати субпикселных местоположений, и выводить восемь наборов коэффициентов фильтрации в другое устройство как часть кодированного потока битов. Таким образом, восемь наборов, наряду с аспектами симметрии по пикселам и симметрии коэффициентов, могут задавать все коэффициенты фильтрации для всех пятнадцати четвертьпикселных и полупикселных позиций пиксела. Кроме того, симметрия по пикселам может существовать между различными из этих пятнадцати субпикселных местоположений в вертикальной размерности и в горизонтальной размерности, но симметрия по пикселам не может существовать в диагональной размерности, по меньшей мере, для некоторых из субпикселных местоположений пятнадцати наборов. Это отсутствие симметрии по пикселам в диагональной размерности, по меньшей мере, для некоторых из этих пятнадцати местоположений позволяет улучшать интерполяции и повышать качество видео при кодировании и декодировании видео.
Видеодекодер 28 целевого устройства 16 может принимать восемь наборов коэффициентов фильтрации как часть кодированного потока видеобитов, формировать пятнадцать наборов коэффициентов фильтрации, соответствующих пятнадцати различным субпикселным местоположениям, на основе восьми наборов коэффициентов фильтрации, формировать интерполированные прогнозирующие данные для декодирования видео на основе одного из пятнадцати наборов коэффициентов фильтрации, при этом интерполированные прогнозирующие данные соответствуют одному из пятнадцати различных субпикселных местоположений, и декодировать один или более видеоблоков на основе интерполированных прогнозирующих данных.
В соответствии с другим аспектом этого раскрытия сущности, видеокодер 22 и/или видеодекодер 28 может использовать аналогичную интерполяционной фильтрацию относительно целопикселных позиций, чтобы формировать регулируемые целопикселные значения. Такая аналогичная интерполяционной фильтрация позволяет улучшать сжатие конкретно во время изменений освещения, выходов из затемнения или затемнений сцены, позволяет удалять шум и упрощать увеличение резкости кадров с изображениями и позволяет помогать улучшать кодирование точного перемещения объекта между последовательными видеокадрами, в частности, когда симметрия не накладывается на коэффициенты фильтрации.
Технологии аналогичной интерполяционной фильтрации видеокодера 22 и/или видеодекодер 28 могут включать в себя получение блоков пикселов, при этом блоки пикселов включают в себя целопикселные значения, соответствующие целопикселным позициям в рамках блоков пикселов, фильтрацию целопикселных значений на основе других целопикселных значений в рамках блока пикселов, чтобы формировать регулируемые целопикселные значения, при этом отрегулированные целопикселные значения соответствуют целопикселным позициям, и формирование прогнозного блока на основе отрегулированных целопикселных значений.
В соответствии с другим аспектом этого раскрытия сущности, видеокодер 22 может формировать первые интерполированные прогнозирующие данные для кодирования видеоданных на основе первого интерполяционного фильтра, формировать вторые интерполированные прогнозирующие данные для кодирования видео для видеоданных на основе второго интерполяционного фильтра, выбирать между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи, кодировать видеоданные на основе выбора и кодировать синтаксис, чтобы указывать выбор. Первый интерполяционный фильтр может содержать неперестраиваемый интерполяционный фильтр, а второй интерполяционный фильтр может содержать адаптивный интерполяционный фильтр, но это раскрытие сущности не обязательно ограничено этими примерами.
Кроме того, дополнительные интерполяционные фильтры также могут применяться, чтобы формировать дополнительные интерполированные прогнозирующие данные, которые также могут рассматриваться при анализе искажения в зависимости от скорости передачи. Другими словами, технологии этого раскрытия сущности не ограничены формированием только первых и вторых интерполированных прогнозирующих данных на основе двух интерполяционных фильтров, но могут применяться, чтобы формировать любое множество интерполированных прогнозирующих данных на основе любого числа интерполяционных фильтров. Важно, что интерполированные прогнозирующие данные анализа искажения в зависимости от скорости передачи используются для того, чтобы идентифицировать то, какой фильтр следует выбирать.
В одном примере, способ может содержать формирование множества различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров, выбор из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи, кодирование видеоданных на основе выбора и кодирование синтаксиса, чтобы указывать выбор.
Это раскрытие сущности также рассматривает технологию для кодирования коэффициентов фильтрации. Например, видеокодер 22 может идентифицировать набор коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео, формировать остаточные значения, ассоциированные с набором коэффициентов фильтрации, на основе прогнозирующего кодирования набора коэффициентов фильтрации относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, применять квантование к остаточным значениям и выводить квантованные остаточные значения как часть кодированного потока битов.
Видеодекодер 28 может принимать остаточные значения, ассоциированные с набором коэффициентов фильтрации, формировать набор коэффициентов фильтрации с использованием прогнозирующего декодирования на основе набора остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и применять набор коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные, используемые для прогнозирующего декодирования видеоблоков.
Фиг. 2 является блок-схемой, иллюстрирующей пример видеокодера 50, который может выполнять технологии фильтрации в соответствии с этим раскрытием сущности. Видеокодер 50 является одним примером специализированного компьютерного видеоустройства, упоминаемого в данном документе как "кодер". Видеокодер 50 может соответствовать видеокодеру 22 устройства 20 или видеокодеру другого устройства. Видеокодер 50 может выполнять внутреннее и взаимное кодирование блоков в рамках видеокадров, хотя компоненты внутреннего кодирования не показаны на фиг. 2 для простоты иллюстрации. Внутреннее кодирование основано на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре. Взаимное кодирование основано на временном прогнозировании, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах видеопоследовательности. Внутренний режим (I-режим) может упоминаться как пространственный режим сжатия, а взаимные режимы, такие как режим прогнозирования (P-режим) или двунаправленный режим (режим B), могут упоминаться как временные режимы сжатия. Технологии этого раскрытия сущности применяются во время взаимного кодирования, и, следовательно, модули внутреннего кодирования, к примеру, модуль пространственного прогнозирования, не проиллюстрированы на фиг. 2 для простоты и удобства иллюстрации.
Как показано на фиг. 2, видеокодер 50 принимает текущий видеоблок в видеокадре, который должен быть кодирован. В примере по фиг. 2, видеокодер 50 включает в себя модуль 32 прогнозирования, запоминающее устройство 34, сумматор 48, модуль 38 преобразования, модуль 40 квантования и модуль 46 энтропийного кодирования. Для восстановления видеоблока видеокодер 50 также включает в себя модуль 42 обратного квантования, модуль 44 обратного преобразования и сумматор 51. Фильтр удаления блочности (не показан) также может быть включен, чтобы фильтровать границы блоков, чтобы удалять артефакты блочности из восстановленного видео. Если требуется, фильтр удаления блочности типично должен фильтровать вывод сумматора 51.
Модуль 32 прогнозирования может включать в себя модуль 35 оценки движения (ME) и модуль 37 компенсации движения (MC). Фильтр 37 может быть включен в модуль 32 прогнозирования и может активироваться посредством одного или обоих из ME-модуля 35 и MC-модуля 37, чтобы выполнять интерполяционную или аналогичную интерполяционной фильтрацию как часть оценки движения и/или компенсации движения, согласно этому раскрытию сущности. Фильтр 37 может фактически представлять множество различных фильтров, чтобы упрощать многочисленные различные типы интерполяционной и аналогичной интерполяционной фильтрации, как описано в данном документе. Таким образом, модуль 32 прогнозирования может включать в себя множество интерполяционных или аналогичных интерполяционным фильтров. В ходе процесса кодирования видеокодер 50 принимает видеоблок, который должен кодироваться (помеченный "видеоблок" на фиг. 2) и модуль 32 прогнозирования выполняет кодирование взаимного прогнозирования, чтобы формировать прогнозный блок (помеченный "прогнозный блок" на фиг. 2). В частности, ME-модуль 35 может выполнять оценку движения, чтобы идентифицировать прогнозный блок в запоминающем устройстве 34, и MC-модуль 37 может выполнять компенсацию движения, чтобы формировать прогнозный блок.
Оценка движения типично считается процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение прогнозного блока в рамках прогнозного или опорного кадра (или другой кодированной единицы, к примеру, серии последовательных макроблоков) относительно блока, который должен быть кодирован в рамках текущего кадра (или другой кодированной единицы). Опорный кадр (или часть кадра) может временно находиться до или после видеокадра (или части видеокадра), которому принадлежит текущий видеоблок. Компенсация движения типично считается процессом выборки или формирования прогнозного блока из запоминающего устройства 34 либо, возможно, интерполяции или иного формирования фильтрованных прогнозирующих данных на основе вектора движения, определенного посредством оценки движения.
ME-модуль 35 выбирает соответствующий вектор движения для видеоблока, который должен кодироваться, посредством сравнения видеоблока с видеоблоками одного или более опорных кадров (к примеру, предыдущего и/или последующего кадра). ME-модуль 35 может выполнять оценку движения с дробнопикселной точностью, иногда называемую дробнопикселной, частичнопикселной или субпикселной оценкой движения. По сути, термины опикселная, частичнопикселная или субпикселная оценка движения могут использоваться взаимозаменяемо. При оценке дробнопикселного движения ME-модуль 35 может выбирать вектор движения, который указывает смещение в местоположение, отличное от целопикселного местоположения. Таким образом, оценка дробнопикселного движения дает возможность модулю 32 прогнозирования отслеживать движение с более высокой точностью, чем целопикселные местоположения (или полнопикселные), чтобы тем самым формировать более точный прогнозный блок. Оценка дробнопикселного движения может иметь полупикселную точность, четвертьпикселную точность, точность в одну восьмую пиксела или любую большую точность. ME-модуль 35 может активировать фильтр(ы) 39 для всех требуемых интерполяций в ходе процесса оценки движения.
Чтобы выполнять компенсацию дробнопикселного движения, MC-модуль 37 может выполнять интерполяцию (иногда называемую интерполяционной фильтрацией), чтобы формировать данные при субпикселном разрешении (упоминаемые в данном документе как субпикселные или дробнопикселные значения). MC-модуль 37 может активировать фильтр(ы) 39 для этой интерполяции. Модуль 32 прогнозирования может выполнять интерполяцию (или аналогичную интерполяционной фильтрацию целых пикселов) с использованием технологий, описанных в данном документе.
После того как вектор движения для видеоблока, который должен кодироваться, выбирается посредством ME-модуля 35, MC-модуль 37 формирует прогнозный видеоблок, ассоциированный с этим вектором движения. MC-модуль 37 может выбирать прогнозный блок из запоминающего устройства 34 на основе вектора движения, определенного посредством MC-модуля 35. В случае вектора движения с дробнопикселной точностью, MC-модуль 37 фильтрует данные из запоминающего устройства 34, чтобы интерполировать такие данные до субпикселного разрешения, к примеру, при вызове фильтра(ов) 39 для этого процесса. В некоторых случаях, технология или режим интерполяционной фильтрации, который использован, чтобы формировать прогнозирующие субпикселные данные, может указываться как один или более элементов синтаксиса интерполяции для модуля 46 энтропийного кодирования для включения в кодированный поток битов. Действительно, некоторые аспекты этого раскрытия сущности касаются использования симметрии по пикселам и симметрии по коэффициентам, чтобы уменьшать величину синтаксиса, который должен быть передан.
После того как модуль 32 прогнозирования формирует прогнозный блок, видеокодер 50 формирует остаточный видеоблок (помеченный "остаточный блок" на фиг. 2) посредством вычитания прогнозного блока из кодируемого исходного видеоблока. Сумматор 48 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 38 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий остаточные блочные коэффициенты преобразования. Модуль 38 преобразования, например, может выполнять другие преобразования, заданные посредством стандарта H.264, которые являются концептуально аналогичными DCT. Вейвлет-преобразования, целочисленные преобразования, субполосные преобразования или другие типы преобразований также могут использоваться. В любом случае, модуль 38 преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пикселного домена в частотный домен.
Модуль 40 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. После квантования, модуль 46 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 46 энтропийного кодирования может выполнять CAVLC, CABAC или другую технологию энтропийного кодирования.
Модуль 46 энтропийного кодирования также может кодировать один или более элементов синтаксиса прогнозирования, полученных из модуля 32 прогнозирования или другого компонента видеокодера 50. Один или более элементов синтаксиса прогнозирования могут включать в себя режим кодирования, один или более векторов движения, технологию интерполяции, которая использована для того, чтобы формировать субпикселные данные, набор или поднабор коэффициентов фильтрации или другую информацию, ассоциированную с формированием прогнозного блока. Модуль 41 прогнозирования коэффициентов и квантования может прогнозирующе кодировать и квантовать синтаксис прогнозирования, к примеру, коэффициенты фильтрации, согласно некоторым аспектам этого раскрытия сущности. После энтропийного кодирования посредством модуля 46 энтропийного кодирования, кодированное видео и элементы синтаксиса могут быть переданы в другое устройство или заархивированы для последующей передачи или извлечения.
Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование соответственно, чтобы восстанавливать остаточный блок в пикселном домене, к примеру, для последующего использования в качестве опорного блока. Восстановленный остаточный блок (помеченный "восстановленный остаточный блок" на фиг. 2) может представлять восстановленную версию остаточного блока, предоставленного в модуль 38 преобразования. Восстановленный остаточный блок может отличаться от остаточного блока, сформированного посредством сумматора 48, вследствие потери детализации, вызываемой посредством операций квантования и обратного квантования. Сумматор 51 прибавляет восстановленный остаточный блок к блоку прогнозирования с компенсацией движения, сформированному посредством модуля 32 прогнозирования, чтобы формировать восстановленный видеоблок для хранения в запоминающем устройстве 34. Восстановленный видеоблок может использоваться посредством модуля 32 прогнозирования в качестве опорного блока, который может использоваться для того, чтобы затем кодировать блок в последующем видеокадре или последующей кодированной единице.
Как описано выше, модуль 32 прогнозирования может выполнять оценку движения с дробнопикселной точностью (или субпикселной). Когда модуль 32 прогнозирования использует оценку дробнопикселного движения, модуль 32 прогнозирования может формировать данные при субпикселном разрешении (к примеру, субпикселные или дробнопикселные значения) с помощью операций интерполяции, описанных в этом раскрытии сущности. Другими словами, операции интерполяции используются для того, чтобы вычислять значения в позициях между целопикселными позициями. Субпикселные позиции, расположенные на половине расстояния между целопикселными позициями, могут упоминаться как полупикселные позиции (в половину пиксела), субпикселные позиции, расположенные на половине расстояния между целопикселной позицией и полупикселной позицией, могут упоминаться как четвертьпикселные позиции (в одну четвертую пиксела), субпикселные позиции, расположенные на половине расстояния между целопикселной позицией (или полупикселной позицией) и четвертьпикселной позицией, упоминаются как позиции в одну восьмую пиксела (одну восьмую) и т.п.
Фиг. 3 является концептуальной схемой, иллюстрирующей целопикселные позиции (или полный пиксел), ассоциированные с прогнозирующими данными, и субпикселные позиции (или дробный пиксел), ассоциированные с интерполированными прогнозирующими данными. В концептуальной иллюстрации по фиг. 3, различные прямоугольники представляют пикселные и субпикселные местоположения позиции в пиксел и субпиксел в рамках кадра или блока кадра. Заглавные буквы (в прямоугольниках со сплошными линиями) представляют целопикселные местоположения, при этом строчные буквы (в прямоугольниках с пунктирными линиями) представляют субпикселные местоположения. В частности, местоположения пикселов A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 и F1-F6 представляют матрицу 6x6 целопикселных местоположений в рамках кадра, серии последовательных макроблоков или другой кодированной единицы. Субпикселные местоположения "a"-"o" представляют пятнадцать субпикселных местоположений, ассоциированных с целым пикселом C3, к примеру, между целопикселными местоположениями C3, C4, D3 и D4. Аналогичные субпикселные местоположения могут существовать для каждого целопикселного местоположения. Субпикселные местоположения "a"-"o" представляют каждое полупикселное и четвертьпикселное местоположение пиксела, ассоциированное с целым пикселом C3.
Целопикселные местоположения могут быть ассоциированы с элементом физического датчика, таким как фотодиод, когда видеоданные первоначально сформированы. Фотодиод может измерять силу света в источнике света в местоположении датчика и ассоциировать значение силы света пиксела с целопикселным местоположением. С другой стороны, каждое целопикселное местоположение может иметь ассоциированный набор из пятнадцати субпикселных местоположений (или, возможно, больше). Число субпикселных местоположений, ассоциированных с целопикселными местоположениями, может зависеть от требуемой точности. В примере, проиллюстрированном на фиг. 3, требуемая точность составляет четвертьпикселную точность, когда каждое из целопикселных местоположений соответствует пятнадцати различным субпикселным позициям. Большее или меньшее число субпикселных позиций может быть ассоциировано с каждым целопикселным местоположением на основе требуемой точности. Для полупикселной точности, например, каждое целопикселное местоположение может соответствовать трем субпикселным позициям. В качестве другого примера, каждое из целопикселных местоположений может соответствовать шестидесяти трем субпикселным позициям для точности в одну восьмую пиксела. Каждое местоположение пиксела может задавать одно или более пикселных значений, к примеру, одно или более значений сигнала яркости и сигнала цветности.
Y может представлять сигнал яркости, а Cb и Cr могут представлять два различных значения сигнала цветности трехмерного цветового пространства YCbCr. Каждое местоположение пиксела может фактически задавать три пикселных значения для трехмерного цветового пространства. Технологии этого раскрытия сущности, тем не менее, могут упоминаться как прогнозирование относительно одной размерности для простоты. В степени, в которой технологии описываются относительно пикселных значений в одной размерности, аналогичные технологии могут быть расширены на другие размерности.
В примере по фиг. 3, субпикселные местоположения, ассоциированные с целым пикселом "C3", проиллюстрированы для четвертьпикселной точности. Пятнадцать субпикселных позиций, ассоциированных с пикселом C3, помечаются как "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n" и "o". Большинство других дробных местоположений, ассоциированных с другими целопикселными местоположениями, не показано для простоты (кроме используемых для того, чтобы формировать одно или более 15 различных дробных местоположений, ассоциированных с местоположением пиксела C3, как подробнее описано ниже). Субпикселные местоположения "b", "h" и "j" могут упоминаться как полупикселные местоположения, а субпикселные местоположения "a", "c", "d", "e", "f", "g", "i", "k", "l", "m" и "o" могу упоминаться как четвертьпикселные местоположения.
Модуль 32 прогнозирования видеокодера 40 может определять пикселные значения для субпикселных местоположений "a"-"o" с использованием интерполяционной фильтрации посредством MC-модуля 37. Согласно стандарту ITU-T H.264, например, модуль 32 прогнозирования может определять пикселные значения для полупикселных местоположений с использованием 6-отводного интерполяционного фильтра, такого как фильтр Винера. В случае стандарта H.264 коэффициенты фильтрации для 6-отводного интерполяционного фильтра типично составляют [1, -5, 20, 20, -5, 1], хотя могут использоваться другие коэффициенты. Модуль 32 прогнозирования может применять интерполяционный фильтр сначала в горизонтальном направлении, а затем в вертикальном направлении, или наоборот. Для полупикселных позиций "b" и "h", каждый отвод может соответствовать целопикселной позиции в горизонтальном и вертикальном направлении соответственно. В частности, для полупикселной позиции "b", отводы 6-отводного фильтра соответствуют C1, C2, C3, C4, C5 и C6. Аналогично, для полупикселной позиции "h", отводы 6-отводного фильтра соответствуют A3, B3, C3, D3, E3 и F3. Например, пикселные значения для субпикселных позиций "b" и "h" могут вычисляться с использованием уравнений (1) и (2):
b=((C1-5*C2+20*C3+20*C4-5*C5+C6)+16)/32 (1)
h=((A3-5*B3+20*C3+20*D3-5*E3+F3)+16)/32 (2)
Для полупикселной позиции "j", отводы 6-отводного фильтра соответствуют сами себе для интерполяции горизонтально между позициями C1-C6 и D1-D6 или вертикально между позициями A3-F3 и A4-F4. Полупикселное местоположение "j" может вычисляться с 6-отводным фильтром, который использует ранее интерполированные пикселные значения полупикселных позиций, к примеру, в соответствии с одним из уравнений (3) или (4):
j=((aa-5*bb+20*b+20*hh-5*ii+jj)+16)/32 (3)
j=((cc-5*dd+20*h+20*ee-5*ff+gg)+16)/32 (4)
где (как проиллюстрировано на фиг. 3) aa соответствует интерполяции между A3, и A4, bb соответствует интерполяции между B3 и B4, b соответствует интерполяции между C3 и C4, hh соответствует интерполяции между D3 и D4, ii соответствует интерполяции между E3 и E4, и jj соответствует интерполяции между F3 и F4. В уравнении 4, cc соответствует интерполяции между C1 и D1, dd соответствует интерполяции между C2 и D2, h соответствует интерполяции между C3 и D3, ee соответствует интерполяции между C4 и D4, ff соответствует интерполяции между C5 и D5, и gg соответствует интерполяции между C6 и D6.
Согласно стандарту H.264, модуль 32 прогнозирования может определять пикселные значения в четвертьпикселных местоположениях "a", "c", "d", "e", "f", "g", "i", "k", "l", "m", "n" и "o" с использованием билинейного интерполяционного фильтра и пикселных значений окружающих целопикселных и полупикселных местоположений. Например, модуль 32 прогнозирования может определять пикселное значение, ассоциированное с субпикселной позицией "a", с помощью пикселных значений C3 и "b", определять пикселное значение, ассоциированное с субпикселной позицией "c", с помощью пикселных значений "b" и C4, и т.п.
Фактический фильтр, который применяется посредством MC-модуля 37, чтобы формировать интерполированные данные в субпикселных местоположениях, может подвергаться широкому спектру реализаций. В качестве одного примера, модуль 32 прогнозирования может использовать адаптивную интерполяционную фильтрацию (AIF), как описано ниже, чтобы задавать интерполированные значения. Комитет ITU-T SG16/Q.6/VCEG (экспертная группа в области кодирования видео) исследует технологии кодирования, которые предлагают более высокую эффективность кодирования, чем H.264 и, в частности, AIF. AIF предлагает большое усиление при кодировании по сравнению с интерполяционной фильтрацией, используемой в стандарте H.264, в частности, для видеопоследовательностей с высоким разрешением (к примеру, 720i/p или 1080i/p). В AIF интерполяционный фильтр для каждой субпикселной позиции аналитически вычисляется для каждого видеокадра посредством минимизации энергии ошибок прогнозирования. Это поможет разрешать наложение спектров, ошибки квантования и оценки движения, шум камеры или другой артефакт, содержавшийся в исходных и опорных видеокадрах. Аналитически извлеченные коэффициенты адаптивной фильтрации для каждого кадра затем прогнозируются, квантуются, кодируются и отправляются в потоке видеобитов. Некоторые из технологий этого раскрытия сущности могут работать в рамках схемы AIF, а также многих других схем интерполяции.
Предусмотрено множество различных типов схем AIF согласно аспектам этого раскрытия сущности. Например, первая схема - это двумерный неразделимый AIF (NS-AIF), вторая - это разделимый AIF (S-AIF), а третья - это AIF с направленными фильтрами (D-AIF). Хотя каждая из этих схем AIF использует различные технологии интерполяции и поддержку, все три схемы AIF могут использовать аналогичные аналитические процессы, чтобы извлекать коэффициенты фильтрации, что поясняется ниже с помощью неразделимого AIF в качестве примера.
Предположим, что двумерный неразделимый фильтр 6x6 имеет коэффициенты , где i, j=0,..., 5, а SP представляет одну из 15 субпикселных позиций ("a"-"o"), показанных на фиг. 3. Следует отметить, что 6 из 15 субпикселных позиций, т.е. "a", "b", "c", "d", "h" и "l", являются одномерными (1D) субпикселными позициями, и модуль 32 прогнозирования может использовать 6-отводный интерполяционный фильтр, чтобы интерполировать такие данные. Субпикселные позиции "a", "b", "c", "d", "h" и "l" являются одномерными в том смысле, что они находятся в горизонтальной или вертикальной строке между двумя целопикселными позициями. Кроме того, допустим, что прогнозирующие пикселы в целопикселных позициях (A1-F6 на фиг. 3) в опорном кадре принимают пикселные значения , где i, j=0,..., 5. Таким образом, A1 принимает значение ,..., A6 принимает значение ,..., F1 принимает значение ,..., и F6 принимает значение . Затем, интерполированное значение  в субпикселной позиции SP, , может вычисляться посредством модуля 32 прогнозирования с использованием следующего уравнения:
(5)
Пусть  является пикселным значением в текущем видеокадре в позиции .
,
где  - это вектор движения,  - это целочисленный компонент вектора движения, и  - это смещение фильтра. Значение  является соответствующей позицией пиксела в опорных кадрах. Например, в случае 6-отводного фильтра, . Для каждой субпикселной позиции SP энергия  ошибок прогнозирования между фактическим пикселным значением в текущем кадре и интерполированным значением может накапливаться посредством модуля 32 прогнозирования для всех пикселов, которые имеют точность вектора движения, соответствующую субпикселной позиции SP. Энергия ошибок прогнозирования может вычисляться посредством модуля 32 прогнозирования с использованием следующего уравнения:
(6)
Для каждой из субпикселных позиций a-o MC-модуль 37 может устанавливать отдельную систему уравнений посредством вычисления производной  относительно коэффициентов фильтрации . Число уравнений в этом случае равно числу коэффициентов фильтрации, используемых для текущей субпикселной позиции . Для каждой двумерной (двумерной) субпикселной позиции "e", "f", "g", "i", "j", "k", "m", "n" и "o", модуль 32 прогнозирования может использовать 6x6-отводный двумерный интерполяционный фильтр. Субпикселные позиции "e", "f", "g", "i", "j", "k", "m", "n" и o" являются двумерными в том смысле, что они не находятся в вертикальной строке или горизонтальной строке между двумя целопикселными позициями. В этом случае, система из тридцати шести уравнений с тридцатью шестью неизвестными может разрешаться посредством MC-модуля 37. Оставшиеся одномерные субпикселные позиции "a", "b", "c", "d", "h", и "l" могут требовать только одномерного интерполяционного фильтра (к примеру, одномерного 6-отводного фильтра). В случае одномерного 6-отводного фильтра система из шести уравнений может разрешаться посредством MC-модуля 37.
(7)
Фильтр(ы) 39 может представлять один фильтр или набор из множества различных фильтров, которые могут использоваться посредством MC-модуля 37 для того, чтобы формировать прогнозирующие данные.
Таким образом, один примерный процесс извлечения и применения AIF-фильтров может иметь следующие этапы, которые могут выполняться посредством модуля 32 прогнозирования:
1. Оценка векторов  движения для каждого видеоблока, который должен кодироваться. Во время оценки движения, неперестраиваемый интерполяционный фильтр (к примеру, интерполяционный процесс H.264/AVC) может применяться.
2. С использованием этих векторов движения, накопление энергии ошибок прогнозирования для каждой субпикселной позиции  по текущему видеокадру. Затем, вычисление коэффициентов  адаптивной фильтрации для каждой субпикселной позиции  независимо посредством минимизации энергии ошибок прогнозирования, как указано в двух вышеприведенных уравнениях энергии прогнозирования.
3. Оценка новых векторов движения. В ходе процесса оценки движения адаптивные интерполяционные фильтры, вычисленные на этапе 2, могут применяться. С помощью адаптивных интерполяционных фильтров, ошибки оценки движения, вызываемые посредством наложения спектров, шума камеры и т.д., уменьшаются, и достигается лучшее прогнозирование движения.
Различные схемы AIF могут использовать аналитический процесс, идентичный процессу, заданному выше. Отличия между различными схемами главным образом заключаются в числе используемых уникальных коэффициентов фильтрации, в том, являются интерполяционные фильтры разделимыми или неразделимыми, и в используемой поддержке фильтра (т.е. в целопикселных позициях, используемых для того, чтобы интерполировать, по меньшей мере, часть субпикселных позиций). В каждой из этих схем определенные ограничения по симметрии для AIF-фильтров могут быть наложены для того, чтобы сокращать число коэффициентов фильтрации, которое должно быть кодировано и отправлено в потоке видеобитов.
Для NS-AIF, например, MC-модуль 37 модуля 32 прогнозирования может интерполировать одномерные субпикселные позиции "a", "b", "c", "d", "h" и "l" с использованием одномерного 6-отводного интерполяционного фильтра (также называемого 6-позиционным фильтром, поскольку каждый отвод соответствует целопикселной позиции), что требует шести коэффициентов. Шесть коэффициентов 6-позиционных фильтров, используемых для того, чтобы интерполировать одномерный субпиксел, соответствуют одной из целопикселных позиций, проиллюстрированных на фиг. 3. Например, для субпикселных позиций "a", "b" и "c", шестью целопикселными позициями, соответствующими коэффициентам, являются C1, C2, C3, C4, C5 и C6 и для субпикселных позиций "d", "h" и "l", шестью целопикселными позициями, соответствующими коэффициентам, являются A3, B3, C3, D3, E3 и F3. Эти целопикселные позиции представляют "поддержку фильтра" для интерполяционного фильтра.
Модуль 32 прогнозирования может интерполировать двумерные субпикселные позиции "e", "f", "g", "i", "j", "k", "m", "n" и o" с использованием двумерного интерполяционного фильтра 6x6, который требует тридцати шести коэффициентов фильтрации. Тридцать шесть коэффициентов двумерного интерполяционного фильтра 6x6, использованные для того, чтобы интерполировать двумерный субпиксел, соответствуют целопикселным позициям A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 и F1-F6. Эти целопикселные позиции представляют "поддержку фильтра" для интерполяционного фильтра. Если дополнительное ограничение не накладывается, к примеру, отсутствует симметрия по коэффициентам или пикселам, видеокодер 50 может кодировать и передавать девять наборов из тридцати шести коэффициентов для двумерных субпикселных позиций и шесть наборов из шести коэффициентов для одномерных субпикселных позиций, всего 360 коэффициентов. Кодирование и отправка этого числа коэффициентов в потоке видеобитов может приводить к затратному дополнительному числу битов. Высокое дополнительное число битов может, в свою очередь, увеличивать скорость передачи битов для данного уровня искажения, что нежелательно.
Чтобы уменьшать дополнительное число битов, ассоциированное с отправкой коэффициентов фильтрации, определенные ограничения по симметрии могут быть введены для интерполяционных фильтров, чтобы сокращать число уникальных коэффициентов фильтрации, которое должно отправляться в декодер 28. Два типа симметрии, т.е. симметрия по пикселам и симметрия по коэффициентам, могут быть наложены по отдельности или в комбинации. Симметрия по пикселам принудительно активирует идентичный набор коэффициентов фильтрации (и зеркальные, перевернутые и/или повернутые версии набора) для различных субпикселных позиций. Симметрия по пикселам также может упоминаться как симметрия по субпикселам, когда такая симметрия по пикселам применяется относительно коэффициентов фильтрации, ассоциированных с двумя или более субпикселными местоположениями. Симметрия по коэффициентам, с другой стороны, принудительно активирует данный интерполяционный фильтр так, чтобы быть симметричным в определенном направлении (к примеру, горизонтальном направлении, вертикальном направлении или и в том, и в другом) для различных позиций поддержки фильтра относительно других позиций поддержки фильтра для данных субпикселных значений, которые должны быть интерполированы.
Симметрия по пикселам может использоваться в NS-AIF. Снова ссылаясь на фиг. 3, пусть  является набором коэффициентов фильтрации для субпикселной позиции "a", в таком случае набором коэффициентов фильтрации для субпикселной позиции "c" является , т.е. идентичный коэффициент в обратном порядке или горизонтально перевернутый. Таким образом, значение  прогнозирующего пиксела в субпикселной позиции "a" и значение  прогнозирующего пиксела в субпикселной позиции "c" могут вычисляться с использованием (8) и (9) соответственно.
(8)
(9)
Субпикселные позиции "d" и "l" могут быть интерполированы с использованием набора коэффициентов интерполяционной фильтрации, идентичного набору коэффициентов субпикселных позиций "a" и "c" соответственно. По сути, субпикселные позиции "a" и "c" могут иметь симметрию по пикселам относительно субпикселных позиций "d" и "l".
Один аспект этого раскрытия сущности состоит в том, чтобы фактически удалять симметрию по пикселам между субпикселными позициями "a" и "c" относительно субпикселных позиций "d" и "l". Помимо этого, симметрия по пикселам может исключаться для субпикселной позиции "f" относительно субпикселной позиции "i". Помимо этого, симметрия по пикселам может исключаться для субпикселной позиции "k" относительно субпикселной позиции "n". В таких случаях диагональная корреляция может быть низкой, делая недейственным или неэффективным наложение диагональной симметрии в этих случаях.
В качестве другого примера, пусть  является набором двумерных коэффициентов фильтрации 6x6 для субпикселной позиции "e". В таком случае набором коэффициентов фильтрации для позиции "g" является  (горизонтально перевернутая версия). Аналогично, набором коэффициентов фильтрации для субпикселной позиции "m" является  (вертикально перевернутая версия), а набором коэффициентов фильтрации для субпикселной позиции "o" является  (сначала горизонтально перевернут, а затем вертикально перевернут). По сути, субпикселные позиции "e", "g", "m" и "o" имеют симметрию по пикселам. Симметрия между субпикселными позициями "b" и "h" и между позициями "f", "i", "k" и n" накладывается аналогичным способом, как в примерах, приведенных выше. При таком ограничении по симметрии по пикселам, остается только пять групп уникальных наборов фильтров, первый набор коэффициентов фильтрации для группы субпикселов "a", "c", "d" и "l", второй набор коэффициентов фильтрации для группы субпикселов "b" и "h", третий набор коэффициентов фильтрации для группы субпикселов "e", "g", "m" и "o", четвертый набор коэффициентов фильтрации для группы "f", "i", "k" и n", и пятый набор коэффициентов фильтрации для группы субпикселов "j".
Кроме того, NS-AIF может накладывать ограничение по симметрии по коэффициентам на некоторые из этих наборов фильтров по отдельности или в комбинации с симметрией по субпикселам, описанной выше. В некоторых случаях, диагональная симметрия по коэффициентам может преднамеренно исключаться, к примеру, при исключении всех ограничений по диагональной симметрии по коэффициентам. В одном случае, симметрия по коэффициентам не накладывается на фильтр для первой группы субпикселных позиций, которая включает в себя субпикселные местоположения "a", "c", "d" и "l". Тем не менее, вторая группа субпикселных позиций, которая включает в себя коэффициент "b" и "h", может иметь симметрию по коэффициентам в соответствии с уравнением (10).
(10)
Аналогично, коэффициенты для интерполяционных фильтров для третьей, четвертой и пятой группы субпикселных позиций, которые включают в себя субпикселные позиции "e", "f" и j" соответственно, могут иметь симметрию по коэффициентам, как задано в уравнениях (11), (12) и (13) соответственно.
При таких ограничениях по симметрии по пикселам и симметрии по коэффициентам, описанных выше, число уникальных коэффициентов фильтрации может сокращаться с 360 (нет ограничения по симметрии) до 6(a)+3(b)+21(e)+18(f)+6(j)=54 коэффициентов, т.е. 6 коэффициентов для группы, включающей в себя субпикселную позицию "a", 3 коэффициента для группы, включающей в себя субпикселную позицию "b", 21 коэффициент для группы, включающей в себя субпикселную позицию "e", 18 коэффициентов для группы, включающей в себя субпикселную позицию "f", и 6 коэффициентов для группы, включающей в себя субпикселную позицию "j". Таким образом, в NS-AIF видеокодер 22 может кодировать и передавать пятьдесят четыре коэффициента вместо 360, как в случае отсутствия ограничений по симметрии. Как описано выше, эти пятьдесят четыре коэффициента могут аналитически разрешаться на основе вышеприведенного уравнения (7). Видеокодер 50 затем может прогнозировать, квантовать, кодировать (к примеру, с помощью экспоненциального кода Голомба со знаком) и отправлять коэффициенты в потоке битов. Дополнительные сведения относительно прогнозирующего кодирования коэффициентов фильтрации подробнее поясняются ниже. Модуль 41 прогнозирования коэффициентов и квантования может использоваться для прогнозирующего кодирования и квантования коэффициентов фильтрации в соответствии с этим раскрытием сущности.
В другой схеме AIF, т.е. S-AIF, модуль 32 прогнозирования может использовать разделимые интерполяционные фильтры в горизонтальном направлении и в вертикальном направлении вместо неразделимых интерполяционных фильтров, используемых в NS-AIF. Для одномерных субпикселных позиций, модуль 32 прогнозирования (к примеру, MC-модуль 37 модуля 32 прогнозирования) применяет только горизонтальные направленные фильтры или только вертикальные направленные фильтры в зависимости от субпикселного местоположения. В одном примере, горизонтальные направленные фильтры и вертикальные направленные фильтры содержат 6-позиционные (или 6-отводные) фильтры. Модуль 32 прогнозирования применяет горизонтальные направленные фильтры для субпикселных позиций "a", "b" и "c" с целопикселными позициями C1, C2, C3, C4, C5 и C6 (см. фиг. 3) в качестве поддержки фильтра и применяет вертикальные направленные фильтры для субпикселных позиций "d", "h" и "l" с целопикселными позициями A3, B3, C3, D3, E3 и F3 (см. фиг. 3) в качестве поддержки фильтра. Для оставшихся субпикселных позиций, т.е. двумерных субпикселных позиций, модуль 32 прогнозирования сначала применяет горизонтальную фильтрацию, после чего выполняется вертикальная фильтрация, или вертикальную фильтрацию, после чего выполняется горизонтальная фильтрация. С другой стороны, коэффициенты фильтрации, используемые для разделимых горизонтальных и вертикальных фильтров, могут вычисляться в соответствии с вышеприведенным уравнением (7). Без симметрии S-AIF может сокращать число коэффициентов, которые должны кодироваться и отправляться, до 144 коэффициентов с 360 коэффициентов, как имеет место в случае NS-AIF без симметрии.
S-AIF дополнительно может накладывать одно или более ограничений по симметрии, по меньшей мере, для некоторых из интерполяционных фильтров. В отличие от симметрии по субпикселам NS-AIF, при S-AIF наборы фильтров, используемые для субпикселных позиций "a" и "c", не являются симметричными, т.е. горизонтально перевернутыми версиями друг друга. Вместо этого коэффициенты наборов фильтров, используемых для субпикселных позиций "a" и "c", извлекаются независимо друг от друга как  и  соответственно. Для каждой субпикселной позиции, которая имеет вертикальное перемещение, симметрия по субпикселам является аналогичной NS-AIF. Таким образом, коэффициенты для субпикселных позиций "d" и "l", коэффициенты для субпикселных позиций "e" и "m", коэффициенты для субпикселных позиций "f" и "n" и коэффициенты для субпикселных позиций "g" и "o" являются вертикально перевернутыми версиями друг друга соответственно. Например, если коэффициенты вертикального фильтра для субпикселной позиции "d" - это , то коэффициенты вертикального фильтра для субпикселной позиции "l" - это . Таким образом, симметрия по субпикселам, используемая только в S-AIF, имеет вертикальную симметрию по субпикселам в одной размерности. S-AIF, тем не менее, не имеет горизонтальной симметрии по субпикселам. Симметрия по субпикселам в S-AIF может сокращать число коэффициентов, которые должны кодироваться и отправляться, со 144 коэффициентов до 102 коэффициентов.
S-AIF, аналогично NS-AIF, также может использовать симметрию по коэффициентам, чтобы дополнительно сокращать число коэффициентов, которые должны кодироваться и отправляться посредством видеокодера 50. Симметрия по коэффициентам, используемая в S-AIF, может быть идентичной симметрии в NS-AIF за исключением того, что в S-AIF предусмотрены только одномерные (горизонтальные или вертикальные) 6-отводные фильтры. Другими словами, отсутствуют двумерные фильтры 6x6. В S-AIF, для каждой субпикселной позиции SP,  коэффициенты фильтрации могут иметь симметрию, как указано в уравнении (14).
(14)
Следовательно, как при симметрии по субпикселам, так и при симметрии по коэффициентам, S-AIF-фильтры могут иметь одиннадцать наборов уникальных одномерных 6-отводных фильтров, пять из которых являются симметричными фильтрами, каждый из которых имеет три уникальных коэффициента. Оставшиеся шесть фильтров могут иметь по шесть уникальных коэффициентов. В этом случае, видеокодер 22 может квантовать, прогнозировать, кодировать и отправлять всего пятьдесят один уникальный коэффициент фильтрации в потоке видеобитов.
В другой схеме AIF, D-AIF, модуль 32 прогнозирования использует направленные фильтры для двумерных субпикселных позиций "e", "f", "g", "i", "j", "k", "m", "n" и "o". Направленные фильтры могут содержать шестиотводные фильтры, и коэффициенты могут иметь симметрию так, что только поднабор коэффициентов должен передаваться. Как описано в данном документе, поддержка фильтра означает позиции пиксела от опорного кадра, который используется при интерполяции субпикселной позиции. MC-модуль 37 может вычислять субпикселные позиции "e" и "o" с помощью 6-позиционного (или 6-отводного) диагонального интерполяционного фильтра, который имеет целопикселные позиции A1, B2, C3, D4, E5 и F6 в качестве поддержки фильтра. Модуль 32 прогнозирования может вычислять субпикселные позиции "g" и "m" с помощью 6-позиционного диагонального интерполяционного фильтра, который имеет целопикселные позиции A6, B5, C4, D3, E2 и F1 в качестве поддержки фильтра. Модуль 32 прогнозирования может вычислять субпикселные позиции "f", "i", "j", "k" и "n" с помощью 12-позиционного диагонального интерполяционного фильтра, который имеет целопикселные позиции A1, B2, C3, D4, E5, F6, A6, B5, C4, D3, E2 и F1 в качестве поддержки фильтра.
D-AIF может использовать симметрию по субпикселам и коэффициентам, идентичную симметрии по субпикселам и коэффициентам, описанной выше относительно NS-AIF. С точки зрения симметрии по субпикселам предусмотрено пять уникальных наборов коэффициентов фильтрации для интерполяции пятнадцать субпикселных позиций, причем субпикселные позиции "a", "c", "d" и "l" совместно используют идентичные коэффициенты фильтрации (к примеру, зеркальные, перевернутые и/или повернутые версии), субпикселные позиции "e", "g", "m" и "o" совместно используют идентичные коэффициенты фильтрации (к примеру, зеркальные, перевернутые и/или повернутые версии), субпикселные позиции "b" и "h" совместно используют идентичные коэффициенты фильтрации (где "b" является горизонтальным фильтром, а "h" является вертикальным фильтром), субпикселные позиции "f", "i", "k" и n" совместно используют идентичные коэффициенты фильтрации (к примеру, зеркальные, перевернутые и/или повернутые версии), а субпикселная позиция "j" имеет собственный набор коэффициентов фильтрации.
С точки зрения симметрии по коэффициентам коэффициенты фильтрации для первой группы субпикселов, включающей в себя "a", "c", "d" и "l", используют одномерный 6-позиционный фильтр, имеющий шесть уникальных коэффициентов (т.е. первая группа является несимметричной), коэффициенты фильтрации для второй группы субпикселов "b" и "h" используют одномерный 6-позиционный фильтр, имеющий три уникальных коэффициента (т.е. b является симметричным), и третий набор коэффициентов фильтрации для группы субпикселов "e", "g", "m" и "o" использует направленный 6-позиционный фильтр, имеющий шесть уникальных коэффициентов. Четвертый набор коэффициентов фильтрации для группы "f", "i", "k" и n" использует 12-отводный фильтр, имеющий 6 уникальных коэффициентов, и пятый набор коэффициентов фильтрации для группы "j", имеющий три уникальных коэффициента. Общее число уникальных коэффициентов в схеме D-AIF составляет 6(a)+3(b)+6(e)+6(f)+3(j)=24 коэффициента. Эти коэффициенты фильтрации могут прогнозироваться, квантоваться, кодироваться и отправляться в потоке видеобитов.
MC-модуль 37 модуля 32 прогнозирования может использовать одну или более технологий интерполяции, описанных в данном документе, чтобы повышать точность интерполяции субпикселных позиций и/или сокращать число коэффициентов интерполяционной фильтрации, которое должно быть кодировано и передано. Ниже подробнее описана применимая поддержка фильтра на двенадцать пикселов с радиальной формой, которая может использоваться для интерполяции, технологии, которые используют симметрию по коэффициентам и симметрию по пикселам, чтобы уменьшать объем данных, необходимых для отправки между кодером и декодером, чтобы конфигурировать поддержку фильтра для интерполяции, технологии для удаления некоторых аспектов симметрии относительно традиционных технологий и технологий для фильтрации данных в целопикселных местоположениях способом, который является аналогичным субпикселной интерполяции. Технологии смещения также описываются. Помимо этого, технологии для выбора между интерполяционными фильтрами и технологии для прогнозирующего кодирования коэффициентов фильтрации также описываются.
Фиг. 4 является концептуальной схемой, иллюстрирующей поддержку фильтра на двенадцать пикселов относительно девяти субпикселных местоположений. В соответствии с этим раскрытием сущности, MC-модуль 37 может вычислять субпикселные значения для субпикселных позиций "e", "f", "g", "i", "j", "k", "m", "n" и o" на основе заштрихованных целопикселных значений. В этом случае, вычисление субпикселных значений содержит применение интерполяционного фильтра, который задает двумерный массив позиций поддержки фильтра, соответствующих набору в двенадцать (или, возможно, больше) целопикселных позиций, которые окружают субпикселные позиции, как проиллюстрировано на фиг. 4. Позиции поддержки фильтра показаны с заштриховкой и заглавными буквенными обозначениями, и субпикселные позиции показаны как прямоугольники с пунктирными линиями и строчными буквенными обозначениями. MC-модуль 37 может интерполировать пикселы таким образом для каждого пиксела видеоблока и может формировать прогнозный блок на основе интерполированного субпикселного значения. Поддержка 12-позиционного фильтра имеет радиальную форму и имеет аналогичную частотную характеристику, как поддержка 36-позиционного фильтра, используемая в NS-AIF, но с гораздо меньшей сложностью интерполяции.
Можно принимать во внимание из фиг. 3, что субпикселные значения могут содержать пятнадцать четвертьпикселных и полупикселных значений. Интерполяционный фильтр, который задает двумерный массив позиций поддержки фильтра, применяется, чтобы задавать девять из пятнадцати четвертьпикселных и полупикселных значений, как показано на фиг. 4.
Набор из двенадцати или более целопикселных позиций, которые окружают субпикселные позиции, показан с заштриховкой на фиг. 4 и может включать в себя четыре целопикселные позиции C3, C4, D3 и D4, окружающие девять четвертьпикселных и полупикселных значений, и восемь целопикселных позиций B3, B4, C2, C5, D2, D5, E3 и E4, окружающих четыре целопикселные позиции. Каждая из позиций поддержки фильтра в двумерном массиве позиций поддержки фильтра, показанных на фиг. 4, находится в пределах двух целопикселных позиций относительно субпикселных позиций. Такая фильтрация может являться частью компенсации движения в ходе процесса кодирования видео посредством видеокодера 50 (фиг. 2) или в ходе процесса декодирования видео посредством видеодекодера 60 (фиг. 16). В ходе процесса кодирования видео модуль 32 прогнозирования перенаправляет множество наборов значений коэффициентов в модуль 46 энтропийного кодирования как часть элементов синтаксиса прогнозирования. Как показано на фиг. 4, набор из двенадцати или более целопикселных позиций, которые окружают субпикселные позиции, имеет радиальную форму и может содержать набор пространственно ближайших целопикселных позиций к девяти четвертьпикселным и полупикселным значениям, заданным посредством интерполяционного фильтра (к примеру, фильтра(ов) 39 на фиг. 2).
Модуль 46 энтропийного кодирования может кодировать наборы значений коэффициентов и выводить значения коэффициентов интерполяционного фильтра как часть кодированного потока битов, который затем может быть передан в другое устройство. Каждый из множества наборов значений коэффициентов, заданных относительно каждого различного субпикселного местоположения, показанного на фиг. 4, может задавать различные взвешивания для двенадцати или более целопикселных позиций. Симметрия по пикселам может существовать таким образом, что M наборов значений коэффициентов задают N различных взвешиваний для двенадцати или более целопикселных позиций, при этом M и N - это положительные целые числа, и N превышает M. Другими словами, симметрия по пикселам может позволять некоторым из местоположений пикселов основываться на зеркальных, инвертированных или повернутых взвешиваниях других местоположений пикселов так, что коэффициенты не должны кодироваться для местоположений, которые имеют симметрию по пикселам с другими субпикселными местоположениями.
Фиг. 5 является концептуальной схемой, иллюстрирующей поддержку горизонтального фильтра на шесть пикселов относительно трех горизонтальных субпикселных местоположений и поддержку вертикального фильтра на шесть пикселов относительно трех вертикальных субпикселных местоположений. Местоположения поддержки фильтра являются заштрихованными с заглавными буквенными обозначениями, а субпикселные местоположения являются незаштрихованными со строчными буквенными обозначениями и пунктирными линиями. MC-модуль 37 может вычислять субпикселные значения для местоположений "a", "b" и "c" посредством применения линейного интерполяционного фильтра, который задает одномерную матрицу позиций поддержки фильтра C1-C6. MC-модуль 37 также может вычислять субпикселные значения для местоположений "d", "h" и "l" посредством применения линейного интерполяционного фильтра, который задает одномерную матрицу позиций поддержки фильтра A3-F3. Таким образом, линейные интерполяционные фильтры могут использоваться для шести из пятнадцати четвертьпикселных и полупикселных значений, показанных на фиг. 3.
Фиг. 6 является концептуальной схемой, иллюстрирующей поддержку фильтра на "пять пикселов по пять пикселов" для фильтрации целопикселного местоположения. В этом случае аналогичная интерполяционной фильтрация может применяться относительно целопикселных местоположений, чтобы формировать регулируемые целопикселные значения. На фиг. 6, например, целопикселное значение в позиции C3 может быть фильтровано на основе матрицы пикселов 5×5 A1-A5, B1-B5, C1-C5, D1-D5 и E1-E5. Другие поддержки фильтра могут быть заданы для целочисленной фильтрации. В этом случае, если ME-модуль 35 идентифицирует блок целых пикселов, MC-модуль 37 может фильтровать каждый пиксел на основе матрицы пикселов 5×5, показанной на фиг. 6 (или другой поддержки фильтра), чтобы формировать фильтрованные целопикселные значения. Таким образом, аналогичная интерполяционной фильтрация может применяться к целым пикселам, которая позволяет улучшать кодирование в моменты времени изменений освещения или выходов из затемнения или затемнений сцены. Помимо этого, целочисленная фильтрация позволяет удалять шум и упрощать увеличение резкости кадров с изображениями и позволяет помогать улучшать кодирование точного перемещения объекта между последовательными видеокадрами, в частности, когда симметрия не накладывается на коэффициенты фильтрации. Целопикселная фильтрация также может быть чрезвычайно полезной для повышения качества и/или сжатия для видеопоследовательностей, которые имеют изменения фокуса.
Таким образом, видеокодер 22 и/или видеодекодер 28 может использовать аналогичную интерполяционной фильтрацию относительно целопикселных позиций, чтобы формировать регулируемые целопикселные значения. Видеокодер 22 или видеодекодер 28 может, например, получать блоки пикселов, при этом блоки пикселов включают в себя целопикселные значения, соответствующие целопикселным позициям в рамках блока пикселов. Видеокодер 22 или видеодекодер 28 может фильтровать целопикселные значения на основе других целопикселных значений в рамках блоков пикселов, чтобы формировать регулируемые целопикселные значения, при этом отрегулированные целопикселные значения соответствуют целопикселным позициям, и формировать прогнозный блок на основе отрегулированных целопикселных значений. Прогнозный блок затем может использоваться для того, чтобы кодировать или декодировать видеоблок, в зависимости от того, выполняется процесс во время кодирования или декодирования.
Если технология выполняется в ходе процесса кодирования, видеокодер 22 может формировать остаточный видеоблок как разность между текущим кодируемым видеоблоком и прогнозным блоком. Видеокодер 22 также может кодировать один набор коэффициентов фильтрации в расчете на кодированную единицу для целочисленной фильтрации или, возможно, кодировать два или более наборов коэффициентов фильтрации в расчете на кодированную единицу для целочисленной фильтрации в различных местоположениях в рамках кодированной единицы. В примере по фиг. 6, поддержки фильтра для целочисленной фильтрации могут задавать двумерный фильтр, к примеру, фильтр 5×5 со смещением. Кроме того, симметрия по коэффициентам может существовать, по меньшей мере, между некоторыми коэффициентами, используемыми для фильтрации так, что только поднабор из 25 различных коэффициентов требуется для того, чтобы определять все 25 коэффициентов для фильтра. Множество других размеров и форм фильтра могут использоваться в соответствии с целопикселной фильтрацией.
Если целопикселная фильтрация выполняется в ходе процесса декодирования, технология может содержать формирование восстановленного видеоблока как суммы остаточного видеоблока, ассоциированного с текущим декодируемым видеоблоком, и прогнозного блока. В этом случае, устройство декодирования (к примеру, целевое устройство 16) может принимать один набор коэффициентов фильтрации в расчете на кодированную единицу для целочисленной фильтрации или может принимать два или более наборов коэффициентов фильтрации в расчете на кодированную единицу для целочисленной фильтрации в различных местоположениях в рамках кодированной единицы. Каждая кодированная единица может иметь один или более наборов коэффициентов целопикселной фильтрации, а также наборов коэффициентов субпикселной фильтрации, к примеру, восемь наборов, которые могут использоваться для того, чтобы формировать все пятнадцать наборов для четвертьпикселных и полупикселных позиций.
С другой стороны, аналогичная интерполяционной фильтрация целопикселных значений позволяет улучшать сжатие конкретно во время изменений освещения, выходов из затемнения или затемнений сцены, позволяет удалять шум и упрощать увеличение резкости кадров с изображениями и позволяет помогать улучшать кодирование точного перемещения объекта между последовательными видеокадрами, в частности, когда симметрия не накладывается на коэффициенты фильтрации. Кроме того, также обнаружено, что целопикселная фильтрация является чрезвычайно полезной, к примеру, для того чтобы улучшать сжатие в видеопоследовательностях, которые имеют изменения фокуса.
Традиционно, аналогичная интерполяционной фильтрация не выполняется для целопикселных позиций в AIF. Вместо этого соответствующая целопикселная позиция в опорном кадре используется просто "как есть". Тем не менее, в соответствии с этим раскрытием сущности, фильтр может использоваться для целопикселных местоположений способом, который является аналогичным интерполяциям. Интерполяционная фильтрация для целопикселных позиций технически является ошибочным названием, поскольку пикселные значения целопикселных позиций уже существуют. Таким образом, фильтрация целопикселных позиций упоминается в данном документе как аналогичная интерполяционной фильтрация и может рассматриваться как простая фильтрация целопикселных значений, чтобы формировать новые отрегулированные пикселные значения.
В отличие от интерполяционной фильтрации для субпикселных позиций, где цель состоит в том, чтобы получать несуществующие значения в опорном кадре, пикселы в целочисленных позициях в опорном кадре уже существуют. При этом применение фильтрации к целопикселным позициям в опорном кадре предлагает ряд преимуществ. Например, когда целопикселные позиции содержат смещение, фильтрация целопикселных позиций может обеспечивать лучшую фиксацию изменений освещения между кадрами. Дополнительно, фильтрация для целопикселных позиций может давать возможность целопикселным позициям фиксировать спецэффекты, такие как выход из затемнения и затемнение. Фильтрация для целопикселных позиций также позволяет удалять определенные шумы при передаче сигналов (к примеру, шум камеры) и/или выполнять увеличение резкости, если требуется. Кроме того, если симметрия для целопикселного фильтра не накладывается, целопикселный фильтр может помогать фиксировать точное перемещение объекта, такое как перемещение объекта, которое не является кратным четверти пиксела. В завершение, целопикселная фильтрация также может быть применимой для улучшения сжатия видеопоследовательностей, когда происходят изменения фокуса.
В некоторых случаях, интерполяционная фильтрация целопикселных позиций может зависеть от векторов движения. Другими словами, MC-модуль 37 модуля 32 прогнозирования может адаптивно применять интерполяционную фильтрацию на основе вектора движения, идентифицированного посредством ME-модуля 35. Например, интерполяционная фильтрация целопикселных позиций может выполняться, когда вектор движения указывает на целопикселную позицию. Интерполяционная фильтрация может приводить к отрегулированному пикселному значению для целопикселной позиции. Когда вектор движения указывает на субпикселную позицию, фильтрация целопикселных позиций не выполняется относительно целопикселных значений, но фильтрация может использоваться для интерполяции субпикселных значений. Таким образом, целопикселная фильтрация может считаться адаптивной на основе векторов движения.
Для целопикселных позиций интерполяционный фильтр 5х5 в форме уравнения (15) может извлекаться с использованием аналитического процесса, идентичного процессу, используемому для того, чтобы извлекать фильтры субпикселной позиции.
(15)
FP
FP
FP
FP
FP
i,j
i,j
где p - это фильтрованное целопикселное значение, P - это целопикселное значение в позиции (i, j), h  - это коэффициент для позиции (i, j), и o -это смещение фильтра. В некоторых случаях, интерполяционный фильтр для целопикселных позиций может не иметь смещения фильтра (т.е. o=0). В других случаях, смещение фильтра o может использовать любое число технологий.
Различные смещения могут быть заданы для каждой субпикселной позиции, к примеру, пятнадцать различных смещений могут быть заданы для каждой субпикселной позиции, показанной на фиг. 3. Другое смещение может быть задано для целых пикселов, что дает общее число смещений в шестнадцать. Находящаяся одновременно на рассмотрении и переуступленная заявка на патент (США) порядковый номер ________, поданная Karczewicz и др. и озаглавленная "OFFSETS AT SUB-PIXEL RESOLUTION" с номером выписки 081399U2, которая подана в один день с настоящей заявкой и которая содержится в данном документе по ссылке, предоставляет множество дополнительных сведений относительно использования многих смещений для различного пиксела и субпикселных местоположений.
Чтобы сокращать число коэффициентов фильтрации, которые должны быть переданы, симметрия по коэффициентам, как в уравнении (16), может быть наложена на целопикселный фильтр.
, для  (16)
Другие формы симметрии по коэффициентам также могут использоваться. То, накладывается или нет симметрия по коэффициентам, может быть определено посредством кодера и передано в служебных сигналах в декодер. Если симметрия, как в (16), используется для целопикселного фильтра, то 9 коэффициентов фильтрации и 1 смещение, возможно, должны отправляться в декодер.
Кодирование смещений может выполняться посредством кодирования сначала целочисленного смещения и последующего кодирования каждого дробного смещения. В этом случае, целочисленное смещение и дробные смещения кодируются по-разному. Целочисленное смещение может кодироваться с помощью экспоненциального кода Голомба со знаком. В зависимости от величины целочисленного смещения дробные смещения могут квантоваться отлично от целочисленного смещения. Например, более приблизительные уровни квантования могут применяться для дробных смещений, когда целочисленное смещение имеет большую величину. После квантования дробные смещения могут кодироваться с использованием кодов фиксированной длины. В качестве примера, следующий псевдокод может иллюстрировать то, как данное дробное смещение может кодироваться с использованием различных кодов фиксированной длины, заданных на основе значения целочисленного смещения.
Пусть offsetI является целочисленным смещением
Пусть offsetF является дробным смещением
Пусть offsetFbits является числом битов, используемым, чтобы квантовать offsetF
Пусть abs(a) является абсолютным значением a
if(abs(offsetI)=0)
offsetFbits=5
else if(abs(offsetI)<3)
offsetFbits=4
else if(abs(offsetI)<7)
offsetFbits=2
else
offsetFbits=0
В этом случае, видеокодер 50 может использовать модуль 41 прогнозирования коэффициентов и квантования, который для каждого из значений смещения назначает первое число битов целочисленной части данного значения смещения и назначает второе число битов дробной части данного значения смещения, при этом первое и второе число битов определяется на основе величины целочисленной части. В этом случае, квантованные версии значений смещения могут перенаправляться из модуля 32 прогнозирования как элементы синтаксиса прогнозирования после того, как квантование значений смещения выполняется, согласно вышеприведенному псевдокоду. В любом случае, видеокодер 50 может кодировать первое число битов отлично от второго числа битов.
Фиг. 7 является концептуальной схемой, иллюстрирующей четыре целопикселные позиции и пятнадцать субпикселных позиций с заштриховкой, чтобы группировать позиции пиксела, которые могут использовать симметрию по пикселам для коэффициентов фильтрации в соответствии с этим раскрытием сущности. В частности, фиг. 7 иллюстрирует субпикселные позиции "a"-"o", соответствующие целопикселные позиции C3. Позиции в целочисленный субпиксел, показанные на фиг. 7, соответствуют позициям по фиг. 4 и 5. Таким образом, субпикселные местоположения "e", "f", "g", "i", "j", "k", "m", "n" и o" могут иметь значения, определенные посредством поддержки в двенадцать пикселов, как показано на фиг. 4, при этом субпикселные местоположения "a", "b" и "c" и субпикселные местоположения "d", "h" и "l" могут иметь значения, определенные посредством поддержек горизонтальных и линейных пикселов, показанные на фиг. 5.
В этом сценарии симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "a" являются симметричными относительно коэффициентов фильтрации для местоположения пиксела "c". Аналогично, симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "d" являются симметричными относительно коэффициентов фильтрации для местоположения пиксела "l". Симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "e" являются симметричными относительно коэффициентов фильтрации для местоположений пикселов "g", "m" и "o" и симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "i" являются симметричными относительно коэффициентов фильтрации для местоположений пикселов "k", и симметрия по пикселам может быть наложена так, что коэффициенты фильтрации для местоположения пиксела "f" являются симметричными относительно коэффициентов фильтрации для местоположений пикселов "n". Следовательно, только восемь наборов значений коэффициентов, возможно, должны передаваться как часть потока видеобитов, чтобы предоставлять возможность декодеру формировать полные наборы значений коэффициентов для всех пятнадцати местоположений пикселов. Кроме того, для любого данного набора коэффициентов, симметрия по коэффициентам может давать возможность отправки только поднабора значений коэффициентов, и декодер может формировать полный набор значений коэффициентов для данного местоположения пиксела на основе поднабора и симметрии по коэффициентам.
Один аспект этого раскрытия сущности состоит в том, чтобы фактически удалять всю симметрию по пикселам между субпикселными позициями "a" и "c" относительно субпикселных позиций "d" и "l". Помимо этого, симметрия по пикселам может исключаться для субпикселной позиции "f" относительно субпикселной позиции "i". Помимо этого, симметрия по пикселам может исключаться для субпикселной позиции "k" относительно субпикселной позиции "n". В таких случаях диагональная корреляция может быть низкой, делая недейственным или неэффективным то, чтобы накладывать диагональную симметрию. Таким образом, восемь наборов коэффициентов, используемых для того, чтобы формировать все пятнадцать наборов коэффициентов, могут быть большим набором, чем в некоторых традиционных технологиях, когда симметрия исключается в диагональной размерности для некоторых из местоположений пикселов. В некоторых случаях, диагональная симметрия по пикселам и диагональная симметрия по коэффициентам могут исключаться или не допускаться, чтобы предоставлять возможность дисперсии в вертикальных размерностях.
Снова ссылаясь на фиг. 1, видеокодер 22 может определять восемь наборов коэффициентов фильтрации и использовать восемь наборов коэффициентов фильтрации, чтобы формировать все пятнадцать наборов коэффициентов фильтрации, соответствующих пятнадцати различным субпикселным местоположениям, на основе симметрии по коэффициентам и симметрии по пикселам, и выводить восемь наборов коэффициентов фильтрации как часть кодированного потока битов. Восемь наборов коэффициентов фильтрации могут выводиться для каждой кодированной единицы кодированного потока битов, или, возможно, несколько случаев восьми наборов коэффициентов фильтрации могут выводиться для различных областей кодированной единицы.
Пятнадцать наборов соответствуют каждому субпикселному четвертьпикселному и полупикселному местоположению, показанному на фиг. 3, и восьми наборам, симметрия по коэффициентам и симметрия по пикселам задают поддержки фильтра для каждого субпикселного четвертьпикселного и полупикселного местоположения. Видеодекодер 28 целевого устройства 16 могут принимать восемь наборов коэффициентов фильтрации как часть кодированного потока видеобитов, формировать пятнадцать наборов коэффициентов фильтрации, соответствующих пятнадцати различным субпикселным местоположениям, на основе восьми наборов коэффициентов фильтрации, формировать интерполированные прогнозирующие данные для декодирования видео на основе одного из пятнадцати наборов коэффициентов фильтрации, при этом интерполированные прогнозирующие данные соответствуют одному из пятнадцати различных субпикселных местоположений, и декодировать один или более видеоблоков на основе интерполированных прогнозирующих данных.
По меньшей мере, некоторые из восьми наборов коэффициентов фильтрации могут иметь симметрию по коэффициентам так, что данный набор с симметрией по коэффициентам содержит поднабор коэффициентов фильтрации, ассоциированных с поддержкой фильтра для данного субпикселного местоположения, ассоциированного с данным набором. Таким образом, видеодекодер 28 может формировать пятнадцать наборов коэффициентов фильтрации, по меньшей мере, частично на основе симметрии по пикселам между двумя или более различных субпикселных местоположений. Кроме того, видеодекодер 28 может формировать пятнадцать наборов коэффициентов фильтрации, по меньшей мере, частично на основе симметрии по пикселам между двумя или более различных субпикселных местоположений и, по меньшей мере, частично на основе симметрии по коэффициентам, заданной для данного набора так, что данный набор с симметрией по коэффициентам содержит поднабор коэффициентов фильтрации, ассоциированных с поддержкой фильтра для данного субпикселного местоположения, ассоциированного с данным набором.
С другой стороны, пятнадцать наборов могут соответствовать каждому четвертьпикселному и полупикселному субпикселному местоположению. Симметрия по пикселам может существовать между различными пятнадцатью наборов коэффициентов фильтрации в вертикальной размерности и в горизонтальной размерности, но симметрия по пикселам не существует в диагональной размерности, по меньшей мере, для некоторых из пятнадцати наборов коэффициентов фильтрации. Как подробнее поясняется ниже, два из восьми наборов могут задавать три из пятнадцати наборов для поддержки горизонтального фильтра, два из восьми наборов могут задавать три из пятнадцати наборов для поддержки вертикального фильтра, и четыре из восьми наборов могут задавать девять из пятнадцати наборов для двумерной поддержки фильтра. Двумерная поддержка может содержать применимую поддержку 12-позиционного фильтра, окружающего девять субпикселных позиций в радиальной форме.
В частности, интерполированные прогнозирующие данные могут содержать пятнадцать четвертьпикселных и полупикселных значений, к примеру, показанные на фиг. 7, при этом интерполяционный фильтр задает двумерный массив из двенадцати позиций поддержки фильтра, к примеру, показанный на фиг. 4, которые применяются, чтобы задавать девять из пятнадцати четвертьпикселных и полупикселных значений, и, к примеру, также показанный на фиг. 4. Формирование интерполированных прогнозирующих данных дополнительно может содержать применение линейных интерполяционных фильтров, которые задают одномерные матрицы позиций поддержки фильтра для шести из пятнадцати четвертьпикселных и полупикселных значений, к примеру, как показано на фиг. 5.
Горизонтальная симметрия и отсутствие диагональной симметрии может наблюдаться относительно субпикселных позиций "a" и "c" или относительно субпикселных позиций "i" и "k". В этом случае, позиции в целочисленный субпиксел "a" и "c" являются симметричными вдоль горизонтальной оси X, но симметрия не существует вдоль диагональной оси для этих пикселов так, что субпикселные местоположения "d" и "l" не являются симметричными относительно субпикселных позиций "a" и "c" соответственно. Аналогично, субпикселные позиции "i" и "k" являются симметричными вдоль горизонтальной оси X, но симметрия не существует вдоль диагональной оси для этих пикселов так, что субпикселные местоположения "f" и "n" не являются симметричными относительно субпикселных позиций "i" и "k" соответственно.
Симметрия по пикселам означает, что первый набор коэффициентов относительно первой субпикселной позиции является симметричным относительно второго набора коэффициентов относительно второй субпикселной позиции. Например, местоположение пиксела "a" имеет симметрию по пикселам относительно местоположения пиксела "c", и местоположение пиксела "d" имеет симметрию по пикселам относительно местоположения пиксела "l". Местоположение пиксела "f" имеет симметрию по пикселам относительно местоположения пиксела "n", и местоположение пиксела "i" имеет симметрию по пикселам относительно местоположения пиксела "k". Местоположение пиксела "e" имеет симметрию по пикселам относительно местоположений пикселов "g", "m" и "o". Заштриховка, показанная на фиг. 7, демонстрирует эту симметрию по пикселам, к примеру, с общей заштриховкой, соответствующей местоположениям пикселов, которые являются симметричными относительно других местоположений пикселов. В этом случае, коэффициенты для восьми местоположений пикселов (вместе с аспектами симметрии по пикселам) могут задавать коэффициенты для всех пятнадцати местоположений пикселов. Помимо этого, в рамках данного набора коэффициентов, симметрия по коэффициентам может существовать так, что только поднабор коэффициентов в этом наборе коэффициентов должен передаваться с потоком битов.
Видеокодер 22 может формировать кодированные видеоданные на основе интерполированных прогнозирующих данных, при этом интерполированные прогнозирующие данные содержат пятнадцать четвертьпикселных и полупикселных значений, причем интерполяционный фильтр задает двумерный массив из двенадцати позиций поддержки фильтра, которые применяются, чтобы задавать девять из пятнадцати четвертьпикселных и полупикселных значений. Формирование кодированных видеоданных на основе интерполированных прогнозирующих данных дополнительно может содержать применение линейных интерполяционных фильтров, которые задают одномерные матрицы позиций поддержки фильтра для шести из пятнадцати четвертьпикселных и полупикселных значений.
Фиг. 8 является концептуальной схемой, иллюстрирующей шесть позиций C1-C6 поддержки горизонтальных линейных пикселов относительно субпикселной позиции "b" с заштриховкой, которая показывает симметрию по коэффициентам. В этом случае, симметрия по коэффициентам означает, что только три коэффициента фильтрации требуются для C1, C2 и C3, чтобы задавать полный набор коэффициентов для позиций C1-C6 поддержки фильтра. C1 является симметричным с C6, C2 является симметричным с C5, а C3 является симметричным с C4. Таким образом, только три коэффициента должны передаваться как часть кодированного потока видеобитов, чтобы задавать набор из шести коэффициентов, требуемых для того, чтобы интерполировать субпикселную позицию "b".
Фиг. 9 является концептуальной схемой, иллюстрирующей шесть позиций поддержки горизонтальных линейных пикселов относительно субпиксела, с заштриховкой, которая показывает отсутствие симметрии по коэффициентам. Таким образом, все шесть коэффициентов требуются, чтобы задавать набор коэффициентов для поддержки фильтра относительно субпикселной позиции "a". Как указано выше, тем не менее, симметрия по пикселам означает, что эти идентичные коэффициенты относительно субпикселной позиции "a" также могут использоваться для того, чтобы извлекать поддержку фильтра для субпикселной позиции "c" (см. фиг. 7). Таким образом, только шесть коэффициентов должны передаваться как часть кодированного потока видеобитов, чтобы задавать два различных набора из шести коэффициентов, требуемых для того, чтобы интерполировать субпикселную позицию "a" и "c".
Фиг. 10 является концептуальной схемой, иллюстрирующей шесть позиций поддержки вертикальных линейных пикселов A3, B3, C3, D3, E3 и F3 относительно субпиксела "h", с заштриховкой, которая показывает симметрию по коэффициентам. В этом случае, симметрия по коэффициентам означает, что только три коэффициента фильтрации требуются для A3, B3 и C3, чтобы задавать полный набор коэффициентов для позиций поддержки фильтра A3, B3, C3, D3, E3 и F3. A3 является симметричным с F3, B3 является симметричным с E3, а C3 является симметричным с D3. Таким образом, только три коэффициента должны передаваться как часть кодированного потока видеобитов, чтобы задавать набор из шести коэффициентов, требуемых для того, чтобы интерполировать субпикселную позицию "h".
Фиг. 11 является концептуальной схемой, иллюстрирующей шесть позиций поддержки вертикальных линейных пикселов относительно субпиксела, с заштриховкой, которая показывает отсутствие симметрии по коэффициентам.
Таким образом, все шесть коэффициентов требуются, чтобы задавать набор коэффициентов для поддержки фильтра относительно субпикселной позиции "d". Как указано выше, тем не менее, симметрия по пикселам означает, что эти идентичные коэффициенты относительно субпикселной позиции "d" также могут использоваться для того, чтобы извлекать поддержку фильтра для субпикселной позиции "l" (см. фиг. 7). Таким образом, только шесть коэффициентов должны передаваться как часть кодированного потока видеобитов, чтобы задавать два различных набора из шести коэффициентов, требуемых для того, чтобы интерполировать субпикселную позицию "d" и "l".
Фиг. 12 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов (при этом целопикселные позиции показаны с заглавными буквенными обозначениями и заштриховкой) относительно субпикселной позиции "e". Заштриховка показывает отсутствие симметрии по коэффициентам. Таким образом, все двенадцать коэффициентов требуются, чтобы задавать набор коэффициентов для поддержки фильтра относительно субпикселной позиции "e". Как указано выше, тем не менее, симметрия по пикселам означает, что эти идентичные коэффициенты относительно субпикселной позиции "e" также могут использоваться для того, чтобы извлекать поддержку фильтра для субпикселных позиций "g", "m" и "o" (см. фиг. 7). Следовательно, 12 коэффициентов задают субпикселную позицию поддержки фильтра "e", и эти идентичные коэффициенты могут использоваться для того, чтобы извлекать набор коэффициентов для субпикселных позиций "g", "m" и "o".
Фиг. 13 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов (при этом целопикселные позиции показаны с заглавными буквенными обозначениями) относительно субпиксела "i", с заштриховкой, которая показывает симметрию по коэффициентам. В этом случае, симметрия по коэффициентам означает, что коэффициенты фильтрации для позиций поддержки фильтра B3, B4, C2, C3, C4 и C5 могут использоваться для того, чтобы задавать коэффициенты фильтрации для позиций поддержки фильтра E3, E4, D2, D3, D4 и D5. B3 является симметричным с E3, B4 является симметричным с E4, C2 является симметричным с D2, C3 является симметричным с D3, C4 является симметричным с D4, и C5 является симметричным с D5. Таким образом, только шесть коэффициентов должны передаваться как часть кодированного потока видеобитов, чтобы задавать набор из двенадцати коэффициентов, требуемых для того, чтобы интерполировать субпикселную позицию "i". Кроме того, как указано выше, субпикселная позиция "i" может иметь симметрию по пикселам относительно субпикселной позиции "k". Следовательно, идентичный поднабор из шести коэффициентов может задавать полные наборы из двенадцати коэффициентов фильтрации для субпикселных позиций "i" и "k".
Фиг. 14 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов (при этом целопикселные позиции показаны с заглавными буквенными обозначениями) относительно субпиксела "f", с заштриховкой, которая показывает симметрию по коэффициентам. В этом случае, симметрия по коэффициентам означает, что коэффициенты фильтрации для позиций поддержки фильтра C2, D2, B3, C3, D3 и E3 могут использоваться для того, чтобы задавать коэффициенты фильтрации для позиций поддержки фильтра C5, D5, B4, C4, D4 и E4. C2 является симметричным с C5, D2 является симметричным с D5, B3 является симметричным с B4, C3 является симметричным с C4, D3 является симметричным с D4, и E3 является симметричным с E4. Таким образом, только шесть коэффициентов должны передаваться как часть кодированного потока видеобитов, чтобы задавать набор из двенадцати коэффициентов, требуемых для того, чтобы интерполировать субпикселную позицию "f". Кроме того, как указано выше, субпикселная позиция "f" может иметь симметрию по пикселам относительно субпикселной позиции "n". Следовательно, идентичный поднабор из шести коэффициентов может задавать полные наборы из двенадцати коэффициентов фильтрации для субпикселных позиций "f" и "n".
Фиг. 15 является концептуальной схемой, иллюстрирующей двенадцать позиций поддержки двумерных пикселов (при этом целопикселные позиции показаны с заглавными буквенными обозначениями) относительно субпиксела "j", с заштриховкой, которая показывает симметрию по коэффициентам. В этом случае, симметрия по коэффициентам означает, что только три коэффициента фильтрации требуются для B3, C2 и C3, чтобы задавать полный набор из двенадцати коэффициентов для позиций поддержки фильтра B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 и E4. C3 является симметричным с C4, D3 и D4, C2 является симметричным с D2, C5 и E4, и B3 являются симметричными с B4, E3 и D5. Таким образом, только три коэффициента должны передаваться как часть кодированного потока видеобитов, чтобы задавать набор из двенадцати коэффициентов, требуемых для того, чтобы интерполировать субпикселную позицию "j".
Фиг. 16 является блок-схемой, иллюстрирующей пример видеодекодера, который может декодировать видеопоследовательность, которая кодирована описанным в данном документе способом. Видеодекодер 60 является одним примером специализированного компьютерного видеоустройства, упоминаемого в данном документе как "кодер". Видеодекодер 60 включает в себя модуль 52 энтропийного декодирования, который энтропийно декодирует принимаемый поток битов, чтобы формировать квантованные коэффициенты и элементы синтаксиса прогнозирования. Элементы синтаксиса прогнозирования могут включать в себя режим кодирования, один или более векторов движения, информацию, идентифицирующую технологию интерполяции, используемую для того, чтобы формировать субпикселные данные, коэффициенты для использования в интерполяционной фильтрации и/или другую информацию, ассоциированную с формированием прогнозного блока.
Элементы синтаксиса прогнозирования, к примеру, коэффициенты перенаправляются в модуль 55 прогнозирования. Если прогнозирование используется для того, чтобы кодировать коэффициенты относительно коэффициентов неперестраиваемого фильтра или относительно друг друга, модуль 53 прогнозирования коэффициентов и обратного квантования может декодировать элементы синтаксиса, чтобы задавать фактические коэффициенты. Кроме того, если квантование применяется к любому синтаксису прогнозирования, модуль 53 прогнозирования коэффициентов и обратного квантования также может удалять такое квантование. Коэффициенты фильтрации, например, могут прогнозирующе кодироваться и квантоваться согласно этому раскрытию сущности, и в этом случае модуль 53 прогнозирования коэффициентов и обратного квантования может использоваться посредством видеодекодера 60, чтобы прогнозирующе декодировать и деквантовать такие коэффициенты.
Модуль 55 прогнозирования может формировать прогнозирующие данные на основе элементов синтаксиса прогнозирования и одного или более ранее декодированных блоков, которые сохраняются в запоминающем устройстве 62, способом, аналогичным подробно описанному выше относительно модуля 32 прогнозирования видеокодера 50. В частности, модуль 55 прогнозирования может выполнять одну или более технологий интерполяционной фильтрации этого раскрытия сущности в ходе компенсации движения, чтобы формировать прогнозный блок с конкретной точностью, к примеру, с четвертьпикселной точностью. По сути, одна или более технологий этого раскрытия сущности могут использоваться посредством видеодекодера 60 при формировании прогнозного блока. Модуль 55 прогнозирования может включать в себя модуль компенсации движения, который содержит фильтры, используемые для технологий интерполяционной и аналогичной интерполяционной фильтрации этого раскрытия сущности. Компонент компенсации движения не показан на фиг. 16 для простоты и удобства иллюстрации.
Модуль 56 обратного квантования обратно квантует, т.е. деквантует квантованные блочные коэффициенты. Процесс обратного квантования может быть процессом, заданным для декодирования H.264. Модуль 58 обратного преобразования применяет обратное преобразование, к примеру, обратное DCT или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пикселном домене. Сумматор 64 суммирует остаточный блок с соответствующим прогнозным блоком, сформированным посредством модуля 55 прогнозирования, чтобы формировать восстановленную версию исходного блока, кодированного посредством видеокодера 50. Если требуется, фильтр удаления блочности также может применяться, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Декодированные видеоблоки затем сохраняются в модуле 62 хранения опорных кадров, который предоставляет опорные блоки для последующей компенсации движения и также формирует декодированное видео, чтобы возбуждать дисплейное устройство (такое как устройство 28 по фиг. 1).
Технологии NS-AIF могут вычислять пикселные значения для двумерных субпикселных позиций с использованием интерполяционного фильтра, имеющего поддержку 36-позиционного фильтра (т.е. поддержку двумерного фильтра 6×6). S-AIF использует разделимые целопикселные позиции в качестве поддержки фильтра для интерполяционной фильтрации сначала в горизонтальном направлении, а не в вертикальной размерности. D-AIF использует менее сложный интерполяционный фильтр для вычисления двумерных субпикселных позиций, чем NS-AIF. В D-AIF двумерные субпикселные позиции вычисляются с использованием интерполяционного фильтра, имеющего либо поддержку 6-позиционного фильтра, либо поддержку 12-позиционного диагонального фильтра.
Один недостаток использования поддержки диагонального фильтра, как в D-AIF, состоит в том, что целопикселные позиции, используемые при фильтрации, находятся на значительном расстоянии от текущей позиции, которая должна быть интерполирована. По мере того расстояние между текущей позицией, которая должна быть интерполирована, и позициями пикселов, используемыми в качестве поддержки фильтра, увеличивается, пространственная корреляция пикселов понижается. По сути, поддержка диагонального фильтра, используемая в D-AIF, является менее подходящей для формирования точного прогнозирования.
Чтобы обеспечивать лучшее прогнозирование с помощью пикселов с более высокой корреляцией с позицией, которая должна быть интерполирована (т.е. позиций пиксела, которые находятся ближе или на меньшем расстоянии от позиции, которая должна быть интерполирована), при одновременном поддержании неизменной низкой сложности, предлагаемой посредством D-AIF, поддержка 12-позиционного фильтра, показанная на фиг. 4, может использоваться для интерполяции. Целопикселные позиции, используемые в поддержке 12-позиционного фильтра, описанной в этом раскрытии сущности, включают в себя четыре целопикселные позиции, окружающие субпикселные позиции, т.е. целопикселные позиции C3, C4, D3 и D4, которые могут упоминаться как "угловые" целопикселные позиции, поскольку они находятся около углов двумерных субпикселных позиций. В дополнение к угловым целопикселным позициям одна или более целопикселных позиций, непосредственно смежных с угловыми целопикселными позициями, также могут использоваться в поддержке фильтра. Целопикселные позиции, непосредственно смежные с угловыми целопикселными позициями, могут включать в себя целопикселные позиции непосредственно выше (вверх или на север) или непосредственно ниже (вниз или на юг) угловых целопикселных позиций, а также целопикселные позиции непосредственно влево (или на запад) или непосредственно вправо (или на восток) угловых целопикселных позиций. В примере, проиллюстрированном на фиг. 4, поддержка 12-позиционного фильтра может включать в себя целопикселные местоположения B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 и E4. Все эти целопикселные позиции находятся в пределах двух целопикселных позиций субпиксела, который должен быть интерполирован.
Поддержка фильтра в соответствии с технологиями этого раскрытия сущности, тем не менее, может включать в себя дополнительные целопикселные местоположения. Например, поддержка фильтра может включать в себя целопикселные местоположения, которые находятся в пределах трех целопикселных позиций субпикселной позиции, которая должна быть интерполирована, которые формируют радиальную форму.
Даже четвертьпикселные позиции или более точное разрешение могут быть интерполированы на основе целопикселных позиций, расположенных в пределах, по меньшей мере, двух целопикселных позиций. Таким образом, технологии поддержки фильтра этого раскрытия сущности обеспечивают лучшее прогнозирование интерполяции с использованием целых пикселов с более высокой корреляцией с позицией, которая должна быть интерполирована, при одновременном поддержании неизменной низкой сложности, предлагаемой посредством D-AIF.
Как описано выше, симметрия по субпикселам может принудительно активировать идентичный набор коэффициентов фильтрации (и зеркальные, инвертированные и/или повернутые версии набора) для группы из одной или более субпикселных позиций. Аналитический процесс, к примеру, такой как процесс в уравнении (5), может использоваться для того, чтобы извлекать коэффициенты интерполяционной фильтрации для всех субпикселных позиций, к примеру, пятнадцати субпикселных позиций в случае четвертьпикселной точности. Анализ корреляции для пятнадцати наборов коэффициентов интерполяционной фильтрации раскрывает относительно сильную корреляцию между коэффициентами фильтрации субпикселных позиций (как одномерных, так и двумерных субпикселных позиций) в одной размерности (к примеру, вертикальной или горизонтальной размерности). Наоборот, корреляция между коэффициентами фильтрации субпикселных позиций в различных диагональных направлениях может быть заметно более слабой.
Например, может быть высокая корреляция между коэффициентами фильтрации для субпикселных позиций "a" и "c", которые находятся в горизонтальной размерности. В качестве другого примера, может быть высокая корреляция между коэффициентами фильтрации для субпикселных позиций "d" и "l", которые находятся в вертикальной размерности. Тем не менее, может быть небольшая (если вообще имеется) корреляция между коэффициентами фильтрации для субпикселных позиций "a", которые находятся в горизонтальной размерности, и субпикселной позиции "d", которая находится в вертикальной размерности. На основе этих наблюдений корреляций, симметрия по субпикселам может быть разработана так, что симметрия по субпикселам для коэффициентов фильтрации субпикселных позиций в диагональных размерностях не накладывается. Это приводит к восьми наборам коэффициентов, как описано в данном документе, что может составлять большее число наборов, чем требуется для некоторых традиционных процессов. Посредством исключения диагональной симметрии по пикселам для некоторых местоположений пикселов, как описано в данном документе, кодирование и сжатие видео могут улучшаться.
С другой стороны, фиг. 7 показывает позиции пиксела с одинаковыми заштриховками (или штриховками), которые принадлежат группе субпикселных позиций, которые имеют симметрию по субпикселам. В частности, субпикселные позиции "a" и "c" формируют первую группу, имеющую симметрию по субпикселам, субпикселные позиции "d" и "l" формируют вторую группу, имеющую симметрию по субпикселам, субпикселные позиции "e", "g", "m" и "o" формируют третью группу, имеющую симметрию по субпикселам, субпикселные позиции "f" и "n" формируют четвертую группу, имеющую симметрию по субпикселам, и субпикселные позиции "i" и "k" формируют пятую группу, имеющую симметрию по субпикселам. Субпикселные позиции "b", "h" и "j" не имеют симметрии по субпикселам с другими субпикселными позициями. По сути, субпикселные позиции "b", "h" и "j" могут рассматриваться как принадлежащие собственным группам; шестой, седьмой и восьмой группе соответственно. Каждая группа коэффициентов (которая может быть поднаборами вследствие симметрии по коэффициентам) может передаваться один раз в расчете на кодированную единицу или, возможно, многократно в расчете на кодированную единицу, если различные типы фильтрации задаются для различных областей или признаков кодированной единицы. Коэффициенты для аналогичной интерполяционной целопикселной фильтрации также могут отправляться один раз или несколько раз в расчете на кодированную единицу.
В NS-AIF и D-AIF симметрия по субпикселам существует между субпикселными позициями в одной размерности, к примеру, между двумя субпикселными позициями в вертикальной размерности или двумя субпикселными позициями в горизонтальной размерности. В некоторой традиционной NS-AIF и D-AIF, симметрия также существует по диагонали между субпикселными позициями в различных размерностях. Например, симметрия по субпикселам существует между субпикселной позицией "a" в вертикальной размерности и субпикселной позицией "d" в горизонтальном направлении в некоторой традиционной NS-AIF и D-AIF. С симметрией по субпикселам в горизонтальной, вертикальной и диагональной размерностях только пять уникальных наборов коэффициентов интерполяционной фильтрации могут использоваться для четвертьпикселной точности.
Для некоторых типов S-AIF, с другой стороны, симметрия по субпикселам существует между субпикселными позициями в вертикальном направлении (или размерности), но не между субпикселными позициями в горизонтальной размерности. Другими словами, симметрия по субпикселам не всегда существует для субпикселных позиций в одной размерности. Симметрии по субпикселам также не существует в диагональных размерностях. Симметрия некоторых схем S-AIF, таким образом, требует большего числа наборов коэффициентов интерполяции. В частности, для четвертьпикселной точности, некоторые схемы S-AIF требуют одиннадцати уникальных наборов коэффициентов интерполяции.
Схема симметрии по субпикселам, описанная в этом раскрытии сущности и проиллюстрированная на фиг. 7, может приводить к более точному прогнозированию, чем симметрия по субпикселам, описанная выше для некоторых типов NS-AIF и D-AIF. В частности, схема симметрии по субпикселам по фиг. 7 налагает симметрию по субпикселам в одной размерности (к примеру, в горизонтальном направлении или вертикальном направлении), но не налагает симметрию по субпикселам одновременно в обеих размерностях (к примеру, по диагонали).
Посредством невыполнения наложения симметрии по субпикселам для субпикселных позиций по диагонали, слабая корреляция между коэффициентами интерполяционной фильтрации и субпикселными позициями в различных размерностях не интегрируется в интерполяцию. Хотя большее число наборов коэффициентов интерполяции может требоваться (к примеру, восемь вместо пяти), результирующие интерполированные прогнозирующие данные могут быть более точными. Диагональная симметрия по коэффициентам также может не допускаться или исключаться аналогичным способом.
Модуль 32 прогнозирования также может накладывать симметрию по коэффициентам, как описано выше. В частности, симметрия по коэффициентам накладывается для коэффициентов фильтрации в одной размерности (к примеру, в горизонтальном или вертикальном направлении), но не для обеих размерностей диагональным способом. Например, коэффициенты фильтрации для субпикселной позиции "e" не задаются принудительно как горизонтально симметричные как в схеме NS-AIF, описанной выше и представленной в уравнении (11). Симметрия по коэффициентам обобщается ниже в уравнениях (17)-(21).
(17)
(18)
, для  (19)
, для  (20)
, для  (21)
Следует отметить, что для субпикселных позиций "f", "i" и "j", некоторые коэффициенты фильтрации, т.е. , равны нулю в случаях, в которых 12-позиционный фильтр, описанный подробно относительно фиг. 4, может использоваться. По сути, симметрия по субпикселам и коэффициентам, описанная в этом раскрытии сущности, может использоваться вместе или отдельно от технологий поддержки фильтра. При использовании вместе с поддержкой 12-позиционного фильтра, описанной на фиг. 4, предусмотрено 6(a)+3(b)+6(d)+3(h)+12(e)+6(f)+6(i)+3(j)=45 уникальных коэффициентов для этих субпикселных позиций, которые должны отправляться в декодер, т.е. 6 коэффициентов для группы, включающей в себя субпикселную позицию "a", 3 коэффициента для группы, включающей в себя субпикселную позицию "b", 6 коэффициентов для группы, включающей в себя субпикселную позицию "d", 3 коэффициента для группы, включающей в себя субпикселную позицию "h", 12 коэффициентов для группы, включающей в себя субпикселную позицию "e", 6 коэффициентов для группы, включающей в себя субпикселную позицию "f", 6 коэффициентов для группы, включающей в себя субпикселную позицию "i", и 3 коэффициента для группы, включающей в себя субпикселную позицию "j".
Фиг. 17 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует поддержку фильтра на двенадцать пикселов в соответствии с этим раскрытием сущности. Технология по фиг. 17 описывается с точки зрения видеокодера 50 по фиг. 2, хотя другие устройства могут выполнять аналогичные технологии. Как показано, на фиг. 17, MC-модуль 37 модуля 32 прогнозирования получает блок пикселов из запоминающего устройства 34, которые включают в себя целопикселные значения, соответствующие целопикселным позициям (171). Фильтр(ы) 39 вычисляет субпикселные значения на основе поддержки фильтра, которая содержит двенадцать или более позиций, которые окружают субпикселные позиции (172). Как подробнее поясняется выше, поддержка 12-позиционного фильтра может использоваться для того, чтобы формировать девять из пятнадцати возможных субпикселных интерполяций, при этом линейная горизонтальная и линейная вертикальная фильтрация может использоваться для того, чтобы формировать шесть из пятнадцати возможных субпикселных интерполяций.
MC-модуль 37 затем формирует прогнозный блок на основе вычисленных субпикселных значений (173). В частности, MC-модуль 37 может формировать и выводить интерполированный прогнозный блок, содержащий интерполированные субпикселные значения. Сумматор 48 затем может кодировать текущий видеоблок на основе интерполированного прогнозного блока (174), к примеру, посредством вычитания интерполированного прогнозного блока из кодируемого видеоблока, чтобы формировать остаточный блок. Остаточный блок затем может быть преобразован и квантован посредством модуля 38 преобразования и модуля 40 квантования соответственно. После энтропийного кодирования посредством модуля 46 энтропийного кодирования, видеокодер 50 может выводить кодированный поток видеобитов и информацию фильтра (175). Информация фильтра, как описано в данном документе, может содержать восемь наборов коэффициентов, используемых для формирования всех пятнадцати наборов коэффициентов для пятнадцати субпикселных позиций. Информация фильтра может выводиться один раз в расчете на кодированную единицу или, возможно, несколько раз в расчете на кодированную единицу, если различные области кодированной единицы используют различные типы субпикселной интерполяции.
Фиг. 18 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует поддержку фильтра на двенадцать пикселов в соответствии с этим раскрытием сущности. Таким образом, процесс по фиг. 18 может рассматриваться процессом взаимно-обратного декодирования для процесса кодирования по фиг. 17. Фиг. 18 описывается с точки зрения видеодекодера 60 по фиг. 16, хотя другие устройства могут выполнять аналогичные технологии. Как показано на фиг. 18, видеодекодер 60 принимает кодированные видеоблоки и информацию фильтра (181). Модуль 52 энтропийного декодирования может энтропийно декодировать эту принимаемую информацию. Модуль 55 прогнозирования выполняет интерполяционную компенсацию движения согласно технологиям этого раскрытия сущности. В частности, модуль 55 прогнозирования получает блок пикселов из запоминающего устройства 62, которые включают в себя целопикселные значения, соответствующие целопикселным позициям (182). Модуль 55 прогнозирования может использовать принимаемые векторы движения, чтобы определять то, как выполнять интерполяцию. На основе векторов движения, модуль 55 прогнозирования может вычислять субпиксел на основе поддержки фильтра, которая содержит двенадцать или более позиций, которые окружают субпикселные позиции (183). Таким образом, модуль 55 прогнозирования использует интерполяцию для того, чтобы формировать прогнозный блок (184). Прогнозный блок может использоваться для того, чтобы декодировать остаточный видеоблок посредством вызова сумматора 64, чтобы прибавлять прогнозный блок к остаточному блоку (185). Различные аспекты интерполяции, описанные в данном документе, в том числе использование поддержки 12-позиционного фильтра, которая окружает субпикселные позиции в радиальной форме, позволяет улучшать кодирование видео посредством предоставления интерполированных данных лучшего качества, чем традиционные технологии.
Фиг. 19 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует симметрию по коэффициентам и симметрию по пикселам в соответствии с этим раскрытием сущности. Технология по фиг. 19 описывается с точки зрения видеокодера 50 по фиг. 2, хотя другие устройства могут выполнять аналогичные технологии. Как показано, на фиг. 19, модуль 32 прогнозирования видеокодера 50 задает восемь наборов коэффициентов фильтрации для пятнадцати субпикселных позиций на основе симметрии по коэффициентам и симметрии по пикселам, как описано в данном документе (201). В частности, модуль 32 прогнозирования может использовать симметрию по пикселам, чтобы уменьшать наборы коэффициентов с пятнадцати до восьми, и дополнительно может уменьшать число коэффициентов для некоторых или всех восьми наборов на основе симметрии по коэффициентам между коэффициентами данных наборов. Модуль 32 прогнозирования затем может кодировать видеоданные с использованием интерполяционных фильтров (таких как фильтр(ы) 39) и восьми наборов коэффициентов фильтрации (202). Видеокодер 50 может выводить кодированные видеоданные и восемь наборов коэффициентов фильтрации (203). Восемь наборов коэффициентов, которые кодируются и выводятся в потоке битов, могут отправляться с каждой кодированной единицей (к примеру, с каждым кадром или серией последовательных макроблоков) так, что устройству декодирования могут сообщаться коэффициенты фильтрации, которые следует использовать для интерполяции. Альтернативно, различные группы из восьми наборов коэффициентов могут кодироваться и отправляться с каждой кодированной единицей, чтобы предоставлять различные типы интерполяций в различных местоположениях в рамках кодированной единицы.
Фиг. 20 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует симметрию по коэффициентам и симметрию по пикселам в соответствии с этим раскрытием сущности. В этом случае, модуль 55 прогнозирования видеодекодера 60 принимает восемь наборов коэффициентов фильтрации (191) и формирует пятнадцать наборов коэффициентов фильтрации на основе восьми наборов, симметрии по коэффициентам и симметрии по пикселам. Модуль 60 прогнозирования затем может программировать свои интерполяционные фильтры и применять такие интерполяционные фильтры, чтобы надлежащим образом формировать интерполированные прогнозирующие данные (193). Видеодекодер 60 затем может декодировать видеоблоки на основе прогнозирующих данных (194), к примеру, при вызове сумматора 64, чтобы прибавлять корректные прогнозирующие данные, интерполированные посредством модуля 55 прогнозирования, к остаточному блоку, который должен быть декодирован.
Фиг. 21 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеокодера, который использует фильтрацию целопикселных местоположений, чтобы формировать регулируемые целопикселные значения в соответствии с этим раскрытием сущности. Она поясняется выше как аналогичная интерполяционной фильтрация, поскольку она является аналогичной интерполяциям, но не формирует значения в целочисленный субпиксел. Наоборот, этот процесс формирует новые целочисленные значения, которые фильтруются на основе исходного целочисленного значения и других целочисленных значений, которые окружают исходное целочисленное значение.
Фиг. 21 описывается с точки зрения видеокодера 50 по фиг. 2, хотя другие устройства могут выполнять аналогичные технологии. Как показано, на фиг. 21, MC-модуль 37 модуля 32 прогнозирования получает блок пикселов из запоминающего устройства 34, которые включают в себя целопикселные значения, соответствующие целопикселным местоположениям (211). Фильтр(ы) 39 модуля 32 прогнозирования фильтрует целопикселные значения на основе других целопикселных значений блока пикселов, чтобы формировать регулируемые целопикселные значения (212). Модуль 32 прогнозирования формирует прогнозный блок на основе отрегулированных целопикселных значений (213), и видеокодер 50 кодирует видеоблок на основе прогнозного блока (214), к примеру, при вызове сумматора 48, чтобы вычитать прогнозный блок из кодируемого видеоблока, чтобы формировать остаточный блок. После преобразования и квантования остаточного блока посредством модуля 38 преобразования, модуля 40 квантования и после энтропийного кодирования посредством модуля 46 энтропийного кодирования, видеокодер 50 выводит кодированный видеоблок и информацию фильтра (215). Как в случае субпикселной интерполяции, аналогичная интерполяционной фильтрация относительно целопикселных местоположений может заключать в себе вывод и передачу информации фильтра один раз в расчете на кодированную единицу или, возможно, несколько раз в расчете на кодированную единицу, если различные области кодированной единицы используют различные типы целочисленной аналогичной интерполяционной фильтрации.
Фиг. 22 является блок-схемой последовательности операций, иллюстрирующей примерную работу видеодекодера, который использует фильтрацию целопикселных местоположений, чтобы формировать регулируемые целопикселные значения в соответствии с этим раскрытием сущности. Модуль 55 прогнозирования видеодекодера 60 принимает кодированные видеоблоки, а также принимает информацию фильтра (к примеру, один раз в расчете на кодированную единицу) (221). Модуль 55 прогнозирования получает блок пикселов из запоминающего устройства 62, которые включают в себя целопикселные значения, соответствующие целопикселным позициям (222). Модуль 55 прогнозирования активирует фильтр (не показан) как часть компенсации движения, чтобы фильтровать целопикселные значения на основе других целопикселных значений блока пикселов, чтобы формировать регулируемые целопикселные значения (223). Модуль 55 прогнозирования формирует прогнозный блок на основе отрегулированных целопикселных значений (224). Видеодекодер 60 затем может декодировать видеоблоки на основе прогнозного блока, к примеру, при вызове сумматора 64, чтобы прибавлять прогнозный блок, интерполированный посредством модуля 55 прогнозирования, к остаточному видеоблоку, который должен быть декодирован (225).
Фиг. 23 является блок-схемой последовательности операций, иллюстрирующей технологию для интерполяции на основе заданного искажения в зависимости от скорости передачи для кодирования видео на основе двух наборов вариантов фильтров. В этом случае, MC-модуль 37 модуля 32 прогнозирования может формировать два или более различных наборов прогнозирующих данных, один набор на основе первого набора вариантов интерполяционных фильтров и другой набор на основе второго набора вариантов интерполяционных фильтров. MC-модуль 37 затем может использовать основанный на искажении в зависимости от скорости передачи анализ, чтобы выбирать то, какой интерполяционный фильтр дает наилучшие результаты с точки зрения скорости и искажения. Таким образом, MC-модуль 37 не только рассматривает то, какой набор прогнозирующих данных дает наилучшие результаты (т.е. наименьшее искажение), но также учитывает тот факт, что один набор вариантов фильтров может требовать меньшего дополнительного числа битов, чтобы передавать коэффициенты фильтрации в декодер.
Как показано на фиг. 23, MC-модуль 37 модуля 32 прогнозирования формирует первые интерполированные прогнозирующие данные для кодирования видеоданных на основе первого интерполяционного фильтра (231). Первый интерполяционный фильтр, в одном примере, содержит неперестраиваемый интерполяционный фильтр, соответствующий фильтру, заданному посредством конкретного стандарта кодирования видео, такому как фильтр, который соответствует интерполяционному фильтру ITU-T H.264. Для дополнительной точности, в некоторых случаях неперестраиваемый интерполяционный фильтр может соответствовать интерполяционному фильтру ITU-T H.264 без промежуточного округления полупикселных значений, которые используются для того, чтобы формировать четвертьпикселные значения. В этом случае, неперестраиваемый интерполяционный фильтр может формировать полупикселные значения и может округлять в большую сторону такие значения в целях интерполяции до полупикселного разрешения. Тем не менее, в степени, в которой такие полупикселные значения также должны использоваться для интерполяции до четвертьпикселного разрешения, MC-модуль 37 может сохранять неокругленные версии полупикселных значений и использовать неокругленные версии полупикселных значений для интерполяции до четвертьпикселного разрешения. Находящаяся одновременно на рассмотрении и переуступленная заявка на патент (США) порядковый номер ________, поданная Karczewicz и др. и озаглавленная "ADVANCED INTERPOLATION TECHNIQUES FOR MOTION COMPENSATION IN VIDEO CODING" с номером выписки 081399U1, которая подана в один день с настоящей заявкой и которая содержится в данном документе по ссылке, предоставляет множество дополнительных сведений относительно интерполяционной фильтрации без промежуточного округления полупикселных значений, которые используются для того, чтобы формировать четвертьпикселные значения.
Затем, MC-модуль 37 модуля 32 прогнозирования формирует вторые интерполированные прогнозирующие данные для кодирования видео для видеоданных на основе второго интерполяционного фильтра (232). В одном примере, второй интерполяционный фильтр может содержать адаптивный интерполяционный фильтр. В этом случае, согласовано адаптивной интерполяции, MC-модуль 37 может задавать коэффициенты фильтрации, которые должны использоваться. В частности, MC-модуль 37 может выполнять адаптивный интерполяционный процесс, в котором MC-модуль 37 начинает с предварительно установленных коэффициентов фильтрации, формирует предварительные прогнозирующие данные и затем регулирует коэффициенты фильтрации в адаптивном процессе так, что такие коэффициенты фильтрации задают более желательные прогнозирующие данные.
После того как MC-модуль 37 модуля 32 прогнозирования формирует как первые, так и вторые интерполированные прогнозирующие данные, MC-модуль 37 может выбирать между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи (233). Таким образом, MC-модуль 37 не только рассматривает то, какой набор прогнозирующих данных дает наилучшие результаты (т.е. наименьшее искажение), но MC-модуль 37 также принимает во внимание различные объемы данных (т.е. различные скорости передачи битов), которые должны требоваться для первого интерполяционного фильтра относительно второго интерполяционного фильтра. А именно, если неперестраиваемый интерполяционный фильтр используется (к примеру, в качестве первого интерполяционного фильтра), видеокодер 50 не должен кодировать коэффициенты фильтрации в потоке битов, тогда как если адаптивный интерполяционный фильтр используется (к примеру, в качестве второго интерполяционного фильтра), видеокодер 50 должен кодировать коэффициенты фильтрации. Соответственно, анализ искажения в зависимости от скорости передачи может определять то, какой набор прогнозирующих данных дает наилучшие результаты (т.е. наименьшая функция затрат на искажение в зависимости от скорости передачи), посредством учета того факта, что использование неперестраиваемого интерполяционного фильтра не требует дополнительных битов, чтобы передавать коэффициенты фильтрации в декодер.
Более конкретно, выбор между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи (233) может содержать вычисление первой функции затрат на искажение в зависимости от скорости передачи, ассоциированной с видеоданными, если видеоданные кодируются через первые интерполированные прогнозирующие данные, вычисление второй функции затрат на искажение в зависимости от скорости передачи, ассоциированной с видеоданными, если видеоданные кодируются через вторые интерполированные прогнозирующие данные, и выбор между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе первой и второй функций затрат на искажение в зависимости от скорости передачи.
Функция затрат на искажение в зависимости от скорости передачи, ассоциированная с видеоданными, если видеоданные кодируются через первые интерполированные прогнозирующие данные, может содержать первый разностный показатель, к примеру, среднеквадратическую ошибку (MSE) пикселных значений или сумму абсолютной разности (SAD) пикселных значений или сумму квадрата разности (SSD) пикселных значений, указывающий разность между видеоданными и первыми интерполированными прогнозирующими данными, плюс первое значение, которое определяет количественно затраты, ассоциированные с кодированием коэффициентов фильтрации. В этом случае, если первый интерполяционный фильтр является неперестраиваемым интерполяционным фильтром, первое значение, которое определяет количественно затраты, может быть задано как нуль. Аналогично, вторая функция затрат на искажение в зависимости от скорости передачи может содержать второй разностный показатель, указывающий разности между видеоданными и вторыми интерполированными прогнозирующими данными (MSE, SAD или SSD), плюс второе значение, которое определяет количественно затраты, ассоциированные с кодированием коэффициентов фильтрации. В случае если второй интерполяционный фильтр является адаптивным интерполяционным фильтром, второе значение, которое определяет количественно затраты, ассоциированные с кодированием коэффициентов фильтрации, может содержать число битов (r), требуемое для того, чтобы кодировать коэффициенты адаптивной интерполяционной фильтрации, или, возможно, это число (r), умноженное на множитель Лагранжа (λ).
После выбора между первыми интерполированными прогнозирующими данными и вторыми интерполированными прогнозирующими данными на основе анализа искажения в зависимости от скорости передачи (233), MC-модуль 37 модуля 32 прогнозирования кодирует видеоданные на основе выбора (234) и кодирует синтаксис, чтобы указывать выбор (235). Синтаксис может содержать однобитовый флаг или многобитовый флаг, который задает то, должен первый интерполяционный фильтр или второй интерполяционный фильтр использоваться посредством декодера. Процесс по фиг. 23 может повторяться для каждого из множества субпикселных местоположений для каждой кодированной единицы видеопоследовательности, чтобы указывать, должен первый интерполяционный фильтр или второй интерполяционный фильтр использоваться посредством декодера для каждого из множества субпикселных местоположений. Субпикселные местоположения могут содержать пятнадцать возможных субпикселных местоположений согласно интерполяции до четвертьпикселного разрешения или могут содержать другое число субпикселных местоположений. Процесс по фиг. 23 также может повторяться для целопикселного местоположения для каждой кодированной единицы видеопоследовательности, чтобы указывать, должен первый интерполяционный фильтр или второй интерполяционный фильтр использоваться посредством декодера для целопикселного местоположения.
После того как видеокодер 50 (фиг. 2) кодирует видеоданные на основе выбора (234) и кодирует синтаксис, чтобы указывать выбор (235), модем 23 и передающее устройство 24 (фиг. 1) может модулировать и передавать кодированные видеоданные и синтаксис в целевое устройство 17.В случае если первый интерполяционный фильтр является неперестраиваемым, а второй интерполяционный фильтр является адаптивным, передающее устройство 24 может передавать коэффициенты фильтрации, когда синтаксис указывает, что вторые интерполированные прогнозирующие данные использованы, чтобы формировать кодированные видеоданные, но может не передавать коэффициенты фильтрации, когда синтаксис указывает, что первые интерполированные прогнозирующие данные использованы, чтобы формировать кодированные видеоданные. Таким образом, когда первый интерполяционный фильтр является неперестраиваемым, а второй интерполяционный фильтр является адаптивным, коэффициенты фильтрации отправляются только в том случае, если синтаксис указывает, что адаптивная интерполяционная фильтрация использована, и решение, использовать или нет адаптивную интерполяционную фильтрацию, рассматривает не только качество прогнозирующего видео, но также и скорость передачи битов, на которую влияет присутствие коэффициентов фильтрации в передаваемом потоке битов. В других примерах, тем не менее, первый и второй интерполяционные фильтры могут быть неперестраиваемыми или могут быть адаптивными.
Технологии этого раскрытия сущности могут применяться во многих сценариях, в том числе в сценариях, когда предусмотрено более двух наборов фильтров, выбранных посредством кодера. Другими словами, дополнительные интерполяционные фильтры также могут применяться, чтобы формировать дополнительные интерполированные прогнозирующие данные, которые также могут рассматриваться при анализе искажения в зависимости от скорости передачи. Другими словами, способ не ограничен формированием только первых и вторых интерполированных прогнозирующих данных на основе двух интерполяционных фильтров, но может применяться, чтобы формировать любое множество интерполированных прогнозирующих данных на основе любого числа интерполяционных фильтров. Важно, что интерполированные прогнозирующие данные анализа искажения в зависимости от скорости передачи используются для того, чтобы идентифицировать то, какой фильтр следует выбирать. В одном примере, способ, выполняемый посредством видеокодера 50, может содержать формирование множества различных версий прогнозирующих данных для кодирования видеоданных на основе множества различных интерполяционных фильтров, выбор из множества различных версий прогнозирующих данных на основе анализа искажения в зависимости от скорости передачи, кодирование видеоданных на основе выбора и кодирование синтаксиса, чтобы указывать выбор.
В дополнение к выбору интерполяционного фильтра на основе анализа искажения в зависимости от скорости передачи и формированию синтаксиса, чтобы указывать выбор, MC-модуль 37 модуля 32 прогнозирования также может осуществлять аналогичный анализ искажения в зависимости от скорости передачи относительно целопикселной фильтрации, которая поясняется подробнее выше. В частности, MC-модуль 37 модуля 32 прогнозирования может формировать два или более различных наборов прогнозирующих данных для целопикселных местоположений, к примеру, один с целопикселной фильтрацией и один без целопикселной фильтрации, и может осуществлять анализ искажения в зависимости от скорости передачи относительно этих двух различных наборов, чтобы определять то, требуется или нет целопикселная фильтрация. Соответственно, MC-модуль 37 модуля 32 прогнозирования может формировать другой элемент синтаксиса на основе анализа искажения в зависимости от скорости передачи, ассоциированного с двумя различными наборами целочисленных прогнозирующих данных, чтобы указывать, должна или нет целопикселная фильтрация применяться для кодированной единицы, при этом первый набор целочисленных прогнозирующих данных не фильтруется, а второй набор целочисленных прогнозирующих данных фильтруется. Таким образом, решение, осуществлять или нет целопикселную фильтрацию, может быть основано не только на качестве кодирования видео, но также и на возможном дополнительном числе битов, ассоциированном с целопикселной фильтрацией, в частности, когда целопикселная фильтрация должна заключать в себе кодирование и отправку коэффициентов целопикселной фильтрации, используемых для того, чтобы выполнять такую целопикселную фильтрацию. Целочисленная фильтрация также может рассматривать N целочисленных фильтров (к примеру, где N - это любое положительное и множественное целое число). Согласно использованию N целочисленных фильтров, вышеприведенный пример должен соответствовать случаю, где N равно двум, и один из фильтров не применяет фильтрации.
Каждый раз, когда коэффициенты интерполяционной фильтрации фактически кодируются и отправляются из исходного устройства 12 в целевое устройство 16, это раскрытие сущности также рассматривает технологии для кодирования таких коэффициентов интерполяционной фильтрации. Описанное кодирование для коэффициентов фильтрации позволяет улучшать сжатие данных. В частности, это раскрытие сущности рассматривает технологии прогнозирования для коэффициентов фильтрации, к примеру, относительно коэффициентов неперестраиваемой фильтрации. Помимо этого, это раскрытие сущности рассматривает технологии прогнозирования для второго набора коэффициентов фильтрации относительно первого набора коэффициентов фильтрации. Таким образом, несовершенная симметрия между различными коэффициентами фильтрации может быть использована для того, чтобы предоставлять возможность сжатия данных. В дополнение к использованию таких технологий прогнозирования для коэффициентов интерполяционной фильтрации, это раскрытие сущности также предусматривает полезные технологии квантования и энтропийного кодирования коэффициентов интерполяционной фильтрации на основе префиксного и суффиксного кодирования. Следующее пояснение предоставляет дополнительные сведения этих аспектов данного раскрытия сущности.
Фиг. 24 является блок-схемой последовательности операций, иллюстрирующей технологию для кодирования коэффициентов фильтрации с использованием прогнозирующего кодирования. В этом случае, коэффициенты фильтрации, используемые посредством видеокодера 50, могут быть прогнозирующе кодированы относительно коэффициентов фильтрации неперестраиваемого фильтра, что дополнительно позволяет улучшать сжатие данных, когда коэффициенты фильтрации отправляются как часть кодированного потока битов.
Как показано на фиг. 24, MC-модуль 37 модуля 32 прогнозирования набор коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео (241). Например, MC-модуль 37 может идентифицировать набор коэффициентов фильтрации посредством выполнения процесса адаптивной интерполяционной фильтрации. В этом случае, MC-модуль 37 может определять набор коэффициентов фильтрации через процесс адаптивной интерполяционной фильтрации и формировать прогнозирующие данные на основе коэффициентов фильтрации, идентифицированных в процессе адаптивной интерполяционной фильтрации. При адаптивной интерполяционной фильтрации, как подробнее поясняется в данном документе, MC-модуль 37 может осуществлять двухпроходный подход, в котором прогнозирующие данные формируются на основе неперестраиваемого фильтра, и затем коэффициенты фильтрации регулируются так, что прогнозирующие данные задаются таким образом, чтобы быть в большей степени аналогичными кодируемым видеоданным. Отрегулированные коэффициенты фильтрации в таком случае задают коэффициенты фильтрации, которые используются и кодируются в поток битов.
Чтобы кодировать коэффициенты фильтрации так, что такие коэффициенты фильтрации могут передаваться как часть потока битов, модуль 41 прогнозирования коэффициентов и квантования может формировать остаточные значения, ассоциированные с набором коэффициентов фильтрации, на основе прогнозирующего кодирования набора коэффициентов фильтрации относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром (242). В частности, модуль 41 прогнозирования коэффициентов и квантования может вычитать коэффициенты фильтрации, определенные в процессе адаптивной интерполяционной фильтрации, из соответствующих коэффициентов фильтрации, ассоциированных с неперестраиваемым фильтром, таким как интерполяционный фильтр ITU-T H.264 или интерполяционный фильтр ITU-T H.264 без промежуточного округления полупикселных значений. Посредством кодирования и передачи остаточных значений, вместо передачи фактических коэффициентов фильтрации, объем данных, передаваемый в потоке битов, может уменьшаться. В этом случае, декодер может программироваться, чтобы знать способ, которым кодируются коэффициенты фильтрации.
Видеокодер 50 может активировать модуль 41 прогнозирования коэффициентов и квантования, чтобы прогнозировать и квантовать остаточные коэффициенты, и модуль 46 энтропийного кодирования может энтропийно кодировать квантованные остатки (243). Видеокодер 50 затем может выводить остаточные значения как часть кодированного потока битов (244). Квантование остаточных значений, ассоциированных с коэффициентами фильтрации, может заключать в себе квантование остаточных значений, в котором, по меньшей мере, некоторым из остаточных значений, ассоциированных с различными коэффициентами фильтрации, назначаются различные уровни квантования. Таким образом, модуль 41 прогнозирования коэффициентов и квантования может назначать большее квантование большим остаточным коэффициентам и может назначать меньшее квантование более точным остаточным коэффициентам, чтобы достигать желательного равновесия квантования и точности. Когда большее квантование используется, больший объем данных исключается, но большее сжатие может достигаться. Модуль 46 энтропийного кодирования может энтропийно кодировать остаточные значения посредством назначения префиксного кода, назначения суффиксного кода и назначения значения знака для остаточных значений после квантования остаточных значений. Видеокодер 50 затем может выводить остаточные значения как часть кодированного потока битов (244).
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
1
1
2
2
3
3
4
4
Фиг. 27 является концептуальным графиком, иллюстрирующим некоторые иллюстративные коэффициенты фильтрации, которые могут прогнозирующе кодироваться. В этом случае, коэффициенты фильтрации O, O, O и O могут задавать коэффициенты фильтрации, ассоциированные с неперестраиваемым интерполяционным фильтром. Коэффициенты фильтрации X, X, X и X могут задавать требуемые коэффициенты фильтрации, которые могут быть в достаточной степени аналогичными коэффициентам фильтрации неперестраиваемого интерполяционного фильтра. Соответственно, коэффициенты фильтрации X, X, X и X могут быть прогнозированы на основе коэффициентов фильтрации O, O, O и O соответственно. В частности, первый остаток может формироваться как разность между X и O. Аналогично, второй остаток может формироваться как разность между X и O, третий остаток может формироваться как разность между X и O, и четвертый остаток может формироваться как разность между X и O. Остатки могут содержать меньший объем данных, чем исходные коэффициенты фильтрации, тем самым способствуя сжатию данных.
1
2
1
2
3
4
1
2
3
4
1
2
В некоторых случаях, набор коэффициентов фильтрации содержит первый набор коэффициентов фильтрации, которые задают только часть полного набора коэффициентов фильтрации, ассоциированных с адаптивным интерполяционным фильтром, при этом второй набор коэффициентов фильтрации может быть определен посредством декодера на основе первого набора коэффициентов фильтрации и симметрии по коэффициентам. Например, коэффициенты фильтрации X и X могут быть прогнозирующе кодированы на основе O и O соответственно. В этом случае, тем не менее, X и X могут быть симметричными с X и X, и декодер может программироваться, чтобы знать, что такая симметрия накладывается. Соответственно, с помощью симметрии коэффициенты X и X в этом простом примере могут исключаться из потока битов и могут вычисляться в декодере на основе известной симметрии по коэффициентам после того, как коэффициенты X и X прогнозирующе декодированы.
Фиг. 25 является другой блок-схемой последовательности операций, иллюстрирующей технологию для кодирования коэффициентов фильтрации с использованием прогнозирующего кодирования. В этом случае, тем не менее, используются два различных типа прогнозирования. Как показано на фиг. 25, MC-модуль 37 модуля 32 прогнозирования идентифицирует набор коэффициентов фильтрации для интерполяции прогнозирующих данных при кодировании видео (251). Как в случае процесса по фиг. 24, на фиг. 25 MC-модуль 37 может идентифицировать набор коэффициентов фильтрации посредством выполнения процесса адаптивной интерполяционной фильтрации. В этом случае, MC-модуль 37 может определять набор коэффициентов фильтрации через процесс адаптивной интерполяционной фильтрации и формировать прогнозирующие данные на основе коэффициентов фильтрации, идентифицированных в процессе адаптивной интерполяционной фильтрации. При адаптивной интерполяционной фильтрации MC-модуль 37 может осуществлять двухпроходный подход, в котором прогнозирующие данные формируются на основе неперестраиваемого фильтра, и затем коэффициенты фильтрации регулируются так, что прогнозирующие данные задаются таким образом, чтобы быть в большей степени аналогичными кодируемым видеоданным. Отрегулированные коэффициенты фильтрации в таком случае задают коэффициенты фильтрации, которые используются и кодируются в поток битов.
Чтобы кодировать коэффициенты фильтрации так, что такие коэффициенты фильтрации могут передаваться как часть потока битов, модуль 41 прогнозирования коэффициентов и квантования может формировать первый набор остаточных значений, ассоциированных с первым набором коэффициентов фильтрации, на основе прогнозирующего кодирования относительно коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром (252). В частности, модуль 41 прогнозирования коэффициентов и квантования может вычитать первый набор коэффициентов фильтрации из соответствующих коэффициентов фильтрации, ассоциированных с неперестраиваемым фильтром, таким как интерполяционный фильтр ITU-T H.264 или интерполяционный фильтр ITU-T H.264 без промежуточного округления полупикселных значений. Затем, модуль 41 прогнозирования коэффициентов и квантования может формировать второй набор остаточных значений, ассоциированных со вторым набором коэффициентов фильтрации, на основе прогнозирующего кодирования относительно первого набора коэффициентов фильтрации (253). В частности, модуль 41 прогнозирования коэффициентов и квантования может вычитать второй набор коэффициентов фильтрации из зеркальных или повернутых значений первого набора коэффициентов. Таким образом, первый набор коэффициентов прогнозирующе кодируется на основе коэффициентов неперестраиваемого фильтра, и второй набор коэффициентов прогнозирующе кодируются на основе первого набора коэффициентов. Посредством формирования остаточных значений вместо использования фактических коэффициентов фильтрации, объем данных, передаваемый в потоке битов, может уменьшаться. Кроме того, посредством использования неперестраиваемого фильтра для того, чтобы прогнозировать первый набор коэффициентов, и последующего использования первого набора коэффициентов для того, чтобы прогнозировать второй набор коэффициентов, дополнительное сжатие данных может достигаться относительно прогнозирования, которое основано только на неперестраиваемом фильтре.
Как в случае процесса по фиг. 24, на фиг. 25 видеокодер 50 может активировать модуль 41 прогнозирования коэффициентов и квантования, чтобы прогнозирующе кодировать и квантовать остаточные коэффициенты, и модуль 46 энтропийного кодирования может энтропийно кодировать квантованные остатки (254). Видеокодер 50 затем может выводить остаточные значения как часть кодированного потока битов (254). С другой стороны, квантование остаточных значений, ассоциированных с коэффициентами фильтрации, может заключать в себе квантование остаточных значений, в котором, по меньшей мере, некоторым из остаточных значений, ассоциированных с различными коэффициентами фильтрации, назначаются различные уровни квантования. Таким образом, модуль 41 прогнозирования коэффициентов и квантования может назначать большее квантование большим остаточным коэффициентам и может назначать меньшее квантование более точным остаточным коэффициентам, чтобы достигать желательного равновесия квантования и точности. Модуль 46 энтропийного кодирования может энтропийно кодировать остаточные значения посредством назначения префиксного кода, назначения суффиксного кода и назначения значения знака для остаточных значений после квантования остаточных значений. Видеокодер 50 затем может выводить остаточные значения как часть кодированного потока битов (255).
1
2
1
2
1
2
1
2
1
2
1
2
Фиг. 28 является концептуальным графиком, иллюстрирующим некоторые иллюстративные коэффициенты фильтрации, которые могут прогнозирующе кодироваться согласно процессу по фиг. 25. В этом случае, коэффициенты фильтрации O и O могут задавать коэффициенты фильтрации, ассоциированные с неперестраиваемым интерполяционным фильтром. Коэффициенты фильтрации X и X могут задавать первый набор требуемых коэффициентов фильтрации, которые могут быть в достаточной степени аналогичными коэффициентам фильтрации неперестраиваемого интерполяционного фильтра. Соответственно, коэффициенты фильтрации X и X могут быть прогнозированы на основе коэффициентов фильтрации O и O соответственно. В частности, первый остаток может формироваться как разность между X и O1, и второй остаток может формироваться как разность между X2 и O. Остатки могут содержать меньший объем данных, чем исходные коэффициенты фильтрации, тем самым способствуя сжатию данных. Остатки затем квантуются посредством модуля 41 прогнозирования коэффициентов и квантования и энтропийно кодируются посредством модуля 46 энтропийного кодирования.  и  могут упоминаться как модифицированные коэффициенты фильтрации, которые формируются посредством прибавления деквантованных остатков к коэффициентам прогнозной фильтрации O и O.
1
2
Затем, второй набор коэффициентов фильтрации Z1 и Z2 может прогнозирующе кодироваться на основе первого набора коэффициентов X и X2, к примеру, конкретно из коэффициентов  и , которые задаются на основе коэффициентов X1 и X2. В частности, третий остаток может формироваться как разность между Z1 и , а четвертый остаток может формироваться как разность между Z2 и .  и  могут быть в большей степени аналогичными Z1 и Z2, чем O1 и O, следовательно, посредством использования и  для того, чтобы прогнозирующе кодировать Z1 и Z2, дополнительному сжатию данных можно способствовать.
Фиг. 26 является блок-схемой последовательности операций, иллюстрирующей технологию для декодирования коэффициентов фильтрации с использованием прогнозирующего кодирования. Фиг. 26 описывается с точки зрения видеодекодера 60 по фиг. 16. Как показано, видеодекодер 60 принимает остаточные значения, ассоциированные с набором коэффициентов фильтрации (261). Видеодекодер 60 может энтропийно декодировать остаточные значения через модуль 52 энтропийного декодирования и может активировать модуль 53 прогнозирования коэффициентов и обратного квантования, чтобы деквантовать остаточные значения (262), которые затем отправляются в модуль 55 прогнозирования. Модуль 56 прогнозирования формирует набор коэффициентов фильтрации с использованием прогнозирующего декодирования остаточных значений (263).
В частности, модуль 56 прогнозирования может формировать полный набор коэффициентов фильтрации на основе остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, к примеру, как концептуально проиллюстрировано на фиг. 27 и разрешено выше в контексте кодирования. В некоторых случаях, первый набор коэффициентов фильтрации может быть сформирован на основе остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и второй набор коэффициентов фильтрации может быть сформирован на основе симметрии. В других случаях, первый набор коэффициентов фильтрации может быть сформирован на основе остаточных значений и коэффициентов фильтрации, ассоциированных с неперестраиваемым интерполяционным фильтром, и второй набор коэффициентов фильтрации может быть сформирован на основе дополнительных остаточных значений и первого набора коэффициентов фильтрации, к примеру, как концептуально проиллюстрировано на фиг. 28 и разрешено выше в контексте кодирования. В любом случае, модуль 56 прогнозирования видеодекодера 60 применяет набор коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные, используемые для прогнозирующего декодирования видеоблоков (264). В частности, модуль 56 прогнозирования фильтрует данные, чтобы формировать интерполированные прогнозирующие данные с использованием прогнозирующе декодированных коэффициентов фильтрации так, что видеоблоки могут декодироваться на основе таких интерполированных прогнозирующих данных.
С другой стороны, набор прогнозирующе декодированных коэффициентов фильтрации может содержать первый набор коэффициентов фильтрации, которые задают только часть полного набора коэффициентов фильтрации, ассоциированных с адаптивным интерполяционным фильтром. В этом случае, модуль 53 прогнозирования коэффициентов и обратного квантования видеодекодера 60 может формировать второй набор коэффициентов фильтрации на основе первого набора коэффициентов фильтрации и симметрии по коэффициентам и применять первый и второй наборы коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные.
В другом случае набор прогнозирующе декодированных коэффициентов фильтрации может содержать первый набор коэффициентов фильтрации, которые задают только часть полного набора коэффициентов фильтрации, ассоциированных с адаптивным интерполяционным фильтром. В этом случае, видеодекодер 60 может принимать дополнительные остаточные значения, ассоциированные с полным набором коэффициентов фильтрации. Модуль 53 прогнозирования коэффициентов и обратного квантования может формировать второй набор коэффициентов фильтрации с использованием прогнозирующего декодирования на основе дополнительных остаточных значений и первого набора коэффициентов фильтрации, и модуль 55 прогнозирования может применять первый и второй наборы коэффициентов фильтрации, чтобы интерполировать прогнозирующие данные.
В некоторых случаях, неперестраиваемые интерполяционные фильтры на основе фильтров H.264/AVC могут использоваться для того, чтобы прогнозировать одномерные фильтры (которые могут включать в себя фильтры для субпикселных позиций a, b, d, h, показанных на фиг. 8, 9, 10 и 11). Для двумерных фильтров, которые включают в себя фильтры для субпикселных позиций e, f, i и j, показанных на фиг. 12, 13, 14 и 15, одна из следующих схем прогнозирования может использоваться:
1. Задание прогнозирования равным нулю (отсутствует прогнозирование), , .
2. Использование прогнозирования на основе неперестраиваемого фильтра, такого как средний фильтр, собранный для обучающего набора, т.е. ,  где  - это (i, j)-тый коэффициент фильтрации в среднем фильтре для субпикселной позиции SP.
3. Использование возможной симметрии в коэффициентах и использование уже кодированных коэффициентов, чтобы прогнозировать оставшиеся коэффициенты.
Для одномерных фильтров также может применяться любой из этих трех способов прогнозирования.
Для прогнозирования фиг. 29 предоставляет пример матрицы коэффициентов целопикселной фильтрации, для которых технологии прогнозирования могут использоваться для кодирования. В этом примере, можно предположить, что симметрия не накладывается на целопикселный фильтр. Коэффициенты (h0,0), (h0,1), (h1,0), (h1,1), (h2,0), (h2,1) (h0,2), (h1,2) и (h2,2) могут квантоваться и кодироваться сначала. Затем, уже кодированные верхние левые коэффициенты (h0,0), (h0,1), (h1,0), (h1,1) и (h2,0) могут использоваться для того, чтобы прогнозировать правые верхние коэффициенты (h0,3), (h1,3), (h2,3), (h0,4), (h1,4) и (h2,4). Затем, после того как верхняя половина коэффициентов фильтрации (h0,0), (h0,1), (h0,2), (h0,3) (h0,4), (h1,0), (h1,1), (h1,2), (h1,3) и (h1,4) квантована и кодирована, они дополнительно могут использоваться для того, чтобы прогнозировать нижнюю половину коэффициентов фильтрации (h3,0), (h3,1), (h3,2), (h3,3), (h3,4), (h4,0), (h4,1), (h4,2), (h4,3) и (h4,4). Прогнозирование других коэффициентов фильтрации может выполняться аналогичным способом. Например, для фильтра субпикселной позиции "e" (см. фиг. 12), который может иметь определенную симметрию по диагонали, правые верхние коэффициенты могут сначала квантоваться и кодироваться и затем использоваться для того, чтобы прогнозировать левые нижние коэффициенты.
В любом случае, после прогнозирования коэффициентов (к примеру, посредством модуля 41 прогнозирования коэффициентов и квантования модуля 32 прогнозирования) ошибки прогнозирования квантуются (к примеру, посредством модуля 41 прогнозирования коэффициентов и квантования). Как описано выше, так называемое "неравномерное квантование" может использоваться. В этом случае, точность квантования, применяемого посредством модуля 41 прогнозирования коэффициентов и квантования, может зависеть от местоположения коэффициента. Выяснено, что для коэффициентов с меньшей величиной (которые типично являются коэффициентами на большем расстоянии от центра фильтра), лучшая точность может быть желательной. Напротив, для коэффициентов с большей величиной (которые типично являются коэффициентами на меньшем расстоянии до центра фильтра), меньшая точность является более желательной.
Следующие матрицы, ,,, могут использоваться посредством модуля 41 прогнозирования коэффициентов и квантования, чтобы указывать точность квантования для коэффициентов в одномерных фильтрах, двумерных фильтрах и целопикселном фильтре соответственно. Следует отметить, что числа битов, указанные в матрицах, могут включать в себя 1 бит, чтобы кодировать знак соответствующих коэффициентов.
Модуль 41 прогнозирования коэффициентов и квантования может кодировать ошибки прогнозирования квантованных коэффициентов, т.е. остатки коэффициентов, на основе простой схемы префиксного кодирования. Во-первых, динамический диапазон величины ошибки прогнозирования разделяется на N элементов разрешения, например, N=6. Если динамический диапазон величины составляет , где q - это точность квантования для данной позиции коэффициента (к примеру, указываемая в матрицах выше), то каждый элемент разрешения n, n=0,..., N-1 может охватывать следующие диапазоны:
если
В этом случае, элемент разрешения b, b=0..., N-1, которому принадлежит входная величина m, может кодироваться с использованием унарного префиксного кода (который принимает b+1 битов). Затем, остаток величины, , может кодироваться с использованием суффиксного кода фиксированной длины в  битов. В завершение, знак ошибки прогнозирования кодируется с использованием 1 бита.
Например, для среднего коэффициента в одномерном фильтре, точность в 9 битов может использоваться посредством модуля 41 прогнозирования коэффициентов и квантования, чтобы квантовать ошибку прогнозирования, т.е. , из которых 8 битов могут использоваться для того, чтобы квантовать абсолютную величину ошибки. Если абсолютная величина ошибки равна 97, то она находится в рамках 4-ого элемента разрешения, т.е. . Следовательно, унарный префиксный код "11110" может быть кодирован, чтобы указывать 4-ый элемент разрешения, и остаток  может быть кодирован с использованием суффиксного кода фиксированной длины в  битов. В завершение, бит "0" может быть кодирован, чтобы указывать положительный знак.
Технологии этого раскрытия сущности могут быть реализованы в широком спектре устройств или приборов, в том числе в беспроводном переносном телефоне и интегральной схеме (IC) или наборе IC (т.е. наборе микросхем). Все описанные компоненты, модули или узлы предусмотрены для того, чтобы подчеркивать функциональные аспекты, и не обязательно требуют реализации посредством различных аппаратных модулей.
Технологии, описанные в данном документе, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой их комбинации. Если реализованы в аппаратных средствах, любые признаки, описанные как модули, узлы или компоненты, могут быть реализованы совместно в интегрированном логическом устройстве или отдельно как дискретные, но взаимодействующие логические устройства. Если реализованы в программном обеспечении, технологии могут быть реализованы, по меньшей мере, частично посредством машиночитаемого носителя, содержащего инструкции, которые, когда выполняются в процессоре, осуществляют один или более способов, описанных выше, Машиночитаемый носитель может содержать машиночитаемый носитель хранения данных и может являться частью компьютерного программного продукта, который может включать в себя упаковку. Машиночитаемые носители хранения данных могут содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитные или оптические носители хранения данных и т.п. Дополнительно или альтернативно, технологии могут быть реализованы, по меньшей мере, частично посредством машиночитаемой среды связи, которая переносит или передает код в форме инструкций или структур данных, и к которой можно осуществлять доступ, считывать или выполнять посредством компьютера.
Код может выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в рамках специализированных программных модулей или аппаратных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный видеокодек. Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.
Описаны различные аспекты раскрытия изобретения. Эти и другие аспекты изобретения находятся в рамках объема определенного прилагаемой формулой изобретения.