[0001] По настоящей заявке испрашивается приоритет предварительной заявки на патент США № 61/422,051, поданной 10 декабря 2010 года, полное содержание которой включено сюда в полном объеме посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Данное раскрытие относится к области кодирования видеосигнала, например, кодирования и декодирования видеоданных.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть использованы для широкого диапазона устройств, включая цифровые телевизионные системы, цифровые системы прямого вещания, устройства беспроводной связи, такие как радиотелефонные трубки, беспроводные системы вещания, персональные цифровые помощники (PDA), лэптопы или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, устройства для видеоигр, игровые видеоконсоли и т.п. Цифровые видеоустройства задействуют методики сжатия видеосигнала, такие как, чтобы более эффективно передавать и принимать цифровое видео. Методики сжатия видеосигнала подразумевают пространственное или временное предсказание, чтобы снизить или устранить избыточность, свойственную видеопоследовательностям.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] Это раскрытие описывает методики фильтрации, которые могут применяться кодером и декодером во время стадии межкадрового предсказания в процессе кодирования и/или декодирования видеосигнала. Описанные методики фильтрации могут повысить точность данных предсказания, используемых при фракционной пиксельной интерполяции, и в некоторых случаях могут повысить эффективность кодирования. Существует несколько аспектов данного раскрытия, включающих в себя методики интерполяции значений для положений субпикселя на основе применения интерполяционного фильтра в отношении различных комбинаций положений полного пикселя. Значения, в отношении которых применяется интерполяционный фильтр, обычно именуются «поддержкой». Данные методики также включают в себя выбор поддержки, в отношении которой надлежит применить интерполяционный фильтр для положения субпикселя на основе таких факторов, как, например, кодированные прежде кадры или текущее кодирование кадров.
[0005] В одном аспекте способ кодирования видеоданных содержит прием значений для положений полного целого пикселя из контрольной выборки. Способ также включает в себя применение интерполяционного фильтра в отношении первой группы значений для положений полного целого пикселя, чтобы вычислить значение для первого субцелого пикселя одного из положений полного целого пикселя. Кроме того, способ также содержит применение интерполяционного фильтра в отношении второй, другой, группы значений для положений полного целого пикселя, чтобы вычислить значение для второго, другого, субцелого пикселя одного из положений полного целого пикселя. Способ дополнительно содержит кодирование блока пикселей с использованием вектора движения, который указывает на один из первого субцелого пикселя и второго субцелого пикселя.
[0006] В другом аспекте устройство содержит видеокодер, который выполнен с возможностью принимать значения для положений полного целого пикселя из контрольной выборки. Видеокодер также выполнен с возможностью применять интерполяционный фильтр в отношении первой группы значений для положений полного целого пикселя, чтобы вычислить значение для первого субцелого пикселя одного из положений полного целого пикселя. Подобным образом, видеокодер выполнен с возможностью применять интерполяционный фильтр в отношении второй, другой, группы значений для положений полного целого пикселя, чтобы вычислить значение для второго, другого, субцелого пикселя одного из положений полного целого пикселя. Видеокодер дополнительно выполнен с возможностью кодировать блок пикселей с использованием вектора движения, который указывает на один из первого субцелого пикселя и второго субцелого пикселя.
[0007] В другом аспекте машиночитаемый носитель данных содержит команды, которые при выполнении в устройстве кодирования видеосигналов инициируют кодирование устройством видеоблоков. В частности, команды инициируют прием устройством значений для положений полного целого пикселя из контрольной выборки и применение интерполяционного фильтра в отношении первой группы значений для положений полного целого пикселя, чтобы вычислить значение для первого субцелого пикселя одного из положений полного целого пикселя. Команды также инициируют применение устройством интерполяционного фильтра в отношении второй, другой, группы значений для положений полного целого пикселя, чтобы вычислить значение для второго, другого, субцелого пикселя одного из положений полного целого пикселя. Команды дополнительно инициируют кодирование устройством блока пикселей с использованием вектора движения, который указывает на один из первого субцелого пикселя и второго субцелого пикселя.
[0008] В другом аспекте устройство предусмотрено таким образом, что содержит средство приема значений для положений полного целого пикселя из контрольной выборки. Устройство дополнительно содержит средство применения интерполяционного фильтра в отношении первой группы значений для положений полного целого пикселя, чтобы вычислить значение для первого субцелого пикселя одного из положений полного целого пикселя. Также устройство содержит средство применения интерполяционного фильтра в отношении второй, другой, группы значений для положений полного целого пикселя, чтобы вычислить значение для второго, другого, субцелого пикселя одного из положений полного целого пикселя, и средство кодирования блока пикселей с использованием вектора движения, который указывает на один из первого субцелого пикселя и второго субцелого пикселя.
[0009] В еще одном аспекте способ декодирования видеоданных содержит прием контрольной выборки, содержащей положения полного целого пикселя. Способ также включает в себя прием индикации группы положений полного целого пикселя из контрольной выборки, используемой для интерполяции значения для субцелого пикселя из контрольной выборки. Кроме того, способ также включает в себя применение интерполяционного фильтра в отношении группы положений полного целого пикселя, чтобы вычислить значение субцелого пикселя из контрольной выборки. Способ дополнительно содержит декодирование блока пикселей относительно вычисленного значения субцелого пикселя.
[0010] В другом аспекте устройство содержит видеодекдоер, который выполнен с возможностью принимать контрольную выборку, содержащую положения полного целого пикселя. Видеодекодер также выполнен с возможностью принимать индикацию группы положений полного целого пикселя из контрольной выборки, используемой для интерполяции значения для субцелого пикселя из контрольной выборки. Подобным образом, видеодекодер выполнен с возможностью применять интерполяционный фильтр в отношении группы положений полного целого пикселя, чтобы вычислить значение субцелого пикселя из контрольной выборки. Видеодекодер дополнительно выполнен с возможностью декодировать блок пикселей относительно вычисленного значения субцелого пикселя.
[0011] В другом аспекте машиночитаемый носитель данных содержит команды, которые при выполнении в устройстве кодирования видеосигналов инициируют кодирование устройством видеоблоков. В частности, команды инициируют прием устройством контрольной выборки, содержащей положения полного целого пикселя, и прием индикации группы положений полного целого пикселя из контрольной выборки, используемой для интерполяции значения для субцелого пикселя из контрольной выборки. Команды также инициируют применение устройством интерполяционного фильтра в отношении группы положений полного целого пикселя, чтобы вычислить значение субцелого пикселя из контрольной выборки. Команды дополнительно инициируют декодирование устройством блока пикселей относительно вычисленного значения субцелого пикселя.
[0012] В другом аспекте устройство содержит средство приема контрольной выборки, содержащей положения полного целого пикселя, и средство приема индикации группы положений полного целого пикселя из контрольной выборки, чтобы использовать для интерполяции значения для субцелого пикселя из контрольной выборки. Устройство дополнительно содержит средство вычисления значения субцелого пикселя из контрольной выборки с использованием группы положений полного целого пикселя. Устройство дополнительно включает в себя средство декодирования блока пикселей относительно вычисленного значения субцелого пикселя.
[0013] Методики, описанные в данном раскрытии, могут применяться в отношении аппаратного обеспечения, программного обеспечения, программно-аппаратного обеспечения или любой их комбинации. При применении в отношении программного обеспечения программное обеспечение может реализовываться процессором, который может относиться к одному или нескольким процессорам, таким как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или процессор цифровых сигналов (DSP), или другому интегрированному эквиваленту или дискретным логическим схемам. Программное обеспечение, содержащее команды для реализации методик, может изначально храниться на машиночитаемом носителе и загружаться и выполняться процессором.
[0014] Соответственно, раскрытие также рассматривает машиночитаемый носитель, содержащий команды для инициации реализации процессором любой из множества методик, как описывается в данном раскрытии. В некоторых случаях машиночитаемый носитель данных может формировать часть компьютерного программного продукта, который может быть продан производителям и/или использован в устройстве. Компьютерный программный продукт может включать в себя машиночитаемый носитель данных и в некоторых случаях может также включать в себя упаковочные материалы.
[0015] Раскрытие может также использовать информацию о переносе электромагнитных сигналов. Например, электромагнитный сигнал может содержать информацию, относящуюся к поддержке полного пикселя, используемой для интерполяции значения для субцелого пикселя из контрольной выборки. В некоторых примерах сигнал может генерироваться от устройства или передаваться им с применением методик, описанных здесь. В других примерах это раскрытие может применяться в отношении сигналов, которые могут быть приняты устройством, реализующим методики, описанные здесь.
[0016] Детали одного или нескольких аспектов раскрытия изложены в прилагаемых чертежах и описании, представленных ниже. Другие признаки, цели и преимущества методик, описанных в данном раскрытии, будут понятны из описания и чертежей, а также формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0017] Фиг. 1 представляет собой блок-схему, иллюстрирующую один пример системы кодирования и декодирования видеосигналов, которая может использоваться для реализации одной или нескольких методик этого раскрытия.
[0018] Фиг. 2 представляет собой блок-схему, иллюстрирующую пример видеокодера, продемонстрированного на фиг. 1, с дополнительными деталями.
[0019] Фиг. 3 представляет собой концептуальную диаграмму, иллюстрирующую пример положений целого пикселя, связанных с данными предсказания, и положений субпикселя, связанных с интерполированными данными предсказания.
[0020] Фиг. 4 представляет собой концептуальную диаграмму, иллюстрирующую пример поддержки диагонального шестипиксельного фильтра относительно местоположения субцелого пикселя.
[0021] Фиг. 5 представляет собой концептуальную диаграмму, иллюстрирующую пример поддержки x-образного двенадцатипиксельного фильтра относительно местоположения субцелого пикселя.
[0022] Фиг. 6 представляет собой концептуальную диаграмму, иллюстрирующую пример поддержки двенадцатипиксельного фильтра относительно трех горизонтальных положений субпикселя и трех ветрикальных положений субпикселя.
[0023] Фиг. 7 представляет собой концептуальную диаграмму, иллюстрирующую пример поддержки двенадцатипиксельного фильтра относительно местоположения субпикселя.
[0024] Фиг. 8 представляет собой концептуальную диаграмму, иллюстрирующую пример поддержки квадратного четырехпиксельного фильтра относительно положения субцелого пикселя.
[0025] Фиг. 9 представляет собой концептуальную диаграмму, иллюстрирующую пример поддержки прямоугольного шестипиксельного фильтра относительно положения субцелого пикселя.
[0026] Фиг. 10 представляет собой блок-схему, иллюстрирующую пример видеодекодера, продемонстрированного на фиг. 1, с дополнительными деталями.
[0027] Фиг. 11 представляет собой блок-схему последовательности операций, иллюстрирующую примерное функционирование видеокодера, который использует поддержку пиксельного фильтра, совместимую с этим раскрытием.
[0028] Фиг. 12 представляет собой блок-схему последовательности операций, иллюстрирующую другое примерное функционирование видеокодера, который использует поддержку пиксельного фильтра, совместимую с этим раскрытием.
[0029] Фиг. 13 представляет собой блок-схему последовательности операций, иллюстрирующую пример способа определения поддержки фильтра для субцелого пикселя, совместимой с этим раскрытием.
[0030] Фиг. 14 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример способа определения поддержки фильтра для субцелого пикселя, совместимой с этим раскрытием.
[0031] Фиг. 15 представляет собой блок-схему последовательности операций, иллюстрирующую примерное функционирование видеодекодера, который использует поддержку фильтра, совместимую с этим раскрытием.
[0032] Фиг. 16 представляет собой блок-схему последовательности операций, иллюстрирующую другое примерное функционирование видеодекодера, который использует поддержку фильтра, совместимую с этим раскрытием.
ПОДРОБНОЕ ОПИСАНИЕ
[0033] Это раскрытие описывает методики фильтрации, которые могут применяться кодером и декодером во время стадии межкадрового предсказания в процессе кодирования и/или декодирования видеосигнала. Описанные методики фильтрации могут повысить точность данных предсказания, используемых при фракционной пиксельной интерполяции, и в некоторых случаях могут повысить эффективность кодирования. В раскрытии используются термины «субпиксель», «субцелый пиксель», «частичный пиксель» и «субпел» взаимозаменяемо. Существуют аспекты данного раскрытия, включающие в себя методики интерполяции положений субпикселя на основе любой комбинации любого количества положений полного пикселя, и методики выбора поддержки для интерполяционных фильтров для положений субпикселя на основе кодированных прежде кадров или текущего кодирования кадров. Эти и другие методики подробно описываются ниже.
[0034] Межкадровое кодирование на основе блоков представляет собой методику кодирования, которая полагается на временное предсказание, чтобы снизить или устранить временную избыточность между видеоблоками последовательных кодированных элементов видеопоследовательности. Кодированные элементы могут содержать видеокадры, фрагменты (слайсы) видеокадров, группы изображений или другой определенный элемент из кодированных видеоблоков. Для межкадрового кодирования видеокодер выполняет оценку движения и компенсацию движения, чтобы оценить движение между видеоблоками двух или более смежных кодированных элементов. Используя методики оценки движения, видеокодер генерирует векторы движения, которые могут отражать смещение видеоблоков по отношению к соответствующим видеоблокам предсказания в одном или нескольких опорных кадрах или других кодированных элементах. Используя методики компенсации движения, видеокодер может использовать векторы движения, чтобы генерировать видеоблоки предсказания из одного или нескольких опорных кадров или других кодированных элементов. После компенсации движения видеокодер может вычислять остаточные видеоблоки, вычитая видеоблоки предсказания из числа исходных видеоблоков, подвергаемых кодированию.
[0035] Видеокодер также может осуществлять процессы кодирования с преобразованием, квантованием и энтропийного кодирования, чтобы дополнительно снизить битрейт, относящуюся к связи остаточных блоков. Методики преобразования могут содержать дискретные косинусные преобразования (DCT) или концептуально сходные процессы. В качестве альтернативы могут использоваться вейвлетные преобразования, преобразования целого или преобразования других типов. В процессе DCT, например, группа значений пикселя может быть преобразована в коэффициенты преобразования, которые могут отражать энергию значений пикселя в частотной области. Видеокодер также может квантовать коэффициенты преобразования, что в общем может включать процесс, который снижает количество битов, относящихся к соответствующему коэффициенту преобразования. Энтропийное кодирование может включать в себя один или несколько процессов, которые совместно сжимают данные для вывода в битовый поток, где сжатые данные могут включать в себя, например, последовательность режимов кодирования, информацию о движении, шаблоны кодированных блоков и квантованные коэффициенты преобразования. Примеры энтропийного кодирования включают в себя адаптивное к контексту кодирование с переменной длиной (CAVLC) и адаптивное к контексту двоичное арифметическое кодирование (CABAC), но не ограничиваются этим.
[0036] Кодированный видеоблок может быть представлен информацией о предсказании, которая может использоваться для создания или идентификации блока предсказания, и остаточным блоком данных, который может применяться в отношении блока предсказания, чтобы воссоздать исходный блок. Информация о предсказании может содержать один или несколько векторов движения, которые используются для идентификации блока предсказания данных. Используя векторы движения, декодер может восстанавливать блоки предсказания, которые были использованы для кодирования остаточных блоков. Так, имея группу остаточных блоков и группу векторов движения (и, возможно, некоторый дополнительный синтаксис), декодер может восстанавливать видеокадр, который был первоначально кодирован. Межкадровое кодирование на основе оценки движения и компенсации движения может способствовать относительно большим объемам сжатия без чрезмерной потери данных, поскольку последовательные видеокадры или другие типы кодированных элементов зачастую сходны. Кодированная видеопоследовательность может содержать блоки остаточных данных, векторы движения (когда межкадровое предсказание кодировано), обозначения режимов межкадрового предсказания для внутрикадрового предсказания и, возможно, другие данные, такие как типы синтаксиса.
[0037] Методики интерполяции субцелых пикселей были разработаны с целью увеличить точность предсказания для уровня сжатия, которая может достигаться при межкадровом кодировании. В этом случае данные предсказания, генерируемые во время компенсации движения, которые используется для кодирования видеоблока, могут соответствовать субцелым пикселям, значения которых могут быть интерполированы от значений для целых пикселей видеоблоков опорного видеокадра или другого кодированного элемента, к которому относится вектор движения. Видеокодер может вычислять значения для положений субцелого пикселя, используя методики интерполяции, например, применяя интерполяционные фильтры в отношении группы поддержки, например, значения для полного целого пикселя и/или кодированные прежде значения других положений субцелого пикселя. Положения субцелого пикселя могут иметь различные степени разрешения в разных примерах, как то разрешение в полпикселя, разрешение в четверть пикселя, разрешение в одну восьмую пикселя, разрешение в одну шестнадцатую пикселя или другие разрешения. Соответственно, видеокодер может вычислять вектор движения во время оценки движения, которая имеет точность до субпикселя.
[0038] Фиг. 1 представляет собой блок-схему, иллюстрирующую один пример системы 10 кодирования и декодирования видеосигналов, которая может использоваться для реализации одной или нескольких методик этого раскрытия. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое передает кодированное видео к устройству-адресату 16 посредством канала 15 связи. Устройство-источник 12 и устройство-адресат 16 могут содержать любое из широкого диапазона устройств. В некоторых случаях любое из устройства-источника 12 и устройства-адресата 16 может содержать устройства беспроводной связи, такие как беспроводные радиотелефонные трубки, так называемые сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 15 связи, при этом в таком случае канал 15 связи является беспроводным. Однако методики этого раскрытия, которые касаются фильтрации и генерации данных предсказания во время кодирования с предсказанием, не обязательно должны ограничиваться беспроводными приложениями или установками. Методики также могут быть актуальны для широкого диапазона других установок и устройств, включая устройства, которые осуществляют связь посредством физических проводов, оптоволокон или других физических или беспроводных носителей. Кроме того, методики кодирования или декодирования также могут применяться в отношении автономного устройства, которые не обязательно осуществляет связь с каким-либо другим устройством.
[0039] В примере, продемонстрированном на фиг. 1, устройство-источник 12 может включать в себя источник 20 видеосигнала, видеокодер 22, модулятор/демодулятор (модем) 23 и передатчик 24. Устройство-адресат 16 может включать в себя приемник 26, модем 27, видеодекодер 28 и устройство 30 отображения. В соответствии с данным раскрытием видеокодер 22 устройства-источника 12 может быть выполнен с возможностью применять одну или несколько методик настоящего раскрытия как часть процесса кодирования видеосигнала. Подобным образом видеодекодер 28 устройства-адресата 16 может быть выполнен с возможностью применять одну или несколько методик настоящего раскрытия как часть процесса декодирования видеосигнала.
[0040] Снова стоит упомянуть, что система 10, продемонстрированная на фиг. 1 является только одним примером. Различные методики этого раскрытия могут реализовываться любым кодирующим устройством, которое поддерживает кодирование с предсказанием на основе блоков, или любым декодирующим устройством, которое поддерживает кодирование с предсказанием на основе блоков. Устройство-источник 12 и устройство-адресат 16 - это только примеры таких кодирующих устройств, в которых устройство-источник 12 генерирует кодированные видеоданные для передачи к устройству-адресату 16. В некоторых случаях устройства 12, 16 могут функционировать по существу симметрично, так, что каждое из устройств 12, 16 включает в себя компоненты для кодирования и декодирования видеосигнала. Следовательно, система 10 может поддерживать одностороннюю или двустороннюю передачу видеосигналов между видеоустройствами 12, 16, например, для потокового видео, воспроизведения видео, телевизионного вещания или видеотелефонии.
[0041] Источник 20 видеосигнала устройства-источника 12 может включать в себя устройство захвата видеоизображений, такое как видеокамера, видеоархив, содержащий записанное ранее видео, или источник видеосигнала от провайдера видеоконтента. В качестве дополнительной альтернативы источник 20 видеосигнала может генерировать данные на основе компьютерной графики как исходное видео или комбинацию «живого» видео, архивного видео и/или генерированного компьютером видео. В некоторых случаях, если источник 20 видеосигнала представляет собой видеокамеру, устройство-источник 12 и устройство-адресат 16 могут формировать так называемые камерофоны или видеофоны или другие мобильные устройства, выполненные с возможностью управлять видеоданными, как то планшетные вычислительные устройства. В таком случае захваченное, предварительно захваченное или генерированное компьютером видео может кодироваться видеокодером 22. Кодированная видеоинформация затем может модулироваться модемом 23 в соответствии со стандартом связи, например, таким как множественный доступ с кодовым разделением каналов (CDMA) или другим стандартом связи, и передаваться к устройству-адресату 16 посредством передатчика 24 и канала 15 связи. Модем 23 может включать в себя различные блоки смешивания, фильтры, усилители или другие компоненты, предназначенные для модуляции сигналов. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включая усилители, фильтры, а также одну или несколько антенн.
[0042] Приемник 26 устройства-адресата 16 принимает информацию по каналу 15 связи, а модем 27 демодулирует данную информацию. Подобно передатчику 24, приемник 26 может включать в себя схемы, предназначенные для приема данных, включая усилители, фильтры, а также одну или несколько антенн. В некоторых случаях передатчик 24 и/или приемник 26 могут объединены в пределах одного передающего компоненты, который включает в себя как приемные, так и передающие схемы. Модем 27 может включать в себя различные блоки смешивания, фильтры, усилители или другие компоненты, предназначенные для демодуляции сигналов. В некоторых случаях модемы 23 и 27 могут включать в себя компоненты для осуществления и модуляции, и демодуляции.
[0043] Снова процесс кодирования видеосигнала, выполняемый видеокодером 22, может задействовать одну или несколько методик, описанных здесь, во время процесса кодирования межкадрового предсказания, который может включать в себя оценку движения и компенсацию движения. Процесс декодирования видеосигнала, выполняемый видеодекодером 28, также может реализовывать подобные методики во время стадии компенсации движения процесса декодирования. Термин «кодер» используется здесь в отношении специального компьютерного устройства или аппаратуры, который или которая осуществляет кодирование или декодирование видеосигнала. Термин «кодер» в общем относится к любому видеокодеру или видеодекодеру или комбинированному кодеру/декодеру (кодек). Термин «кодирование» относится к кодированию или декодированию. Устройство 30 отображения отображает декодированные видеоданные пользователю и может содержать любое многообразие устройств отображения, как то электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0044] В примере, продемонстрированном на фиг. 1, канал 15 связи может содержать любой беспроводное или проводное средство связи, такое как радиочастотный (RF) спектр или одна или несколько физических линий связи, или любую комбинацию беспроводных и проводных средств. Канал 15 связи может формировать часть сети на основе пакетов, такой как локальная сеть, широкомасштабная сеть или глобальная сеть, такая как Интернет. Канал 15 связи в общем представляет собой любое подходящее средство связи или совокупность различных средств связи для передачи видеоданных от устройства-источника 12 к устройству-адресату 16. Канал 15 связи может включать в себя маршрутизаторы, переключатели, базовые станции или любое другое оборудование, которое может быть полезным для упрощения связи устройства-источника 12 с устройством-адресатом 16.
[0045] Видеокодер 22 и видеодекодер 28 могут функционировать в соответствии со стандартом сжатия видеосигнала, таким как стандарт ITU-T H.264, в качестве альтернативы описываемый как MPEG-4, часть 10, усовершенствованное кодирование видеосигнала (AVC). Методики, представленные в этом раскрытии, однако не ограничиваются каким-либо конкретным стандартом кодирования видеосигнала. Хотя это и не показано на фиг. 1, в некоторых аспектах каждый из видеокодера 22 и видеодекодера 28 может интегрироваться с аудиокодером или аудиодекодером и может включать в себя соответствующие MUX-DEMUX элементы или другое аппаратное и программное обеспечение, чтобы осуществлять кодирование и аудио-, и видеосигнала в общем потоке данных или отдельных потоках данных. Если это является релевантным, MUX-DEMUX элементы могут соответствовать протоколу мультиплексирования ITU H.223 или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0046] Каждый из видеокодера 22 и видеодекодера 28 может быть реализован как один или несколько микропроцессоров, процессоров обработки цифровых сигналов (DSP), специализированных интегральных схем (ASIC) программируемых пользователем вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратное обеспечение, программно-аппаратное обеспечение или любая их комбинация. Когда любая из методик этого раскрытия или они все реализованы в виде программного обеспечения, устройство реализации может дополнительно включать в себя аппаратное обеспечение для хранения и/или выполнения команд для программного обеспечения, например, блок памяти для хранения команд и один или несколько блоков обработки для выполнения команд. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или несколько кодеров или декодеров, каждый из которых может быть интегрирован как часть комбинированного кодека, который обеспечивает возможности кодирования и декодирования в соответствующем мобильном устройстве, абонентском устройстве, вещательном устройстве, сервере и т.п.
[0047] Видеопоследовательность обычно включает в себя серию видеокадров, также именуемых видеоизображениями. Видеокодер 22 функционирует на видеоблоках внутри отдельных видеокадров, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированные или изменяющиеся размеры и могут различаться по размеру в соответствии с определенным стандартом кодирования. Каждый видеокадр включает в себя серию фрагментов. В стандарте ITU-T H.264, например, каждый фрагмент может включать в себя серию макроблоков, которые могут быть организованы в субблоки. Стандарт 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), или концептуально подобного процесса преобразования.
[0048] Меньшие видеоблоки могут обеспечивать лучшее разрешение и могут использоваться для местоположений видеокадра, которые включают в себя высокую степень детализации. В общем макроблоки и различные субблоки могут рассматриваться как видеоблоки. Кроме того, фрагмент может рассматриваться как серия видеоблоков, таких как макроблоки и/или субблоки. Каждый фрагмент может быть независимо декодируемым элементом видеокадра. В качестве альтернативы сами кадры могут быть декодируемыми элементами или другие части кадра могут быть определены как декодируемые элементы. Термин «кодированный элемент» относится к любому независимо декодируемому элементу видеокадра, такому как целый кадр, фрагмент кадра, блока видеоданных, или другому независимо декодируемому элементу, определенному в соответствии с используемыми методиками кодирования.
[0049] Чтобы кодировать видеоблоки, видеокодер 22 выполняет внутрикадровое предсказание или межкадровое предсказание, чтобы генерировать блок предсказания. Видеокодер 22 вычитает блоки предсказания от исходных видеоблоков, подлежащих кодированию, чтобы генерировать остаточные блоки. Таким образом, остаточные блоки могут отражать разницу в пиксель на пиксель между блоками, подвергаемыми кодированию, и блоками предсказания. Видеокодер 22 может выполнять преобразование в отношении остаточных блоков, чтобы генерировать блоки коэффициентов преобразования. Применив методики кодирования и преобразования на основе внутрикадрового или междкадрового предсказания, видеокодер 22 может квантовать коэффициенты преобразования. Квантизация в общем относится к процессу, в котором коэффициенты квантуются, чтобы по возможности уменьшить количество данных, используемых для отражения коэффициентов. После квантизации энтропийное кодирование может выполняться в соответствии с методологией энтропийного кодирования, как то адаптивное к контексту кодирование с переменной длиной (CAVLC) и адаптивное к контексту двоичное арифметическое кодирование (CABAC). Дополнительные детали процесса кодирования, выполняемого видеокодером 22, описываются ниже со ссылкой на фиг. 2.
[0050] В настоящее время предпринимаются попытки разработать новый стандарт кодирования видеосигнала, сейчас именуемый высокоэффективным кодированием видеосигнала (HEVC). Новый будущий стандарт также именуется Н.265. Попытки стандартизации основаны на модели устройства кодирования видеосигнала, именуемой тестовой моделью HEVC (HM). НМ предполагает некоторые возможности устройств кодирования видеосигнала посредством устройств в соответствии, например, с ITU-T H.264/AVC. Например, тогда как Н.264 предполагает девять режимов кодирования внутрикадрового предсказания, НМ предполагает не меньше тридцати трех режимов кодирования внутрикадрового предсказания.
[0051] НМ относится к блоку видеоданных как модуль кодирования (CU). Синтаксические данные в пределах битового потока могут определять самый большой модуль кодирования (LCU), который является самым большим модулем кодирования с точки зрения количества пикселей. В общем CU имеет сходное назначение с макроблоком Н.264, за исключением того, что CU не имеет различия по размеру. Так, CU может быть разделен на несколько суб-CU. В общем, ссылки в этом раскрытии на CU могут относиться к самому большому модулю кодирования изображения или суб-CU LCU. LCU может быть разделен на несколько суб-CU, и каждый суб-CU может быть разделен на несколько суб-CU. Синтаксические данные для битового потока могут определять максимальное количество временных отрезков, на которые может быть разделен LCU, именуемое глубиной CU. Соответственно, битовый поток также может определять самый маленький модуль кодирования (SCU). Это раскрытие также использует термин «блок» в отношении любого из CU, модуля предсказания (PU), модуля преобразования (TU).
[0052] LCU может быть связан со структурой данных квадрадерева. В общем, структура данных квадрадерева включает в себя один узел на CU, где корневой узел соответствует LCU. Если CU разделен на четыре суб-CU, узел, соответствующий CU, включает в себя четыре концевых вершины, каждая из которых соответствует одному из суб-CU. Каждый узел из структуры данных квадрадерева может обеспечивать синтаксические данные для соответствующего CU. Например, узел в квадрадереве может включать в себя флажок разделения, указывающий, разделен ли CU, соответствующий узлу, на суб-CU. Синтаксические модули для CU могут быть определены рекурсивно и могут зависеть от того, разделен ли CU на суб-CU.
[0053] CU, который не разделен, может включать в себя один или несколько модулей предсказания (PU). В общем, PU отражает все или часть соответствующих CU и включает в себя данные для восстановления контрольной выборки для PU. Например, когда PU кодирован в режиме внутрикадрового кодирования, PU может включать в себя данные, описывающие режим внутрикадрового предсказания для PU. В качестве другого примера, когда PU кодирован в режиме межкадрового кодирования, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описывать, к примеру, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, с точностью до четверти пикселя или с точностью до одной восьмой пикселя), опорный кадр, на который указывает вектор движения, и/или список ссылок (например, список 0 или список 1) для вектора движения. Данные для CU, определяющие PU, могут также описывать, например, разделение CU на один или несколько PU. Режимы разделения могут различаться в зависимости от того кодирован ли CU, кодирован в режиме внутрикадрового кодирования или кодирован в режиме межкадрового кодирования.
[0054] CU, имеющий один или несколько PU, также может включать в себя один или несколько модулей преобразования (TU). Выполнив предсказание с использованием PU, видеокодер может вычислять остаточное значения для части CU, соответствующей PU. Остаточное значение может быть преобразовано, развернуто и квантовано. TU не обязательно должен ограничиваться размером PU. Таким образом, TU может быть больше или меньше соответствующего PU для одного и того же CU. В некоторых примерах максимальный размер TU может соответствовать размеру соответствующего CU.
[0055] Как было упомянуто выше, внутрикадровое предсказание включает в себя предсказание PU текущего CU изображения исходя из прежде кодированных CU того же изображения. Точнее, видеокодер может осуществлять внутрикадровое предсказание текущего CU изображения, используя конкретный режим внутрикадрового предсказания. НМ-кодер может быть выполнен с возможностью функционирования в режимах внутрикадрового предсказания в количестве до тридцати трех. Следовательно, чтобы поддерживать однозначное соответствие между направленными режимами внутрикадрового предсказания и направленными преобразованиями, НМ-кодеры и декодеры должны хранить 66 матриц для каждой поддерживаемой величины преобразования. Кроме того, размеры блоков, для которых поддерживаются все тридцать три режима внутрикадрового предсказания, могут быть относительно большими блоками, например, 32×32 пикселя, 64×64 пикселя или даже больше.
[0056] В устройстве-адресате 16 видеодекодер 28 принимает кодированные видеоданные. Видеодекодер 28 осуществляет энтропийное декодирование принятых видеоданных в соответствии с методологией энтропийного кодирования, как то CAVLC или CABAC, чтобы получить квантованные коэфффициенты. Видеодекодер 28 реализует функции обратной квантизации (деквантизации) и обратного преобразования, чтобы восстановить остаточный блок в пиксельной области. Видеодекодер 28 также генерирует блок предсказания на основе информации управления или синтаксической информации (например, режим кодирования, векторы движения, синтаксис, который определяет коэффициенты фильтра, и т.п.), включенной в кодированные видеоданные. Видеодекодер 28 может вычислять сумму блока предсказания и восстановленного остаточного блока, чтобы создать восстановленный видеоблок для отображения. Дополнительные детали примерного процесса декодирования, выполняемого видеодекодером 28, описаны ниже со ссылкой на фиг. 10.
[0057] Как описывается здесь, Y может отражать яркость, а Cb и Cr могут отражать два разных значения цветности трехмерного цветового пространства YCbCr. Местоположение каждого пикселя может фактически определять три значения пикселя для трехмерного цветового пространства. Методики из данного раскрытия, однако, могут относиться к предсказанию в отношении одного измерения в целях упрощения. Тогда как методики описываются в отношении значений пикселя в одном измерении, подобные методики могут быть предложены и для других измерений.
[0058] В соответствии с методиками по данному раскрытию, видеокодер 22 и видеодекодер 28 могут использоваться одну или несколько методик интерполяционной фильтрации во время компенсации движения. В частности, в соответствии с одним аспектом данного раскрытия, видеокодер 22 и/или видеодекодер 28 могут получать блок пикселей, при этом блок пикселей включает в себя значения целого пикселя, соответствующие положениям целого пикселя в пределах блока пикселей. Видеокодер 22 и/или видеодекодер 28 могут вычислять значения для положений субпикселя, связанных с блоком пикселей, на основе значений целого пикселя, при этом вычисление значений субпикселя содержит применение интерполяционного фильтра в отношении различных групп поддержки фильтра, где каждая из групп поддержки фильтра соответствует группе из одного или нескольких положений целого пикселя в блоке пикселей. Видеокодер 22 и/или видеодекодер 28 также могут генерировать блок предсказания на основе по меньшей мере некоторых из значений субпикселя, чтобы кодировать или декодировать блок пикселей.
[0059] В соответствии с аспектом данного раскрытия видеокодер 22 и/или видеодекодер 28 могут применять интерполяционный фильтр для поддержки фильтра, содержащей любую комбинацию положений полного целого пикселя. Видеокодер 22 может определять множество групп коэффициентов фильтра для некоторого количества (например, пятнадцать) различных положений субпикселя, связанных с положением полного целого пикселя, и выводом пятнадцати групп коэффициентов фильтра к другому устройству как части кодированного битового потока. Таким образом, множество групп коэффициентов фильтра может определять все коэффициенты фильтра для всех пятнадцати положений полпикселя и четверти пикселя. В некоторых примерах группы коэффициентов фильтра для каждого полпикселя и четвертьпикселя, связанного с положением полного целого пикселя, могут быть уникальными. В других примерах некоторые или все из групп коэффициентов фильтра для полпикселя или четвертьпикселя, связанных с положением полного целого пикселя, могут быть одинаковыми.
[0060] Видеодекодер 28 устройства-адресата 16 может принимать одну или несколько групп коэффициентов фильтра как часть кодированного битового видеопотока и генерировать пятнадцать групп коэффициентов фильтра, соответствующих пятнадцати различным положениям субпикселя, на основе одной или нескольких групп коэффициентов фильтра. Видеодекодер 28 также может генерировать значения субпикселя для декодирования видеосигнала на основе одной или нескольких групп коэффициентов фильтра, при этом интерполированные данные предсказания соответствуют одному из пятнадцати разных положений субпикселя, и декодировать один или несколько видеоблоков на основе интерполированных данных предсказания.
[0061] В соответствии с другим аспектом данного раскрытия, видеокодер 22 может принимать значения для множества положений полного целого пикселя из контрольной выборки, применять интерполяционный фильтр в отношении первой группы значений для множества положений полного целого пикселя, чтобы вычислить значение для первого субцелого пикселя одного из множества положений полного целого пикселя, применять тот же интерполяционный фильтр в отношении второй, другой, группы значений для множества положений полного целого пикселя, чтобы вычислить значение для второго, другого, субцелого пикселя одного из множества положений полного целого пикселя, и кодировать текущий блок пикселей, используя вектор движения, который указывает на один из первого субцелого пикселя и второго субцелого пикселя. В некоторых примерах интерполяционный фильтр является первым интерполяционным фильтром, и видеокодер 22 может дополнительно применять второй, другой, интерполяционный фильтр в отношении третьей группы значений для множества положений полного целого пикселя, чтобы вычислить значение для третьего субцелого пикселя одного из множества положений полного целого пикселя. В других примерах дополнительные фильтры или группы значений для множества положений полного целого пикселя используются, чтобы вычислить дополнительные значения для положений субцелого пикселя.
[0062] Видеокодер 22 может обеспечивать индикацию интерполяционного фильтра, используемого для вычисления значения для первого субцелого пикселя. Индикация может содержать выраженную индикацию поддержки. В качестве альтернативы индикация может соответствовать указателю или другому идентификатору, когда видеокодер 22 и видеодекодер 28 предварительно выполнены с группами поддержки. Индикация может быть обеспечена на уровне модуля предсказания, уровне модуля кодирования, уровне кадра, уровне фрагмента или уровне последовательности, при этом каждый уровень связан с текущим блоком пикселей. В некоторых примерах индикация может быть обеспечена в группе параметров последовательности (SPS) или группе параметров изображения (PPS). Видеокодер 22 может выводить индикацию к другому устройству как часть кодированного битового потока. В некоторых примерах интерполяционный фильтр является интерполяционным фильтром ITU-T H.264, фиксированным интерполяционным фильтром (например, выбранным из группы интерполяционных фильтров) или адаптивным интерполяционным фильтром. Более того, видеокодер 22 может обеспечивать индикацию поддержки для каждого из подцелого пикселя полного пикселя, используя методики, подобные тем, чтобы были описаны выше.
[0063] Интерполяционный фильтр может быть отделимым фильтром или неразделимым фильтром. Неразделимый фильтр является интерполяционным фильтром, в котором поддержка фильтра может быть изменена, чтобы сразу генерировать субпиксель, не выполняя промежуточного этапа фильтрации. В отличие от неразделимого фильтра, отделимый фильтр - такой, в котором фильтрация может зависеть от другого этапа фильтрации. Например, при билинейной фильтрации фильтр может сначала применяться в горизонтальном направлении, чтобы генерировать значение для положения первого субпикселя. Затем фильтр может быть перемещен и применен поперек положения первого субпикселя в вертикальном направлении, чтобы генерировать значение для положения второго субпикселя.
[0064] В другом примере способ может содержать прием контрольной выборки, содержащей множество положений полного целого пикселя, прием индикации о группе положений полного целого пикселя из контрольной выборки, что используется для интерполяции значения для субцелого пикселя из контрольной выборки, применение интерполяционного фильтра в отношении группы положений полного целого пикселя, чтобы вычислить значение субцелого пикселя из контрольной выборки, и декодирование текущего блока пикселей относительно вычисленного значения субцелого пикселя.
[0065] Фиг. 2 представляет собой блок-схему, иллюстрирующую пример видеокодера 22, продемонстрированного на фиг. 1, с дополнительными деталями. Видеокодер 22, который может реализовывать методики межкадрового предсказания, является соответствующим данному раскрытию. Видеокодер 22 - это один пример специализированного компьютерного видеоустройства или аппаратуры, именуемой здесь «кодером». Как показано на фиг. 2, видеокодер 22 соответствует видеокодеру 22 устройства 20. Однако в других примерах видеокодер 22 может соответствовать и другому устройству. В дополнительных примерах другие модули (такие как, например, другой кодер/декодер (CODECS)) также могут реализовывать методики подобно видеокодеру 22.
[0066] Видеокодер 22 может осуществлять внутрикадровое и межкадровое кодирование блоков в пределах видеокадров, хотя компоненты внутрикадрового кодирования не показаны на фиг. 2 для простоты демонстрации. Внутрикадровое кодирование основывается на пространственном предсказании, чтобы снизить или устранить пространственную избыточность видеосигнала в пределах заданного видеокадра. Межкадровое кодирование основывается на временном предсказании, чтобы снизить или устранить временную избыточность видеосигнала в пределах соседних кадров видеопоследовательности. Интра-режим (I-mode) может относиться к режиму пространственного сжатия. Интер-режимы, такие как режим предсказания (P-mode) или двунаправленный режим (B-mode), могут относиться к режимам временного сжатия. Методики по данному раскрытию применяются во время межкадрового кодирования, и, следовательно, модули внутрикадрового кодирования, такие как модуль пространственного предсказания, не проиллюстрированы на фиг. 2 для упрощения иллюстрации.
[0067] Как показано на фиг. 2, видеокодер 22 принимает видеоблок в пределах видеокадра, подлежащего кодированию. В примере, продемонстрированном на фиг. 2, видеокодер 22 включает в себя модуль 32 кодирования с предсказанием (MCU), блок памяти 34, сумматор 48, модуль преобразования 38, модуль 40 квантизации и модуль 46 энтропийного кодирования. Для восстановления видеоблока видеокодер также включает в себя модуль 42 обратной квантизации, модуль 44 обратного преобразования и сумматор 51. В некоторых примерах деблокирующий фильтр может также быть включен в пределы блока фильтров, чтобы устранить дефекты блочности из восстановленного видео. По желанию деблокирующий фильтр мог бы стандартным образом фильтровать выход сумматора 51. В одном примере, как показано на фиг. 2, модуль 38 преобразования может быть функциональным блоком, не «TU» с точки зрения HEVC.
[0068] Модуль 32 предсказания может включать в себя модуль 35 оценки движения (МЕ) и модуль 37 компенсации движения (МС). Один или несколько интерполяционных фильтров 39 (именуемых здесь «фильтром 39») могут быть включены в модуль 32 предсказания и могут запускаться одним из модуля 35 МЕ и модуля 37 МС или ими обоими, чтобы осуществить интерполяцию как часть оценки движения и/или компенсации движения в соответствии с данным раскрытием. Могут быть включены и другие методики, в которых значение для субпикселя вычисляется на основе значений для соседних полных пикселей и/или прежде вычисленных значений для соседних субпикселей. Фильтр 39 может фактически отражать множество различных фильтров, чтобы упростить различные многочисленные типы интерполяции и фильтрации интерполяционного типа, как описывается здесь. Таким образом, модуль 32 предсказания может включать в себя множество интерполяционных фильтров и подобных интерполяционным фильтров. В процессе кодирования видеокодер 22 принимает видеоблок, подлежащий кодированию (обозначенный «VIDEO BLOCK» на фиг. 2), а модуль 32 предсказания выполняет кодирование с межкадровым предсказанием, чтобы генерировать блок предсказания (обозначенный PREDICTION BLOCK«» на фиг. 2). Точнее, модуль 35 МЕ может осуществлять оценку движения, чтобы идентифицировать блок предсказания в блоке 34 памяти, а модуль 37 МС может осуществлять компенсацию движения, чтобы генерировать блок предсказания.
[0069] Оценка движения обычно рассматривается как процесс генерации векторов движения, которые оценивают движение видеоблоков. Вектор движения, например, может отражать смещение блока предсказания в пределах предсказания или опорного кадра (или другого кодированного элемента, например, фрагмента) относительно блока, подлежащего кодированию в пределах текущего кадра (или другого кодированного элемента). В соответствии с методиками настоящего раскрытия вектор движения может иметь точность до субцелого пикселя. Например, как горизонтальный, так и вертикальный компоненты вектора движения могут иметь соответствующие полные целые компоненты и субцелые компоненты. Опорный кадр (или часть кадра) может быть временно расположен до или после видеокадра (или части видеокадра), к которому относится текущий видеоблок. Компенсация движения обычно рассматривается как процесс выборки или генерации блока предсказания из блока 34 памяти, который может включать в себя интерполяцию или генерацию иным способом данных предсказания на основе вектора движения, определенного при оценке движения.
[0070] Модуль 35 МЕ вычисляет вектор движения для видеоблока, подлежащего кодированию посредством сравнения видеоблока с опорными блоками одного или нескольких опорных кадров (например, предыдущего и/или последующего кадра). Данные для опорных блоков могут храниться в блоке 34 памяти. Модуль 35 МЕ может осуществлять оценку движения с точностью до частичного пикселя, иногда именуемую оценкой движения частичного пикселя, частичного пела, субцелого или субпикселя. По существу, термины оценка движения частичного пикселя, частичного пела, субцелого ил субпикселя могут использоваться взаимозаменяемо. При оценке движения частичного пикселя модуль 35 МЕ может вычислять вектор движения, который отражает смещение к местоположению отличному от местоположения целого пикселя. Таким образом, вектор движения может иметь точность до частичного пикселя, например, точность до полпикселя, точность до четверти пикселя, точность до одной восьмой пикселя или другую точность до частичного пикселя. Таким образом, оценка движения частичного пикселя позволяет модулю 32 предсказания оценивать движение с более высокой точностью, чем местоположения целого пикселя (или полного пикселя), и, так, модуль 32 предсказания может генерировать более точный блок предсказания. Оценка движения частичного пикселя может иметь точность до полпикселя, точность до четверти пикселя, точность до одной восьмой пикселя или любую более высокую степень точности до субпикселя. Модуль 35 МЕ может запускать фильтр(-ы) 39 для любых необходимых интерполяций во время процесса оценки движения. В некоторых примерах блок 34 памяти может хранить интерполированные значения для субцелых пикселей, которые могут быть вычислены, например, сумматором 51 с использованием фильтра (фильтров) 39. Например, сумматор 51 может применять фильтр(-ы) 39 в отношении восстановленных блоков, которые не хранятся в блоке 34 памяти.
[0071] Чтобы выполнить компенсацию движения частичного пикселя, модуль 37 МС может осуществлять интерполяцию (иногда именуемую интерполяционной фильтрацией), чтобы генерировать данные с разрешением субпикселя (что называется здесь значениями субпикселя или частичного пикселя). Модуль 37 МС может запускать фильтр(-ы) 39 для такой интерполяции. Модуль 32 предсказания может осуществлять интерполяцию (или подобную интерполяции фильтрацию целых пикселей), используя методики, описанные здесь. Таким образом, модуль 32 предсказания может вычислять значения для положений субцелого пикселя опорного блока, которые затем могут быть использованы для создания блока предсказания из видеоданных.
[0072] Когда вектор движения для видеоблока, подлежащего кодированию, вычислен модулем 35 МЕ, модуль 37 МС генерирует видеоблок предсказания, связанный с этим вектором движения. Модуль 37 МС может выделить блок предсказания из блока 34 памяти на основе вектора движения, определенного модулем 35 МС. В случае если вектор движения - с точностью до частичного пикселя, модуль 37 МС может фильтровать данные из блока 34 памяти, чтобы интерполировать такие данные до разрешения в субпиксель, например, запуская фильтр(-ы) 39 для этого процесса. В некоторых случаях положения полного целого пикселя, соответствующие коэффициентам фильтра, используемым для интерполяции таких данных до разрешения в субпиксель, могут быть обозначены как один или несколько интерполяционных синтаксических элементов для модуля 46 энтропийного кодирования для включения в кодированный битовый поток. Подобным образом методика интерполяционной фильтрации или режим, который использовался для генерации данные предсказания субпикселя, также может быть обозначен как один или несколько интерполяционных синтаксических элементов для модуля 46 энтропийного кодирования для включения в кодированный битовый поток.
[0073] Когда модуль 32 предсказания сгенерировал блок предсказания, видеокодер 22 формирует остаточный видеоблок (обозначенный «RESID. BLOCK» на фиг. 2), отнимая блок предсказания от исходного видеоблока, подвергаемого кодированию. Сумматор 48 отражает компонент или компоненты, которые осуществляют данную операцию вычитания. Модуль 38 преобразования выполняет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование, в отношении остаточного блока, создавая видеоблок, содержащий остаточные коэффициенты блока преобразования. Модуль 38 преобразования, например, может выполнять и другие преобразования, такие как те, что определяются стандартом Н.264, концептуально подобные DCT. Такие преобразования могут включать в себя, например, направленные преобразования (такие как преобразования по теореме Карунена-Лоэве), вейвлетные преобразования, преобразования целого, преобразования поддиапазона или преобразования других типов. В любом случае, модуль 38 преобразования осуществляет преобразование в отношении остаточного блока, создавая блок остаточных коэффициентов преобразования. Преобразование может переводить остаточную информацию из пиксельной области в частотную область.
[0074] Модуль 40 квантизации квантует остаточные коэффициенты преобразования, чтобы дополнительно снизить битрейт. Процесс квантизации может снизить битовую глубину, связанную с некоторыми или всеми из коэффициентов. После квантизации модуль 46 энтропийного кодирования осуществляет энтропийное кодирование в отношении квантованных коэффициентов преобразования. Например, модуль 46 энтропийного кодирования может реализовывать CAVLC, CABAC или другую методологию энтропийного кодирования.
[0075] Модуль 46 энтропийного кодирования также может кодировать один или несколько векторов движения и информацию поддержки, полученную от модуля 32 предсказания или другого компонента видеокодера 22. Один или несколько синтаксических элементов предсказания могут включать в себя режим кодирования, данные для одного или нескольких векторов движения (например, горизонтальные и вертикальные компоненты, идентификаторы списка ссылок, указатели списка и/или сигнальная информация о разрешении вектора движения), индикацию методики интерполяции, которая использовалась для генерации данных субпикселя, группу или подгруппу коэффициентов фильтра, группу положений полного или субцелого пикселя, используемых в качестве поддержки фильтра, или другую информацию, связанную с генерацией блока предсказания. После энтропийного кодирования, выполняемого модулем 46 энтропийного кодирования, кодированное видео и синтаксические элементы могут быть переданы к другому устройству или заархивированы (например, в блоке 34 памяти) для более поздней передачи или поиска.
[0076] Модуль 42 обратной квантизации и модуль 44 обратного преобразования осуществляют обратную квантизацию и обратное преобразование соответственно, чтобы восстановить остаточный блок в пиксельной области, например, для использования в дальнейшем в качестве опорного блока. Восстановленный остаточный блок (обозначенный «RECON. RESID. BLOCK» на фиг. 2) может отражать восстановленную версию остаточного блока, предоставленную модулю 38 преобразования. Восстановленный остаточный блок может отличаться от остаточного блока, сгенерированного сумматором 48, в силу потери деталей, вызванной операциями квантизации и обратной квантизации. Сумматор 51 добавляет восстановленный остаточный блок к блоку предсказания компенсированного движения, созданному модулем 32 предсказания, чтобы создать восстановленный видеоблок для хранения в блоке 34 памяти. Восстановленный видеоблок может использоваться модулем 32 предсказания как опорный блок, который может быть использован для последовательного кодирования блока в следующем видеокадре или следующем кодированном элементе.
[0077] Как было описано выше, модуль 32 предсказания может осуществлять оценку движения с точностью до частичного пикселя (или субпикселя). Когда модуль 32 предсказания использует оценку движения частичного пикселя, он может генерировать данные с разрешением до субпикселя (например, значения субпикселя или частичного пикселя), используя процедуры интерполяции, описанные в данном раскрытии. Другими словами, процедуры интерполяции могут использоваться, чтобы вычислить значения на позициях между положениями целого пикселя. Положения субпикселя, расположенные на расстоянии, наполовину меньше расстояния между положениями целого пикселя, могут именоваться положениями половины пикселя (половины пела), положения субпикселя, расположенные на расстоянии, наполовину меньше расстояния между положением целого пикселя и положением половины пикселя, могут называться положениями четверти пикселя (четверти пела), положения субпикселя, расположенные на расстоянии, наполовину меньше расстояния между положением целого пикселя и положением целого пикселя (или положением половины пикселя) и положением четверти пикселя, называются положениями восьмой части пикселя (восьмой части пела) и т.п.
[0078] В соответствии с методиками данного раскрытия, один и тот же из интерполяционных фильтров 39 может применяться в отношении двух или более различных групп поддержки, чтобы вычислить значения для двух субцелых пикселей одного и того же полного пикселя. Как описывается более подробно ниже, модуль 32 предсказания, например, может применять один из фильтров 39 в отношении первой группы поддержки, чтобы вычислить значение для первого субцелого пикселя из полного пикселя, и может применять тот же интерполяционный фильтр в отношении второй, другой, группы поддержки, чтобы вычислить значение для второго субцелого пикселя из того же полного пикселя. Кроме того, группы поддержки могут иметь различные формы, например, линейную (горизонтальную, вертикальную, диагональную с наклоном из верхней левой части в нижнюю правую, диагональную с наклоном из верхней правой части в нижнюю левую и т.п.), Х-образную с пересечением на полном пикселе, форму окружности (например, пиксели в форме круга около полного пикселя), форму матрицы (например, два или более пикселей во множестве строк полных пикселей) и другие формы.
[0079] Таким образом, видеокодер 22 демонстрирует пример видеокодера, выполненного с возможностью принимать значения для множества положений полного целого пикселя из контрольной выборки, применять интерполяционный фильтр в отношении первой группы значений для множества положений полного целого пикселя, чтобы вычислить значение для первого субцелого пикселя одного из множества положений полного целого пикселя, применять тот же интерполяционный фильтр в отношении второй, другой, группы значений для множества положений полного целого пикселя, чтобы вычислить значение для второго, другого, субцелого пикселя одного из положений полного целого пикселя, кодировать текущий блок пикселей с использованием вектора движения, который указывает на один из первого субцелого пикселя и второго субцелого пикселя.
[0080] Фиг. 3 представляет собой концептуальную диаграмму, иллюстрирующую положения целого пикселя (или полного пикселя), связанных с данными предсказания, и положения субпикселя (или частичного пикселя), связанные с интерполированными данными предсказания. На концептуальной иллюстрации, представленной на фиг. 3, различные ячейки отражают положения пикселя и положения субпикселя в пределах кадра или блока кадра. Заглавные буквы с цифрами (в ячейках со сплошными линиями) отражают местоположения целого пикселя, тогда как строчные буквы (в ячейках с пунктирными линиями) отражают положения субпикселя. В частности, положения пикселя A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 демонстрируют сетку 6 на 6 из местоположений целого пикселя в пределах кадра, фрагмента или другого кодированного элемента. Положения субпикселя «а»-«о» отражают пятнадцать положений субпикселя, связанных с целым пикселем С3, например, между положенями целого пикселя С3, С4, D3 и D4. Подобные положения субпикселя могут существовать для каждого положения целого пикселя. Положения субпикселя «а»-«о» отражают положения половины пикселя и четверти пикселя, связанные с целым пикселем С3. Как описывается более подробно ниже, один и тот же интерполяционный фильтр может использоваться для вычисления двух и более субпикселей а-о, например, путем применения одного и того же интерполяционного фильтра в отношении разных групп поддержки.
[0081] Положения целого пикселя могут быть связаны с физическим сенсорным элементом, таким как фотодиод, когда видеоданные были первоначально сгенерированы. Фотодиод может измерять яркость источника света в месте расположения сенсора и связывать значение яркости пикселя с положением целого пикселя. Снова каждое положение целого пикселя может иметь соответствующую группу из пятнадцати положений субпикселя (или, возможно, больше или меньше). Количество положений субпикселя, связанных с положениями целого пикселя, может зависеть от желаемой точности. В примере, проиллюстрированном на фиг. 3, желаемая точность - это точность до четверти пикселя. В этом случае каждое из положений целого пикселя относится к пятнадцати различным положениям субпикселя. Большее или меньшее количество положений субпикселя может быть связано с каждым положением целого пикселя на основе желаемой точности. Для точности до полпикселя, например, каждое положение целого пикселя может соответствовать трем положениям субпикселя. В качестве другого примера каждое из положений целого пикселя может соответствовать шестидесяти трем положениям субпикселя для точности до одной восьмой пикселя. Каждое положение пикселя может определять одно или несколько значений пикселя, например, одно или несколько значения яркости и цветности.
[0082] В примере из фиг. 3 положения субпикселя, связанные с целым пикселем «С3», проиллюстрированы для точности до четверти пикселя. Пятнадцать положений субпикселя, связанные с пикселем С3, обозначены как «a», «b», «c», «d», «e», «f», «g», «h», «i», «j», «k», «l», «m», «n» и «o». Большинство других частичных положений, связанных с другими положениями целого пикселя, не показаны для простоты описания (отличные от тех используются для генерации одного или нескольких из 15 различных частичных положений, связанных с положением пикселя С3, как описывается более подробно ниже). Положения субпикселя «b», «h» и «j» могут именоваться положениями половины пикселя, а положения субпикселя «a», «c», «d», «e», «f», «g», «i», «k», «l», «m», «n» и «o» могут называться положениями четверти пикселя.
[0083] Модуль 32 предсказания видеокодера 40 может определять значения пикселя для положений субпикселя от «а» до «о» с использованием интерполяционной фильтрации при помощи модуля 37 МС. Модуль 32 предсказания может применять интерполяционный фильтр в отношении всех 36 положений целого пикселя для каждого из положений субпикселя. В других примерах подгруппы положений полного целого пикселя используются в качестве поддержки фильтра, чтобы интерполировать значения для положений субпикселя.
[0084] В одном примере модуль 32 предсказания видеокодера 40 может определять значения пикселя для положений субпикселя от «а» до «о» с использованием интерполяционной фильтрации при помощи модуля 37 МС, используя интерполяционный фильтр, совместимый со стандартом ITU-T H.264. Совместимый со стандартом ITU-T H.264, например, модуль 32 предсказания может определять значения пикселя для положений половины пикселя, используя 6-звенный интерполяционный фильтр, такой как фильтр Винера. В случае стандарта H.264 коэффициенты фильтра для 6-звенного интерполяционного фильтра обычно [1, -5, 20, 20, -5, 1], хотя могут использоваться и другие коэффициенты. Модуль 32 предсказания может применять интерполяционный фильтр в отношении любой группы из шести положений полного целого пикселя. В одном примере для положения половины пикселя «b» звенья 6-звенного фильтра могут соответствовать B3. B4, C3, C4, D3 и D4. В других примерах звенья 6-звенного фильтра для положения половины пикселя «b» могут быть другой группой из шести положений полного целого пикселя. Подобным образом в одном примере для положения половины пикселя «h» звенья 6-звенного фильтра могут соответствовать С2, C3, C4, D2, D3 и D4. Например, значения пикселя для положения субпикселя «j» могут быть вычислены с использованием уравнений (1) и (2):
j=((A1-5*B2+20*C3+20*D4-5*E5+F6)+16)/32 (1)
j=((A6-5*B5+20*C4+20*D3-5*E2+F1)+16)/32 (2)
[0085] Уравнения 1 и 2, представленные выше, иллюстрируют один пример того, как значения положений полного целого пикселя могут быть связаны с различными коэффициентами 6-звенного фильтра. В других примерах значения положений полного целого пикселя могут соответствовать различным коэффициентам 6-звенного фильтра. В одном примере положения полного целого пикселя в поддержке фильтра для положения субцелого пикселя, которые являются ближайшими к положению субпикселя, взвешиваются с более высокими коэффициентами в фильтре, тогда как положения полного целого пикселя, которые дальше от положения субпикселя, получают более низкий вес. В других примерах используются другие способы определения того, какое положение полного целого пикселя каким из коэффициентов соответствует.
[0086] Различные субпиксели одного и того же полного пикселя могут быть вычислены с использованием различной поддержки. Например, в то время как некоторые положения субпикселя (такие как «b» и «h», связанные с положением полного пикселя С3, что описано выше) могут быть вычислены с теми же самыми или различными подгруппами положений полного целого пикселя, положение субпикселя может быть определено на основе других положений субпикселя. Например, положение половины пикселя «j», также связанное с положением полного пикселя С3, может быть вычислено с использованием билинейного интерполяционного фильтра, который зависит от положений субпикселя. Для положения половины пикселя «j» звенья 6-звенного фильтра соответствуют их интерполяции горизонтально между положениями С1-С6 и 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) аа соответствует интерполяции между А3 и А4, bb соответствует интерполяции между В3 и В4, b соответствует интерполяции между С3 и С4, hh соответствует интерполяции между D3 и D4, ii соответствует интерполяции между Е3 и Е4, а jj соответствует интерполяции между F3 и F4. В уравнении 4 сс соответствует интерполяции между С1 и D1, dd соответствует интерполяции между С2 и D2, h соответствует интерполяции между С3 и D3, ее ответствует интерполяции между С4 и D4, ff соответствует интерполяции между С5 и D5 и gg ответствует интерполяции между С6 и D6.
[0087] Совместимый со стандартом Н.264 модуль 32 предсказания может определять некоторые значения пикселя в положениях четверти пикселя «a», «c», «d», «e», «f», «g», «i», «k», «l», «m», «n» и «o» с использованием билинейного интерполяционного фильтра и значений пикселя, окружающих положений целого пикселя и половины пикселя. Например, модуль 32 предсказания может определять значение пикселя, связанное с положением субпикселя «а» с использованием значений пикселя С3 и «b», определять значение пикселя, связанное с положением субпикселя «с» с использованием значений пикселя «b» и С4 и т.п.
[0088] Существующий фильтр, который применяется модулем 37 МС, чтобы генерировать интерполированные данные в положениях субпикселя, может быть подвергнут широкому разнообразию реализаций. В качестве одного примера модуль 32 предсказания может использовать адаптивную интерполяционную фильтрацию (AIF), как описывается ниже, чтобы определить интерполированные значения. Комитет ITU-T SG16/Q.6/VSEG (экспертная группа в области кодирования видео) изучал технологии кодирования, которые предполагают более высокую эффективность кодирования, нежели Н.264 и в частности AIF. AIF предполагает высокую эффективность кодирования при интерполяционной фильтрации, используемой в стандарте Н.264, особенно в отношении видеопоследовательностей с высоким разрешением (например, 720 i/p или 180 i/p). В AIF интерполяционный фильтр для каждого положения субпикселя аналитически вычисляется для каждого видеокадра путем минимизации энергии ошибки предсказания. Это помогает принимать меры в отношении искажений, ошибок квантизации и оценки движения, помех камеры и других дефектов, содержащихся в исходном и опорном видеокадрах. Аналитически выведенные адаптивные коэффициенты фильтра для каждого кадра могут затем быть предсказаны, квантованы, кодированы и отправлены в битовый видеопоток. Некоторые из методик данного раскрытия могли бы действовать в пределах схемы AIF, как и многих других схем интерполяции.
[0089] Существует множество различных типов схем AIF, совместимых с аспектами данного раскрытия. Например, первая схема - двухмерная неразделимая AIF (NS-AIF), вторая - отделимая AIF (S-AIF), а третья - AIF с направленными фильтрами (D-AIF). Хотя каждая из этих схем AIF использует различные методики интерполяции и поддержку, все три схемы AIF могут использовать сходные аналитические процессы, чтобы вывести коэффициенты фильтра, что объясняется ниже с использованием неразделимой AIF в качестве примера. Каждая из этих схем AIF может быть использована с различными положениями полного целого пикселя для любого заданного положения субпикселя.
[0090] Допустим, что двухмерный неразделимый фильтр 6 на 6 имеет коэффициенты hSP i,j, где i,j=0…5, а SP отражает одно из 15 положений субпикселя («а» - «о»), показанных на фиг. 3. Следует отметить, что 6 из 15 положений субпикселя, то есть «a», «b», «c», «d», «h» и «l», являются одномерными (1D) положениями субпикселя, а модуль 32 предсказания может использовать 6-звенный интерполяционный фильтр, чтобы интерполировать такие данные. Положения субпикселя «a», «b», «c», «d», «h» и «l» являются 1D в том плане, что расположены на горизонтальной или вертикальной линии между двумя положениями целого пикселя. Также допустим, что пиксели предсказания в положениях целого пикселя (A1-F6 на фиг. 3) в опорном кадре принимают значения пикселя Pi,j,где i,j = 0…5. То есть А1 принимает значение Р0,0,… А6 принимает значение Р5,0, F1 принимает значение Р5,0, а F6 принимает значение Р5,5. Затем интерполированное значение pSP в положении субпикселя SP, SP ϵ {а,…,о}, может быть вычислено модулем 32 предсказания с использованием следующего уравнения:
[0091] Допустим, что Sx,y является значением пикселя в текущем видеокадре в положении (x,y).
где (mvx,mvy) - вектор движения, - целый компонент вектора движения, а FO - смещение фильтра. Значение - соответствующее положение пикселя в опорных кадрах. Например, в случае с 6-звенным фильтром FO=6/2-1=2. Для каждого положения субпикселя SP энергия ошибки предсказания (eSP)2 между действительным значением пикселя в текущем кадре и интерполированным значением может быть аккумулирована модулем 32 предсказания для всех пикселей, которые имеют точность вектора движения, соответствующую положению субпикселя SP. Энергия ошибки предсказания (eSP)2 может быть вычислена модулем 32 предсказания с использованием следующего уравнения:
[0092] Для каждого из положений субпикселя с а по о модуль 37 МС может устанавливать индивидуальную группу уравнений путем вычисления производной от (eSP)2 по коэффициентам фильтра hSP i,j. Количество уравнений в этом случае равно количеству коэффициентов фильтра, используемых для текущего положения субпикселя SP. Для каждого положения субпикселя модуль 32 предсказания может использовать звеньевой одномерный интерполяционный фильтр 6 на 6 (например, одномерный 6-звенный фильтр). В других примерах модуль 32 предсказания может использовать различные звеньевые (например, одномерный 12-звенный фильтр). В случае с одномерным 6-звенным фильтром система из шести уравнений может быть решена модулем 37 МС.
[0093]
(7)
Фильтр(-ы) 39 может (могут) отражать один фильтр или группу из множества различных фильтров, которые могут быть использованы модулем 37 МС, чтобы генерировать данные предсказания.
[0094] Таким образом, один примерный процесс вывода и применения фильтров AIF может содержать следующие этапы, которые могут быть выполнены модулем 32 предсказания:
1. Оценить векторы движения (mvx,mvy) для каждого видеоблока, подлежащего кодированию. Во время оценки может применяться фиксированный интерполяционный фильтр (например, процесс интерполяции H.264/AVC).
2. Использовать эти векторы движения, аккумулировать энергию ошибки предсказания для каждого положения субпикселя SP по текущему видеокадру. Затем вычислить коэффициенты адаптивного фильтра hSP i,j для каждого положения субпикселя SP независимо путем минимизации энергии ошибки предсказания, как в двух уравнениях энергии предсказания, представленных выше.
3. Оценить новые векторы движения. Во время этого процесса оценки движения могут применяться адаптивные интерполяционные фильтры, вычисленные на этапе 2. При использовании адаптивных интерполяционных фильтров ошибки оценки движения (вызванные искажениями, помехами камеры и т.д.) могут быть уменьшены, и достигается более хорошее предсказание движения.
[0095] Различные схемы AIF могут использовать тот же аналитический процесс, что указан выше. Различия между разными схемами по большей части относятся к числу используемых уникальных коэффициентов фильтра, разделимых и неразделимых, и используемой поддержки фильтра (как то положения целого пикселя, используемые для интерполяции по меньшей мере части положений субпикселя). В каждой из этих схем могут применяться различные группы положений полного целого пикселя для разных положений субпикселя.
[0096] Для NS-AIF, например, модуль 37 МС модуля 32 предсказания может интерполировать одномерные положения субпикселя «a», «b», «c», «d», «h» и «l», используя одномерный 6-звенный интерполяционный фильтр (также именуемый 6-позиционным фильтром, так как каждое его звено соответствует положению целого пикселя), который требует шести коэффициентов. Каждые из шести коэффициентов 6-позиционных фильтров, используемых для интерполяции субпикселей, соответствуют одному из положений целого пикселя, проиллюстрированных на фиг. 3. Например, для положений субпикселя «а» шесть положений целого пикселя, соответствующих коэффициентам, могут быть С1, С2, С3, С4, С5 и С6. В других примерах любая 6-членная подгруппа из положения полного целого пикселя может использоваться, чтобы вычислить значение для положения субпикселя «а». Эти положения целого пикселя отражают примеры «поддержки фильтра» интерполяционного фильтра. В некоторых примерах поддержка фильтра может включать в себя прежде вычисленные значинеия для других субцелых пикселей.
[0097] В другой схеме AIF, то есть S-AIF, модуль 32 предсказания может использовать разделимые интерполяционные фильтры с примением любой подгруппы положений полного целого пикселя, вместо неразделимых интерполяционных фильтров, что используются в NS-AIF. Например, для одномерных положений субпикселя модуль 32 предсказания (например, модуль 37 МС модуля 32 предсказания) применяет только горизонтальные направленные фильтры, только вертикальные направленные фильтры, только диагональные фильтры (см. фиг. 4 и фиг. 5), только комбинированный горизонтальный и вертикальный направленный фильтр (см. фиг. 5), только прямоугольные фильтры (см. фиг. 7 и фиг. 8) или любую другую комбинацию поддержки фильтра, в зависимости от местоположения субпикселя. В одном примере диагональный фильтр содержит 6-позиционный (или 6-звенный) фильтр. Модуль 32 предсказания применяет диагональные фильтры для положений субпикселя «e», «j» и «o» с положениями целого пикселя А1, В2, С3, D4, Е5 и F6 (см. фиг. 4) в качестве поддержки фильтра и применяет вертикальные направленные фильтры для положений субпикселя «d», «h» и «l» с положениями целого пикселя А3, В3, С3, D3, Е3 и F3 (см. фиг. 6) в качестве поддержки фильтра. Для оставшихся положений субпикселя, то есть двухмерных положений субпикселя, модуль 32 предсказания может применять диагональную фильтрацию, за которой последует вертикальная фильтрация, или вертикальную фильтрацию, за которой последует диагональная фильтрация. Снова коэффициенты фильтра, используемые для разделимых диагональных и вертикальных фильтров, могут быть вычислены в соответствии с уравнением (7), приведенным выше, в примерах, касающихся адаптивной интерполяционной фильтрации. В других примерах любая подгруппа и форма поддержки фильтра может использоваться, чтобы вычислить значения для положений субпикселя.
[0098] Модуль 37 МС модуля 32 предсказания может использовать одну или несколько методик интерполяции, описанных здесь, что может увеличить эффективность кодирования во время интерполяции значений для положений субпикселя и/или расширить разнообразие поддержки фильтра, используемой для интерполяции положений субпикселя. Это раскрытие ниже более подробно описывает другие примеры групп поддержки фильтра, которые могут использоваться для интерполяции (как то диагональная поддержка или двенадцатипиксельная поддержка фильтра с радиальной формой). Кроме того, также описываются методики осуществления выбора между интерполяционными фильтрами, методики осуществления выбора поддержки фильтра и методики кодирования с предсказанием в отношении коэффициентов фильтра.
[0099] Фиг. 4 представляет собой концептуальную диаграмму, иллюстрирующую поддержку диагонального шестипиксельного фильтра относительно местоположения субцелого пикселя. В соответствии с этим раскрытием модуль 37 МС может вычислить значения субпикселя для любых из положений субпикселя от «а» до «о» на основе значений затененного целого пикселя. В этом случае вычисление любого из значений субпикселя содержит применение интерполяционного фильтра, который задействует диагональную сетку положений поддержки фильтра, соответствующих группе из шести (или, возможно, больше) положений целого пикселя, как проиллюстрировано на фиг. 4. Положения поддержки фильтра показаны с затенением и заглавными буквами, а положения субпикселя показаны как ячейки с пунктирными линиями и строчными буквами. Модуль 37 МС может интерполировать пиксели таким образом только для подгруппы пикселей в видеоблоке и может генерировать блок предсказания на основе интерполяции значений субпикселя. В других примерах модуль 37 МС может интерполировать пиксели таким образом для каждого пикселя видеоблока.
[0100] Поддержка шестипозиционного фильтра имеет диагональную форму в этом примере. Однако в других примерах поддержка любого другого шестипозиционного фильтра может иметь любую другую форму. Группа из шести или более положений целого пикселя, которые идут по диагонали через положения субпикселя, показана с затенением на фиг. 4. Поддержка фильтра может включать в себя два из четырех положений целого пикселя, окружающих положения субпикселя, С3 и D4, как и четыре положения целого пикселя А1, В2, Е5 и F6 вдоль диагональной линии через С3 и D4. Такая фильтрация может формировать часть компенсации движения во время процесса кодирования видеосигнала видеокодером 22 (фиг. 2) или во время процесса декодирования видеосигнала декодером 28 (фиг. 10). Во время процесса кодирования видеосигнала модуль 32 предсказания может пересылать множество групп значений коэффициентов к модулю 46 энтропийного кодирования как часть синтаксических элементов предсказания.
[0101] Как показано на фиг. 4, группа из шести или более положений целого пикселя, которые окружают положения субпикселя, имеет диагональную форму. В другом примере поддержка фильтра может включать в себя два из четырех положений целого пикселя, окружающих положения субпикселя С4 и D3, как и четыре положения целого пикселя А6, В5, Е2 и F1 вдоль диагональной линии через С4 и D3. В некоторых примерах только подгруппа положений субпикселя «а»-«о» определяется с использованием диагональной поддержки фильтра. В других примерах все положения субпикселя от «а» до «о» определяются с использованием диагональной поддержки фильтра.
[0102] Модуль 46 энтропийного кодирования может кодировать группы значений коэффициентов и выводить значения коэффициентов интерполяционного фильтра как часть кодированного битового потока, который затем может быть передан к другому устройству. Каждая из множества групп значений коэффициентов, определенных относительно каждого разного положения субпикселя, показанного на фиг. 4, может определять различные взвешивания для шести или более положений целого пикселя. Модуль 46 энтропийного кодирования также может кодировать группы поддержки фильтра и выводить группы поддержки фильтра как часть кодированного битового потока, который затем может быть передан к другому устройству. Различные группы положений субцелого пикселя могут иметь разные группы поддержки фильтра. Кроме того, разные группы поддержки фильтра могут применяться в отношении одинаковых или разных интерполяционных фильтров.
[0103] Фиг. 5 представляет собой концептуальную диаграмму, иллюстрирующую поддержку x-образного двенадцатипиксельного фильтра относительно местоположения субцелого пикселя. В соответствии с этим раскрытием модуль 37 МС может вычислить значения субпикселя для любых из положений субпикселя от «а» до «о» на основе значений затененного целого пикселя. В этом случае вычисление любого из значений субпикселя содержит применение интерполяционного фильтра, который определяет х-образную сетку положений поддержки фильтра, соответствующих группе из двенадцати (или, возможно, больше) положений целого пикселя, которые расположены по диагонали с четырьмя положениями полного целого пикселя, окружающими положения субпикселя, как проиллюстрировано на фиг. 5. Положения поддержки фильтра показаны с затенением и заглавными буквами, а положения субпикселя показаны как ячейки с пунктирными линиями и строчными буквами. Модуль 37 МС может интерполировать пиксели таким образом только для подгруппы пикселей в видеоблоке и может генерировать блок предсказания на основе интерполяции значений субпикселя. В других примерах модуль 37 МС может интерполировать пиксели таким образом для каждого пикселя видеоблока.
[0104] Поддержка двенадцатипозиционного фильтра имеет х-образную форму. Однако в других примерах поддержка любого другого двенадцатипозиционного фильтра для любого из положений субпикселя может иметь любую другую форму. Группа из двенадцати или более положений целого пикселя, которые идут х-образно через положения субпикселя, показаны с затенением на фиг. 5. Поддержка фильтра может включать в себя четыре положения целого пикселя, окружающих положения субпикселя, С3, С4, D3 и D4, как и четыре положения целого пикселя А1, В2, Е5 и F6 вдоль диагональной линии через С3 и D4, и четыре положения целого пикселя А6, В5, Е2 и F1 вдоль диагональной линии через С4 и D3. Такая фильтрация может формировать часть компенсации движения во время процесса кодирования видеосигнала видеокодером 22 (фиг. 2) или во время процесса декодирования видеосигнала декодером 28 (фиг. 10). Во время процесса кодирования видеосигнала модуль 32 предсказания может пересылать множество групп значений коэффициентов к модулю 46 энтропийного кодирования как часть синтаксических элементов предсказания.
[0105] В некоторых примерах только подгруппа положений субпикселя «а»-«о» определяется с использованием х-образной поддержки фильтра. В других примерах все положения субпикселя от «а» до «о» определяются с использованием х-образной поддержки фильтра.
[0106] Модуль 46 энтропийного кодирования может кодировать группы значений коэффициентов и выводить значения коэффициентов интерполяционного фильтра как часть кодированного битового потока, который затем может быть передан к другому устройству. Каждая из множества групп значений коэффициентов, определенных относительно каждого разного положения субпикселя, показанного на фиг. 5, может определять различные взвешивания для двенадцати или более положений целого пикселя. Модуль 46 энтропийного кодирования также может кодировать группы поддержки фильтра и выводить группы поддержки фильтра как часть кодированного битового потока, который затем может быть передан к другому устройству.
[0107] Фиг. 6 представляет собой концептуальную диаграмму, иллюстрирующую крестообразную поддержку двенадцатипиксельного фильтра относительно по меньшей мере одного положения субпикселя. В соответствии с этим раскрытием модуль 37 МС может вычислить значения субпикселя для любых из положений субпикселя, связанных с положением полного пикселя, на основе значений затененного целого пикселя. В этом случае вычисление любого из значений субпикселя содержит применение интерполяционного фильтра, который определяет t-образную сетку положений поддержки фильтра, соответствующих группе из двенадцати (или, возможно, больше) положений целого пикселя, которые могут включать в себя четыре положения целого пикселя, окружающих положения субпикселя (например, С3, С4, D3 и D4), как и вертикальные положения целого пикселя (например, А3, В3, Е3 и F3) и горизонтальные положения целого пикселя (например, С1, С2, С5 и С6). Положения поддержки фильтра показаны с затенением и заглавными буквами, а некоторые положения субпикселя показаны как ячейки с пунктирными линиями и строчными буквами. Модуль 37 МС может интерполировать пиксели таким образом только для подгруппы пикселей в видеоблоке и может генерировать блок предсказания на основе интерполяции значений субпикселя. В других примерах модуль 37 МС может интерполировать пиксели таким образом для каждого пикселя видеоблока.
[0108] Как показано на фиг. 6, в отношении трех горизонтальных положений субпикселя «а», «b» и «с» и трех вертикальных положений субпикселя «d», «h» и «l» может быть выполнено предсказание с поддержкой двенадцатипиксельного фильтра. Однако в других примерах любое положение субпикселя, связанное с положением полного пикселя (таким как С3, показанное на фиг. 6), может быть предсказано с использованием поддержки двенадцатипиксельного фильтра, показанной на фиг. 6.
[0109] Подобным образом модуль 46 энтропийного кодирования может кодировать группы значений коэффициентов и выводить значения коэффициентов интерполяционного фильтра как часть кодированного битового потока, который затем может быть передан к другому устройству. Каждая из множества групп значений коэффициентов, определенных относительно каждого разного положения субпикселя, показанного на фиг. 6, может определять различные взвешивания для двенадцати или более положений целого пикселя. Модуль 46 энтропийного кодирования также может кодировать группы поддержки фильтра и выводить группы поддержки фильтра как часть кодированного битового потока, который затем может быть передан к другому устройству.
[0110] Фиг. 7 представляет собой концептуальную диаграмму, иллюстрирующую пример круговой (также именуемой радиальной) поддержки двенадцатипиксельного фильтра относительно местоположения субпикселя. Подобно тому, как происходит в примерах различной поддержки фильтра, описанных выше, модуль 37 МС может вычислить значения субпикселя для любого положения субпикселя на основе значений затененного целого пикселя. В этом случае вычисление значений субпикселя содержит применение интерполяционного фильтра, который определяет двухмерную сетку положений поддержки фильтра, соответствующих группе из двенадцати (или, возможно, больше) положений целого пикселя, которые окружают положения субпикселя, как проиллюстрировано на фиг. 7. Положения поддержки фильтра показаны с затенением и заглавными буквами, а положения субпикселя показаны как ячейки с пунктирными линиями и строчными буквами. Модуль 37 МС может интерполировать пиксели таким образом для любого пикселя из видеоблока и может генерировать блок предсказания на основе интерполированного значения субпикселя. Поддержка 12-позиционного фильтра имеет радиальную форму и обладает сходной с поддержкой 36-позиционного фильтра, используемого в NS-AIF, частотной характеристикой, но с менее сложной в плане интерполяции.
[0111] Группа из двенадцати или более положений целого пикселя, которые окружают положения субпикселя, показана с затемнением на фиг. 4 и может включать в себя четыре положения целого пикселя С3, С4, D3 и D4, окружающих пятнадцать значений половины пикселя и четверти пикселя, и восемь положений целого пикселя B3, B4, C2, C5, D2, D5, E3 и E4, окружающих четыре положения целого пикселя. Каждое из положений поддержки фильтра в двухмерной сетке положений поддержки фильтра, показанных на фиг. 7, находится в пределах двух положений целого пикселя относительно положений субпикселя. Такая фильтрация может формировать часть компенсации движения во время процесса кодирования видеосигнала видеокодером 22 (фиг. 2) или во время процесса декодирования видеосигнала декодером 28 (фиг. 10). Во время процесса кодирования видеосигнала модуль 32 предсказания может пересылать множество групп значений коэффициентов к модулю 46 энтропийного кодирования как часть синтаксических элементов предсказания.
[0112] Как показано на фиг. 4, группа из двенадцати положений целого пикселя, которые окружают положения субпикселя, имеет радиальную форму и может содержать группу положений целого пикселя, пространственно ближайших к значениям субпикселя, определенным интерполяционным фильтром (например, фильтром (фильтрами) 39 на фиг. 2). В других примерах радиальная форма, показанная на фиг. 7, может быть смещена, например, на один полный пиксель влево или вправо. В еще нескольких других примерах любая группа с любым числом положений полного целого пикселя используется для предсказания положения субпикселя с интерполяционным фильтром.
[0113] Фиг. 8 представляет собой концептуальную диаграмму, иллюстрирующую пример поддержки квадратного четырехпиксельного фильтра относительно по меньшей мере одного положения субцелого пикселя. В соответствии с этим раскрытием модуль 37 МС может вычислить значения субпикселя для любых положений субпикселя, связанных с положением полного пикселя, на основе значений затененного целого пикселя. В этом случае вычисление любого из значений субпикселя содержит применение интерполяционного фильтра, который определяет квадратную сетку положений поддержки фильтра, соответствующих группе из четырех положений целого пикселя. В примере, продемонстрированном на фиг. 8, четыре положения целого пикселя включают в себя четыре положения полного целого пикселя, окружающих положения субпикселя, а именно С3, С4, D3 и D4. Положения поддержки фильтра показаны с затенением и заглавными буквами, а некоторые положения субпикселя показаны как ячейки с пунктирными линиями и строчными буквами.
[0114] Модуль 37 МС может интерполировать пиксели таким образом только для подгруппы пикселей в видеоблоке и может генерировать блок предсказания на основе интерполяции значений субпикселя. В других примерах модуль 37 МС может интерполировать пиксели таким образом для каждого пикселя видеоблока. Модуль 37 МС может использовать интерполяционный фильтр подходящего типа для предсказания положения субпикселя с использованием этих четырех положений целого пикселя. В других примерах модуль 37 МС может интерполировать положения субпикселя с использованием любой группы из четырех положений полного целого пикселя.
[0115] Фиг. 9 представляет собой концептуальную диаграмму, иллюстрирующую пример поддержки прямоугольного шестипиксельного фильтра относительно положения субцелого пикселя. В этом примере модуль 37 МС может вычислить значения субпикселя для любых положений субпикселя, связанных с положением полного пикселя, на основе значений затененного целого пикселя. Положения поддержки фильтра показаны с затенением и заглавными буквами, а некоторые положения субпикселя показаны как ячейки с пунктирными линиями и строчными буквами. В этом случае вычисление любого из значений субпикселя содержит применение интерполяционного фильтра, который определяет прямоугольную сетку положений поддержки фильтра, соответствующих группе из шести положений целого пикселя. В примере, продемонстрированном на фиг. 8, шесть положений целого пикселя включают в себя четыре положения полного целого пикселя, окружающих положения субпикселя, как и два дополнительных положения полного целого пикселя по соседству с четырьмя положениями полного целого пикселя, окружающими положения субпикселя. Когда положение субпикселя «f» предсказано на фиг. 9, поддержка фильтра включает в себя четыре положения полного пикселя, расположенных вокруг субпикселя «f», С3, С4, D3 и D4, как соседние положения полного пикселя В3 и В4.
[0116] В других примерах соседние положения полного пикселя могут включать в себя С2 и D2, C5 и D5 или E3 и E4. В других примерах модуль 37 МС может интерполировать положения субпикселя с использованием группы из шести положений полного целого пикселя. Для предсказания положения субцелого пикселя может использоваться любой подходящий шестизвенный интерполяционный фильтр.
[0117] Модуль 46 энтропийного кодирования может кодировать группы значений коэффициентов и выводить значения коэффициентов интерполяционного фильтра как часть кодированного битового потока, который затем может быть передан к другому устройству. Каждая из множества групп значений коэффициентов, определенных относительно каждого разного положения субпикселя, показанного на фиг. 9, может определять различные взвешивания для двенадцати или более положений целого пикселя. Модуль 46 энтропийного кодирования также может кодировать группы поддержки фильтра и выводить группы поддержки фильтра как часть кодированного битового потока, который затем может быть передан к другому устройству.
[0118] Со ссылкой на фиг. 3 различные группы положений субцелого пикселя в пределах одного элемента предсказания могли применять один и тот же интерполяционный фильтр в отношении различных групп поддержки фильтра от одного и того же кадра изображения. Кроме того, одинаковые или различные интерполяционные фильтры могут применяться в отношении разных групп поддержки фильтра в пределах одного элемента предсказания. Например, положение субпикселя «е» может быть предсказано с использованием 6 диагональной поддержки, как показано на фиг. 4. Поддержка фильтра для субпикселя «е» может включать в себя положения полного целого пикселя А1, В2, С3, D4, E5 и F6. Интерполяционный фильтр, используемый для субпикселя «е», может быть шестизвенным фильтром Винера. В пределах одного и того же элемента предсказания положение субпикселя «j» может быть предсказано с использованием двенадцати положений полного целого пикселя, расположенных х-образно, как показано на фиг. 5. Поддержка фильтра для субпикселя «j» может включать в себя положения полного целого пикселя А1, А6, В2, В5, С3, С4, D3, D4, Е2, E5, F1 и F6. Интерполяционный фильтр, используемый для субпикселя «е», может быть двенадцатизвенным фильтром Винера.
[0119] Дополнительно положение субцелого пикселя «h» может быть предсказано с использованием крестообразной поддержки, показанной на фиг. 6. Поддержка фильтра для субпикселя «h» может включать в себя положения полного целого пикселя, включая А3, В3, С1, С2, С3, С4, С5, С6, D3, D4, Е3 и F3. Интерполяционный фильтр, используемый для предсказания субпикселя «h», может быть двенадцатизвенным разделимым или неразделимым фильтром. Другое положение субпикселя, «k», может быть предсказано, как показано на фиг. 7. Поддержка фильтра в форме окружности для субпикселя «k» может включать в себя двенадцать положений полного целого пикселя, включая В3, В4, С2, С3, С4, С5, D2, D3, D4, Е3 и Е4. Интерполяционный фильтр, используемый для предсказания субпикселя «h», может быть двенадцатизвенным фильтром.
[0120] Кроме того, как показано на фиг. 8, положение субцелого пикселя «m» может быть предсказано с использованием четырех ближайших к субпикселю «m» положений полного целого пикселя. Четырехзвенный интерполяционный фильтр может быть использован с поддержкой фильтра, включая С3, С4, D3 и D4 для субпикселя «m». В качестве другого примера положение субцелого пикселя «f» может быть предсказано с использованием прямоугольной поддержки, как показано на фиг. 9. Поддержка фильтра для субпикселя «f» может включать в себя шесть положений полного целого пикселя, включая В3, В4, С3, С4, D3 и D4. Интерполяционный фильтр, используемый предсказания субпикселя «f», может быть двенадцатизвенным разделимым или неразделимым фильтром.
[0121] Описанное выше - это лишь несколько примеров различных групп поддержки фильтра, используемых для предсказания положений субпикселя для элемента предсказания. Как описывается здесь, каждое из положений субпикселя «e», «j», «h», «k», «m» и «f» предсказывается с использованием разной поддержки фильтра. Некоторые из этих положений субпикселя могут быть предсказаны с использованием одного и того же интерполяционного фильтра. Например, оба субпикселя «e» и «f» могут быть предсказаны с использованием шестизвенного фильтра Винера. Другие положения субпикселя могут быть предсказаны с использованием интерполяционных фильтров, отличных от тех, что для других положений субпикселя.
[0122] В других примерах некоторые положения полного целого пикселя могут повторяться при вычислении значения положения субпикселя. Например, если используется одномерный шестизвенный интерполяционный фильтр, поддержка для положения субпикселя может содержать группу из менее чем шести положений полного целого пикселя. В одном примере те положения полного целого пикселя, что являются ближайшими к положению субпикселя, - повторяющиеся. Подобным образом, в одном примере для положения половины пикселя «е» звенья шестизвенного фильтра могут соответствовать В3, С3, С4, и D3 D4. Например, значения пикселя для положения субпикселя «е» могут быть вычислены с помощью уравнения (8):
[0123] c=((b3-5*C4+20*C3+20*C3-5*D3+D4)+16)/32 (8)
[0124] Как описывается в этих конкретных примерах, никакое положение субпикселя не зависит от положения другого субпикселя. Однако в других примерах положение субпикселя может зависеть от положения другого субпикселя. Множество других примеров представляется возможным, включая любую комбинацию поддержки фильтра и любого из интерполяционных фильтров для каждого положения субпикселя. Многие другие размеры и формы фильтра могут быть использованы в соответствии с фильтрацией субпикселя.
[0125] Фиг. 10 представляет собой блок-схему, иллюстрирующую пример видеодекодера 28, который может декодировать видеопоследовательность, которая кодирована способом, описанным здесь. Ведиодекодер 28 - это один пример специализированного компьютерного видеоустройства или аппаратуры, именуемых здесь «кодером». Как показано на фиг. 10, видеодекодер 28 соответствует видеодекодеру 28 устройства 20. Однако в других примерах видеодекодер 28 может соответствовать и другому устройству. В дополнительных примерах другие модули (такие, например, как другие кодеры/декодеры (CODECS)) также могут реализовывать методики, подобные тем, что использует видеодекодер 28.
[0126] Ведиодекодер 28 включает в себя модуль 52 энтропийного декодирования, который осуществляет энтропийное декодирование принятого битового потока, чтобы генерировать квантованные коэффициенты и синтаксические элементы предсказания. Синтаксические элементы предсказания могут включать в себя режим кодирования, один или несколько векторов движения, методику идентификации и интерполяции информации, используемую, чтобы генерировать данные субпикселя, коэффициенты для использования при интерполяционной фильтрации и/или другую информацию, связанную с генерацией блока предсказания.
[0127] Синтаксические элементы предсказания, например, коэффициенты, направляются к модулю 55 предсказания. Если предсказание используется, чтобы кодировать коэффициенты относительно коэффициентов фиксированного фильтра или относительно друг друга, модуль 53 предсказания коэффициента и обратной квантизации может декодировать синтаксические элементы, чтобы определить действующие коэффициенты. Также, если квантизация осуществляется в отношении любого синтаксиса предсказания, модуль 53 предсказания коэффициента и обратной квантизации также может устранить такую квантизацию. Коэффициенты фильтра, например, могут быть кодированы с предсказанием и квантованы в соответствии с этим раскрытием, и в этом случае модуль 53 предсказания коэффициента и обратной квантизации может использоваться видеодекодером 28, чтобы декодировать с предсказанием и деквантовать такие коэффициенты.
[0128] Модуль 55 предсказания может генерировать данные предсказания на основе синтаксических элементов предсказания и одного или нескольких прежде декодированных блоков, которые хранятся в блоке 62 памяти, по большей части таким же образом, как было описано выше со ссылкой на модуль 32 предсказания видеокодера 22. В частности, модуль 55 предсказания может реализовывать одну или несколько методик интерполяционной фильтрации из этого раскрытия во время компенсации движения, чтобы генерировать блок предсказания с конкретной точностью, такой как точность до четверти пикселя. Как таковые одна или несколько методик из этого раскрытия могут использоваться видеодекодером 28 при генерации блока предсказания. Модуль 55 предсказания может включать в себя модуль компенсации движения, который содержит фильтры, используемые для методик интерполяции и методик, подобных интерполяции, из этого раскрытия. Компонент компенсации движения не показан на фиг. 10 для простоты демонстрации.
[0129] Модуль 56 обратной квантизации осуществляет обратную квантизацию, то есть деквантует, квантованные коэффициенты. Процесс обратной квантизации может быть процессом, определенным для декодирования Н.264 или любого другого стандарта декодирования. Модуль 58 обратного преобразования осуществляет обратное преобразование, например, обратное DCT или концептуально подобный процесс обратного преобразования, в отношении коэффициентов преобразования с целью создать остаточные блоки в пиксельной области. Сумматор 64 суммирует остаточный блок с соответствующим блоком предсказания, генерированным модулем 55 предсказания, чтобы сформировать восстановленную версию исходного блока, кодированного видеокодером 22. По желанию деблокирующий фильтр также может применяться, чтобы фильтровать декодированные блоки с целью устранить дефекты блочности. Декодированные видеоблоки затем хранятся в блоке 62 памяти, которые предоставляет опорные блоки для последующей компенсации движения, а также создает декодированный видеосигнал, чтобы приводить в действие устройство отображения (такое как устройство 28, продемонстрированное на фиг. 1).
[0130] Используя методики интерполяционной фильтрации из данного раскрытия, видеодекодер 28 может вычислять значения пикселя для положений субпикселя, используя интерполяционный фильтр, имеющий поддержку фильтра любого размера и любой формы. В одном примере видеодекодер 28 использует методики NS-AIF, чтобы вычислить значения пикселя для субпикселя с использованием поддержки 36-позиционного фильтра (то есть поддержки 2D 6x6 фильтра, как показано на фиг. 3). В качестве другого примера S-AIF может использовать разделимые положения целого пикселя в качестве поддержки фильтра для интерполяционной фильтрации. В еще одном примере D-AIF вычисляет положения субпикселя с использованием интерполяционного фильтра, имеющего или поддержку шестипозиционного фильтра, или поддержку двенадцатипозиционного диагонального фильтра. Другие интерполяционные фильтры, такие как интерполяционный фильтр ITU-T H.264, могут использовать, чтобы вычислить положения субпикселя. Любой подходящий интерполяционный фильтр, известный сегодня или рассмотренный в дальнейшем, может использоваться, чтобы кодировать или декодировать положение субпикселя. Кроме того, видеодекодер 28 может использовать интерполяционные фильтры, которые являются фиксированными интерполяционными фильтрами, коммутируемыми интерполяционными фильтрами или адаптивными интерполяционными фильтрами или их комбинацией. Интерполяционные фильтры могут дополнительно быть разделимыми или неразделимыми. В одном примере видеодекодер 28 может принимать индикацию фильтра, чтобы применить, как и индикацию группы поддержки фильтра, к которой применяется фильтр, в принятом битовом потоке (например, от видеокодера 22).
[0131] В некоторых случаях поддержка фильтра может быть выбрана на основе возможной корреляции с заданным субпикселем. Например, одним недостатком использования поддержки диагонального фильтра, как в D-AIF, является то, что положения целого пикселя, используемые при фильтрации, далеки от текущего положения, подлежащего интерполяции. По мере того как расстояние между текущим положением, подлежащим интерполяции, и положениями пикселей, используемых в качестве поддержки фильтра, увеличивается, снижается пространственная пиксельная корреляция. Как таковая поддержка диагонального фильтра, используемая в D-AIF, является менее подходящей для формирования точного предсказания.
[0132] С целью обеспечить лучшее предсказание с использованием пикселей с более высокой корреляцией с положением, подлежащим интерполяции (то есть положения, которые ближе или не меньшем расстоянии от положения, подлежащего интерполяции), при поддержании такой же невысокой сложности, что предлагается и D-AIF, для субпикселя может использоваться более подходящая поддержка фильтра (например, поддержка четырехпозиционного фильтра, показанная на фиг. 8, может использоваться для интерполяции). Положения целого пикселя, используемые в поддержке четырехпозиционного фильтра, описанной в этом раскрытии, включают в себя четыре положения целого пикселя, окружающие положения субпикселя, то есть положения целого пикселя С3, С4, D3 и D4, которые могут именоваться «угловыми» положениями целого пикселя, так как они располагаются вблизи углов положений субпикселя. В дополнение к угловым положениям целого пикселя одно или несколько положений целого пикселя, непосредственно соседствующих с угловыми положениями целого пикселя, также могут использоваться для поддержки фильтра, как показано на фиг. 9. Положения целого пикселя, непосредственно соседствующие с угловыми положениями целого пикселя, могут включать в себя положения целого пикселя, расположенные прямо над (по направлению вверх или на север) или прямо под (по направлению вниз и на юг) угловыми положениями целого пикселя, как и положения целого пикселя, расположенные прямо налево (или на запад) или прямо вправо (или на восток) от угловых положений целого пикселя. Все эти положения целого пикселя располагаются в пределах двух положений целого пикселя субпикселя, подлежащего интерполяции, в этих конкретных примерах.
[0133] Поддержка фильтра в соответствии с методиками данного изобретения может, однако, включать в себя дополнительные местоположения целого пикселя. Например, поддержка фильтра может включать в себя местоположения целого пикселя, которые располагаются в пределах трех положений целого пикселя положения субпикселя, подлежащего интерполяции, которые формируют радиальную форму. Дополнительно поддержка фильтра может включать в себя положения целого пикселя в пределах четырех и более положений целого пикселя положения субпикселя. В некоторых примерах поддержка фильтра может включать в себя любую подгруппу положений полного целого пикселя в заданном кодированном блоке.
[0134] Даже положения четверти пикселя или более высокого разрешения могут быть интерполированы на основе положений целого пикселя, расположенных в пределах по меньшей мере двух положений целого пикселя. Также поддержка фильтра может быть выбрана на основе корреляции положений полного целого пикселя с положением субпикселя. Таким образом, методики поддержки фильтра из данного раскрытия обеспечивают более совершенное предсказание интерполяции с использованием целых пикселей с более высокой корреляцией с положением, подлежащим интерполяции. Дополнительно можно осуществить предсказание или декодирование любого субпикселя, без необходимости предсказывать или декодировать другой субпиксель, от которого он зависит.
[0135] Фиг. 11 представляет собой блок-схему последовательности операций, иллюстрирующую примерное функционирование видеокодера, который использует поддержку пиксельного фильтра, совместимую с этим раскрытием. Методика, продемонстрированная на фиг. 11, будет описана с точки зрения видеокодера 22, представленного на фиг. 2, хотя и другие устройства могут реализовывать подобные методики. Видеокодер 22 может принимать значения для множества положений полного целого пикселя из контрольной выборки (102).
[0136] Видеокодер 22 может применить интерполяционный фильтр в отношении первой группы значений для множества положений полного целого пикселя, чтобы вычислить значение для первого субцелого пикселя одного из множества положений полного целого пикселя (104). Видеокодер 22 может применить интерполяционный фильтр в отношении второй, другой, группы значений для множества положений полного целого пикселя, чтобы вычислить значение для второго, другого, субцелого пикселя одного из положений полного целого пикселя (106). На основе вычисленных значений видеокодер 22 может кодировать текущий блок пикселей с использованием вектора движения, который указывает на один из первого субцелого пикселя и второго субцелого пикселя. Методики, подобные тому, что характерно для примерного функционирования видеокодера 22, описанного со ссылкой на фиг. 11, будут объяснены далее с помощью фиг. 12 и фиг. 13.
[0137] Фиг. 12 представляет собой блок-схему последовательности операций, иллюстрирующую другое примерное функционирование видеокодера, который использует поддержку пиксельного фильтра, совместимую с этим раскрытием. Методика, продемонстрированная на фиг. 12, будет описана с точки зрения видеокодера 22, представленного на фиг. 2, хотя и другие устройства могут реализовывать подобные методики. Как продемонстрировано на фиг. 12, модуль 37 МС модуля 32 предсказания получает блок пикселей от блока 34 памяти, которые включают в себя значения целого пикселя, соответствующие положениям целого пикселя (112). Для каждого положения субпикселя видеокодер 22 определяет поддержку фильтра, которая содержит группу положений полного целого пикселя в блоке пикселей (114). Способы определения поддержки фильтра будут объяснены далее с помощью фиг. 12 и фиг. 13. Способы определения поддержки фильтра могут зависеть от особых характеристик используемого кодера, такого как видеокодер 22.
[0138] Фильтр(-ы) 39 вычисляет (вычисляют) значения субпикселя на основе группы поддержки фильтра, которая содержит любое количество положений полного целого пикселя, которые окружают положения субпикселя (116). Как было объяснено более подробно выше, поддержка фильтра может использоваться, чтобы генерировать любые возможные интерполяции субпикселя.
[0139] Когда поддержка фильтра определена, модуль 37 МС затем генерирует блок предсказания на основе вычисленных значений субпикселя (118). В частности, модуль 37 МС может генерировать и выводить интерполированный блок предсказания, содержащий интерполированные значения субпикселя. Сумматор 48 после этого может кодировать видеоблок на основе интерполированного блока предсказания (120), например, путем вычитания интерполированного блока предсказания от кодируемого видеоблока, чтобы генерировать остаточный блок. Остаточный блок затем может быть преобразован и квантован модулем 38 преобразования и модулем 40 квантизации соовтетственно. После энтропийного кодирования с помощью модуля 46 энтропийного кодирования видеокодер 22 может вывести кодированный битовый видеопоток и информацию о фильтре (122). Информация о фильтре, как описывается здесь, может содержать индикацию того, какая поддержка фильтра использовалась, чтобы кодировать каждое положение субпикселя. Информация о фильтре также может включать в себя индикацию того, какой интерполяционный фильтр использовался для конкретного положения субпикселя. Информация о фильтре может быть выведена один раз на кодированный элемент или, возможно, несколько раз на кодированный элемент, если разные области кодированного элемента задействуют различные типы интерполяции субпикселя.
[0140] Фиг. 13 представляет собой блок-схему последовательности операций, иллюстрирующую пример способа определения поддержки фильтра для субцелого пикселя, совместимой с этим раскрытием. Методика, продемонстрированная на фиг. 12, будет описана с точки зрения видеокодера 22, представленного на фиг. 2, хотя и другие устройства могут реализовывать подобные методики. Видеокодер 22 может задействовать многопроходные методики, чтобы определить, какую поддержку фильтра использовать для каждого положения субпикселя в блоке пикселей.
[0141] Как показано на фиг. 13, видеокодер 22 вычисляет первый вектор движения для блока пикселей на основе положения субпикселя, интерполированного с использованием первой группы положений полного целого пикселя (132). Вектор движения может быть вычислен для кадра с использованием, например, традиционного способа оценки движения. Как было описано выше, любая форма и любое количество положений полного целого пикселя могут использоваться для предсказания положения субпикселя. Видеокодер 22 может вычислить первое значение ошибки для первого вектора движения (134). В одном примере видеокодер 22 может вычислить первое значение ошибки с использованием среднеквадратической ошибки предсказания для положения субпикселя.
[0142] Видеокодер 22 может вычислить второй вектор движения для блока пикселей на основе положения субпикселя, интерполированного с использованием второй группы положений полного целого пикселя (136). Первая группа положений полного целого пикселя может быть отличной от второй группы положений полного целого пикселя. Видеокодер 22 может вычислить второе значение ошибки для второго вектора движения (138). Подобным образом, второе значение ошибки может быть вычислено с использованием вычисления среднеквадратической ошибки.
[0143] На основе сравнения первого и второго значений ошибки кодер 22 может выбрать одну из первой и второй группы положений полного целого пикселя (140). Например, группа положений полного целого пикселя может быть выбрана как поддержка фильтра для положения субпикселя, поскольку группа положений полного целого пикселя приводит к меньшей ошибке для положения субпикселя. Методика, продемонстрированная на фиг. 13, может применяться для каждого положения субпикселя в блоке пикселей. В других примерах методика, продемонстрированная на фиг. 13, может быть применена один раз на блок пикселей для одного положения субпикселя.
[0144] В одном примере данное определение может быть осуществлено субпиксель за субпикселем. Далее этот примерный метод может быть реализован для каждого из множества различных интерполяционных фильтров. В таком примере поддержка фильтра и интерполяционный фильтр могут быть выбраны для заданного фактора, такого как обеспечение наименьшей ошибки.
[0145] Для всех блоков, которые указывают на субпиксель, например, субпиксель «b», кодер 22 предсказывает субпиксель «b» с использованием множества групп положений полного целого пикселя. Кодер 22 затем может вычислить среднеквадратическую ошибку для различных предсказаний субпикселя «b» и выбрать группу положений полного целого пикселя, которые соответствуют предсказанию субпикселя «b», которое предполагает наименьшую ошибку. Видеокодер 22 может повторять этот процесс для каждого положения субпикселя. В других примерах видеокодер 22 применяет подобные группы поддержки фильтра в отношении сходным образом расположенных положений субпикселя.
[0146] Фиг. 14 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример способа определения поддержки фильтра для субцелого пикселя, совместимой с этим раскрытием. В этом примере поддержка фильтра определяется для каждого положения субпикселя в первом, прежде кодированном кадре (152). В одном примере поддержка фильтра определяется для первого кадра, как описывается со ссылкой на фиг. 13. Видеокодер 22 может применять те же самые группы поддержки фильтра в отношении каждого субпикселя во втором, следующем кадре, когда группы поддержки фильтра были применены в отношении соответствующего субпикселя в предыдущем кадре (154). Примерный способ избегает многопроходных методик.
[0147] Другие способы выбора поддержки фильтра для положения субпикселя могут включать в себя выбор подгруппы из любого количества положений полного целого пикселя, которые окружают положение субпикселя. Положения полного целого пикселя могут быть выбраны на основе любого числа факторов, включая местонахождение положения субпикселя, подлежащего предсказанию, корреляцию положения полного целого пикселя с положением субпикселя или близость положения полного целого пикселя к положению субпикселя.
[0148] Некоторые примерные группы поддержки фильтра для значения субпикселя могут быть основаны на группе поддержки фильтра, которая содержит двенадцать или более положений, которые окружают положения субпикселя, как показано на фиг. 3 и фиг. 7. В другом примере фильтр(-ы) 39 вычисляет (вычисляют) значения субпикселя на основе группы поддержки фильтра, которая содержит шесть или более положений, которые включают в себя положение полного целого пикселя, связанное с положением субпикселя, как показано на фиг. 4 - фиг. 7 и фиг. 9. В еще одном примере фильтр(-ы) 39 вычисляет (вычисляют) значения субпикселя на основе группы поддержки фильтра, которая содержит четыре или более положений, которые окружают положение субпикселя, как показано на фиг. 8.
[0149] Фиг. 15 представляет собой блок-схему последовательности операций, иллюстрирующую примерное функционирование видеодекодера, который использует поддержку фильтра, совместимую с этим раскрытием. Так, процесс, продемонстрированный на фиг. 15 может быть рассмотрен как обратный процесс декодирования по отношению к процессу кодирования, продемонстрированному на фиг. 11. Фиг. 14 будет описана с точки зрения видеодекодера 28, представленного на фиг. 10, хотя и другие устройства могут реализовывать подобные методики.
[0150] Видеодекодер 28 может принимать контрольную выборку, содержащую множество положений полного целого пикселя (172). В одном примере видеодекодер 28 принимает контрольную выборку от видеокодера, такого как видеокодер 22. Видеодекодер 28 может принимать индикацию группы положений полного целого пикселя из контрольной выборки (174). Группа положений полного целого пикселя могла бы использоваться для интерполяции значения для субцелого пикселя из контрольной выборки.
[0151] Интерполяционный фильтр может быть применен в отношении группы положений полного целого пикселя видеодекодером 28, чтобы вычислить значение субцелого пикселя из контрольной выборки (176). Видеодекодер 28 также может декодировать текущий блок пикселей относительно вычисленного значения субцелого пикселя (178). Методики, подобные тому, что характерно для примерного функционирования видеодекодера 28, описанного со ссылкой на фиг. 15, будут объяснены далее с помощью фиг. 16.
[0152] Фиг. 16 представляет собой блок-схему последовательности операций, иллюстрирующую другое примерное функционирование видеодекодера, который использует поддержку фильтра, совместимую с этим раскрытием. Так, процесс, продемонстрированный на фиг. 16, может рассматриваться как обратный процесс декодирования по отношению к процессу кодирования, продемонстрированному на фиг. 12. Фиг. 14 будет описана с точки зрения видеодекодера 28, представленного на фиг. 10, хотя и другие устройства могут реализовывать подобные методики.
[0153] Как показано на фиг. 14, видеодекодер 28 принимает кодированные видеоблоки и информацию о фильтре (202). Модуль 52 энтропийного декодирования может осуществлять энтропийное декодирование этой принятой информации. Модуль 55 предсказания осуществляет компенсацию движения с интерполяцией в соответствии с методиками данного раскрытия. В частности, модуль 55 предсказания получает блок пикселей от блока 62 памяти, который включает в себя значения целого пикселя, соответствующие положениям целого пикселя (204). Модуль 55 предсказания может использовать принятые векторы движения, чтобы определить, как осуществлять интерполяцию.
[0154] На основе векторов движения модуль 55 предсказания может вычислить субпиксель на основе группы поддержки фильтра и типа интерполяционного фильтра (206). В некоторых примерах тип интерполяционного фильтра остается одинаковым для некоторых положений субпикселя. В одном примере индикация группы положений полного целого пикселя, используемой, чтобы кодировать текущий блок пикселей, осуществляется декодером 28 на по меньшей мере уровне элемента предсказания, уровне элемента кодирования, уровне кадра, уровне фрагмента или уровне последовательности текущего блока пикселей. Таким образом, модуль 55 предсказания использует интерполяцию, чтобы генерировать блок предсказания (208). Блок предсказания может быть использован, чтобы декодировать остаточный видеоблок, запуская сумматор 54, добавить блок предсказания к остаточному блоку (210). Различные аспекты интерполяции, описанные здесь, включая использование разных групп поддержки фильтра для положений субпикселя, могут улучшить процесс видеокодирования, обеспечив данные интерполяции более высокого по сравнению с традиционными методиками качества.
[0155] Методики, описанные в данном раскрытии, могут применяться в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или их комбинации. Любые признаки, описанные как модули или компоненты, могут быть реализованы вместе во встроенном логическом устройстве или отдельно как отдельные, но при этом имеющие возможность взаимодействовать логические устройства. При применении в программном обеспечении методики могут быть реализованы по меньшей мере частично машиночитаемым носителем данных, содержащим на себе команды, которые при выполнении задействуют один или несколько способов, описанных выше. Машиночитаемый носитель данных может формировать часть компьютерного программного продукта, который может включать в себя упаковочные материалы. Машиночитаемый носитель данных может содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), FLASH-память, магнитные и оптические носители данных и т.п. Методики дополнительно или в качестве альтернативы могут быть реализованы по меньшей мере частично машиночитаемым средством связи, которое передает или сообщает код в форме команд или структур данных и доступ к которому, чтение с которого и/или реализация которого может осуществляться компьютером.
[0156] Код может реализовываться одним или несколькими процессорами, такими как один или несколько процессоров обработки цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных встроенных или отдельных логических схем. Соответственно, термин «процессор», как используется здесь, может относиться к любой из вышеупомянутых структур или любой структуре, подходящей для осуществления методик, описанных здесь. Кроме того, в некоторых аспектах функциональность, описанная здесь, может быть обеспечена в специализированных элементах программного обеспечения или элементах аппаратного обеспечения, выполненных с возможностью кодирования и декодирования или встроенных в комбинированный кодер-декодер видеосигнала (CODEC). Описание различных признаков как элементов направлено на освещение разных функциональных аспектов проиллюстрированных устройств и необязательно предполагает, что такие элементы должны быть реализованы в виде компонентов аппаратного или программного обеспечения. Скорее, функциональность, связанная с одним или несколькими элементами, может быть интегрирована в пределах общих или раздельных компонентов аппаратного или программного обеспечения.
[0157] Различные примеры из этого раскрытия были описаны. Эти и другие примеры - в пределах объема следующей формулы изобретения.
Изобретение относится к средствам кодирования и декодирования видеоданных. Техническим результатом является повышение эффективности кодирования видеоданных. В способе генерируют блок предсказания на основе интерполированных значений субцелых пикселей, где значение субцелого пикселя является его интерполированным значением, вычисляют значение субцелого пикселя на основе интреполяционного фильтра и набора поддержки фильтра для упомянутого местоположения субцелого пикселя, применяют остаточный блок к блоку предсказания для воссоздания исходного блока. В способе местоположение субцелого пикселя связанно с полным целым пикселем. 8 н. и 24 з.п. ф-лы, 16 ил.
1. Способ декодирования видеоданных, содержащий этапы, на которых:
генерируют блок предсказания на основе интерполированных значений субцелых пикселей,
при этом значение конкретного субцелого пикселя является одним из интерполированных значений субцелых пикселей,
причем местоположение субцелого пикселя этого конкретного субцелого пикселя является одним из пятнадцати разных местоположений субцелого пикселя, связанных с полным целым пикселем, при этом каждое из местоположений субцелого пикселя, связанных с полным целым пикселем, имеет отличающийся от других набор поддержки фильтра, где каждый набор поддержки фильтра соответствует набору из одного или более положений целого пикселя,
при этом при генерировании блока предсказания вычисляют значение упомянутого конкретного субцелого пикселя на основе интреполяционного фильтра и набора поддержки фильтра для упомянутого местоположения субцелого пикселя;
и применяют остаточный блок к блоку предсказания для воссоздания исходного блока.
2. Способ по п. 1, в котором для каждого соответственного местоположения субцелого пикселя из местоположений субцелого пикселя, связанных с полным целым пикселем, набор поддержки фильтра для этого соответственного местоположения субцелого пикселя имеет горизонтальную или вертикальную форму.
3. Способ по п. 1, в котором для каждого из местоположений субцелого пикселя, связанных с полным целым пикселем, используется разный интреполяционный фильтр.
4. Способ по п. 1, дополнительно содержащий этап, на котором выбирают на основе ранее закодированных кадров набор поддержки фильтра, на котором основывается значение упомянутого конкретного субцелого пикселя.
5. Способ кодирования видеоданных, содержащий этапы, на которых:
генерируют блок предсказания на основе интерполированных значений субцелых пикселей,
при этом значение конкретного субцелого пикселя является одним из интерполированных значений субцелых пикселей,
причем местоположение субцелого пикселя этого конкретного субцелого пикселя является одним из пятнадцати разных местоположений субцелого пикселя, связанных с полным целым пикселем, при этом каждое из местоположений субцелого пикселя, связанных с полным целым пикселем, имеет отличающийся от других набор поддержки фильтра, где каждый набор поддержки фильтра соответствует набору из одного или более положений целого пикселя,
при этом при генерировании блока предсказания вычисляют значение упомянутого конкретного субцелого пикселя на основе интреполяционного фильтра и набора поддержки фильтра для упомянутого местоположения субцелого пикселя;
и вычитают блок предсказания из кодируемого блока для генерирования остаточного блока.
6. Способ по п. 5, в котором для каждого соответственного местоположения субцелого пикселя из местоположений субцелого пикселя, связанных с полным целым пикселем, набор поддержки фильтра для этого соответственного местоположения субцелого пикселя имеет горизонтальную или вертикальную форму.
7. Способ по п. 5, в котором для каждого из местоположений субцелого пикселя, связанных с полным целым пикселем, используется разный интреполяционный фильтр.
8. Способ по п. 5, дополнительно содержащий этап, на котором выбирают, на основе ранее закодированных кадров, набор поддержки фильтра, на котором основывается значение упомянутого конкретного субцелого пикселя.
9. Устройство для декодирования видеоданных, содержащее:
память, в которой хранятся видеоданные; и
один или более процессоров, выполненных с возможностью:
генерировать блок предсказания на основе интерполированных значений субцелых пикселей,
при этом значение конкретного субцелого пикселя является одним из интерполированных значений субцелых пикселей,
причем местоположение субцелого пикселя этого конкретного субцелого пикселя является одним из пятнадцати разных местоположений субцелого пикселя, связанных с полным целым пикселем, при этом каждое из местоположений субцелого пикселя, связанных с полным целым пикселем, имеет отличающийся от других набор поддержки фильтра, где каждый набор поддержки фильтра соответствует набору из одного или более положений целого пикселя,
при этом при генерировании блока предсказания один или более процессоров вычисляют значение упомянутого конкретного субцелого пикселя на основе интреполяционного фильтра и набора поддержки фильтра для упомянутого местоположения субцелого пикселя; и
применять остаточный блок к блоку предсказания для воссоздания исходного блока.
10. Устройство по п. 9, в котором для каждого соответственного местоположения субцелого пикселя из местоположений субцелого пикселя, связанных с полным целым пикселем, набор поддержки фильтра для этого соответственного местоположения субцелого пикселя имеет горизонтальную или вертикальную форму.
11. Устройство по п. 9, в котором для каждого из местоположений субцелого пикселя, связанных с полным целым пикселем, используется разный интреполяционный фильтр.
12. Устройство по п. 9, в котором один или более процессоров выполнены с возможностью выбирать, на основе ранее закодированных кадров, набор поддержки фильтра, на котором основывается значение упомянутого конкретного субцелого пикселя.
13. Устройство для кодирования видеоданных, содержащее:
память, в которой хранятся видеоданные; и
один или более процессоров, выполненных с возможностью:
генерировать блок предсказания на основе интерполированных значений субцелых пикселей,
при этом значение конкретного субцелого пикселя является одним из интерполированных значений субцелых пикселей,
причем местоположение субцелого пикселя этого конкретного субцелого пикселя является одним из пятнадцати разных местоположений субцелого пикселя, связанных с полным целым пикселем, при этом каждое из местоположений субцелого пикселя, связанных с полным целым пикселем, имеет отличающийся от других набор поддержки фильтра, где каждый набор поддержки фильтра соответствует набору из одного или более положений целого пикселя,
при этом при генерировании блока предсказания один или более процессоров вычисляют значение упомянутого конкретного субцелого пикселя на основе интреполяционного фильтра и набора поддержки фильтра для упомянутого местоположения субцелого пикселя; и
вычитать блок предсказания из кодируемого блока для генерирования остаточного блока.
14. Устройство по п. 13, в котором для каждого соответственного местоположения субцелого пикселя из местоположений субцелого пикселя, связанных с полным целым пикселем, набор поддержки фильтра для этого соответственного местоположения субцелого пикселя имеет горизонтальную или вертикальную форму.
15. Устройство по п. 13, в котором для каждого из местоположений субцелого пикселя, связанных с полным целым пикселем, используется разный интреполяционный фильтр.
16. Устройство по п. 13, в котором один или более процессоров выполнены с возможностью выбирать, на основе ранее закодированных кадров, набор поддержки фильтра, на котором основывается значение упомянутого конкретного субцелого пикселя.
17. Устройство для декодирования видеоданных, содержащее:
средство для генерирования блока предсказания на основе интерполированных значений субцелых пикселей,
при этом значение конкретного субцелого пикселя является одним из интерполированных значений субцелых пикселей,
причем местоположение субцелого пикселя этого конкретного субцелого пикселя является одним из пятнадцати разных местоположений субцелого пикселя, связанных с полным целым пикселем, при этом каждое из местоположений субцелого пикселя, связанных с полным целым пикселем, имеет отличающийся от других набор поддержки фильтра, где каждый набор поддержки фильтра соответствует набору из одного или более положений целого пикселя,
при этом при генерировании блока предсказания вычисляется значение упомянутого конкретного субцелого пикселя на основе интреполяционного фильтра и набора поддержки фильтра для упомянутого местоположения субцелого пикселя; и
средство для применения остаточного блока к блоку предсказания для воссоздания исходного блока.
18. Устройство по п. 17, в котором для каждого соответственного местоположения субцелого пикселя из местоположений субцелого пикселя, связанных с полным целым пикселем, набор поддержки фильтра для этого соответственного местоположения субцелого пикселя имеет горизонтальную или вертикальную форму.
19. Устройство по п. 17, в котором для каждого из местоположений субцелого пикселя, связанных с полным целым пикселем, используется разный интреполяционный фильтр.
20. Устройство по п. 17, дополнительно содержащее средство для выбора, на основе ранее закодированных кадров, набора поддержки фильтра, на котором основывается значение упомянутого конкретного субцелого пикселя.
21. Устройство для кодирования видеоданных, содержащее:
средство для генерирования блока предсказания на основе интерполированных значений субцелых пикселей,
при этом значение конкретного субцелого пикселя является одним из интерполированных значений субцелых пикселей,
причем местоположение субцелого пикселя этого конкретного субцелого пикселя является одним из пятнадцати разных местоположений субцелого пикселя, связанных с полным целым пикселем, при этом каждое из местоположений субцелого пикселя, связанных с полным целым пикселем, имеет отличающийся от других набор поддержки фильтра, где каждый набор поддержки фильтра соответствует набору из одного или более положений целого пикселя,
при этом при генерировании блока предсказания вычисляется значение упомянутого конкретного субцелого пикселя на основе интреполяционного фильтра и набора поддержки фильтра для упомянутого местоположения субцелого пикселя; и
средство для вычитания блока предсказания из кодируемого блока для генерирования остаточного блока.
22. Устройство по п. 21, в котором для каждого соответственного местоположения субцелого пикселя из местоположений субцелого пикселя, связанных с полным целым пикселем, набор поддержки фильтра для этого соответственного местоположения субцелого пикселя имеет горизонтальную или вертикальную форму.
23. Устройство по п. 21, в котором для каждого из местоположений субцелого пикселя, связанных с полным целым пикселем, используется разный интреполяционный фильтр.
24. Устройство по п. 21, дополнительно содержащее средство для выбора, на основе ранее закодированных кадров, набора поддержки фильтра, на котором основывается значение упомянутого конкретного субцелого пикселя.
25. Машиночитаемый носитель данных, на котором сохранены команды, которые при их исполнении предписывают процессору устройства видеодекодирования:
генерировать блок предсказания на основе интерполированных значений субцелых пикселей,
при этом значение конкретного субцелого пикселя является одним из интерполированных значений субцелых пикселей,
причем местоположение субцелого пикселя этого конкретного субцелого пикселя является одним из пятнадцати разных местоположений субцелого пикселя, связанных с полным целым пикселем, при этом каждое из местоположений субцелого пикселя, связанных с полным целым пикселем, имеет отличающийся от других набор поддержки фильтра, где каждый набор поддержки фильтра соответствует набору из одного или более положений целого пикселя,
при этом при генерировании блока предсказания вычисляется значение упомянутого конкретного субцелого пикселя на основе интреполяционного фильтра и набора поддержки фильтра для упомянутого местоположения субцелого пикселя; и
применять остаточный блок к блоку предсказания для воссоздания исходного блока.
26. Машиночитаемый носитель данных по п. 25, при этом для каждого соответственного местоположения субцелого пикселя из местоположений субцелого пикселя, связанных с полным целым пикселем, набор поддержки фильтра для этого соответственного местоположения субцелого пикселя имеет горизонтальную или вертикальную форму.
27. Машиночитаемый носитель данных по п. 25, при этом для каждого из местоположений субцелого пикселя, связанных с полным целым пикселем, используется разный интреполяционный фильтр.
28. Машиночитаемый носитель данных по п. 25, в котором команды дополнительно предписывают процессору выбирать, на основе ранее закодированных кадров, набор поддержки фильтра, на котором основывается значение упомянутого конкретного субцелого пикселя.
29. Машиночитаемый носитель данных, на котором сохранены команды, которые при их исполнении предписывают процессору устройства видеокодирования:
генерировать блок предсказания на основе интерполированных значений субцелых пикселей,
при этом значение конкретного субцелого пикселя является одним из интерполированных значений субцелых пикселей,
причем местоположение субцелого пикселя этого конкретного субцелого пикселя является одним из пятнадцати разных местоположений субцелого пикселя, связанных с полным целым пикселем, при этом каждое из местоположений субцелого пикселя, связанных с полным целым пикселем, имеет отличающийся от других набор поддержки фильтра, где каждый набор поддержки фильтра соответствует набору из одного или более положений целого пикселя,
при этом при генерировании блока предсказания вычисляют значение упомянутого конкретного субцелого пикселя на основе интреполяционного фильтра и набора поддержки фильтра для упомянутого местоположения субцелого пикселя;
и вычитать блок предсказания из кодируемого блока для генерирования остаточного блока.
30. Машиночитаемый носитель данных по п. 29, при этом для каждого соответственного местоположения субцелого пикселя из местоположений субцелого пикселя, связанных с полным целым пикселем, набор поддержки фильтра для этого соответственного местоположения субцелого пикселя имеет горизонтальную или вертикальную форму.
31. Машиночитаемый носитель данных по п. 29, при этом для каждого из местоположений субцелого пикселя, связанных с полным целым пикселем, используется разный интреполяционный фильтр.
32. Машиночитаемый носитель данных по п. 29, в котором команды дополнительно предписывают процессору выбирать, на основе ранее закодированных кадров, набор поддержки фильтра, на котором основывается значение упомянутого конкретного субцелого пикселя.
US 7653132 B2, 26.01.2010 | |||
WO 2008084378 A2, 17.07.2008 | |||
WO 2010039492 A2, 08.04.2010 | |||
СПОСОБ ИНТЕРПОЛЯЦИИ ЗНАЧЕНИЙ ПОДПИКСЕЛОВ | 2002 |
|
RU2317654C2 |
СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ/ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ, УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ/ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ | 2006 |
|
RU2369038C1 |
Авторы
Даты
2015-09-27—Публикация
2011-12-07—Подача