Настоящая заявка испрашивает приоритет на основании предварительной заявки США 61/044020, поданной 10 апреля 2008 г., предварительной заявки США 61/044023, поданной 10 апреля 2008 г., предварительной заявки США 61/044240, поданной 11 апреля 2008 г., и предварительной заявки США 61/057373, поданной 30 мая 2008 г., содержание которых в полном объеме включено в данный документ по ссылке.
Область техники, к которой относится изобретение
Настоящее изобретение относится к цифровому видеокодированию и декодированию и, более конкретно, к методам фильтрации, применяемым для генерирования данных предсказания, используемых в видеокодировании и декодировании.
Уровень техники
Возможности цифрового видео могут быть встроены в многочисленные устройства, включая цифровые телевизоры, системы прямого цифрового вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), портативные или настольные компьютеры, цифровые камеры, устройства цифровой записи, игровые видеоустройства, игровые видеоприставки, сотовые или спутниковые радиотелефоны и т.п. Цифровые видеоустройства реализуют методы сжатия видео, такие как те, которые описаны в стандартах, описанных в стандартах Экспертной группы по вопросам движущегося изображения MPEG-2, MPEG-4 или Международного союза электросвязи - сектора телекоммуникации H.264/MPEG-4, Part 10, усовершенствованное видеокодирование (AVC), для более эффективной передачи и приема цифровой видеоинформации. Методы сжатия видео могут выполнять пространственное предсказание и/или временное предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям.
Блочное внешнее кодирование является очень полезным методом кодирования, который основывается на временном предсказании для уменьшения или устранения временной избыточности между видеоблоками последовательных кодированных единиц видеопоследовательности. Кодированные блоки могут содержать видеокадры, слои видеокадров, группы изображений или другую определенную единицу кодированных видеоблоков. Для внешнего кодирования видеокодер выполняет оценку движения и компенсацию движения для отслеживания движения соответствующих видеоблоков двух или более соседних кодированных единиц. Оценка движения генерирует векторы движения, которые указывают смещение видеоблоков относительно соответствующих видеоблоков предсказания в одном или нескольких опорных кадрах или других кодированных единицах. Компенсация движения использует векторы движения для генерирования видеоблоков предсказания из одного или нескольких опорных кадров или других кодированных единиц. После компенсации движения остаточные видеоблоки образуются посредством вычитания видеоблоков предсказания из исходных кодируемых видеоблоков.
Видеокодер также может применять процессы преобразования, квантования и энтропийного кодирования для дополнительного снижения скорости передачи битов, ассоциированной с передачей остаточных блоков. Методы преобразования могут содержать дискретное косинусное преобразование (DCT) или концептуально подобные процессы. Альтернативно, могут использоваться вейвлет-преобразования, целочисленные преобразования или другие типы преобразований. В процессе DCT, в качестве примера, набор значений пикселей преобразуется в коэффициенты преобразования, которые могут представлять энергию значений пикселей в частотной области. Квантование применяется к коэффициентам преобразования и, в основном, включает в себя процесс, который уменьшает количество битов, связанных с любым данным коэффициентом преобразования. Энтропийное кодирование содержит один или несколько процессов, которые вместе содержат последовательность режимов кодирования, информацию о движении, шаблоны кодированных блоков и квантованные коэффициенты преобразования. Примеры энтропийного кодирования включают в себя, но не ограничиваются ими, контентно-адаптивное кодирование переменной длины (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (CABAC).
Кодированный видеоблок может быть представлен информацией предсказания, которая может использоваться для создания или идентификации блока предсказания, и остаточным блоком данных, указывающим различия между кодируемым блоком и блоком предсказания. Информация предсказания может содержать один или несколько векторов движения, которые используются для идентификации блока предсказания данных. Если заданы векторы движения, декодер может восстановить блоки предсказания, которые использовались для кодирования остатка. Таким образом, если задан набор остаточных блоков и набор векторов движения (и, возможно, некоторый дополнительный синтаксис), декодер может восстановить видеокадр, который первоначально кодировался. Внешнее кодирование, основанное на оценке движения и компенсации движения, может достигать очень хорошего сжатия, так как последовательные видеокадры или другие типы кодированных единиц часто являются очень похожими. Кодированная видеопоследовательность может содержать блоки остаточных данных, векторы движения и, возможно, другие типы синтаксиса.
Были разработаны методы интерполяции, чтобы повысить уровень сжатия, который может достигаться при внешнем кодировании. В данном случае, данные предсказания, генерируемые во время компенсации движения, которые используются для кодирования видеоблока, могут интерполироваться из пикселей видеоблоков видеокадра или другой кодированной единицы, используемой при оценке движения. Интерполяция часто выполняется для генерирования значений полупикселя (полупэла) предсказания и значений четвертьпикселя (четвертьпэла) предсказания. Значения полу- и четвертьпэла ассоциируются с местоположениями субпикселя. Дробные векторы движения могут использоваться для идентификации видеоблоков при субпиксельном разрешении, чтобы захватить дробное движение в видеопоследовательности и, таким образом, обеспечить блоки предсказания, которые являются более подобными кодируемым видеоблокам, чем целочисленные видеоблоки.
Раскрытие изобретения
В основном, настоящее раскрытие описывает методы фильтрации, применяемые кодером и декодером во время этапа предсказания процесса видеокодирования и/или декодирования. Описанные методы фильтрации могут повысить точность данных предсказания, используемых во время дробной интерполяции, и, в некоторых случаях, могут улучшить данные предсказания целочисленных блоков пикселей. Есть несколько аспектов данного раскрытия, включающие в себя полезную двенадцатипиксельную поддержку фильтра, которая может использоваться для интерполяции, методы, которые используют симметрию коэффициентов и симметрию пикселей для снижения количества данных, необходимых для пересылки между кодером и декодером для конфигурирования поддержки фильтра для интерполяции, и методы для фильтрации данных в местоположениях целочисленных пикселей образом, подобным субпиксельной интерполяции. Другие аспекты данного раскрытия касаются методов кодирования информации в битовом потоке для передачи типа используемого фильтра и, возможно, используемых коэффициентов фильтра. Также описываются методы кодирования с предсказанием для коэффициентов фильтра. Эти и другие аспекты данного раскрытия станут очевидными из описания ниже.
В одном примере данное раскрытие обеспечивает способ, содержащий получение блоков пикселей, причем блоки пикселей включают в себя значения целочисленных пикселей, соответствующие положениям целочисленных пикселей в блоках пикселей, фильтрацию значений целочисленных пикселей, основываясь на значениях других целочисленных пикселей в блоке пикселей, для генерирования откорректированных значений целочисленных пикселей, причем откорректированные значения целочисленные пикселей соответствуют положениям целочисленных пикселей, и генерирование блока предсказания, основываясь на откорректированных значениях целочисленных пикселей.
В другом примере данное раскрытие обеспечивает устройство, содержащее видеокодер, который получает блоки пикселей, причем блоки пикселей включают в себя значения целочисленных пикселей, соответствующие положениям целочисленных пикселей в блоках пикселей, фильтрует значения целочисленных пикселей, основываясь на значениях других целочисленных пикселей в блоке пикселей, для генерирования откорректированных значений целочисленных пикселей, причем откорректированные значения целочисленных пикселей соответствуют положениям целочисленных пикселей, и генерирует блок предсказания, основываясь на откорректированных значениях целочисленных пикселей.
В другом примере данное раскрытие обеспечивает устройство, содержащее средство для получения блоков пикселей, причем блоки пикселей включают в себя значения целочисленных пикселей, соответствующие положениям целочисленных пикселей в блоках пикселей, средство для фильтрации значений целочисленных пикселей, основываясь на значениях других целочисленных пикселей в блоке пикселей, для генерирования откорректированных значений целочисленных пикселей, причем откорректированные значения целочисленных пикселей соответствуют положениям целочисленных пикселей, и средство для генерирования блока предсказания, основанного на откорректированных значениях целочисленных пикселей.
Методы, описанные в данном раскрытии, могут быть реализованы аппаратными, программными, программно-аппаратными средствами или любой их комбинацией. Если они реализованы программными средствами, программные средства могут исполняться в одном или нескольких процессорах, таких как микропроцессор, специализированной интегральной схеме (специализированной ИС), программируемой вентильной матрице (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, Part 10, усовершенствованное видеокодирование (AVC). Методы данного раскрытия, однако, не ограничиваются любым конкретным стандартом видеокодирования. Хотя и не показан на фиг.1, в некоторых аспектах видеокодер 22 и видеодекодер 28 каждый может быть интегрирован с аудиокодером и декодером и может включать в себя соответствующие узлы MUX-DEMUX (мультиплексора-демультиплексора), или другие аппаратные и программные средства, для выполнения кодирования как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, узлы MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
Видеокодер 22 и видеодекодер 28 каждый может быть реализован в виде одного или нескольких микропроцессоров, процессоров цифровой обработки сигналов (DSP), специализированных интегральных схем (специализированных ИС), программируемых вентильных матриц (FPGA), дискретной логики, программных средств, аппаратных средств, программно-аппаратных средств или любой их комбинации. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или несколько кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодека, который обеспечивает возможности кодирования и декодирования в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере или т.п.
Видеопоследовательность обычно включает в себя последовательность видеокадров. Видеокодер 22 работает с видеоблоками в индивидуальных видеокадрах, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированные или изменяющиеся размеры и могут различаться в размерах в соответствии с заданным стандартом кодирования. Каждый видеокадр включает в себя последовательность слоев. Каждый слой может включать в себя последовательность макроблоков, которые могут быть упорядочены в субблоки. В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее предсказание в различных размерах блоков, таких как 16×116, 8×8 или 4×4 для яркостной составляющей и 8×8 для цветовых составляющих, а также внешнее предсказание в различных размерах блоков, таких как 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 разные квадратики представляют местоположения или положения пикселей и субпикселей в кадре или блоке кадра. Прописные буквы (в квадратиках со сплошными линиями) представляют местоположения целочисленных пикселей, тогда как строчные буквы (в квадратиках с пунктирными линиями) представляют местоположения субпикселей. В частности, местоположения пикселей А1-А6, В1-В6, С1-С6, D1-D6, E1-E6 и F1-F6 представляют массив 6×6 местоположений целочисленных пикселей в кадре, слое или другой кодированной единице. Местоположения субпикселей «а»-«о» представляют пятнадцать местоположений субпикселей, ассоциированных с целочисленным пикселем С3, например, между местоположениями целочисленных пикселей С3, С4, D3 и D4. Подобные местоположения субпикселей могут существовать для каждого местоположения целочисленного пикселя. Местоположения субпикселей «а»-«о» представляют каждое местоположение пикселя из полупэла и четвертьпэла, ассоциированное с целочисленным пикселем С3.
Местоположения целочисленных пикселей могут ассоциироваться с элементом физического датчика, такого как фотодиод, когда первоначально генерировались видеоданные. Фотодиод может измерять интенсивность источника света в расположении датчика и ассоциировать значение интенсивности пикселя с расположением целочисленного пикселя. Снова, каждое местоположение целочисленного пикселя может иметь ассоциированный набор из пятнадцати местоположений субпикселей (или, возможно, больше). Количество местоположений субпикселей, ассоциированных с местоположениями целочисленных пикселей, может зависеть от требуемой точности. В примере, изображенном на фиг.3, требуемая точность составляет точность до четвертьпикселя, в этом случае каждое местоположение целочисленного пикселя соответствует пятнадцати разным положениям субпикселей. Больше или меньше положений субпикселей может ассоциироваться с каждым расположением целочисленного пикселя, основываясь на требуемой точности. Для точности до полупикселя, например, каждое местоположение целочисленного пикселя может соответствовать трем положениям субпикселей. В качестве другого примера, каждое местоположение целочисленного пикселя может соответствовать шестидесяти трем положениям субпикселей для точности до одной восьмой пикселя. Каждое местоположение пикселя может определять одно или несколько значений пикселя, например одно или несколько значений яркости и цветности.
Y может представлять яркость, и Cb и Cr могут представлять два разных значения цветности трехмерного цветового пространства YCbCr (яркость - цветность синего - цветность красного). Каждое местоположение пикселя может определять, фактически, три значения пикселя для трехмерного цветового пространства. Методы данного раскрытия, однако, могут ссылаться на предсказание в отношении одной размерности для простоты. В той степени, в которой методы описываются в отношение значений пикселей по одной размерности, подобные методы могут быть расширены на другие размерности.
В примере на фиг.3 местоположения субпикселей, ассоциированные с целочисленным пикселем «С3», изображены для точности до четвертьпикселя. Пятнадцать положений субпикселей, ассоциированных с пикселем С3, обозначены как «а», «b», «c», «d», «e», «f», «g», «h», «i», «j», «k», «l», «m», «n» и «o». Большинство из других дробных местоположений, ассоциированных с другими местоположениями целочисленных пикселей, не показаны для упрощения (кроме тех, которые использовались для генерирования одного или нескольких из 15 разных дробных местоположений, ассоциированных с расположением С3 пикселя, как описано более подробно ниже). Местоположения субпикселей «b», «h» и «j» могут упоминаться как местоположения полупикселей, и местоположения субпикселей «а», «c», «d», «e», «f», «g», «i», «k», «l», «m» и «o» могут упоминаться как местоположения четвертьпикселей.
Узел 32 предсказания видеокодера 40 может определять значения пикселя для местоположений субпикселей «а»-«о», используя интерполяционную фильтрацию посредством MC-узла 37. В соответствии со стандартом ITU-T H.264, например, узел 32 предсказания может определять значения пикселей для местоположений полупикселей, используя 6-отводный интерполяционный фильтр, такой как фильтр Винера. В случае стандарта H.264 коэффициенты фильтра для 6-отводного интерполяционного фильтра обычно равны [1, -5, 20, 20, -5, 1], хотя могут использоваться другие коэффициенты. Узел 32 предсказания может применять интерполяционный фильтр сначала по горизонтальному направлению и затем по вертикальному направлению, или наоборот. Для положений «b» и «h» полупикселей каждый отвод может соответствовать положению целочисленного пикселя по горизонтальному и вертикальному направлению, соответственно. В частности, для положения «b» полупикселя отводы 6-отводного фильтра соответствуют С1, С2, С3, С4, С5 и С6. Аналогично, для положения «h» полупикселя отводы 6-отводного фильтра соответствуют А3, В3, С3, D3, E3 и F3. Например, значения пикселей для положений «b» и «h» субпикселей могут вычисляться с использованием уравнений (1) и (2):
Для положения «j» полупикселя отводы 6-отводного фильтра соответствуют самим себе интерполированным горизонтально между положениями С1-С6 и D1-D6 или вертикально между положениями A3-F3 и A4-F4. Местоположение «j» полупикселя может вычисляться посредством 6-отводного фильтра, который использует ранее интерполированные значения пикселей положений полупикселей, например, в соответствии с одним из уравнений (3) или (4):
,
где (как показано на фиг.3) аа соответствует интерполяции между А3 и А4, bb соответствует интерполяции между В3 и В4, b соответствует интерполяции между С3 и С4, hh соответствует интерполяции между D3 и D4, ii соответствует интерполяции между Е3 и Е4, и jj соответствует интерполяции между F3 и F4. В уравнении 4 сс соответствует интерполяции между С1 и D1, dd соответствует интерполяции между С2 и D2, h соответствует интерполяции между С3 и D3, ее соответствует интерполяции между С4 и D4, ff соответствует интерполяции между С5 и D5, и gg соответствует интерполяции между С6 и D6.
В соответствии со стандартом H.264 узел 32 предсказания может определять значения пикселей в местоположениях «а», «c», «d», «e», «f», «g», «i», «k», «l», «m», «n» и «o» четвертьпикселей, используя билинейный интерполяционный фильтр и значения пикселей окружающих местоположений целочисленных пикселей и полупикселей. Например, узел 32 предсказания может определять значение пикселя, ассоциированное с положением «а» субпикселя, используя значения пикселей С3 и «b», определять значение пикселя, ассоциированное с положение «с» субпикселя, используя значения пикселей «b» и С4, и т.д.
Фактический фильтр, который применяется MC-узлом 37 для генерирования интерполированных данных в местоположениях субпикселей, может подлежать многочисленным реализациям. В качестве одного примера, узел 32 предсказания может использовать адаптивную интерполяционную фильтрацию (AIF), как описано ниже, для определения интерполированных значений. Комитет ITU-T SG16/Q.6/VCEG (Группа экспертов по видеокодированию) исследовала технологии кодирования, которые предлагают более высокую эффективность кодирования, чем H.264 и, в частности, AIF. AIF предлагает большой выигрыш от кодирования относительно интерполяционной фильтрации, используемой в стандарте H.264, особенно на видеопоследовательностях с высоким разрешением (например, 720 чересстрочная/прогрессивная или 1080 чересстрочная/прогрессивная). В AIF интерполяционный фильтр для каждого положения субпикселя аналитически вычисляется для каждого видеокадра посредством минимизации энергии ошибки предсказания. Это способствует рассмотрению ступенчатости, ошибок квантования и оценки движения, шума камеры или другого артефакта, содержащегося в исходных и опорных видеокадрах. Аналитически выведенные коэффициенты адаптивного фильтра для каждого кадра затем предсказываются, квантуются, кодируются и посылаются в битовом потоке видео. Некоторые из методов данного раскрытия могут работать в схеме AIF, а также во многих других схемах интерполяции.
Существуют многочисленные разные типы схем AIF, совместимые с аспектами данного раскрытия. Например, первая схема представляет собой двумерную неразделимую AIF (NS-AIF), вторая представляет собой разделимую AIF (S-AIF), и третья представляет собой AIF с направленными фильтрами (D-AIF). Хотя каждая из этих схем AIF использует разные методы интерполяции и поддержки, все три схемы AIF могут использовать подобные аналитические процессы для вывода коэффициентов фильтра, что объясняется ниже, используя, в качестве примера, неразделимую AIF.
Предположим, что 6×6 двумерный неразделимый фильтр имеет коэффициенты , где i,j=0…5, и SP представляет одно из 15 положений субпикселей («а»-«о»), показанных на фиг.3. Отметьте, что 6 из 15 положений субпикселей, т.е. «а», «b», «c», «d», «h» и «l», представляют собой одномерные (1D) положения субпикселей, и узел 32 предсказания может использовать 6-отводный интерполяционный фильтр для интерполяции таких данных. Положения субпикселей «а», «b», «c», «d», «h» и «l» являются 1D в том смысле, что они располагаются на горизонтальной или вертикальной линии между двумя положениями целочисленных пикселей. Также, предположим, что пиксели предсказания в положениях целочисленных пикселей (A1-F6 на фиг.3) в опорном кадре принимают значения пикселей P i,j, где i,j=0…5. Т.е. А1 принимает значение P 0,0, …, А6 принимает значение P 5,0, …, F1 принимает значение P 5,0, …, и F6 принимает значение P 5,5. Тогда интерполированное значение p SP в положении субпикселя SP, SP∈{a,…,o} может быть вычислено узлом 32 предсказания, используя следующее уравнение
Пусть S x,y будет значением пикселя в текущем видеокадре в положении (x,y).
где (mνx,mνy) представляет собой вектор движения, () представляет собой целочисленную составляющую вектора движения, и FO представляет собой смещение фильтра. Значение () представляет собой соответствующее положение пикселя в опорных кадрах. Например, в случае 6-отводного фильтра FO=6/2-1=2. Для каждого положения SP субпикселя энергия ошибки предсказания между фактическим значением пикселя в текущем кадре и интерполированным значением может накапливаться узлом 32 предсказания для всех пикселей, которые имеют точность вектора движения, соответствующую положению SP субпикселя. Энергия ошибки предсказания может вычисляться узлом 32 предсказания, используя следующее уравнение:
Для каждого положения субпикселя от а до о MC-узел 37 может устанавливать индивидуальный набор уравнений посредством вычисления производной относительно коэффициентов фильтра. Количество уравнений в данном случае равно количеству коэффициентов фильтра, используемых для текущего положения SP субпикселя. Для каждого двумерного (2D) положения «e», «f», «g», «i», «j», «k», «m», «n» и «o» субпикселя узел 32 предсказания может использовать 2D 6×6-отводный интерполяционный фильтр. Положения «e», «f», «g», «i», «j», «k», «m», «n» и «o» субпикселей являются 2D в том смысле, что они не располагаются по вертикальной линии или горизонтальной линии между двумя положения целочисленных пикселей. В данном случае, MC-узлом 37 может решаться система из тридцати шести уравнений с тридцатью шестью неизвестными. Остальные 1D положения «а», «b», «c», «d», «h» и «l» субпикселей могут потребовать только 1D интерполяционный фильтр (например, 1D 6-отводный фильтр). В случае 1D 6-отводного фильтра MC-узлом 37 может решаться система из шести уравнений.
Фильтр(ы) 39 может представлять один фильтр или набор многих разных фильтров, которые могут использоваться MC-узлом 37 для генерирования данных предсказания.
Таким образом, один примерный процесс выведения и применения фильтров AIF может иметь следующие этапы, которые могут выполняться узлом 32 предсказания:
1. Оценить векторы движения (mνx,mνy) для каждого кодируемого видеоблока. Во время оценки движения может применяться неперестраиваемый интерполяционный фильтр (например, процесс интерполяции H.264/AVC).
2. Используя эти векторы движения, выполнить накопление энергии ошибки предсказания для каждого положения SP субпикселя по текущему видеокадру. Затем независимо вычислить коэффициенты адаптивного фильтра для каждого положения SP субпикселя посредством минимизации энергии ошибки предсказания как в двух уравнениях энергии предсказания выше.
3. Оценить новые векторы движения. Во время этого процесса оценки движения могут применяться адаптивные интерполяционные фильтры, вычисленные на этапе 2. При использовании адаптивных интерполяционных фильтров уменьшаются ошибки оценки движения, вызванные ступенчатостью, шумом камеры и т.д., и достигается лучшее предсказание движения.
Разные схемы AIF могут использовать тот же аналитический процесс, что и приведенный выше. Различие между разными схемами заключается, главным образом, в количестве используемых уникальных коэффициентов фильтра, являются ли интерполяционные фильтры разделяемыми или неразделяемыми, и в используемой поддержке фильтра (т.е. положения целочисленных пикселей, используемые для интерполяции по меньшей мере части положений субпикселей). В каждой из этих схем определенные ограничения симметрии на фильтры AIF могут налагаться для уменьшения количества коэффициентов фильтра, которые необходимы для кодирования и посылки в битовом потоке видео.
Для NS-AIF, например, MC-узел 37 узла 32 предсказания может интерполировать 1D положения «а», «b», «c», «d», «h» и «l» субпикселей, используя 1D 6-отводный интерполяционный фильтр (также упоминаемый как 6-позиционный фильтр, так как каждый отвод соответствует положению целочисленного пикселя), который требует шесть коэффициентов. Каждый из шести коэффициентов 6-позиционных фильтров, используемых для интерполяции 1D субпикселя, соответствует одному из положений целочисленных пикселей, изображенных на фиг.3. Например, для положений «а», «b» и «c» субпикселей шестью положениями целочисленных пикселей, соответствующими коэффициентам, являются С1, С2, С3, С4, С5 и С6, и для положений «d», «h» и «l» субпикселей шестью положениями целочисленных пикселей, соответствующими коэффициентам, являются A3, B3, C3, D3, E3 и F3. Эти положения целочисленных пикселей представляют «поддержку фильтра» интерполяционного фильтра.
Узел 32 предсказания может интерполировать 2D положения «e», «f», «g», «i», «j», «k», «m», «n» и «o» субпикселей, используя 2D интерполяционный фильтр размерности 6×6, который требует тридцать шесть коэффициентов фильтра. Каждый из тридцати шести коэффициентов 2D интерполяционного фильтра размерности 6×6, используемого для интерполяции 2D субпикселя, соответствует положениям A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 и F1-F6 целочисленных пикселей. Эти положения целочисленных пикселей представляют «поддержку фильтра» интерполяционного фильтра. Если не накладывается дополнительного ограничения, например, нет симметрии коэффициентов или пикселей, видеокодер 50 может кодировать и передавать девять наборов из тридцати шести коэффициентов для 2D положений субпикселей и шесть наборов из шести коэффициентов для 1D положений субпикселей, в целом 360 коэффициентов. Кодирование и посылка такого количества коэффициентов в битовом потоке видео может приводить к дорогостоящим непроизводительным потерям битов. Высокие непроизводительные потери битов, в свою очередь, могут увеличивать скорость передачи битов для данного уровня искажений, что является нежелательным.
Чтобы уменьшить непроизводительные потери битов, связанные с посылкой коэффициентов фильтра, могут налагаться определенные ограничения симметрии на интерполяционные фильтры для снижения количества уникальных коэффициентов фильтра, которые необходимо посылать на декодер 28. Может налагаться два типа симметрии, т.е. симметрия пикселей и симметрия коэффициентов, отдельно или в комбинации. Симметрия пикселей приводит к использованию одного и того же набора коэффициентов фильтра (и зеркально отображаемых, перевернутых и/или повернутых версий набора) для разных положений субпикселей. Симметрия пикселей также может упоминаться как симметрия субпикселей в той мере, как симметрия пикселей применяется в отношении коэффициентов фильтра, ассоциированных с двумя или более местоположениями субпикселей. Симметрия коэффициентов, с другой стороны, приводит в исполнение то, что данный интерполяционный фильтр является симметричным в некотором направлении (например, в горизонтальном направлении, вертикальном направлении или в обоих) для различных положений поддержки фильтра относительно других положений поддержки фильтра для данных интерполируемых значений субпикселей.
Симметрия пикселей может использоваться в NS-AIF. Ссылаясь снова на фиг.3, пусть будет набором коэффициентов фильтра для положения «а» субпикселя, тогда набор коэффициентов фильтра для положения «с» субпикселя равен , т.е. этот же коэффициент в обратном порядке или горизонтально перевернутый. Т.е. значение p a пикселя предсказания в положении «а» субпикселя и значение p c пикселя предсказания в положении «с» субпикселя могут быть вычислены с использованием (8) и (9) соответственно.
Положения «d» и «l» субпикселей могут интерполироваться с использованием одного и того же набора коэффициентов интерполяционного фильтра в качестве положений «а» и «с» субпикселей соответственно. По существу, положения «а» и «с» субпикселей могут иметь симметрию пикселей относительно положений «d» и «l» субпикселей.
Одним аспектом данного раскрытия является фактическое устранение симметрии пикселей между положениями «а» и «с» субпикселей относительно положений «d» и «l» субпикселей. Кроме того, можно избежать симметрии пикселей для положения «f» субпикселя относительно положения «i» субпикселя. Кроме того, можно избежать симметрии пикселей для положения «k» субпикселя относительно положения «n» субпикселя. В таких случаях диагональная корреляция может быть низкой, делая ее недостаточной или неэффективной для наложения диагональной симметрии в этих случаях.
В качестве другого примера, пусть будет набором 6×6 2D коэффициентов фильтра для положения «е» субпикселя. Тогда набор коэффициентов фильтра для положения «g» равен (горизонтально перевернутая версия). Аналогично, набор коэффициентов фильтра для положения «m» субпикселя равен (вертикально перевернутая версия), и набор коэффициентов фильтра для положения «о» субпикселя равен (сначала горизонтально перевернутый и затем вертикально перевернутый). По существу, положения «e», «g», «m» и «o» субпикселей имеют симметрию пикселей. Симметрия между положениями «b» и «h» субпикселей и между положениями «f», «i», «k» и «n» налагается подобным образом в качестве примеров, приведенных выше. При таком ограничении симметрии пикселей остается только пять групп уникальных наборов фильтра, первый набор коэффициентов фильтра для группы «а», «c», «d» и «l» субпикселей, второй набор коэффициентов фильтра для группы «b» и «h» субпикселей, третий набор коэффициентов фильтра для группы «c», «g», «m» и «o» субпикселей, четвертый набор коэффициентов фильтра для группы «f», «i», «k» и «n» и пятый набор коэффициентов фильтра для группы «j» субпикселя.
Кроме того, NS-AIF может налагать ограничение симметрии коэффициентов на некоторые из этих наборов фильтра, отдельно или в комбинации с симметрией субпикселей, описанной выше. В некоторых случаях можно преднамеренно избегать диагональной симметрии коэффициентов, например, устраняя любые ограничения диагональной симметрии коэффициентов. В одном случае, симметрия коэффициентов не налагается на фильтр для первой группы положений субпикселей, которая включает в себя местоположения «а», «с», «d» и «l» субпикселей. Однако вторая группа положений субпикселей, которая включает в себя коэффициент «b» и «h», может иметь симметрию коэффициентов в соответствии с уравнением (10).
Аналогично, коэффициенты для интерполяционных фильтров для третьей, четвертой и пятой группы положений субпикселей, которые включают в себя положения «е», «f» и «j» субпикселей, соответственно, могут иметь симметрию коэффициентов, как приведено в уравнениях (11), (12) и (13), соответственно.
При таких ограничениях симметрии пикселей и симметрии коэффициентов, описанных выше, количество уникальных коэффициентов фильтра может быть уменьшено с 360 (нет ограничения симметрии) до 6(а)+3(b)+21(e)+18(f)+6(j)=54 коэффициентов, т.е. 6 коэффициентов для группы, включающей в себя положение «а» субпикселя, 3 коэффициента для группы, включающей в себя положение «b» субпикселя, 21 коэффициент для группы, включающей в себя положение «е» субпикселя, 18 коэффициентов для группы, включающей в себя положение «f» субпикселя, и 6 коэффициентов для группы, включающей в себя положение «j» субпикселя. Таким образом, в NS-AIF видеокодер 22 может кодировать и передавать пятьдесят четыре коэффициента вместо 360, как в случае отсутствия ограничений симметрии. Как описано выше, пятьдесят четыре коэффициента могут аналитически решаться на основе уравнения (7) выше. Видеокодер 50 затем может предсказывать, квантовать, кодировать (например, используя экспоненциальный код Голомба со знаком) и посылать коэффициенты в битовом потоке. Дополнительные подробности кодирования с предсказанием коэффициентов фильтра описываются более подробно ниже. Узел 41 предсказания и квантования коэффициентов может использоваться для кодирования с предсказанием и квантования коэффициентов фильтра в соответствии с данным раскрытием.
В другой схеме AIF, т.е. S-AIF, узел 32 предсказания может использовать разделимые интерполяционные фильтры по горизонтальному направлению и по вертикальному направлению вместо неразделимых интерполяционных фильтров, используемых в NS-AIF. Для 1D положений субпикселей узел 32 предсказания (например, MC-узел 37 узла 32 предсказания) применяет только горизонтальные направленные фильтры или только вертикальные направленные фильтры в зависимости от местоположения субпикселя. В одном примере горизонтальные и вертикальные направленные фильтры содержат 6-позиционные (или 6-отводные) фильтры. Узел 32 предсказания применяет горизонтальные направленные фильтры для положений «а», «b» и «с» субпикселей с положениями С1, С2, С3, С4, С5 и С6 целочисленных пикселей (смотрите фиг.3) в качестве поддержки фильтра и применяет вертикальные направленные фильтры для положений «d», «h» и «i» субпикселей с положениями A3, B3, C3, D3, E3 и F3 целочисленных пикселей (смотрите фиг.3) в качестве поддержки фильтра. Для остальных положений субпикселей, т.е. 2D положений субпикселей, узел 32 предсказания применяет сначала горизонтальную фильтрацию, за которой следует вертикальная фильтрация, или вертикальную фильтрацию, за которой следует горизонтальная фильтрация. Снова, коэффициенты фильтра, используемые для разделяемых горизонтальных и вертикальных фильтров, могут вычисляться в соответствии с уравнением (7) выше. Без какой-либо симметрии S-AIF может уменьшить количество коэффициентов, которые требуются для кодирования, и посылать 144 коэффициента из 360 коэффициентов, как в случае NS-AIF без симметрии.
S-AIF может дополнительно налагать одно или несколько ограничений симметрии на по меньшей мере некоторые интерполяционные фильтры. В отличие от симметрии субпикселей NS-AIF, с S-AIF наборы фильтра, используемые для положений «а» и «с» субпикселей, не являются симметричными, т.е. горизонтально перевернутыми версиями друг друга. Вместо этого, коэффициенты наборов фильтра, используемых для положений «а» и «с» субпикселей, выводятся независимо друг от друга как и , соответственно. Для каждого положения субпикселя, которое имеет вертикальное движение, симметрия субпикселей подобна NS-AIF. Т.е. коэффициенты для положений «d» и «l» субпикселей, коэффициенты для положений «е» и «m» субпикселей, коэффициенты для положений «f» и «n» субпикселей и коэффициенты для положений «g» и «о» субпикселей представляют собой вертикально перевернутые версии друг друга, соответственно. Например, если коэффициенты вертикального фильтра для положения «d» субпикселя равны , тогда коэффициенты вертикального фильтра для положения «l» субпикселя равны . Таким образом, симметрия субпикселей, используемая в S-AIF, имеет только вертикальную симметрию субпикселей по одной размерности. S-AIF не имеет, однако, горизонтальной симметрии субпикселей. Симметрия субпикселей в S-AIF может уменьшить количество коэффициентов, которые необходимы для кодирования и посылки, с 144 коэффициентов до 102 коэффициентов.
S-AIF, подобно NS-AIF, также может использовать симметрию коэффициентов для дополнительного уменьшения количества коэффициентов, которые необходимы для кодирования и посылки видеокодером 50. Симметрия коэффициентов, используемая в S-AIF, может быть такой же, что и в NS-AIF, за исключением того, что в S-AIF имеются только 1D (горизонтальные или вертикальные) 6-отводные фильтры. Другими словами, нет 2D фильтров размерности 6×6. В S-AIF для каждого положения SP, SP∈{b,h,i,j,k}, субпикселя коэффициенты фильтра могут иметь симметрию, как указано в уравнении (14).
Поэтому, как с симметрией субпикселей, так и с симметрией коэффициентов, фильтры S-AIF могут иметь одиннадцать наборов уникальных 1D 6-отводных фильтров, пять из которых являются симметричными фильтрами, каждый из которых имеет три уникальных коэффициента. Каждый из остальных шести фильтров может иметь шесть уникальных коэффициентов. В этом случае, видеокодер 22 может квантовать, предсказывать, кодировать и посылать в сумме пятьдесят один уникальный коэффициент фильтра в битовом потоке видео.
В другой схеме AIF, D-AIF, узел 32 предсказания использует направленные фильтры для 2D положений «e», «f», «g», «i», «j», «k», «m», «n» и «o» субпикселей. Направленные фильтры могут содержать шестиотводные фильтры, и коэффициенты могут иметь симметрию, так что необходимо передавать только поднабор коэффициентов. Как описано в данном документе, поддержка фильтра ссылается на положения пикселя из опорного кадра, который используется при интерполяции положений субпикселей. MC-узел 37 может вычислять положения «е» и «о» субпикселей при помощи 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. С точки зрения симметрии субпикселей имеется пять уникальных наборов коэффициентов фильтра для интерполяции пятнадцати положений субпикселей, причем положения «а», «с», «d» и «l» субпикселей совместно используют одинаковые коэффициенты фильтра (например, зеркально отраженные, перевернутые и/или повернутые версии), положения «е», «g», «m» и «о» субпикселей совместно используют одинаковые коэффициенты фильтра (например, зеркально отраженные, перевернутые и/или повернутые версии), положения «b» и «h» субпикселей совместно используют одинаковые коэффициенты фильтра («b» представляет собой горизонтальный фильтр, и «h» представляет собой вертикальный фильтр), положения «f», «i», «k» и «n» субпикселей совместно используют одинаковые коэффициенты фильтра (например, зеркально отраженные, перевернутые и/или повернутые версии), и положение «j» субпикселя имеет свой собственный набор коэффициентов фильтра.
С точки зрения симметрии коэффициентов, коэффициенты фильтра для первой группы субпикселей, включающей в себя «а», «с», «d» и «l», используют 1D 6-позиционный фильтр, имеющий шесть уникальных коэффициентов (т.е. первая группа является несимметричной), коэффициенты фильтра для второй группы «b» и «h» субпикселей используют 1D 6-позиционный фильтр, имеющий три уникальных коэффициента (т.е. b является симметричным), и третий набор коэффициентов фильтра для группы «е», «g», «m» и «о» субпикселей использует направленный 6-позиционный фильтр, имеющий шесть уникальных коэффициентов. Четвертый набор коэффициентов фильтра для группы «f», «i», «k» и «n» использует 12-отводный фильтр, имеющий 6 уникальных коэффициентов, и пятый набор коэффициентов фильтра для группы «j», имеющей три уникальных коэффициента. Общее количество уникальных коэффициентов в схеме D-AIF составляет 6(а)+3(b)+6(е)+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 и могут включать в себя четыре положения С3, С4, D3 и D4 целочисленных пикселей, окружающие девять значений полупэлов и четвертьпэлов, и восемь положений B3, B4, C2, C5, D2, D5, E3 и E4 целочисленных пикселей, окружающих четыре положения целочисленных пикселей. Каждое из положений поддержки фильтра в двумерном массиве положений поддержки фильтра, показанных на фиг.4, находится в двух положениях целочисленных пикселей относительно положений субпикселей. Такая фильтрация может образовывать часть компенсации движения во время процесса видеокодирования посредством видеокодера 50 (фиг.2) или во время процесса видеодекодирования видеодекодером 60 (фиг.16). Во время процесса видеокодирования узел 32 предсказания направляет множество наборов значений коэффициентов на узел 46 энтропийного кодирования как часть элементов синтаксиса предсказания. Как показано на фиг.4, набор из двенадцати или более положений целочисленных пикселей, которые окружают положения субпикселей, имеет радиальную форму и может содержать набор пространственно ближайших положений целочисленных пикселей к девяти значениям полупэла и четвертьпэла, определенных интерполяционным фильтром (например, фильтром(ами) 39 на фиг.2).
Узел 46 энтропийного кодирования может кодировать наборы значений коэффициентов и выводить значения коэффициентов интерполяционного фильтра как часть кодированного битового потока, который затем может передаваться на другое устройство. Каждый из множества наборов значений коэффициентов, определенных в отношении каждого разного местоположения субпикселя, показанных на фиг.4, может определять разные взвешивания для двенадцати или более положений целочисленных пикселей. Симметрия пикселей может существовать, так что М наборов значений коэффициентов определяют N разных взвешиваний для двенадцати или более положений целочисленных пикселей, причем M и N представляют собой положительные целые числа, и N больше M. Другими словами, симметрия пикселей может позволять некоторым местоположениям пикселей основываться на зеркально отраженных, инвертированных или повернутых взвешиваниях других местоположений пикселей, так что нет необходимости кодировать коэффициенты для местоположений, которые имеют симметрию пикселей с другими местоположениями субпикселей.
Фиг.5 представляет собой концептуальную схему, иллюстрирующую горизонтальную шестипиксельную поддержку фильтра в отношении трех горизонтальных местоположений субпикселей и вертикальную шестипиксельную поддержку фильтра в отношении трех вертикальных местоположений субпикселей. Местоположения поддержки фильтра заштрихованы с прописными буквами, и местоположения субпикселей не заштрихованы и со строчными буквами и пунктирными линиями. MC-узел 37 может вычислять значения субпикселей для местоположений «а», «b» и «с» посредством применения линейного интерполяционного фильтра, который определяет одномерный массив положений С1-С6 поддержки фильтра. MC-узел 37 также может вычислять значения субпикселей для местоположений «d», «h» и «l» посредством применения линейного интерполяционного фильтра, который определяет одномерный массив положений A3-F3 поддержки фильтра. Таким образом, линейные интерполяционные фильтры могут использоваться для шести из пятнадцати значений полупэла и четвертьпэла, показанных на фиг.3.
Фиг.6 представляет собой концептуальную схему, иллюстрирующую поддержку фильтра размерности пять пикселей на пять пикселей для фильтрации местоположения целочисленного пикселя. В данном случае, подобная интерполяции фильтрация может применяться в отношении местоположений целочисленных пикселей, чтобы генерировать откорректированные значения целочисленных пикселей. На фиг.6, например, значение целочисленного пикселя в положении С3 может фильтроваться на основе массива пять на пять пикселей А1-А5, В1-В5, С1-С5, D1-D5 и Е1-Е5. Другие поддержки фильтра могут определяться для целочисленной фильтрации. В данном случае, если ME-узел 35 идентифицирует блок целочисленных пикселей, MC-узел 37 может фильтровать каждый пиксель, основываясь на массиве пять на пять пикселей, показанном на фиг.6, (или другой поддержке фильтра) для генерирования фильтрованных значений целочисленных пикселей. Таким образом, подобная интерполяции фильтрация может применяться к целочисленным пикселям, которая может улучшать кодирование в моменты изменения освещенности или введений или выведений сцены. Кроме того, целочисленная фильтрация может удалять шум и способствовать повышению резкости кадра изображения и может способствовать улучшению кодирования движения мелких предметов между последовательными видеокадрами особенно тогда, когда симметрия не накладывается на коэффициенты фильтра. Фильтрация целочисленных пэл также может быть очень полезной при улучшении качества и/или сжатия для видеопоследовательностей, которые имеют изменения фокуса.
Таким образом, видеокодер 22 и/или видеодекодер 28 могут использовать подобную интерполяции фильтрацию в отношении положений целочисленных пикселей, чтобы генерировать откорректированные значения целочисленных пикселей. Видеокодер 22 или видеодекодер 28, например, могут получать блоки пикселей, причем блоки пикселей включают в себя значения целочисленных пикселей, соответствующие положениям целочисленных пикселей в блоке пикселей. Видеокодер 22 или видеодекодер 28 могут фильтровать значения целочисленных пикселей, основываясь на значениях других целочисленных пикселей в блоках пикселей для генерирования откорректированных значений целочисленных пикселей, причем откорректированные значения целочисленных пикселей соответствуют положениям целочисленных пикселей, и генерировать блок предсказания, основываясь на откорректированных значениях целочисленных пикселей. Блок предсказания затем может использоваться для кодирования или декодирования видеоблока в зависимости от того, выполняется ли процесс во время кодирования или декодирования.
Если метод выполняется во время процесса кодирования, видеокодер 22 может генерировать остаточный видеоблок как разность между текущим кодируемым видеоблоком и блоком предсказания. Видеокодер 22 также может кодировать один набор коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации, или, возможно, кодировать два или более набора коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в кодированной единице. В примере на фиг.6 поддержки фильтра для целочисленной фильтрации могут определять двумерный фильтр, например фильтр размерности 5×5 со смещением. Кроме того, симметрия коэффициентов может существовать между по меньшей мере некоторыми коэффициентами, используемыми для фильтрации, так что только поднабор из 25 разных коэффициентов необходим для определения всех 25 коэффициентов для фильтра. Могут использоваться многие другие размеры и формы фильтры в соответствии с фильтрацией целочисленных пэлов.
Если фильтрация целочисленных пэлов выполняется во время процесса декодирования, метод может содержать генерирование восстановленного видеоблока как сумму остаточного видеоблока, ассоциированного с текущим декодируемым видеоблоком, и блока предсказания. В данном случае, устройство декодирования (например, устройство 16 назначения) может принимать один набор коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации, или может принимать два или более наборов коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в кодированной единице. Каждая кодированная единица может иметь один или несколько наборов коэффициентов фильтрации целочисленных пэлов, а также наборы коэффициентов фильтрации субпэлов, например восемь наборов, которые могут использоваться для генерирования всех пятнадцати наборов для положений полупэлов и четвертьпэлов.
Снова, подобная интерполяции фильтрация значений целочисленных пикселей может улучшать сжатие особенно во время изменений освещенности, введений или выведений сцены, может удалять шум и способствовать повышению резкости кадра изображения и может способствовать улучшению кодирования движения мелких объектов между последовательными видеокадрами особенно тогда, когда симметрия на налагается на коэффициенты фильтра. Кроме того, фильтрация целочисленных пэлов, как было обнаружено, является очень полезной, например, для улучшения сжатия, в видеопоследовательностях, которые имеют изменения фокуса.
Обычно подобная интерполяции фильтрация не выполняется для положений целочисленных пикселей в AIF. Вместо этого, соответствующее положение целочисленного пикселя в опорном кадре просто используется «как есть». Однако в соответствии с данным раскрытием фильтр может использоваться для местоположений целочисленных пикселей таким образом, который подобен интерполяциям. Интерполяционная фильтрация по положениям целочисленных пикселей технически представляет собой неправильное употребление термина, так как значения пикселей положений целочисленных пикселей уже существуют. Таким образом, фильтрация положений целочисленных пикселей упоминается в данном документе как подобная интерполяции фильтрация и может рассматриваться как просто фильтрация значений целочисленных пикселей для генерирования новых откорректированных значений пикселей.
В отличие от интерполяционной фильтрации для положений субпикселей, где целью является получение несуществующих значений в опорном кадре, пиксели в целочисленных положениях в опорном кадре уже существуют. Все же, применение фильтрации к положениям целочисленных пикселей в опорном кадре предоставляет несколько преимуществ. Например, когда положения целочисленных пикселей содержат смещение, фильтрация положений целочисленных пикселей может позволять выполнять лучший захват изменений освещенности между кадрами. Кроме того, фильтрация по положениям целочисленных пикселей может позволять положениям целочисленных пикселей захватывать специальные эффекты, такие как введение и выведение изображения. Фильтрация по положениям целочисленных пикселей также может удалять некоторые шумы сигналов (такие как шум камеры) и/или выполнять повышение резкости, если необходимо. Кроме того, если не налагается симметрия на фильтр целочисленных пикселей, фильтр целочисленных пикселей может способствовать захвату движения мелких объектов, такого как движение объекта, которое не является кратным четверти пикселя. Наконец, фильтрация целочисленных пикселей также может быть полезной при улучшении сжатия видеопоследовательностей, когда происходит изменение фокуса.
В некоторых случаях интерполяционная фильтрация положений целочисленных пикселей может зависеть от векторов движения. Другими словами, MC-узел 37 узла 32 предсказания может адаптивно применять интерполяционную фильтрацию, основываясь на векторе движения, идентифицированном ME-узлом 35. Например, интерполяционная фильтрация положений целочисленных пикселей может выполняться тогда, когда вектор движения указывает на положение целочисленного пикселя. Интерполяционная фильтрация может приводить к откорректированному значению пикселя для положения целочисленного пикселя. Если вектор движения указывает на положение субпикселя, не выполняется фильтрация положений целочисленных пикселей в отношении значений целочисленных пикселей, но фильтрация может использоваться для интерполяции значений субпикселей. Таким образом, фильтрация целочисленных пикселей может рассматриваться адаптивной, основываясь на векторах движения.
Для положений целочисленных пикселей 5×5 интерполяционный фильтр в виде уравнения (15) может выводиться с использованием такого же аналитического процесса, что и используемый для вывода фильтров положений субпикселей.
,
где pFP представляет собой фильтрованное значение целочисленного пикселя, Pi,j представляет собой значение целочисленного пикселя в положении (i,j), hFP i,j представляет собой коэффициент для положения (i,j), и oFP представляет собой смещение фильтра. В некоторых случаях интерполяционный фильтр для положений целочисленных пикселей может не иметь смещение фильтра (т.е. oFP=0). В других случаях, смещение oFP фильтра может использовать любой из нескольких методов. Разные смещения могут определяться для каждого положения субпикселя, например пятнадцать разных смещений может определяться для каждого положения субпикселя, показанного на фиг.3. Другое смещение может определяться для целочисленных пикселей, доводя общее количество смещений до шестнадцати. Одновременно рассматриваемая и принадлежащая одному и тому же правообладателю заявка на патент США № _________, поданная Karczewicz et al и озаглавленная «OFFSETS AT SUB-PIXEL RESOLUTION», имеющая номер дела 081399U2, которая была подана в этот же день, что и настоящая заявка, и которая включена в данный документ по ссылке, обеспечивает многочисленные дополнительные подробности по использованию многих смещений для разных местоположений пикселей и субпикселей.
Чтобы уменьшить количество передаваемых коэффициентов фильтра, симметрия коэффициентов как в уравнении (16) может налагаться на фильтр целочисленных пикселей.
Также могут использоваться другие виды симметрии коэффициентов. Налагается ли симметрия коэффициентов, может быть определено кодером и передано декодеру. Если симметрия как в (16) используется в фильтре целочисленных пикселей, тогда 9 коэффициентов фильтра и 1 смещение могут потребоваться для посылки на декодер.
Кодирование смещений может выполняться сначала кодированием целочисленного смещения и затем кодированием каждого дробного смещения. В данном случае целочисленное смещение и дробные смещения кодируются по-разному. Целочисленное смещение может кодироваться с использованием экспоненциального кода Голомба со знаком. В зависимости от величины целочисленного смещения, дробные смещения могут квантоваться иначе, чем целочисленное смещение. Например, более грубые уровни квантования могут применяться к дробным смещениям, когда целочисленное смещение имеет большую величину. После квантования дробные смещения могут кодироваться с использованием кодов фиксированной длины. В качестве примера, следующий псевдокод может иллюстрировать, как данное дробное смещение может кодироваться с использованием разных кодов фиксированной длины, определенных на основе значения целочисленного смещения.
Пусть offsetI будет целочисленным смещением
Пусть offsetF будет дробным смещением
Пусть offsetFbits будет количеством битов, использованных для квантования offsetF
Пусть abs(a) будет абсолютным значением a
В данном случае видеокодер 50 может использовать узел 41 предсказания и квантования коэффициентов, который для каждого значения смещения назначает первое количество битов целочисленной части данного значения смещения и назначает второе количество битов дробной части данного значения смещения, причем первое и второе количество битов определяются на основе величины целочисленной части. В данном случае квантованные версии значений смещения могут направляться от узла 32 предсказания, так как элементы синтаксиса предсказания после квантования значений смещения выполняются согласующимися с псевдокодом выше. В любом случае, видеокодер 50 может кодировать первое количество битов иначе, чем второе количество битов.
Фиг.7 представляет собой концептуальную схему, иллюстрирующую четыре положения целочисленных пикселей и пятнадцать положений субпикселей со штриховкой, группируя положения пикселей, которые могут использовать симметрию пикселей для коэффициентов фильтра, согласующихся с данным раскрытием. В частности, фиг.7 иллюстрирует положения «а»-«о» субпикселей, соответствующие положению С3 целочисленного пикселя. Положения субцелочисленных пикселей, показанные на фиг.7, соответствуют положениям на фиг.4 и 5. Т.е. местоположения «e», «f», «g», «i», «j», «k», «m», «n» и «o» субпикселей могут иметь значения, определенные двенадцатипиксельной поддержкой, как показано на фиг.4, тогда как местоположения «а», «b» и «с» субпикселей и местоположения «d», «h» и «l» субпикселей могут иметь значения, определенные горизонтальными и линейными поддержками пикселей, показанными на фиг.5.
В данном сценарии может налагаться симметрия пикселей, так что коэффициенты фильтра для местоположения «а» пикселя симметричны в отношении коэффициентов фильтра для местоположения «с» пикселя. Аналогично, может налагаться симметрия пикселей, так что коэффициенты фильтра для местоположения «d» пикселя симметричны в отношении коэффициентов фильтра для местоположения «l» пикселя. Может налагаться симметрия пикселей, так что коэффициенты фильтра для местоположения «е» пикселя симметричны в отношении коэффициентов фильтра для местоположений «g», «m» и «о» пикселей, и может налагаться симметрия пикселей, так что коэффициенты фильтра для местоположения «i» пикселя симметричны в отношении коэффициентов фильтра для местоположений «k» пикселей, и может налагаться симметрия пикселей, так что коэффициенты фильтра для местоположения «f» пикселя симметричны в отношении коэффициентов фильтра для местоположений «n» пикселей. Поэтому только восемь наборов значений коэффициентов могут потребоваться для передачи в виде части битового потока видео, чтобы декодер смог генерировать полные наборы значений коэффициентов для всех пятнадцати местоположений пикселей. Кроме того, для любого данного набора коэффициентов симметрия коэффициентов может сделать возможным пересылку только поднабора значений коэффициентов, и декодер может генерировать полный набор значений коэффициентов для данного местоположения пикселя, основываясь на поднаборе и симметрии коэффициентов.
Одним аспектом данного раскрытия является фактическое устранение любой симметрии пикселей между положениями «а» и «с» субпикселей относительно положений «d» и «l» субпикселей. Кроме того, можно избежать симметрии пикселей для положения «f» субпикселя относительно положения «i» субпикселя. Кроме того, можно избежать симметрии пикселей для положения «k» субпикселя относительно положения «n» субпикселя. В таких случаях диагональная корреляция может быть низкой, делая ее неэффективной или недостаточной для наложения диагональной симметрии. Таким образом, восемь наборов коэффициентов, используемых для генерирования всех пятнадцати наборов коэффициентов, могут представлять собой больший набор, чем у некоторых обычных методов, насколько исключается симметрия по диагональной размерности для некоторых местоположений пикселей. В некоторых случаях, диагональная симметрия пикселей и диагональная симметрия коэффициентов может исключаться или устраняться, чтобы учитывать расхождение в вертикальных размерах.
Ссылаясь снова на фиг.1, видеокодер 22 может определять восемь наборов коэффициентов фильтра и использовать восемь наборов коэффициентов фильтра для генерирования всех пятнадцати наборов коэффициентов фильтра, соответствующих пятнадцати разным местоположениям субпикселей, основываясь на симметрии коэффициентов и симметрии пикселей, и выводить восемь наборов коэффициентов фильтра в виде части кодированного битового потока. Восемь наборов коэффициентов фильтра могут выводиться для каждой кодированной единицы кодированного битового потока, или, возможно, несколько экземпляров восьми наборов коэффициентов фильтра могут выводиться для разных областей кодированной единицы.
Пятнадцать наборов соответствуют каждому расположению субпикселя из полупэла и четвертьпэла, показанному на фиг.3, и восемь наборов, симметрия коэффициентов и симметрия пикселей определяют поддержки фильтра для каждого местоположения субпикселя из полупэла или четвертьпэла. Видеодекодер 28 устройства 16 назначения может принимать восемь наборов коэффициентов фильтра в виде части кодированного битового потока видео, генерировать пятнадцать наборов коэффициентов фильтра, соответствующих пятнадцати разным местоположениям субпикселей, основываясь на восьми наборах коэффициентов фильтра, генерировать интерполированные данные предсказания для видеодекодирования, основываясь на одном из пятнадцати наборов коэффициентов фильтра, причем интерполированные данные предсказания соответствуют одному из пятнадцати разных местоположений субпикселей, и декодировать один или несколько видеоблоков, основываясь на интерполированных данных предсказания.
По меньшей мере некоторые из восьми наборов коэффициентов фильтра могут иметь симметрию коэффициентов, так что данный набор с симметрией коэффициентов содержит поднабор коэффициентов фильтра, ассоциированный с поддержкой фильтра для данного местоположения субпикселя, ассоциированного с данным набором. Таким образом, видеодекодер 28 может генерировать пятнадцать наборов коэффициентов фильтра, основываясь, по меньшей мере частично, на симметрии пикселей между двумя или более разными местоположениями субпикселей. Кроме того, видеодекодер 28 может генерировать пятнадцать наборов коэффициентов фильтра, основываясь, по меньшей мере частично, на симметрии пикселей между двумя или более разными местоположениями субпикселей, и основываясь, по меньшей мере частично, на симметрии коэффициентов, определенной для данного набора, так что данный набор с симметрией коэффициентов содержит поднабор коэффициентов фильтра, ассоциированный с поддержкой фильтра для данного местоположения субпикселя, ассоциированного с данным набором.
Снова, пятнадцать наборов могут соответствовать каждому расположению субпикселя из полупэла и четвертьпэла. Симметрия пикселей может существовать между разными наборами из пятнадцати наборов коэффициентов фильтра по вертикальной размерности и по горизонтальной размерности, но симметрия пикселей не существует по диагональной размерности для по меньшей мере некоторых из пятнадцати наборов коэффициентов фильтра. Как объяснено более подробно ниже, два из восьми наборов могут определять три из пятнадцати наборов для горизонтальной поддержки фильтра, два из восьми наборов могут определять три из пятнадцати наборов для вертикальной поддержки фильтра, и четыре из восьми наборов могут определять девять из пятнадцати наборов для двумерной поддержки фильтра. Двумерная поддержка может содержать полезную 12-позиционную поддержку фильтра, окружающую положения субпикселей в радиальной форме.
Конкретно, интерполированные данные предсказания могут содержать пятнадцать значений полупэла и четвертьпэла, например, показанные на фиг.7, причем интерполяционный фильтр определяет двумерный массив из двенадцати положений поддержки фильтра, например, показанных на фиг.4, которые применяются для определения девяти из пятнадцати значений полупэла и четвертьпэла и, например, также показаны на фиг.4. Генерирование интерполированных данных предсказания может дополнительно содержать применение линейных интерполяционных фильтров, которые определяют одномерные массивы положений поддержки фильтра для шести из пятнадцати значений полупэла и четвертьпэла, например, как показано на фиг.5.
Горизонтальная симметрия и отсутствие диагональной симметрии можно видеть в отношении положений «а» и «с» субпикселей или в отношении положений «i» и «k» субпикселей. В данном случае, положения «а» и «с» субцелочисленных пикселей являются симметричными по горизонтальной оси Х, но симметрии не существует по диагональной оси для этих пикселей, так что местоположения «d» и «l» субпикселей не являются симметричными в отношении положений «а» и «с» субпикселей, соответственно. Аналогично, положения «i» и «k» субпикселей являются симметричными по горизонтальной оси Х, но симметрии не существует по диагональной оси для этих пикселей, так что местоположения «f» и «n» субпикселей не являются симметричными в отношении положений «i» и «k» субпикселей, соответственно.
Симметрия пикселей означает, что первый набор коэффициентов в отношении первого положения субпикселя является симметричным относительно второго набора коэффициентов в отношении второго положения субпикселя. Например, местоположение «а» пикселя имеет симметрию пикселей в отношении местоположения «с» пикселя, и местоположение «d» пикселя имеет симметрию пикселей в отношении местоположения «l» пикселя. Местоположение «f» пикселя имеет симметрию пикселей в отношении местоположения «n» пикселя, и местоположение «i» пикселя имеет симметрию пикселей в отношении местоположения «k» пикселя. Местоположение «е» пикселя имеет симметрию пикселей в отношении местоположений «g», «m» и «о» пикселей. Штриховка, показанная на фиг.7, демонстрирует симметрию пикселей, например, общая штриховка соответствует местоположениям пикселей, которые являются симметричными в отношении других местоположений пикселей. В данном случае, коэффициенты для восьми местоположений пикселей (вместе с аспектами симметрии пикселей) могут определять коэффициенты для всех пятнадцати местоположений пикселей. Кроме того, в данном наборе коэффициентов может существовать симметрия коэффициентов, так что только поднабор коэффициентов в этом наборе коэффициентов необходимо передавать с битовым потоком.
Видеокодер 22 может генерировать кодированные видеоданные, основываясь на интерполированных данных предсказания, причем интерполированные данные предсказания содержат пятнадцать значений полупэла и четвертьпэла, причем интерполяционный фильтр определяет двумерный массив из двенадцати положений поддержки фильтра, которые применяются для определения девяти из пятнадцати значений полупэла и четвертьпэла. Генерирование кодированных видеоданных, основываясь на интерполированных данных предсказания, может дополнительно содержать применение линейных интерполяционных фильтров, которые определяют одномерные массивы положений поддержки фильтра для шести из пятнадцати значений полупэла и четвертьпэла.
Фиг.8 представляет собой концептуальную схему, иллюстрирующую шесть горизонтальных линейных положений С1-С6 пикселей поддержки относительно положения «b» субпикселя со штриховкой, которая показывает симметрию коэффициентов. В данном случае, симметрия коэффициентов означает, что только три коэффициента фильтра необходимы для С1, С2 и С3, чтобы определить весь набор коэффициентов для положений С1-С6 поддержки фильтра. С1 является симметричным с С6, С2 является симметричным с С5 и С3 является симметричным с С4. Таким образом, только три коэффициента необходимо передать в виде части кодированного битового потока видео, чтобы определить набор из шести коэффициентов, необходимых для интерполяции положения «b» субпикселя.
Фиг.9 представляет собой концептуальную схему, иллюстрирующую шесть горизонтальных линейных положений пикселей поддержки относительно субпикселя со штриховкой, которая показывает отсутствие какой-либо симметрии коэффициентов. Таким образом, все шесть коэффициентов необходимы для определения набора коэффициентов для поддержки фильтра в отношении положения «а» субпикселя. Как отмечено выше, однако, симметрия пикселей означает, что эти одинаковые коэффициенты в отношении положения «а» субпикселя также могут использоваться для выведения поддержки фильтра для положения «с» субпикселя (смотрите фиг.7). Таким образом, только шесть коэффициентов необходимы для передачи в качестве части кодированного битового потока видео, чтобы определить два разных набора из шести коэффициентов, необходимых для интерполяции положения «а» и «с» субпикселя.
Фиг.10 представляет собой концептуальную схему, иллюстрирующую шесть вертикальных линейных положений A3, B3, C3, D3, E3 и F3 пикселей поддержки относительно субпикселя «h» со штриховкой, которая показывает симметрию коэффициентов. В данном случае симметрия коэффициентов означает, что только три коэффициента фильтра необходимы для A3, B3 и C3, чтобы определить весь набор коэффициентов для положений A3, B3, C3, D3, E3 и F3 поддержки фильтра. А3 является симметричным с F3, В3 является симметричным с Е3 и С3 является симметричным с D3. Таким образом, только три коэффициента необходимо передать в качестве части кодированного битового потока видео, чтобы определить набор из шести коэффициентов, необходимых для интерполяции положения «h» субпикселя.
Фиг.11 представляет собой концептуальную схему, иллюстрирующую шесть вертикальных линейных положений пикселей поддержки относительно субпикселя со штриховкой, которая показывает отсутствие какой-либо симметрии коэффициентов. Таким образом, все шесть коэффициентов необходимы для определения набора коэффициентов для поддержки фильтра в отношении положения «d» субпикселя. Как отмечено выше, однако, симметрия пикселей означает, что эти одинаковые коэффициенты в отношении положения «d» субпикселя также могут использоваться для выведения поддержки фильтра для положения «l» субпикселя (смотрите фиг.7). Таким образом, только шесть коэффициентов необходимы для передачи в качестве части кодированного битового потока видео для определения двух разных наборов из шести коэффициентов, необходимых для интерполяции положения «d» и «l» субпикселя.
Фиг.12 представляет собой концептуальную схему, иллюстрирующую двенадцать двумерных положений пикселей поддержки (положения целочисленных пикселей показаны с прописными буквами и штриховкой) относительно положения «е» субпикселя. Штриховка, которая показывает отсутствие какой-либо симметрии коэффициентов. Таким образом, все двенадцать коэффициентов необходимы для определения набора коэффициентов для поддержки фильтра в отношении положения «е» субпикселя. Как отмечено выше, однако, симметрия пикселей означает, что эти одинаковые коэффициенты в отношении положения «е» субпикселя также могут использоваться для вывода поддержки фильтра для положений «g», «m» и «о» субпикселей (смотрите фиг.7). Поэтому 12 коэффициентов определяют положение «е» субпикселя поддержки фильтра, и эти одинаковые коэффициенты могут использоваться для вывода набора коэффициентов для положений «g», «m» и «о» субпикселей.
Фиг.13 представляет собой концептуальную схему, иллюстрирующую двенадцать двумерных положений пикселей поддержки (положения целочисленных пикселей показаны с прописными буквами) относительно субпикселя «i» со штриховкой, которая показывает симметрию коэффициентов. В данном случае симметрия коэффициентов означает, что коэффициенты фильтра для положений B3, B4, C2, C3, C4 и C5 поддержки фильтра могут использоваться для определения коэффициентов фильтра для положений E3, E4, D2, D3, D4 и D5 поддержки фильтра. B3 является симметричным с Е3, В4 является симметричным с Е4, С2 является симметричным с D2, С3 является симметричным с D3, С4 является симметричным с D4 и С5 является симметричным с 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, С3 является симметричным с 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 могут вычислять значения пикселей для 2D положений субпикселей, используя интерполяционный фильтр, имеющий 36-позиционную поддержку фильтра (т.е. 2D поддержку фильтра размерности 6×6). S-AIF использует разделяемые положения целочисленных пикселей в качестве поддержки фильтра для интерполяционной фильтрации сначала в горизонтальном направлении, затем в вертикальном направлении. D-AIF использует менее сложный интерполяционный фильтр для вычисления 2D положений субпикселей, чем NS-AIF. В D-AIF 2D положения субпикселей вычисляются с использованием интерполяционного фильтра, имеющего 6-позиционную поддержку фильтра или 12-позиционную диагональную поддержку фильтра.
Одним недостатком использования диагональной поддержки фильтра как в D-AIF является то, что положения целочисленных пикселей, используемые при фильтрации, находятся далеко от текущего положения, подлежащего интерполированию. Так как расстояние между текущим положением, подлежащим интерполированию, и положениями пикселей, используемыми в качестве поддержки фильтра, увеличивается, уменьшается пространственная корреляция пикселей. По существу, диагональная поддержка фильтра, используемая в D-AIF, является менее подходящей для формирования точного предсказания.
Чтобы обеспечить лучшее предсказание, используя пиксели с более высокой корреляцией с интерполируемым положением (т.е. положения пикселей, которые находятся ближе или на более коротком расстоянии от интерполируемого положения), в то же время сохраняя такую же малую сложность, предлагаемую D-AIF, для интерполяции может использоваться 12-позиционная поддержка фильтра, показанная на фиг.4. Положения целочисленных пикселей, используемые в 12-позиционной поддержке фильтра, описанной в данном раскрытии, включают в себя четыре положения целочисленных пикселей, окружающих положения субпикселей, т.е. положения С3, С4, D3 и D4 целочисленных пикселей, которые могут упоминаться как «угловые» положения целочисленных пикселей, так как они расположены около углов 2D положений субпикселей. В дополнение к угловым положениям целочисленных пикселей одно или несколько положений целочисленных пикселей, непосредственно рядом с угловыми положениями целочисленных пикселей, также могут использоваться в поддержке фильтра. Положения целочисленных пикселей, непосредственно рядом с угловыми положениями целочисленных пикселей, могут включать в себя положения целочисленных пикселей непосредственно над (в направлении вверх или на Север) или непосредственно под (в направлении книзу или на Юг) угловыми положениями целочисленных пикселей, а также положения целочисленных пикселей непосредственно слева (или на Запад) или непосредственно справа (или на Восток) от угловых положений целочисленных пикселей. В примере, изображенном на фиг.4, 12-позиционная поддержка фильтра может включать в себя местоположения B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 и E4 целочисленных пикселей. Все эти положения целочисленных пикселей располагаются в двух положениях целочисленных пикселей интерполируемого субпикселя.
Поддержка фильтра согласно методам данного раскрытия может, однако, включать в себя дополнительные местоположения целочисленных пикселей. Например, поддержка фильтра может включать в себя местоположения целочисленных пикселей, которые располагаются в трех положениях целочисленных пикселей интерполируемого положения субпикселя, которые формируют радиальную форму.
Даже положения четвертьпикселей или более мелкое разрешение могут интерполироваться на основе положений целочисленных пикселей, расположенных по меньшей мере в двух положениях целочисленных пикселей. Таким образом, методы поддержки фильтра данного раскрытия обеспечивают лучшее интерполяционное предсказание, используя целочисленные пиксели с более высокой корреляцией с интерполируемым положением, в то же время сохраняя такую же низкую сложность, предлагаемую D-AIF.
Как описано выше, симметрия субпикселей может приводить к использованию одного и того же набора коэффициентов фильтра (и зеркально отраженных, перевернутых и/или повернутых версии набора) для группы из одного или нескольких положений субпикселей. Использование аналитического процесса, такого как процесс в уравнении (5), может использоваться для вывода коэффициентов интерполяционного фильтра для всех положений субпикселей, например пятнадцати положений субпикселей в случае точности до четвертьпикселя. Анализ корреляции среди пятнадцати наборов коэффициентов интерполяционного фильтра выявляет относительно сильную корреляцию между коэффициентами фильтра положений субпикселей (как 1D, так и 2D положений субпикселей) по одной и той же размерности (например, вертикальной или горизонтальной размерности). Наоборот, корреляция между коэффициентами фильтра положений субпикселей в разных диагональных направлениях может быть заметно слабее.
Например, может быть сильная корреляция между коэффициентами фильтра для положений «а» и «с» субпикселей, которые оба находятся по горизонтальной размерности. В качестве другого примера, может быть сильная корреляция между коэффициентами фильтра для положений «d» и «l» субпикселей, которые оба находятся по вертикальной размерности. Однако может быть слабая, если таковая имеется, корреляция между коэффициентами фильтра для положения «а» субпикселя, которое находится по горизонтальной размерности, и положения «d» субпикселя, которое находится по вертикальной размерности. Основываясь на этих наблюдениях корреляций, может быть разработана симметрия субпикселей, так что не налагается симметрия субпикселей для коэффициентов фильтра положений субпикселей по диагональным размерностям. Это приводит к восьми наборам коэффициентов, как описано в данном документе, которые могут представлять собой больше наборов, чем необходимо для некоторых обычных процессов. Посредством устранения диагональной симметрии пикселей для некоторых местоположений пикселей, как описано в данном документе, может улучшаться видеокодирование и сжатие.
Снова, фиг.7 изображает положения пикселей с одинаковой штриховкой (или закраской), которые принадлежат группе положений субпикселей, которая имеет симметрию субпикселей. В частности, положения «а» и «с» субпикселей образуют первую группу, имеющую симметрию субпикселей, положения «d» и «l» субпикселей образуют вторую группу, имеющую симметрию субпикселей, положения «е», «g», «m» и «о» субпикселей образуют третью группу, имеющую симметрию субпикселей, положения «f» и «n» субпикселей образуют четвертую группу, имеющую симметрию субпикселей, и положения «i» и «k» субпикселей образуют пятую группу, имеющую симметрию субпикселей. Положения «b», «h» и «j» субпикселей не имеют симметрии субпикселей ни с какими другими положениями субпикселей. По существу, положения «b», «h» и «j» субпикселей могут рассматриваться как принадлежащие их собственным группам; шестой, седьмой и восьмой группам, соответственно. Каждая группа коэффициентов (которые могут быть поднаборами вследствие симметрии коэффициентов) может передаваться один раз для каждой кодированной единицы, или, возможно, много раз для каждой кодированной единицы, если разные типы фильтрации определены для разных областей или признаков кодированной единицы. Коэффициенты для подобной интерполяции фильтрации целочисленных пэлов также могут посылаться один раз или несколько раз для каждой кодированной единицы.
В NS-AIF и D-AIF существует симметрия субпикселей между положениями субпикселей по одной и той же размерности, например два положения субпикселей по вертикальной размерности или два положения субпикселей по горизонтальной размерности. В некоторых обычных NS-AIF и D-AIF симметрия также существует по диагонали между положениями субпикселей по разным размерностям. Например, симметрия субпикселей существует между положением «а» субпикселя по вертикальной размерности и положением «d» субпикселя по горизонтальному направлению в некоторой обычной NS-AIF и D-AIF. При симметрии субпикселей по горизонтальной, вертикальной и диагональной размерности только пять уникальных наборов коэффициентов интерполяционного фильтра могут использоваться для точности до четвертьпикселя.
Для некоторых типов S-AIF, с другой стороны, симметрия субпикселей существует между положениями субпикселей по вертикальному направлению (или размерности), но нет положений субпикселей по горизонтальной размерности. Другими словами, симметрия субпикселей не всегда существует для положений субпикселей по одной и той же размерности. Симметрия субпикселей также не существует по диагональным размерностям. Симметрия некоторых схем S-AIF, таким образом, требует больше наборов коэффициентов интерполяции. В частности, для точности до четвертьпикселя некоторые схемы S-AIF требуют одиннадцать уникальных наборов коэффициентов интерполяции.
Схема симметрии субпикселей, описанная в данном раскрытии и изображенная на фиг.7, может приводить к более точному предсказанию, чем симметрия субпикселей, описанная выше для некоторых типов NS-AIF и D-AIF. В частности, схема симметрии субпикселей по фиг.7 налагает симметрию субпикселей по одной размерности (например, по горизонтальному направлению или по вертикальному направлению), но не налагает симметрию субпикселей одновременно по обеим размерностям (например, диагонально).
Посредством неналожения симметрии субпикселей для положений субпикселей диагонально, слабая корреляция между коэффициентами интерполяционного фильтра и положениями субпикселей по разным размерностям не интегрируется в интерполяцию. Хотя может потребоваться больше наборов коэффициентов интерполяции (например, восемь вместо пяти), результирующие интерполированные данные предсказания могут быть более точными. Диагональная симметрия коэффициентов также может избегаться или устраняться совершенно аналогично.
Узел 32 предсказания также может налагать симметрию коэффициентов, как описано выше. В частности, симметрия коэффициентов налагается для коэффициентов фильтра по одной размерности (например, по горизонтальному или вертикальному направлению), но не для обоих размерностей диагональным образом. Например, коэффициенты фильтра для положения «е» субпикселя не задаются принудительно диагонально симметричными как по схеме NS-AIF, описанной выше и представленной в уравнении (11). Симметрия коэффициентов резюмирована ниже в уравнениях (17)-(21).
Отметьте, что для положений «f», «i» и «j» субпикселей некоторые коэффициенты фильтра, т.е. равны нулю в случаях, когда может использоваться 12-позиционный фильтр, описанный подробно в отношении фиг.4. По существу, симметрия субпикселей и коэффициентов, описанная в данном раскрытии, может использоваться вместе с или отдельно от методов поддержки фильтра. При использовании вместе с 12-позиционной поддержкой фильтра, описанной на фиг.4, имеется 6(а)+3(b)+6(d)+3(h)+12(e)+6(f)+6(i)+3(j)=45 уникальных коэффициентов для этих положений субпикселей, которые необходимо пересылать на декодер, т.е. 6 коэффициентов для группы, включающей в себя положение «а» субпикселя, 3 коэффициента для группы, включающей в себя положение «b» субпикселя, 6 коэффициентов для группы, включающей в себя положение «d» субпикселя, 3 коэффициента для группы, включающей в себя положение «h» субпикселя, 12 коэффициентов для группы, включающей в себя положение «е» субпикселя, 6 коэффициентов для группы, включающей в себя положение «f» субпикселя, 6 коэффициентов для группы, включающей в себя положение «i» субпикселя, и 3 коэффициента для группы, включающей в себя положение «j» субпикселя.
Фиг.17 представляет собой блок-схему последовательности операций, иллюстрирующую примерную работу видеокодера, который использует двенадцатипиксельную поддержку фильтра, совместимую с данным раскрытием. Метод по фиг.17 описывается с точки зрения видеокодера 50 на фиг.2, хотя другие устройства могут выполнять подобные методы. Как показано на фиг.17, MC-узел 37 узла 32 предсказания получает блок пикселей из памяти 34, который включает в себя значения целочисленных пикселей, соответствующие положениям целочисленных пикселей (171). Фильтр(ы) 39 вычисляет значения субпикселей, основываясь на поддержке фильтра, которая содержит двенадцать или более положений, которые окружают положения субпикселей (172). Как объяснено более подробно выше, двенадцатипозиционная поддержка фильтра может использоваться для генерирования девяти из пятнадцати возможных интерполяций субпикселя, тогда как линейная горизонтальная и линейная вертикальная фильтрация может использоваться для генерирования шести из пятнадцати возможных интерполяций субпикселя.
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). Различные аспекты интерполяции, описанные в данном документе, включая использование двенадцатипозиционной поддержки фильтра, которая окружает положения субпикселей в радиальной форме, могут улучшить видеокодирование посредством обеспечения данных интерполяции лучшего качества, чем обычные методы.
Фиг.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 et al и озаглавленная «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).
Фиг.27 представляет собой концептуальный график, иллюстрирующий некоторые иллюстративные коэффициенты фильтра, которые могут кодироваться с предсказанием. В данном случае коэффициенты О1, О2, О3 и О4 фильтра могут определять коэффициенты фильтра, связанные с неперестраиваемым интерполяционным фильтром. Коэффициенты Х1, Х2, Х3 и Х4 фильтра могут определять требуемые коэффициенты фильтра, которые могут быть достаточно подобными коэффициентам неперестраиваемого интерполяционного фильтра. Следовательно, коэффициенты Х1, Х2, Х3 и Х4 фильтра могут предсказываться на основе коэффициентов О1, О2, О3 и О4 фильтра, соответственно. В частности, первый остаток может формироваться как разность между Х1 и О1. Аналогично, второй остаток может формироваться как разность между Х2 и О2, третий остаток может формироваться как разность между Х3 и О3, и четвертый остаток может формироваться как разность между Х4 и О4. Остатки могут содержать меньше данных, чем исходные коэффициенты фильтра, тем самым способствуя сжатию данных.
В некоторых случаях набор коэффициентов фильтра содержит первый набор коэффициентов фильтра, который определяет только часть всего набора коэффициентов фильтра, ассоциированных с адаптивным интерполяционным фильтром, причем второй набор коэффициентов фильтра может определяться декодером на основе первого набора коэффициентов фильтра и симметрии коэффициентов. Например, коэффициенты Х1 и Х2 фильтра могут кодироваться с предсказанием на основе О1 и О2, соответственно. В данном случае, однако, Х3 и Х4 могут быть симметричны Х1 и Х2, и декодер может программироваться на то, чтобы он знал, что налагается такая симметрия. Следовательно, посредством использования симметрии коэффициенты Х3 и Х4 в данном простом примере могут исключаться из битового потока и могут вычисляться в декодере, основываясь на известной симметрии коэффициентов, если декодированы с предсказанием коэффициенты Х1 и Х2.
Фиг.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).
Фиг.28 представляет собой концептуальный график, иллюстрирующий некоторые иллюстративные коэффициенты фильтра, которые могут кодироваться с предсказанием в соответствии с процессом на фиг.25. В данном случае коэффициенты О1 и О2 фильтра могут определять коэффициенты фильтра, связанные с неперестраиваемым интерполяционным фильтром. Коэффициенты Х1 и Х2 фильтра могут определять первый набор требуемых коэффициентов фильтра, которые могут быть достаточно подобными коэффициентам неперестраиваемого интерполяционного фильтра. Следовательно, коэффициенты Х1 и Х2 фильтра могут предсказываться на основе коэффициентов О1 и О2 фильтра, соответственно. В частности, первый остаток может формироваться как разность между Х1 и О1, и второй остаток может формироваться как разность между Х2 и О2. Остатки могут содержать меньше данных, чем исходные коэффициенты фильтра, тем самым способствуя сжатию данных. Остатки затем квантуются узлом 41 предсказания и квантования коэффициентов и энтропийно кодируются узлом 46 энтропийного кодирования. и могут ссылаться на модифицированные коэффициенты фильтра, которые генерируются посредством добавления деквантованных остатков к коэффициентам О1 и О2 фильтра с предсказанием.
Затем второй набор коэффициентов Z1 и Z2 фильтра может кодироваться с предсказанием, основываясь на первом наборе коэффициентов Х1 и Х2, например, особенно из коэффициентов и , которые определяются на основе коэффициентов Х1 и Х2. В частности, третий остаток может быть образован как разность между Z1 и , и четвертый остаток может быть образован как разность между Z2 и . и могут быть более подобными Z1 и Z2, чем О1 и О2, и поэтому посредством использования и для кодирования с предсказанием 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, могут использоваться для предсказания 1-D фильтров (которые могут включать в себя фильтры для положений a, b, d, h субпикселей, показанных на фиг.8, 9, 10 и 11). Для 2-D фильтров, которые включают в себя фильтры для положений e, f, i и j субпикселей, показанных на фиг.12, 13, 14 и 15, может использоваться одна из следующих схем предсказания:
1. Установить предсказание на ноль (нет предсказания), , SP∈{e, f, i, j,}
2. Использовать предсказание с неперестраиваемым фильтром, таким как фильтр среднего, собранный по обучающей последовательности, т.е. , SP∈{e, f, i, j,}, где представляет собой (i,j)-ый коэффициент фильтра в фильтре среднего для положения SP субпикселя.
3. Применить возможную симметрию в коэффициентах и использовать уже кодированные коэффициенты для предсказания остальных коэффициентов.
Для 1-D фильтров также может применяться любой из этих трех способов предсказания.
Для предсказания фиг.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) фильтра. Предсказание других коэффициентов фильтра может выполняться подобным образом. Например, для положения «е» субпикселя (смотрите фиг.12), которое может иметь некоторую симметрию по диагонали, сначала могут квантоваться и кодироваться верхние-правые коэффициенты и затем использоваться для предсказания нижних-левых коэффициентов.
В любом случае после предсказания коэффициентов (например, узлом 41 предсказания и квантования коэффициентов узла 32 предсказания) ошибки предсказания квантуются (например, узлом 41 предсказания и квантования коэффициентов). Как отмечено вкратце выше, может использоваться так называемое «неравномерное квантование». В этом случае точность квантования, применимая узлом 41 предсказания и квантования коэффициентов, может зависеть от местоположения коэффициента. Было обнаружено, что для коэффициентов с меньшей величиной (которыми являются обычно коэффициенты дальше от центра фильтра) может быть желательна лучшая точность. И наоборот, для коэффициентов с большими величинами (которыми являются обычно коэффициенты ближе к центру фильтра) более желательна меньшая точность.
Нижеследующие матрицы Q 1D, Q 2D, Q FP могут использоваться узлом 41 предсказания и квантования коэффициентов для задания точности квантования для коэффициентов в 1D фильтрах, 2D фильтрах и фильтре целочисленных пикселей, соответственно. Отметьте, что количество битов, приведенное в матрицах, может включать в себя 1 бит для кодирования знака соответствующих коэффициентов.
Узел 41 предсказания и квантования коэффициентов может кодировать ошибки предсказания квантованных коэффициентов, т.е. остатков коэффициентов, основываясь на простой схеме префиксного кодирования. Сначала динамический диапазон величины ошибки предсказания делится на N бинов, например N=6. Если динамический диапазон величины равен [0,…,2q-1-1], где q представляет собой точность квантования для данного положения коэффициента (такого как заданное в матрицах выше), тогда каждый бин n, n=0,…,N-1 может охватывать следующие диапазоны:
В данном случае, бин b, b=0,…,N-1, к которому принадлежит вводимая величина m, может кодироваться с использованием унарного префиксного кода (который занимает b+1 битов). Тогда остаток величины m-b start может кодироваться с использованием суффиксного кода фиксированной длины (q-N+b-1) битов. Наконец, знак ошибки предсказания кодируется с использованием 1 бита.
Например, для центрального коэффициента в 1D фильтре 9-битовая точность может использоваться узлом 41 предсказания и квантования коэффициентов для квантования ошибки предсказания, т.е. q=9, из которых 8 битов могут использоваться для квантования величины ошибки. Если величина ошибки равна 97, тогда она попадает в 4-ый бин, т.е. b=4. Поэтому унарный префиксный код «11110» может кодироваться для указания 4-го бина, и остаток m-b start=97-64=33 может кодироваться с использованием суффиксного кода фиксированной длины (q-N+b-1)=(9-6+4-1)=6 битов. Наконец, бит «0» может кодироваться для указания положительного знака.
Методы данного раскрытия могут быть реализованы в многочисленных приборах или устройствах, включая беспроводные телефонные трубки, и интегральной схеме (ИС) или наборе ИС (т.е. наборе микросхем). Любые компоненты, модули или узлы были описаны с целью подчеркивания функциональных аспектов и не требуют обязательной реализации разными аппаратными узлами.
Следовательно, методы, описанные в данном документе, могут быть реализованы аппаратными, программными, аппаратно-программными средствами или любой их комбинацией. Если они реализованы аппаратными средствами, любые признаки, описанные как модули, узлы или компоненты, могут быть реализованы вместе в интегральном логическом устройстве или отдельно в виде дискретных, но взаимодействуемых логических устройств. Если они реализованы программными средствами, методы могут быть реализованы, по меньшей мере частично, посредством считываемого компьютером носителя, содержащего инструкции, которые, когда они исполняются в процессоре, выполняют один или несколько способов, описанных выше. Считываемый компьютером носитель может содержать считываемый компьютером носитель данных и может образовывать часть продукта компьютерной программы, который может включать в себя упаковочные материалы. Считываемый компьютером носитель данных может содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитные или оптические носители для хранения данных и т.п. Методы дополнительно, или альтернативно, могут быть реализованы, по меньшей мере частично, посредством считываемой компьютером среды связи, которая переносит или передает код в виде инструкций или структур данных и к которой может обращаться компьютер, которую можно считывать и/или которая может исполняться компьютером.
Код может исполняться одним или несколькими процессорами, такими как один или несколько процессоров цифровой обработки сигналов (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (специализированными ИС), программируемыми вентильными матрицами (FPGA) или другими эквивалентными интегральными или дискретными логическими схемами. Следовательно, термин «процессор», как он используется в данном документе, может ссылаться на любую из вышеизложенных структур или любую другую структуру, пригодную для реализации методов, описанных в данном документе. Кроме того, в некоторых аспектах функциональная возможность, описанная в данном документе, может обеспечиваться в выделенных программных модулях или аппаратных модулях, выполненных с возможностью кодирования и декодирования, или встроенных в объединенный видеокодек. Также методы могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
Были описаны различные аспекты раскрытия. Эти и другие аспекты находятся в рамках объема нижеследующей формулы изобретения.
Изобретение относится к цифровому видеокодированию и декодированию и, более конкретно, к способам фильтрации, применяемым для генерирования данных предсказания, используемых в видеокодировании и декодировании. Техническим результатом является повышение точности данных предсказания, используемых во время дробной интерполяции, и улучшение данных предсказания целочисленных блоков пикселей. Указанный технический результат достигается тем, что обеспечивают двенадцатипиксельную поддержку фильтра, которая может использоваться для интерполяции, методы, которые используют симметрию коэффициентов и симметрию пикселей для уменьшения количества данных, необходимых для пересылки между кодером и декодером для конфигурирования поддержки фильтра для интерполяции, и методы для фильтрации данных в местоположениях целочисленных пикселей таким образом, который подобен интерполяции субпикселей. Другие аспекты изобретения касаются методов кодирования информации в битовом потоке для передачи типа используемого фильтра и, возможно, используемых коэффициентов фильтра. 4 н. и 39 з.п. ф-лы, 29 ил.
1. Способ, выполняемый в процессе компенсации движения во время кодирования или декодирования видеоблока в кодированной единице видеопоследовательности, причем способ содержит:
получение блоков пикселей из одной или более опорных единиц видео в процессе компенсации движения, причем блоки пикселей содержат восстановленные опорные блоки, которые были декодированы ранее, и включают в себя значения целочисленных пикселей, соответствующие положениям целочисленных пикселей в блоках пикселей;
фильтрацию значений целочисленных пикселей, основываясь на значениях других целочисленных пикселей в блоках пикселей, для генерирования откорректированных значений целочисленных пикселей в процессе компенсации движения, причем откорректированные значения целочисленных пикселей соответствуют положениям целочисленных пикселей; и
генерирование блока предсказания в процессе компенсации движения во время кодирования или декодирования видеоблока, основываясь на откорректированных значениях целочисленных пикселей.
2. Способ по п.1, в котором способ выполняется во время процесса кодирования, причем способ дополнительно содержит генерирование остаточного видеоблока как разности между текущим кодируемым видеоблоком и блоком предсказания.
3. Способ по п.1, в котором способ выполняется во время процесса кодирования, причем способ дополнительно содержит кодирование одного набора коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации.
4. Способ по п.1, в котором способ выполняется во время процесса кодирования, причем способ дополнительно содержит кодирование двух или более наборов коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в каждой кодированной единице.
5. Способ по п.1, в котором фильтрация содержит применение двумерного фильтра.
6. Способ по п.5, в котором двумерный фильтр содержит фильтр размерности 5х5 со смещением.
7. Способ по п.1, в котором существует симметрия коэффициентов между по меньшей мере некоторыми коэффициентами, используемыми для фильтрации.
8. Способ по п.1, в котором способ выполняется во время процесса декодирования, причем способ дополнительно содержит генерирование восстановленного видеоблока как суммы остаточного видеоблока, связанного с текущим декодируемым видеоблоком, и блока предсказания.
9. Способ по п.1, в котором способ выполняется во время процесса декодирования, причем способ дополнительно содержит прием одного набора коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации.
10. Способ по п.1, в котором способ выполняется во время процесса декодирования, причем способ дополнительно содержит прием двух или более наборов коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в каждой кодированной единице.
11. Устройство для генерации блока предсказания в процессе компенсации движения во время кодирования или декодирования видеоблока в кодированной единице видеопоследовательности, причем устройство содержит видеокодер, который:
получает блоки пикселей из одной или более опорных единиц видео в процессе компенсации движения, причем блоки пикселей содержат восстановленные опорные блоки, которые были декодированы ранее, и включают в себя значения целочисленных пикселей, соответствующие положениям целочисленных пикселей в блоке пикселей;
фильтрует значения целочисленных пикселей, основываясь на значениях других целочисленных пикселей в блоке пикселей, для генерирования откорректированных значений целочисленных пикселей в процессе компенсации движения, причем откорректированные значения целочисленных пикселей соответствуют положениям целочисленных пикселей; и
генерирует блок предсказания в процессе компенсации движения во время кодирования или декодирования видеоблока, основываясь на откорректированных значениях целочисленных пикселей.
12. Устройство по п.11, в котором видеокодер выполняет процесс видеокодирования, причем видеокодер генерирует остаточный видеоблок как разность между текущим кодируемым видеоблоком и блоком предсказания.
13. Устройство по п.11, в котором видеокодер выполняет процесс видеокодирования, причем видеокодер кодирует один набор коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации.
14. Устройство по п.11, в котором видеокодер выполняет процесс видеокодирования, причем видеокодер кодирует два или более наборов коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в каждой кодированной единице.
15. Устройство по п.11, в котором при фильтрации значений целочисленных пикселей устройство применяет двумерный фильтр.
16. Устройство по п.15, в котором двумерный фильтр содержит фильтр размерности 5х5 со смещением.
17. Устройство по п.11, в котором существует симметрия коэффициентов между по меньшей мере некоторыми коэффициентами, используемыми для фильтрации.
18. Устройство по п.11, в котором видеокодер выполняет процесс декодирования, причем видеокодер генерирует восстановленный видеоблок как сумму остаточного видеоблока, связанного с текущим декодируемым видеоблоком, и блока предсказания.
19. Устройство по п.11, в котором видеокодер выполняет процесс декодирования, причем видеокодер принимает один набор коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации.
20. Устройство по п.11, в котором видеокодер выполняет процесс декодирования, причем видеокодер принимает два или более наборов коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в каждой кодированной единице.
21. Устройство по п.11, в котором видеокодер содержит интегральную схему.
22. Устройство по п.11, в котором видеокодер содержит микропроцессор.
23. Устройство по п.11, причем устройство представляет собой устройство беспроводной связи, которое включает в себя видеокодер.
24. Устройство, выполняющее процесс компенсации движения во время кодирования или декодирования видеоблока в кодированной единице видеопоследовательности, причем устройство содержит:
средство для получения блоков пикселей из одной или более опорных единиц видео в процессе компенсации движения, причем блоки пикселей содержат восстановленные опорные блоки, которые были декодированы ранее и включают в себя значения целочисленных пикселей, соответствующие положениям целочисленных пикселей в блоке пикселей;
средство для фильтрации значений целочисленных пикселей, основываясь на значениях других целочисленных пикселей в блоке пикселей, для генерирования откорректированных значений целочисленных пикселей в процессе компенсации движения, причем откорректированные значения целочисленных пикселей соответствуют положениям целочисленных пикселей; и
средство для генерирования блока предсказания в процессе компенсации движения во время кодирования или декодирования видеоблока, основываясь на откорректированных значениях целочисленных пикселей.
25. Устройство по п.24, в котором устройство выполняет процесс кодирования, причем устройство содержит средство для генерирования остаточного видеоблока как разности между текущим кодируемым видеоблоком и блоком предсказания.
26. Устройство по п.24, в котором устройство выполняет процесс кодирования, причем устройство дополнительно содержит средство для кодирования одного набора коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации.
27. Устройство по п.24, в котором устройство выполняет процесс кодирования, причем устройство дополнительно содержит средство для кодирования двух или более наборов коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в каждой кодированной единице.
28. Устройство по п.24, в котором средство для фильтрации содержит средство для применения двумерного фильтра.
29. Устройство по п.28, в котором двумерный фильтр содержит фильтр размерности 5×5 со смещением.
30. Устройство по п.24, в котором существует симметрия коэффициентов между по меньшей мере некоторыми коэффициентами, используемыми для фильтрации.
31. Устройство по п.24, в котором устройство выполняет процесс декодирования, причем устройство дополнительно содержит средство для генерирования восстановленного видеоблока как суммы остаточного видеоблока, связанного с текущим декодируемым видеоблоком, и блока предсказания.
32. Устройство по п.24, в котором устройство выполняет процесс декодирования, причем устройство дополнительно содержит средство для приема одного набора коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации.
33. Устройство по п.24, в котором устройство выполняет процесс декодирования, причем устройство дополнительно содержит средство для приема двух или более наборов коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в каждой кодированной единице.
34. Считываемый компьютером носитель данных, содержащий инструкции, которые, когда они исполняются процессором, побуждают процессор выполнять процесс компенсации движения во время кодирования или декодирования видеоблока в кодированной единице видеопоследовательности, причем инструкции побуждают процессор:
получать блоки пикселей из одной или нескольких опорных единиц видео в процессе компенсации движения, причем блоки пикселей содержат восстановленные опорные блоки, которые были декодированы ранее, и включают в себя значения целочисленных пикселей, соответствующие положениям целочисленных пикселей в блоке пикселей;
выполнять фильтрацию значений целочисленных пикселей, основываясь на значениях других целочисленных пикселей в блоке пикселей, для генерирования откорректированных значений целочисленных пикселей в процессе компенсации движения, причем откорректированные значения целочисленных пикселей соответствуют положениям целочисленных пикселей; и
генерировать блок предсказания в процессе компенсации движения во время кодирования или декодирования видеоблока, основываясь на откорректированных значениях целочисленных пикселей.
35. Считываемый компьютером носитель данных по п.34, в котором инструкции побуждают процессор выполнять процесс кодирования, причем инструкции побуждают процессор генерировать остаточный видеоблок как разность между текущим кодируемым видеоблоком и блоком предсказания.
36. Считываемый компьютером носитель данных по п.34, в котором инструкции побуждают процессор выполнять процесс кодирования, причем инструкции побуждают процессор кодировать один набор коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации.
37. Считываемый компьютером носитель данных по п.34, в котором инструкции побуждают процессор выполнять процесс кодирования, причем инструкции побуждают процессор кодировать два или более наборов коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в каждой кодированной единице.
38. Считываемый компьютером носитель данных по п.34, в котором при фильтрации значений целочисленных пикселей инструкции побуждают устройство применять двумерный фильтр.
39. Считываемый компьютером носитель данных по п.38, причем двумерный фильтр содержит фильтр размерности 5х5 со смещением.
40. Считываемый компьютером носитель данных по п.34, причем существует симметрия коэффициентов между по меньшей мере некоторыми коэффициентами, используемыми для фильтрации.
41. Считываемый компьютером носитель данных по п.34, в котором инструкции побуждают устройство выполнять процесс декодирования, причем инструкции побуждают устройство генерировать восстановленный видеоблок как сумму остаточного видеоблока, связанного с текущим декодируемым видеоблоком, и блока предсказания.
42. Считываемый компьютером носитель данных по п.34, в котором инструкции побуждают устройство выполнять процесс декодирования, причем инструкции принимают один набор коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации.
43. Считываемый компьютером носитель данных по п.34, в котором инструкции побуждают устройство выполнять процесс декодирования, причем инструкции принимают два или более наборов коэффициентов фильтра для каждой кодированной единицы для целочисленной фильтрации в разных местоположениях в каждой кодированной единице.
WO 2006108654 A1, 19.10.2006 | |||
Устройство для регистрации пневмодинамики внешнего дыхания | 1988 |
|
SU1641274A2 |
US 2005207496 A1, 22.09.2005 | |||
Нелинейное фильтрующее устройство | 1987 |
|
SU1603338A1 |
Переносная печь для варки пищи и отопления в окопах, походных помещениях и т.п. | 1921 |
|
SU3A1 |
КОДИРУЮЩИЕ ДИНАМИЧЕСКИЕ ФИЛЬТРЫ | 2003 |
|
RU2302707C2 |
СПОСОБ УМЕНЬШЕНИЯ ИСКАЖЕНИЯ СЖАТОГО ВИДЕОИЗОБРАЖЕНИЯ И УСТРОЙСТВО ДЛЯ ЕГО РЕАЛИЗАЦИИ | 2003 |
|
RU2305377C2 |
VATIS Y | |||
et al, Motion-And Aliasing-Compensated Prediction Using a Two-Dimensional Non-Separable Adaptive Wiener Interpolation Filter, IMAGE PROCESSING, |
Авторы
Даты
2013-03-10—Публикация
2009-04-10—Подача