ПОДДЕРЖКА ИНТЕРПОЛЯЦИОННОГО ФИЛЬТРА ДЛЯ СУБПИКСЕЛЬНОГО РАЗРЕШЕНИЯ В ВИДЕОКОДИРОВАНИИ
INTERPOLATION FILTER SUPPORT FOR SUB-PIXEL RESOLUTION IN VIDEO CODING

Эта заявка испрашивает приоритет Предварительной заявки на патент США №61/044020, поданной 10 апреля 2008 г., Предварительной заявки на патент США №61/044023, поданной 10 апреля 2008 г., Предварительной заявки на патент США №61/044240, поданной 11 апреля 2008 г., и Предварительной заявки на патент США №61/057373, поданной 30 мая 2008 г., все содержимое которых включено сюда путем ссылки.
Область техники, к которой относится изобретение
Это раскрытие относится к кодированию и декодированию цифрового видео и более конкретно к технологиям фильтрации, примененным для генерирования данных предсказания, используемых в кодировании и декодировании видео.
Уровень техники
Возможности цифрового видео могут быть включены в широкий диапазон устройств, включающий в себя цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDAs), портативные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, видеоигровые устройства, видеоигровые приставки, сотовые или спутниковые радиотелефоны и тому подобное. Цифровые видеоустройства реализуют способы видеосжатия, такие как те, которые описаны в стандартах, заданных MPEG-2, MPEG-4 или ITU-T H.264/MPEG-4, Part 10, Усовершенствованное видеокодирование (AVC), чтобы передавать и принимать цифровую видеоинформацию более эффективно. Способы видеосжатия могут осуществлять пространственное предсказание и/или временное предсказание для снижения или устранения избыточности, присущей видеопоследовательностям.
Межблочное кодирование на основе блоков - очень полезная технология, которая опирается на временное предсказание для снижения или устранения временной избыточности между видеоблоками последовательных кодированных единиц видеопоследовательности. Кодированные единицы могут содержать видеокадры, секции видеокадров, группы изображений или другую заданную единицу закодированных видеоблоков. Для внешнего кодирования видеокодер осуществляет оценку движения и компенсацию движения для отслеживания перемещения соответствующих видеоблоков двух или более соседних кодированных единиц. Оценка движения генерирует векторы движения, которые указывают смещение видеоблоков относительно соответствующих видеоблоков предсказаний в одном или более опорных кадрах или других кодированных единицах. Компенсация движения использует векторы движения для генерирования видеоблоков предсказаний из одного или более опорных кадров или других кодированных единиц. После компенсации движения остаточные видеоблоки образуют вычитанием видеоблоков предсказаний из исходных видеоблоков, которые кодируют.
Видеокодер может также применять процессы преобразования, квантования и статистического кодирования для дополнительного снижения скорости передачи битов, связанной с передачей остаточных блоков. Способы преобразования могут содержать дискретные косинусные преобразования (DCTs) или концептуально подобные процессы. С другой стороны, могут быть использованы вейвлет-преобразования, целочисленные преобразования или другие типы преобразований. В DCT-процессе, в качестве примера, набор значений пикселей переводят в коэффициенты преобразования, которые могут представлять энергию значений пикселей в частотной области. К коэффициентам преобразования применяют квантование, что обычно заключается в процессе, который уменьшает число битов, связанных с любым данным коэффициентом преобразования. Статистическое кодирование содержит один или более процессов, которые вместе сжимают последовательность режимов кодирования, информацию движения, структуры кодированных блоков и квантованные коэффициенты преобразования. Примеры статистического кодирования включают в себя, но не ограничены, контекстно-адаптивным кодированием с переменной длиной (CAVLC) и контекстно-адаптивным двоичным арифметическим кодированием (CABAC).
Кодированный видеоблок может быть представлен информацией предсказания, которая может быть использована для создания или идентификации предсказывающего блока, и остаточным блоком данных, указывающим разницу между блоком, который кодируют, и предсказывающим блоком. Информация предсказания может содержать один или более векторов движения, которые используют для идентификации предсказывающего блока данных. При наличии векторов движения декодер способен восстанавливать предсказывающие блоки, которые были использованы для кодирования остаточных блоков. Таким образом, при наличии набора остаточных блоков и набора векторов движения (и возможно некоторого дополнительного синтаксиса), декодер может восстановить видеокадр, который был изначально закодирован. Внешнее кодирование на основе оценки движения и компенсации движения, может достигать очень хорошего сжатия, потому что последовательные видеокадры или другие типы кодированных единиц часто очень похожи. Закодированная видеопоследовательность может содержать блоки остаточных данных, векторы движения и возможно другие типы синтаксиса.
Интерполяционные способы были разработаны для того, чтобы улучшить уровень сжатия, которого можно достичь во внешнем кодировании. В этом случае предсказывающие данные, сгенерированные в течение компенсации движения, которую используют для кодирования видеоблока, могут быть интерполированы из пикселей видеоблоков видеокадра или другой кодированной единицы, использованной в оценке движения. Интерполяцию часто осуществляют для генерирования предсказывающих значений полупикселей и предсказывающих значений четвертьпикселей. Значения полу- и четвертьпикселей связаны с положениями субпикселей. Векторы дробного движения могут быть использованы для идентификации видеоблоков с субпиксельным разрешением для того, чтобы запечатлеть дробное перемещение в видеопоследовательности и тем самым предоставлять предсказывающие блоки, которые более похожи на видеоблоки, которые кодируют, чем целые видеоблоки.
Сущность изобретения
В общем, это раскрытие описывает способы фильтрации, примененные кодером и декодером в течение стадии предсказания процесса кодирования и/или декодирования видео. Описанные способы фильтрации могут повысить точность предсказывающих данных, использованных в течение дробной интерполяции, и в некоторых случаях могут улучшить предсказывающие данные целых блоков пикселей. Существует несколько аспектов этого раскрытия, включающих в себя полезную поддержку двенадцатипиксельного фильтра, которая может быть использована для интерполяции, способы, которые используют симметрию коэффициентов и симметрию пикселей для уменьшения количества данных, которые должны быть отправлены между кодером и декодером, чтобы сформировать поддержку фильтра для интерполяции, и способы для фильтрации данных в положениях целых (целочисленных) пикселей способом, который подобен субпиксельной интерполяции. Другие аспекты этого раскрытия касаются способов для кодирования информации в битовом потоке, чтобы передать тип фильтра и возможно использованные коэффициенты фильтра. Также описаны способы предсказывающего кодирования для коэффициентов фильтра. Эти и другие аспекты этого раскрытия станут ясны из нижеприведенного описания.
В одном примере это раскрытие предоставляет способ, содержащий этапы, на которых получают блок пикселей, в котором блок пикселей включает в себя значения целых пикселей, соответствующие позициям целых пикселей в блоке пикселей, вычисляют значения субпикселей для позиций субпикселей, связанных с блоком пикселей, на основе значений целых пикселей, в котором вычисление значений субпикселей содержит применение интерполирующего фильтра, который задает двумерную матрицу позиций поддержки фильтра, соответствующую набору из двенадцати или более позиций целых пикселей, которые окружают позиции субпикселей в радиальной форме, и генерируют блок предсказаний на основе, по меньшей мере, нескольких значений субпикселей.
В другом примере это раскрытие предоставляет устройство, содержащее видеокодер, который получает блок пикселей, в котором блок пикселей включает в себя значения целых пикселей, соответствующие целочисленным позициям пикселей в блоке пикселей, вычисляет значения субпикселей для позиций субпикселей, связанных с блоком пикселей, на основе значений целых пикселей, в котором видеокодер применяет интерполирующий фильтр, который задает двумерную матрицу позиций поддержки фильтра, соответствующую набору из двенадцати или более позиций целых пикселей, которые окружают позиции субпикселей в радиальной форме, и генерирует блок предсказаний на основе, по меньшей мере, нескольких значений субпикселей.
В другом примере это раскрытие предоставляет устройство, содержащее средство для получения блока пикселей, в котором блок пикселей включает в себя значения целых пикселей, соответствующие целочисленным позициям пикселей в блоке пикселей, средство для вычисления значений субпикселей для позиций субпикселей, связанных с блоком пикселей, на основе значений целых пикселей, в котором средство для вычисления значений субпикселей содержит средство для применения интерполирующего фильтра, который задает двумерную матрицу позиций поддержки фильтра, соответствующую набору из двенадцати или более позиций целых пикселей, которые окружают позиции субпикселей в радиальной форме, и средство для генерирования блока предсказаний на основе, по меньшей мере, нескольких значений субпикселей.
Способы, описанные в этом раскрытии, могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенных программах или любом их сочетании. Если осуществлено в программном обеспечении, программное обеспечение может быть выполнено в одном или более процессорах, таких как микропроцессор, интегральная схема специального применения (ASIC), программируемая пользователем вентильная матрица (FPGA) или цифровой сигнальный процессор (DSP). Программное обеспечение, которое выполняет эти способы, может быть изначально сохранено в компьютерочитаемой среде и загружено и выполнено в процессоре.
Соответственно, это раскрытие также предусматривает компьютерочитаемую запоминающую среду, содержащую команды, которые, при выполнении процессором, заставляют процессор получать блок пикселей, в котором блок пикселей включает в себя значения целых пикселей, соответствующие целочисленным позициям пикселей в блоке пикселей, вычислять значения субпикселей для позиций субпикселей, связанных с блоком пикселей, на основе значений целых пикселей, в котором в вычислении значений субпикселей команды заставляют процессор применять интерполирующий фильтр, который задает двумерную матрицу позиций поддержки фильтра, соответствующую набору из двенадцати или более целочисленных позиций пикселей, которые окружают позиции субпикселей в радиальной форме, и генерировать блок предсказаний на основе, по меньшей мере, нескольких значений субпикселей.
Подробности одного или более аспектов раскрытия изложены в сопроводительных чертежах и нижеприведенном описании. Другие признаки, задачи и преимущества способов, описанных в этом раскрытии, будут ясны из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
Фиг.1 является блок-схемой, иллюстрирующей одну примерную систему кодирования и декодирования видео, которая может реализовать способы этого раскрытия.
Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера, который может осуществлять способы фильтрации в соответствии с этим раскрытием.
Фиг.3 является концептуальной схемой, иллюстрирующей позиции целых пикселей, связанные с данными предсказания, и позиции субпикселей, связанные с интерполированными данными предсказания.
Фиг.4 является концептуальной схемой, иллюстрирующей поддержку 12-пиксельного фильтра в отношении девяти положений субпикселей.
Фиг.5 является концептуальной схемой, иллюстрирующей поддержку фильтра горизонтальных 6 пикселей в отношении трех горизонтальных положений субпикселей и поддержку фильтра вертикальных 6 пикселей в отношении трех вертикальных положений субпикселей.
Фиг.6 является концептуальной схемой, иллюстрирующей поддержку фильтра пять на пять пикселей, для фильтрации положений целых пикселей.
Фиг.7 является концептуальной схемой, иллюстрирующей позиции четырех целых пикселей и позиций пятнадцати субпикселей со штриховкой позиций группы пикселей, которые могут использовать симметрию пикселей для коэффициентов фильтра в соответствии с этим раскрытием.
Фиг.8 является концептуальной схемой, иллюстрирующей позиции поддержки шести горизонтальных линейных пикселей относительно субпикселя, со штриховкой, которая показывает симметрию коэффициентов.
Фиг.9 является концептуальной схемой, иллюстрирующей позиции поддержки шести горизонтальных линейных пикселей относительно субпикселя, со штриховкой, которая показывает отсутствие какой-либо симметрии коэффициентов.
Фиг.10 является концептуальной схемой, иллюстрирующей позиции поддержки шести вертикальных линейных пикселей поддержки относительно субпикселя, со штриховкой, которая показывает симметрию коэффициентов.
Фиг.11 является концептуальной схемой, иллюстрирующей позиции поддержки шести вертикальных линейных пикселей относительно субпикселя, со штриховкой, которая показывает отсутствие какой-либо симметрии коэффициентов.
Фиг.12 является концептуальной схемой, иллюстрирующей позиции поддержки двенадцати двумерных пикселей относительно субпикселя, со штриховкой, которая показывает отсутствие какой-либо симметрии коэффициентов.
Фиг.13 является концептуальной схемой, иллюстрирующей позиции поддержки двенадцати двумерных пикселей относительно субпикселя, со штриховкой, которая показывает симметрию коэффициентов.
Фиг.14 является концептуальной схемой, иллюстрирующей позиции поддержки двенадцати двумерных пикселей относительно субпикселя, со штриховкой, которая показывает симметрию коэффициентов.
Фиг.15 является концептуальной схемой, иллюстрирующей позиции поддержки двенадцати двумерных пикселей относительно субпикселя, со штриховкой, которая показывает симметрию коэффициентов.
Фиг.16 является блок-схемой, иллюстрирующей пример видеодекодера, который может декодировать видеопоследовательность, которую закодировали описанным здесь способом.
Фиг.17 является блок-схемой последовательности операций способа, иллюстрирующей пример работы видеокодера, который использует поддержку двенадцатипиксельного фильтра в соответствии с этим раскрытием.
Фиг.18 является блок-схемой последовательности операций, иллюстрирующей пример работы видеодекодера, который использует поддержку двенадцатипиксельного фильтра в соответствии с этим раскрытием.
Фиг.19 является блок-схемой последовательности операций, иллюстрирующей пример работы видеокодера, который использует симметрию коэффициентов и симметрию пикселей в соответствии с этим раскрытием.
Фиг.20 является блок-схемой последовательности операций способа, иллюстрирующей пример работы видеодекодера, который использует симметрию коэффициентов и симметрию пикселей в соответствии с этим раскрытием.
Фиг.21 является блок-схемой последовательности операций, иллюстрирующей пример работы видеокодера, который использует фильтрацию положений целых пикселей для генерирования скорректированных значений целых пикселей в соответствии с этим раскрытием.
Фиг.22 является блок-схемой последовательности операций, иллюстрирующей пример работы видеодекодера, который использует фильтрацию положений целых пикселей для генерирования скорректированных значений целых пикселей в соответствии с этим раскрытием.
Фиг.23 является блок-схемой последовательности операций, иллюстрирующей способ интерполяции, определяемый искажением в зависимости от скорости передачи, для видеокодирования на основе неперестраиваемого фильтра или адаптивного фильтра.
Фиг.24 является блок-схемой последовательности операций, иллюстрирующей способ для кодирования коэффициентов фильтра, используя кодирование с предсказанием.
Фиг.25 является другой блок-схемой последовательности операций, иллюстрирующей способ для кодирования коэффициентов фильтра, используя кодирование с предсказанием.
Фиг.26 является блок-схемой последовательности операций, иллюстрирующей способ для декодирования коэффициентов фильтра, используя кодирование с предсказанием.
Фиг.27 и фиг.28 являются концептуальными графиками, иллюстрирующими коэффициенты фильтра, которые могут быть кодированы с предсказанием.
Фиг.29 является иллюстративным примером матрицы коэффициентов фильтра целых пикселей, для которых способы предсказания могут быть использованы для кодирования.
Подробное описание
Это раскрытие описывает способы фильтрации, примененные кодером и декодером в течение стадии предсказания процесса кодирования и/или декодирования видео. Описанные способы фильтрации могут повысить точность предсказывающих данных, использованных в течение дробной интерполяции, и в некоторых случаях могут улучшить предсказывающие данные целых блоков пикселей. Существует несколько аспектов этого раскрытия, включающих в себя полезную поддержку двенадцатипиксельного фильтра, которая может быть использована для интерполяции, способы, которые используют симметрию коэффициентов и симметрию пикселей для уменьшения количества данных, которое должно быть отправлено между кодером и декодером, чтобы сформировать поддержку фильтра для интерполяции, и способы для фильтрации данных в положениях целых (целочисленных положений) пикселей способом, который подобен субпиксельной интерполяции. Эти и другие способы подробно описаны ниже.
Фиг.1 является блок-схемой, иллюстрирующей одну примерную систему 10 кодирования и декодирования видео, которая может быть использована для реализации одного или более способов этого раскрытия. Как показано на фиг.1, система 10 включает в себя устройство 12 источника, которое передает закодированный видеосигнал устройству 16 назначения через канал 15 связи. Устройство 12 источника и устройство 16 назначения могут содержать любые устройства из широкого диапазона. В некоторых случаях устройство 12 источника и устройство 16 назначения содержат беспроводные устройства связи, такие как беспроводные микротелефонные трубки, так называемые сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут обмениваться видеоинформацией по каналу 15 связи, и в этом случае канал 15 связи является беспроводным. Однако способы этого раскрытия, которые касаются фильтрации и генерации предсказывающих данных в течение кодирования с предсказанием, не обязательно ограничены беспроводными применениями или установками. Способы могут также быть полезны в широком диапазоне других установок и устройств, включая устройства, которые осуществляют связь через физические провода, оптические волокна или другие физические или беспроводные среды. Кроме этого, способы кодирования и декодирования могут также быть применены в автономном устройстве, которое не обязательно осуществляет связь с любым другим устройством.
В примере фиг.1, устройство 12 источника может включать в себя видеоисточник 20, видеокодер 22, модулятор/демодулятор (модем) 23 и передатчик 24. Устройство 16 назначения может включать в себя приемник 26, модем 27, видеодекодер 28 и устройство 30 отображения. Согласно этому раскрытию видеокодер 22 устройства 12 источника может быть выполнен с возможностью применения одного или более способов этого раскрытия как части процесса кодирования видео. Подобно этому видеодекодер 28 устройства 16 назначения может быть выполнен с возможностью применения одного или более способов этого раскрытия как части процесса декодирования видео.
В свою очередь, иллюстрированная система 10 фиг.1 является только примерной. Различные способы этого раскрытия могут быть осуществлены любым кодирующим устройством, которое поддерживает кодирование с предсказанием на основе блоков, или любым декодирующим устройством, которое поддерживает декодирование с предсказанием на основе блоков. Устройство 12 источника и устройство 16 назначения являются только примерами таких кодирующих устройств, в которых устройство 12 источника генерирует кодированные видеоданные для передачи устройству 16 назначения. В некоторых случаях устройства 12, 16 могут работать по существу симметричным образом так, что каждое из устройств 12, 16 включает в себя компоненты кодирования и декодирования видео. Исходя из этого система 10 может поддерживать одностороннюю или двустороннюю видеопередачу между видеоустройствами 12, 16, например, для видеопотока, воспроизведения видео, видеовещания или видеотелефонии.
Видеоисточник 20 устройства 12 источника может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, или видеопоток от поставщика видеосодержимого. В качестве альтернативы видеоисточник 20 может генерировать данные на основе компьютерной графики в качестве видео от источника или сочетание прямой видеопередачи, заархивированного видео и сгенерированного компьютером видео. В некоторых случаях, если видеоисточник 20 является видеокамерой, то устройство 12 источника и устройство 16 назначения могут образовать так называемые камерофоны или видеотелефоны. В каждом случае захваченный, предварительно захваченный или сгенерированный компьютером видеосигнал может быть закодирован видеокодером 22. Закодированная видеоинформация может затем быть модулирована модемом 23 согласно стандарту связи, например, такому как многостанционный доступ с кодовым разделением (CDMA) или другому стандарту связи, и передана устройству 16 назначения через передатчик 24 и канал 15 связи. Модем 23 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для модуляции сигнала. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включающие в себя усилители, фильтры и одну или более антенн.
Приемник 26 устройства 16 назначения принимает информацию по каналу 15 связи, и модем 27 демодулирует информацию. Подобно передатчику 24, приемник 26 может включать в себя схемы, предназначенные для приема данных, включающие усилители, фильтры и одну или более антенн. В некоторых случаях передатчик 24 и/или приемник 26 могут быть включены в единый компонент приемопередатчика, который включает в себя как принимающую, так и передающую схемы. Модем 27 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для демодуляции сигнала. В некоторых случаях модемы 23, 27 могут включать в себя компоненты для выполнения как модуляции, так и демодуляции.
В свою очередь, процесс кодирования видео, осуществленный видеокодером 22, может реализовывать одну или более технологий, описанных здесь, в течение компенсации движения. Процесс декодирования видео, осуществленный видеодекодером 28, может также осуществлять такие способы в течение своей стадии компенсации движения процесса декодирования. Термин «кодер» используют здесь для обозначения специализированного компьютерного устройства или устройства, которое осуществляет кодирование видео или декодирование видео. Термин «кодер» в целом относится к любому видеокодеру, видеодекодеру или комбинированному кодеру/декодеру (кодеку). Термин «кодирование» относится к преобразованию в код или декодированию. Устройство 30 отображения отображает декодированные видеоданные пользователю и может содержать любое из различных устройств отображения, таких как электронно-лучевая трубка (ЭЛТ), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
В примере фиг.1, канал 15 связи может содержать любую беспроводную или проводную среду, такую как радиочастотный (РЧ) спектр или одна или более физических линий передачи или любое сочетание беспроводных и проводных сред. Канал 15 связи может образовывать часть сети с коммутацией пакетов, такой как локальная сеть, территориально-распределительная сеть или глобальная сеть, такая как Интернет. Канал 15 связи обычно представляет любую подходящую среду связи или совокупность разных сред связи для передачи видеоданных от устройства 12 источника устройству 16 назначения. Канал 15 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно, чтобы способствовать передаче от устройства 12 источника устройству 16 назначения.
Видеокодер 22 и видеодекодер 28 могут работать согласно стандарту видеосжатия, такому как стандарт ITU-T H.264, по-другому описанный как MPEG-4, Part 10, Усовершенствованное видеокодирование (AVC). Способы этого раскрытия, однако, не ограничены любым конкретным стандартом видеокодирования. Несмотря на то, что не показано на фиг.1, в некоторых аспектах видеокодер 22 и видеодекодер 28 могут каждый быть объединены со звуковым кодером и декодером и могут включать в себя соответствующие блоки мультиплексор-демультиплексор или другое аппаратное обеспечение, программное обеспечение, чтобы обращаться с кодированием и звуковых сигналов, и видеосигналов в общем потоке данных или раздельных потоках данных. Если это применимо, блоки мультиплексор-демультиплексор могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
Видеокодер 22 и видеодекодер 28 каждый может быть реализован как один или более микропроцессоров, цифровых сигнальных процессоров (DSPs), интегральных схем специального применения (ASICs), программируемых пользователем вентильных матриц (FPGAs), дискретная логика, программное обеспечение, аппаратное обеспечение, встроенные программы или любое их сочетание. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или более кодеров и декодеров, любой из которых может быть интегрирован как часть комбинированного кодека, который предоставляет возможности кодирования и декодирования в соответственном мобильном устройстве, абонентском устройстве, вещательном устройстве, сервере или тому подобном.
Видеопоследовательность типично включает в себя ряд видеокадров. Видеокодер 22 работает с видеоблоками в отдельных видеокадрах для того, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированные или меняющиеся размеры и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр включает в себя ряд секций. Каждая секция может включать в себя ряд макроблоков, которые могут быть размещены в подблоках. В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее предсказание в различных размерах блоков, таких как 16 на 16, 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 суммирует блок предсказаний с восстановленным остаточным блоком, чтобы произвести восстановленный видеоблок для отображения. Более подробная информация о каждом этапе процесса декодирования, осуществленного видеодекодером 28, будет описана более подробно ниже на фиг.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). Фильтр 39 может быть включен в блок 32 предсказания и может быть задействован одним или обоими из блока 35 ME и блока 37 MC для осуществления интерполяционной или интерполяционноподобной фильтрации, как части оценки движения и/или компенсации движения, согласно этому раскрытию. Фильтр 39 может фактически представлять множество разных фильтров, чтобы способствовать многочисленным разным типам интерполяции и фильтрации интерполяционного типа, как здесь описано. Таким образом, блок 32 предсказания может включать в себя множество интерполирующих или интерполяционноподобных фильтров. В течение процесса кодирования видеокодер 50 принимает видеоблок, который будет кодирован (обозначено «видеоблок» на фиг.2), блок 32 предсказания осуществляет кодирование с внешним предсказанием для генерирования блока предсказаний (обозначено «блок предсказаний» на фиг.2). В частности, блок 35 ME может осуществлять оценку движения для идентификации блока предсказаний в памяти 34, и блок 37 MC может осуществлять компенсацию движения для генерирования блока предсказаний.
Оценка движения типично считается процессом генерирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение блока предсказаний в пределах кадра предсказания или опорного кадра (или другой кодированной единицы, например, секции) относительно блока, который будет кодирован, в пределах текущего кадра (или другой кодированной единицы). Опорный кадр (или участок кадра) может быть временно расположен до или после видеокадра (или участка видеокадра), к которому принадлежит текущий видеоблок. Компенсация движения типично считается процессом извлечения или генерирования блока предсказаний из памяти 34, или, возможно, интерполирования или генерирования иным способом фильтрованных предсказывающих данных на основе вектора движения, определенного оценкой движения.
Блок 35 ME выбирает соответствующий вектор движения для видеоблока, который будет кодирован, посредством сравнения видеоблока с видеоблоками одного или более опорных кадров (например, предшествующего и/или последующего кадра). Блок 35 ME может осуществлять оценку движения с дробнопиксельной точностью, иногда называемой дробнопиксельной или субпиксельной оценкой движения. Как таковые, термины дробнопиксельная или субпиксельная оценка движения могут быть использованы взаимозаменяемо. В дробнопиксельной оценке движения, блок 35 ME может выбирать вектор движения, который указывает смещение в положение другое, чем положение целого пикселя. Таким образом, дробнопиксельная оценка движения позволяет блоку 32 предсказания отслеживать движение с более высокой точностью, чем положения целых пикселей (или полных пикселей), и тем самым генерировать более точный блок предсказаний. Дробнопиксельная оценка движения может иметь полупиксельную точность, четвертьпиксельную точность одна восьмая-пиксельную точность или любую лучшую точность. Блок 35 ME может задействовать фильтр(ы) 39 для любых необходимых интерполяций в течение процесса оценки движения.
Для осуществления дробнопиксельной компенсации движения, блок 37 MC может осуществлять интерполяцию (иногда называемую интерполяционная фильтрация) для того, чтобы генерировать данные с субпиксельным разрешением (названные здесь значениями субпикселей или дробными значениями пикселей). Блок 37 MC может задействовать фильтр(ы) 39 для этой интерполяции. Блок 32 предсказания может осуществлять интерполяцию (или интерполяционноподобную фильтрацию целых пикселей), используя способы, описанные здесь.
После того как вектор движения для видеоблока, который будет кодирован, выбран блоком 35 ME, блок 37 MC генерирует видеоблок предсказаний, связанный с этим вектором движения. Блок 37 MC может извлекать блок предсказаний из памяти 34 на основании вектора движения, определенного блоком 35 ME. В случае вектора движения с дробнопиксельной точностью, блок 37 MC фильтрует данные из памяти 34, чтобы интерполировать такие данные до субпиксельного разрешения, например, задействовав фильтр(ы) 39 для этого процесса. В некоторых случаях, интерполяционный способ фильтрации или режим, который был использован для генерирования данных предсказания субпикселей, может быть указан как один или более интерполяционных элементов синтаксиса блоку 46 статистического кодирования для включения в кодированный битовый поток. В действительности, некоторые аспекты этого раскрытия касаются использования симметрии пикселей и симметрии коэффициентов для уменьшения количества синтаксиса, который должен быть передан.
После того как блок 32 предсказания сгенерировал блок предсказаний, видеокодер 50 образует остаточный видеоблок (обозначен «остаточный блок» на фиг.2) вычитанием блока предсказаний из исходного видеоблока, который кодируют. Сумматор 48 представляет компонент или компоненты, которые осуществляют эту операцию вычитания. Блок 38 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование, к остаточному блоку, производя видеоблок, содержащий остаточные коэффициенты преобразуемого блока. Блок 38 преобразования, например, может осуществлять другие преобразования, такие как те, что заданы стандартом H.264, которые концептуально подобны DCT. Вейвлет-преобразования, целочисленные преобразования, поддиапазонные преобразования или другие типы преобразований могли бы также быть использованы. В любом случае блок 38 преобразования применяет преобразование к остаточному блоку, производя блок остаточных коэффициентов преобразования. Преобразование может переводить остаточную информацию из пиксельной области в частотную область.
Блок 40 квантования квантует остаточные коэффициенты преобразования для дополнительного уменьшения скорости передачи. Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. После квантования, блок 46 статистического кодирования статистически кодирует квантованные коэффициенты преобразования. Например, блок 46 статистического кодирования может осуществлять CAVLC, CABAC или другой способ статистического кодирования.
Блок 46 статистического кодирования может также кодировать один или более элементов синтаксиса предсказания, полученных от блока 32 предсказания или другого компонента видеокодера 50. Один или более элементов синтаксиса предсказания могут включать в себя режим кодирования, один или более векторов движения, способ интерполяции, который был использована для генерирования данных субпикселей, набора или поднабора коэффициентов фильтра или другой информации, связанной с генерацией блока предсказаний. Блок 41 квантования и предсказания коэффициентов может кодировать с предсказанием и квантовать синтаксис предсказания, такой как коэффициенты фильтра, согласно некоторым аспектам этого раскрытия. После статистического кодирования блоком 46 статистического кодирования закодированный видеосигнал и элементы синтаксиса могут быть переданы другому устройству или заархивированы для последующей передачи или поиска.
Блок 42 обратного квантования и блок 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для восстановления остаточного блока в пиксельной области, например для последующего использования в качестве опорного блока. Восстановленный остаточный блок (обозначен «восстановленный остаточный блок» на фиг.2) может представлять восстановленный вариант остаточного блока, предоставленного блоку 38 преобразования. Восстановленный остаточный блок может отличаться от остаточного блока, сгенерированного сумматором 48 вследствие потери четкости, вызванной операциями квантования и обратного квантования. Сумматор 51 складывает восстановленный остаточный блок с блоком предсказаний со скомпенсированным движением, произведенным блоком 32 предсказания, чтобы произвести восстановленный видеоблок для хранения в памяти 34. Восстановленный видеоблок может быть использован блоком 32 предсказания в качестве опорного блока, который может быть использован, чтобы впоследствии кодировать блок в последующем видеокадре или последующей кодированной единице.
Как описано выше, блок 32 предсказания может осуществлять оценку движения с дробнопиксельной (или субпиксельной) точностью. Когда блок 32 предсказания использует дробнопиксельную оценку движения, блок 32 предсказания может генерировать данные с субпиксельным разрешением (например, значения субпикселей или дробные значения пикселей), используя интерполяционные операции, описанные в этом раскрытии. Другими словами, интерполяционные операции используют для вычисления значений в позициях между позициями целых пикселей. Позиции субпикселей, расположенные на половине расстояния между положениями целых пикселей, могут быть названы позициями полупикселей, позиции субпикселей, расположенные на половине расстояния между положением целого пикселя и положением полупикселя, могут быть названы позициями четвертьпикселей, позиции субпикселей, расположенные на половине расстояния между положением целого пикселя (или положением полупикселя) и положением четвертьпикселя, называют положением одной восьмой пикселя, и так далее.
Фиг.3 является концептуальной схемой, иллюстрирующей позиции целых (или полных) пикселей, связанные с данными предсказания, и позиции субпикселей (или дробных пикселей), связанные с интерполированными данными предсказания. В концептуальной иллюстрации фиг.3 разные квадраты представляют положения или позиции пикселей и субпикселей в кадре или блоке кадра. Заглавные буквы (в квадратах со сплошными линиями) представляют положения целых пикселей, тогда как маленькие буквы (в квадратах с пунктирными линиями) представляют положения субпикселей. В частности, положения A1-A6, B1-B6, C1-C6, D1-D6 E1-E6 и F1-F6 пикселей представляют матрицу 6 на 6 положений целых пикселей в пределах кадра, секции или другой кодированной единицы. Положения от «a» до «o» субпикселей представляют пятнадцать положений субпикселей, связанных с целым пикселем C3, например, между положений целых C3, C4, D3 и D4 пикселей. Подобные положения субпикселей могут существовать для положения каждого целого пикселя. Положения от «a» до «o» субпикселей представляют каждое положение полупикселя и четвертьпикселя, связанное с целым пикселем C3.
Положения целых пикселей могут быть связаны с физическим чувствительным элементом, таким как фотодиод, когда видеоданные были первоначально сгенерированы. Фотодиод может измерять интенсивность источника света в местоположении датчика и связывать значение интенсивности пикселя с положением целого пикселя. В свою очередь, каждое положение целого пикселя может иметь связанный набор пятнадцати положений субпикселей (или возможно более). Число положений субпикселей, связанных с положениями целых пикселей, может зависеть от требуемой точности. В примере, иллюстрированном на фиг.3, требуемая точность является четвертьпиксельной точностью, и в этом случае каждое из положений целых пикселей соответствует пятнадцати разным позициям субпикселей. Больше или меньше позиций субпикселей может быть связано с каждым положением целого пикселя на основе требуемой точности. Для полупиксельной точности, например, каждое положение целого пикселя может соответствовать трем позициям субпикселей. В качестве другого примера, каждое из положений целого пикселя может соответствовать шестидесяти трем позициям субпикселей для точности одна восьмая пикселя. Каждое положение пикселя может задавать одно или более значений пикселя, например одно или более значений яркости и цветности.
Y может представлять яркость, а Cb и Cr могут представлять два разных значения цветности трехмерного цветового пространства YCbCr. Каждое положение пикселя может задавать три значения пикселя для трехмерного цветового пространства. Однако в целях простоты, способы этого раскрытия, могут относиться к предсказанию в отношении одной размерности. В той же мере, как способы описаны в отношении значений пикселей в одной размерности, подобные способы могут быть распространены и на другие размерности.
В примере фиг.3, положения субпикселей, связанные с целым пикселем C3, иллюстрированы для четвертьпиксельной точности. Пятнадцать позиций субпикселей, связанных с целым пикселем C3 обозначены как «a», «b», «c», «d», «e», «f», «g», «h», «i», «j», «k», «l», «m», «n» и «o». Большинство других дробных положений, связанных с другими положениями целых пикселей, не показаны для простоты (кроме тех, которые использованы для генерирования одного или более из 15 разных дробных положений, связанных с целым пикселем C3, как описано более подробно ниже). Положения «b», «h» и «j» субпикселей могут быть названы положениями полупикселей и положения «a», «c», «d», «e», «f», «g», «i», «k», «l», «m» и «o» субпикселей могут быть названы положениями четвертьпикселей.
Блок 32 предсказания видеокодера 50 может определять значения пикселей для положений от «a» до «o» субпикселей, используя интерполяционную фильтрацию блоком 37 MC. В соответствии со стандартом ITU-T H.264, например, блок 32 предсказания может определять значения пикселей для положений полупикселей, используя 6-точечный интерполирующий фильтр, такой как фильтр Винера. В случае стандарта H.264, коэффициентами фильтра для 6-точечного интерполирующего фильтра являются типично [1, -5, 20, 20, -5, 1], несмотря на то, что могут быть использованы и другие коэффициенты. Блок 32 предсказания может применять интерполирующий фильтр сначала в горизонтальном направлении и затем в вертикальном направлении или наоборот. Для позиций «b» и «h» полупикселей, каждая точка может соответствовать позиции целого пикселя в горизонтальном и вертикальном направлении соответственно. В частности, для позиции «b» полупикселя точки 6-точечного фильтра соответствуют C1, C2, C3, C4, C5 и C6. Таким же образом для позиции «h» полупикселя точки 6-точечного фильтра соответствуют A3, B3, C3, D3, E3 и F3. Например, значения пикселей для позиций «b» и «h» субпикселей могут быть вычислены, используя уравнения (1) и (2):
b=((C1-5*C2+20*C3+20*C4-5*C5+C6)+16)/32(1)
h=((A3-5*B3+20*C3+20*D3-5*E3+F3)+16)/32(2)
Для позиции «j» полупикселя, точки 6-точечного фильтра соответствуют своим интерполированным горизонтально между позициями C1-C6 и D1-D6 или вертикально между позициями A3-F3 и A4-F4. Положение «j» полупикселя может быть вычислено 6-точечным фильтром, который использует ранее интерполированные значения пикселей позиций полупикселей, например, согласно одному из уравнений (3) или (4):
j=((aa-5*bb+20*b+20*hh-5*ii+jj)+16)/32(3)
j=((cc-5*dd+20*h+20*ee-5*ff+gg)+16)/32(4)
где (как иллюстрировано на фиг.3) aa соответствует интерполяции между A3 и A4, bb соответствует интерполяции между B3-B4, b соответствует интерполяции между C3 и C4, hh соответствует интерполяции между D3 и D4, ii соответствует интерполяции между E3 и E4 и jj соответствует интерполяции между F3 и F4. В уравнении 4, cc соответствует интерполяции между C1 и D1, dd соответствует интерполяции между C2 и D2, h соответствует интерполяции между C3 и D3, ee соответствует интерполяции между C4 и D4, ff соответствует интерполяции между C5 и D5 и gg соответствует интерполяции между C6 и D6.
В соответствии со стандартом H.264 блок 32 предсказания может определять значения пикселей в положениях «a», «c», «d», «e», «f», «g», «i», «k», «l», «m», «n» и «o» четвертьпикселей, используя билинейный интерполирующий фильтр и значения пикселей окружающих положений целых и полупикселей. Например, блок 32 предсказания может определять значения пикселей, связанные с позицией «a» субпикселя, используя значения пикселей C3 и «b», определять значения пикселей, связанные с позицией «c» субпикселя, используя значения пикселей «b» и C4 и тому подобное.
Фактический фильтр, который применяет блок 37 MC, чтобы генерировать интерполированные данные в положениях субпикселей, может представлять широкий ряд реализаций. В качестве одного примера блок 32 предсказания может использовать адаптивную интерполяционную фильтрацию (AIF), как описано ниже, чтобы задавать интерполированные значения. Комитет ITU-T SG16/Q.6/VCEG (Группы экспертов по видеокодированию) изучает способы кодирования, которые дают более высокую эффективность кодирования, чем H.264 и, в частности AIF. AIF дает большой выигрыш кодирования над интерполяционной фильтрацией, используемой в стандарте H.264, особенно на видеопоследовательности с высоким разрешением (например, 720i/p или 1080i/p). В AIF интерполирующий фильтр для каждой позиции субпикселей аналитически вычисляет для каждого видеокадра посредством минимизации энергии ошибки предсказания. Это помогает решать проблемы эффекта наложения, ошибки квантования и оценки движения, шумы камеры или другие характерные проблемы, содержащиеся в исходном и опорном видеокадрах. Аналитически выведенные коэффициенты адаптивного фильтра для каждого кадра затем предсказывают, квантуют, кодируют и отправляют в битовый видеопоток. Некоторые способы этого раскрытия могли бы работать в схеме AIF, так же как многие другие интерполяционные схемы.
Существует много разных типов схем AIF в соответствии с аспектами этого раскрытия. Например, первая схема является двумерной неразделимой AIF (NS-AIF), вторая является разделимой AIF (S-AIF) и третья является AIF с направленными фильтрами (D-AIF). Несмотря на то, что каждая из этих схем AIF использует разные интерполяционные способы и поддержку, все три схемы AIF могут использовать подобные аналитические процессы для выведения коэффициентов фильтра, которые объяснены ниже, используя неразделимую AIF в качестве примера.
h
P
P
P
P
P
p
SP
SP
i,j
i,j
0,0
5,0
5,0
5,5
SP
SP
Предположим, что 6 на 6 двумерный неразделимый фильтр имеет коэффициенты  , где i,j=0...5 и SP представляет одну из 15 позиций субпикселей (от «a» до «o»), показанных на фиг.3. Обратите внимание, что 6 из 15 позиций субпикселей, т.е. «a», «b», «c», «d», «h» и «l», являются одномерными (1D) позициями субпикселей, и блок 32 предсказания может использовать 6-точечный интерполирующий фильтр для интерполяции таких данных. Позиции «a», «b», «c», «d», «h» и «l» субпикселей являются 1D в том смысле, что они расположены по горизонтальной или вертикальной линии между двумя позициями целых пикселей. Также предположим, что пиксели предсказания в позиции целого пикселя (от A1 до F6 на фиг.3) в опорном кадре принимают значения пикселей , где i,j=0...5. То есть A1 принимает значение ,..., A6 принимает значение ,..., F1 принимает значение,..., F6 принимает значение. Тогда интерполированное значение  в позиции  субпикселя,  ∈ {a,...,o}, может быть вычислено блоком 32 предсказания, используя следующее уравнение:
S
x,y
Пусть  будет значением пикселя в текущем видеокадре в позиции (x,y).
mvx, mvy
mvx
mvy
FO
FO
SP
SP
SP
2
SP
2
где () является вектором движения, (,) является целым компонентом вектора движения и  является сдвигом фильтра. Значение  является соответствующей позицией пикселя в опорном кадре. Например, в случае 6-точечного фильтра, =6/2-1=2. Для каждой позиции  субпикселя, энергия (e) ошибки предсказания между фактическим значением пикселя в текущем кадре и интерполированным значением может быть накоплена блоком 32 предсказания для всех пикселей, которые имеют точность вектора движения, соответствующую позиции  субпикселя. Энергия (e) ошибки предсказания может быть вычислена блоком 32 предсказания, используя следующее уравнение:
SP
2
SP
h
SP
i,j
Для каждой из позиций субпикселей от a до o, блок 37 MC может устанавливать индивидуальный набор уравнений посредством вычисления производной (e) в отношении коэффициентов  фильтра. Число уравнений, в этом случае, равно числу коэффициентов фильтра, использованных для текущей позиции  субпикселя. Для каждой двумерной (2D) позиции «e», «f», «g», «i», «j», «k», «m», «n» и «o» субпикселя блок 32 предсказания может использовать 6-на-6-точечный 2D интерполирующий фильтр. Позиции «e», «f», «g», «i», «j», «k», «m», «n» и «o» субпикселей являются 2D в том смысле, что они не расположены по горизонтальной линии или вертикальной линии между двумя позициями целых пикселей. В этом случае система из тридцати шести уравнений с тридцатью шестью неизвестными может быть решена блоком 37 MC. Оставшимся 1D позициям «a», «b», «c», «d», «h» и «l» субпикселей может потребоваться только 1D интерполирующий фильтр (например, 1D 6-точечный интерполирующий фильтр). В случае 1D 6-точечного фильтра, система их шести уравнений может быть решена блоком 37 MC.
Фильтр(ы) 39 может представлять один фильтр или набор из многих разных фильтров, которые могут быть использованы блоком 37 MC для генерирования предсказывающих данных.
Таким образом, процесс одного примера для выведения и применения фильтров AIF может иметь следующие этапы, которые могут быть осуществлены блоком 32 предсказания:
mvx, mvy
1. Оценивают векторы () движения для каждого видеоблока, который будут кодировать. В течение оценки движения может быть применен неперестраиваемый интерполирующий фильтр (например, процесс интерполяции H.264/AVC).
SP
h
SP
i,j
SP
2. Используя эти векторы движения, накапливают энергию ошибок предсказания для каждой позиции  субпикселя по текущему видеокадру. Затем вычисляют коэффициенты  адаптивного фильтра независимо для каждой позиции  субпикселя посредством минимизации энергии ошибок предсказания, как в двух уравнениях энергии предсказания выше.
3. Оценивают новые векторы движения. В течение процесса оценки движения могут быть применены адаптивные интерполирующие фильтры, вычисленные на этапе 2. Используя адаптивные интерполирующие фильтры, уменьшают ошибки оценки движения, вызванные эффектом наложения, шумами камеры и т.д. и достигают лучшего предсказания движения.
Другие схемы AIF могут использовать те же аналитические процессы, как приведено выше. Различия между разными схемами в основном заключаются в числе использованных уникальных коэффициентов фильтров, независимо от того являются ли интерполирующие фильтры разделимыми или неразделимыми, и использованной поддержке фильтра (т.е., позиций целых пикселей, использованных для интерполяции, по меньшей мере, участка позиций субпикселей). В каждой из этих схем некоторые ограничения симметрии могут быть наложены на фильтры AIF для уменьшения числа коэффициентов фильтра, которые должны быть закодированы и отправлены в битовый видеопоток.
Для NS-AIF, например, блок 37 MC блока 32 предсказания может интерполировать 1D позиции «a», «b», «c», «d», «h» и «l» субпикселей, используя 1D 6-точечный интерполирующий фильтр (также названный 6-позиционным фильтром, так как каждая точка соответствует позиции целого пикселя), который требует шесть коэффициентов. Шесть коэффициентов 6-позиционного фильтра, использованного для интерполяции 1D субпикселей, каждый соответствует одной из позиций целых пикселей, иллюстрированных на фиг.3. Например, для позиции «a», «b» и «c» субпикселей шестью позициями целых пикселей, соответствующих коэффициентам, являются C1, C2, C3, C4, C5 и C6, и для позиции «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. Два типа симметрии, т.е. симметрия пикселей и симметрия коэффициентов, могут быть наложены отдельно или в сочетании. Симметрия пикселей принудительно применяет один и тот же набор коэффициентов фильтра (и зеркальные, перевернутые и/или повернутые варианты набора) для разных позиций субпикселей. Симметрия пикселей также может быть названа симметрией субпикселей, поскольку такая симметрия пикселей применяется в отношении коэффициентов фильтра, связанных с двумя или более положениями субпикселей. Симметрия коэффициентов, с другой стороны, принудительно применяет данный интерполирующий фильтр, который будет симметричным в некотором направлении (например, в горизонтальном направлении, вертикальном направлении или в обоих направлениях), для различных позиций поддержки фильтра относительно других позиций поддержки фильтра для данных значений субпикселей, которые будут интерполированы.
h
h
h
h
h
h
p
p
0
1
5
5
4
0
a
a
a
a
a
a
a
c
Симметрия пикселей может быть использована в NS-AIF. Обращаясь снова к фиг.3, пусть  ,  ,...,  будет набором коэффициентов фильтра для позиции «a» субпикселя, тогда набором коэффициентов фильтра для позиции «c» субпикселя является  , ,..., , т.е. те же коэффициенты в обратном порядке или горизонтально перевернутые. То есть, значение  пикселя предсказания в позиции «a» субпикселя и значение  пикселя предсказания в позиции «c» субпикселя может быть вычислено, используя (8) и (9), соответственно.
p
h
h
h
h
h
h
a
a
a
a
a
a
a
0
1+
1
2+
2
3+
3
4+
4
5+
5
6
= ∙С ∙С ∙С ∙С ∙С ∙С(8)
p
h
h
h
h
h
h
c
a
a
a
a
a
a
5
1+
4
2+
3
3+
2
4+
1
5+
6
= ∙С ∙С ∙С ∙С ∙С∙С(9)
Позиции «d» и «l» субпикселей могут быть интерполированы, используя тот же набор интерполяционных коэффициентов фильтра, как позиции «a» и «c» субпикселей, соответственно. Как таковые, позиции «a» и «c» субпикселей могут иметь симметрию пикселей относительно позиций «d» и «l» субпикселей.
Один аспект этого раскрытия заключается в фактическом устранении симметрии пикселей между позициями «a» и «c» субпикселей относительно позиций «d» и «l» субпикселей. Кроме этого, симметрии пикселей можно избежать для позиции «f» субпикселя относительно позиции «i» субпикселя. Кроме этого, симметрии пикселей можно избежать для позиции «k» субпикселя относительно позиции «n» субпикселя. В таких случаях диагональная корреляция может быть низкой, делая ее в этих случаях неэффективной или безрезультатной для наложения диагональной симметрии.
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
0,0
0,1
0,5
5,0
5,1
5,5
0,5
0,4
0,0
5,5
5,4
5,0
5,0
5,1
5,5
0,0
0,1
0,5
5,5
5,4
5,0
0,5
0,4
0,0
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
В качестве другого примера, пусть  ,  ,...,  ,..., , ,...,  будет набором 6 на 6 2D коэффициентов фильтра для позиции «e» субпикселя. Тогда набором коэффициентов фильтра для позиции «g» субпикселя является  ,  ,...,  ,..., , ,...,  (горизонтально перевернутый вариант). Подобно этому набором коэффициентов фильтра для позиции «m» субпикселя является , ,...,  ,..., ,  ,...,  (вертикально перевернутый вариант), и набором коэффициентов фильтра для позиции «o» субпикселя является  , ,..., ,..., ,  ,...,  (сначала горизонтально перевернутые а затем вертикально перевернутые). Как таковые, позиции «e», «g», «m» и «o» субпикселей имеют симметрию пикселей. Симметрия между позициями «b» и «h» субпикселей и между позициями «f», «i», «k» и «n» наложена подобным образом, как в приведенных выше примерах. При таком ограничении симметрии пикселей остается только пять групп уникальных наборов фильтра, первый набор коэффициентов фильтра для группы «a», «c», «d» и «l» субпикселей, второй набор коэффициентов фильтра для группы «b» и «h» субпикселей, третий набор коэффициентов фильтра для группы «e», «g», «m» и «o» субпикселей, четвертый набор коэффициентов фильтра для группы «f», «i», «k» и «n» субпикселей и пятый набор коэффициентов фильтра для группы «j» субпикселей.
Кроме того, NS-AIF может накладывать ограничение симметрии коэффициентов на некоторые из этих наборов фильтра отдельно или в сочетании с симметрией субпикселей, описанной выше. В некоторых случаях диагональной симметрии коэффициентов можно специально избежать, например, исключая любые ограничения диагональной симметрии коэффициентов. В одном случае никакая симметрия коэффициентов не наложена на фильтр для первой группы позиций субпикселей, которая включает в себя положения «a», «c», «d» и «l» субпикселей. Однако вторая группа позиций субпикселей, которая включает в себя коэффициент «b» и «h», может иметь симметрию коэффициентов согласно уравнению (10).
Таким же образом, коэффициенты для интерполирующих фильтров для третьей, четвертой и пятой групп позиций субпикселей которые включают в себя положения «e», «f» и «j» субпикселей, соответственно, могут иметь симметрию коэффициентов, как приведено в уравнениях (11), (12) и (13) соответственно.
При таких ограничениях симметрии пикселей и симметрии коэффициентов, описанных выше, число уникальных коэффициентов фильтра может быть уменьшено с 360 (нет ограничения симметрии) до 6(a)+3(b)+21(e)+18(f)+6(j)=54 коэффициента, т.е. 6 коэффициентов для группы, включающей в себя позицию «a» субпикселя, 3 коэффициента для группы, включающей в себя позицию «b» субпикселя, 21 коэффициент для группы, включающей в себя позицию «e» субпикселя, 18 коэффициентов для группы, включающей в себя позицию «f» субпикселя, и 6 коэффициентов для группы, включающей в себя позицию «j» субпикселя. Таким образом, в NS-AIF видеокодер 22 может кодировать и передает пятьдесят четыре коэффициента вместо 360, как в случае отсутствия ограничений симметрии. Как описано выше, пятьдесят четыре коэффициента могут быть аналитически решены на основе вышеприведенного уравнения (7). Видеокодер 50 может затем предсказывать, квантовать, кодировать (например, используя экспоненциальный код Голомба со знаком) и отправлять коэффициенты в битовый поток. Дополнительные подробности о кодировании с предсказанием коэффициентов фильтра обсуждаются более подробно ниже. Блок 41 квантования и предсказания коэффициентов может быть использован для кодирования с предсказанием и квантования коэффициентов фильтра в соответствии с этим раскрытием.
В другой схеме AIF, т.е. S-AIF, блок 32 предсказания может использовать разделимые интерполирующие фильтры в горизонтальном направлении и в вертикальном направлении вместо неразделимых интерполирующих фильтров, как использовано в NS-AIF. Для 1D позиций субпикселей блок 32 предсказания (например, блок 35 MC) применяет только горизонтально направленные фильтры или только вертикально направленные фильтры, в зависимости от положения субпикселя. В одном примере горизонтально и вертикально направленные фильтры содержат 6-позиционные (6-точечные) фильтры. Блок 32 предсказания применяет горизонтально направленные фильтры для позиций «a», «b» и «c» субпикселей с позициями целых пикселей C1, C2, C3, C4, C5 и C6 (см. фиг.3) как поддержку фильтра и применяет вертикально направленные фильтры для позиций «d», «h» и «l» субпикселей с позициями целых пикселей A3, B3, C3, D3, E3 и F3 как поддержку фильтра. Для оставшихся позиций субпикселей, т.е. 2D позиций субпикселей, блок 32 предсказания применяет сначала горизонтальную фильтрацию, а затем вертикальную фильтрацию или вертикальную фильтрацию, а затем горизонтальную фильтрацию. В свою очередь, коэффициенты фильтра, использованные для разделимых горизонтальных и вертикальных фильтров могут быть вычислены согласно вышеприведенному уравнению (7). Без любой симметрии S-AIF может уменьшить число коэффициентов, которые должны быть кодированы и отправлены, до 144 коэффициентов из 360 коэффициентов, как и в случае NS-AIF без какой-либо симметрии.
h
h
h
h
h
h
h
h
h
h
h
h
0
1
5
0
1
5
0
1
5
5
4
0
a
a
a
c
c
c
d
d
d
d
d
d
S-AIF может дополнительно наложить одно или более ограничений симметрии, по меньшей мере, на несколько из интерполирующих фильтров. В отличие от симметрии субпикселей NS-AIF, с S-AIF наборы фильтров, использованные для позиций «a» и «c» субпикселей, не являются симметричными, т.е. горизонтально перевернутыми вариантами друг друга. Вместо этого коэффициенты наборов фильтров, использованных для позиций «a» и «c» субпикселей, выводят независимо друг от друга, как  , ,...,  и  , ,..., , соответственно. Для каждой позиции субпикселя, которая имеет вертикальное перемещение, симметрия субпикселей подобна NS-AIF. То есть коэффициенты для позиций «d» и «l» субпикселей, коэффициенты для позиций «e» и «m» субпикселей, коэффициенты для позиций «f» и «n» субпикселей и коэффициенты для позиций «g» и «o» субпикселей являются вертикально перевернутыми вариантами друг друга, соответственно. Например, если коэффициентами вертикального фильтра для позиции «d» субпикселя являются  , ,..., , тогда коэффициентами вертикального фильтра для позиции «l» субпикселя являются  , ,..., . Таким образом, симметрия субпикселей, использованная в S-AIF, имеет только вертикальную симметрию субпикселей в одной размерности. Однако S-AIF не имеет горизонтальной симметрии субпикселей. Симметрия субпикселей в S-AIF может уменьшить число коэффициентов, которые должны быть закодированы и отправлены, от 144 коэффициентов до 102 коэффициентов.
SP
SP
S-AIF, как и NS-AIF, может также использовать симметрию коэффициентов, чтобы дополнительно уменьшить число коэффициентов, которое должно быть закодировано и отправлено видеокодером 50. Симметрия коэффициентов, использованная в S-AIF, может быть такой же, как в NS-AIF, за исключением того, что в S-AIF есть только 1D (горизонтальные или вертикальные) 6-точечные фильтры. Другими словами, нет 6 на 6 2D фильтров. В S-AIF для каждой позиции  субпикселя, ∈ {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» субпикселей. Направленные фильтры могут содержать шесть точечных фильтров, и коэффициенты могут иметь симметрию, так что должен быть передан только поднабор коэффициентов. Как здесь описано, поддержка фильтра относится к позициям пикселей из опорного кадра, который используют в интерполяции позиций субпикселей. Блок 37 MC может вычислять позиции «e» и «o» субпикселей 6-позиционным (или 6-точечным) диагональным интерполирующим фильтром, который имеет позиции A1, B2, C3, D4, E5 и F6 целых пикселей в качестве поддержки фильтра. Блок 32 предсказания может вычислять позиции «g» и «m» субпикселей 6-позиционным диагональным интерполирующим фильтром, который имеет позиции A6, B5, C4, D3, E2 и F1 целых пикселей в качестве поддержки фильтра. Блок 32 предсказания может вычислять позиции «f», «i», «j», «k» и «n» субпикселей 12-позиционным диагональным интерполирующим фильтром, который имеет позиции A1, B2, C3, D4, E5, F6, A6, B5, C4, D3, E2 и F1 целых пикселей в качестве поддержки фильтра.
D-AIF может использовать ту же симметрию субпикселей и коэффициентов, как описано выше в отношении NS-AIF. Исходя из симметрии субпикселей существует пять уникальных наборов коэффициентов фильтра для интерполяции пятнадцати позиций субпикселей c позициями «a», «c», «d» и «l» субпикселей, совместно использующими те же коэффициенты фильтра (например, зеркальные, перевернутые и/или повернутые варианты), позициями «e», «g», «m» и «o» субпикселей, совместно использующими те же коэффициенты фильтра (например, зеркальные, перевернутые и/или повернутые варианты), позициями «b» и «h» субпикселей, совместно использующими те же коэффициенты фильтра («b» при горизонтальном фильтре и «h» при вертикальном фильтре), позициями «f», «i», «k» и «n» субпикселей, совместно использующими те же коэффициенты фильтра (например, зеркальные, перевернутые и/или повернутые варианты), и позицией «j» субпикселя, имеющей свой собственный набор коэффициентов фильтра.
Исходя из симметрии коэффициентов коэффициенты фильтра для первой группы субпикселей, включающей в себя «a», «c», «d» и «l», используют 1D 6-позиционный фильтр, имеющий шесть уникальных коэффициентов (т.е., первая группа несимметричная), коэффициенты фильтра для второй группы «b» и «h» субпикселей, используют 1D 6-позиционный фильтр, имеющий три уникальных коэффициента (т.е., b симметричный), и третий набор коэффициентов фильтра для группы «e», «g», «m» и «o» субпикселей использует направленный 6-позиционный фильтр, имеющий шесть уникальных коэффициентов. Четвертый набор коэффициентов фильтра для группы «f», «i», «k» и «n» использует 12-точечный фильтр, имеющий 6 уникальных коэффициентов, и пятый набор коэффициентов фильтра для группы «j», имеющий три уникальных коэффициента. Полным числом уникальных коэффициентов в схеме D-AIF является 6(a)+3(b)+6(e)+6(f)+3(j)=24 коэффициента. Эти коэффициенты фильтра могут быть предсказаны, квантованы, кодированы и отправлены в битовый видеопоток.
Блок 37 MC блока 32 предсказания может использовать один или более интерполяционных способов, описанных здесь, чтобы повысить точность интерполяции позиций субпикселей и/или уменьшить число интерполяционных коэффициентов фильтра, которые должны быть закодированы и переданы. Описанное более подробно ниже является полезной поддержкой двенадцатипиксельного фильтра с радиальной формой, которая может быть использована для интерполяции, способы, которые используют симметрию коэффициентов и симметрию пикселей для уменьшения количества данных, которое должно быть отправлено между кодером и декодером, чтобы сформировать поддержку фильтра для интерполяции, технологиями для устранения некоторых аспектов симметрии относительно обычных способов и способов для фильтрации данных в положениях целых пикселей способом, который подобен субпиксельной интерполяции. Также описаны способы сдвига. Кроме этого, также описаны способы для выбора между интерполирующими фильтрами и способы для кодируемых с предсказанием коэффициентов фильтра.
Фиг.4 является концептуальной схемой, иллюстрирующей поддержку двенадцатипиксельного фильтра в отношении девяти положений субпикселей. Согласно этому раскрытию блок 37 MC может вычислять значения субпикселей для позиций «e», «f», «g», «i», «j», «k», «m», «n» и «o» субпикселей на основе значений заштрихованных целых пикселей. В этом случае вычисление значений субпикселей содержит применение интерполирующего фильтра, который задает двумерную матрицу позиций поддержки фильтра, соответствующих набору из двенадцати (или возможно более) позиций целых пикселей, которые окружают позиции субпикселей, как иллюстрировано на фиг.4. Позиции поддержки фильтра показаны со штриховкой и надписями заглавными буквами, а позиции субпикселей показаны как квадраты с пунктирными линиями и надписями строчными буквами. Блок 37 MC может интерполировать пиксели таким образом для каждого пикселя видеоблока и может генерировать блок предсказаний на основе интерполированных значений субпикселей. 12-позиционная поддержка фильтра имеет радиальную форму и имеет подобную частотную характеристику как 36-позиционная поддержка фильтра, использованная в NS-AIF, но с сильно пониженной сложностью интерполяции.
Как может быть определено из фиг.3, значения субпикселей могут содержать пятнадцать значений полупикселей и четвертьпикселей. Интерполяционный фильтр, который задает двумерную матрицу позиций поддержки фильтра, применяют, чтобы задавать девять из пятнадцати значений полупикселей и четвертьпикселей, как показано на фиг.4.
Набор из двенадцати или более позиций целых пикселей, которые окружают позиции субпикселей, показаны со штриховкой на фиг.4 и могут включать в себя четыре позиции целых пикселей C3, C4, D3 и D4, окружающие девять значений полупикселей и четвертьпикселей, и восемь позиций целых пикселей B3, B4, C2, C5, D2, D5, E3 и E4, окружающих четыре позиции целых пикселей. Каждая из позиций поддержки фильтра в двумерной матрице позиций поддержки фильтра, показанной на фиг.4, находится в пределах двух позиций целых пикселей относительно позиций субпикселей. Такая фильтрация может образовывать часть компенсации движения в течение процесса кодирования видео видеокодером 50 (фиг.2) или в течение процесса декодирования видео видеодекодером 60 (фиг.16). В течение процесса кодирования видео блок 32 предсказания пересылает множество наборов из значений коэффициентов блоку 46 статистического кодирования как часть элементов синтаксиса предсказания. Как показано на фиг.4, набор из двенадцати или более позиций целых пикселей, которые окружают позиции субпикселей, имеет радиальную форму и может содержать набор из пространственно ближайших позиций целых пикселей к девяти значениям полупикселей и четвертьпикселей, заданных интерполирующим фильтром (например, фильтром(ами) 39 на фиг.2).
Блок 46 статистического кодирования может кодировать наборы значений коэффициентов и выводить значения коэффициентов интерполирующего фильтра как часть закодированного битового потока, который может затем быть передан другому устройству. Каждый из множества наборов значений коэффициентов, заданный в отношении каждого другого положения субпикселя, показанного на фиг.4, может задавать разные весовые коэффициенты для двенадцати или более позиций целых пикселей. Симметрия пикселей может быть такой, что M наборов значений коэффициентов задают N разных весовых коэффициентов для двенадцати или более позиций целых пикселей, где M и N являются положительными целыми числами, и N больше чем M. Другими словами, симметрия пикселей может позволить некоторые из положений пикселей, чтобы опираться на зеркальные, обратные или повернутые весовые коэффициенты других положений пикселей так, что коэффициенты не должны быть кодированы для положений, которые имеют симметрию пикселей с другими положениями субпикселей.
Фиг.5 является концептуальной схемой, иллюстрирующей поддержку фильтра горизонтальных 6-пикселей в отношении трех горизонтальных положений субпикселей и поддержку фильтра вертикальных 6-пикселей в отношении трех вертикальных положений субпикселей. Положения поддержки фильтра заштрихованы и с надписями заглавными буквами, а положения субпикселей не заштрихованы, с надписями строчными буквами и обозначены пунктирными линиями. Блок 37 MC может вычислять значения субпикселей для положений «a», «b» и «c» посредством применения линейного интерполирующего фильтра, который задает одномерную матрицу позиций C1-C6 поддержки фильтра. Блок 37 MC может также вычислять значения субпикселей для положений «d», «h» и «l» посредством применения линейного интерполирующего фильтра, который задает одномерную матрицу позиций A3-F3 поддержки фильтра. Таким образом, линейные интерполирующие фильтры могут быть использованы для шести из пятнадцати значений полупикселей и четвертьпикселей, как показано на фиг.3.
Фиг.6 является концептуальной схемой, иллюстрирующей поддержку фильтра пять на пять пикселей для фильтрации положений целых пикселей. В этом случае интерполяционноподобная фильтрация может быть применена в отношении положений целых пикселей для того, чтобы генерировать скорректированные значения целых пикселей. На фиг.6, например, значение целого пикселя в позиции C3 может быть отфильтровано на основе матрицы A1-A5, B1-B5, C1-C5, D1-D6 и E1-E5 пять на пять пикселей. Могут быть заданы другие поддержки фильтра для целочисленной фильтрации. В этом случае, если блок 35 ME идентифицирует блок целых пикселей, то блок 37 MC может фильтровать каждый пиксель на основе матрицы пять на пять пикселей, показанной на фиг.6 (или другой поддержки фильтра), чтобы генерировать фильтрованные значения целых пикселей. Таким образом, интерполяционноподобная фильтрация может быть применена к целым пикселям, которые могут улучшить кодирование во время изменений освещенности или постепенных появлений изображения или постепенных исчезновений изображения. Кроме этого, целочисленная фильтрация может устранить шумы и способствовать увеличению резкости кадра изображения и может помочь улучшить кодирование малого перемещения предмета между последовательными видеокадрами, в частности, когда симметрия не наложена на коэффициенты фильтра. Целопиксельная фильтрация может также быть чрезвычайно полезна в улучшении качества и/или сжатия для видеопоследовательностей, которые имеют изменения фокусировки.
Таким образом, видеокодер 22 и/или видеодекодер 28 могут использовать интерполяционноподобную фильтрацию в отношении позиций целых пикселей для того, чтобы генерировать скорректированные значения целых пикселей. Видеокодер 22 или видеодекодер 28 может, например, получать блоки пикселей, где блоки пикселей включают в себя значения целых пикселей, соответствующие позициям целых пикселей в блоке пикселей. Видеокодер 22 или видеодекодер 28 может фильтровать значения целых пикселей на основе других значений целых пикселей в блоках пикселей для генерирования скорректированных значений целых пикселей, где скорректированные значения целых пикселей соответствуют позициям целых пикселей, и генерировать блок предсказаний на основе скорректированных значений целых пикселей. Блок предсказаний может затем быть использован для кодирования или декодирования видеоблока, в зависимости от того осуществляют ли процесс в течение кодирования или декодирования.
Если технологию осуществляют в течение процесса кодирования, то видеокодер 22 может генерировать остаточный видеоблок как разность между текущим видеоблоком, который кодируют, и блоком предсказаний. Видеокодер 22 может также кодировать один набор коэффициентов фильтра на кодированную единицу для целочисленной фильтрации или возможно кодировать два или более наборов коэффициентов фильтра на кодированную единицу для целочисленной фильтрации в разных положениях в пределах кодированной единицы. В примере фиг.6, поддержки фильтра для целочисленной фильтрации могут задавать двумерный фильтр, например фильтр 5 на 5 со сдвигом. Кроме того, симметрия коэффициентов может существовать, по меньшей мере, между несколькими коэффициентами, использованными для фильтрации, так что только поднабор из 25 разных коэффициентов необходим, чтобы определить все 25 коэффициентов для фильтра. Много других размеров и форм фильтра может быть использовано согласно целопиксельной фильтрации.
Если целопиксельную фильтрацию осуществляют в течение процесса декодирования, то технология может содержать генерирование восстановленного видеоблока как сумму остаточного видеоблока, связанного с текущим видеоблоком, который декодируют, и блока предсказаний. В этом случае декодирующее устройство (например, устройство 16 назначения) может принимать один набор коэффициентов фильтра на кодированную единицу для целочисленной фильтрации или может принимать два или более наборов коэффициентов фильтра на кодированную единицу для целочисленной фильтрации в разных положениях в пределах кодированной единицы. Каждая кодированная единица может иметь один или более наборов коэффициентов целопиксельной фильтрации, а также и наборы коэффициентов субпиксельной фильтрации, например восемь наборов, которые могут быть использованы для генерирования всех пятнадцати наборов для позиций полупикселей и четвертьпикселей.
В свою очередь, интерполяционноподобная фильтрация значений целых пикселей может улучшить сжатие, особенно в течение изменения освещенности, постепенных появлений изображения или постепенных исчезновений изображения, может устранить шумы и способствовать увеличению резкости кадра изображения и может помочь улучшить кодирование малого перемещения предмета между последовательными видеокадрами, в частности, когда симметрия не наложена на коэффициенты фильтра. Кроме того, оказалось, что целопиксельная фильтрация также чрезвычайно полезна, например, для улучшения сжатия, в видеопоследовательностях, которые имеют изменения фокусировки.
Обычно интерполяционноподобную фильтрацию не осуществляют для позиций целых пикселей в AIF. Вместо этого соответствующую позицию целого пикселя в опорном кадре просто используют «как есть». Однако, согласно этому раскрытию, фильтр может быть использован для положений целых пикселей способом, который подобен интерполяциям. Интерполяционная фильтрация по позициям целых пикселей технически неправильна, так как значения пикселей позиций целых пикселей уже существуют. Таким образом, фильтрация позиций целых пикселей называется интерполяционноподобной фильтрацией и может быть рассмотрена как просто фильтрация значений целых пикселей для генерирования новых скорректированных значений пикселей.
В отличие от интерполяционной фильтрации для позиций субпикселей, где целью является получение несуществующих значений в опорном кадре, пиксели в целых позициях в опорном кадре уже существуют. Все же, применение фильтрации по позициям целых пикселей в опорном кадре дает ряд преимуществ. Например, когда позиции целых пикселей содержат сдвиг, фильтрация позиций целых пикселей может позволить лучший захват изменений освещенности между кадрами. Сверх того, фильтрация по позициям целых пикселей может позволить позициям целых пикселей захватывать специальные эффекты, такие как постепенное появление изображения или постепенное исчезновение изображения. Фильтрация по позициям целых пикселей может также устранить некоторые шумы сигналов (такие как шумы камеры) и/или осуществлять увеличение резкости, если необходимо. Кроме того, если ни какой симметрии не наложено, то фильтр целых пикселей может помочь захватить малое перемещение предмета, такое как перемещение предмета, которое не кратно четвертьпикселю. И наконец, фильтрация целых пикселей может также быть полезной в улучшении сжатия видеопоследовательностей, когда возникают изменения фокусировки.
В некоторых случаях интерполяционная фильтрация позиций целых пикселей может зависеть от векторов движения. Другими словами, блок 37 MC блока 32 предсказания может адаптивно применять интерполяционную фильтрацию на основе вектора движения, распознанного блоком 35 ME. Например, интерполяционная фильтрация позиций целых пикселей может быть осуществлена, когда вектор движения указывает на позицию целого пикселя. Интерполяционная фильтрация может привести к скорректированному значению пикселя для позиции целого пикселя. Когда вектор движения указывает на позицию субпикселя, никакую фильтрацию позиций целых пикселей не осуществляют в отношении значений целых пикселей, но фильтрация может быть использована для интерполяции значений субпикселей. Таким образом, фильтрация целых пикселей может считаться адаптивной на основе векторов движения.
Для позиций целых пикселей, 5 на 5 интерполирующий фильтр в виде уравнения (15) может быть выведен, используя тот же аналитический процесс, использованный для выведения фильтров позиций субпикселей.
FP
FP
FP
FP
FP
i,j
i,j
где p является фильтрованным значением целого пикселя, Pявляется значением целого пикселя в позиции (i,j), h  является коэффициентом для позиции (i,j) и o является сдвигом фильтра. В некоторых случаях интерполирующий фильтр для позиций целых пикселей может не иметь сдвига фильтра (т.е. o=0). В других случаях сдвиг o фильтра может использовать любой из ряда способов.
Разные сдвиги могут быть заданы для каждой позиции субпикселя, например, пятнадцать разных сдвигов могут быть заданы для каждой позиции субпикселя, показанной на фиг.3. Другой сдвиг может быть задан для целых пикселей, доводя полное число сдвигов до шестнадцати. Совместно рассматриваемая заявка на патент США № 12/420,280, поданная Карцевич и др. и озаглавленная «Сдвиги с субпиксельным разрешением» номер 081399U2, которая была подана в тот же день, что и настоящая заявка, и которая включена сюда путем ссылки, предоставляет много дополнительных подробностей по использованию многих сдвигов для разных положений пикселей и субпикселей.
Для того чтобы уменьшить число коэффициентов фильтра, которые будут переданы, на фильтр целых значений может быть наложена симметрия коэффициентов как в уравнении (16).
для
Могут также быть использованы другие виды симметрии коэффициентов. Кодером может быть решено, наложена ли симметрия коэффициентов, и подан сигнал декодеру. Если симметрию, как в уравнении (16), используют в фильтре целых значений, тогда 9 коэффициентов фильтра и 1 сдвиг возможно должны быть отправлены декодеру.
Кодирование сдвигов может быть выполнено первым кодированием целого сдвига и затем кодированием каждого дробного сдвига. В этом случае целый сдвиг и дробные сдвиги кодируют по-разному. Целый сдвиг может быть кодирован, используя экспоненциальный код Голомба со знаком. В зависимости от величины целого сдвига дробные сдвиги могут быть квантованы иначе, чем целый сдвиг. Например, более грубые уровни квантования могут быть применены на дробных сдвигах, когда целый сдвиг имеет большую величину. После квантования дробные сдвиги могут быть кодированы, используя коды фиксированной длины. В качестве примера, следующий псевдокод может иллюстрировать, как данный дробный сдвиг может быть кодирован, используя разные коды фиксированной длины, заданные на основе целого значения сдвига.
Пусть ofsetI будет целым сдвигом
Пусть ofsetF будет дробным сдвигом
Пусть ofsetFbits будет числом битов, использованных для квантования ofsetF
Пусть abs(a) будет абсолютным значением a
if(abs(offsetI)=0)
offsetFbits=5
else if(abs(offsetI) < 3)
offsetFbits=4
else if(abs(offsetI) < 7)
offsetFbits=2
else
offsetFbits=0
В этом случае видеокодер 50 может использовать блок 41 квантования и предсказания коэффициентов, который для каждого из значений сдвигов присваивает первое число битов целому участку данного значения сдвига и присваивает второе число битов дробному участку данного значения сдвига, где первое и второе числа битов определяют на основе величины целого участка. В этом случае квантованные варианты значений сдвигов могут пересылаться из блока 32 предсказания как элементы синтаксиса предсказания, после того, как осуществляют квантование значений сдвигов в соответствии с вышеприведенным псевдокодом. В любом случае видеокодер 50 может кодировать первое число битов по-другому, чем второе число битов.
Фиг.7 является концептуальной схемой, иллюстрирующей позиции четырех целых пикселей и позиций пятнадцати субпикселей со штриховкой позиций группы пикселей, которые могут использовать симметрию пикселей для коэффициентов фильтра в соответствии с этим раскрытием. В частности, фиг.7 иллюстрирует позиции от «a» до «o» субпикселей, соответствующие позиции C3 целого пикселя. Субцелые позиции пикселей, показанные на фиг.7, соответствуют субпозициям целых пикселей фигур 4 и 5. То есть положения «e», «f», «g», «i», «j», «k», «m», «n» и «o» субпикселей могут иметь значения, определенные двенадцатипиксельной поддержкой, как показано на фиг.4, тогда как положения «a», «b» и «c» субпикселей и положения «d», «h» и «l» субпикселей могут иметь значения, определенные горизонтальной и линейной пиксельной поддержкой, показанной на фиг.5.
В этом сценарии симметрия пикселей может быть наложена так, что коэффициенты фильтра для положения «a» пикселя симметричны в отношении коэффициентов фильтра для положения «c» пикселя. Подобно этому симметрия пикселей может быть наложена так, что коэффициенты фильтра для положения «d» пикселя симметричны в отношении коэффициентов фильтра для положения «l» пикселя. Симметрия пикселей может быть наложена так, что коэффициенты фильтра для положения «e» пикселя симметричны в отношении коэффициентов фильтра для положений «g», «m» и «o» пикселей, и симметрия пикселей может быть наложена так, что коэффициенты фильтра для положения «i» пикселя симметричны в отношении коэффициентов фильтра для положения «k» пикселя, и симметрия пикселей может быть наложена так, что коэффициенты фильтра для положения «f» пикселя симметричны в отношении коэффициентов фильтра для положения «n» пикселя. Поэтому только восемь наборов значений коэффициентов возможно должны быть сообщены, как часть битового видеопотока, для того чтобы дать возможность декодеру генерировать полный набор значений коэффициентов для всех пятнадцати положений пикселей. Кроме того, для любого данного набора коэффициентов, симметрия коэффициентов может позволить отправить только поднабор значений коэффициентов, и декодер может генерировать полный набор значений коэффициентов для данного положения пикселя на основе поднабора и симметрии коэффициентов.
Один аспект этого раскрытия заключается в фактическом устранении любой симметрии пикселей между позициями «a» и «c» субпикселей относительно позиций «d» и «l» субпикселей. Кроме этого, симметрии пикселей можно избежать для позиции «f» субпикселя относительно позиции «i» субпикселя. Кроме этого, симметрии пикселей можно избежать для позиции «k» субпикселя относительно позиции «n» субпикселя. В таких случаях диагональная корреляция может быть низкой, делая ее неэффективной или безрезультатной для наложения диагональной симметрии. Таким образом, восемь наборов коэффициентов, использованных для генерирования всех пятнадцати наборов коэффициентов, могут быть более большим набором, чем у некоторых обычных технологий, поскольку избегают симметрии в диагональной размерности для некоторых из положений пикселей. В некоторых случаях диагональную симметрию пикселей и диагональную симметрию коэффициентов возможно исключить или избежать для учета расхождения в вертикальной размерности.
Обращаясь снова к фиг.1, видеокодер 22 может определять восемь наборов коэффициентов фильтра и использовать восемь наборов коэффициентов фильтра для генерирования всех пятнадцати наборов коэффициентов фильтра, соответствующих пятнадцати разным положениям субпикселей, на основе симметрии коэффициентов и симметрии пикселей и выводить восемь наборов коэффициентов фильтра как часть закодированного битового потока. Восемь наборов коэффициентов фильтра могут быть выведены для каждой кодированной единицы закодированного битового потока или возможно несколько встречаемостей из восьми наборов коэффициентов фильтра могут быть выведены для разных областей кодированной единицы.
Пятнадцать наборов соответствуют каждому полупиксельному и четвертьпиксельному положению субпикселя, показанному на фиг.3, и восемь наборов, симметрия пикселей и симметрия коэффициентов задают поддержки фильтра для каждого полупиксельного и четвертьпиксельного положения субпикселя. Видеодекодер 28 устройства 16 назначения может принимать восемь наборов коэффициентов фильтра как часть закодированного битового видеопотока, генерировать пятнадцать наборов коэффициентов фильтра, соответствующих пятнадцати разным положениям субпикселей, на основе восьми наборов коэффициентов фильтра, генерировать интерполированные предсказывающие данные для декодирования видео на основе одного из пятнадцати наборов коэффициентов фильтра, где интерполированные предсказывающие данные соответствуют одному из пятнадцати разных положений субпикселей и декодировать один или более видеоблоков на основе интерполированных предсказывающих данных.
По меньшей мере, несколько из восьми наборов коэффициентов фильтра могут иметь симметрию коэффициентов так, что данный набор с симметрией коэффициентов содержит поднабор коэффициентов фильтра, связанный с поддержкой фильтра, для данного положения субпикселя, связанного с данным набором. Таким образом, видеодекодер 28 может генерировать пятнадцать наборов коэффициентов фильтра, по меньшей мере, частично на основе симметрии пикселей между двумя или более разными положениями субпикселей. Более того, видеодекодер 28 может генерировать пятнадцать наборов коэффициентов фильтра, по меньшей мере, частично на основе симметрии пикселей между двумя или более разными положениями субпикселей и, по меньшей мере, частично на основе симметрии коэффициентов, заданной для данного набора, так что данный набор с симметрией коэффициентов содержит поднабор коэффициентов фильтра, связанный с поддержкой фильтра, для данного положения субпикселя, связанного с данным набором.
В свою очередь, пятнадцать наборов могут соответствовать каждому полупиксельному и четвертьпиксельному положению субпикселя. Симметрия пикселей может существовать между разными наборами из пятнадцати наборов коэффициентов фильтра в вертикальной размерности и в горизонтальной размерности, но симметрия пикселей не существует в диагональной размерности, по меньшей мере, для нескольких из пятнадцати наборов коэффициентов фильтра. Как объяснено более подробно ниже, два из восьми наборов могут задавать три из пятнадцати наборов для горизонтальной поддержки фильтра, два из восьми наборов могут задавать три из пятнадцати наборов для вертикальной поддержки фильтра, и четыре из восьми наборов могут задавать девять из пятнадцати наборов для двумерной поддержки фильтра. Двумерная поддержка может содержать полезную 12-позиционную поддержку фильтра, окружающую девять позиций субпикселей в радиальной форме.
В частности, интерполированные предсказывающие данные могут содержать пятнадцать значений полупикселей и четвертьпикселей, например, показанных на фиг.7, где интерполирующий фильтр задает двумерную матрицу из двенадцати позиций поддержки фильтра, например, показанных на фиг.4, которые применяют, чтобы задать девять из пятнадцати значений полупикселей и четвертьпикселей и, например, также показанных на фиг.4. Генерирование интерполированных предсказывающих данных может дополнительно содержать применение линейных интерполирующих фильтров, которые задают одномерные матрицы позиций поддержки фильтра для шести из пятнадцати значений полупикселей и четвертьпикселей, например, как показано на фиг.5.
Горизонтальную симметрию и отсутствие диагональной симметрии можно увидеть в отношении позиций «a» и «c» субпикселей или в отношении позиций «i» и «k» субпикселей. В этом случае субцелые позиции «a» и «c» пикселей симметричны вдоль горизонтальной X оси, но симметрии не существует вдоль диагональной оси для этих пикселей, так что положения «d» и «l» субпикселей не симметричны в отношении позиций «a» и «c» пикселей, соответственно. Подобно этому позиции «i» и «k» субпикселей симметричны вдоль горизонтальной X оси, но симметрии не существует вдоль диагональной оси для этих пикселей, так что положения «f» и «n» субпикселей не симметричны в отношении позиций «i» и «k» пикселей соответственно.
Симметрия пикселей означает, что первый набор коэффициентов в отношении первой позиции субпикселя симметричен относительно второго набора коэффициентов в отношении второй позиции субпикселя. Например, положение «a» пикселя имеет симметрию пикселей в отношении положения «c» пикселя, и положение «d» пикселя имеет симметрию пикселей в отношении положения «l» пикселя. Положение «f» пикселя имеет симметрию пикселей в отношении положения «n» пикселя, и положение «i» пикселя имеет симметрию пикселей в отношении положения «k» пикселя. Положение «e» пикселя имеет симметрию пикселей в отношении положений «g», «m» и «o» пикселей. Штриховка, показанная на фиг.7, демонстрирует эту симметрию пикселей, например, общей штриховкой, соответствующей положениям пикселей, которые являются симметричными в отношении других положений пикселей. В этом случае коэффициенты для положений восьми пикселей (вместе с аспектами симметрии пикселей) могут задавать коэффициенты для положений всех пятнадцати пикселей. Кроме этого, в данном наборе коэффициентов, симметрия коэффициентов может существовать так, что только поднабор коэффициентов в том наборе коэффициентов должен передаваться с битовым потоком.
Видеокодер 22 может генерировать закодированные видеоданные на основе интерполированных предсказывающих данных, где интерполированные предсказывающие данные содержат пятнадцать значений полупикселей и четвертьпикселей, где интерполирующий фильтр задает двумерную матрицу из двенадцати позиций поддержки фильтра, которые применяют, чтобы задать девять из пятнадцати значений полупикселей и четвертьпикселей. Генерирование закодированных видеоданных на основе интерполированных предсказывающих данных может дополнительно содержать применение линейных интерполирующих фильтров, которые задают одномерные матрицы позиций поддержки фильтра для шести из пятнадцати значений полупикселей и четвертьпикселей.
Фиг.8 является концептуальной схемой, иллюстрирующей позиции C1-C6 поддержки шести горизонтальных линейных пикселей относительно позиции «b» субпикселя, со штриховкой, которая показывает симметрию коэффициентов. В этом случае симметрия коэффициентов означает, что необходимы только три коэффициента фильтра для C1, C2 и C3 для того, чтобы задать полный набор коэффициентов для позиций C1-C6 поддержки фильтра. C1 симметрична с C6, C2 симметрична с C5 и C3 симметрична с C4. Таким образом, только три коэффициента должны быть переданы как часть закодированного битового видеопотока для того, чтобы задать набор из шести коэффициентов, необходимых для интерполяции позиции «b» субпикселя.
Фиг.9 является концептуальной схемой, иллюстрирующей позиции поддержки шести горизонтальных линейных пикселей относительно субпикселя, со штриховкой, которая показывает отсутствие какой-либо симметрии коэффициентов. Таким образом, все шесть коэффициентов необходимы для того, чтобы задать набор коэффициентов для поддержки фильтра в отношении позиции «a» субпикселя. Как отмечено выше, симметрия пикселей означает, однако, что эти же коэффициенты в отношении позиции «a» субпикселя могут также быть использованы для выведения поддержки фильтра для позиции «c» субпикселя (см. фиг.7). Таким образом, только шесть коэффициентов должны быть переданы как часть закодированного битового видеопотока для того, чтобы задать два разных набора из шести коэффициентов, необходимых для интерполяции позиции «a» субпикселя и «c».
Фиг.10 является концептуальной схемой, иллюстрирующей позиции A3, B3, C3, D3, E3 и F3 поддержки шести вертикальных линейных пикселей относительно субпикселя «h», со штриховкой, которая показывает симметрию коэффициентов. В этом случае симметрия коэффициентов означает, что необходимы только три коэффициента фильтра для A3, B3 и C3 для того, чтобы задать полный набор коэффициентов для позиций A3, B3, C3, D3, E3 и F3 поддержки фильтра. A3 симметрична с F3, B3 симметрична с E3 и C3 симметрична с D3. Таким образом, только три коэффициента должны быть переданы как часть закодированного битового видеопотока для того, чтобы задать набор из шести коэффициентов, необходимых для интерполяции позиции «h» субпикселя.
Фиг.11 является концептуальной схемой, иллюстрирующей позиции поддержки шести вертикальных линейных пикселей относительно субпикселя, со штриховкой, которая показывает отсутствие какой-либо симметрии коэффициентов. Таким образом, все шесть коэффициентов необходимы для того, чтобы задать набор коэффициентов для поддержки фильтра в отношении позиции «d» субпикселя. Как отмечено выше, симметрия пикселей означает, однако, что эти же коэффициенты в отношении позиции «d» субпикселя могут также быть использованы для выведения поддержки фильтра для позиции «l» субпикселя (см. фиг.7). Таким образом, только шесть коэффициентов должны быть переданы как часть закодированного битового видеопотока для того, чтобы задать два разных набора из шести коэффициентов, необходимых для интерполяции позиции «d» субпикселя и «l».
Фиг.12 является концептуальной схемой, иллюстрирующей позиции поддержки двенадцати двумерных пикселей (позиции целых пикселей, показанные с надписями заглавными буквами, и штриховку) относительно позиции «e» субпикселя. Штриховка показывает отсутствие какой-либо симметрии коэффициентов. Таким образом, все двенадцать коэффициентов необходимы для того, чтобы задать набор коэффициентов для поддержки фильтра в отношении позиции «e» субпикселя. Как отмечено выше, симметрия пикселей означает, однако, что эти же коэффициенты в отношении позиции «e» субпикселя могут также быть использованы для выведения поддержки фильтра для позиций «g», «m» и «o» субпикселей (см. фиг.7). Поэтому 12 коэффициентов задают позицию «e» субпикселя поддержки фильтра и эти же коэффициенты могут быть использованы для выведения набора коэффициентов для позиций «g», «m» и «o» субпикселей.
Фиг.13 является концептуальной схемой, иллюстрирующей позиции поддержки двенадцати двумерных пикселей (позиции целых пикселей, показанные с надписями заглавными буквами) относительно субпикселя «i», со штриховкой, которая показывает симметрию коэффициентов. В этом случае симметрия коэффициентов означает, что коэффициенты фильтра для позиций B3, B4, C2, C3, C4 и C5 поддержки фильтра могут быть использованы, чтобы задать коэффициенты фильтра для позиций E3, E4, D2, D3, D4 и D5 поддержки фильтра. B3 симметрична E3, B4 симметрична E4, C2 симметрична D2, C3 симметрична D3, C4 симметрична D4 и C5 симметрична D5. Таким образом, только шесть коэффициентов должны быть переданы как часть закодированного битового видеопотока для того, чтобы задать набор из двенадцати коэффициентов, необходимых для интерполяции позиции «i» субпикселя. Кроме того, как отмечено выше, позиция «i» субпикселя может иметь симметрию пикселей в отношении позиции «k» субпикселя. Поэтому тот же поднабор из шести коэффициентов может задавать полные наборы из двенадцати коэффициентов фильтра для позиций «i» и «k» субпикселей.
Фиг.14 является концептуальной схемой, иллюстрирующей позиции поддержки двенадцати двумерных пикселей (позиции целых пикселей, показанные с надписями заглавными буквами) относительно субпикселя «f», со штриховкой, которая показывает симметрию коэффициентов. В этом случае симметрия коэффициентов означает, что коэффициенты фильтра для позиций C2, D2, B3, C3, D3 и E3 поддержки фильтра могут быть использованы, чтобы задать коэффициенты фильтра для позиций C5, D5, B4, C4, D4 и E4 поддержки фильтра. C2 симметрична C5, D2 симметрична D5, B3 симметрична B4, C3 симметрична C4, D3 симметрична D4 и E3 симметрична E4. Таким образом, только шесть коэффициентов должны быть переданы как часть закодированного битового видеопотока для того, чтобы задать набор из двенадцати коэффициентов, необходимых для интерполяции позиции «f» субпикселя. Кроме того, как отмечено выше, позиция «f» субпикселя может иметь симметрию пикселей в отношении позиции «n» субпикселя. Поэтому тот же поднабор из шести коэффициентов может задавать полные наборы из двенадцати коэффициентов фильтра для позиций «f» и «n» субпикселей.
Фиг.15 является концептуальной схемой, иллюстрирующей позиции поддержки двенадцати двумерных пикселей (позиции целых пикселей, показанные с надписями заглавными буквами) относительно субпикселя «j», со штриховкой, которая показывает симметрию коэффициентов. В этом случае симметрия коэффициентов означает, что только три коэффициента фильтра необходимы для B3, C2 и C3 для того, чтобы задать полный набор из двенадцати коэффициентов для позиций B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 и E4 поддержки фильтра. C3 симметрична C4, D3 и D4, C2 симметрична D2, C5 и E4, и B3 симметрична B4, E3 и D5. Таким образом, только три коэффициента должны быть переданы как часть закодированного битового видеопотока для того, чтобы задать набор из двенадцати коэффициентов, необходимых для интерполяции позиции «j» субпикселя.
Фиг.16 является блок-схемой, иллюстрирующей пример видеодекодера, который может декодировать видеопоследовательность, которую закодировали описанным здесь способом. Видеодекодер 60 является одним примером специализированного компьютерного видеоустройства или устройства, названного здесь «кодер». Видеодекодер 60 включает в себя блок 52 статистического декодирования, который статистически декодирует принятый битовый поток для генерирования квантованных коэффициентов и элементов синтаксиса предсказания. Элементы синтаксиса предсказания могут включать в себя режим кодирования, один или более векторов движения, информацию, идентифицирующий интерполяционный способ, использованный для генерирования данных субпикселей, коэффициенты для использования в интерполяционной фильтрации и/или другую информацию, связанную с генерацией блока предсказаний.
Элементы синтаксиса предсказания, например коэффициенты, пересылают блоку 55 предсказания. Если предсказание используют для кодирования коэффициентов относительно коэффициентов неперестраиваемого фильтра или относительно друг друга, то блок 53 обратного квантования и предсказания коэффициентов может декодировать элементы синтаксиса, чтобы задать фактические коэффициенты. Также, если квантование применяют к любому из синтаксиса предсказания, то блок 53 обратного квантования и предсказания коэффициентов может также устранить такое квантование. Коэффициенты фильтра, например, могут быть кодированы с предсказанием и квантованы согласно этому раскрытию, и в этом случае блок 53 обратного квантования и предсказания коэффициентов может быть использован видеодекодером 60, чтобы декодировать с предсказанием и деквантовать такие коэффициенты.
Блок 55 предсказания может генерировать данные предсказания на основе элементов синтаксиса предсказания и одного или более ранее декодированных блоков, которые сохранены в памяти 62, почти таким же образом как подробно описано выше в отношении блока 32 предсказания видеокодера 50. В частности, блок 55 предсказания может осуществлять один или более интерполяционных способов фильтрации этого раскрытия в течение компенсации движения, чтобы генерировать блок предсказаний с конкретной точностью, такой как четвертьпиксельная точность. Как таковые, один или более способов этого раскрытия могут быть использованы видеодекодером 60 в генерировании блока предсказаний. Блок 55 предсказания может включать в себя блок компенсации движения, который содержит фильтры, использованные для интерполяционных и интерполяционноподобных способов фильтрации этого раскрытия. Компонент компенсации движения не показан на фиг.16 для простоты и удобства иллюстрации.
Блок 56 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты. Процесс обратного квантования может быть процессом, заданным для декодирования H.264. Блок 58 обратного преобразования применяет обратное преобразование, например обратное DCT или концептуально подобный процесс обратного преобразования, для преобразования коэффициентов для того, чтобы производить остаточные блоки в пиксельной области. Сумматор 64 суммирует остаточный блок с соответствующим блоком предсказаний, сгенерированным блоком 55 предсказания, чтобы образовать восстановленный вариант исходного блока, закодированного видеокодером 50. Если требуется, то фильтр распаковки блоков может также быть применен для фильтрации декодированных блоков для того, чтобы устранить артефакты блочности. Декодированные видеоблоки затем сохраняют в устройстве 62 запоминания опорных кадров, которое предоставляет опорные блоки для последующей компенсации движения и также производит декодированные блоки, чтобы запускать устройство отображения (такое как устройство 30, фиг.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-позиционной поддержке фильтра, описанной в этом раскрытии, включают в себя четыре позиции целых пикселей, окружающие позиции субпикселей, т.е. позиции целых пикселей C3, C4, D3 и D4, которые могут быть названы «угловыми» позициями целых пикселей, так как они расположены вблизи углов 2D позиций субпикселей. Кроме угловых позиций целых пикселей одна или более позиций целых пикселей, непосредственно примыкающих к угловым позициям целых пикселей, могут также быть использованы в поддержке фильтра. Позиции целых пикселей, непосредственно примыкающие к угловым позициям целых пикселей, могут включать в себя позиции целых пикселей непосредственно выше (по направлению к верху или северу) или непосредственно ниже (по направлению к низу или югу) угловых позиций целых пикселей, а также позиции целых пикселей непосредственно слева (или на западе) или непосредственно справа (или на востоке) от позиций угловых целых пикселей. В примере, иллюстрированном на фиг.4, 12-позиционная поддержка фильтра может включать в себя положения B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 и E4 целых пикселей. Все из этих позиций целых пикселей расположены в пределах двух позиций целых пикселей субпикселя, который будет интерполирован.
Поддержка фильтра согласно способам этого раскрытия может, однако, включать в себя дополнительные положения целых пикселей. Например, поддержка фильтра может включать в себя положения целых пикселей, которые расположены в пределах трех позиций целых пикселей позиции субпикселя, которая будет интерполирована, которые образуют радиальную форму.
Даже позиции четверть пикселей или более высокое разрешение могут быть интерполированы на основе позиций целых пикселей, расположенных в пределах, по меньшей мере, позиций двух целых пикселей. Таким образом, способы поддержки фильтра этого раскрытия предоставляют лучшее интерполяционное предсказание, используя целые пиксели с более высокой корреляцией с позицией, которую будут интерполировать при сохранении той же низкой сложности, данной D-AIF.
Как описано выше, симметрия субпикселей может принудительно применять один и тот же набор коэффициентов фильтра (и зеркальные, обратные и/или повернутые варианты набора) для группы из одной или более позиций субпикселей. Применение аналитического процесса, такого как аналитический процесс в уравнении (5), может быть использовано для выведения интерполяционных коэффициентов фильтра для всех позиций субпикселей, например, позиций пятнадцати субпикселей в случае четвертьпиксельной точности. Анализ корреляции среди пятнадцати наборов интерполяционных коэффициентов фильтра раскрывает относительно сильную корреляцию между коэффициентами фильтра позиций субпикселей (как 1D, так и 2D позиций субпикселей) в той же размерности (например, вертикальной или горизонтальной размерности). Наоборот, корреляция между коэффициентами фильтра позиций субпикселей в других диагональных направлениях может быть заметно слабее.
Например, может быть высокая корреляция между коэффициентами фильтра для позиций «a» и «c» субпикселей, которые обе находятся в горизонтальной размерности. В качестве другого примера, может быть высокая корреляция между коэффициентами фильтра для позиций «d» и «l» субпикселей, которые обе находятся в вертикальной размерности. Однако может быть маленькая, если вообще есть, корреляция между коэффициентами фильтра для позиции «a» субпикселя, которая находится в горизонтальной размерности, и позиции «d» субпикселя, которая находится в вертикальной размерности. На основе этих наблюдений корреляций симметрия субпикселей может быть построена так, что симметрия субпикселей для коэффициентов фильтра позиций субпикселей в диагональной размерности не наложена. Это ведет к восьми наборам коэффициентов, как здесь описано, которые могут быть большим числом наборов, чем необходимо для некоторых обычных процессов. Посредством исключения диагональной симметрии пикселей для некоторых положений пикселей, как здесь описано, кодирование видео и сжатие могут быть улучшены.
В свою очередь, фиг.7 показывает позиции пикселей с одинаковыми штриховками (или затенением) которые принадлежат группе позиций субпикселей, которые имеют симметрию субпикселей. В частности, позиции «a» и «c» субпикселей образуют первую группу, имеющую симметрию субпикселей, позиции «d» и «l» субпикселей образуют вторую группу, имеющую симметрию субпикселей, позиции «e», «g», «m» и «o» субпикселей образуют третью группу, имеющую симметрию субпикселей, позиции «f» и «n» субпикселей образуют четвертую группу, имеющую симметрию субпикселей, и позиции «i» и «k» субпикселей образуют пятую группу, имеющую симметрию субпикселей. Позиции «b», «h», и «j» субпикселей не имеют симметрии субпикселей с любыми другими позициями субпикселей. Как таковые, позиции «b», «h», и «j» субпикселей могут быть рассмотрены как принадлежащие своим собственным группам; шестой, седьмой и восьмой группе, соответственно. Каждая группа коэффициентов (которая может быть поднабором вследствие симметрии коэффициентов) может быть передана один раз на кодированную единицу или, возможно, несколько раз на кодированную единицу, если заданы другие типы фильтрации для других областей или признаков кодированной единицы. Коэффициенты для целопиксельной интерполяционноподобной фильтрации могу также быть отправлены один несколько раз на кодированную единицу.
В NS-AIF и D-AIF симметрия субпикселей существует между позициями субпикселей в той же размерности, например две позиции субпикселей в вертикальной размерности или две позиции субпикселей в горизонтальной размерности. В некоторых обычных NS-AIF и D-AIF, симметрия также существует диагонально между позициями субпикселей в разных размерностях. Например, симметрия субпикселей существует между позицией «a» субпикселя в вертикальной размерности и позицией «d» субпикселя в горизонтальном направлении в некоторых обычных NS-AIF и D-AIF. При симметрии субпикселей в горизонтальной, вертикальной и диагональной размерностях только пять уникальных наборов интерполяционных коэффициентов фильтра могут быть использованы для четвертьпиксельной точности.
Для некоторых типов S-AIF, с другой стороны, симметрия субпикселей существует между позициями субпикселей в вертикальном направлении (или размерности), но не между позициями субпикселей в горизонтальной размерности. Другими словами, симметрия субпикселей не всегда существует для позиций субпикселей в одинаковой размерности. Симметрии субпикселей также не существует в диагональных размерностях. Симметрия некоторых схем S-AIF, таким образом, требует больше наборов интерполяционных коэффициентов. В частности, для четвертьпиксельной точности некоторые схемы S-AIF требуют одиннадцать уникальных наборов интерполяционных коэффициентов.
Схема симметрии субпикселей, описанная в этом раскрытии и иллюстрированная на фиг.7, может привести к более точному предсказанию, чем симметрия субпикселей, описанная выше для некоторых типов NS-AIF и D-AIF. В частности, схема симметрии субпикселей фиг.7 накладывает симметрию субпикселей в одной размерности (например, в горизонтальном направлении или вертикальном направлении), но не накладывает симметрию субпикселей одновременно в обеих размерностях (например, диагонально).
Посредством не наложения симметрии субпикселей для позиций субпикселей диагонально слабая корреляция между интерполяционными коэффициентами фильтра и позициями субпикселей в разных размерностях не включена в интерполяцию. Несмотря на то, что больше наборов интерполяционных коэффициентов может потребоваться (например, восемь вместо пяти), результирующие интерполированные данные предсказания могут быть более точными. Диагональной симметрии коэффициентов возможно также избежать или исключить ее почти таким же образом.
Блок 32 предсказания может также наложить симметрию коэффициентов, как описано выше. В частности, симметрию коэффициентов накладывают для коэффициентов фильтра в одной размерности (например, горизонтальном или вертикальном направлении), но не для обеих размерностей диагональным образом. Например, коэффициенты фильтра для позиции «e» субпикселя не обязаны быть диагонально симметричными, как в схеме NS-AIF, описанной выше и представленной в уравнении (11). Симметрия коэффициентов приведена ниже в уравнениях (17)-(21).
Обратите внимание, что для позиций «f», «i» и «j» субпикселей некоторые коэффициенты фильтра, т.е.  равны нулю в случаях, в которых может быть использован 12-позиционный фильтр, подробно описанный в отношении фиг.4. Как таковая, симметрия субпикселей и коэффициентов, описанная в этом раскрытии, может быть использована в сочетании или отдельно от способов поддержки фильтра. При использовании в сочетании с 12-позиционной поддержкой фильтра, описанной в фиг.4, существует 6(a)+3(b)+6(d)+3(h)+12(e)+6(f)+6(i)+3(j)=45 уникальных коэффициентов для этих позиций субпикселей, которые должны быть отправлены декодеру, т.е. 6 коэффициентов для группы, включающей в себя позицию «a» субпикселя, 3 коэффициента для группы, включающей в себя позицию «b» субпикселя, 6 коэффициентов для группы, включающей в себя позицию «d» субпикселя, 3 коэффициента для группы, включающей в себя позицию «h» субпикселя, 12 коэффициентов для группы, включающей в себя позицию «e» субпикселя, 6 коэффициентов для группы, включающей в себя позицию «f» субпикселя, 6 коэффициентов для группы, включающей в себя позицию «i» субпикселя и 3 коэффициента для группы, включающей в себя позицию «j» субпикселя.
Фиг.17 является блок-схемой последовательности операций, иллюстрирующей пример работы видеокодера, который использует поддержку двенадцатипиксельного фильтра в соответствии с этим раскрытием. Способ по фиг.17 будет описан с точки зрения видеокодера 50 фиг.2, несмотря на то, что другие устройства могут осуществлять подобные способы. Как показано на фиг.17, блок 37 MC блока 32 предсказания получает блок пикселей из памяти 34, который включает в себя значения целых пикселей, соответствующие позициям целых пикселей (171). Фильтр(ы) 39 вычисляют значения субпикселей на основе поддержки фильтра, которая содержит двенадцать или более позиций, которые окружают позиции субпикселей (172). Как более подробно объяснено выше, двенадцатипозиционная поддержка фильтра может быть использована, чтобы генерировать девять из пятнадцати возможных субпиксельных интерполяций, тогда как линейная горизонтальная и линейная вертикальная фильтрация может быть использована, чтобы генерировать шесть из пятнадцати возможных субпиксельных интерполяций.
Блок 37 MC затем генерирует блок предсказаний на основе вычисленных значений субпикселей (173). В частности, блок 37 MC может генерировать и выводить интерполированный блок предсказаний, содержащий интерполированные значения субпикселей. Сумматор 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) и генерирует пятнадцать наборов коэффициентов фильтра на основе восьми наборов, симметрии коэффициентов и симметрии пикселей. Блок 55 предсказания может затем программировать свои интерполирующие фильтры и применять такие интерполирующие фильтры для того, чтобы правильно генерировать интерполированные предсказывающие данные (193). Видеодекодер 60 может затем декодировать видеоблоки на основе предсказывающих данных (194), например, задействовав сумматор 64, чтобы складывать правильные предсказывающие данные, интерполированные блоком 55 предсказания с остаточным блоком, который будет декодирован.
Фиг.21 является блок-схемой последовательности операций, иллюстрирующей пример работы видеокодера, который использует фильтрацию положений целых пикселей для генерирования скорректированных значений целых пикселей в соответствии с этим раскрытием. Это обсуждалось выше как интерполяционноподобная фильтрация, поскольку она подобна интерполяциям, но не генерирует значения субцелых. Скорее, этот процесс генерирует новые значения целых, которые фильтруют на основе исходных значений целых и других значений целых, которые окружают исходные значения целых.
Фиг.21 будет описана с точки зрения видеокодера 50 согласно фиг.2, несмотря на то, что другие устройства могут осуществлять подобные способы. Как показано на фиг.21, блок 37 MC блока 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 является блок-схемой последовательности операций, иллюстрирующей способ для интерполяции, определяемой в зависимости от искажения скорости передачи, для видеокодирования на основе двух наборов возможных фильтров. В этом случае блок 37 MC блока 32 предсказания может генерировать два или более разных наборов предсказывающих данных, один набор на основе первого набора возможных интерполирующих фильтров и другой набор на основе второго набора возможных интерполирующих фильтров. Блок 37 MC может затем использовать анализ на основе искажения в зависимости от скорости передачи для того, чтобы выбрать, какой интерполирующий фильтр даст наилучшие результаты с точки зрения скорости и искажения. Таким образом, блок 37 MC не только учитывает, какой набор предсказывающих данных даст наилучшие результаты (т.е. наименьшее искажение), но также будет учитывать тот факт, что один набор возможных фильтров может потребовать меньше битовых непроизводительных издержек для того, чтобы передать свои коэффициенты фильтра декодеру.
Как показано на фиг.23, блок 37 MC блока 32 предсказания генерирует первые интерполированные предсказывающие данные для кодирования видеоданных на основе первого интерполирующего фильтра (231). Первый интерполирующий фильтр, в одном примере, содержит неперестраиваемый интерполирующий фильтр, соответствующий фильтру, заданному конкретным стандартом видеокодирования, такому как фильтр, который соответствует интерполирующему фильтру ITU-T H.264. Для дополнительной точности, в некоторых случаях, неперестраиваемый интерполирующий фильтр может соответствовать интерполирующему фильтру ITU-T H.264 без промежуточного округления значений полупикселей, который используют, чтобы генерировать значения четвертьпикселей. В этом случае неперестраиваемый интерполирующий фильтр может генерировать значения полупикселей и может округлять в большую сторону такие значения в целях интерполяции до полупиксельного разрешения. Однако в том смысле, что такие значения полупикселей также будут использоваться для интерполяции до четвертьпиксельного разрешения, блок 37 MC может сохранять неокругленные варианты значений полупикселей и использовать неокругленные варианты значений полупикселей для любой интерполяции до четвертьпиксельного разрешения. Совместно рассматриваемая заявка на патент США № 12/420,235, поданная Карцевич и др. и озаглавленная «Усовершенствованные интерполяционные способы для компенсации движения в видеокодировании» номер 081399U1, которая была подана в тот же день, что и настоящая заявка и которая включена сюда путем ссылки, предоставляет много дополнительных подробностей по интерполяционной фильтрации без промежуточного округления значений полупикселей, которую используют, чтобы генерировать значения четвертьпикселей.
Далее, блок 37 MC блока 32 предсказания генерирует вторые интерполированные предсказывающие данные для кодирования видео видеоданных на основе второго интерполирующего фильтра (232). В одном примере второй интерполирующий фильтр может содержать адаптивный интерполирующий фильтр. В этом случае, в соответствии с адаптивной интерполяцией, блок 37 MC может задавать коэффициенты фильтра, которые будут использованы. В частности, блок 37 MC может выполнять адаптивный интерполяционный процесс, в котором блок 37 MC начинает с предварительно установленных коэффициентов фильтра, генерирует предварительные предсказывающие данные и затем корректирует коэффициенты фильтра в адаптивном процессе так, что такие коэффициенты фильтра задают более желательные предсказывающие данные.
После того как блок 37 MC блока 32 предсказания сгенерировал и первые, и вторые интерполированные предсказывающие данные, блок 37 MC может выбирать между первыми интерполированными предсказывающими данными и вторыми интерполированными предсказывающими данными на основе анализа искажения в зависимости от скорости передачи (233). Таким образом, блок 37 MC не только учитывает, какой набор предсказывающих данных даст наилучшие результаты (т.е. наименьшее искажение), но блок 37 MC также учитывает другие объемы данных (т.е. другие скорости передачи битов), которые потребуются для первого интерполирующего фильтра относительно второго интерполирующего фильтра. А именно, если неперестраиваемый интерполирующий фильтр используют (например, в качестве первого интерполирующего фильтра), то видеокодеру 50 не потребуется кодировать коэффициенты фильтра в битовом потоке, тогда как если используют адаптивный интерполирующий фильтр (например, в качестве второго интерполирующего фильтра), то видеокодеру 50 потребуется кодировать коэффициенты фильтра. Согласно этому анализ искажения в зависимости от скорости передачи может определить, какой набор предсказывающих данных даст наилучшие результаты (т.е. наименьшую стоимость искажения скорости передачи), посредством вычисления того, что использование неперестраиваемого интерполирующего фильтра не требует дополнительных битов для того, чтобы передать коэффициенты фильтра декодеру.
Более конкретно, выбор между первыми интерполированными предсказывающими данными и вторыми интерполированными предсказывающими данными на основе анализа искажения в зависимости от скорости передачи (233) может содержать вычисление первых издержек искажения в зависимости от скорости передачи, связанных с видеоданными, если видеоданные кодируют через первые интерполированные предсказывающие данные, вычисление вторых издержек искажения в зависимости от скорости передачи, связанных с видеоданными, если видеоданные кодируют через вторые интерполированные предсказывающие данные и выбор между первыми интерполированными предсказывающими данными и вторыми интерполированными предсказывающими данными на основе первых и вторых издержек искажения в зависимости от скорости передачи.
Издержки искажения в зависимости от скорости передачи, связанные с видеоданными, если видеоданные кодируют через первые интерполированные предсказывающие данные, могут содержать первый показатель разности, например среднеквадратическую ошибку (MSE) значений пикселей или сумму абсолютной разности (SAD) значений пикселей или сумму квадратов разности (SSD) значений пикселей, указывающий разности между видеоданными и первыми интерполированными предсказывающими данными, плюс первое значение, которое определяет издержки, связанные с кодированием коэффициентов фильтра. В этом случае, если первый интерполирующий фильтр является неперестраиваемым интерполирующим фильтром, то первое значение, которое определяет издержки, может быть задано как ноль. Подобно этому вторые издержки искажения в зависимости от скорости передачи могут содержать второй показатель разности, указывающий разности между видеоданными и вторыми интерполированными предсказывающими данными (MSE, SAD или SSD), плюс второе значение, которое определяет издержки, связанные с кодированием коэффициентов фильтра. В случае, когда второй интерполирующий фильтр является адаптивным интерполирующим фильтром, второе значение, которое определяет издержки, связанные с кодированием коэффициентов фильтра, может содержать число битов (r), необходимых для кодирования коэффициентов адаптивного интерполирующего фильтра или возможно это число (r), умноженное на множитель (λ) Лагранжа.
После выбора между первыми интерполированными предсказывающими данными и вторыми интерполированными предсказывающими данными на основе анализа искажения в зависимости от скорости передачи (233), блок 37 MC блока 32 предсказания кодирует видеоданные на основе выбора (234) и кодирует синтаксис, чтобы указать выбор (235). Синтаксис может содержать однобитовый флаг или многобитовый флаг, который задает, должен ли быть использован декодером первый интерполирующий фильтр или второй интерполирующий фильтр. Процесс фиг. 23 может быть повторен для каждого из множества положений субпикселей для каждой кодированной единицы видеопотока, чтобы указать, должен ли быть использован декодером первый интерполирующий фильтр или второй интерполирующий фильтр для каждого из множества положений субпикселей. Положения субпикселей могут содержать пятнадцать возможных положений субпикселей в соответствии с интерполяцией до четвертьпиксельного разрешения или могут содержать другое число положений субпикселей. Процесс фиг. 23 может также быть повторен для положения целого пикселя для каждой кодированной единицы видеопотока, чтобы указать, должен ли быть использован декодером первый интерполирующий фильтр или второй интерполирующий фильтр для положения целого пикселя.
После того как видеокодер 50 (фиг.2) закодировал видеоданные на основе выбора (234) и закодировал синтаксис, чтобы указать выбор (235), модем 23 и передатчик 24 (фиг.1) могут модулировать и передавать закодированные видеоданные и синтаксис устройству 17 назначения. В случае, когда первый интерполирующий фильтр является неперестраиваемым, а второй интерполирующий фильтр является адаптивным, передатчик 24 может передавать коэффициенты фильтра, когда синтаксис указывает, что вторые интерполированные предсказывающие данные были использованы, чтобы генерировать закодированные видеоданные, но может не передавать никаких коэффициентов фильтра, когда синтаксис указывает, что первые интерполированные предсказывающие данные были использованы, чтобы генерировать закодированные видеоданные. Таким образом, когда первый интерполирующий фильтр является неперестраиваемым, а второй интерполирующий фильтр является адаптивным, коэффициенты фильтра отправляют, только если синтаксис указывает, что была использована адаптивная интерполяционная фильтрация, и решение о том, использовать ли или нет адаптивную интерполяционную фильтрацию, учитывает не только предсказывающее качество видео, а также скорость передачи, которая подвергается воздействию наличия коэффициентов фильтра в переданном битовом потоке. В других примерах, однако, первый и второй интерполирующие фильтры могут быть оба неперестраиваемыми или быть оба адаптивными.
Способы этого раскрытия могут быть применены во многих сценариях, включающих в себя сценарии, когда существует более чем два набора фильтров, которые выбирают кодером. Другими словами, дополнительные интерполирующие фильтры могут также быть применены, чтобы генерировать дополнительные интерполированные предсказывающие данные, которые могут также быть учтены в анализе искажения в зависимости от скорости передачи. Другими словами, способ не ограничен генерированием только первых и вторых интерполированных предсказывающих данных на основе двух интерполирующих фильтров, а мог бы применяться, чтобы генерировать любое множество интерполированных предсказывающих данных на основе любого числа интерполирующих фильтров. Важно, что интерполированные предсказывающие данные анализа искажения в зависимости от скорости передачи используют, чтобы идентифицировать, какой фильтр выбрать. В одном примере способ, выполненный видеокодером 50, может содержать генерирование множества разных вариантов предсказывающих данных для кодирования видеоданных на основе множества разных интерполирующих фильтров, выбор среди множества разных вариантов предсказывающих данных на основе анализа искажения в зависимости от скорости передачи, кодирование видеоданных на основе выбора и кодирование синтаксиса, чтобы указать выбор.
Кроме выбора интерполирующего фильтра на основе анализа искажения в зависимости от скорости передачи и генерирования синтаксиса, чтобы указать выбор, блок 37 MC блока 32 предсказания может также проводить подобный анализ искажения в зависимости от скорости передачи в отношении фильтрации целых пикселей, которая объяснена более подробно выше. В частности, блок 37 MC блока 32 предсказания может генерировать два или более разных набора предсказывающих данных для положений целых пикселей, например один с фильтрацией целых пикселей и один без фильтрации целых пикселей, и может проводить анализ искажения в зависимости от скорости передачи в отношении этих двух разных наборов для того, чтобы определить, желательна ли фильтрация целых пикселей. Согласно этому блок 37 MC блока 32 предсказания может генерировать другой элемент синтаксиса на основе анализа искажения в зависимости от скорости передачи, связанного с двумя разными наборами целочисленных предсказывающих данных, чтобы указать, должна ли быть применена фильтрация целых пикселей для кодированной единицы, где первый набор целочисленных предсказывающих данных не фильтрованный, а второй набор целочисленных предсказывающих данных фильтрованный. Таким образом, решение, проводить ли фильтрацию целых пикселей, может быть основано не только на качестве видеокодирования, но также на возможных битовых непроизводительных издержках, связанных с фильтрацией целых пикселей, в частности, когда фильтрация целых пикселей будет включать в себя кодирование и отправку коэффициентов фильтра целых пикселей, использованных для осуществления такой фильтрации целых пикселей. Целочисленная фильтрация может также учитывать N целочисленных фильтров (например, где N любое положительное и множественное целое число). В соответствии с использованием N целочисленных фильтров приведенный выше пример будет соответствовать случаю, где N составляет два и один из фильтров не применяет какую-либо фильтрацию.
Везде, где интерполяционные коэффициенты фильтра фактически кодируют и отправляют из устройства 12 источника устройству 16 назначения, это раскрытие также предусматривает способы для кодирования таких интерполяционных коэффициентов фильтра. Описанное кодирование для коэффициентов фильтра может улучшить сжатие данных. В частности, это раскрытие предусматривает способы предсказания для коэффициентов фильтра, например, относительно фиксированных коэффициентов фильтра. Кроме этого, это раскрытие предусматривает способы предсказания для второго набора коэффициентов фильтра относительно первого набора коэффициентов фильтра. Таким образом, неполная симметрия между разными коэффициентами фильтра может быть использована для сжатия данных. Кроме использования таких способов предсказания для интерполяционных коэффициентов фильтра, это раскрытие также предоставляет полезные способы квантования и статистическое кодирование интерполяционных коэффициентов фильтра на основе префиксного и суффиксного кодирования. Следующее обсуждение предоставляет больше подробностей по этим аспектам этого раскрытия.
Фиг.24 является блок-схемой последовательности операций, иллюстрирующей технологию для кодирования коэффициентов фильтра, используя кодирование с предсказанием. В этом случае коэффициенты фильтра, использованные видеокодером 50, могут быть закодированы с предсказанием относительно коэффициентов фильтра неперестраиваемого фильтра, который может дополнительно улучшить сжатие данных, когда коэффициенты фильтра отправляют как часть закодированного битового потока.
Как показано на фиг.24, блок 37 MC блока 32 предсказания идентифицирует набор коэффициентов фильтра для интерполяции предсказывающих данных в кодировании видео (241). Например, блок 37 MC может идентифицировать набор коэффициентов фильтра посредством осуществления адаптивного интерполяционного процесса фильтрации. В этом случае блок 37 MC может определять набор коэффициентов фильтра путем адаптивного интерполяционного процесса фильтрации и генерировать предсказывающие данные на основе коэффициентов фильтра, идентифицированных в адаптивном интерполяционном процессе фильтрации. В адаптивной интерполяционной фильтрации, как объяснено здесь более подробно, блок 37 MC может осуществлять двухпроходной метод, в котором предсказывающие данные генерируют на основе неперестраиваемого фильтра, и затем коэффициенты фильтра корректируют так, что предсказывающие данные делают более сходными с видеоданными, которые кодируют. Скорректированные коэффициенты фильтра затем задают коэффициенты фильтра, которые используют и кодируют в битовый поток.
Для того чтобы кодировать коэффициенты фильтра так, что такие коэффициенты фильтра могут быть переданы как часть битового потока, блок 41 квантования и предсказания коэффициентов может генерировать остаточные значения, связанные с набором коэффициентов фильтра на основе кодирования с предсказанием набора коэффициентов фильтра относительно коэффициентов фильтра, связанных с неперестраиваемым интерполирующим фильтром (242). В частности, блок 41 квантования и предсказания коэффициентов может вычитать коэффициенты фильтра, определенные в адаптивном интерполяционном процессе фильтрации из соответствующих коэффициентов фильтра, связанных с неперестраиваемым фильтром, таким как интерполирующий фильтр ITU-T H.264 или интерполирующий фильтр ITU-T H.264 без промежуточного округления значений полупикселей. Посредством кодирования и передачи остаточных значений скорее, чем посредством передачи фактических коэффициентов фильтра, количество данных, передаваемых в битовом потоке, может быть уменьшено. В этом случае декодер может быть запрограммирован, чтобы знать, каким образом закодированы коэффициенты фильтра.
Видеокодер 50 может задействовать блок 41 квантования и предсказания коэффициентов как для предсказания, так и квантования остаточных коэффициентов, и блок 46 статистического кодирования может статистически кодировать квантованные остатки (243). Видеокодер 50 может затем выводить остаточные значения как часть закодированного битового потока (244). Квантование остаточных значений, связанных с коэффициентами фильтра, может включать в себя квантование остаточных значений, в которых, по меньшей мере, нескольким из остаточных значений, связанных с разными коэффициентами фильтра, присваивают разные уровни квантования. Таким образом, блок 41 квантования и предсказания коэффициентов может назначать больше квантования более большим остаточным коэффициентам и может назначать меньше квантования меньшим остаточным коэффициентам для того, чтобы достигнуть желаемого баланса квантования и точности. Когда используют больше квантования, исключают больше данных, но может быть достигнуто больше сжатия. Блок 46 статистического кодирования может статистически кодировать остаточные значения посредством назначения префиксного кода, назначения суффиксного кода и присвоения значения знака для остаточных значений после квантования остаточных значений. Видеокодер 50 может затем выводить остаточные значения как часть закодированного битового потока (244).
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
1
1
2
2
3
3
4
4
Фиг.27 является концептуальным графиком, иллюстрирующим некоторые иллюстративные коэффициенты фильтра, которые могут быть кодированы с предсказанием. В этом случае коэффициенты O, O, O и O фильтра могут задавать коэффициенты фильтра, связанные с неперестраиваемым интерполирующим фильтром. Коэффициенты X, X, X и X фильтра могут задавать требуемые коэффициенты фильтра, которые могут быть достаточно подобными коэффициентам фильтра неперестраиваемого интерполирующего фильтра. Согласно этому коэффициенты X, X, X и X фильтра могут быть предсказаны на основе коэффициентов O, O, O и O фильтра, соответственно. В частности, первый остаток может быть образован как разность между X и O. Подобно этому второй остаток может быть образован как разность между X и O, третий остаток может быть образован как разность между X и O и четвертый остаток может быть образован как разность между X и O. Остатки могут содержать меньше данных, чем исходные коэффициенты фильтра, тем самым содействуя сжатию данных.
1
2
1
2
3
4
1
2
3
4
1
2
В некоторых случаях набор коэффициентов фильтра содержит первый набор коэффициентов фильтра, который задает только участок полного набора коэффициентов фильтра, связанный с адаптивным интерполирующим фильтром, в котором второй набор коэффициентов фильтра может быть определен декодером на основе первого набора коэффициентов фильтра и симметрии коэффициентов. Например, коэффициенты X и X фильтра могут быть кодированы с предсказанием на основе O и O соответственно. В этом случае, однако, X и X могут быть симметричными с X и X, и декодер может быть запрограммирован узнавать, что такая симметрия наложена. Согласно этому, с помощью использования симметрии, коэффициенты X и X в этом простом примере могут быть исключены из битового потока и могут быть вычислены в декодере на основе известной симметрии коэффициентов, после того как коэффициенты X и X декодированы с предсказанием.
Фиг.25 является другой блок-схемой последовательности операций, иллюстрирующей способ для кодирования коэффициентов фильтра, используя кодирование с предсказанием. В этом случае, однако, используют два разных типа предсказания. Как показано на фиг.25, блок 37 MC блока 32 предсказания идентифицирует набор коэффициентов фильтра для интерполяции предсказывающих данных в кодировании видео (251). Как и в случае процесса фиг.24, на фиг.25 блок 37 MC может идентифицировать набор коэффициентов фильтра посредством осуществления адаптивного интерполяционного процесса фильтрации. В этом случае блок 37 MC может определять набор коэффициентов фильтра путем адаптивного интерполяционного процесса фильтрации и генерировать предсказывающие данные на основе коэффициентов фильтра, идентифицированных в адаптивном интерполяционном процессе фильтрации. В адаптивной интерполяционной фильтрации блок 37 MC может осуществлять двухпроходной метод, в котором предсказывающие данные генерируют на основе неперестраиваемого фильтра, и затем коэффициенты фильтра корректируют так, что предсказывающие данные делают более сходными с видеоданными, которые кодируют. Скорректированные коэффициенты фильтра затем задают коэффициенты фильтра, которые используют и кодируют в битовый поток.
Для того чтобы кодировать коэффициенты фильтра так, что такие коэффициенты фильтра могут быть переданы как часть битового потока, блок 41 квантования и предсказания коэффициентов может генерировать первый набор остаточных значений, связанный с первым набором коэффициентов фильтра на основе кодирования с предсказанием относительно коэффициентов фильтра, связанных с неперестраиваемым интерполирующим фильтром (252). В частности, блок 41 квантования и предсказания коэффициентов может вычитать первый набор коэффициентов фильтра из соответствующих коэффициентов фильтра, связанных с неперестраиваемым фильтром, таким как интерполирующий фильтр ITU-T H.264 или интерполирующий фильтр ITU-T H.264 без промежуточного округления значений полупикселей. Далее, блок 41 квантования и предсказания коэффициентов может генерировать второй набор остаточных значений, связанный со вторым набором коэффициентов фильтра на основе кодирования с предсказанием относительно первого набора коэффициентов фильтра (253). В частности, блок 41 квантования и предсказания коэффициентов может вычитать второй набор коэффициентов фильтра из зеркальных или повернутых значений первого набора коэффициентов. Таким образом, первый набор коэффициентов кодируют с предсказанием на основе коэффициентов неперестраиваемого фильтра, а второй набор коэффициентов кодируют с предсказанием на основе первого набора коэффициентов. Посредством генерирования остаточных значений, скорее чем посредством использования фактических коэффициентов фильтра, количество данных, передаваемых в битовом потоке, может быть уменьшено. Кроме того, посредством использования неперестраиваемого фильтра, чтобы предсказать первый набор коэффициентов, и затем, используя первый набор коэффициентов, чтобы предсказать второй набор коэффициентов, может быть достигнуто дополнительное сжатие данных относительно предсказания, которое опирается только на неперестраиваемый фильтр.
Как и в случае процесса фиг.24, на фиг.25 видеокодер 50 может задействовать блок 41 квантования и предсказания коэффициентов как для кодирования с предсказанием, так и квантования остаточных коэффициентов, и блок 46 статистического кодирования может статистически кодировать квантованные остатки (254). Видеокодер 50 может затем выводить остаточные значения как часть закодированного битового потока (255). В свою очередь, квантование остаточных значений, связанных с коэффициентами фильтра, может включать в себя квантование остаточных значений, в которых, по меньшей мере, нескольким из остаточных значений, связанных с разными коэффициентами фильтра, присваивают разные уровни квантования. Таким образом, блок 41 квантования и предсказания коэффициентов назначает больше квантования более большим остаточным коэффициентам и может назначить меньше квантования меньшим остаточным коэффициентам для того, чтобы достигнуть желаемого баланса квантования и точности. Блок 46 статистического кодирования может статистически кодировать остаточные значения посредством назначения префиксного кода, назначения суффиксного кода и присвоения значения знака для остаточных значений после квантования остаточных значений. Видеокодер 50 может затем выводить остаточные значения как часть закодированного битового потока (255).
1
2
1
2
1
2
1
2
1
1
2
2
1
2
Фиг.28 является концептуальным графиком, иллюстрирующим некоторые иллюстративные коэффициенты фильтра, которые могут быть кодированы с предсказанием в соответствии с процессом фиг.25. В этом случае коэффициенты O и O фильтра могут задавать коэффициенты фильтра, связанные с неперестраиваемым интерполирующим фильтром. Коэффициенты X и X фильтра могут задавать первый набор требуемых коэффициентов фильтра, которые могут быть достаточно подобными коэффициентам фильтра неперестраиваемого интерполирующего фильтра. Согласно этому коэффициенты X и X фильтра могут быть предсказаны на основе коэффициентов O и O фильтра соответственно. В частности, первый остаток может быть образован как разность между X и O, и второй остаток может быть образован как разность между X и O. Остатки могут содержать меньше данных, чем исходные коэффициенты фильтра, тем самым содействуя сжатию данных. Остатки затем квантуют блоком 41 квантования и предсказания коэффициентов и статистически кодируют блоком 46 статистического кодирования.  и  могут относиться к модифицированным коэффициентам фильтра, которые генерируют посредством сложения деквантованных остатков с коэффициентами O и O фильтра предсказания.
1
2
1
2
1
2
1
2
1
2
1
2
1
2
Далее, второй набор коэффициентов Z и Z фильтра может быть кодирован с предсказанием на основе первого набора коэффициентов X и X фильтра, например, конкретно из  и , которые задают на основе коэффициентов X и X. В частности, третий остаток может быть образован как разность между Z и , и четвертый остаток может быть образован как разность между Z и .  и  могут быть более подобными Z и Z, чем O и O, и поэтому посредством использования  и , чтобы кодировать с предсказанием Z и Z, возможно содействие дополнительному сжатию данных.
Фиг.26 является блок-схемой последовательности операций, иллюстрирующей способ для декодирования коэффициентов фильтра, используя кодирование с предсказанием. Фиг. 26 будет описана с точки зрения видеодекодера 60 фиг.16. Как показано, видеодекодер 60 принимает остаточные значения, связанные с набором коэффициентов фильтра (261). Видеодекодер 60 может статистически декодировать остаточные значения с помощью блока 52 статистического декодирования и может задействовать блок 53 обратного квантования и предсказания коэффициентов, чтобы деквантовать остаточные значения (262), которые затем отправляют блоку 55 предсказания. Блок 55 предсказания генерирует набор коэффициентов фильтра, используя декодирование с предсказанием остаточных значений (263).
В частности, блок 56 предсказания может генерировать полный набор коэффициентов фильтра на основе остаточных значений и коэффициентов фильтра, связанных с неперестраиваемым интерполирующим фильтром, например, как концептуально проиллюстрировано на фиг.27 и говорилось выше в связи с кодированием. В некоторых случаях первый набор коэффициентов фильтра может быть сгенерирован на основе остаточных значений и коэффициентов фильтра, связанных с неперестраиваемым интерполирующим фильтром, и второй набор коэффициентов фильтра может быть сгенерирован на основе симметрии. В других случаях первый набор коэффициентов фильтра может быть сгенерирован на основе остаточных значений и коэффициентов фильтра, связанных с неперестраиваемым интерполирующим фильтром, и второй набор коэффициентов фильтра может быть сгенерирован на основе дополнительных остаточных значений и первого набора коэффициентов фильтра, например, как концептуально проиллюстрировано на фиг.28 и говорилось выше в связи с кодированием. В любом случае блок 55 предсказания видеодекодера 60 применяет набор коэффициентов фильтра, чтобы интерполировать предсказывающие данные, использованные для декодирования с предсказанием видеоблоков (264). В частности, блок 55 предсказания фильтрует данные, чтобы генерировать интерполированные предсказывающие данные, используя декодированные с предсказанием коэффициенты фильтра так, что видеоблоки могут быть декодированы на основе таких интерполированных предсказывающих данных.
В свою очередь, набор декодированных с предсказанием коэффициентов фильтра может содержать первый набор коэффициентов фильтра, который задает только участок полного набора коэффициентов фильтра, связанный с адаптивным интерполирующим фильтром. В этом случае блок 53 обратного квантования и предсказания коэффициентов видеодекодера 60 может генерировать второй набор коэффициентов фильтра на основе первого набора коэффициентов фильтра и симметрии коэффициентов и применять первый и второй наборы коэффициентов фильтра для интерполяции предсказывающих данных.
В другом случае набор декодированных с предсказанием коэффициентов фильтра может содержать первый набор коэффициентов фильтра, который задает только участок полного набора коэффициентов фильтра, связанный с адаптивным интерполирующим фильтром. В этом случае видеодекодер 60 может принимать дополнительные остаточные значения, связанные с полным набором коэффициентов фильтра. Блок 53 обратного квантования и предсказания коэффициентов может генерировать второй набор коэффициентов фильтра, используя декодирование с предсказанием, на основе дополнительных остаточных значений и первого набора коэффициентов фильтра, и блок 55 предсказания может применять первый и второй наборы коэффициентов фильтра для интерполяции предсказывающих данных.
В некоторых случаях неперестраиваемые интерполирующие фильтры на основе фильтров H.264/AVC могут быть использованы для предсказания 1D фильтров (которые могут включать в себя фильтры для позиций a, b, d, h субпикселей, показанных на фигурах 8, 9, 10 и 11). Для 2D фильтров, которые включают в себя фильтры для позиций e, f, i и j субпикселей, показанных на фигурах 12, 13, 14 и 15, может быть использована одна из следующих схем предсказания:
1. Установить предсказание на ноль (нет предсказания),
i,j
SP
2. Использовать предсказание неперестраиваемого фильтра, такого как усредняющий фильтр, собранный по обучающей последовательности, т.е. , , где  является ()-м коэффициентом фильтра в усредняющем фильтре для позиции  субпикселя.
3. Пользоваться возможной симметрией в коэффициентах и использовать уже кодированные коэффициенты для предсказания оставшихся коэффициентов.
Для 1D фильтров может также быть применен любой из этих трех способов предсказания.
Для предсказания фиг.29 предоставляет пример матрицы коэффициентов фильтра целых пикселей, для которых способы предсказания могут быть использованы для кодирования. В этом примере можно предположить, что никакой симметрии не наложено на фильтр целых пикселей. Коэффициенты (h0,0), (h0,1), (h1,0), (h1,1), (h2,0), (h2,1), (h0,2), (h1,2) и (h2,2) могут быть квантованы и кодированы первыми. Затем уже кодированные верхние левые коэффициенты (h0,0), (h0,1), (h1,0), (h1,1) и (h2,0) могут быть использованы, чтобы предсказать верхние правые коэффициенты (h0,3), (h1,3), (h2,3), (h0,4), (h1,4) и (h2,4). Далее, после того как верхнюю половину коэффициентов (h0,0), (h0,1), (h0,2), (h0,3), (h0,4), (h1,0), (h1,1), (h1,2), (h1,3) и (h1,4) фильтра квантуют и кодируют, они могут быть дополнительно использованы, чтобы предсказать нижнюю половину коэффициентов (h3,0), (h3,1), (h3,2), (h3,3), (h3,4), (h4,0), (h4,1), (h4,2), (h4,3) и (h4,4) фильтра. Предсказание других коэффициентов фильтра может быть дано подобным образом. Например, для фильтра позиции «e» субпикселя (см. фиг.12), который может иметь некоторую симметрию по диагонали, верхние правые коэффициенты могут быть квантованы и кодированы первыми и затем использованы, чтобы предсказать нижние левые коэффициенты.
В любом случае после предсказания коэффициентов (например, блоком 41 квантования и предсказания коэффициентов блока 32 предсказания) ошибки предсказания квантуют (например, блоком 41 квантования и предсказания коэффициентов). Как обрисовано выше, может быть использовано так называемое «неравномерное квантование». В этом случае точность квантования, примененная блоком 41 квантования и предсказания коэффициентов, может зависеть от положения коэффициента. Было установлено, что для коэффициентов с меньшей величиной (которые типично являются коэффициентами дальше от центра фильтра) может быть желательна более большая точность. В противоположность этому коэффициентам с большей величиной (которые типично являются коэффициентами ближе к центру фильтра) более желательна меньшая точность.
Q
Q
Q
1D
2D
FP
Нижеследующие матрицы , ,  могут быть использованы блоком 41 квантования и предсказания коэффициентов, чтобы указать точность квантования для коэффициентов в 1D фильтрах, 2D фильтрах и фильтре целых пикселей, соответственно. Обратите внимание, что число битов, данных в матрицах, может включать в себя 1 бит, чтобы кодировать знак соответственного коэффициента.
q-1
Блок 41 квантования и предсказания коэффициентов может кодировать квантованные ошибки предсказания коэффициентов, т.е. остатки коэффициентов, на основе простой схемы префиксного кодирования. Сначала динамический диапазон величины ошибки предсказания разделен на N бинов, например N=6. Если динамический диапазон величины составляет [0,...2-1], где q является точностью квантования для данной позиции коэффициента (такой как заданная в матрицах выше), тогда каждый бин n, n=0,...N-1, может охватывать следующие диапазоны:
start
В этом случае бин b, b=0,...N-1, которому принадлежит входная величина m, может быть кодирован, используя унарный префиксный код (который занимает b+1 битов). Затем остаток величины m-b может быть кодирован, используя суффиксный код фиксированной длины (q-N+b-1) битов. И, наконец, знак ошибки предсказания кодируют, используя 1 бит.
start
Например, для центральных коэффициентов в 1D фильтре 9 битовая точность может быть использована блоком 41 квантования и предсказания коэффициентов, чтобы квантовать ошибку предсказания, т.е. q=9, 8 битов которой могут быть использованы, чтобы квантовать величину ошибки. Если величина ошибки составляет 97, тогда она попадает в пределы 4-го бина, т.е. b=4. Поэтому унарный префиксный код «11110» может быть закодирован, чтобы указать 4-й бин, и остаток m-b=97-64=33 может быть закодирован, используя суффиксный код фиксированной длины (q-N+b-1)=(9-6+4-1)=6 битов. И наконец, бит «0» может быть закодирован, чтобы указать положительный знак.
Способы этого раскрытия могут быть реализованы в широкой разновидности аппаратов или устройств, включающих в себя беспроводную микротелефонную трубку и интегральную схему (ИС) или набор ИС (т.е. набор микросхем). Любые компоненты, модули или блоки были описаны с целью подчеркнуть функциональные аспекты и не обязательно требуют реализации разными блоками аппаратного обеспечения.
Согласно этому, способы, описанные здесь, могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенных программах или любом их сочетании. Если осуществлено в аппаратном обеспечении, то любые признаки, описанные как модули, блоки или компоненты, могут быть реализованы вместе в интегральном логическом устройстве или отдельно, как дискретные, но совместимые логические устройства. При осуществлении в программном обеспечении, способы могут быть реализованы, по меньшей мере, частично компьютерочитаемой средой, содержащей команды, которые при выполнении в процессоре, осуществляют один или более способов, описанных выше. Читаемая компьютером среда может содержать читаемую компьютером запоминающую среду и может образовывать часть компьютерного программного продукта, который может включать в себя материалы пакетирования. Читаемая компьютером запоминающая среда может содержать оперативное запоминающее устройство (ОЗУ), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ПЗУ), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое постоянное запоминающее устройство (EEPROM), флеш-память, магнитные или оптические носители данных и тому подобное. Способы дополнительно или в качестве альтернативы могут быть реализованы, по меньшей мере, частично компьютерочитаемой средой связи, которая несет или передает коды в виде команд или структур данных и которые могут быть доступны, считаны и/или выполнены компьютером.
Код может быть выполнен одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), универсальных микропроцессоров, интегральных схем специального применения (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Согласно этому термин «процессор», в качестве использованного здесь, может относиться к любой из вышеупомянутых структур или любой другой структуре, подходящей для реализации способов, описанных здесь. Кроме этого, в некоторых аспектах, функциональность, описанная здесь, может быть предоставлена в выделенных модулях программного обеспечения или модулях аппаратного обеспечения, сформированных для кодирования и декодирования, или включена в совместный видеокодек. Также, способы могли бы быть реализованы в одной или более схем или логических элементах.
Были описаны различные аспекты этого раскрытия. Эти и другие аспекты находятся в объеме нижеследующей формулы изобретения.