BR112012026153A2 - filtros de derivação mista. - Google Patents

filtros de derivação mista. Download PDF

Info

Publication number
BR112012026153A2
BR112012026153A2 BR112012026153-3A BR112012026153A BR112012026153A2 BR 112012026153 A2 BR112012026153 A2 BR 112012026153A2 BR 112012026153 A BR112012026153 A BR 112012026153A BR 112012026153 A2 BR112012026153 A2 BR 112012026153A2
Authority
BR
Brazil
Prior art keywords
pixel
sub
filter
video
positions
Prior art date
Application number
BR112012026153-3A
Other languages
English (en)
Inventor
Rajan L. Joshi
Marta Karczewicz
Wei-Jung Chien
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112012026153A2 publication Critical patent/BR112012026153A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

FILTROS DE DERIVAÇÃO MISTA Durante o estágio de predição de um processo de codificação e/ou decodificação de vídeo, um codificador de vídeo pode utilizar filtros relativamente maiores para determinados vetores de movimento apontado para determinadas posições de sub-pixel e filtros relativamente mais curtos para os vetores de movimento apontando para outras posições de sub-pixel, no qual um filtro mais longo geralmente se refere a um filtro de interpolação com um número maior de coeficiente de filtro, também chamadas de derivações, enquanto um filtro mais curto se refere a um filtro de interpolação com menos derivações.

Description

“FILTROS DE DERIVAÇÃO MISTA” | Esse pedido reivindica O benefício do pedido de patente provisório U.S.
No. 61/323.250, depositado em 12 de abril de 2010; do pedido provisório U.S.
No. 61/350.743, depositado em 02 de junho de 2010; e do pedido provisório U.S.
No. 61/361.188, depositado em 02 de julho de 2010, todo o conteúdo dos quais é incorporado aqui por referência.
Campo da Invenção Essa descrição se refere à codificação & decodificação de vídeo digital e, mais particularmente, às técnicas de filtragen aplicadas para gerar dados de predição utilizados na codificação e decodificação de vídeo.
Descrição da Técnica Anterior As capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão diretos digitais, sistemas de difusão sem fio, assistentes digitais pessoais (PDAS), computadores “laptop ou desktop, “computadores tablet, câmeras digitais, dispositivos de gravação digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones de rádio celular ou satélite, smart phones, € similares.
Os dispositivos de vídeo digitais implementam técnicas de compressão de vídeo, tal como as descritas nos padrões definidos por MPEG-2, MPEG-4, ou ITU-T H.264/MPEG- 4, parte 10, de Codificação de Vídeo Avançado (AVC), para transmitir e receber informação de vídeo (digital de forma mais eficiente.
As técnicas de compressão de vídeo podem realizar a predição espacial e/ou predição temporal para reduzir ou remover a redundância inerente às sequências de vídeo,
A intercodificação com base em bloco é uma técnica de codificação muito útil que se baseia na predição temporal para reduzir ou remover à redundância temporal entre os blocos de vídeo das unidades codificadas sucessivas de uma sequência de vídeo.
AS unidades codificadas podem compreender quadros de vídeo, fatias de quadros de vídeo, grupos de imagens, ou outra unidade definida de blocos de vídeo codificados.
Para à intercodificação, o codificador de vídeo realiza à estimativa de movimento e a compensação de movimento para rastrear o movimento dos blocos de vídeo correspondentes de duas ou mais unidades codificadas adjacentes.
A estimativa de movimento gera vetores de movimento, que indicam o deslocamento dos blocos de vídeo com relação aos blocos de vídeo de predição correspondentes em um ou mais quadros de referência ou outras unidades codificadas.
A compensação de movimento utiliza os vetores de movímento para gerar blocos de vídeo de predição a partir de um ou mais quadros de referência ou outras unidades codificadas.
Depois da compensação de movimento, os blocos de vídeo residuais são formados pela subtração de blocos de vídeo de predição dos blocos de vídeo originais sendo codificados.
O codificador de vídeo também pode aplicar processos de codificação por transformação, quantização e entropia para reduzir ainda mais a taxa de bit associada com à comunicação de blocos residuais.
As técnicas de transformação podem compreender transformadas de cosseno discretas (DCTs) ou processos conceitualmente similares.
Alternativamente, as transformadas de Wavelet, transformadas de inteiros, ou outros tipos de transformadas podem ser utilizadas.
Em um processo DCT, com um exemplo, um conjunto de valores de pixel é convertido em coeficientes de transformada, que pode representar a
3/58 | energia dos valores de pixel no domínio da frequência. A quantização é aplicada aos coeficientes de transformada e geralmente envolve um processo que reduz o número de bits associados com qualquer coeficiente de transformada determinado. A codificação por entropia compreende um ou mais processos que comprimem coletivamente uma sequência de modos de codificação, informação de movimento, padrões de bloco codificados e coeficientes de transformada quantizados, Exemplos de codificação por entropia incluem, mas não estão limitados à codificação de comprimento variável adaptativo de conteúdo (CAVLC) e codificação aritmética binária adaptativa de contexto (CABEÇA) .
Um bloco de vídeo codificado pode ser representado pela informação de predição que pode ser utilizada para criar ou identificar um bloco de predição, e um bloco residual de dados indicativo das diferenças entre o bloco sendo codificado e o bloco de predição. A informação de predição pode compreender um ou mais vetores de movimento que são utilizados para identificar o bloco de dados de predição. De acordo com os vetores de movimento, o decodificador pode reconstruir os blocos de predição que foram utilizados para codificar o residual. Dessa forma, de acordo com um conjunto de blocos residuais e um conjunto de vetores de movimento (e, possivelmente, alguma sintaxe adicional), o decodificador pode reconstruir um quadro de vídeo que foi originalmente codificado. A intercodificação com base na estimativa de movimento e compensação de movimento pode alcançar uma compressão muito boa visto que quadros de vídeo sucessivos ou outros tipos de unidades codificadas são frequentemente muito similares. Uma sequência de vídeo codificada pode compreender blocos de dados residuais, Vetores de movimento e possivelmente outros tipos de sintaxe.
, . 4/58 As técnicas de interpolação foram desenvolvidas a fim de se aperfeiçoar o nível de compressão que pode ser alcançado na intercodificação.
Nesse caso, OS dados de predição gerados durante à compensação de movimento, que são utilizados para codificar um bloco de vídeo, podem ser interpolados a partir de pixels de blocos de vídeo do quadro de vídeo ou outra unidade codificada utilizada na estimativa de movimento.
A interpolação é frequentemente realizada para gerar valores de meio pixel de predição 120 (half-pel) e valores de um quarto de pixel de predição (quarter-pel). Os valores de half-pel e quarter-pel são associados com as localizações de sub-pixel.
Os vetores de movimento fracionados podem ser utilizados para identificar os blocos de vídeo na resolução de sub-pixel a fim de capturar o movimento fracionado em uma sequência de vídeo e, dessa forma, fornecer blocos de predição que são mais similares aos blocos de vídeo sendo codificados do que os blocos de vídeo inteiros.
Sumário da Invenção Em geral, essa descrição descreve às técnicas de filtragem aplicadas por um codificador e um decodificador durante o estágio de predição de um processo de codificação e/ou decodificação.
Aspectos das técnicas de filtragem descritas podem melhorar a precisão dos dados de predição utilizados durante a interpolação fracionada, e em alguns casos, pode aperfeiçoar os dados de predição dos blocos inteiros de pixel.
Existem vários aspectos para essa descrição, incluindo a utilização de filtros relativamente mais longos para determinados vetores de movimento apontando para determinadas posições de sub-pixel e filtros relativamente mais curtos para vetores de movimento apontando para outras posições de sub-pixel.
. ' 5/58 Para se projetar os filtros com boa resposta de precisão para fins de interpolação, pode ser desejável se utilizar filtros relativamente mais longos (por exemplo, 8 coeficientes ou derivações, ao invés de 6). Tais filtros mais longos podem aperfeiçoar à eficiência de compressão do codificador de vídeo à custa de uma maior complexidade computacional. Para se Obter o benefício de um melhor desempenho com um filtro mais longo sem um grande aumento na complexidade computacional, as técnicas descritas nessa descrição incluem o uso de uma mistura de filtros longos e filtros curtos. Se, por exemplo, 0 vetor de movimento apontar para as posições nas quais uma única filtragem é necessária, então um filtro de 8 derivações pode ser utilizado. Para as posições no qual duas operações de filtragem são necessárias, OS filtros de 6 derivações podem ser utilizados. Dessa forma, a complexidade de pior hipótese ainda é limitada por duas operações de filtragem com filtros de 6 derivações, que é igual ao caso do padrão H.264, mas o uso de filtros de 8 derivações pode produzir dados de predição aperfeiçoados em comparação com o padrão n.264.
Outros aspectos dessa descrição se referem às técnicas para codificação de informação na sequência de bit para transporte de tipo de filtro, e, possivelmente, os coeficientes de filtro utilizados. Esses e outros aspectos dessa descrição se tornarão aparentes a partir da descrição abaixo. : Em um exemplo, essa descrição fornece um método que inclui obter um bloco de pixels, no qual o bloco de pixels inclui valores de pixel inteiros correspondendo às posições de pixel inteiro dentro do bloco de pixels; computar um primeiro valor de sub-pixel para uma primeira posição de sub-pixel, no qual computar o primeiro valor de
" . 6/58 sub-pixel compreende a aplicação de um primeiro filtro de interpolação definindo um primeiro conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro; computar um segundo valor de sub-pixel para uma segunda posição de sub-pizel, no qual computar O segundo valor de sub-pixel compreende a aplicação de um segundo filtro de interpolação definindo um segundo conjunto unidimensional de coeficientes de filtro correspondente às posições de suporte de filtro horizontais e aplicação de um terceiro filtro de interpolação definindo um terceiro conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro vertical, onde: o primeiro conjunto unidirecional compreende mais coeficientes de filtro do que o segundo conjunto unidimensional; o primeiro conjunto unidimensional compreendendo mais coeficientes de filtro do que o terceiro conjunto unidimensional; e gerar um bloco de predição com base em pelo menos um primeiro valor de sub-pixel e um segundo valor de sub-pixel.
Em outro exemplo, essa descrição fornece um equipamento compreendendo uma unidade de predição configurada para obter um bloco de pixels, no qual o bloco de pixels incluí valores de pixel inteiro correspondendo às posições de pixel inteiro dentro do bloco de pixels; computação de um primeiro valor de sub-pixel e um segundo valor de sub-pixel, no qual um primeiro valor de sub-pixel é computado pela aplicação de um primeiro filtro de interpolação definindo um primeiro conjunto unidimensional dos coeficientes de filtro correspondendo às posições de suporte de filtro; um segundo valor de sub-pixel sendo computado pela aplicação de um segundo filtro de interpolação definindo um segundo conjunto unidimensional de coeficientes de filtro correspondendo às posições de
. 7/58 suporte de filtro horizontais e aplicação de um terceiro filtro de interpolação definindo um terceiro conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro verticais, o primeiro conjunto unidimensional compreendendo mais coeficientes de filtro do que o segundo conjunto unidimensional; o primeiro conjunto unidimensional compreendendo mais coeficientes de filtro do que o terceiro conjunto unidimensional; e a geração de um bloco de predição com base em pelo menos um primeiro valor de sub-pixel e o segundo valor de sub-pixel.
Em outro exemplo, essa descrição fornece uma parelho que inclui meios para obtenção de um bloco de pixels, no qual o bloco de pixels inclui valores de pixel inteiro correspondendo às posições de pixel inteiro dentro do bloco de pixels; meios para computar um primeiro valor de sub-pixel para uma primeira posição de sub-pixel, no qual a computação do primeiro valor de sub-pixel compreende a aplicação de um primeiro filtro de interpolação definindo um primeiro conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro; meios para computar um segundo valor de sub-pixel para uma segunda posição de sub-pixel, no qual computar o segundo valor de sub-pixel compreende a aplicação de um segundo filtro de interpolação definindo um segundo “conjunto unidímensional de coeficientes de filtro correspondendo às posições de suporte de filtro horizontais e aplicação de um terceiro filtro de interpolação definindo um terceiro conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro vertical,
onde: o primeiro conjunto unidimensional compreende mais coeficientes de filtro do que o segundo conjunto unidimensional; o primeiro conjunto unidimensional compreendendo mais coeficientes de filtro do que o terceiro
; 8/58 | conjunto unidimensíonal; e meios para à geração de um bloco de predição com base em pelo menos um primeiro valor de sub-pixel e o segundo valor de sub-pixel.
As técnicas descritas nessa descrição podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, oO software pode ser executado em um ou mais processadores, tal como um microprocessador, circuito integrado específico de aplicativo (ASIC), conjunto de porta programável em campo (FPGA), ou processador de sinal digital (DSP). O software que executa as técnicas pode ser inicialmente armazenado em um meio legível por computador e carregado e executado no processador.
De acordo, essa descrição também contempla um meio de armazenamento legível por computador não transitório armazenando de forma tangível uma Ou mais instruções, que quando executadas por um OU mais processadores faz com que um OU mais processadores: obtenham um bloco de pixels, no qual O bloco de pixels inclui valores de pixel inteiro correspondendo às posições de pixel inteiro dentro do bloco de pixels; computem um primeiro valor de sub-pixel para uma primeira posição de sub-pixel, no qual computar o primeiro valor de sub-pixel compreende a aplicação de um primeiro filtro de interpolação definindo um primeiro conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro; computem um segundo valor de sub-pixel para uma segunda posição de sub-pixel, no qual computar o segundo valor de sub-pixel compreende a aplicação de um segundo filtro de interpolação definindo um segundo conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro horizontais e aplicação de um terceiro filtro de interpolação definindo
. . 9/58 um terceiro conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro verticais, onde: o primeiro conjunto unidimensional compreende mais coeficientes de filtro do que o segundo conjunto unidimensional; Oo primeiro conjunto unidimensional compreendendo mais coeficientes de filtro do que o terceiro conjunto unidimensional; e a geração de um bloco de predição com base em pelo menos o primeiro valor de sub- pixel e o segundo valor de sub-pixel.
Os detalhes de um ou mais aspectos da descrição são apresentados nos desenhos em anexo €e na descrição abaixo. Outras características, objetivos e vantagens das técnicas descritas nessa descrição serão aparentes a partir da descrição e dos desenhos e das reivindicações.
Breve Descrição dos Desenhos A figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo ilustrativo que pode implementar as técnica dessa descrição; A figura 2 é um diagrama de blocos ilustrando um exemplo de um codificador de vídeo que pode realizar às técnicas de filtragem consistentes com essa descrição; A figura 3 é um diagrama conceitual ilustrando as posições de pixel inteiro associadas com os dados de predição, e as posições de sub-pixel associadas com os dados de predição interpolados; A figura 4 é um diagrama conceitual ilustrando posições de pixel inteiro associadas com os dados de predição, e posições de sub-pixel verticais e posições de sub-pixel horizontais associadas com os dados e predição interpoládos; A figura 5 é um diagrama conceitual ilustrando posições de pixel inteiro associadas com OS dados de predição, e posições de sub-pixel do sub-pixel 2L não
. : 10/58 vertical e não horizontal associadas com os dados de predição interpolados;
A figura 6 é um diagrama conceitual ilustrando um suporte de filtro de 8 pixels horizontal com simetria de coeficiente, com relação a uma localização de sub-pixel;
A figura 7 é um diagrama conceitual ilustrando um suporte de filtro de 8 pixels horizontal sem símetria de coeficiente, com relação a uma localização de sub-pixel;
A figura 8 é um diagrama conceitual ilustrando um suporte de filtro de 8 pixels vertical com simetria de coeficiente, com relação à uma localização de sub-pixel;
A figura 9 é um diagrama conceitual ilustrando um suporte de filtro de 8 pixels vertical sem simetria de coeficiente, com relação a uma localização de sub-pixel;
A figura 10 é um diagrama de blocos ilustrando um exemplo de um decodificador de vídeo, que pode decodificar uma sequência de vídeo que é codificada da forma descrita aqui;
A figura 11 é um fluxograma ilustrando técnicas para sinalização de filtro consistentes com a presente descrição;
A figura 12 é um fluxograma ilustrando técnicas dé sinalização de filtro consistentes com a presente descrição;
A figura 13 é um fluxograma ilustrando técnicas de sinalização de filtro consistentes com a presente descrição;
A figura 14 é um fluxograma ilustrando técnicas de sinalização de filtro consistentes com a presente descrição;
A figura 15 é um fluxograma ilustrando técnicas para filtragem por interpolação consistentes com a presente descrição.
. 11/58 Descrição Detalhada da Invenção
Essa descrição descreve técnicas de filtragem aplicadas por um codificador e um decodificador durante o estágio de predição de um processo de codificação e/ou decodificação de vídeo.
As técnicas de filtragem descritas podem aperfeiçoar a precisão dos dados de predição utilizados durante a interpolação fracionada, e em alguns casos, pode aperfeiçoar os dados de predição de blocos inteiros de pixels.
Existem vários aspectos para essa descrição, incluindo o uso de filtros relativamente mais longos para determinados vetores de movimento apontando para determinadas posições de sub-pixel e filtros relativamente mais curtos para vetores de movimento apontando para outras posições de sub-pixel.
Um filtro mais longo geralmente se refere a um filtro de interpolação com um número maior de coeficientes de filtro, também chamados de derivações, enquanto um filtro mais curto geralmente se refere a um filtro de interpolação com menos derivações, Em geral, as frases “filtro mais longo” e “filtro mais curto” são termos relativos significando que o filtro mais longo é mais longo do que o filtro mais curto e que o filtro mais curto é mais curto do que o filtro mais longo.
Essas frases, no entanto, não exigem, de outra forma, qualquer comprimento específico desde que o filtro mais longo seja mais longo do que o filtro mais curto e que o filtro mais curto seja mais curto do que o filtro mais longo.
Por exemplo, se fazendo referência a um filtro de 8 derivações e um filtro de 6 derivações, o filtro de 8 derivações será o filtro mais longo e o filtro de 6 derivações será o filtromais curto.
Se, no entanto, se fizer referência a um filtro de 8 derivações e um filtro de 10 derivações, o filtro de 8 derivações será o filtro mais curto.
. . 12/58 os filtros com mais derivações geralmente fornecem uma melhor resposta de frequência para fins de interpolação em comparação com os filtros com menos derivações.
Por exemplo, um filtro com 8 derivações geralmente produz uma melhor resposta de frequência do que um filtro de 6 derivações.
Em comparação com os filtros mais curtos, os filtros mais longos podem aperfeiçoar a eficiência de compressão do codificador de vídeo à custa de uma maior complexidade computacional.
Para se obter os benefícios do melhor desempenho com um filtro mais longo sem um grande aumento na complexidade computacional, os aspectos dessa descrição incluem o uso de uma mistura de filtros longos e filtros curtos.
Se, por exemplo, o vetor de movimento apontar para uma localização de pixels no qual uma única operação de filtragem é necessária, então um filtro de 8 derivações pode ser utilizados.
Para as localizações de sub-pixel no qual duas operações de filtragem são necessárias, filtros mais curtos, tal como dois filtros de 6 derivações podem ser utilizados.
Dessa forma, desde que à diferença no número de derivações entre 6 filtro mais curto e o filtro mais longo não é muito grande, a pior complexidade possível ainda é geralmente e, limitada por duas operações de filtragem com filtros mais curtos.
A figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo ilustrativo 10 que pode ser utilizado para implementar os aspectos dessa descrição.
Como ilustrado na figura 1, o sistema 10 inclui um dispositivo fonte 12 que transmite dados de vídeo codificados para um dispositivo de destino 16 através de um canal de comunicação 15. O dispositivo fonte 12 e o dispositivo de destino 16 podem compreender qualquer um dentre uma ampla faixa de dispositivos.
Em alguns casos, O
. 13/58 dispositivo fonte 12 e o dispositivo de destino 16 compreendem dispositivos de comunicação sem fio, tal como equipamentos sem fio, chamados radiotelefones celulares ou via satélite, ou qualquer dispositivo sem fio que possa comunicar informação de vídeo átravés de um canal de comunicação 15, caso no qual oO canal de comunicação 15 é sem fio. As técnicas dessa descrição, no entanto, que se referen à filtragen e à geração de dados de predição durante a codificação de predição, não são necessariamente limitadas às aplicações ou configurações sem fio. Dessa forma, os aspectos dessa descrição também podem ser úteis em uma ampla faixa de outras configurações e dispositivos, incluindo os dispositivos que se comunicam através de fios físicos, fibras óticas ou outra mídia física ou sem fio. Adicionalmente, as técnicas de codificação e decodificação também podem ser aplicadas em um dispositivo independente que não se comunica necessariamente com qualquer outro dispositivo.
No exemplo da figura 1, O dispositivo fonte 12 pode incluir uma fonte de vídeo 20, um codificador de vídeo | 22, um modulador/demodulador (modem) 23 e um transmissor
24. O dispositivo de destino 16 pode incluir um receptor 26, um modem 27, um decodificador de vídeo 28, e um dispositivo de exibição 30. De acordo com essa descrição, o codificador de vídeo 22 do dispositivo fonte 12 pode ser configurado para aplicar uma ou mais das técnicas dessa descrição como parte de um processo de codificação de vídeo. De forma similar, o decodificador de vídeo 28 do dispositivo de destino 16 pode ser configurado para aplicar uma ou mais das técnicas dessa descrição como parte de um processo de decodificação de vídeo. Novamente, o sistema ilustrado 10 na figura 1 é meramente ilustrativo. As várias técnicas dessa descrição podem ser realizadas por qualquer dispositivo de codificação que suporte a codificação de predição com base em bloco, ou por qualquer dispositivo de decodificação que suporte a decodificação de predição com base em bloco. O dispositivo fonte 12 e o dispositivo de destino 16 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo fonte 12 gera dados de vídeo codificados para a transmissão para O dispositivo de destino 16. Em alguns casos, os dispositivos 12, 16 podem operar de uma forma substancialmente simétrica de modo que, cada um dos dispositivos 12, 16 inclua componentes de codificação e decodificação de vídeo. Dessa forma, O sistema 10 pode suportar à transmissão de vídeo de via única ou duas vias entre os dispositivos de vídeo 12, 16, por exemplo, para sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo, ou vídeo telefonia.
A fonte de vídeo 20 do dispositivo fonte 12 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado previamente, ou uma alimentação de vídeo de um provedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo 20 pode gerar dados com base em gráficos de computador como O vídeo fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado em computador. Em alguns casos, se a fonte de vídeo 20 for uma câmera de vídeo, dispositivo fonte 12 e dispositivo de destino 16 podem formar os chamados videotelefones. Em cada cáso, o vídeo capturado, pré- capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 22. A informação de vídeo codificada pode então ser modulada pelo modem 23 de acordo com um padrão de comunicação, por exemplo, tal como CDMA ou outro padrão de comunicação € transmitido para o dispositivo de destino 16 através do transmissor 24 e o canal de comunicação 14. o medem 23 pode incluir vários misturadores, filtros, amplificadores ou outros componentes projetados para modulação de sinal. O transmissor 24 pode incluir circuitos projetados para transmitir dados, incluindo amplificadores, filtros e uma ou mais antenas.
O receptor 26 do dispositivo de destino 16 recebe informação através do canal de comunicação 14, e o modem 27 demodula à informação. Como o transmissor 24, o receptor 26 pode incluir circuitos projetados para O recebimento de dados, incluíndo os amplificadores, filtros e uma ou mais antenas. Em alguns casos, o transmissor 24 e/ou o receptor 26 podem ser incorporados a um único componente transceptor que inclui ambos os conjuntos de circuito de recebimento e transmissão. O modem 27 pode incluir vários misturadores, filtros, amplificadores ou outros componentes projetados para demodulação de sinal. Em alguns casos, os modems 23 e 27 podem incluir componentes para à realização de ambas a modulação e demodulação.
Novamente, o processo de codificação de vídeo realizado pelo codificador de vídeo 22 pode implementar uma ou mais das técnicas descritas aqui durante à compensação de movimento. O processo de decodificação de vídeo realizado pelo decodificador de vídeo 28 também pode realizar tais técnicas durante seu estágio de compensação de movimento do processo de decodificação. O termo “codificador” é utilizado aqui para fazer referência a um dispositivo de computador especializado ou equipamento que realiza a codificação de vídeo ou decodificação de vídeo. O termo “codificador” se refere geralmente a qualquer codificador de vídeo, decodificador de vídeo, ou codificador/decodificador —* combinado (codec). O termo “codificação” se refere à codificação ou decodificação. O dispositivo de exibição 30 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição tal como um tubo de raio catodo (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânico (OLED), ou qualquer outro tipo de dispositivo de exibição. No exemplo da figura 1, o canal de comunicação 15 pode compreender qualquer meio de comunicação com ou sem fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física, ou qualquer combinação de mídia com e sem fio. O canal de comunicação pode formar parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla, ou uma 15 rede global tal como a Internet. O canal de comunicação 15 geralmente representa qualquer meio de comunicação adequado ou coleção de meios de comunicação diferentes para transmissão de dados de vídeo do dispositivo fonte 12 para o dispositivo de destino 16. O canal de comunicação 15 pode incluir roteadores, comutadores, estações base ou qualquer ' outro equipamento que possa ser útil para facilitar a comunicação do dispositivo fonte 12 para O dispositivo de destino 16.
O codificador de vídeo 22 e o decodificador de vídeo 28 podem operar de acordo com um ou mais dos padrões de compressão de vídeo, tal como o padrão ITU-T H.264, descrito alternativamente como AVC, MPEG-4 parte 10, ou pode operar de acordo com um padrão de compressão de vídeo de próxima geração. As técnicas dessa descrição, no entanto, não estão limitadas a qualquer padrão de codificação de vídeo em particular. Apesar de não ilustrado na figura 1, em alguns aspectos, O codificador de vídeo 22 e o decodificador de vídeo 28 podem, cada um, ser integrados a um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, Ou outro hardware e software, para manusear a codificação de ambos o áudio e o vídeo em uma sequência de dados comum Ou sequências de dados separadas.
Se aplicável, as unidades MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.233 ou outros protocolos tal como O protocolo de datagrama de usuário (UDP). O codificador de vídeo 22 e o decodificador de vídeo 28 podem, cada um, ser implementados como um ou mais microprocessadores, DSP, ASICs, FPGAs, lógica discreta, software, hardware, firmware Ou qualquer combinação dos mesmos.
Cada codificador de vídeo 22 e decodificador de vídeo 28 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codec combinado que fornece capácidades de codificação e decodificação em um dispositivo “móvel respectivo, dispositivo de assinante, dispositivo de difusão, servidor ou similares.
Uma sequência de vídeo inclui tipicamente uma série de quadros de vídeo.
O codificador de vídeo 22 opera em blocos de vídeo dentro de quadros de vídeo individuais a fim de codificar os dados de vídeo.
Os blocos de vídeo podem ter tamanhos fixos ou variáveis, e podem diferir em tamanho de acordo com um padrão de codificação especificado.
Cada quadro de vídeo inclui uma série de fatias.
Cada fatia pode incluir uma série de macro blocos, que podem ser dispostos em sub-blocos.
Como um exemplo, O padrão ITU-T H.264 suporta à intrapredição em vários tamanhos de bloco, tal como 16 por 16, 16 por 8, 8 por 16, 8 por 8, 8 por 4, por 8 e 4 por 4 para componentes luma e tamanhos —“escalonados correspondentes para componentes croma.
Blocos de vídeo podem compreender blocos de dados de pixel, ou blocos de coeficientes de transformada, por exemplo, depois de um processo de transformação tal como DCT ou um processo de transformação conceitualmente similar.
Blocos de vídeo menores podem fornecer melhor resolução, e podem ser utilizados para locais de um quadro de vídeo que incluem altos níveis de detalhamento. Em geral, os macro blocos E vários sub-blocos podem ser considerados blocos de vídeo. Adicionalmente, uma fatia pode ser considerada uma série de blocos de vídeo, tal como macro blocos e/ou sub-blocos. Cada fatia pode ser uma unidade independentemente decodificável de um quadro de vídeo. Alternativamente, os quadros propriamente ditos podem ser unidades de decodificáveis, ou outras partes de um quadro podem ser definidas como unidades decodificáveis. O termo “unidade codificada” se refere a qualquer unidade decodificável independentemente de uma quadro de vídeo tal como todo um quadro, uma fatia de um quadro, ou outra unidade independentemente decodificável definida de acordo comas técnicas de codificação utilizadas.
Para se codificar os blocos de vídeo, O codificador de vídeo 22 realiza a intra € a interpredição para gerar um bloco de predição. O codificador de vídeo 22 subtrai os blocos de predição dos blocos de vídeo originais a serem codificados para gerar blocos residuais. Dessa forma, os blocos residuais são indicativos de diferenças entre os blocos sendo codificados e os blocos de predição. O codificador de vídeo 22 pode realizar uma transformação nos blocos residuais para gerár blocos de coeficientes de transformada. Seguindo as técnicas de codificação e transformação intra ou interprevisíveis, O codificador de vídeo 22 realiza a quantização. A quantização se refere geralmente a um processo no qual os coeficientes são quantizados para possivelmente reduzir a quantidade de dados utilizada pra representar os coeficientes. seguindo a quantização, à codificação pro entropia pode ser realizada de acordo com uma metodologia de codificação por entropia, tal como CAVLC ou CABEÇA. Mais detalhes de cada etapa do processo de codificação realizado pelo codificador de vídeo 22 serão descritos abaixo na figura 2.
No dispositivo de destino 16, O decodificador de vídeo 28 recebe os dados de vídeo codificados. o decodificador de vídeo 28 decodifica por entropia os dados de vídeo recebidos de acordo com uma metodologia de codificação por entropia, tal como CAVLC ou CABEÇA, para obter os coeficientes quantizados. O decodificador de vídeo 28 aplica a quantização invertida (dequantização) e as funções de transformação invertida para reconstruir o bloco residual no domínio de pixel. O decodificador de vídeo 28 também gera um bloco de predição com base na informação de controle ou informação de sintaxe (por exemplo, modo de codificação, vetores de movimento, sintaxe que define os coeficientes de filtro e similares) incluídos nos dados de vídeo codificados. O decodificador de vídeo 28 soma o bloco de predição com o bloco residual reconstruído para produzir um bloco de vídeo reconstruído para exibição. Mais detalhes de cada etapa do processo de decodificação realizado pelo decodificador de vídeo 28 serão descritos abaixo com referência à figura 10.
De acordo com os aspectos dessa descrição, O codificador de vídeo 22 e o decodificador de vídeo 28 podem utilizar uma ou mais técnicas de filtragem de interpolação durante à compensação de movimento, Em particular, de acordo com um aspecto dessa descrição, O codificador de vídeo 22 e/ou o decodificador de vídeo 28 podem obter um bloco de pixels contendo valores de pixel inteiros correspondentes às posições de pixel inteiro e uso de uma mistura de filtros mais longos e pixels mais curtos para determinar os valores de sub-pixel para o bloco de pixels. A figura 2 é um diagrama de blocos ilustrando um exemplo de um codificador de vídeo 50 que pode realizar as técnicas de filtragem consistentes com essa descrição. O codificador de vídeo 50 é um exemplo de um dispositivo de computador de vídeo especializado ou equipamento referido aqui como um “codificador”. O codificador de vídeo 50 pode corresponder ao codificador de vídeo 22 do dispositivo 20, ou um codificador de vídeo de um dispositivo diferente. O codificador de vídeo 50 pode realizar a intra e à intercodificação de blocos dentro dos quadros de vídeo, apesar de os componentes de intracodificação não serem ilustrados na figura 2 para facilitar a ilustração. A intracodificação se baseia na precisão espacial para reduzir ou remover redundância espacial em vídeo dentro de um quadro de vídeo determinado. A intercodificação se baseia na predição temporal para reduzir ou remover a redundância temporal no vídeo dentro de quadros adjacentes de uma sequência de vídeo. O intermodo (I-modo) pode se referir ao modo de compressão com base em espacial, e os intermodos tal como predição (P-modo) ov um modo bidirecional (B-modo) pode se referir aos modos de compressão com base temporal. As técnicas dessa descrição se aplicam durante a intercodificação e, portanto, unidades de intracodificação tal como unidade de predição espacial não são ilustradas na figura 2 por motivos de simplicidade e facilidade de ilustração.
como ilustrado na figura 2, o codificador de vídeo 50 recebe um bloco de vídeo dentro de um quadro de vídeo à ser codificado. No exemplo, da figura 2, um codificador de vídeo 50 inclui uma unidade de predição 32,
uma memória 34, um somador 48, uma unidade de transformada 38, uma unidade de quantização 40, e uma unidade de codificação por entropia 46. Para reconstrução de bloco de vídeo, o codificador de vídeo 50 também inclui uma unidade de quantização invertida 42, uma unidade de transformada invertida 44, e um somador 51. Um filtro de desbloqueio (não ilustrado) também pode ser incluído para filtrar os 1 imites de bloco para remover os artefatos de bloqueio do vídeo reconstruído. Se desejado, o fíltro de desbloqueio filtraria tipicamente a saída do somador 51.
A unidade de predição 32 pode incluir uma unidade de estimativa de movimento (ME) 35, e uma unidade de compensação de movimento (MC) 37. Uma unidade de filtro 39 pode ser incluída ná unidade de predição 32 e pode ser invocada por uma ou ambas as unidades ME 35 e unidade MC 37 para realizar a filtragen por interpolação ou tipo interpolação como parte da compensação de estimativa de movimento e/ou compensação de movimento, de acordo com essa descrição. A unidade de filtro 39 pode representar na verdade uma pluralidade de filtros diferentes para facilitar inúmeros tipos diferentes de filtragem por interpolação e tipo interpolação como descrito aqui. Dessa forma, a unidade de predição 32 pode incluir uma pluralidade de filtros de interpolação ou tipo interpolação. Adicionalmente, a unidade de filtro 39 pode incluir filtros de interpolação ou tipo interpolação. Adicionalmente, a unidade de filtro 39 pode incluir uma pluralidade de índices de filtro para uma pluralidade de locais de sub-pixel. Os índices de filtro associam um padrão de bit e uma localização de sub-pixel com um filtro de interpolação particular. Durante O processo de codificação, o codificador de vídeo 50 recebe um bloco de vídeo a ser codificado (rotulado “Bloco de Vídeo” na figura
. 22/58 2), e a unidade de predição 32 se refere à codificação de interpredição para gerar um bloco de predição (rotulado “bloco de predição” na figura 2). Especificamente, a unidade ME 35 pode realizar a estimativa de movimento para identificar o bloco de predição na memória 34, e a unidade MC 37 pode realizar a compensação de movimento para gerar O bloco de predição.
A estimativa de movimento é tipicamente considerada o processo de geração de vetores de movimento, que estimam o movimento dos blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de um bloco de predição dentro de um quadro de predição ou de referência (ou outra unidade codificada, por exemplo, fatia) com relação ao bloco a ser codificado dentro do quadro atual (ou outra unidade codificada). O quadro de referência (ou parte do quadro) pode ser temporalmente localizado antes de ou depois do quadro de vídeo (ou parte do quadro de vídeo) ao qual o bloco de vídeo atual pertence. A compensação de movimento é tipicamente considerada o processo de coleta ou geração de bloco de predição a partir da memória 34, ou possivelmente à interpolação ou geração de dados de predição filtrados com base no vetor de movimento determinado pela estimativa de movimento.
A unidade ME 35 seleciona o vetor de movimento adequado para o bloco de vídeo a ser codificado por comparação com o bloco de vídeo para os blocos de vídeo de um ou mais dos quadros de referência (por exemplo, um quadro anterior e/ou subsequente). A unidade ME 35 pode realizar à estimativa de movimento com a precisão de pixel fracionado, algumas vezes referido como pixel fracionado, pel fracionado, ou estimativa de movimento de sub-pixel. Como tal, os termos pixel fracionado, pel fracionado e estimativa de movimento de sub-pixel podem ser utilizados de forma intercambiável. Na estimativa de movimento de pixel fracionado, a unidade ME 35 pode selecionar um vetor de movimento que indica o deslocamento para um local além de uma localização de pixel inteiro, Dessa forma, a estimativa de movimento de pixel fracionado permite que a unidade de predição 32 rastreie O movimento com maior precisão do que as localizações de pixel inteiro (ou pixel cheio), gerando, dessa forma, um bloco de predição mais preciso. A estimativa de movimento de pixel fracionado pode ter uma precisão de meio pixel, uma precisão de um quarto de pixel, uma precisão de um oitavo de pixel, ou qualquer outra precisão mais fina. A unidade ME 35 pode invocar filtros 39 para quaisquer interpolações necessárias durante o processo de estimativa de movimento.
Para realizar a compensação de movimento de pixel fracionado, a unidade MC 37 pode realizar à interpolação (algumas vezes referida como filtragen de interpolação) a fim de gerar dados na resolução de sub-pixel (referida aqui como valores de pixel fracionado ou de sub-pixel). A unidade MC 37 pode invocar os filtros 39 para essa interpolação. A unidade de predição 32 pode realizar a interpolação (ou filtragem tipo interpolação de pixels inteiros) utilizando as técnicas descritas aqui.
Uma vez que o vetor de movimento para O bloco de vídeo à ser codificado é selecionado pela unidade ME 35, à unidade MC 37 gera o bloco de vídeo de predição associado com esse vetor de movimento. A unidade MC 37 pode buscar o bloco de predição da memória 34 com base no vetor de movimento determinado pela unidade MC 35. No caso de um vetor de movimento com precisão de pixel fracionado, a unidade MC 37 filtra os dados da memória 34 para interpolar tais dados para resolução de sub-pixel, por exemplo,
: 24/58 invocando filtros 39 para esse processo. Em alguns casos, à técnica de filtragem por interpolação ou modo que foi utilizado para gerar os dados de predição de sub-pixel podem ser indicados como um ou mais elementos de sintaxe de interpolação para a unidade de codificação por entropia 46 para inclusão na sequência de bits codificada.
Uma vez que a unidade de predição 32 gerou o bloco de predição, o codificador de vídeo 50 foram um bloco de vídeo residual (rotulado “bloco residual” na figura 2) pela subtração do bloco de predição do bloco de vídeo original sendo codificado. A unidade de transformada 38 aplica uma transformação alta como a DCT ou uma transformação conceitualmente similar ao bloco residual produzindo um bloco de vídeo compreendendo os coeficientes de bloco de transformação residual. A unidade de transformada 38, por exemplo, pode realizar Outras transformações, tal como as definidas pelo padrão H.264, que são conceitualmente similares à DCT. As transformações de wavelet, as transformações de inteiro, as transformações de sub-banda ou outros tipos de transformações também podem ser utilizadas. Em qualquer caso, a unidade de transformada 38 aplica a transformação ao bloco residual, produzindo um bloco de coeficientes de transformada residual. A transformação pode converter à informação residual de um domínio de pixel para um domínio da frequência.
A unidade de quantização 40 quantiza os coeficientes de transformada residual para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes. Depois da quantização, a unidade de codificação por entropia 46 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação por entropia 46 pode realizar CAVLC,
CABEÇA ou qualquer outra metodologia de codificação por entropia.
A unidade de codificação por entropia 46 também pode codificar um ou mais elementos de sintaxe de predição obtidos a partir da unidade de predição 32 ou outro componente de codificador de vídeo 50. Os um ou mais elementos de sintaxe de predição podem incluir um modo de codificação, um ou mais vetores de movimento, uma técnica de interpolação que foi utilizada para gerar os dados de sub-pixel, um conjunto ou subconjunto de coeficientes de filtro, ou outra informação associada com a geração do bloco de predição. A unidade de predição e quantização de coeficiente 41 pode codificar de forma previsível e quantizar a sintaxe de predição, tal como coeficientes de filtro, de acordo com alguns aspectos dessa descrição. Seguindo a codificação por entropia pela unidade de codificação por entropia 46, os elementos de vídeo e sintaxe codificados podem ser transmitidos para outro dispositivo ou arquivados para transmissão ou recuperação posterior.
A unidade de quantização invertida 42 e à unidade de transformada invertida 44 aplicam a quantização invertida e transformação invertida, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência. O bloco residual reconstruído (rotulado “Bloco Residual Reconstruído” na figura 2) pode representar uma versão reconstruída do bloco residual fornecido para a unidade de transformada 38. O bloco residual reconstruído pode diferir do bloco residual gerado pelo somador 48 devido à perda de detalhes “causada pelas operações de quantização e quantização invertida. O somador 51 adiciona o bloco residual reconstruído ao bloco de predição de movimento compensado produzido pela unidade de predição 32 para produzir um bloco de vídeo reconstruído para armazenamento na memória 34. O bloco de vídeo reconstruído pode ser utilizado pela unidade de predição 32 como um bloco de referência que pode ser utilizado para codificar subsequentemente um bloco em um quadro de vídeo subsequente ou unidade codificada subsequente.
Como descrito acima, a unidade de predição 32 pode realizar a estimativa de movimento com precisão de pixel fracionado (ou sub-pixel). Quando a unidade de predição 32 utiliza a estimativa de movimento de pixel fracionado, a unidade de predição 32 pode gerar dados na resolução de sub-pixel (por exemplo, valores de sub-pixel ou pixel fracionado) utilizando operações de interpolação descritas nessa descrição.
Em outras palavras, as operações de interpolação são utilizada para computar valores em posições entre as posições de pixel inteiro.
As posições de sub-pixel localizadas a meio caminho entre as posições de pixel inteiro podem ser referidas como posições de meio pixel (half-pel), posições de sub-pixel localizadas a meio caminho entre uma posição de pixel inteiro e uma posição de meio pixel podem ser referidas como posições de um quarto de pixel (quarter-pel), posições de sub-pixel localizadas a meio caminho entre uma posição de pixel inteiro (ou posição de meio pixel) e uma posição de um quarto de pixel são referidas como posições de um oitavo de pixel (eighth-pel), e similares.
A figura 3 é um diagrama conceitual ilustrando as posições de pixel inteiro (ou pixel cheio) associadas com os dados de predição, e posições de sub-pixel (ou pixel fracionado) associadas com os dados de predição interpolados.
Na ilustração conceitual da figura 3, as diferentes caixas representam localizações ou posições de pixel e sub-pixel dentro de um quadro ou um bloco de um quadro. Letras maiúsculas (nas caixas com linhas sólidas) representam localizações de pixel inteiro, enquanto letras minúsculas (nas caixas com linhas pontilhadas) representam localizações de sub-pixel. Em particular, as localizações de pixel A1l-A6, B1-B6, Cc1-C6, DI-D6, E1-E6 e F1I-F6 representam um conjunto de 6 por 6 de localizações de pixel inteiro dentro de um quadro, fatia ou Outra unidade codificada. Localizações de pixel inteiro adicionais G3 e H3 também são ilustradas na figura 3 como sendo utilizadas com exemplos descritos posteriormente nessa descrição. As localizações de sub-pixel “a” a “o” representam quinze localizações de sub-pixel associadas com O pixel inteiro C3, por exemplo, entre as localizações de pixel inteiro C3, C4, D3 e D4. Localizações de sub-pixel similares podem existir para cada localização de pixel inteiro. As localizações de sub-pixel “a” àa “o” representam cada localização de pixel half-pel e quarter-pel associada com o pixel inteiro C3.
As localizações de pixel inteiro podem ser associadas com um elemento de sensor físico, tal como um fotodiodo quando os dados de vídeo foram originalmente gerados. O fotodiodo pode medir uma intensidade de uma fonte de luz no local do sensor e associar um valor de intensidade de pixel à localização do pixel inteiro. Novamente, cada localização de pixel inteiro pode ter um conjunto associado de quinze localizações de sub-pixel (ou possivelmente mais). O número de localizações de sub-pixel associado com as localizações de pixel inteiro pode depender da precisão desejada. No exemplo ilustrado na figura 3, a precisão desejada é a precisão de um quarto de pixel, caso no qual, cada uma das localizações de pixel inteiro corresponde a quinta posíções de sub-pixel
, 28/58 diferentes. Mais ou menos posições de sub-pixel podem ser associadas com cada localização de pixel inteiro com base na precisão desejada. Para a precisão de meio pixel, por exemplo, cada localização de pixel inteiro pode corresponder a três posições de sub-pixel. Como outro exemplo, cada uma das localizações de pixel inteiro pode corresponder a 63 posições de sub-pixel para a precisão de oito pixels. Cada localização de pixel pode definir um ou mais valores de píxel, por exemplo, um Ou mais valores de luminescência e crominância.
Y pode representar luminescência, € Cb e Cr podem representar dois valores diferentes de crominância de um espaço colorido YCbCr tridimensional. Cada localização de pixel pode na verdade definir três valores de pixel para um espaço colorido — tridimensional. As técnicas dessa descrição, no entanto, podem se referir a uma predição com relação a uma dimensão para fins de simplicidade. Até onde as técnicas são descritas com relação aos valores de pixel em uma dimensão, técnicas similares podem se estender à outras dimensões. Em alguns casos, os valores de crominância são subamostrados antes da predição, mas à predição ocorre tipicamente no espaço de luminescência sem qualquer subamostragem visto que à visão humana é mais sensível à intensidade de pixel do que à cor do pixel.
No exemplo da figura 3, as localizações de sub- pixel, também referidas como posições de sub-pixel, associas com o pixel inteiro “C3” são ilustradas para precisão de um quarto de pixel. As quinze posíções de sub- pixel associadas com o pixel c3 são rotuladas “a”, “b”, mem, Sadr, Sen, DE, Sgn, SRS, 9Z, 937, SRT, 919, mt, 07 e “o”. A maior parte das outras localizações fracionadas associadas com outros locais de pixel inteiro não são ilustradas por motivos de simplicidade. As localizações de sub-pixel “bb”, “h%, e “j” podem ser referidas como localizações de meio pixel e localizações de sub-pixel “a”, sor, mor, vem, DEM, Vqt, SiS, NET, PL%, NM, VN E no” podem ser referidas como localizações de um quarto de pixel. Adicionalmente, nessa descrição, as posições de sub- pixel orientadas ao longo do mesmo eixo geométrico horizontal que os pixels inteiros podem ser referidas como sub-pixels horizontais. Os sub-pixels “a”, “b” e “c” são exemplos ae sub-pixels horizontais. os sub-pixels orientados no mesmo eixo geométrico vertical que um pixel inteiro podem ser referidos como sub-pixels verticais. Os sub-pixels “d”, “h” e “II” são exemplos de sub-pixels verticais. Aspectos dessa descrição incluem à determinação de valores de pixel para os sub-pixels horizontais e sub- pixels verticais utilizando um filtro de interpolação linear único, e, dessa forma, a descrição pode se referir a sub-pixels horizontais e sub-pixels verticais coletivamente como sub-pixels IL. A figura 4 é um diagrama conceitual ilustrando os sub-pixels IL (a, b, Cc, d, h, 1) com relação à um grupo de pixels inteiros (C1-C6, A3, B3, C3, D3, E3 e FB).
Aspectos dessa descrição incluem à determinação de valores de pixel para sub-pixels não verticais e não horizontais, tal como sub-pixels “e”, “f”, “gr, “ii”, “ij”,
25. “K", “mn”, “nº, e “o” utilizando dois filtros de interpolação linear, um aplicado na direção vertical e um aplicado na direção norizontal. De acordo, essa descrição pode se referir a sub-pixels não verticais e não horizontais, tal como sub-pixels “e”, “£”, “9”, ni”, “3 “K”, “Mm”, “nº e “o” como sub-pixels 2L. A figura 5 é um diagrama conceitual ilustrando os sub-pixels 2L (e, f, 9, i, j, k, M, n, 0) com relação à um grupo de pixels inteiros (C1-C6, A3, B3, C3, D3, EB e F3).
A figura 6 é um diagrama conceitual ilustrando oito posições de suporte de pixel linear horizontal co-c7 com relação a uma posição de sub-pixel “bb”, com o sombreamento que ilustra a simetria de coeficiente. Nesse caso, a simetria de coeficiente significa que apenas quatro coeficientes de filtro são necessários para CO, Cl, c2 ec a fim de definir todo o conjunto de coeficientes para as posições de suporte de filtro CO-C7. CO é simétrico com C7, C1 é simétrico com C6, C2 é simétrico com C5 e C3 é simétrico com C4. Dessa forma, apenas quatro coeficientes precisam ser comunicados como parte de uma sequência de bits de vídeo codificada, ou armazenados pela unidade de filtro 39, a fim de definir um conjunto de oito coeficientes necessário para interpolar a posição de sub- pixel “b”“. Os coeficientes restantes podem ser gerados no decodificador com base nos coeficientes comunicados. Em particular, o decodificador pode ser programado para saber que a simetria se aplica, € a simetria pode definir como gerar quaisquer coeficientes restantes com base nos coeficientes comunicados.
A figura 7 é um diagrama conceitual ilustrando oito posições de suporte de pixel linear horizontal com relação a um sub-pixel, com o sombreamento que ilustra uma falta de qualquer simetria de coeficiente. Dessa forma, todos os oito coeficientes são necessários a fim de se definir o conjunto de coeficientes para o suporte de filtro com relação à posição de sub-pixel “a”. No entanto, a simetria de pixel significa que esses mesmos coeficientes com relação à posição de sub-pixel “a” podem ser utilizados também para derivar o suporte de filtro para à posição de sub-pixel “c”. Se os oito coeficientes para oO suporte de filtro com relação à subposição “a” forem visualizados como um conjunto unidimensional, então os oito coeficientes para o sub-pixzel “c” podem ser encontrados virando-se oO conjunto, de modo que o coeficiente para C7 quando da determinação de um valor para o sub-pixel “a” possa ser oO coeficiente para CO quando da determinação de um valor para o sub-pixel “cd”, o coeficiente para C6 possa ser " coeficiente para Cl, e assim por diante.
Dessa forma, se se utilizar a filtragem de interpolação adaptativa (AIF), por exemplo, no qual os coeficientes de filtro são computados no codificador de vídeo 22, apenas oito coeficientes precisam ser comunicados na sequência de bits para oO decodificador de vídeo 28 a fim de definir dois conjuntos diferentes de oito coeficientes necessários para se interpolar as posições de sub-pixel “a” e “Cc”. A figura 8 é um diagrama conceitual ilustrando oito posições de suporte de pixel linear vertical 63, A3, B3, C3, D3, E3, F3 e H3 com relação a um sub-pixel “h”, com o sombreamento que ilustra a simetria de coeficiente.
Nesse caso, à simetria de coeficiente significa que apenas quatro coeficientes de filtro são necessários para G3, A3, B3 e C3 a fim de definir todo o conjunto de coeficientes para as posições de suporte de filtro G3, A3, B3, C3, D3, E3, F3 e H3. G3 é simétrico com H3, A3 é simétrico com F3, B3 é simétrico com E3 e C3 é simétrico com D3. Devido à simetria, o coeficiente associado com G3 também pode ser utilizado com H3, o coeficiente associado com A3 também pode ser utilizado com F3, e assim por diante.
Dessa forma, se utilizando AIF, por exemplo, apenas quatro coeficientes precisam ser comunicados como parte de uma sequência de bits de vídeo codificada a fim de definir o conjunto de oito coeficientes necessários para se interpolar a posição de sub-pixel “h”. A figura 9 é um diagrama conceitual ilustrando oito posições de suporte de pixel lineares verticais com relação a um sub-pixel, com o sombreamento que ilustra uma falta de qualquer simetria de coeficiente. Dessa forma, todos os oito coeficientes são necessários a fim de se definir o conjunto de coeficientes para o suporte de filtro com relação à posição de sub-pixel “d”. Como notado acima, com relação à figura 7, no entanto, à simetria de pixel significa que esses mesmos coeficientes com relação à posição de sub-pixel “d” também podem ser utilizados para derivar o suporte de filtro para a posição de sub-pixel “1”. Dessa forma, se utilizando AIF, por exemplo, apenas oito coeficientes precisam ser comunicados na sequência de bits para o decodificador de vídeo 28 a fim de definir dois conjuntos diferentes de oito coeficientes necessários para se interpolar as posições de sub-pixel “d” e “1”.
A unidade de predição 32 do codificador de vídeo 40 pode determinar os valores de pixel para as localizações de sub-pixel “a” a “o” utilizando a filtragem por interpolação pela unidade de filtragem 39. Para posições de meio pixel “b” e “h“, cada coeficiente de filtro, também chamado de derivação, pode corresponder a uma posição de pixel inteiro na direção horizontal e vertical, respectivamente. Em particular, para a posição de meio pixel “b”, as derivações do filtro de 8 derivações correspondem a CO, Cl, C2, C3, C4, C5, C6 e C7. As posições de sub-pixel CO e C7 não são ilustradas na figura 3, mas podem ser observadas, por exemplo, nas figuras 6 e 7. Da mesma forma, para posição de meio pixel “h”, as derivações do filtro de 8 derivações correspondem a G3, A3, B3, C3, D3, E3, F3 e H3. Por exemplo, os valores de pixel para as posições de sub-pixel “W”“ e “h” podem ser computadas utilizando-se as equações (1) e (2):
. 33/58 b = ((-3*CO+12*C1-39*C2+158*C34+158*C4-39*C5 12*C6-3+*C7)+ 128)/256 (1) h = ((-3*G3+12*A3-39*B3+158*C3+158*D3-39*E3+12*F3-3*H3) + 128)/256 (2) Em algumas implementações, a divisão por 256 pode ser implementada por uma mudança direita dos 8 bits.
Como com a posição “b” para as posições de um quarto de pixel “a” e “c, às derivações do filtro de 8 derivações pode corresponder a CO; Cl, C2, C3, C4, C5, C6 e C7, mas diferentemente da posição “b”, os coeficientes de filtro devem ser não simétricos e diferentes dos para a posição “bp”. Por exemplo, os valores de pixel para as posições de sub-pixel “a” e “c” podem ser computados utilizando-se as equações (3) e (4): a = ((-3*CO0+12*C1-37*C2+229*C3+71+C4-21*+C5+6*C6-C7) + 128) /256 (3) Cc = ((-CO + G6*C1-21*C2+71*+C3+229*C4-37*CS+12*C6-3*C7) + 128)/256 (4) Em algumas implementações, a divisão por 256 pode ser implementada por uma mudança direita dos 8 bits.
Como com a posição “h”, para as posições de um quarto de pixel “d” e “1”, as derivações do filtro de 8 derivações podem corresponder a G3, A3, B3, C3, D3, E3, F3 e H3i, mas diferentemente da posição “h“, os coeficientes de filtro podem ser não simétricos e diferentes dos da posição “h”. Por exemplo, os valores de pixel para às posições de sub- pixel “d” e “1” podem ser computados utilizando-se as equações (5) e (6):
d= ((-3+63+12-A3-37*B3+229*C3+71*D3-21+*E3+6*F3-H3) + 128) /256 (5) 1 = ((=G3+6*A3-21*B3+71*C3+229*D3-37*E3+12*F3-3*H3) + 128/256 (6) Em algumas implementações, a divisão por 256 pode ser implementada por uma mudança direita dos 8 bits. Apesar de os coeficientes ilustrativos fornecidos para as equações (1) - (6) acima geralmente utilizarem os mesmo coeficientes para ambos os sub-pixels horizontais e sub-pixels verticais, não é necessário que os coeficientes para os sub-pixels horizontais e verticais sejam iguais, Por exemplo, as equações (1) e (2), (3) e (5), e (4) e (6), respectivamente possuem os mesmos coeficientes nos exemplos acima, mas em algumas implementações, podem, cada uma, ter coeficientes diferentes.
A unidade de predição 32 do codificador de vídeo 40 também pode determinar os valores de pixel para as localizações de sub-pixel 2L “e”, “ff”, “gm, “i”, “j”%, “k”, “nm”, “nº e “o” utilizando a filtragem por interpolação pela unidade de filtragem 39. Para as posições de sub-píxel 2L, uma filtragen horizontal é seguida por uma filtragem vertical, ou vice-versa. A primeira operação de filtragem determina valores intermediários, e a segunda operação de filtragem utiliza os valores intermediários para determinar um valor de pixel para a localização de sub-pixels. Por exemplo, para se determinar um valor para “j”, filtros horizontais de 6 derivações podem ser utilizados para determinar os valores intermediários para “aa”, “bb”, “bb”, “hh”, “ii” e “jj”, utilizando-se às seguintes equações:
aa = ((8*A1-40*A2+160*A3+160*A4-40*A5+8*A6) + 128)/256 (7)
bb = ((8*Bl-40*B2+160*B3+160*B4-40*B5+8*B6) + 128) /256 (8)
b = ((8YC1-40*C2+160*C3+160*C4-40*C5+B*C6) + 128) /256 (9)
hh = ((8*D1-40*D2+160*D3+160*D4-40*D5+8*D6) + 128) /256
(10)
ii = ((8*E1-40*E2+160*E3+160*E4-40*E5S+B8*E6) + 128) /256 (11)
jj = ((8*F1-40*F2+160-*F3+160*F4-40*F5S+8*F6) + 128) /256 (12)
Em algumas implementações, a divisão por 256 pode ser implementada por uma mudança direita de 8 bits.
A aplicação de um filtro vertical de 6 derivações para os valores intermediários acima, o valor para “j” pode ser determinado utilizando-se a equação a seguir:
j = ((Btaa-40*bb+160*c3+160*hh-40*ii+8*3j) + 128) /256 (13)
Em algumas implementações, a divisão por 256 pode ser implementada por uma mudança direita dos 8 bits.
Alternativamente, os filtros verticais de 6 derivações podem ser utilizados para encontrar valores intermediários para “cc”, “dd”, “hº, “ee”, “ff”, e “gg” e um filtro horizontal de 6 derivações pode ser aplicado aos valores intermediários para determinar um valor de pixel para “j”.
De forma similar ao procedimento descrito acima para o sub-pixel “j”, os valores de pixel para as localizações de sub-pixel “e”, “E”, “q”, “if, “KT, “mM”, “nº, e “o” podem ser determinados realizando-se, em primeiro lugar, uma operação de filtragem vertical para determinar os valores intermediários e então aplicação de um filtro horizontal de 6 derivações aos valores intermediários determinados pela filtragem vertical, ou pela realização, em primeiro lugar, da operação de filtragem horizontal para determinar os valores intermediários e então aplicação de um filtro vertical de 6 derivações aos valores intermediários determinados pela filtragem horizontal.
Enquanto ambos os filtros horizontal e vertical utilizados como exemplos, para o sub-pixel “j” utilizam coeficientes simétricos, um ou ambos os filtros horizontal ou vertical utilizados para determinar os valores de pixel para os outros valores de sub-pixel 2D podem não ser simétricos.
Por exemplo, em uma implementação ilustrativa, ambos os filtros horizontal e vertical para as localizações de sub-pixel “e”, “J%, “mM” e “o” podem utilizar coeficientes não simétricos.
As localizações de sub-pixel “f” e “n” podem utilizar um filtro horizontal com coeficientes simétricos e um filtro vertical com coeficientes não simétricos, e localizações de sub-pixel “ii” e “k” podem utilizar um filtro horizontal com coeficientes não simétricos e um filtro vertical com coeficientes de filtro simétricos.
Os filtros reais áplicados pela unidade de filtragem 38 para gerar dados interpolados nas localizações de sub-pixel podem ser submetidos a uma ampla variedade de implementações.
Como um exemplo, a unidade de predição 32 pode utilizar AIF, no qual os coeficientes de filtro são computados pelo codificador de vídeo 22 e transmitidos na sequência de bits para o decodificador de vídeo 28. Como outro exemplo, a unidade de predição 32 pode utilizar a filtragen —“comutada, no qual múltiplos filtros são conhecidos por àámbos o codificador de vídeo 22 e O decodificador de vídeo 28, e o filtro em particular a ser utilizado é sinalizado a partir do codificador de vídeo 22 para o decodificador de vídeo 28 na sequência de bits. Em um exemplo de filtragem comutada, o codificador de vídeo 22 e o decodificador de vídeo 28 podem armazenar quatro filtros singulares para cada posíção de sub-pixel, e o filtro em particular a ser utilizado para uma posição de sub-pixel pode ser sinalizado a partir do codificador de vídeo 22 para o decodificador de vídeo 28 utilizando-se dois bits.
A unidade de predição 32 pode utilizar filtros de interpolação separados na diréção horizontal e na direção vertical. Para as posições de sub-pixel 1L, a unidade de predição 32 (por exemplo, unidade MC 37 da unidade de predição 32) aplica apenas oOS filtros direcionais horizontais ou apenas os filtros direcionais verticais dependendo da localização de sub-pixel. Em um exemplo, os filtros direcionais horizontal e vertical compreendem filtros de 8 posições (ou 8 derivações). A unidade de predição 32 aplica os filtros direcionais horizontais às posições de sub-pixel “a”, “b”, e “c” com posições de pixel inteiro CO, Cl, C2, C3, C4, C5, C6 e C7 (CO a C7 não ilustrados na figura 3) como suporte de filtro e aplica os filtros direcionais verticais para as posições de sub-pixel “dr, “Rh” e “l” com posições de pixel inteiro G3, A3, B3, C3, D3, E3, F3 e H3 (ver figura 3) como suporte de filtro. Para as posições de sub-pixel restantes, isso é, posições de sub-pixel 2L, a unidade de predição 32 aplica a filtragen horizontal primeiro, seguida pela filtragem vertical ou a filtragem vertical primeiro, seguida pela filtragen horizontal. Os filtros horizontal e vertical utilizados para as posições de sub-pixel 2L podem, cada um, ser um filtro de 6 derivações.
Apesar de essa descrição utilizar filtros de 8 derivações e filtros de 6 derivações como exemplos, é importante se notar que outros comprimentos de filtro também podem ser utilizados e estão dentro do escopo dessa descrição. Por exemplo, filtros de 6 derivações podem ser utilizados para aàa determinação de valores para as localizações de sub-pixel 11L enquanto filtros de 4 derivações são utilizados para a determinação de valores para localizações de sub-pixel 21, ou filtros de 10 derivações podem ser utilizados para determinação de valores para localizações de sub-pixel 11L enquanto filtros de 8 derivações ou filtros de 6 derivações são utilizados para determinar valores para as localizações de sub-pixel 2L.
A figura 10 é um diagrama de blocos ilustrando um exemplo de um decodificador de vídeo, que pode decodificar uma sequência de vídeo que é codificada da forma descrita aqui. O decodificador de vídeo 60 é um exemplo de um dispositivo de computador de vídeo especializado ou equipamento referido aqui como “codificador”. o decodificador de vídeo 60 inclui uma unidade de decodificação por entropia 52 que decodifica por entropia à sequência de bits recebida para gerar OS coeficientes quantizados e os elementos de sintaxe de predição. Os elementos de sintaxe de predição incluem um modo de codificação, um ou mais vetores de movimento, informação identificando uma técnica de interpolação utilizada para gerar os dados de sub-pixel, coeficientes para uso na filtragen por interpolação, e/ou outras informações associadas com a geração do bloco de predição. Os elementos de sintaxe de predição, por exemplo, os coeficientes, são enviados para a unidade de predição
55. Se a predição for utilizada para codificar os coeficientes com relação aos coeficientes de um filtro fixo, ou com reláção um ao outro, a unidade de quantização invertida e predição de coeficiente 53 pode decodificar os elementos de sintaxe para definir os coeficientes reais. Além disso, se a quantização for aplicada a qualquer sintaxe de predição, a unidade de quantização invertida e predição de coeficiente 53 também pode remover tal quantização. Os coeficientes de filtro, por exemplo, podem ser codificados e quantizados de forma predita de acordo com essa descrição, e, nesse caso, a unidade de quantização invertida e predição de coeficiente 53 pode ser utilizada pelo decodificador de vídeo 60 para decodificar e dequantizar de forma predita tais coeficientes. A unidade de predição 55 pode gerar dados de predição com base nos elementos de sintaxe de predição e um ou mais blocos decodificados anteriormente que são armazenados na memória 62, quase que da mesma forma que a descrita em detalhes acima com relação à unidade de predição 32 do codificador de vídeo 50. Em particular, a unidade de predição 55 pode realizar uma OU mais das técnicas de filtragem por interpolação dessa descrição durante a compensação de movimento para gerar um bloco de predição com uma precisão particular, tal como a precisão de um quarto de pixel. Como tal, uma ou mais das técnicas dessa descrição podem ser utilizadas pelo decodificador de vídeo 60 na geração de um bloco de predição. A unidade de predição 55 pode incluir uma unidade de compensação de movimento que compreende filtros utilizados para técnicas
. 40/58 de interpolação e técnicas de filtragem tipo interpolação dessa descrição. O componente de compensação de movimento não é ilustrado na figura 10 por motivos de simplicidade e facilidade de ilustração.
A unidade de quantização invertida 56 quantiza de forma invertida, isso é, dequantiza,y os coeficientes quantizados. O processo de quantização invertida pode ser um processo definido pela decodificação H.264. À unidade de transformada invertida 58 aplica uma transformação invertida, por exemplo, uma DCT invertida ou um processo de transformação invertida conceitualmente similar, aos coeficientes de transformada a fim de produzir blocos residuais no domínio de pixel. O somador 64 soma o bloco residual com o bloco de predição correspondente gerado pela unidade de predição 55 para formar uma versão reconstruída do bloco original codificado pelo codificador de vídeo 50. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados a fim de remover os artefatos de bloqueio. Os blocos de vídeo decodificados são então armazenados no armazenador de quadro de referência 62, que fornece blocos de referência pára compensação de movimento subsequente e também produz vídeo decodificado para acionar o dispositivo de exibição (tal como o dispositivo 28 da figura 1).
O filtro de interpolação particular utilizado pela unidade de predição 55 pode ser determinado com base nos elementos de sintaxe de predição recebidos na sequência de bit de vídeo codificada a partir do dispositivo fonte 12, por exemplo. A figura 11 ilustra um método de determinação de filtros de interpolação com base nos elementos de sintaxe recebidos na sequência de bits. O método da figura 11 pode, por exemplo, ser utilizado para determinar os filtros para localizações de sub-pixel de P fatias.
O decodificador de vídeo 60 recebe uma sequência de bits codificada a partir do dispositivo fonte 12. A partir dos elementos de sintaxe de uma unidade de codificação, tal como elementos de sintaxe dentro de um cabeçalho de quadro ou cabeçalho de fatia, a unidade de predição 55 lê os bits identificando um conjunto de restrições (1101). O conjunto de restrições identifica para a unidade de predição 55 qual conjunto de índices de filtro utilizar para as localizações de sub-pixel dessa unidade de codificação.
Cada localização de sub-pizel pode ter seu próprio índice de filtro, ou um grupo de localizações de sub-pixel pode compartilhar um índice de filtro.
O índice de filtro associa um filtro particular a um padrão particular de bits.
Por exemplo, se se utilizar dois bits por localização e sub-pixel para sinalizar uma seleção de filtro, o padrão de bit 00 pode corresponder a um primeiro filtro, 01 a um segundo filtro, 10 à um terceiro filtro, e 11 a um quarto filtro.
Visto que cada localização de sub-pixel pode ter seu próprio índice de filtro singular e filtros singulares, o padrão de bit OO pode corresponder a um fíltro diferente para a localização de sub-pixel “j”, por exemplo, do que para à localização de sub-pixel “e”, por exemplo.
O exemplo da figura 11 utiliza três conjuntos de restrição.
Se o cabeçalho de uma unidade codificada contiver um sinal para à unidade de predição 55 que oO primeiro conjunto de restrição deve ser utilizado (1102), então para todos os valores de sub-pixel determinados para a unidade codificada, ambos os filtros horizontal e vertical para cada valor de sub-pixel podem ser sinalizados separadamente utilizando-se bits de sinalização vertical e bits de sinalização horizontal.
Dessa forma, se utilizar dois bits cada para os bits de sinalização vertical e bits de sinalização horizontal, os filtros para as posições de sub-pixel 11L são sinalizados utilizando-se dois bits no total, e os filtros para as posições 2L são sinalizados utilizando-se quatro bits no total, dois para os bits de sinalização vertical e dois para os bits de sinalização horizontal.
Para as localizações de sub-pixel além das localizações “a”, “WD”, e “c”, dois bits de sinalização vertical na sequência de bits podem identificar um dos quatro filtros verticais a serem utilizados (1103). Para localizações “a”, “b” e “c”, nenhum bit de sinalização vertical pode estar presente na sequência de bits, e nenhum filtro vertical pode ser selecionado. De acordo com essa descrição, os filtros verticais selecionados para as localizações de sub-pixel “d”, “h” e “l” podem ser mais longos do que os filtros verticais selecionados para “e”, mem, gr, Mir, 37, “kK%, “m%, “nº e “o”. Por exemplo, os filtros verticais selecionados para às localizações de sub- pixel “d”, “h” e “1” podem compreender filtros de 8 derivações, enquanto os filtros verticais selecionados para as localizações de sub-pixel “e”, “E”, “q”, “i”%, “3%, “K., “m” “nº, e “o” podem compreender filtros de 6 derivações.
Para as localizações de sub-pixel além das localizações “d”, “h”, e “l”, dois bits de sinalização horizontal podem identificar um dos quatro filtros horizontais a serem utilizados (1104). Para localizações “ad”, “h“, e “17, nenhum bit de sinalização horizontal pode estar presente na sequência de bits, e nenhum filtro horizontal pode ser selecionado. De acordo com essa descrição, os filtros horizontais selecionados para as localizações de sub-pixel “a”, “b”, e “c” podem ser maiores do que os filtros horizontais para “e”, “E”, “q”, “i”, “3% “k", “m%, “nº e “o”. Por exemplo, os filtros horizontais selecionados para as localizações de sub-pixel “a”, “e
“c” podem compreender filtros de 8 derivações, enquanto os filtros horizontais para as localizações de sub-pixel selecionadas “e”, “E”, “qm, “ii”, “j”, “k%, “mM”, “nº” e “o” podem compreender filtros de 6 derivações.
Uma vez que o filtro horizontal e o filtro vertical são selecionados, os filtros podem ser utilizados, como descrito acima, para determinar um valor para a localização do sub-pixel. Se um sub-pixel for localizado na localização “a”, “b”, ou “dc”, então um único filtro horizontal pode ser utilizado para determinar O valor de sub-pixel, como descrito acima com relação às equações 2, 5 e 6. Se o sub-pixel estiver localizado em “e”, “ff”, “9”, mia, nim, CR, m%, “Nº ou “o”, então ambos um filtro vertical e um filtro horizontal podem ser utilizados para determinar um valor para a localização de sub-pixel como descrito acima com relação às equações de 7 a 13.
Se o cabeçalho de uma unidade codificada contiver um sinal para a uúnidade de predição 55 de que O segundo conjunto de restrição deve ser utilizado (1107), então para todos os valores de sub-pixel determinados para a unidade codificada, ambos os filtros horizontal e vertical para cada valor de sub-pizel podem ser sinalizados juntos utilizando-se dois bits de sinalização por localização de sub-pixel. Com base nos bits de sinalização, um filtro ou par de filtros pode ser selecionado (1108). Para as localizações de sub-pixel “a”, “b”, ou “c”, os dois bits de sinalização podem ser utilizados para identificar um dos quatro filtros horizontais associados com essa localização de sub-pixel em particular, Para as localizações de sub- pixel “d”, “h” ou “1”, os dois bits de sinalização podem ser utilizados para identificar um dos quatro filtros verticais associados com essa localização de sub-pixel em particular. Para as localizações de sub-pixel em “e”, “E”,
mom, Din, jm, SK%, Cm%, “nº ou “07, os dois bits de sinalização podem ser utilizados para identificar um dos quatro pares de filtros horizontais e verticais.
Dessa forma, enquanto o conjunto de restrição 1 ativa dois bits de sinalização horizontal para identificar um dos quatro filtros horizontais e ativar dois bits de sinalização vertical para identificar um dos quatro filtros verticais para um total de dezesseis combinações horizontal-vertícal,
o conjunto de restrição 2 permite apenas quatro combinações horizontal-vertical.
O conjunto de restrição 2, no entanto, reduz o número total de bits necessários para se sinalizar uma seleção de filtro.
Com base no filtro ou combinação de filtros identificados pelos bits de sinalização, um valor para a localização de sub-pixel é determinado de forma similar à descrita acima (1109). Se o cabeçalho de uma unidade codificada contiver um sinal para a unidade de predição 55 de que o terceiro conjunto de restrição deve ser utilizado (1111), então para todos os valores de sub- pixel determinados para a unidade codificada, um filtro fixo ou combinação de filtros pode ser utilizado apenas com base na localização de sub-pixel e não com base em quaisquer bits de sinalização associados com à localização de sub-pixel (1112). Por exemplo, diferentemente dos conjuntos de restrição 1 e 2, no qual as localizações de sub-pixel “a”, “b” e “c” podem, cada uma, possuir quatro possíveis filtros horizontais correspondentes, com o conjunto de restrição 3, às localizações de sub-pixel “a”,
“p” e “Cc”, possuem, cada um; um filtro horizontal correspondente, Diferentemente dos conjuntos de restrição 1 e 2mo qual as localizações de sub-pixel “d”, “h” e so podem ter, cada um, quatro possíveis filtros verticais correspondentes, com o conjunto de restrição 3, as localizações de sub-pixel “d”, “h” ou “1”, possuem cada uma um filtro vertical correspondente.
Diferentemente dos conjuntos de restrição 1 e 2, no qual as localizações de sub-pixel “em, “Em, “qm, “in, “3%, “K%, “m%, “nº ou “O”, cada uma possui 16 e 4 possíveis combinações de fíltro horizontal-vertical respectivamente, com o conjunto de restrição 3, as localizações de sub-pixel “e”, sem, “q, mir, 37, “k%, “mM”, “nº, ou “o”, cada uma possui uma única combinação de filtro horizontal-vertical, Enquanto o conjunto de restrição 3 pode reduzir os filtros disponíveis, o conjunto de restrição 3 pode também reduzir o número total de bits necessários para sinalizar uma seleção de filtro.
A figura 12 ilustra um método de determinação de filtros de interpolação com base em elementos de sintaxe recebidos na sequência de bits, O método da figura 12 pode, por exemplo, ser utilizados para determinar filtros para as localizações de sub-pixel das fatias B.
Diferentemente da figura 11 que inclui três conjuntos de restrição para as fatias P, o exemplo da figura 12 inclui apenas dois conjuntos de restrições.
O conjunto de restrição 1, como descrito com relação à figura 11, pode ser excluído quando da utilização de B fatias a fim de aperfeiçoar a eficiência de codificação.
As B fatias são tipicamente codificadas com menos bits do que as P fatias, A utilização dos mesmos conjuntos de restrição para fatias P e B, pode resultar na utilização do mesmo número de bits para sinalizar à escolha de filtros de interpolação para cada posição de pixel fracionado, mas o overhead de sinalização dos filtros de interpolação, como um percentual dos bits gerais, pode ser muito maior para as fatias B do que para as fatias P.
Devido a esse overhead maior, no caso de fatias B, a troca de distorção de taxa pode não ser tão favorável quanto com as fatias P.
Portanto, em algumas implementações, O conjunto de restrição 1 pode não ser utilizado para as fatias B.
Se o cabeçalho de uma unidade codificada contiver um sinal para a unidade de predição 55 que O segundo conjunto de restrição deve ser utilizado (1207) para uma fatia B, então para todos os valores de sub-pixel determinados para a unidade codificada, ambos os filtros horizontal e vertical para cada valor de sub-pixel podem ser sinalizados juntos utilizando dois bits de sinalização por localização de sub-pixel.
Com base nos bits de sinalização, um filtro ou par de filtros pode ser selecionado (1208). Para as localizações de sub-pixel “a”, “bp”, ou “cd”, os dois bits de sinalização podem ser utilizados para identificar um dos quatro filtros horizontais associados com essa localização de sub-pixel em particular.
Para as localizações de sub-pixel “d”, “nº”, ou v1%, os dois bits de sinalização podem ser utilizados para identificar um dos quatro filtros verticais associados com essa localização de sub-pixel em particular.
Para as localizações de sub-pixel em “e”, “E”, “q”, “i”, “3% “K”, “mm”, “nº, ou “o”, os dois bits de sinalização podem ser utilizados para identificar um dos quatro pares de filtros horizontal e vertical.
Com base no filtro ou combinação de filtros identificados pelos bits de sinalização, um valor para a localização de sub-pixel é determinada de forma similar à descrita acima (1209). Se o cabeçalho de uma unidade codificada contiver um sinal para a unidade de predição 55 de que o terceiro conjunto de restrição deve ser utilizado (1211), então para todos os valores de sub- pixel determinados para a unidade codificada, um filtro fixo ou uma combinação de filtros pode ser utilizada apenas com base na localização do sub-pixel e não com base em quaisquer bits de sinalização associados com à localização de sub-pixel (1212). Por exemplo, diferentemente dos conjuntos de restrição 2 no qual as localizações de sub- pixel “a”, “b” e “c” podem, cada uma, ter quatro possíveis filtros horizontais correspondentes, com o conjunto de restrição 3, às localizações de sub-pixel “a”, “b” e “e”, possuem, cada uma, um filtro horizontal correspondente.
Diferentemente do conjunto de restrição 2 no qual localizações de sub-pixel “d”, “h”, e “1” podem, cada uma, ter quatro possíveis filtros verticais correspondentes, com o conjunto de restrição 3, as localizações de sub-pixel “d”, “h”, ou “l” possuem, cada uma, um filtro vertical correspondente.
Diferentemente do conjunto de restrição 2 no qual as localizações de sub-pixel “e”, “f”, Sor, “1”, “3”, “kk”, “m%, “n”, ou “o” possuem, cada uma, 4 possíveis combinações de filtro horizontal-vertical respectivamente, com o conjunto de restrição 3, as localizações de sub-pixel mem, nem, mgn, Dim, N3%, SkK%, “mé, Sn” ou “o”, possuem, cada um, uma única combinação de filtro horizontal- vertical.
Enquanto o conjunto de restrição 3 pode reduzir os filtros disponíveis em comparação com 5 conjunto de restrição 2, o mesmo também reduz o número total de bits necessários para se sinalizar uma seleção de filtro.
A figura 13 é um fluxograma ilustrando um método de determinação de filtros de interpolação com base em elementos de sintaxe recebidos nã sequência de bits, O método da figura 13 é uma modificação do método descrito para as fatias P com relação à figura 11. Se o cabeçalho de uma unidade codificada contiver um sinal para a unidade de predição 55 de que o primeiro conjunto de restrição pode ser utilizado (1302), então para todos os valores de sub- pixel determinados para a unidade codificada, um flag também pode ser transmitido na sequência de bits.
O flag é um sinal de 1 bit indicando que a unidade de predição 55 utilize a mesma seleção de filtro previamente utilizada para essa localização de sub-pixel ou utilize um filtro diferente. Se o flag indicar que o filtro anterior deve ser utilizado (1314, sim) para uma localização de sub-pixel em particular, então o filtro horizontal, o filtro vertical, ou uma combinação dos filtros horizontal e vertical utilizada mais recentemente para essa localização de sub- pixel podem ser utilizados novamente para determinar um valor para a localização de sub-pixel em particular (1315). Se o flag indicar que O mesmo filtro deve ser utilizado, então dois ou quatro bits, do contrário utilizados para sinalizar os filtros horizontal e/ou vertical, não precisam ser transmitidos, resultando em uma redução nos bits transmitidos. Se, no entanto, o flag indicar que um filtro diferente deve ser utilizado (1314, não) para a localização de sub-pixel em particular, então ambos os filtros horizontal e vertical para a localização de sub-pixel podem ser sinalizados separadamente, como descrito acima com relação à figura 11, utilizando bits de sinalização vertical e bits de sinalização horizontal.
Para as localizações de sub-pixel além das localizações “a”, “b”, e “Cc”, dois bits de sinalização vertical na sequência de bits podem identificar um dos quatro filtros verticais a serem utilizados (1303). Para as localizações “a”, “lb”, e “c”, nenhum bit de sinalização vertical pode estar presente na sequência de bits, e nenhum filtro vertical pode ser selecionado. De acordo com essa descrição, os filtros verticais selecionados para as localizações de sub-pixel “ad”, “h“, e “1” podem ser maiores do que os filtros verticais selecionados para “e”, “f”, vom, Si, 93%, SRT, Sm”, Vn%, e “o”. Por exemplo, os filtros verticais selecionados para as localizações de sub- pixel “d”, “h” e “1” podem compreender filtros de 8 derivações, enquanto os filtros verticais selecionados para as localizações de sub-pixel “e”, “f”, “q”, “im, “ij”, “K”, “mm”, “nº”, e “o” podem compreender filtros de 6 derivações.
Para as localizações de sub-pixel além das localizações “d”, “h” e “l”, dois bits de sinalização horizontal podem identificar um dos quatro filtros horizontais a serem utilizados (1304). Para localizações “d”, “h“” e “1”, nenhum bit de sinalização horizontal pode estar presente na sequência de bits, e nenhum filtro horizontal é selecionado.
De acordo com essa descrição, os filtros horizontais selecionados para as localizações de sub-pixel “a”, “b”, e “c” podem ser mais longos do que os filtros horizontais selecionados para “e”, “f”, “q”, “i”, “j”, “ER, Cm%, “nº e “o”. Por exemplo, os filtros horizontais selecionados para as localizações de sub-pixel “a”, “b”, e “c” podem compreender filtros de 8 derivações, enquanto os filtros horizontais selecionados para as localizações de sub-pixel “e”, “f”, “q, “if, “3%, “K, “m”, “nº” e “o” podem compreender filtros de 6 derivações.
Uma vez que O filtro horizontal e o filtro vertical são selecionados, os filtros podem ser aplicados, como descrito acima, para determinar um valor para a localização de sub-pixel.
Se um sub-pixel estiver localizado na localização “a”, “b” ou “c”, então um único filtro horizontal pode ser utilizado para determinar oO valor do sub-pixel.
Se o sub-pixel estiver localizado em “q”, “h” ou “1”, então um único filtro vertical pode ser utilizado para determinar o valor do sub-pixel.
Se o sub- pixel estiver localizado em “e”, “ff”, “qm, “i”, “3%, “K, “mM”, “nº” ou “o”, então ambos um filtro vertical e um filtro horizontal podem ser utilizados para determinar um valor para a localização de sub-pixel.
Se o cabeçalho de uma unidade codificada contiver um sinal para à unidade de predição 55 de que oO terceiro conjunto de restrição pode ser utilizado (1311), então para todos os valores de sub-pixel determinados para a unidade codificada, um filtro fixo ou uma combinação de filtros pode ser selecionado com base apenas na localização de sub- pixel e não com base em quaisquer bits de sinalização associados com a localização de Ssub-pixel (1312). Por exemplo, diferentemente dos conjuntos de restrição 1 e 2 no qual os locais de sub-pixel “a”, “b” e “c” podem, cada um, possuir quatro possíveis filtros horizontais correspondentes, com o conjunto de restrição 3, as localizações de sub-pixel “a”, “b” e “Cc”, possuem, cada uma, um filtro horizontal correspondente.
Diferentemente dos conjuntos de restrição 1 e 2 no qual as localizações de sub-píxel “d”, “hn”, e “Il” pode, cada uma, ter quatro possíveis filtros verticais correspondentes, com o conjunto de restrição 3, as localizações de sub-pixel “d”, “h” ou “1”, possuem, cada uma, um filtro vertical correspondente, Diferentemente do conjunto de restrição 1 no qual as localizações de sub-pixel “e”, “E”, “qm, “ii”, “3%, “kK", “mº, “nº ou “o”, possuem, cada uma, 16 e 4 possíveis combinações de filtro horizontal-vertical respectivamente, com o conjunto de restrição 3, as localizações de sub-pixel 25º vem, vem, qn, Sin, nn, CR, Cm, Sn” ou “o”, possuem, cada uma, uma combinação única de filtro horizontal- vertical.
Enquanto o conjunto de restrição 3 pode reduzir os filtros disponíveis, o mesmo também reduz o número total de bits necessários para se sinalizar uma seleção de fíltro.
A figura 14 é um fluxograma ilustrando um método e determinação dos filtros de interpolação com base nos elementos de sintaxe recebidos na sequência de bits.
O método da figura 14 pode compreender uma modificação do método descrito para as fatias B com relação à figura 12. Se o cabeçalho de uma unidade codificada contiver um sinal para a unidade de predição 55 de que o segundo conjunto de restrição pode ser utilizado (1407), então para todos os valores de sub-pixel determinados para a unidade codificada, um flag pode ser transmitido na sequência de bits. O flag é um sinal de 1 bit informando à unidade de predição 55 que utilize à mesma seleção de filtro previamente utilizada para essa localização de sub-pixel ou que utilize um filtro diferente. Se o flag indicar que o filtro anterior deve ser utilizado (1414, sim) para uma localização de sub-pixel em particular, então o filtro horizontal, o filtro vertical, ou a combinação de filtros horizontal e vertical utilizados mais recentemente para essa localização de sub-pixel em particular podem ser utilizados novamente para determinar um valor para a localização de sub-pixel em particular (1415). Se, no entanto, o flag indicar que um filtro diferente deve ser utilizado (1414, não) para a localização de sub-pixel em particular, então ambos os filtros horizontal e vertical para a localização de sub-pixel podem ser sinalizados, como descrito acima com relação à figura 12, utilizando bits de sinalização.
Com base nos bits de sinalização, um filtro ou par de filtros pode ser selecionado (1408). Para localizações de sub-pixel “a”, “b”, ou “c”, os dois bits de sinalização podem ser utilizados para identificar um dos quatro filtros horizontais associados com essa localização de sub-pixel em particular, Para as localizações de sub- pixel “d”, “h” ou “l”, os dois bits de sinalização podem ser utilizados para identificar um dos quatro filtros verticais associados com essa localização de sub-pixel em particular.
Para as localizações de sub-pixel em “e”, “f”, von, Nim, NM, SNK, “m%, “nº ou “o”, os dois bits de sinalização podem ser utilizados para identificar um dos quatro pares de filtros horizóntal e vertical.
Com base no filtro ou na combinação de filtros identificada pelos bits de sinalização, um valor para a localização de sub-pixels é determinada de forma similar à descrita acima (1409). Se o cabeçalho de uma unidade codificada contiver um sinal para a unidade de predição 55 de que o terceiro conjunto de restrição pode ser utilizado (1411), então para todos os valores de sub-pixel determinados para a unidade codificada, um filtro fixo ou uma combinação de filtros pode ser utilizado apenas com base na localização do sub- pixel e não com base em qualquer bit de sinalização associado com a localização de sub-pixel (1412). Por exemplo, diferentemente dos conjuntos de restrição 2 no qual as localizações de sub-pixel “a”, “b” e “c” podem, cada uma, possuir quaro possíveis filtros horizontais correspondentes, com o conjunto de restrição 3, as localizações de sub-pixel “a”, “b” e “c”, possuem, cada uma, um filtro horizontal correspondente.
Diferentemente do conjunto de restrição 2 no qual às localizações de sub- pixel “d”, “hn” e “1” podem possuir, cada uma, quatro possíveis filtros verticais correspondentes, com o conjunto de restrição 3, as localizações de sub-pixel “d”, “h“ ou “1”, possuem, cada uma, um filtro vertical correspondente.
Diferentemente do conjunto de restrição 2 no qual as localizações de sub-pixel “e”, “f”, “qm, “i%, “3%, “K”, “mm”, “nº” ou “o”, possuem cada uma 4 possíveis combinações de filtro horizontal-vertical, respectivamente, com oO conjunto de restrição 3, as localizações de sub-pixel “e”, sem, vm, Ni, 93%, SK%, “Mm, “nº, ou “o”, possuem, cada uma, uma única combinação de filtro horizontal-vertical.
Enquanto o conjunto de restrição 3 deve reduzir os filtros disponíveis em comparação com o conjunto de restrição 2, o mesmo também reduz o número total de bits necessários para sinalizar uma seleção de filtro.
De acordo com essa descrição, nos exemplos das figuras 11, 12, 13 e 14, os filtros horizontais selecionados para as localizações de sub-pixel “a”, “bb” e “e” e os filtros verticais selecionados — para as localizações de sub-pixel “d”, “h” e “1”, podem ser mais longos do que os filtros horizontal e vertical selecionados para “em, “E, Q%, Sin, Cjn, ck, Cmé, nº ou OO. Adicionalmente, apesar de os exemplos das figuras 11, 12, 13 e 14 geralmente discutindo a utilização de dois bits de sinalização para selecionar um dos quatro filtros, mais ou menos bits de sinalização podem ser utilizados também. Por exemplo, um bit de sinalização pode ser utilizados para selecionar um dos dois filtros, ou três bits de sinalização podem ser utilizados para selecionar um dos oito possíveis filtros.
Enquanto essa descrição descreveu de forma geral as técnicas de utilização de filtros mais longos para posições 11 e filtros mais curtos para posições 21 com base na precisão de vetor de movimento de um quarto de pixel, as técnicas dessa descrição também podem ser aplicadas à outras precisões de vetor de movimento tal como precisão de um oitavo de pixel e meio pixel. Por exemplo, quando da utilização da precisão de um oitavo de pixel, pode haver 7 posições de pixel horizontal e 7 posições de pixel verticais (isso é, 14 posições 11) e 40 posições 2L.
Adicionalmente, em algumas implementações, a precisão de vetor de movimento pode ser adaptativamente comutada durante a codificação, tal como entre a precisão de um quarto de pixel para a precisão de um oitavo de pixel.
Em tal implementação, as técnicas da presente descrição podem ser aplicadas à ambas as localizações de um quarto de pixel e um oitavo de pixel.
Em outras implementações, as técnicas dessa descrição podem, por exemplo, ser aplicadas apenas às localizações de um quarto de pixel, enquanto diferentes técnicas de seleção de filtro, tal como a utilização de filtros não comutáveis fixos, são utilizadas em localizações de um oitavo de pixel.
No exemplo, no qual os filtros não comutáveis fixos são utilizados para localizações de um oitavo de pixel, uma escolha de filtro pode ser sinalizada para o decodificador para as localizações de um quarto de pixel, mas não para as posições de um oitavo de pixel.
Adicionalmente, apesar de os exemplos 11 a l4 e outros exemplos nessa descrição terem descrito geralmente à utilização de filtros separados para posições 2L, é contemplado que em algumas implementações os bits de sinalização para às posições 2L podem ser utilizados para identificar um ou mais filtros não separáveis.
Como um exemplo, os dois bits de sinalização descritos acima para o conjunto de restrição 2 podem ser utilizados para selecionar entre quatro filtros que incluem dois filtros não separáveis e dois filtros separáveis.
A figura 15 é um fluxograma ilustrando um método que implementa os aspectos dessa descrição.
As técnicas da figura 15 podemy por exemplo, ser realizadas pelos dispositivos ilustrados nas figuras 1, 2 e 10, O método da figura 15 será descrito a partir da perspectiva da figura 2 apesar de outros dispositivos, incluíndo o codificador de vídeo 22 e o decodificador de vídeo 28 da figura 1 e o decodificador de vídeo 60 da figura 10 poderem também realizar aspectos do método da figura 15. A unidade MC 37 da unidade de predição 32 obtém um bloco de pixels da memória 34 que inclui valores de pixel inteiro correspondentes às posições de pixel inteiro dentro do bloco de pixels (1501). A unidade de filtragem 39º computa os valores de sub-pixel correspondentes às posições de sub- pixel associadas com oc bloco de pixels.
A unidade de filtragem 398 computa um primeiro valor de sub-pixel para uma posição de sub-pixel em um eixo geométrico vertical comum com as posições de pixel inteiro ou um eixo geométrico horizontal comum com às posições de pixel inteiro (ver, por exemplo, as posições de sub-pixel 1L da figura 4), pela aplicação de um primeiro filtro de interpolação definindo um primeiro conjunto unidimensional de coeficientes de filtro correspondentes às posições de suporte de filtro (1502). O primeiro filtro de interpolação pode, por exemplo, compreender um filtro de 8 derivações, no qual as posições de suporte de filtro para o primeiro filtro de interpolação correspondem a um conjunto de posições de pixel inteiro.
A unidade de filtragem 39 computa um segundo valor de sub-pixel pela aplicação de um segundo filtro de interpolação definindo um segundo conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro horizontal e aplicando um terceiro filtro de interpolação definindo um terceiro conjunto unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro vertical (1503). O segundo valor de sub-pixel corresponde à uma posição de sub-pixel não em um eixo geométrico vertical comum com as posições de pixel inteiro e não em um eixo geométrico horizontal comum com as posições de pixel inteiro (ver, por exemplo, as posições de sub-pixel 2L da figura 5). Os segundo e terceiro filtros de interpolação podem, por exemplo, ser filtros de 6 derivações.
De acordo com um aspecto dessa descrição, o primeiro conjunto unidimensional inclui mais coeficientes de filtro do que O segundo conjunto unidimensional e mais coeficientes de filtro do que o terceiro conjunto unidimensional.
Com base nos valores de sub-pixel, tal como o primeiro valor de sub-pixel e o segundo valor de sub-pixel, a unidade MC 37 gera um bloco de predição (1504). Em particular, a unidade MC 37 pode gerar e enviar, como parte de um processo de codificação de vídeo, um bloco de predição interpolado com valores de sub-pixel interpolados.
a unidade de predição 32 também pode enviar com o bloco de predição, bits de sinalização que identificam um filtro de interpolação em particular para ser utilizado para uma posição de sub-pixel (1505). Os bits de sinalização podem identificar separadamente o segundo filtro de interpolação e o terceiro filtro de interpolação ou identificar uma combinação de segundo filtro de interpolação e o terceiro filtro de interpolação. A unidade de predição 32 pode enviar também um flag que indica que um filtro de interpolação a ser utilizado para uma posição de sub-pixel é o filtro de interpolação previamente utilizado para a posição de sub-pixel (1506).
As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou equipamentos, incluindo um equipamento sem fio, e circuito integrado (IC) ou um conjunto de ICs (isso é, um conjunto de chip). Quaisquer componentes, módulos ou unidades foram descritos fornecidos para enfatizar os aspectos funcionais e não exigem necessariamente a realização por diferentes unidades de hardware.
De acordo, as técnicas descritas aqui podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em hardware, quaisquer características descritas como módulos, unidades ou componentes podem ser implementadas juntas em um dispositivo lógico integrado ou separadamente como dispositivos lógicos discretos, porém interoperacionais.
Se implementadas em software, as técnicas podem ser realizadas pelo menos em parte por um meio legível por computador compreendendo instruções que, quando executadas em um processador, realizam um ou mais dos métodos descritos acima.
O meio legível por computador pode compreender um meio de armazenamento legível por computador não transitório e pode formar parte de um produto de programa de computador, que pode incluir materiais de empacotamento, O meio de armazenamento legível por computador pode compreender memória de acesso randômico (RAM), tal como memória de acesos randômico dinâmica sincronizada (SDRAM), memória de leitura apenas (ROM), memória de acesso randômico não volátil (NVRAM), memória FLASH, mídia de armazenamento de dados magnética ou ótica, e similares.
As técnicas, adicionalmente, ou alternativamente, podem ser realizadas pelo menos em parte por um meio de comunicação legível por computador que porta ou comunica código na forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador.
O código pode ser executado por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, um circuito integrado específico de aplicativo (ASIC), conjunto lógico programável em campo (FPGA), ou outro conjunto de circuito lógico discreto ou integrado equivalente.
De acordo, o termo “processador” como | 30 utilizado aqui pode se referir à qualquer uma dentre uma estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui.
Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de módulos de software dedicados ou módulos de hardware configurados para codificar Ee decodificar ou incorporados em um codec de vídeo combinado. Além disso, as técnicas podem ser totalmente implementadas emumounmais circuitos ou elementos lógicos.
Vários aspectos da descrição foram descritos, Esses e outros aspectos estádo dentro do escopo das reivindicações a seguir.

Claims (15)

REIVINDICAÇÕES
1. Método para predição de sinais de vídeo, compreendendo: - obter um bloco de pixels, no qual o bloco de pixels inclui valores de pixel inteiro correspondentes às posições de pixel inteiro dentro do bloco de pixels; - computar um primeiro valor de sub-pixel para uma primeira posição de sub-pixel do bloco de pixels, no qual computar o primeiro valor de sub-pixel compreende aplicar um primeiro filtro de interpolação definindo uma primeira matriz unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro; - computar um segundo valor de sub-pixel para uma segunda posição de sub-pixel do bloco de pixels, no qual computar o segundo valor de sub-pixel compreende aplicar um segundo filtro de interpolação definindo uma segunda matriz unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro horizontal e aplicação de um terceiro filtro de interpolação definindo uma terceira matriz unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro vertical; no qual: - a primeira matriz unidimensional compreende mais coeficientes de filtro que a segunda matriz unidimensional; - a primeira matriz unidimensional compreende mais coeficientes de filtro que a terceira matriz unidimensional; e - gerar um bloco de predição com base em pelo menos um primeiro valor de sub-pixel e um segundo valor de sub-pixel; e em que:
- a primeira posição de sub-pixel está em um eixo vertical comum com posições de pixel inteiro ou em um eixo horizontal comum com posições de pixel inteiro; e - a segunda posição de sub-pixel não está em um eixo vertical comum com posições de pixel inteiro e nem em um eixo horizontal comum com posições de pixel inteiro.
2. Método, de acordo com a reivindicação 1, no qual: - o primeiro filtro de interpolação compreende um filtro de 8 derivações; - o segundo filtro de interpolação compreende um filtro de 6 derivações; e - o terceiro filtro de interpolação compreende um filtro de 6 derivações.
3. Método, de acordo com a reivindicação 1, no qual as posições de suporte de filtro para o primeiro filtro de interpolação correspondem a um conjunto de posições de pixel inteiro.
4, Método, de acordo com a reivindicação 1, no qual o método faz parte de um processo de codificação de vídeo, o método compreendendo adicionalmente: - codificar bits de sinalização, no qual os bits de sinalização identificam um filtro de interpolação particular a ser utilizado para uma posição de sub-pixel.
5. Método, de acordo com a reivindicação 4, no qual os bits de sinalização identificam separadamente o segundo filtro de interpolação e o terceiro filtro de interpolação.
6. Método, de acordo com a reivindicação 4, no qual os bits de sinalização identificam uma combinação compreendendo o segundo filtro de interpolação e o terceiro filtro de interpolação.
7. Método, de acordo com a reivindicação 1, no qual o método faz parte de um processo de codificação de vídeo, o método compreendendo adicionalmente: - codificar um flag, no qual o flag indica que um filtro de interpolação a ser utilizado para uma posição de sub-pixel é o filtro de interpolação previamente utilizado para a posição de sub-pixel.
8. Equipamento para predição de sinais de vídeo, compreendendo: - mecanismo para obter um bloco de pixels, no qual o bloco de pixels inclui valores de pixel inteiro correspondendo às posições de pixel inteiro dentro do bloco de pixels; - mecanismo para computar um primeiro valor de sub-pixel para uma primeira posição de sub-pixel do bloco de pixels, em que computar o primeiro valor de sub-pixel compreende aplicar um primeiro filtro de interpolação definindo uma primeira matriz unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro; - mecanismo para computar um segundo valor de sub-pixel para uma segunda posição de sub-pixel do bloco de pixels, em que computar o segundo valor de sub-pixel compreende aplicar um segundo filtro de interpolação definindo uma segunda matriz unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro horizontal e aplicando um terceiro filtro de interpolação definindo uma terceira matriz unidimensional de coeficientes de filtro correspondendo às posições de suporte de filtro vertical, em que: - a primeira matriz unidimensional compreende mais coeficientes de filtro que a segunda matriz unidimensional;
- a primeira matriz unidimensional compreende mais coeficientes de filtro que a terceira matriz unidirecional; e - mecanismo para gerar um bloco de predição com base pelo menos no primeiro valor de sub-pixel e no segundo valor de sub-pixel, em que: - a primeira posição de sub-pixel está em um eixo vertical comum com posições de pixel inteiro ou em um eixo horizontal comum com posições de pixel inteiro; e - a segunda posição de sub-pixel não está em um eixo vertical comum com posições de pixel inteiro e nem em um eixo horizontal comum com posições de pixel inteiro.
9. Equipamento, de acordo com a reivindicação 8, no qual: - o primeiro filtro de interpolação compreende um filtro de 8 derivações; - o segundo filtro de interpolação compreende um filtro de 6 derivações; e - o terceiro filtro de interpolação compreende um filtro de 6 derivações.
10. Equipamento, de acordo com a reivindicação 9, no qual as posições de suporte de filtro para o primeiro filtro de interpolação correspondem a um conjunto de posições de pixel inteiro.
11. Equipamento, de acordo com a reivindicação 8, compreendendo adicionalmente: - mecanismo para codificar bits de sinalização, no qual os bits de sinalização identificam um filtro de interpolação particular a ser utilizado para uma posição de sub-pixel.
12. Equipamento, de acordo com a reivindicação 11, no qual os bits de sinalização identificam separadamente o segundo filtro de interpolação e o terceiro filtro de interpolação.
13. Equipamento, de acordo com a reivindicação 11, no qual os bits de sinalização identificam uma combinação compreendendo o segundo filtro de interpolação e o terceiro filtro de interpolação.
14. Equipamento, de acordo com a reivindicação 8, compreendendo adicionalmente: - mecanismo para codificar um flag, em que o flag indica que um filtro de interpolação a ser utilizado para uma posição de sub-pixel é o filtro de interpolação previamente utilizado para a posição de sub-pixel.
15. Meio legível por computador armazenando tangivelmente uma ou mais instruções, que quando executadas por um ou mais processadores executam o método tal como definido por qualquer uma das reivindicações 1 a 7.
BR112012026153-3A 2010-04-12 2011-04-11 filtros de derivação mista. BR112012026153A2 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US32325010P 2010-04-12 2010-04-12
US61/323,250 2010-04-12
US35074310P 2010-06-02 2010-06-02
US61/350,743 2010-06-02
US36118810P 2010-07-02 2010-07-02
US61/361,188 2010-07-02
US13/012,583 2011-01-24
US13/012,583 US9219921B2 (en) 2010-04-12 2011-01-24 Mixed tap filters
PCT/US2011/031998 WO2011130187A1 (en) 2010-04-12 2011-04-11 Mixed tap filters

Publications (1)

Publication Number Publication Date
BR112012026153A2 true BR112012026153A2 (pt) 2020-08-18

Family

ID=44760908

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112012026153-3A BR112012026153A2 (pt) 2010-04-12 2011-04-11 filtros de derivação mista.

Country Status (17)

Country Link
US (1) US9219921B2 (pt)
EP (2) EP4060989A1 (pt)
JP (2) JP5607236B2 (pt)
KR (1) KR101469338B1 (pt)
CN (1) CN102835108B (pt)
AU (1) AU2011240766B2 (pt)
BR (1) BR112012026153A2 (pt)
CA (1) CA2795204C (pt)
HK (1) HK1177078A1 (pt)
IL (1) IL222338A (pt)
MX (1) MX2012011882A (pt)
MY (1) MY154574A (pt)
RU (1) RU2543953C2 (pt)
SG (1) SG184313A1 (pt)
TW (1) TWI437888B (pt)
WO (1) WO2011130187A1 (pt)
ZA (1) ZA201208137B (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120134425A1 (en) * 2010-11-29 2012-05-31 Faouzi Kossentini Method and System for Adaptive Interpolation in Digital Video Coding
US9172972B2 (en) 2011-01-05 2015-10-27 Qualcomm Incorporated Low complexity interpolation filtering with adaptive tap size
US20120230407A1 (en) 2011-03-11 2012-09-13 General Instrument Corporation Interpolation Filter Selection Using Prediction Index
US9264725B2 (en) 2011-06-24 2016-02-16 Google Inc. Selection of phase offsets for interpolation filters for motion compensation
CN103650506B (zh) 2011-07-01 2017-08-15 谷歌技术控股有限责任公司 用于时间预测的联合亚像素插值滤波器
US20140078394A1 (en) * 2012-09-17 2014-03-20 General Instrument Corporation Selective use of chroma interpolation filters in luma interpolation process
US11122262B2 (en) 2014-06-27 2021-09-14 Samsung Electronics Co., Ltd. System and method for motion compensation in video coding
US10009622B1 (en) 2015-12-15 2018-06-26 Google Llc Video coding with degradation of residuals
KR20180042899A (ko) * 2016-10-19 2018-04-27 디지털인사이트 주식회사 적응적 보간 필터를 사용하는 비디오 코딩 방법 및 장치
US10841610B2 (en) * 2017-10-23 2020-11-17 Avago Technologies International Sales Pte. Limited Block size dependent interpolation filter selection and mapping
GB2574380A (en) * 2018-05-30 2019-12-11 Realvnc Ltd Processing image data

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6421698B1 (en) * 1998-11-04 2002-07-16 Teleman Multimedia, Inc. Multipurpose processor for motion estimation, pixel processing, and general processing
US6950469B2 (en) * 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
CN1298171C (zh) 2001-09-18 2007-01-31 松下电器产业株式会社 图像的编码方法和图像的译码方法
KR100945546B1 (ko) * 2002-01-14 2010-03-08 노키아 코포레이션 동적 필터 부호화
JP3861698B2 (ja) * 2002-01-23 2006-12-20 ソニー株式会社 画像情報符号化装置及び方法、画像情報復号装置及び方法、並びにプログラム
US7620109B2 (en) 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
US20040076333A1 (en) 2002-10-22 2004-04-22 Huipin Zhang Adaptive interpolation filter system for motion compensated predictive video coding
EP1617672A1 (en) 2004-07-13 2006-01-18 Matsushita Electric Industrial Co., Ltd. Motion estimator/compensator including a 16-bit 1/8 pel interpolation filter
US7623575B2 (en) 2005-01-05 2009-11-24 Lsi Corporation Method and apparatus for sub-pixel motion compensation
CN101278563A (zh) 2005-08-15 2008-10-01 诺基亚公司 用于视频编码中更新操作的亚像素内插的方法和装置
US20080075165A1 (en) 2006-09-26 2008-03-27 Nokia Corporation Adaptive interpolation filters for video coding
CN101632306B (zh) 2006-12-01 2014-03-19 法国电信公司 用于运动补偿预测视频编码和解码的自适应内插方法和系统
WO2008084378A2 (en) * 2007-01-09 2008-07-17 Nokia Corporation Adaptive interpolation filters for video coding
US9118927B2 (en) 2007-06-13 2015-08-25 Nvidia Corporation Sub-pixel interpolation and its application in motion compensated encoding of a video signal
US8416861B2 (en) * 2007-10-14 2013-04-09 Nokia Corporation Fixed-point implementation of an adaptive image filter with high coding efficiency
EP2106136A1 (en) 2008-03-28 2009-09-30 Sony Corporation Motion compensated temporal interpolation for frame rate conversion of video signals
US8804831B2 (en) 2008-04-10 2014-08-12 Qualcomm Incorporated Offsets at sub-pixel resolution
US8462842B2 (en) 2008-04-10 2013-06-11 Qualcomm, Incorporated Symmetry for interpolation filtering of sub-pixel positions in video coding
US20090257499A1 (en) 2008-04-10 2009-10-15 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US9077971B2 (en) 2008-04-10 2015-07-07 Qualcomm Incorporated Interpolation-like filtering of integer-pixel positions in video coding
US8705622B2 (en) 2008-04-10 2014-04-22 Qualcomm Incorporated Interpolation filter support for sub-pixel resolution in video coding
JP4977094B2 (ja) 2008-06-25 2012-07-18 株式会社東芝 画像符号化方法
US9078007B2 (en) 2008-10-03 2015-07-07 Qualcomm Incorporated Digital video coding with interpolation filters and offsets
JP5158003B2 (ja) 2009-04-14 2013-03-06 ソニー株式会社 画像符号化装置と画像符号化方法およびコンピュータ・プログラム

Also Published As

Publication number Publication date
RU2012147772A (ru) 2014-05-27
CA2795204C (en) 2015-12-08
US20110249737A1 (en) 2011-10-13
JP2014222902A (ja) 2014-11-27
TW201220854A (en) 2012-05-16
RU2543953C2 (ru) 2015-03-10
IL222338A0 (en) 2012-12-31
JP2013524731A (ja) 2013-06-17
MX2012011882A (es) 2012-11-30
EP2559249A1 (en) 2013-02-20
IL222338A (en) 2016-06-30
MY154574A (en) 2015-06-30
KR101469338B1 (ko) 2014-12-24
AU2011240766A1 (en) 2012-11-01
CA2795204A1 (en) 2011-10-20
CN102835108A (zh) 2012-12-19
CN102835108B (zh) 2015-07-01
EP4060989A1 (en) 2022-09-21
JP5607236B2 (ja) 2014-10-15
SG184313A1 (en) 2012-11-29
US9219921B2 (en) 2015-12-22
WO2011130187A1 (en) 2011-10-20
ZA201208137B (en) 2013-06-26
KR20130029077A (ko) 2013-03-21
AU2011240766B2 (en) 2014-02-13
TWI437888B (zh) 2014-05-11
HK1177078A1 (en) 2013-08-09

Similar Documents

Publication Publication Date Title
BR112012026153A2 (pt) filtros de derivação mista.
ES2692183T3 (es) Modulación por codificación de pulsos con cuantificación en codificación de vídeo
RU2628153C1 (ru) Способ декодирования видеосигнала
BRPI0910634B1 (pt) método e dispositivo para interpolação de sub-pixel para compensação de movimento em codificação de vídeo
ES2711449T3 (es) Modo de fusión bipredictivo basado en vecinos unipredictivos y bipredictivos en la codificación de vídeo
US9049444B2 (en) Mode dependent scanning of coefficients of a block of video data
BR112013014415B1 (pt) Método e dispositivo para decodificar dados de vídeo e método e dispositivo para codificar dados de vídeo
US20110249754A1 (en) Variable length coding of coded block pattern (cbp) in video compression
JP5632079B2 (ja) 圧縮ビットストリームへの交換補間フィルタ係数の組み込み
US20120236934A1 (en) Signaling of multiview video plus depth content with a block-level 4-component structure
JP2015156647A (ja) マッピングされた変換と走査モードとを使用するビデオコード化
JP5766878B2 (ja) 低減解像度ピクセル補間
JP2017508346A (ja) ビデオコーディングのための適応的な動きベクトル分解シグナリング
KR20130010124A (ko) 비디오 압축에서 코딩된 블록 패턴 (cbp) 의 가변 길이 코딩
TW201010439A (en) Interpolation filter support for sub-pixel resolution in video coding
BRPI0910638B1 (pt) Filtragem semelhante a interpolaqao de posiqoes de pixel inteiro em codificaqao de video

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 7/26 , H04N 7/36

Ipc: H04N 19/117 (2014.01), H04N 19/523 (2014.01), H04N

B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]