BRPI0910634B1 - método e dispositivo para interpolação de sub-pixel para compensação de movimento em codificação de vídeo - Google Patents
método e dispositivo para interpolação de sub-pixel para compensação de movimento em codificação de vídeo Download PDFInfo
- Publication number
- BRPI0910634B1 BRPI0910634B1 BRPI0910634-0A BRPI0910634A BRPI0910634B1 BR PI0910634 B1 BRPI0910634 B1 BR PI0910634B1 BR PI0910634 A BRPI0910634 A BR PI0910634A BR PI0910634 B1 BRPI0910634 B1 BR PI0910634B1
- Authority
- BR
- Brazil
- Prior art keywords
- pixel
- filter
- sub
- video
- interpolation
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/192—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
- H04N19/635—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by filter definition or implementation details
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details 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)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
INTERPOLAÇÃO DEFINIDA POR DISTORÇÃO DE TAXA PARA CODIFICAÇÃO DE VÍDEO COM BASE EM FILTRO FIXO OU FILTRO ADAPTATIVO. Essa revelação descreve as técnicas de filtração aplicadas por um codificador e por 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 filtração podem aperfeiçoar a exatidão dos dados preditivos usados durante interpolação fracionária, e podem aperfeiçoar os dados preditivos de blocos de números inteiros de pixels. Há vários aspectos dessa revelação, incluindo um suporte de filtro de doze pixels útil que pode ser usado para interpolação, técnicas que utilizam simetria de coeficiente e símetria de pixel para reduzir a quantidade de dados que precisam ser enviados entre um codificador e um decodificador para configurar o suporte de filtro para interpolação, e técnicas para filtração de dados em locais de pixel de número inteíro de uma maneira que é similar à interpolação de sub-pixel. Outros aspectos dessa revelação se referem às técnicas para codíficar informação no fluxo de bits para conduzir o tipo de filtro usado, e possivelmente os coeficientes de filtro utilizados. Codificação preditiva dos coeficientes de filtro também é descrita
Description
[001] Esse pedido reivindica o benefício do Pedido Provisional dos Estados Unidos 61/044.020 depositado em 10 de abril de 2008, Pedido Provisional dos Estados Unidos 61/044.023 depositado em 10 de abril de 2008, Pedido Provisional dos Estados Unidos 61/044.240 depositado em 11 de abril de 2008 e Pedido Provisional dos Estados Unidos 61/057.373 depositado em 30 de maio de 2008, cujos conteúdos são aqui incorporados integralmente mediante referência.
[002] Essa revelação se refere à codificação e decodificação de vídeo digital e, mais particularmente, às técnicas de filtragem aplicadas para gerar dados preditivos usados na codificação e decodificação de vídeo.
[003] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas digitais de difusão direta, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores laptop ou de mesa, câmeras digitais, dispositivos digitais de gravação, dispositivos de videogame, consoles de videogame, telefones celulares ou telefones de rádio via satélite, e semelhantes. Dispositivos de vídeo digital implementam técnicas de compactação de vídeo, tais como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ou ITU-T H.264/MPEG- 4, parte 10, Codificação Avançada de Vídeo (AVC), para transmitir e receber mais eficientemente informação de video digital. Técnicas de compactação de video podem realizar predição espacial e/ou predição temporal para reduzir ou remover redundância inerente nas sequências de video.
[004] Intercodificação baseada em bloco é uma técnica de codificação muito útil que se baseia em predição temporal para reduzir ou remover redundância temporal entre blocos de video de unidades codificadas sucessivas de uma sequência de video. As unidades codificadas podem compreender quadros de video, fatias de quadros de video, grupos de imagens, ou outra unidade definida de blocos de video codificado. Para intercodificação, o codificador de video realiza estimação de movimento e compensação de movimento para monitorar o movimento dos blocos de video correspondentes de duas ou mais unidades codificadas adjacentes. Estimação de movimento gera vetores de movimento, os quais indicam o deslocamento de blocos de video em relação aos blocos de video de predição correspondentes em um ou mais quadros de referência ou outras unidades codificadas. Compensação de movimento utiliza os vetores de movimento para gerar blocos de video de predição a partir de um ou mais quadros de referência ou outras unidades codificadas. Após compensação de movimento, blocos de video residuais são formados mediante subtração de blocos de video de predição a partir dos blocos de video originais sendo codificados.
[005] O codificador de video também pode empregar processos de codificação de transformação, quantização e entropia para reduzir adicionalmente a taxa de bits associada com a comunicação de blocos residuais. Técnicas de transformação podem compreender transformadas discretas de cosseno (DCTs) ou processos conceptualmente similares. Alternativamente, transformadas de ondaleta, transformadas de números inteiros, ou outros tipos de transformadas podem ser usados. Em um processo DCT, como um exemplo, um conjunto de valores de pixel é convertido em coeficientes de transformada, os quais podem representar a energia dos valores de pixel no dominio de frequência. Quantização é aplicada aos coeficientes de transformada, e geralmente envolve um processo que reduz o número de bits associados a qualquer coeficiente de transformada, determinado. Codificação por entropia compreende um ou mais processos que coletivamente compactam uma sequência de modos de codificação, informação de movimento, padrões de blocos codificados, e coeficientes de transformada, quantizados. Exemplos de codificação por entropia incluem, mas não são limitados à codificação de comprimento variável adaptativo de conteúdo (CAVLC) e codificação aritmética binária adaptativa de contexto (CABAC).
[006] Um bloco de video codificado pode ser representado por informação de predição que pode ser usada para criar ou identificar um bloco preditivo, e um bloco residual de dados indicativo de diferenças entre o bloco sendo codificado e o bloco preditivo. A informação de predição pode compreender o um ou mais vetores de movimento que são usados para identificar o bloco preditivo de dados. Dados os vetores de movimento, o decodificador é capaz de reconstruir os blocos preditivos que foram usados para codificar o residual. Assim, dado um conjunto de blocos residuais e um conjunto de vetores de movimento (e possivelmente alguma sintaxe adicional), o decodificador pode reconstruir um quadro de video que foi originalmente codificado. Intercodificação baseada em estimação de movimento e compensação de movimento pode obter compactação muito boa devido aos sucessivos quadros de video ou outros tipos de unidades codificadas frequentemente são muito similares. Uma sequência de video codificado pode compreender blocos de dados residuais, vetores de movimento, e possivelmente outros tipos de sintaxe.
[007] Técnicas de interpolação foram desenvolvidas para aperfeiçoar o nivel de compactação que pode ser obtido na intercodificação. Nesse caso, os dados preditivos gerados durante compensação de movimento, a qual é usada para codificar um bloco de video, podem ser interpolados a partir dos pixels de blocos de video do quadro de video ou outra unidade codificada usada na estimação de movimento. A interpolação frequentemente é realizada para gerar valores preditivos de meio pixel (metade de pixel) e valores preditivos de um quarto de pixel (um quarto de pixel). Os valores half- e um quarto de pixel são associados com locais de sub-pixel. Vetores de movimento fracionários podem ser usados para identificar blocos de video na resolução de sub-pixel para capturar movimento fracionário em uma sequência de video, e assim prover blocos preditivos que são mais similares aos blocos de video sendo codificados do que os blocos de video de número inteiro.
[008] Em geral, essa revelação descreve técnicas de filtragem aplicadas por um codificador e um decodificador utilizando o estágio de predição de um processo de codificação e/ou decodificação de video.
[009] As técnicas de filtragem descritas podem aperfeiçoar a exatidão dos dados preditivos usados durante interpolação fracionária, e em alguns casos, podem aperfeiçoar os dados preditivos de blocos de números inteiros de pixels. Há vários aspectos dessa revelação, incluindo um suporte de filtro de doze pixels útil que pode ser usado para interpolação, técnicas que utilizam simetria de coeficiente e simetria de pixel para reduzir a quantidade de dados necessários a serem enviados entre um codificador e um decodificador para configurar o suporte de filtro para interpolação, e técnicas para filtrar dados em locais de pixel de número inteiro de uma maneira que é similar à interpolação de sub-pixel. Outros aspectos dessa revelação se referem a técnicas para codificar informação no fluxo de bits para transmitir o conduzir o tipo de filtro usado, e possivelmente os coeficientes de filtro usados. Técnicas de codificação preditiva para coeficientes de filtro também são descritas. Esse e outros aspectos dessa revelação se tornaram evidentes a partir da descrição abaixo.
[0010] Em um exemplo, essa revelação descreve um método compreendendo gerar primeiros dados preditivos interpolados para codificação de dados de video com base em um primeiro filtro de interpolação, gerar segundos dados preditivos de interpolação para codificação de video dos dados de video baseados em um segundo filtro de interpolação, selecionar entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base em uma análise de distorção de taxa, codificar os dados de video com base na seleção, e codificar a sintaxe para indicar a seleção. 0 primeiro filtro de interpolação pode compreender um filtro de interpolação fixo, e o segundo filtro de interpolação pode compreender um filtro de interpolação adaptativo, mas essa revelação não é necessariamente limitada a esses exemplos.
[0011] Filtros de interpolação adicionais também podem ser empregados para gerar dados preditivos interpolados adicionais, os quais também podem ser considerados na análise de distorção de taxa. Em outras palavras, o método não é limitado a gerar apenas primeiros e segundos dados preditivos interpolados com base em dois filtros de interpolação, mas poderiam ser aplicados para gerar qualquer pluralidade de dados preditivos interpolados com base em qualquer número de filtros de interpolação. Essencialmente, dados preditivos interpolados de análise de distorção de taxa são usados para identificar qual filtro selecionar.
[0012] Consequentemente, em outro exemplo, essa revelação descreve um método compreendendo gerar uma pluralidade de diferentes versões de dados preditivos para codificação de dados de video com base em uma pluralidade de diferentes filtros de interpolação, selecionar entre a pluralidade de diferentes versões de dados preditivos com base em uma análise de distorção de taxa, codificar os dados de video com base na seleção, e codificar a sintaxe para indicar a seleção.
[0013] Em outro exemplo, essa revelação descreve um equipamento compreendendo um codificador de vídeo que gera uma pluralidade de diferentes versões de dados preditivos para codificação de dados de video com base em uma pluralidade de diferentes filtros de interpolação, selecionar entre a pluralidade de diferentes versões de dados preditivos com base em uma análise de distorção de taxa, codificar os dados de video com base na seleção, e codificar a sintaxe para indicar a seleção.
[0014] Em outro exemplo, essa revelação descreve um dispositivo compreendendo meio para gerar uma pluralidade de diferentes versões de dados preditivos para codificação de dados de video com base em uma pluralidade de diferentes filtros de interpolação, meio para selecionar entre a pluralidade de diferentes versões de dados preditivos com base em uma análise de distorção de taxa, meio para codificar os dados de video com base na seleção, e meio para codificar sintaxe para indicar a seleção.
[0015] As técnicas descritas nessa revelação podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, o software pode ser executado em um ou mais processadores, tal como um microprocessador, circuito integrado de aplicação especifica (ASIC), arranjo de portas programáveis no campo (FPGA), ou processador de sinal digital (DSP). O software que executa as técnicas pode ser inicialmente armazenado em um meio legivel por computador e carregado e executado no processador.
[0016] Consequentemente, essa revelação também considera um meio de armazenamento legivel por computador compreendendo instruções que quando executadas por um processador fazem com que o processador gere uma pluralidade de diferentes versões de dados preditivos para codificação de dados de video com base em uma pluralidade de diferentes filtros de interpolação, selecionar entre a pluralidade de diferentes versões de dados preditivos com base em uma análise de distorção de taxa, codificar os dados de video com base na seleção, e codificar a sintaxe para indicar a seleção.
[0017] Os detalhes de um ou mais aspectos da revelação são apresentados nos desenhos anexos e na descrição abaixo. Outras características, objetivos e vantagens das técnicas descritas nessa revelação serão evidentes a partir da descrição e dos desenhos, e a partir das reivindicações.
[0018] A Figura 1 é um diagrama de blocos ilustrando um sistema de codificação e de decodificação de video exemplar que pode implementar técnicas dessa revelação.
[0019] A Figura 2 é um diagrama de blocos ilustrando um exemplo de um codificador de video que pode realizar técnicas de filtragem consistentes com essa revelação.
[0020] A Figura 3 é um diagrama conceptual ilustrando posições de número inteiro-pixel associadas com os dados de predição, e posições de sub-pixel associadas com os dados de predição interpolados.
[0021] A Figura 4 é um diagrama conceptual ilustrando um suporte de filtro de doze pixels com relação a nove localizações de sub-pixel.
[0022] A Figura 5 é um diagrama conceptual ilustrando um suporte de filtro de seis pixels horizontais com relação a três localizações de sub-pixel horizontal, e um suporte de filtro de seis pixels verticais com relação aos três locais de sub-pixel vertical.
[0023] A Figura 6 é um diagrama conceptual ilustrando um suporte de filtro de cinco pixels por cinco pixels para filtrar um local de pixel de número inteiro.
[0024] A Figura 7 é um diagrama conceptual ilustrando quatro posições de pixel de número inteiro e quinze posições de sub-pixel com sombreamento para agrupar posições de pixel que podem utilizar simetria de pixel para coeficientes de filtragem consistentes com essa revelação.
[0025] A Figura 8 é um diagrama conceptual ilustrando seis posições de suporte de pixel linear, horizontal em relação a um sub-pixel, com sombreamento que mostra simetria de coeficiente.
[0026] A Figura 9 é um diagrama conceptual ilustrando seis posições de suporte de pixel linear, horizontal em relação a um sub-pixel, com sombreamento que mostra uma ausência de qualquer simetria de coeficiente.
[0027] A Figura 10 é um diagrama conceptual ilustrando seis posições de suporte de pixel linear, vertical em relação a um sub-pixel, com sombreamento que mostra simetria de coeficiente.
[0028] A Figura 11 é um diagrama conceptual ilustrando seis posições de suporte de pixel linear, vertical em relação a um sub-pixel, com sombreamento que mostra uma ausência de qualquer simetria de coeficiente.
[0029] A Figura 12 é um diagrama conceptual ilustrando doze posições de suporte de pixel, bidimensional em relação a um sub-pixel, com sombreamento que mostra uma ausência de qualquer simetria de coeficiente.
[0030] A Figura 13 é um diagrama conceptual ilustrando doze posições de suporte de pixel, bidimensional em relação a um sub-pixel, com sombreamento que mostra simetria de coeficiente.
[0031] A Figura 14 é um diagrama conceptual ilustrando doze posições de suporte de pixel, bidimensional em relação a um sub-pixel, com sombreamento que mostra simetria de coeficiente.
[0032] A Figura 15 é um diagrama conceptual ilustrando doze posições de suporte de pixel, bidimensional em relação a um sub-pixel, com sombreamento que mostra simetria de coeficiente.
[0033] A Figura 16 é um diagrama de blocos ilustrando um exemplo de um decodificador de video, o qual pode decodificar uma sequência de video que é codificada da maneira descrita aqui.
[0034] A Figura 17 é um diagrama de fluxo ilustrando a operação exemplar de um codificador de video que utiliza um suporte de filtro de doze pixels consistente com essa revelação.
[0035] A Figura 18 é um diagrama de fluxo ilustrando operação exemplar de um decodificador de video que utiliza um suporte de filtro de doze pixels consistente com essa revelação.
[0036] A Figura 19 é um diagrama de fluxo ilustrando operação exemplar de um decodificador de video que utiliza simetria de coeficiente e simetria de pixel consistente com essa revelação.
[0037] A Figura 20 é um diagrama de fluxo ilustrando operação exemplar de um decodificador de video que utiliza simetria de coeficiente e simetria de pixel consistente com essa revelação.
[0038] A Figura 21 é um diagrama de fluxo ilustrando operação exemplar de um codificador de video que utiliza filtragem de localizações de pixel de um número inteiro para gerar valores de pixel de número inteiro, ajustados, consistentes com essa revelação.
[0039] A Figura 22 é um diagrama de fluxo ilustrando a operação exemplar de um decodificador de video que utiliza filtragem de locais de pixel de número inteiro para gerar valores de pixel de número inteiro, ajustados, consistentes com essa revelação.
[0040] A Figura 23 é um diagrama de fluxo ilustrando uma técnica para interpolação de distorção de taxa definida para codificação de video com base em um filtro fixo ou em um filtro adaptativo.
[0041] A Figura 24 é um diagrama de fluxo ilustrando uma técnica para codificar coeficientes de filtro utilizando codificação preditiva.
[0042] A Figura 25 é outro diagrama de fluxo ilustrando uma técnica para codificar os coeficientes de filtro utilizando codificação preditiva.
[0043] A Figura 26 é um diagrama de fluxo ilustrado uma técnica para decodificar coeficientes de filtro utilizando codificação preditiva.
[0044] As Figuras, 27 e 28, são gráficos conceptuais ilustrando coeficientes de filtro que podem ser codificados de modo preditivo.
[0045] A Figura 29 é um exemplo ilustrativo de um arranjo de coeficientes de filtro de número inteiro- pixel para os quais técnicas de predição podem ser usadas para codificação.
[0046] Essa revelação descreve técnicas de filtragem aplicadas por um codificador e por um decodificador durante o estágio de predição de um processo de codificação e/ou decodificação de video. As técnicas de filtragem descritas podem aperfeiçoar a exatidão dos dados preditivos usados durante interpolação fracionária, e em alguns casos, pode aperfeiçoar os dados preditivos de blocos de números inteiros de pixels. Há vários aspectos para essa revelação, incluindo um suporte de filtro de doze pixels útil que pode ser usado para interpolação, técnicas que usam simetria de coeficiente e simetria de pixel para reduzir a quantidade de dados necessários a serem enviados entre um codificador e um decodificador para configurar o suporte de filtro para interpolação, e técnicas para filtrar dados em locais de pixels de número inteiro de uma maneira que é similar à interpolação de sub-pixel. Essas e outras técnicas são descritas em detalhe abaixo.
[0047] A Figura 1 é um diagrama de blocos ilustrando um sistema de codificação e de decodificação exemplar 10 que pode ser usado para implementar uma ou mais das técnicas dessa revelação. Conforme mostrado na Figura 1, o sistema 10 inclui um dispositivo de origem 12 que transmite video codificado para um dispositivo de destino 16 por intermédio de um canal de comunicação 15. 0 dispositivo de origem 12 e o dispositivo de destino 16 podem compreender qualquer uma de uma ampla variedade de dispositivos. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 16 compreendem dispositivos de comunicação sem fio, tais como telefones sem fio, os assim chamados radio telefones celulares ou via satélites, ou quaisquer dispositivos sem fio que podem comunicar informação de video através de um canal de comunicação 15, em cujo caso o canal de comunicação 15 é sem fio. As técnicas dessa revelação, contudo, que dizem respeito à filtragem e à geração de dados preditivos durante codificação preditiva, não são necessariamente limitadas às aplicações ou cenários sem fio. As técnicas também podem ser úteis em uma ampla gama de outros cenários e dispositivos, incluindo dispositivos que se comunicam por intermédio de fios fisicos, fibras óticas ou outros meios fisicos ou sem fio. Além disso, as técnicas de codificação e decodificação também podem ser aplicadas em um dispositivo independente que não necessariamente se comunica com qualquer outro dispositivo.
[0048] No exemplo da Figura 1, o dispositivo de origem 12 pode incluir uma fonte de video 20, codificador de video 22, modulador/demodulador (modem) 23 e transmissor 24. O dispositivo de destino 16 pode incluir um receptor 26, modem 27, decodificador de video 28, e dispositivo de exibição 30. De acordo com essa revelação, o codificador de video 22 do dispositivo de origem 12 pode ser configurado para empregar uma ou mais das técnicas dessa revelação como parte de um processo de codificação de video. Similarmente, o decodificador de video 28 do dispositivo de destino 16 pode ser configurado para aplicar uma ou mais das técnicas dessa revelação como parte de um processo de decodificação de video.
[0049] Outra vez, o sistema ilustrado 10 da Figura 1 é apenas exemplar. As várias técnicas dessa revelação podem ser realizadas por intermédio de qualquer dispositivo de codificação que suporte codificação preditiva baseada em bloco, ou mediante qualquer dispositivo de codificação que suporte decodificação preditiva baseada em bloco. O dispositivo de origem 12 e o dispositivo de destino 16 são apenas exemplos de tais dispositivos de codificação nos quais o dispositivo de origem 12 gera dados de video codificado para transmissão para o dispositivo de destino 16. Em alguns casos, os dispositivos 12, 16 podem operar de uma maneira substancialmente simétrica de tal modo que, cada um dos dispositivos 12, 16 inclui componentes de codificação e decodificação de video. Portanto, o sistema 10 pode suportar transmissão de video de via única ou de duas vias entre os dispositivos de video 12, 16, por exemplo, para fluxo continuo de video, reprodução de video, difusão de video, ou telefonia de video.
[0050] A fonte de video 20 do dispositivo de origem 12 pode incluir um dispositivo de captura de video, tal como uma video câmera, um arquivo de video contendo video previamente capturado, ou uma alimentação de video a partir de um provedor de conteúdo de video. Como uma alternativa adicional, a fonte de video 20 pode gerar dados de computador baseados em gráfico como o video de origem, ou uma combinação de video ao vivo, video arquivado, e video gerado por computador. Em alguns casos, se a fonte de video 20 é uma câmera de video, o dispositivo de origem 12 e o dispositivo de destino 16 podem formar os assim chamados fones de câmera ou fones de video. Em cada caso, o video capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de video 22. A informação de video codificado pode então ser modulada pelo modem 23 de acordo com um padrão de comunicação, por exemplo, tal como padrão de comunicação de acesso múltipo por divisão de código (CDMA) ou outro padrão de comunicação, e transmitido para o dispositivo de destino 16 por intermédio do transmissor 24 e canal de comunicação 15. O modem 23 pode incluir vários mixadores, 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.
[0051] O receptor 26 do dispositivo de destino 16 recebe informação através do canal de comunicação 15, e o modem 27 demodula a informação. Como o transmissor 24, o receptor 26 pode incluir circuitos designados para receber dados, incluindo amplificadores, filtros, e uma ou mais antenas. Em alguns casos, o transmissor 24 e/ou receptor 26 pode ser incorporado dentro de um único componente transceptor que inclui conjunto de circuitos de recepção e conjunto de circuitos de transmissão. O modem 27 pode incluir diversos mixadores, filtros, amplificadores ou outros componentes projetados para demodulação de sinal. Em alguns casos, os modems 23 e 27 podem incluir componentes para realizar não apenas a modulação como também a demodulação.
[0052] Outra vez, o processo de codificação de video realizado pelo codificador de video 22 pode implementar uma ou mais das técnicas aqui descritas durante compensação de movimento. O processo de decodificação de video realizado pelo decodificador de video 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" é usado aqui se referindo a um dispositivo de computador especializado ou equipamento que realiza codificação de video ou decodificação de video. O termo "codificador" geralmente se refere ao qualquer codificador de video, decodificador de video, ou codificador/decodificador combinados (codec). O termo "codificação" se refere à codificação ou decodificação. O dispositivo de codificação 30 exibe os dados de video decodificados a um usuário, e pode compreender qualquer um de uma variedade de dispositivos de exibição tal como um tubo de raios catódicos (CRT), um display de cristal liquido (LCD), um display de plasma, um display de diodo de emissão de luz orgânica (OLED) ou outro tipo de dispositivo de exibição.
[0053] No exemplo da Figura 1, o canal de comunicação 15 pode compreender qualquer meio de comunicação sem fio ou cabeado, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas fisicas de transmissão, ou qualquer combinação de meios sem fio e cabeados. O canal de comunicação 15 pode formar parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área remota, ou uma rede global tal como a Internet. 0 canal de comunicação 15 geralmente representa qualquer meio de comunicação adequado, ou grupo de meios de comunicação diferentes, para transmitir dados de video a partir do dispositivo de origem 12 para o dispositivo de destino 16. 0 canal de comunicação 15 pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que pode ser útil para facilitar a comunicação a partir do dispositivo de origem 12 para o dispositivo de destino 16.
[0054] O codificador de video 22 e o decodificador de video 28 podem operar de acordo com um padrão de compactação de video, tal como o padrão ITU-T H.264, descrito alternativamente como Codificação de Video Avançada (AVC), MPEG-4, Parte 10. As técnicas dessa revelação, contudo, não são limitadas a qualquer padrão de codificação de video especifico. Embora não seja mostrado na Figura 1, em alguns aspectos, o codificador de video 22 e o decodificador de video 28 podem ser individualmente integrados com um codificador e decodificador de áudio, e podem incluir unidades de multiplexação/demultiplexação apropriada, ou outro hardware ou software, para manejar a codificação de ambos, áudio e video, em um fluxo de dados comum em um fluxo de dados separados. Se aplicável, unidades de multiplexação/demultiplexação podem se ajustar ao protocolo de multiplexador ITU H.223, ou outros protocolos tais como o protocolo de datagrama de usuário (UDP).
[0055] O codificador de video 22 e o decodificador de video 28 podem ser implementados individualmente como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação especifica (ASICs), arranjos de portas programáveis no campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Cada um de codificador de video 22 e decodificador de video 28 pode ser incluido em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codec combinado que provê capacidades de codificação e de decodificação em um dispositivo móvel respectivo, dispositivo de assinante, dispositivo de difusão, servidor, ou semelhante.
[0056] Uma sequência de video inclui tipicamente uma série de quadros de video. O codificador de video 22 opera em blocos de video dentro de quadros de video individuais para codificar os dados de video. Os blocos de video podem ter tamanhos fixos ou variados, e podem diferir em tamanho de acordo com um padrão de codificação especificado. Cada quadro de video inclui uma série de fatias. Cada fatia pode incluir uma série de macroblocos, os quais podem ser dispostos em sub-blocos. Como um exemplo, o padrão ITU-T H.2 64 suporta intrapredição em diversos tamanhos de bloco, tal como 16 por 16, 8 por 8, ou 4 por 4 para componentes luma, e 8x8 para componentes croma, assim como interpredição em diversos tamanhos de bloco, tal como 16 por 16, 16 por 8, 8 por 16, 8 por 8, 8 por 4, 4 por 8 e 4 por 4 para componentes luma e tamanhos escalonados correspondentes para componentes croma. Blocos de video podem compreender blocos de dados de pixel, ou blocos de coeficientes de transformação, por exemplo, após um processo de transformação tal como transformada discreta de cosseno (DCT) ou um processo de transformação conceptualmente similar.
[0057] Blocos de video menores podem proporcionar melhor resolução, e podem ser usados para locais de um quadro de video que inclui elevados niveis de detalhe. Em geral, os macroblocos e os vários sub-blocos podem ser considerados como sendo blocos de video. Além disso, uma fatia pode ser considerada como sendo uma série de blocos de video, tais como macroblocos e/ou sub-blocos. Cada fatia pode ser uma unidade independentemente decodificada de um quadro de video. Alternativamente, os próprios quadros podem ser unidades decodificáveis, ou outras porções de um quadro podem ser definidas como unidades que podem ser decodificadas. O termo "unidade codificada" se refere a qualquer unidade decodificável independentemente de um quadro de video tal como um quadro inteiro, uma fatia de um quadro, ou outra unidade independentemente decodificável definida de acordo com as técnicas de codificação utilizadas.
[0058] Para codificar os blocos de video, o codificador de video 22 realiza intra ou interpredição para gerar um bloco de predição. O codificador de video 22 subtrai os blocos de predição a partir dos blocos de video originais a serem codificados para gerar blocos residuais. Assim, os blocos residuais são indicativos de diferenças entre os blocos sendo codificados e os blocos de predição. O codificador de video 22 pode realizar uma transformada nos blocos residuais para gerar blocos de coeficientes de transformada. Após técnicas de codificação e transformação preditiva intra ou inter baseadas, o codificador de video 22 realiza a quantização. A quantização geralmente se refere a um processo no qual os coeficientes são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes. Após a quantização, codificação por entropia pode ser realizada de acordo com uma metodologia de codificação por entropia, tal como codificação de comprimento variável adaptativo de contexto (CAVLC) ou codificação aritmética binária adaptativa de contexto (CABAC). Mais detalhes de cada etapa do processo de codificação realizado pelo codificador de video 22 serão descritos em mais detalhe abaixo na Figura 2 .
[0059] No dispositivo de destino 16, o decodificador de video 28 recebe os dados de video codificado. O decodificador de video 28 decodifica por entropia os dados recebidos de video de acordo com uma metodologia de codificação por entropia, tal como CAVLC ou CABAC, para obter os coeficientes quantizados. O decodificador de video 28 aplica quantização inversa (desquantização) e funções de transformada inversa para reconstruir o bloco residual no dominio de pixel. O decodificador de video 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 coeficientes de filtro e semelhante) incluída nos dados de video codificado. O decodificador de video 28 soma o bloco de predição com o bloco residual reconstruído para produzir um bloco de video reconstruído para exibição. Mais detalhes de cada etapa do processo de codificação realizado pelo codificador de vídeo 22 serão descritos em mais detalhe abaixo na Figura 16.
[0060] De acordo com as técnicas dessa revelaçã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. Particularmente, de acordo com um aspecto dessa revelação, o codificador de vídeo 22 e/ou o decodificador de vídeo 28 podem obter um bloco de pixels, em que o bloco de pixels inclui valores de pixel de número inteiro correspondendo às posições de pixel de número inteiro dentro do bloco de pixels, computa os valores de sub-pixel para posições de sub-pixel associadas com o bloco de pixels com base nos valores de pixel de número inteiro, em que a computação dos valores de sub-pixel compreende aplicar um filtro de interpolação que define um arranjo bidimensional de posições de suporte de filtro correspondendo a um conjunto de doze ou mais posições de pixel de número inteiro que circundam as posições de sub-pixel em um formato radial, e geram um bloco de predição com base em ao menos alguns dos valores de sub-pixel. Um exemplo do arranjo bidimensional de posições de suporte de filtro correspondendo a um conjunto de doze ou mais posições de pixel de número inteiro é explicado em maior detalhe abaixo.
[0061] De acordo com outro aspecto dessa revelação, o codificador de vídeo 22 e/ou o decodificador de vídeo 28 pode utilizar aspectos de simetria para reduzir a quantidade de dados que precisa ser comunicada entre o dispositivo de origem 12 e o dispositivo de destino 16 para comunicação de coeficientes de filtro usados na interpolação. 0 codificador de video 22 pode determinar oito conjuntos de coeficientes de filtro para quinze diferentes locais de sub-pixel, em que os oito conjuntos de coeficientes de filtro são gerados com base na simetria de coeficiente e simetria de pixel entre quinze locais de sub- pixel, e emite os oito conjuntos de coeficientes de filtro para outro dispositivo como parte de um fluxo de bits codificado. Desse modo, os oito conjuntos, junto com aspectos de simetria de pixel e simetria de coeficiente podem definir todos os coeficientes de filtro para todas as quinze posições de pixel metade de pixel e um quarto de pixel. Além disso, a simetria de pixel pode existir entre diferentes locais dos quinze locais de sub-pixel em uma dimensão vertical e em uma dimensão horizontal, mas a simetria de pixel pode não existir em uma dimensão diagonal para ao menos alguns dos quinze conjuntos de locais de sub- pixel. Essa ausência de simetria de pixel na dimensão diagonal para ao menos alguns dos quinze locais pode aperfeiçoar as interpolações e a qualidade de video na codificação e decodificação de video.
[0062] O decodificador de video 28 do dispositivo de destino 16 pode receber os oito conjuntos de coeficientes de filtro como parte de um fluxo de bits de video codificado, gerar quinze conjuntos de coeficientes de filtro correspondendo a quinze diferentes locais de sub- pixel com base nos oito conjuntos de coeficientes de filtro, gerar dados preditivos interpolados para decodificação de video com base em um dos quinze conjuntos de coeficientes de filtro, em que os dados preditivos interpolados correspondem a um dos quinze diferentes locais de sub-pixel, e decodificar um ou mais blocos de video com base nos dados preditivos interpolados.
[0063] De acordo com outro aspecto dessa revelação, o codificador de video 22 e/ou o decodificador de video 28 pode utilizar filtragem semelhante à interpolação com relação às posições de pixel de número inteiro para gerar valores de pixel de número inteiro, ajustados. Tal filtragem semelhante à interpolação pode aperfeiçoar a compactação especificamente durante mudanças de iluminação, aparecimentos e desaparecimentos graduais de cena, pode remover ruido e facilitar a nitidez de quadro de imagem, e pode ajudar a aperfeiçoar a codificação de movimento exato de objeto entre sucessivos quadros de video particularmente quando a simetria não é imposta aos coeficientes de filtro.
[0064] As técnicas de filtragem semelhantes à interpolação do codificador de video 22 e/ou do decodificador de video 28 podem incluir a obtenção de blocos de pixels, em que os blocos de pixel incluem valores de pixel de número inteiro correspondendo às posições de pixel de número inteiro dentro dos blocos de pixels, filtragem dos valores de pixel de número inteiro com base em outros valores de pixel de número inteiro dentro do bloco de pixels para gerar valores de pixel de número inteiro, ajustados, em que os valores de pixel de número inteiro, ajustados correspondem às posições de pixel de número inteiro, e gerar um bloco de predição com base nos valores de pixel de número inteiro ajustados.
[0065] De acordo com outro aspecto dessa revelação o codificador de video 22 pode gerar primeiros dados preditivos interpolados para codificação dos dados de video com base em um primeiro filtro de interpolação, gerar segundos dados preditivos interpolados para codificação de video dos dados de video com base em um segundo filtro de interpolação, selecionar entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base em uma análise de distorção de taxa, codificar os dados de video com base na seleção, e codificar sintaxe para indicar a seleção. O primeiro filtro de interpolação pode compreender um filtro de interpolação fixo, e o segundo filtro de interpolação pode compreender um filtro de interpolação adaptativo, mas essa revelação não é necessariamente limitada a esses exemplos.
[0066] Além disso, os filtros de interpolação adicionais também podem ser aplicados para gerar dados preditivos interpolados adicionais, os quais também podem ser considerados na análise de distorção de taxa. Em outras palavras, as técnicas dessa revelação não são limitadas a gerar apenas primeiros e segundos dados preditivos interpolados com base em dois filtros de interpolação, mas poderiam ser aplicadas para gerar qualquer pluralidade de dados preditivos interpolados com base em qualquer número de filtros de interpolação. Essencialmente, dados preditivos interpolados de uma análise de distorção de taxa são usados para identificar qual filtro selecionar.
[0067] Em um exemplo, o método pode compreender a geração de uma pluralidade de diferentes versões de dados preditivos para codificação de dados de video com base em uma pluralidade de diferentes filtros de interpolação, selecionar entre a pluralidade de diferentes versões de dados preditivos com base em uma análise de distorção de taxa, codificar os dados de video com base na seleção, e codificar sintaxe para indicar a seleção.
[0068] Essa revelação também considera a técnica para codificar os coeficientes de filtro. Por exemplo, o codificador de video 22 pode identificar um conjunto de coeficientes de filtro para interpolação dos dados preditivos na codificação de video, gerar valores residuais associados ao conjunto de coeficientes de filtro com base na codificação preditiva do conjunto de coeficientes de filtro em relação aos coeficientes de filtro associados a um filtro de interpolação fixo, aplicar quantização aos valores residuais, e emitir os valores residuais quantizados como parte de um fluxo de bits, codificado.
[0069] O decodificador de video 28 pode receber valores residuais associados a um conjunto de coeficientes de filtro, gerar o conjunto de coeficientes de filtro utilizando decodificação preditiva com base no conjunto de valores residuais e coeficientes de filtro associados a um filtro de interpolação fixa, e aplicar o conjunto de coeficientes de filtro para interpolar os dados preditivos usados para decodificação preditiva dos blocos de video.
[0070] A Figura 2 é um diagrama de blocos ilustrando um exemplo de um codificador de video 50 que pode realizar técnicas de filtragem consistentes com essa revelação. O codificador de video 50 é um exemplo de um dispositivo ou equipamento de computador de video especializado referido aqui como um "codificador". 0 codificador de video 50 pode corresponder ao codificador de video 22 da Figura 20, ou a um codificador de video de um dispositivo diferente. O codificador de video 50 pode realizar intra e intercodificação dos blocos dentro dos quadros de video, embora componentes de intracodificação não sejam mostrados na Figura 2 para facilidade de ilustração. A intracodificação se baseia na predição espacial para reduzir ou remover a redundância espacial em video dentro de um determinado quadro de video. A intercodificação se baseia na predição temporal para reduzir ou remover a redundância temporal em video dentro dos quadros adjacentes de uma sequência de video. Intra modo (I-modo) pode se referir ao modo de compactação espacialmente baseado, e inter modos tais como predição (P- modo) ou bidirecional (B-modo) pode se referir aos modos de compactação temporalmente baseados. As técnicas dessa revelação se aplicam durante intercodificação e, portanto, unidades de intracodificação como unidade de predição espacial não são ilustradas na Figura 2 para simplicidade e facilidade de ilustração.
[0071] Conforme mostrado na Figura 2, o codificador de video 50 recebe um bloco de video dentro de um quadro de video a ser codificado. No exemplo da Figura 2, o codificador de video 50 inclui uma unidade de predição 32, memória 34, um somador 48, uma unidade de transformação 38, uma unidade de quantização 40, e uma unidade de codificação por entropia 46. Para reconstrução de bloco de video, o codificador de video 50 inclui também uma unidade de quantização inversa 42, uma unidade de transformada inversa 44, e um somador 51. Um filtro de desblocagem (não mostrado) também pode ser incluído para filtrar os limites de bloco para remover artefatos de bloqueio a partir do video reconstruído. Se desejado, o filtro de desblocagem tipicamente filtraria a saida do somador 51.
[0072] A unidade de predição 32 pode incluir uma unidade de estimação de movimento (ME) 35, e uma unidade de compensação de movimento (MC) 37. O filtro 37 pode ser incluído na unidade de predição 32 e pode ser invocado por uma ou pelas duas, unidade ME 35 e unidade MC 37 para realizar interpolação ou filtragem semelhante à interpolação como parte de estimação de movimento e/ou compensação de movimento, de acordo com essa revelação. O filtro 37 pode representar efetivamente uma pluralidade de diferentes filtros para facilitar diversos tipos diferentes de interpolação e filtragem do tipo interpolação conforme aqui descrito. Assim, a unidade de predição 32 pode incluir uma pluralidade de filtros de interpolação ou semelhantes à interpolação. Durante o processo de codificação, o codificador de video 50 recebe um bloco de video a ser codificado (rotulado "BLOCO DE VÍDEO" na Figura 2), e a unidade de predição 32 realiza codificação de interpredição para gerar um bloco de predição (rotulado "BLOCO DE PREDIÇÃO"na Figura 2). Especificamente, a unidade ME pode realizar estimação de movimento para identificar o bloco de predição na memória 34, e a unidade MC 37 pode realizar compensação de movimento para gerar o bloco de predição.
[0073] Estimação de movimento é tipicamente considerada como o processo de gerar vetores de movimento, com movimento de estimativa para blocos de video. 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) em relação ao bloco a ser codificado dentro do quadro atual (ou outra unidade codificada). 0 quadro de referência (ou porção do quadro) pode estar localizado temporariamente antes ou após o quadro de video (ou uma porção do quadro de video) ao qual pertence o bloco de video atual. Compensação de movimento é tipicamente considerada o processo de buscar ou gerar bloco de predição a partir da memória 34, ou possivelmente interpolar ou de outro modo gerar dados preditivos filtrados com base no vetor de movimento determinado pela estimação de movimento.
[0074] A unidade ME 35 seleciona o vetor de movimento apropriado para o bloco de video a ser codificado mediante comparação do bloco de video com blocos de video de um ou mais quadros de referência (por exemplo, um quadro anterior e/ou subsequente) . A unidade ME 35 pode realizar estimação de movimento com precisão de pixel fracionária, algumas vezes referida como pixel fracionário, pel fracionário, ou estimação de movimento de sub-pixel. Os termos: pixel fracionário; pel fracionário; e estimação de movimento de sub-pixel; podem ser usados de modo permutável. Na estimação de movimento de pixel fracionário, a unidade ME 35 pode selecionar um vetor de movimento que indica deslocamento para um local diferente de um local de pixel de número inteiro. Desse modo, a estimação de movimento de pixel fracionário permite que a unidade de predição 32 monitore o movimento com precisão superior do que locais de pixel-número inteiro (ou pixel completo), desse modo gerando um bloco de predição mais exato. Estimação de movimento de pixel fracionária também pode ter precisão de meio pixel, precisão de um quarto de pixel, precisão de um oitavo de pixel ou qualquer precisão mais fina. A unidade ME 35 pode invocar o filtro (s) 39 para quaisquer interpolações necessárias durante o processo de estimação de movimento.
[0075] Para realizar compensação de movimento de pixel fracionário, a unidade MC 37 pode realizar interpolação (algumas vezes referida como filtragem de interpolação) para gerar dados em resolução de sub-pixel (referido aqui como valores de sub-pixel ou de pixel fracionário) . A unidade MC 37 pode invocar o filtro (s) 39 para essa interpolação. A unidade de predição 32 pode realizar a interpolação (ou filtragem semelhante à interpolação de pixels de número inteiro) utilizando as técnicas aqui descritas.
[0076] Quando o vetor de movimento para o bloco de video a ser codificado é selecionado pela unidade ME 35, a unidade MC 37 gera o bloco de video de predição associado àquele vetor de movimento. A unidade MC 37 pode ir buscar o bloco de predição a partir 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 fracionário, a unidade MC 37 filtra os dados a partir da memória 34 para interpolar tais dados para resolução de sub-pixel, por exemplo, invocando o filtro (s) 39 para esse processo. Em alguns casos, a técnica de filtragem de interpolação ou modo que foi usado para gerar os dados de predição de sub-pixel pode ser indicada como um ou mais elementos de sintaxe de interpolação para unidade de codificação por entropia 46 para inclusão no fluxo de bits, codificado. Na realidade, alguns aspectos dessa revelação se referem ao uso de simetria de pixel e simetria de coeficiente para reduzir a quantidade de sintaxe que precisa ser conduzida.
[0077] Quando a unidade de predição 32 tiver gerado o bloco de predição, o codificador de video 50 forma um bloco de video residual (rotulado "BLOCO RESIDUAL" na Figura 2) mediante subtração do bloco de predição a partir do bloco de video original sendo codificado. O somador 48 representa o componente, ou componentes, que realizam essa operação de subtração. A unidade de transformada 38 aplica uma transformada, tal como uma transformada discreta de cosseno (DCT) ou uma transformada conceptualmente similar, ao bloco residual, produzindo um bloco de video compreendendo coeficientes de bloco de transformada residual. A unidade de transformada 38, por exemplo, pode realizar outras transformadas, tais como aquelas definidas pelo padrão H.264, as quais são conceptualmente similares a DCT. Transformadas de ondaleta, transformadas de número inteiro, transformadas de sub-banda ou outros tipos de transformada também poderiam ser usadas. Em todo o caso, a unidade de transformada 38 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residual. A transformada pode converter a informação residual a partir de um dominio de pixel para um dominio de frequência.
[0078] 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 de bits associada a algum ou todos os coeficientes. Após a quantização, a unidade de codificação por entropia 46 codifica mediante entropia os coeficientes de transformada, quantizados. Por exemplo, a unidade de codificação por entropia 46 pode realizar CAVLC, CABAC, ou outra metodologia de codificação por entropia.
[0079] 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 do codificador de video 50. O um ou mais elementos de sintaxe de predição pode incluir um modo de codificação, um ou mais vetores de codificação, uma técnica de interpolação que foi usada 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 preditiva e quantizer a sintaxe de predição, tais como coeficientes de filtro, de acordo com alguns aspectos dessa revelação. Após a codificação por entropia por intermédio da codificação por entropia 46, os elementos de sintaxe e de video codificado podem ser transmitidos para outro dispositivo ou arquivados para posterior transmissão ou recuperação.
[0080] A unidade de quantização inversa 42 e a unidade de transformada inversa 44 aplicam quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no dominio de pixel, por exemplo, para posterior uso como um bloco de referência. 0 bloco residual reconstruído (rotulado "BLOCO RESIDUAL RECONSTRUÍDO" na Figura 2) pode representar uma versão reconstruída do bloco residual provido à unidade de transformada 38. 0 bloco residual reconstruído pode diferir do bloco residual gerado pelo somador 48 devido à perda de detalhe causado pelas operações de quantização e de quantização inversa. 0 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 video reconstruído para armazenamento na memória 34. 0 bloco de video reconstruído pode ser usado pela unidade de predição 32 como um bloco de referência que pode ser usado para subsequentemente codificar um bloco em um quadro de video subsequente ou unidade codificada subsequente.
[0081] Conforme descrito acima, a unidade de predição 32 pode realizar estimação de predição com exatidão de pixel fracionário (ou sub-pixel). Quando a unidade de predição 32 utiliza estimação de movimento de pixel fracionário, a unidade de predição 32 pode gerar dados em resolução de sub-pixel (por exemplo, valores de sub-pixel ou de pixel fracionário) utilizando operações de interpolação descritas nessa revelação. Em outras palavras, as operações de interpolação são usadas para comparar valores em posições entre as posições de pixel de número inteiro. As posições de sub-pixel localizadas na metade da distância entre as posições de pixel de número inteiro podem ser referidas como posições de meio pixel (meio-pel), posições de sub-pixel localizadas na metade da distância entre uma posição de pixel de número inteiro e uma posição de meio pixel podem ser referidas como posições de um quarto de pixel (um quarto-pel) posições de sub-pixel localizadas na metade da distância entre uma posição de pixel de número 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 (um oitavo-pel), e semelhantes.
[0082] A Figura 3 é um diagrama conceptual ilustrando posições de pixel de número inteiro (ou pixel completo) associadas com dados de predição, e posições de sub-pixel (ou pixel fracionário) associadas aos dados de predição interpolados. Na ilustração conceptual da Figura 3, as diferentes caixas representam localizações de sub- pixel e pixel ou posições dentro de um quadro ou de um bloco de um quadro. Letras maiúsculas (nas caixas com linhas cheias) representam locais de pixel de número inteiro, enquanto que letras minúsculas (nas caixas com linhas pontilhadas) representam os locais de sub-pixel. Particularmente, os locais de pixel A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 e F1-F6 representam um arranjo de 6 por 6 de locais de pixel de número inteiro dentro de um quadro, fatia ou outra unidade codificada. Locais de sub-pixel "a" a "o" representam quinze locais de sub-pixel associados ao pixel de número inteiro C3, por exemplo, entre os locais de pixel de número inteiro C3, C4, D3 e D4. Locais de sub- pixel similares podem existir para cada local de pixel de número inteiro. Os locais de sub-pixel "a" a "o" representam cada local de pixel de meio-pel e um quarto-pel associado a um pixel de número inteiro 03.
[0083] Os locais de pixel de número inteiro podem ser associados a um elemento de sensor fisico, tal como um fotodiodo quando os dados de video foram originalmente gerados. O fotodiodo pode medir uma intensidade de uma fonte de luz no local do sensor e associar o valor de intensidade de pixel com o local de pixel de número inteiro. Outra vez, cada local de pixel de número inteiro pode ter um conjunto associado de quinze locais de sub-pixel (ou possivelmente mais). O número de locais de sub-pixel associado com os locais de pixel de número inteiro pode ser dependente da exatidão desejada. No exemplo ilustrado na Figura 3, a precisão desejada é precisão de um quarto de pixel, em cujo caso, cada um dos locais de pixel de número inteiro corresponde a quinze diferentes posições de sub-pixel. Um número maior ou menor de posições de sub-pixel pode ser associado a cada local de pixel de número inteiro com base na precisão desejada. Para precisão de meio pixel, por exemplo, cada local de pixel de número inteiro pode corresponder a três posições de sub- pixel. Como outro exemplo, cada um dos locais de pixel de número inteiro pode corresponder a sessenta e três posições de sub-pixel para exatidão de oitavo pixel. Cada local de pixel pode definir um ou mais valores de pixel, por exemplo, um ou mais valores de luminância e crominância.
[0084] Y pode representar luminância, e Cb e Cr podem representar dois valores diferentes de crominância de um espaço de cor tridimensional YCbCr. Cada local de pixel pode efetivamente definir três valores de pixel para um espaço de cor tridimensional. As técnicas dessa revelação, contudo, podem se referir à predição com relação a uma dimensão com o propósito de simplicidade. Até o ponto em que as técnicas são descritas com relação aos valores de pixel em uma dimensão, técnicas similares podem ser estendidas para outras dimensões.
[0085] No exemplo da Figura 3, locais de sub- pixel associados ao pixel de número inteiro "C3" são ilustrados para exatidão de um quarto de pixel. As quinze posições de sub-pixel associadas ao pixel C3 são rotuladas como "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "1", "m", "n" e "o". A maioria de outros locais fracionários associados com outros locais de pixel de número inteiro não são mostrados para simplicidade (exceto aqueles usados para gerar um ou mais de quinze diferentes locais fracionários associados com o local de pixel C3, conforme descrito em detalhe adicional abaixo. Locais de sub-pixel "b", "h" e "j" podem ser referidos como locais de meio pixel e locais de sub-pixel "a", "c", "d", "e", "f", "g", "i", "k", "1", "m" e "o" podem ser referidos como locais de um quarto de pixel.
[0086] A unidade de predição 32 do codificador de video 40 pode determinar valores de pixel para locais de sub-pixel "a" a "o" utilizando filtragem de interpolação por intermédio da unidade MC 37. Consistente com o padrão ITU-T H.264, por exemplo, a unidade de predição 32 pode determinar valores de pixel para locais de meio pixel utilizando um filtro de interpolação de seis derivações, tal como um filtro Wiener. No caso do padrão H.264, os coeficientes de filtro para o filtro de interpolação de seis derivações são tipicamente [1, -5, 20, 20, -5, 1], embora outras modalidades possam ser usadas. A unidade de predição 32 pode aplicar o filtro de interpolação primeiramente na direção horizontal e então na direção vertical, ou vice-versa. Para as posições de meio pixel "b" e "h", cada derivação pode corresponder a uma posição de pixel de número inteiro na direção horizontal e vertical, respectivamente. Particularmente, para a posição de meio pixel "b", as derivações do filtro de seis derivações correspondem a Cl, C2, C3, C4, C5 e C6. Similarmente, para a posição de meio pixel "h", as derivações do filtro de seis derivações correspondem a A3, B3, C3, D3, E3 e F3. Por exemplo, os valores de pixel para as posições de sub-pixel "b" e "h" podem ser computados utilizando as equações (1) e (2) : b = ((Cl - 5*C2 +20*C3 + 20*C4 - 5*C5 + C6) + 16)/32 (1) h = ((A3 - 5*B3 +20*C3 + 20*D3 - 5*E3 + F3) + 16)/32 (2)
[0087] Para a posição de meio pixel "j", as derivações do filtro de 6 derivações correspondem elas próprias àquelas interpoladas horizontalmente entre as posições C1-C6 e D1-D6, ou verticalmente entre as posições A3-F3 e A4-F4. A localização de meio pixel "j" pode ser computada com um filtro de 6 derivações que usa valores de pixel previamente interpolados das posições de meio pixel, por exemplo, de acordo com uma das equações (3) ou (4): j = ((aa - 5*bb +20*b + 20*hh - 5*ii + jj) + 16)/32 (3) j = ((cc - 5*dd + 20*h + 20*ee - 5*ff + gg) + 16)/32 (4) onde (conforme ilustrado na Figura 3) aa corresponde a uma interpolação entre A3 e A4, bb corresponde a uma interpolação entre B3 e B4, b corresponde a uma interpolação entre C3 e C4, hh corresponde a uma interpolação entre D3 e D4, ii corresponde a uma interpolação entre E3 e E4 e jj corresponde a uma interpolação entre F3 e F4. Na equação 4, cc corresponde a uma interpolação entre Cl e Dl, dd corresponde a uma interpolação entre C2 e D2, h corresponde a uma interpolação entre C3 e D3, ee corresponde a uma interpolação entre C4 e D4, ff corresponde a uma interpolação entre C5 e D5 e gg corresponde a uma interpolação entre C6 e D6.
[0088] Consistente com o padrão H.264, a unidade de predição 32 pode determinar valores de pixel em locais de um quarto de pixel "a", "c", "d", "e", "f", "g", "i", "k", "1", "m", "n" e "o" utilizando um filtro de interpolação bi linear e os valores de pixel dos locais de pixel de número inteiro e de meio pixel circundantes. Por exemplo, a unidade de predição 32 pode determinar um valor de pixel associado à posição de sub-pixel "a" utilizando valores de pixel de C3 e "b", determinar um valor de pixel associado com a posição de sub-pixel "c" utilizando valores de pixel de "b" e C4, e semelhante.
[0089] O filtro atual que é aplicado pela unidade MC 37 para gerar dados interpolados nos locais de sub-pixel pode ser submetido a uma ampla variedade de implementações. Como um exemplo, a unidade de predição 32 pode usar filtragem de interpolação adaptativa (AIF), conforme descrito abaixo, para definir os valores interpolados. O comitê ITU-T SG16/Q.6/VCEG (Grupo de Peritos em Codificação de Video) tem explorado tecnologias de codificação que oferecem eficiência de codificação superior ao do H.264 e, particularmente, AIF. AIF oferece ganho de codificação amplo em relação à filtragem de interpolação usada no padrão H.264, especialmente na sequência de video com alta resolução (por exemplo, 720i/p ou 1080i/p) . Em AIF, o filtro de interpolação para cada posição de sub-pixel é calculado analiticamente para cada quadro de video mediante minimização da energia de erro de predição. Isso ajuda a tratar dos erros de serrilhado, quantização e estimação de movimento, ruido de câmera ou outro artefato contido nos quadros de video originais e de referência. Os coeficientes de filtro adaptativo, analiticamente derivado para cada quadro são preditos, quantizados, codificados e enviados no fluxo de bits de video. Algumas das técnicas dessa revelação poderiam funcionar dentro de um esquema AIF, assim como em muitos outros esquemas de interpolação.
[0090] Há muitos tipos diferentes de esquemas AIF consistente com os aspectos dessa revelação. Por exemplo, um primeiro esquema é um AIF não separável bidimensional (NS-AIF), um segundo esquema é um AIF separável (S-AIF) , e um terceiro esquema é um AIF com filtros direcionais (D-AIF). Embora cada um desses esquemas AIF utilize diferentes técnicas e suporte de interpolação, todos os três esquemas AIF podem utilizar processos analíticos similares para derivar os coeficientes de filtro, o que é explicado abaixo utilizando AIF não separável como um exemplo.
[0091] Suponha que um filtro não separável bidimensional de 6 por 6 tenha coeficientes onde i,j = 0...5 e SP representa uma das 15 posições de sub-pixel ("a" a "o") mostradas na Figura 3. Observar que 6 das 15 posições de sub-pixel, isto é, "a", "b", "c", "d", "h" e "1", são posições de sub-pixel unidimensional (ID), e a unidade de predição 32 pode usar um filtro de interpolação de 6 derivações para interpolar tais dados. As posições de sub-pixel "a", "b", "c","d", "h" e "1" são ID no sentido de que elas estão localizadas em uma linha horizontal ou vertical entre duas posições de pixel de número inteiro. Além disso, suponha que os pixels de predição nas posições de pixel de número inteiro (Al a F6 na Figura 3) no quadro de referência assumam os valores de pixel de Pi,j onde i,j = 0...5. Isto é, Al assume o valor de Pozo, ..., A6 assume o valor de Ps,o,F1 assume o valor de Ps,o, ..., e F6 assume o valor de Ps,s. Então, o valor interpolado psp na posição de sub-pixel SP, SPe^i,...,o} pode ser calculado pela unidade de predição 32 utilizando a seguinte equação
[0092] Deixemos Sx,y ser o valor de pixel no quadro de video atual na posição (x, y). onde (mvx,mvy) é o vetor de movimento ([mvxJ,[mvyJ ) é o componente de número inteiro do vetor de movimento, FO é o deslocamento de filtro. O valor (x,y] é a posição de pixel correspondente nos quadros de referência. Por exemplo, no caso do filtro de 6 derivações, FO = 6/2-l=2. Para cada posição de sub-pixel SP, a energia de erro de predição J entre o valor de pixel atual no quadro atual e o valor interpolado pode ser acumulado pela unidade de predição 32 para todos os pixels que têm precisão de vetor de movimento correspondendo à posição de sub-pixel SP. A / ÇD \2 estratégia de erro de predição ) pode ser calculada pela unidade de predição 32 utilizando a seguinte equação:
[0093] Para cada uma das posições de sub-pixel a até o, a unidade MC 37 pode estabelecer um conjunto individual de equações mediante computação da derivada de («SP 7 SA e ) com relação aos coeficientes de filtro . O número de equações nesse caso é igual ao número de coeficientes de filtro usados para a posição de sub-pixel atual SP. Para cada posição de sub-pixel bidimensional (2D) "e", "f", "g", "i", "j", "k", "m", "n" e "o", a unidade de predição 32 pode usar um filtro de interpolação 2D de 6 por 6 derivações. As posições de sub-pixel "e", "f", "g", "i", "j", "k", "m", "n" e "o", são 2D no sentido de que elas não estão localizadas em uma linha vertical ou em uma linha horizontal entre duas posições de pixel número inteiro. Nesse caso, um sistema de 36 equações com 36 incógnitas pode ser resolvido pela unidade MC 37. As posições de sub- pixel 1D restantes "a", "b", "c", "d", "h" e "1" podem exigir apenas um filtro de interpolação 1D (por exemplo, filtro de 6 derivações 1D) . No caso de um filtro de 6 derivações ID, um sistema de 6 equações pode ser resolvido pela unidade MC 37.
[0094] O filtro(s) 39 pode filtro ou um conjunto de muitos filtros podem ser usados pela unidade MC 37 para preditivos.
[0095] Assim, um processo exemplar de derivar e aplicar os filtros AIF pode ter as seguintes etapas, as quais podem ser realizadas pela unidade de predição 32: • Estimar vetores de movimento (mvx,mvy) para cada bloco de video a ser codificado. Durante a estimação de movimento, um filtro de interpolação fixa (por exemplo, o processo de interpolação de H.264/AVC) pode ser aplicado. • Utilizar esses vetores de movimento, acumular energia de erro de predição para cada posição de sub-pixel SP através do quadro de video atual. Então, calcular os coeficientes de filtro adaptativo hf? para cada posição de sub-pixel SP independentemente mediante minimização da energia de erro de predição como nas duas equações de energia de predição acima. • Estimar novos vetores de movimento. Durante esse processo de estimação de movimento, os filtros de interpolação adaptativos computados na etapa 2 podem ser aplicados. Utilizando os filtros de interpolação adaptativos, os erros de estimação de movimento, causados por serrilhado, ruido de câmera, etc., são reduzidos e obtém-se melhor predição de movimento.
[0096] Diferentes esquemas AIF podem utilizar o mesmo processo analítico conforme fornecido acima. As diferenças entre os esquemas diferentes estão situadas na maior parte no número de coeficientes de filtro únicos usados, se os filtros de interpolação são separáveis ou não separáveis, e o suporte de filtro usado (isto é, posições de pixel de número inteiro usadas para interpolar ao menos uma porção das posições de sub-pixel) . Em cada um desses esquemas, certas restrições de simetria nos filtros AIF podem ser impostas para reduzir o número de coeficientes de filtro que precisam ser codificados e enviados no fluxo de bits de video.
[0097] Para NS-AIF, por exemplo, a unidade MC 37 da unidade de predição 32 pode interpolar as posições de sub-pixel 1D "a", "b", "c", "d", "h" e "1" utilizando um filtro de interpolação de 6 derivações 1D (também referido como um filtro de 6 posições uma vez que cada derivação corresponde a uma posição de pixel de número inteiro) , que requer 6 coeficientes. Os 6 coeficientes dos filtros de 6 posições usados para interpolar o sub-pixel 1D correspondem individualmente a uma das 6 posições de pixel de número inteiro ilustradas na Figura 3. Por exemplo, para as posições de sub-pixel "b", "b", e "c", as 6 posições de pixel de número inteiro correspondendo aos Cl, C2, C3, C4, C5 e C6 e para posições de sub-pixel "d", "h" e "1", as seis posições de pixel de número inteiro correspondendo aos coeficientes são A3, B3, C3, D3, E3 e F3. Essas posições de pixel de número inteiro representam o "suporte de filtro" do filtro de interpolação.
[0098] A unidade de predição 32 pode interpolar as posições de sub-pixel 2D, "e", "f", "g", "i", "j", "k", "m", "n", e "o" utilizando um filtro de interpolação de 6 por 6 2D, que requer 36 coeficientes de filtro. Os 36 coeficientes do filtro de interpolação 6x6 2D utilizados para interpolar o sub-pixel 2D correspondem individualmente às posições de pixel de úmero inteiro Al- A6, B1-B6, C1-C6, D1-D6, E1-E6 e F1-F6. Essas posições de pixel de número inteiro representam o "suporte de filtro" do filtro de interpolação. Se nenhuma restrição adicional for imposta, por exemplo, nenhuma simetria de coeficiente ou pixel, o codificador de video 50 pode codificar e transmitir 9 conjuntos de 36 coeficientes para as posições de sub-pixel 2D e 6 conjuntos de 6 coeficientes para as posições de sub-pixel 1D, para um total de 360 coeficientes. A codificação e envio desse número de coeficientes no fluxo de bits de video pode resultar em overhead de bits, dispendioso. O elevado overhead de bits pode, por sua vez, aumentar a taxa de bits para um determinado nivel de distorção, o que é indesejável.
[0099] Para reduzir o overhead de bits associados ao envio dos coeficientes de filtro, certas restrições de simetria podem ser impostas aos filtros de interpolação para reduzir o número de coeficientes de filtro singulares que precisam ser enviados para o decodificador 28. Dois tipos de simetria, isto é, a simetria de pixel e a simetria de coeficiente podem ser impostas, isoladamente ou em combinação. A simetria de pixel impõe o mesmo conjunto de coeficientes de filtro (e versões equivalentes, invertidas e/ou giradas do conjunto) para diferentes posições de sub-pixel. A simetria de pixel também pode ser referida como simetria de sub-pixel à medida que tal simetria de pixel se aplica com relação aos coeficientes de filtro associados a dois ou mais locais de sub-pixel. Simetria de coeficiente, por outro lado, impõe um filtro de interpolação determinado para ser simétrico em certa direção (por exemplo, direção horizontal, direção vertical; ou ambas) para as diversas posições de suporte de filtro em relação a outras posições de suporte de filtro para valores de sub-pixel determinados para serem interpolados.
[00100] A simetria de pixel pode ser usada em NS-AIF. Com referência outra vez à Figura 3, deixemos Aoa,Aj,...,/z5a ser o conjunto de coeficientes de filtro para a posição de sub-pixel "a", então o conjunto de coeficientes de filtro para a posição de sub-pixel "c" é h“,h^, isto é, o mesmo coeficiente na ordem inversa ou horizontalmente invertido. Isto é, o valor de pixel de predição pL1na posição de sub-pixel "a" e valor de pixel de predição pc na posição de sub-pixel "c" podem ser calculados utilizando (8) e (9), respectivamente.
[00101] As posições de sub-pixel "d" e "1"podem ser interpoladas utilizando o mesmo conjunto de coeficientes de filtro de interpolação como posições de sub-pixel "a" e "c", respectivamente. Como tal, as posições de sub-pixel "a" e "c" podem ter simetria de pixel em relação às posições de sub-pixel "d" e 1".
[00102] Um aspecto dessa revelação é a de efetivamente remover a simetria de pixel entre as posições de sub-pixel "a" e "c" em relação às posições de sub-pixel "d" e "1". Além disso, a simetria de pixel pode ser evitada para a posição de sub-pixel "f" em relação à posição de sub-pixel "i". Além disso, a simetria de pixel pode ser evitada para a posição de sub-pixel "k" em relação à posição de sub-pixel "n". Em tais casos, a correlação diagonal pode ser baixa, tornando ineficiente ou ineficaz a imposição de simetria diagonal nesses casos.
[00103] Como outro exemplo, deixemos he0 0,he01,...,he0 5,...,he5O,he5 x,...,h3S ser o conjunto de coeficientes de filtro 2D de 6 por 6 para posição de sub-pixel "e". Então o conjunto de coeficientes de filtro para a posição "g" é (versão horizontalmente invertida) . Similarmente, o conjunto de coeficiente de filtro para a posição de sub-pixel "m" é hl0,h3l,...,h* s,...,heQ 0,he03,...,he0 s(versão verticalmente invertida), e o conjunto de coeficientes de filtro para a posição de sub-pixel "o" é A5%,A5%,...,A5%,...,Aθ 0 (primeiramente horizontalmente invertida e então invertida verticalmente). Como tal, as posições de sub-pixel "e", "g", "m" e "o" têm simetria de pixel. A simetria entre as posições de sub-pixel "b" e "h", e entre as posições "f", "i", "k" e "n" são impostas de uma maneira similar a dos exemplos dados acima. Sob tal restrição de simetria de pixel, permanecem apenas cinco grupos de conjuntos de filtros singulares, um primeiro conjunto de coeficientes de filtro para o grupo de sub- pixel "a", "c", "d" e "1", um segundo conjunto de coeficientes de filtro para o grupo de sub-pixel "b" e "h", um terceiro conjunto de coeficientes de filtro para o grupo de sub-pixel "e", "g", "m" e "o", um quarto conjunto de coeficientes de filtro para o grupo "f", "i", "k" e "n", e um quinto conjunto de coeficientes de filtro para o grupo de sub-pixel "j".
[00104] Além disso, NS-AIF pode impor restrição de simetria de coeficiente em alguns desses conjuntos de filtro, isoladamente ou em combinação com a simetria de sub-pixel descrita acima. Em alguns casos, a simetria de coeficiente diagonal pode ser evitada propositalmente, por exemplo, eliminando-se quaisquer restrições de simetria de coeficiente diagonal. E um caso, nenhuma simetria de coeficiente é imposta ao filtro para o primeiro grupo de posições de sub-pixel, que inclui locais de sub-pixel "a", "c", "d' e "1". Contudo, o segundo grupo de posições de sub-pixel, que inclui o coeficiente "c" e "h", pode ter simetria de coeficiente de acordo com a equação (10).
[00105] Similarmente, os coeficientes para os filtros de interpolação para o terceiro, quarto e quinto grupos de Posições de sub-pixel, que incluem as posições de sub-pixel "e", "f"e"j", respectivamente, podem ter simetria de coeficiente conforme dado nas equações (11), (12) e (13), respectivamente.
[00106] Sob tais restrições de simetria de pixel e de simetria de coeficiente descritas acima, o numero de coeficientes de filtro únicos pode ser reduzido de 360 (nenhuma restrição de simetria) para 6(a) + 3(b) + 21(e) + 18(f) + 6(j) = 54 coeficientes, isto é, 6 coeficientes para o grupo incluindo a posição de sub-pixel "a", 3 coeficientes para o grupo incluindo a posição de sub-pixel "b", 21 coeficientes para o grupo incluindo a posição de sub-pixel "e", 18 coeficientes para o grupo incluindo a posição de sub-pixel "f" e 6 coeficientes para o grupo incluindo a posição de sub-pixel "j". Assim, em NS- AIF, o codificador de video 22 pode codificar e transmitir 54 coeficientes em vez de 360, como no caso de nenhuma restrição de simetria. Conforme descrito acima, os 54 coeficientes podem ser resolvidos analiticamente com base na equação (7) acima. O codificador de video 50 pode então predizer, quantizar, codificar (por exemplo, utilizando o código Exp-Golomb com sinal), e enviar os coeficientes no fluxo de bits. Detalhes adicionais sobre a codificação preditiva dos coeficientes de filtro são discutidos em maior detalhe abaixo. A unidade de predição e quantização de coeficiente 41 pode ser usada para codificação e quantização preditiva dos coeficientes de filtro consistente com essa revelação.
[00107] Em outro esquema AIF, isto é, S-AIF, a unidade de predição 32 pode usar filtros de interpolação separáveis na direção horizontal e na direção vertical, em vez de filtros de interpolação não separáveis conforme usado em NS-AIF. Para as posições de sub-pixel ID, a unidade de predição (por exemplo, unidade MC 37 da unidade de predição 32) aplica apenas filtros direcionais horizontais ou apenas filtros direcionais verticais dependendo da localização de sub-pixel. Em um exemplo, os filtros direcionais horizontais e verticais compreendem filtros de 6 posições (ou 6 derivações) . A unidade de predição 32 aplica filtros direcionais horizontais para as posições de sub-pixel "a", "b", e "c" com posições de pixel de número inteiro Cl, C2, C3, C4, C5 e C6 (vide Fiqura 3) como suporte de filtro e aplica filtros direcionais verticais para posições de sub-pixel "d", "h" e "1" com posições de pixel de número inteiro A3, B3, C3, D3, E3 e F3 (vide Fiqura 3) como suporte de filtro. Para as posições de sub-pixel restantes, isto é, as posições de sub-pixel 2D, a unidade de predição 32 aplica primeiramente filtraqem horizontal, sequida pela filtragem vertical ou filtragem vertical seguida pela filtragem horizontal. Outra vez, os coeficientes de filtro usados para os filtros horizontais e verticais separáveis podem ser computados de acordo com a equação (7) acima. Sem qualquer simetria, S-AIF pode reduzir o número de coeficientes que precisam ser codificados e enviados para 144 coeficientes a partir de 360 coeficientes, como é o caso de NS-AIF com nenhuma simetria.
[00108] S-AIF pode impor ainda uma ou mais restrições de simetria em pelo menos alguns dos filtros de interpolação. Ao contrário da simetria de sub-pixel de NS- AIF, com S-AIF, os conjuntos de filtros usados para as posições de sub-pixel "a" e "c" não são simétricos, isto é, versões horizontalmente invertidas uma da outra. Na realidade, os coeficientes dos conjuntos de filtro usados para as posições de sub-pixel "a" e "c" são derivados independentemente uns dos outros como , Zzf,..., Z?" e hca,h^,...,hc5 , respectivamente. Para cada posição de sub-pixel que tem movimento vertical, a simetria de sub-pixel é similar a NS- AIF. Isto é, os coeficientes para as posições de sub-pixel "d" e "1", coeficientes para as posições de sub-pixel "e" e "m", coeficientes para as posições de sub-pixel "f" e "n", e coeficientes para as posições de sub-pixel "g" e "o" são versões verticalmente invertidas uma das outras, respectivamente. Por exemplo, se os coeficientes do filtro vertical para a posição de sub-pixel "d" são , então os coeficientes do filtro vertical para a posição de sub-pixel "1" são Z?/, Z?/,..., Zzj7 . Assim, a simetria de sub-pixel usada em S-AIF tem apenas simetria de sub-pixel vertical em uma dimensão. S-AIF, contudo, não tem simetria de sub-pixel horizontal. A simetria de sub-pixel em S-AIF pode reduzir o número de coeficientes que precisam ser codificados e enviados a partir de 144 coeficientes para 102 coeficientes.
[00109] S-AIF, como NS-AIF, também podem usar simetria de coeficiente para reduzir ainda mais o número de coeficientes que precisam ser codificados e enviados pelo codificador de video 50. A simetria de coeficiente usada em S-AIF pode ser a mesma como em NS-AIF, exceto que em S-AIF há apenas filtros de 6 derivações 1D (horizontal ou vertical) . Em outras palavras, não há filtros 2D 6 por 6. Em S-AIF, para cada posição de sub-pixel SP, SP e {b,h.i, j,k], os coeficientes de filtro podem ter simetria conforme indicado na equação (14).
[00110] Portanto, com simetria de sub-pixel e simetria de coeficiente, os filtros S-AIF podem ter 11 conjuntos de filtros de 6 derivações 1D, cinco dos quais são filtros simétricos cada um tendo três coeficientes únicos. Os restantes seis filtros podem ter individualmente seis coeficientes únicos. Nesse caso, o codificador de video 22 pode quantizer, predizer, codificar, e enviar um total de 51 coeficientes de filtro únicos no fluxo de bits de video.
[00111] Em outro esquema AIF, D-AIF, a unidade de predição 32 utiliza filtros direcionais para as posições de sub-pixel 2D "e", "f", "g", "i", "j", "k", "m", "n" e "o". Os filtros direcionais podem compreender filtros de seis derivações, e coeficientes podem ter simetria de modo que apenas um subconjunto dos coeficientes precisa ser transmitido. Conforme aqui descrito, suporte de filtro se refere às posições de pixel a partir do quadro de referência que é usado na interpolação das posições de sub- pixel. A unidade MC 37 pode computar as posições de sub- pixel "e" e "o" com um filtro de interpolação diagonal de 6 posições (ou 6 derivações) que tem posições de pixel de número inteiro Al, B2, C3, D4, E5 e F6 como suporte de filtro. A unidade de predição 32 pode computar as posições de sub-pixel "g" e "m" com um filtro de interpolação diagonal de 6 posições que tem posições de pixel de número inteiro A6, B5, C4, D3, E2 e Fl como suporte de filtro. A unidade de predição 32 pode computar as posições de subpixel "f", "i", "j", "k" e "n" com um filtro de interpolação diagonal de 12 posições que tem posições de pixel de número inteiro Al, B2, C3, D4, E5, F6, A6, B5, C4, D3, E2 e Fl como suporte de filtro.
[00112] D-AIF pode utilizar a mesma simetria de sub-pixel e coeficiente conforme descrito acima com relação a NS-AIF. Em termos de simetria de sub-pixel, há cinco conjuntos únicos de coeficientes de filtro para interpolar as quinze posições de sub-pixel com as posições de sub- pixel "a", "c", "d" e "1" compartilhando os mesmos coeficientes de filtro (por exemplo, versões equivalentes, invertidas e/ou giradas), posições de sub-pixel "r", "g", "m" e "o" compartilhando os mesmos coeficientes de filtro (por exemplo, versões equivalentes, invertidas e/ou giradas), posições de sub-pixel "b" e "h" compartilhando os mesmos coeficientes de filtro ("b" sendo um filtro horizontal e "h" sendo um filtro vertical), posições de sub-pixel "f", "i", "k" e "n" compartilhando os mesmos coeficientes de filtro (por exemplo, versões equivalentes, invertidas e/ou giradas), e a posição de sub-pixel "j" tem seu próprio conjunto de coeficientes de filtro.
[00113] Em termos de simetria de coeficiente, os coeficientes de filtro para o primeiro grupo de sub- pixel incluindo "a", "c", "d" e "1", utiliza um filtro de 6 posições 1D tendo seis coeficientes únicos (isto é, o primeiro grupo sendo não simétrico), coeficientes de filtro para o segundo grupo de sub-pixel "b" e "h" usa um filtro de 6 posições 1D tendo três coeficientes singulares, (isto é, b é simétrico) , e um terceiro conjunto de coeficientes de filtro para o grupo de sub-pixel "e", "g", "m" e "o" usa um filtro direcional de 6 posições tendo seis coeficientes únicos. Um quarto conjunto de coeficientes de filtro para o grupo "f", "i", "k", e "n" utiliza um filtro de 12 derivações que tem seis coeficientes únicos e um quinto conjunto de coeficientes de filtro para o grupo "j" tendo três coeficientes únicos. O número total de coeficientes únicos no esquema D-AIF é 6(a) + 3(b) + 6(c) + 6(f) + 3 (j) = 24 coeficientes. Esses coeficientes de filtro podem ser preditos, quantizados, codificados e enviados no fluxo de bits de video.
[00114] A unidade MC 37 da unidade de predição 32 pode usar uma ou mais das técnicas de interpolação aqui descritas para aperfeiçoar a exatidão de interpolação de posições de sub-pixel e/ou reduzir o número de coeficientes de filtro de interpolação que precisam ser codificados e transmitidos. É descrito em maior detalhe abaixo um suporte de filtro de 12 pixels útil com um formato radial que pode ser usado para interpolação, técnicas que utilizam simetria de coeficiente e simetria de pixel para reduzir a quantidade de dados necessários para serem enviados entre um codificador e um decodificador para configurar o suporte de filtro para interpolação, técnicas para remover alguns aspectos de simetria em relação às técnicas convencionais, e técnicas para filtrar dados em locais de pixel de número inteiro de uma maneira que é similar à interpolação de sub- pixel. Técnicas de deslocamento também são descritas. Além disso, técnicas para selecionar entre filtros de interpolação, e técnicas para codificar de forma preditiva os coeficientes de filtro também são descritas.
[00115] A Figura 4 é um diagrama conceptual ilustrando um suporte de filtro de 12 pixels com relação aos nove locais de sub-pixel. De acordo com essa revelação, a unidade MC 37 pode computar valores de sub-pixel para as posições de sub-pixel "e", "f", "g", "i", "j", "k", "m", "n" e "o" com base nos valores de pixel de número inteiro, sombreados. Nesse caso, computar os valores de sub-pixel compreende aplicar um filtro de interpolação que define um arranjo bidimensional de posições de suporte de filtro correspondendo a um conjunto de 12 posições de pixel de número inteiro (ou possivelmente mais) que circundam as posições de sub-pixel conforme ilustrado na Figura 4. As posições de suporte de filtro são mostradas com sombreamento e letras maiúsculas, e as posições de sub- pixel são mostradas como caixas com linhas pontilhadas e letras minúsculas. A unidade MC 37 pode interpolar pixels dessa maneira para cada pixel de um bloco de video, e pode gerar um bloco de predição com base na interpolação dos valores de sub-pixel. O suporte de filtro de 12 posições tem um formato radial, e tem resposta de frequência similar ao suporte de filtro de 36 posições usado em NS-AIF, mas com complexidade de interpolação muito reduzida.
[00116] Conforme pode ser considerado a partir da Figura 3, os valores de sub-pixel podem compreender 15 valores de metade de pixel e um quarto de pixel. O filtro de interpolação que define o arranjo bidimensional de posições de suporte de filtro é aplicado para definir nove dos 15 valores de metade de pixel e um quarto de pixel conforme mostrado na Figura 4.
[00117] O conjunto de doze ou mais posições de pixel de número inteiro que circundam as posições de sub- pixel é mostrado com sombreamento na Figura 4, e pode incluir quatro posições de pixel de número inteiro C3, C4, D3 e D4 circundando os nove valores de metade de pixel e um quarto de pixel, e oito posições de pixel de número inteiro B3, B4, C2, C5, D2, D5, E3 e E4 circundando as quatro posições de pixel de número inteiro. Cada uma das posições de suporte de filtro no arranjo bidimensional de posições de suporte de filtro mostradas na Figura 4 estão dentro de duas posições de pixel de número inteiro em relação às posições de sub-pixel. Tal filtragem pode formar parte de compensação de movimento durante um processo de codificação de video por intermédio do codificador de video 50 (Figura 2) ou durante um processo de decodificação de video pelo decodificador de video 60 (Figura 16) . Durante o processo de codificação de video, a unidade de predição 32 envia uma pluralidade de conjuntos de valores de coeficiente para a unidade de codificação por entropia 46 como parte dos elementos de sintaxe de predição. Conforme mostrado na Figura 4, o conjunto de doze ou mais posições de pixel de número inteiro que circundam as posições de sub-pixel tem um formato radial e pode compreender um conjunto de posições de pixel de número inteiro espacialmente mais próximas dos nove valores de metade de pixel e um quarto de pixel definidos pelo filtro de interpolação (por exemplo, filtro(s) 39 na Figura 2).
[00118] A unidade de codificação por entropia 46 pode codificar os conjuntos de valores de coeficiente e emitir os valores de coeficiente do filtro de interpolação como parte de um fluxo de bits codificado, o qual pode ser então transmitido para outro dispositivo. Cada um dos vários conjuntos de valores de coeficiente definidos com relação a cada local de sub-pixel diferente mostrado na Figura 4 pode definir pesos diferentes para as doze ou mais posições de pixel de número inteiro. A simetria de pixel pode existir de tal modo que M conjuntos de valores de coeficiente definem N diferentes pesos para as doze ou mais posições de pixel de número inteiro, em que M e N são números inteiros positivos e N é maior do que M. Em outras palavras, a simetria de pixel pode permitir que alguns dos locais de pixel se baseiem em pesos equivalentes, invertidos ou girados de outros locais de pixel de modo que os coeficientes não precisam ser codificados para localizações que têm simetria de pixel com outros locais de sub-pixel.
[00119] A Figura 5 é um diagrama conceptual ilustrando um suporte de filtro horizontal de cinco pixels com relação a três locais horizontais de sub-pixel, e um suporte de filtro de seis pixels, vertical com relação a três locais verticais de sub-pixel. Os locais de suporte de filtro são sombreados com letras maiúsculas, e os locais de sub-pixel não são sombreados, com letras minúsculas e linhas pontilhadas. A unidade MC 37 pode computar os valores de sub-pixel para os locais "a", "b", e "c" mediante aplicação de um filtro de interpolação linear que define um arranjo unidimensional de posições de suporte de filtro C1-C6. A unidade MC 37 também pode computar os valores de sub-pixel para os locais "d", "h", e "1" mediante aplicação de um filtro de interpolação linear que define um arranjo unidimensional de posições de suporte de filtro A3-F3. Desse modo, os filtros de interpolação linear podem ser usados para seis dos quinze valores de metade de pixel e um quarto de pixel; mostrados na Figura 3.
[00120] A Figura 6 é um diagrama conceptual ilustrando um suporte de filtro de cinco pixels por cinco pixels para filtrar um local de pixel de número inteiro. Nesse caso a filtragem semelhante à interpolação pode ser aplicada com relação aos locais de pixel de número inteiro para gerar valores de pixel de número inteiro ajustados. Na Figura 6, por exemplo, valor de pixel de número inteiro na posição C3 pode ser filtrado com base em um arranjo de pixel de cinco por cinco a A1-A5, B1-B5, C1-C5, D1-D5 e El- E5. Outros suportes de filtro poderiam ser definidos para filtragem de número inteiro. Nesse caso, se a unidade ME 35 identifica um bloco de pixels de número inteiro, a unidade MC 37 pode filtrar cada pixel com base em um arranjo de pixel de cinco por cinco mostrado na Figura 6 (ou outro suporte de filtro) para gerar valores de pixel de número inteiro, filtrados. Desse modo, filtragem semelhante à interpolação pode ser aplicada aos pixels de número inteiro, os quais podem aperfeiçoar a codificação em momentos de mudanças de iluminação ou aparecimentos ou desaparecimentos graduais de cena. Além disso, filtragem de número inteiro pode remover ruido e facilitar a nitidez de quadro de imagem, e pode ajudar a aperfeiçoar a codificação de movimento de objeto preciso entre os sucessivos quadros de video particularmente quando a simetria não é imposta aos coeficientes de filtro. Filtragem de pixel de número inteiro pode ser extremamente útil em aperfeiçoar a qualidade e/ou compactação para sequências de video que tem mudanças de foco.
[00121] Desse modo, o codificador de video 22 e/ou decodificador de video 28 pode utilizar filtragem semelhante à interpolação com relação às posições de pixel de número inteiro para gerar valores de pixel de número inteiro ajustados. O codificador de video 22 ou o decodificador de video 28 pode, por exemplo, obter blocos de pixels em que os blocos de pixels incluem valores de pixel de número inteiro correspondendo às posições de pixel dentro do bloco de pixels. O codificador de video 22 ou decodificador de video 28 pode filtrar os valores de pixel de número inteiro com base em outros valores de pixel de número inteiro dentro dos blocos de pixels para gerar valores de pixel de número inteiro ajustados, em que os valores de pixels de número inteiro ajustados correspondem às posições de pixel de número inteiro, e gerar um bloco de predição com base nos valores de pixel de número inteiro ajustados. O bloco de predição pode ser então usado para codificar ou decodificar um bloco de video, dependendo de se o processo é realizado durante a codificação ou decodificação.
[00122] Se a técnica for realizada durante um processo de codificação, o codificador de video 22 pode gerar um bloco de video residual como uma diferença entre o bloco de video atual sendo codificado e o bloco de predição. O codificador de video 22 também pode codificar um conjunto de coeficientes de filtro por unidade codificada para filtragem de número inteiro, ou possivelmente codificar dois ou mais conjuntos de coeficientes de filtro por unidade codificada para filtragem de número inteiro em diferentes locais dentro da unidade codificada. No exemplo da Figura 6, os suportes de filtro para a filtragem de número inteiro podem definir um filtro bidimensional, por exemplo, um filtro de 5 por 5 com deslocamento. Adicionalmente, simetria de coeficiente pode existir entre pelo menos alguns coeficientes usados para a filtragem de tal modo que apenas um subconjunto de 25 diferentes coeficientes é necessário para determinar todos os 25 coeficientes para o filtro. Muitos outros tamanhos e formatos de filtro podem ser usados de acordo com filtragem de pixel de número inteiro.
[00123] Se a filtragem de pixel de número inteiro for realizada durante um processo de decodificação, a técnica pode compreender a geração de um bloco de video reconstruído como uma soma de um bloco de video residual associado a um bloco de video atual sendo decodificado e o bloco de predição. Nesse caso, o dispositivo de decodificação (por exemplo, dispositivo de destino 16) pode receber um conjunto de coeficientes de filtro por unidade codificada por filtragem de número inteiro, ou pode receber dois ou mais conjuntos de coeficientes de filtro por unidade codificada para filtragem de número inteiro em diferentes locais dentro da unidade codificada. Cada unidade codificada pode ter um ou mais conjuntos de coeficientes de filtragem de pixel de número inteiro, assim como conjuntos de coeficientes de filtragem de sub-pixel, por exemplo, oito conjuntos que podem ser usados para gerar todos os quinze conjuntos para as posições de meio pixel e um quarto de pixel.
[00124] Outra vez, a filtragem semelhante à interpolação de valores de pixel de número inteiro pode aperfeiçoar a compactação especificamente durante mudanças de iluminação, aparecimentos ou desaparecimentos graduais de cena, podem remover ruido e facilitar nitidez de quadro de imagem, e pode ajudar a melhorar a codificação de movimento de objeto preciso entre quadros de video sucessivos particularmente quando a simetria não for imposta aos coeficientes de filtro. Além disso, filtragem de pixel de número inteiro também é considerada extremamente útil, por exemplo, para aperfeiçoar a compactação, em sequências de video que têm mudanças de foco.
[00125] Convencionalmente, filtragem semelhante à interpolação não é realizada para as posições de pixel de número inteiro em AIF. Em vez disso, a posição de pixel de número inteiro correspondente no quadro de referência é simplesmente usada "no estado". Contudo, de acordo com essa revelação, um filtro pode ser usado para locais de pixel de número inteiro de uma maneira que é similar às interpolações. Filtragem de interpolação em posições de pixel de número inteiro é tecnicamente uma designação incorreta, uma vez que os valores de pixel de posições de pixel de número inteiro já existem. Assim, a filtragem de posições de pixel de número inteiro é referida aqui como filtragem semelhante à interpolação, e pode ser vista como simplesmente filtrando os valores de pixel de número inteiro para gerar novos valores de pixel ajustados.
[00126] Ao contrário da filtragem de interpolação para posições de sub-pixel, onde o objetivo é o de obter os valores não existentes no quadro de referência, os pixels em posições de número inteiro no quadro de referência já existem. Ainda assim, aplicar filtragem nas posições de pixel de número inteiro no quadro de referência oferece um número de benefícios. Por exemplo, quando as posições de pixel de número inteiro contêm um deslocamento, a filtragem das posições de pixel de número inteiro pode permitir melhor captura de mudanças de iluminação entre os quadros. Adicionalmente, a filtragem nas posições de pixel de número inteiro pode permitir que as posições de pixel de número inteiro para capturar efeitos especiais tais como aparecimento ou desaparecimento gradual. A filtragem nas posições de pixel de número inteiro também pode remover certos ruidos de sinal (tal como ruido de câmera) e/ou realizar nitidez, se necessário. Além disso, se nenhuma simetria no filtro de pixel de número inteiro for imposta, o filtro de pixel de número inteiro pode ajudar a capturar movimento preciso de objeto, tal como o movimento de objeto que não é um múltiplo de um quarto de pixel. Finalmente, filtragem de pixel de número inteiro também pode ser útil no melhoramento da compactação de sequências de video quando ocorrer mudanças de foco.
[00127] Em alguns casos, filtragem das posições de pixel de número inteiro pode ser dependente dos vetores de movimento. Em outras palavras, a unidade MC 37 da unidade de predição 32 pode aplicar de forma adaptativa a filtragem de interpolação com base no vetor de movimento identificado pela unidade ME 35. Por exemplo, a filtragem de interpolação das posições de pixel de número inteiro pode ser realizada quando o vetor de movimento apontar para uma posição de pixel de número inteiro. A filtragem de interpolação pode resultar em um valor de pixel ajustado para a posição de pixel de número inteiro. Quando o vetor de movimento aponta para uma posição de sub-pixel, nenhuma filtragem das posições de pixel de número inteiro é realizada com relação aos valores de pixel de número inteiro, mas a filtragem pode ser usada para interpolação dos valores de sub-pixel. Dessa maneira, a filtragem de pixel de número inteiro pode ser considerada adaptativa com base nos vetores de movimento.
[00128] Para posições de pixel de número inteiro, um filtro de interpolação de 5 por 5 na forma da equação (15) pode ser derivado utilizando-se o mesmo processo analítico usado para derivar os filtros de posição de sub-pixel. onde PFP é o valor de pixel de número inteiro filtrado, P±,j é o valor de pixel de número inteiro na posição (i, j), é o coeficiente para a posição (i, j), e oFP é um deslocamento de filtro. Em alguns casos, o filtro de interpolação para as posições de pixel de número inteiro pode não ter um deslocamento de filtro (isto é, oFP=0) . Em outros casos, o deslocamento de filtro oFP pode usar qualquer uma de várias técnicas. Deslocamentos diferentes podem ser definidos para cada posição de sub- pixel, por exemplo, quinze diferentes deslocamentos podem ser definidos para cada posição de sub-pixel mostrada na Figura 3. Outro deslocamento pode ser definido para pixels de número inteiro, levando o número total de deslocamentos para dezesseis.
[00129] Para reduzir o número de coeficientes de filtro a serem transmitidos, simetria de coeficiente como na equação (16) pode ser imposta ao filtro de pixel de número inteiro. outras formas de simetria de coeficiente também podem ser usadas. Se a simetria de coeficiente é imposta pode ser decidido pelo codificador e sinalizador para o decodificador. Se a simetria como em (16) for usada no filtro de pixel de número inteiro, então nove coeficientes de filtro e um deslocamento podem precisar ser enviados ao decodificador.
[00130] A codificação dos deslocamentos pode ser feita mediante primeiramente codificação de um deslocamento de número inteiro e então codificar cada deslocamento fracionário. Nesse caso, o deslocamento de número inteiro e os deslocamentos fracionários são codificados diferentemente. O deslocamento de número inteiro pode ser codificado utilizando-se código Golomb exponencial assinado. Dependendo da magnitude do deslocamento de número inteiro, os deslocamentos fracionários podem ser quantizados diferentemente do deslocamento de número inteiro. Por exemplo, niveis mais grosseiros de quantização podem ser aplicados nos deslocamentos fracionários quando um deslocamento de número inteiro tem uma magnitude ampla. Após a quantização, os deslocamentos fracionários podem ser codificados utilizando-se códigos de comprimento fixo. Como um exemplo, o seguinte pseudocódigo pode ilustrar como um determinado deslocamento fracionário pode ser codificado utilizando diferentes códigos de comprimento fixo definidos com base no valor de deslocamento de número inteiro. Deixemos offsetl ser o deslocamento de número inteiro Deixemos offsetF ser o deslocamento fracionário Deixemos offsetFbits ser o número de bits usado para quantizer offsetF Deixemos abs (a) ser o valor absoluto de um se (abs(offsetl)=0) offsetFbits=5 então se (abs(offsetl)<3) offsetFbits=4 então se (abs(offsetl)<7) offsetFbits=2 então offsetFbits=0
[00131] Nesse caso, o codificador de video 50 pode usar a unidade de predição e quantização de coeficiente 41 que para cada um dos valores de deslocamento atribui um primeiro número de bits a uma porção de número inteiro de um determinado valor de deslocamento e atribui um segundo número de bits a uma porção fracionária do valor de deslocamento determinado, em que o primeiro e o segundo número de bits são determinados com base em uma magnitude da porção de número inteiro. Nesse caso, as versões quantizadas dos valores de deslocamento podem ser enviadas a partir da unidade de predição 32 como elementos de sintaxe de predição após a quantização dos valores de deslocamento se realizada consistente com o pseudocódigo acima. Em todo o caso, o codificador de video 50 pode codificar o primeiro número de bits diferentemente do segundo número de bits.
[00132] A Figura 7 é um diagrama conceptual ilustrando quatro posições de pixel de número inteiro e 15 posições de sub-pixel com sombreamento para agrupar posições de pixel que podem utilizar simetria de pixel para coeficientes de filtro consistentes com essa revelação. Particularmente, a Figura 7 ilustra posições de sub-pixel "a" a "o" correspondendo à posição de pixel de número inteiro C3. As posições de sub-pixel de número inteiro mostradas na Figura 7 correspondem àquelas das Figuras 4 e 5. Isto é, locais de sub-pixel "e", "f", "g", "i", "j", "k", "m", "n" e "o" podem ter valores determinados por um suporte de doze pixels conforme mostrado na Figura 4, ao passo que os locais de sub-pixel "a", "b", e "c", e locais de sub-pixel "d", "h", e "1", podem ter valores determinados por suportes de pixel, horizontal e linear, mostrados na Figura 5.
[00133] Nesse cenário, a simetria de pixel pode ser imposta de tal modo que os coeficientes de filtro para o local de pixel "a" estão em simetria com relação aos coeficientes de filtro para o local de pixel "c". Similarmente, a simetria de pixel pode ser imposta de tal modo que os coeficientes de filtro para o local de pixel "d" são simétricos com relação aos coeficientes de filtro para o local de pixel "1". A simetria de pixel pode ser imposta de tal modo que os coeficientes de filtro para localização de pixel "e" são simétricos com relação aos coeficientes de filtro para os locais de pixel "g", "m", e "o", e a simetria de pixel pode se imposta de tal modo que os coeficientes de filtro para o local de pixel "i" são simétricos com relação aos coeficientes de filtro para os locais de pixel "k", e simetria de pixel pode ser imposta de tal modo que os coeficientes de filtro para o local de pixel "f" são simétricos com relação aos coeficientes de filtro para os locais de pixel "n". Portanto, apenas oito conjuntos de valores de coeficiente podem precisar ser comunicados como parte de um fluxo de bits de video para possibilitar que um decodificador gere conjuntos completos de valores de coeficiente para todos os locais de pixel. Além disso, para qualquer conjunto determinado de coeficientes, a simetria de coeficiente pode permitir que apenas um subconjunto dos valores de coeficiente seja enviado, e o decodificador pode gerar o conjunto completo de valores de coeficientes para um local de pixel determinado com base no subconjunto e na simetria de coeficiente.
[00134] Um aspecto dessa revelação é o de efetivamente remover qualquer simetria de pixel entre as posições de sub-pixel "a" e "c" em relação às posições de sub-pixel "d" e "1". Além disso, simetria de pixel pode ser evitada para posição de sub-pixel "f" em relação à posição de sub-pixel "i". Além disso, a simetria de pixel pode ser evitada para a posição de sub-pixel "k" em relação de sub- pixel "n". Em tais casos, a correlação diagonal pode ser baixa, tornando ineficiente ou ineficaz a imposição de simetria diagonal. Dessa maneira, os oito conjuntos de coeficientes usados para gerar todos os quinze conjuntos de coeficientes podem ser um conjunto maior do que algumas técnicas convencionais à medida que a simetria é evitada na dimensão diagonal para alguns dos locais de pixel. Em alguns casos, a simetria de pixel diagonal e a simetria de coeficiente diagonal podem ser eliminadas ou evitadas para possibilitar a variância nas dimensões verticais.
[00135] Com referência outra vez à Figura 1, o codificador de video 22 pode determinar oito conjuntos de coeficientes de filtro e utilizar os oito conjuntos de coeficientes de filtro para gerar todos os quinze conjuntos de coeficientes de filtro correspondendo a quinze diferentes locais de sub-pixel com base na simetria de coeficiente e simetria de pixel, e emitir os oito conjuntos de coeficientes de filtro como parte de um fluxo de bits codificado. Oito conjuntos de coeficientes de filtro podem ser emitidos para cada unidade codificada de fluxo de bits codificados, ou possivelmente várias ocorrências dos oito conjuntos de coeficientes de filtro podem ser emitidas para áreas diferentes de uma unidade codificada.
[00136] Os quinze conjuntos correspondem a cada local de sub-pixel de metade de pixel e um quarto de pixel mostrados na Figura 3, e os oito conjuntos, a simetria de coeficiente e a simetria de pixel definem suporte de filtro para cada localização de sub-pixel metade de pixel e um quarto de pixel. 0 decodificador de video 28 do dispositivo de destino 16 pode receber oito conjuntos de coeficientes de filtro como parte de um fluxo de bits de video codificado, gerar quinze conjuntos de coeficientes de filtro correspondendo a quinze diferentes locais de sub- pixel com base nos oito conjuntos de coeficientes de filtro, gerar dados preditivos interpolados para decodificação de video com base em um dos quinze conjuntos de coeficientes de filtro, em que os dados preditivos interpolados correspondem a um dos quinze diferentes locais de sub-pixel, e decodificar um ou mais blocos de video com base nos dados preditivos interpolados.
[00137] Pelo menos alguns dos oito conjuntos de coeficientes de filtro podem ter simetria de coeficiente de tal modo que um determinado conjunto com simetria de coeficiente compreende um subconjunto dos coeficientes de filtro associado a um suporte de filtro para um determinado local de sub-pixel associado a um determinado conjunto. Assim, o decodificador de video 28 pode gerar os quinze conjuntos de coeficientes de filtro com base ao menos em parte na simetria de pixel entre dois ou mais diferentes locais de sub-pixel. Além disso, o decodificador de video 28 pode gerar os quinze conjuntos de coeficientes de filtro com base ao menos em parte na simetria de pixel entre dois ou mais diferentes locais de sub-pixel, e com base ao menos em parte na simetria de coeficiente definida para um determinado conjunto de tal modo que o determinado conjunto com simetria de coeficiente compreende um subconjunto dos coeficientes de filtro associados a um suporte de filtro para um determinado local de sub-pixel associado ao conjunto determinado.
[00138] Outra vez, os quinze conjuntos podem corresponder a cada local de sub-pixel metade de pixel e um quarto de pixel. A simetria de pixel pode existir entre conjuntos diferentes dos quinze conjuntos de coeficientes de filtro em uma dimensão vertical e em uma dimensão horizontal, mas simetria de pixel não existe em uma dimensão diagonal para ao menos alguns dos quinze conjuntos de coeficientes de filtro. Conforme explicado em maior detalhe abaixo, dois dos oito conjuntos podem definir três dos quinze conjuntos para um suporte de filtro horizontal, dois dos oito conjuntos podem definir três dos quinze conjuntos para um suporte de filtro vertical, e quatro dos oito conjuntos podem definir nove dos quinze conjuntos para um suporte de filtro bidimensional. O suporte bidimensional pode compreender um suporte de filtro útil de 12 posições circundando nove posições de sub-pixel em um formato radial.
[00139] Especificamente, os dados preditivos interpolados podem compreender quinze valores de metade de pixel e de um quarto de pixel, por exemplo, mostrados na Figura 7, em que o filtro de interpolação define um arranjo bidimensional de doze posições de suporte de filtro, por exemplo, mostradas na Figura 4, que são aplicadas para definir nove dos quinze valores de metade de pixel e de um quarto de pixel e, por exemplo, também mostrados na Figura 4. Gerar os dados preditivos interpolados pode compreender ainda aplicar filtros de interpolação linear que definem arranjos unidimensionais de posições de suporte de filtro para seis de quinze valores de metade de pixel e de um quarto de pixel, por exemplo, conforme mostrado na Figura 5.
[00140] Simetria horizontal e ausência de simetria diagonal podem ser vistas com relação às posições de sub-pixel "a" e "c" ou com relação às posições de sub- pixel "y" e "k". Nesse caso, as posições de sub-pixel de número inteiro "a" e "c" são simétricas ao longo de um eixo horizontal X, mas simetria não existe ao longo de um eixo diagonal para esses pixels de tal modo que locais de sub- pixel "d" e "1" não são simétricos com relação às posições de sub-pixel "a" e "c", respectivamente. Similarmente, as posições de sub-pixel "i" e "k" são simétricas ao longo de um eixo horizontal X, mas simetria não existe ao longo do eixo diagonal para esses pixels de tal modo que os locais de sub-pixel "f" e "n" não são simétricos com relação às posições de sub-pixel "i" e "k", respectivamente.
[00141] A simetria de pixel significa que um primeiro conjunto de coeficiente com relação à primeira posição de sub-pixel é simétrico em relação a um segundo conjunto de coeficientes com relação à segunda posição de sub-pixel. Por exemplo, o local de pixel "a" tem simetria de pixel com relação ao local de pixel "c" e o local de pixel "d" tem simetria de pixel com relação ao local de pixel "1". O local de pixel "f" tem simetria de pixel com relação ao local de pixel "n", e o local de pixel "i" tem simetria de pixel com relação ao local de pixel "k". O local de pixel "e" tem simetria de pixel com relação aos locais de pixel "g", "m" e "o". O sombreamento mostrado na Figura 7 demonstra essa simetria de pixel, por exemplo, com sombreamento comum correspondendo aos locais de pixel que são simétricos com relação a outros locais de pixel. Nesse caso, coeficientes para oito locais de pixel (em conjunto com aspectos de simetria de pixel) podem definir coeficientes para todos os quinze locais de pixel. Além disso, dentro de um determinado conjunto de coeficientes, pode existir simetria de coeficiente de tal modo que apenas um subconjunto dos coeficientes daquele conjunto de coeficientes precisa ser comunicado com o fluxo de bits.
[00142] O codificador de video 22 pode gerar dados de video codificados com base nos dados preditivos interpolados, em que os dados preditivos interpolados compreendem quinze valores de meio pixel e de um quarto de pixel, em que o filtro de interpolação define um arranjo bidimensional de doze posições de suporte de filtro que são aplicadas para definir nove dos quinze valores de meio pixel e de um quarto de pixel. A geração dos dados de video codificado com base nos dados preditivos interpolados pode compreender ainda aplicar filtros de interpolação linear que definem arranjos unidimensionais de posições de suporte de filtro para seis dos quinze valores de meio pixel e de um quarto de pixel.
[00143] A Figura 8 é um diagrama conceptual ilustrando seis posições de suporte de pixel linear, horizontal C1-C6 em relação a uma posição de sub-pixel "b", com sombreamento que mostra simetria de coeficiente. Nesse caso, simetria de coeficiente significa que apenas três coeficientes de filtro são necessários para Cl, C2 e C3 para definir o conjunto inteiro de coeficientes para as posições de suporte de filtro C1-C6. Cl é simétrico com C6, C2 é simétrico com C5 e C3 é simétrico com C4 . Assim, apenas três coeficientes precisam ser comunicados como parte de um fluxo de bits de video codificado para definir o conjunto de seis coeficientes necessários para interpolar a posição de sub-pixel "b".
[00144] A Figura 9 é um diagrama conceptual ilustrando seis posições de suporte de pixel, linear horizontal em relação a um sub-pixel, com sombreamento que mostra uma ausência de qualquer simetria de coeficiente. Assim, todos os seis coeficientes são necessários para definir o conjunto de coeficientes para suporte de filtro com relação à posição de sub-pixel "a". Conforme observado acima, contudo, simetria de pixel significa que esses mesmos coeficientes com relação à posição de sub-pixel "a" também podem ser usados para derivar o suporte de filtro para a posição de sub-pixel "c" (vide Figura 7) . Assim, apenas seis coeficientes precisam ser comunicados como parte de um fluxo de bits de video codificado para definir dois conjuntos diferentes de seis coeficientes necessários para interpolar a posição de sub-pixel "a" e "c".
[00145] A Figura 10 é um diagrama conceptual ilustrando seis posições de suporte de pixel, linear vertical A3, B3, C3, D3, E3 e F3 em relação a um sub-pixel "h", com sombreamento que mostra simetria de coeficiente. Nesse caso, simetria de coeficiente significa que apenas três coeficientes de filtro são necessários para A3, B3 e C3 para definir o conjunto inteiro de coeficientes para as posições de suporte de filtro A3, B3, C3, D3, E3 e F3. A3 é simétrico com F3, B3 é simétrico com E3 e C3 é simétrico com D3. Assim, apenas três coeficientes precisam ser comunicados como parte de um fluxo de bits de video codificado para definir o conjunto de seus coeficientes necessários para interpolar a posição de sub-pixel "h".
[00146] A Figura 11 é um diagrama conceptual ilustrando seis posições de suporte de pixel, linear vertical em relação a um sub-pixel, com sombreamento que mostra uma ausência de qualquer simetria de coeficiente. Assim, todos os seis coeficientes são necessários para definir o conjunto de coeficientes para suporte de filtro com relação a uma posição de sub-pixel "d". Conforme observado acima, simetria de pixel significa que esses mesmos coeficientes com relação à posição de sub-pixel "d" também podem ser usados para derivar o suporte de filtro para a posição de pixel "1" (vide Figura 7). Assim, apenas seis coeficientes precisam ser comunicados como parte de um fluxo de bits de video codificado para definir dois conjuntos diferentes de seis coeficientes necessários para interpolar a posição de sub-pixel "d" e "1".
[00147] A Figura 12 é um diagrama conceptual ilustrando doze posições de suporte de pixel bidimensional (as posições de pixel de número inteiro mostradas com letras maiúsculas e sombreamento) em relação a uma posição de sub-pixel "e". O sombreamento que mostra uma ausência de qualquer simetria de coeficiente. Assim, todos os doze coeficientes são necessários para definir o conjunto de coeficientes para suporte de filtro com relação à posição de sub-pixel "e". Como observado acima, contudo, simetria de pixel significa que esses mesmos componentes com relação à posição de sub-pixel "e" também podem ser usados para derivar o suporte de filtro para posições de sub-pixel "g", "m" e "o" (vide Figura 7) . Portanto, 12 coeficientes definem a posição de sub-pixel de suporte de filtro "e" e esses mesmos coeficientes podem ser usados para derivar o conjunto de coeficientes para posições de sub-pixel "g", "m"e"o"„
[00148] A Figura 13 é um diagrama conceptual ilustrando doze posições de suporte de pixel bidimensional (as posições de pixel de número inteiro mostradas com letras maiúsculas) em relação a um sub-pixel "i", com sombreamento que mostra simetria de coeficiente. Nesse caso, simetria de coeficiente significa que os coeficientes de filtro para as posições de suporte de filtro B3, B4, C2, C3, C4 e C5 podem ser usados para definir os coeficientes de filtro para as posições de suporte de filtro E3, E4, D2, D3, D4 e D5. B3 é simétrico com E3, B4 é simétrico com E4, C2 é simétrico com D2, C3 é simétrico com D3, C4 é simétrico com D4, e C5 é simétrico com D5. Assim, apenas seis coeficientes precisam ser comunicados como parte de um fluxo de bits de video codificado para definir o conjunto de doze coeficientes necessários para interpolar a posição de sub-pixel "i". Além disso, conforme assinalado acima, a posição de sub-pixel "i" pode ter simetria de pixel com relação à posição de sub-pixel "k". Portanto, o mesmo subconjunto de seis coeficientes pode definir os conjuntos inteiros de doze coeficientes de filtro para as posições de sub-pixel "i" e "k".
[00149] A Figura 14 é um diagrama conceptual ilustrando doze posições de suporte de pixel bidimensional (as posições de pixel de número inteiro mostradas com letras maiúsculas) em relação a um sub-pixel "f", com sombreamento que mostra simetria de coeficiente. Nesse caso, simetria de coeficiente significa que os coeficientes de filtro para as posições de suporte de filtro C2, D2, B3, C3, D3 e E3 podem ser usados para definir os coeficientes de filtro para as posições de suporte de filtro C5, D5, B4, C4, D4 e E4. C2 é simétrico com C5, D2 é simétrico com D5, D3 é simétrico com D4, C3 é simétrico com C4, D3 é simétrico com D4, e E3 é simétrico com é simétrico com E4. Assim, apenas seis coeficientes precisam ser comunicados como parte de um fluxo de bits de video codificado para definir o conjunto de doze coeficientes necessários para interpolar a posição de sub-pixel "f". Além disso, conforme observado acima, a posição de sub-pixel "f" pode ter simetria de pixel com relação à posição de sub-pixel "n". Portanto, o mesmo subconjunto de seis coeficientes pode definir os conjuntos inteiros de doze coeficientes de filtro para as posições de sub-pixel "f" e "n".
[00150] A Figura 15 é um diagrama conceptual ilustrando doze posições de suporte de pixel bidimensional (as posições de pixel de número inteiro mostradas com letras maiúsculas) em relação a um sub-pixel "j", com sombreamento que mostra simetria de coeficiente. Nesse caso, simetria de coeficiente significa que apenas três coeficientes de filtro são necessários para B3, C2 e C3 para definir o conjunto inteiro de doze coeficientes para as posições de suporte de filtro B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 e E4. C3 é simétrico com C4, D3 e D4, C2 é simétrico com D2, C5 e E4, e B3 é simétrico com B4, E3 e D5. Assim, apenas três coeficientes precisam ser comunicados como parte de um fluxo de bits de video codificado para definir o conjunto de doze coeficientes necessários para interpolar a posição de sub-pixel "j".
[00151] A Figura 16 é um diagrama de blocos ilustrando um exemplo de um decodificador de video, o qual pode decodificar uma sequência de video que é codificada da forma descrita aqui. O decodificador de video 60 é um exemplo de um dispositivo ou equipamento de computador de video especializado referido aqui como "codificador". O decodificador de video 60 inclui uma unidade de decodificação por entropia 52 que decodifica em entropia o fluxo de bits recebido para gerar coeficientes quantizados e os elementos de sintaxe de predição. Os elementos de sintaxe de predição podem incluir um modo de codificação, um ou mais vetores de movimento, informação identificando uma técnica de interpolação usada para gerar os dados de sub-pixel, coeficientes para uso na filtragem de interpolação, e/ou outra informação associada à geração do bloco de predição.
[00152] Os elementos de sintaxe de predição, por exemplo, os coeficientes, são enviados para a unidade de predição 55. Se predição for usada para codificar os coeficientes em relação aos coeficientes de um filtro fixo, ou relativo um ao outro, a unidade de predição e quantização inversa de coeficiente 53 pode decodificar os elementos de sintaxe para definir os coeficientes atuais. Além disso, se a quantização for aplicada a qualquer sintaxe de predição, a unidade de predição e quantização inversa de coeficiente 53 também pode remover tal quantização. Coeficientes de filtro, por exemplo, podem ser codificados de forma preditiva e quantificados de acordo com essa revelação, e nesse caso, a unidade de predição e quantização inversa de coeficiente 53 pode ser usada pelo decodificador de video 60 para decodificar de modo preditivo e desquantizar tais coeficientes.
[00153] 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 previamente decodificados que são armazenados na memória 62, da mesma forma como descrito em detalhe acima com relação à unidade de predição 32 do codificador de video 50. Particularmente, a unidade de predição 55 pode realizar uma ou mais das técnicas de filtragem de interpolação dessa revelação durante compensação de movimento para gerar um bloco de predição com uma precisão especifica, tal como precisão de um quarto de pixel. Como tal, uma ou mais das técnicas dessa revelação podem ser usadas pelo decodificador de video 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 usados para interpolação e técnicas de filtragem semelhantes à interpolação dessa revelação. O componente de compensação de movimento não é mostrado na Figura 16 para simplicidade e facilidade de ilustração.
[00154] A unidade de quantização inversa 56 quantiza inversamente, isto é, desquantiza os coeficientes quantizados. O processo de quantização inversa pode ser um processo definido para decodificação H.264. A unidade de transformada inversa 58 aplica uma transformada inversa, por exemplo, uma DCT inversa ou processo de transformada inversa conceptualmente similar, aos coeficientes de transformada para produzir blocos residuais no dominio de pixel. 0 somador 64 soma os blocos residuais 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 video 50. Se desejado, um filtro de desblocagem pode ser aplicado para filtrar os blocos decodificados para remover os artefatos de bloqueio. Os blocos de video decodificados são então armazenados no meio de armazenamento de quadro de referência 62, que proporciona blocos de referência para subsequente compensação de movimento e também produz video decodificado para acionar o dispositivo de exibição (tal como dispositivo 28 da Figura 1).
[00155] Técnicas MS-AIF podem computar os valores de pixel para as posições de sub-pixel 2D utilizando um filtro de interpolação que tem suporte de filtro de 36 posições (isto é, um suporte de filtro 6x6 2D) . S-AIF utiliza posições de pixel de número inteiro separáveis como suporte de filtro para filtragem de interpolação primeiramente em uma direção horizontal do que em uma dimensão vertical. D-AIF utiliza um filtro de interpolação menos complexo para computar as posições de sub-pixel 2D do que NS-AIF. Em D-AIF as posições de sub- pixel 2D são computadas utilizando um filtro de interpolação que tem um suporte de filtro de seis posições ou um suporte de filtro diagonal de doze posições.
[00156] Uma desvantagem do uso de suporte de filtro diagonal como em D-AIF é que as posições de pixel de número inteiro usadas na filtragem estão distantes da posição atual a ser interpolada. À medida que aumenta a distância entre a posição atual a ser interpolada e as posições dos pixels usados como suporte de filtro, diminui a correlação de pixel espacial. Como tal, o suporte de filtro diagonal usado em D-AIF é menos adequado para formar uma predição exata.
[00157] Para prover melhor predição utilizando pixels com correlação superior com a posição a ser interpolada (isto é, posições de pixel que estão mais próximas por uma distância mais curta a partir da posição a ser interpolada), enquanto mantendo a mesma baixa complexidade oferecida pelo D-AIF, o suporte de filtro de 12 posições mostrado na Figura 4 pode ser usado para interpolação. As posições de pixel de número inteiro usadas no suporte de filtro de 12 posições descritas nessa revelação incluem as quatro posições de pixel de número inteiro circundando as posições de sub-pixel, isto é, posições de pixel de número inteiro C3, C4, D3 e D4, que podem ser referidas como posições de pixel de número inteiro de "canto" uma vez que elas estão localizadas próximas aos cantos das posições de sub-pixel 2D. Além das posições de pixel de número inteiro de canto, uma ou mais posições de pixel de número inteiro, imediatamente adjacentes às posições de pixel de número inteiro de canto também podem ser usadas no suporte de filtro. As posições de pixel de número inteiro, imediatamente adjacentes às posições de pixel de número inteiro de canto podem incluir posições de pixel de número inteiro diretamente acima (em direção ao topo ou norte) ou diretamente abaixo (em direção à parte inferior ou sul) das posições de pixel de número inteiro de canto assim como as posições de pixel de número inteiro diretamente à esquerda (ou oeste) ou diretamente à direita (ou leste) das posições de pixel de número inteiro de canto. No exemplo ilustrado na Figura 4, o suporte de filtro de 12 posições pode incluir locais de pixel de número inteiro B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 e E4. Todas essas posições de pixel de número inteiro estão localizadas dentro de duas posições de pixel de número inteiro do sub-pixel a ser interpolado.
[00158] O suporte de filtro de acordo com as técnicas dessa revelação pode, contudo, incluir locais de pixel de número inteiro, adicionais. Por exemplo, o suporte de filtro pode incluir locais de pixel de número inteiro que estão localizados dentro de três posições de pixel de número inteiro da posição de sub-pixel a ser interpolada que forma um formato radial.
[00159] Mesmo as posições de um quarto de pixel ou de resolução mais fina podem ser interpoladas com base nas posições de pixel de número inteiro, localizadas dentro de pelo menos duas posições de pixel de número inteiro. Dessa maneira, as técnicas de suporte de filtro dessa revelação proporcionam melhor predição de interpolação utilizando pixels de número inteiro com correlação superior com a posição a ser interpolada, enquanto mantendo a mesma baixa complexidade oferecida por D-AIF.
[00160] Conforme descrito acima, simetria de sub-pixel pode impor o mesmo conjunto de coeficientes de filtro (e as versões equivalentes, invertidas e/ou giradas do conjunto) para um grupo de uma ou mais posições de sub- pixel. Utilizando um processo analítico, tal como aquele na equação (5) se pode derivar os coeficientes de filtro de interpolação para todas as posições de sub-pixel, por exemplo, quinze posições de sub-pixel no caso de precisão de pixel de um quarto. Análise de correlação entre os quinze conjuntos de coeficientes de filtro de interpolação revela uma correlação relativamente forte entre os coeficientes de filtro das posições de sub-pixel (ambas as posições de sub-pixel 1D e 2D) na mesma dimensão (por exemplo, dimensão vertical ou horizontal). Ao contrário, a correlação entre os coeficientes de filtro das posições de sub-pixel em diferentes direções diagonais pode ser notavelmente mais fraca.
[00161] Por exemplo, pode haver uma elevada correlação entre os coeficientes de filtro para as posições de sub-pixel "a" e "c", as quais estão ambas na dimensão horizontal. Como outro exemplo, pode haver uma elevada correlação entre os coeficientes de filtro para as posições de sub-pixel "d" e "1", que estão ambas na dimensão vertical. Contudo, pode haver pouca, se houver, correlação entre os coeficientes de filtro para as posições de sub- pixel "a", a qual está na dimensão horizontal, e posição de sub-pixel "d", a qual está na dimensão vertical. Com base nessas observações das correlações, simetria de sub-pixel pode ser projetada de tal modo que a simetria de sub-pixel para os coeficientes de filtro de posições de sub-pixel nas dimensões diagonais não é imposta. Isso leva a oito conjuntos de coeficientes, conforme aqui descrito, que podem ser mais conjuntos do que são necessários para alguns processos convencionais. Mediante eliminação de simetria de pixel diagonal para alguns locais de pixel, conforme aqui descrito, codificação e compactação de video podem ser aperfeiçoadas.
[00162] Outra vez, a Figura 7 mostra as posições de pixel com os mesmos sombreamentos (ou tracejados) que pertencem a um grupo de posições de sub- pixel que tem simetria de sub-pixel. Particularmente, as posições de sub-pixel "a" e "c" formam um primeiro grupo tendo simetria de sub-pixel, posições de sub-pixel "d" e "1" formam um segundo grupo tendo simetria de sub-pixel, posições de sub-pixel "e", "g", "m" e "o" formam um terceiro grupo tendo simetria de sub-pixel, posições de sub-pixel "f" e "n" formam um quarto grupo tendo simetria de sub-pixel, e posições de sub-pixel "i" e "k" formam um quinto grupo tendo simetria de sub-pixel. Nas posições de sub-pixel "b", "h" e "j" não têm simetria de sub-pixel com qualquer outra posição de sub-pixel. Como tal, as posições de sub-pixel "b", "h", e "j" podem ser vistas como pertencendo aos seus próprios grupos; um sexto, sétimo e oitavo grupo, respectivamente. Cada grupo de coeficientes (os quais podem ser subconjuntos devido à simetria de coeficiente) pode ser comunicado uma vez, por unidade codificada; ou possivelmente múltiplas vezes por unidade codificada se diferentes tipos de filtragem forem definidos para áreas ou recursos diferentes de uma unidade codificada. Coeficientes para filtragem semelhante à interpolação de pixel de número inteiro também podem ser enviados uma vez ou várias vezes por unidade codificada.
[00163] Em NS-AIF e D-AIF existe simetria de sub-pixel entre as posições de sub-pixel na mesma dimensão, por exemplo, duas posições de sub-pixel na dimensão vertical ou duas posições de sub-pixel na dimensão horizontal. Em alguma NS-AIF e D-AIF convencional, também existe simetria diagonalmente entre as posições de sub- pixel em diferentes dimensões. Por exemplo, existe simetria de sub-pixel entre a posição de sub-pixel "a" na dimensão vertical e a posição de sub-pixel "d" na direção horizontal em algumas NS-AIF e D-AIF, convencionais. Com simetria de sub-pixel nas dimensões horizontal, vertical e diagonal, tão poucos quanto cinco conjuntos únicos de coeficientes de filtro de interpolação podem ser usados para precisão de um quarto de pixel.
[00164] Para alguns tipos de S-AIF, por outro lado, existe simetria de sub-pixel entre as posições de sub-pixel na direção vertical (ou dimensão), mas não posições de sub-pixel na dimensão horizontal. Em outras palavras, a simetria de sub-pixel nem sempre existe para as posições de sub-pixel na mesma dimensão. A simetria de sub- pixel também não existe nas dimensões diagonais. A simetria de alguns esquemas S-AIF, assim, requer mais conjuntos de coeficientes de interpolação. Particularmente, para precisão de um quarto de pixel, alguns esquemas S-AIF requerem onze conjuntos únicos de coeficientes de interpolação.
[00165] O esquema de simetria de sub-pixel descrito nessa revelação, e ilustrado na Figura 7, pode resultar em predição mais exata do que a simetria de sub- pixel descrita acima para alguns tipos de NS-AIF e D-AIF. Particularmente, o esquema de simetria de sub-pixel da Figura 7 impõe simetria de sub-pixel em uma dimensão (por exemplo, na direção horizontal ou na direção vertical), mas não impõe simetria de sub-pixel simultaneamente em ambas as dimensões (por exemplo, diagonalmente).
[00166] Ao não impor simetria de sub-pixel para as posições de sub-pixel diagonalmente, a fraca correlação entre os coeficientes de filtro de interpolação e as posições de sub-pixel em diferentes dimensões não é integrada na interpolação. Embora mais conjuntos de coeficientes de interpolação possam ser exigidos (por exemplo, oito em vez de cinco), os dados de predição interpolados podem ser mais precisos. Simetria de coeficiente diagonal também pode ser evitada ou eliminada, do mesmo modo.
[00167] A unidade de predição 32 também pode impor simetria de coeficiente conforme descrito acima. Particularmente, simetria de coeficiente é imposta para os coeficientes de filtro em uma dimensão (por exemplo, direção horizontal ou vertical), mas não para ambas as dimensões de uma maneira diagonal. Por exemplo, os coeficientes de filtro para a posição de sub-pixel "e" não são forçados a serem diagonalmente simétricos como no esquema NS-AIF descrito acima e representado na equação (11) . A simetria de coeficiente é resumida abaixo nas equações (17) —(21) .
[00168] Observar que para as posições de sub- pixel "f", "i", e "j", alguns coeficientes de filtro, isto é, são iguais a zero em instâncias nas quais o filtro de 12 posições descrito em detalhe com relação à Figura 4 pode ser usado. Como tal, a simetria de coeficiente e sub-pixel descrita nessa revelação pode ser usada em conjunto com ou separadamente das técnicas de suporte de filtro. Quando usada em conjunto com o suporte de filtro de 12 posições descrito na Figura 4, há 6(a) + 3(b) + 6(d) + 3(h) + 12(e) + 6(f) + 6(i) + 3(j) = 45 coeficientes únicos para essas posições de sub-pixel que precisam ser enviadas ao decodificador, isto é, 6 coeficientes para o grupo incluindo a posição de sub-pixel "a", 3 coeficientes para o grupo incluindo a posição de sub-pixel "b", 6 coeficientes para o grupo incluindo a posição de sub-pixel "d", 3 coeficientes para o grupo incluindo a posição de sub-pixel "h", 12 coeficientes para o grupo incluindo a posição de sub-pixel "e", 6 coeficientes para o grupo incluindo a posição de sub-pixel "f", 6 coeficientes para o grupo incluindo a posição de sub-pixel "i", e 3 coeficientes para o grupo incluindo a posição de sub-pixel "j".
[00169] A Figura 17 é um diagrama de fluxo ilustrando a operação exemplar de um codificador de video que utiliza um suporte de filtro de 12 pixels consistente com essa revelação. A técnica de Figura 17 será descrita da perspectiva do codificador de video 50 da Figura 2 embora outros dispositivos possam realizar técnicas similares. Conforme mostrado, na Figura 17, a unidade MC 37 da unidade de predição 32 obtém um bloco de pixels a partir da memória 34 que inclui valores de pixel de número inteiro correspondendo às posições de pixel de número inteiro (171) . 0 filtro (s) 39 computa os valores de sub-pixel com base em um suporte de filtro que compreende 12 ou mais posições que circundam as posições de sub-pixel (172) . Conforme explicado em maior detalhe acima, o suporte de filtro de doze posições pode ser usado para gerar nove das quinze possíveis interpolações de sub-pixel, enquanto filtragem horizontal linear e vertical linear pode ser usada para gerar seis de quinze possíveis interpolações de sub-pixel.
[00170] A unidade MC 37 então gera um bloco de predição com base nos valores de sub-pixel computados (173). Particularmente, a unidade MC 37 pode gerar e emitir um bloco de predição interpolado compreendendo valores de sub-pixel interpolados. O somador 48 pode então codificar um bloco de video atual com base no bloco de predição interpolado (174), por exemplo, mediante subtração do bloco de predição interpolado a partir do bloco de video sendo codificado para gerar um bloco residual. O bloco residual pode ser então transformado e quantizado pela unidade de transformada 38 e unidade de quantização 40, respectivamente. Após a codificação por entropia pela unidade de codificação por entropia 46, o codificador de video 50 pode emitir um fluxo de bits de video codificado e informação de filtro (175). A informação de filtro, conforme aqui descrito, pode compreender oito conjuntos de coeficientes usados para gerar todos os quinze conjuntos de coeficientes para as quinze posições de sub-pixel. A informação de filtro pode ser emitida uma vez por unidade codificada; ou possivelmente várias vezes por unidade codificada se diferentes áreas de uma unidade codificada utilizarem diferentes tipos de interpolação de sub-pixel.
[00171] A Figura 18 é um diagrama de fluxo ilustrando uma operação exemplar de um decodificador de video que utiliza um suporte de filtro de doze pixels compatível com essa revelação. Assim, o processo da Figura 18 pode ser considerado como processo de decodificação reciproca para o processo de codificação da Figura 17. A Figura 18 será descrita da perspectiva do decodificador de video 60 da Figura 16 embora outros dispositivos possam realizar técnicas similares. Conforme mostrado na Figura 18, o decodificador de video 60 recebe blocos de video codificado e informação de filtro (181). A unidade de decodificação por entropia 52 pode decodificar em entropia essa informação recebida. A unidade de predição 55 realiza compensação de movimento interpolativa de acordo com as técnicas dessa revelação. Particularmente, a unidade de predição 55 obtém um bloco de pixels a partir da memória 62 que inclui valores de pixel de número inteiro correspondendo às posições de pixel de número inteiro (182) . A unidade de predição 55 pode usar vetores de movimento recebidos para determinar como realizar a interpolação. Com base nos vetores de movimento, a unidade de predição 55 pode computar o sub-pixel com base em um suporte de filtro que compreende doze ou mais posições que circundam as posições de sub-pixel (183) . Desse modo, a unidade de predição 55 utiliza interpolação para gerar o bloco de predição (184) . O bloco de predição pode ser usado para decodificar um bloco de video residual mediante ativação do somador 64 para adicionar o bloco de predição ao bloco residual (185) . Os vários aspectos da interpolação aqui descrita, incluindo o uso de um suporte de filtro de doze posições que circunda as posições de sub-pixel em um formato radial, podem aperfeiçoar a codificação de video mediante provisão de dados de interpolação de melhor qualidade do que as técnicas convencionais.
[00172] A Figura 19 é um diagrama de fluxo ilustrando a operação exemplar de um codificador de video que utiliza simetria de coeficiente e simetria de pixel consistente com essa revelação. A técnica da Figura 19 será descrita da perspectiva de codificador de video 50 da Figura 2 embora outros dispositivos possam realizar técnicas similares. Conforme mostrado, na Figura 19, a unidade de predição 32 do codificador de video 50 define oito conjuntos de coeficientes de filtro para quinze posições de sub-pixel com base na simetria de coeficiente e na simetria de pixel, conforme descrito aqui (201) . Particularmente, a unidade de predição 32 pode usar simetria de pixel para reduzir os conjuntos de coeficiente a partir de quinze para oito, e pode reduzir ainda o número de coeficientes para alguns ou todos os oito conjuntos com base na simetria de coeficiente entre os coeficientes de conjuntos determinados. A unidade de predição 32 pode então codificar os dados de video utilizando filtros de interpolação (tal como filtro(s) 39) e os oito conjuntos de coeficientes de filtro (202) . O codificador de video 50 pode emitir dados de video codificados e os oito conjuntos de coeficientes de filtro (203) . Os oito conjuntos de coeficiente, os quais são codificados e emitidos no fluxo de bits, podem ser enviados com cada unidade codificada (por exemplo, cada quadro ou fatia) de modo que um dispositivo de decodificação pode ser informado sobre os coeficientes de filtro a serem usados para interpolação. Alternativamente, diferentes grupos de oito conjuntos de coeficientes podem ser codificados e enviados com cada unidade codificada para possibilitar diferentes tipos de interpolações em diferentes locais dentro de uma unidade codificada.
[00173] A Figura 20 é um diagrama de fluxo ilustrando a operação exemplar de um decodificador de video que utiliza simetria de coeficiente e simetria de pixel consistente com essa revelação. Nesse caso, a unidade de predição 55 do decodificador de video 60 recebe oito conjuntos de coeficientes de filtro (191), e gera os quinze conjuntos de coeficientes de filtro com base nos oito conjuntos, simetria de coeficiente e simetria de pixel. A unidade de predição 60 pode então programar seus filtros de interpolação e aplicar tais filtros de interpolação para adequadamente gerar dados preditivos interpolados (193) . O decodificador de video 60 podem então decodificar os blocos de video com base nos dados preditivos (194), por exemplo, ativando o somador 64 para adicionar os dados preditivos corretos interpolados pela unidade de predição 55 a um bloco residual a ser decodificado.
[00174] A Figura 21 é um diagrama de fluxo ilustrando a operação exemplar de um codificador de video que utiliza filtragem de locais de pixel de número inteiro para gerar valores de pixel de número inteiro ajustados consistentes com essa revelação. Isso é discutido acima como filtragem semelhante à interpolação à medida que é similar às interpolações, mas não gera valores sub- inteiros. Mais propriamente, esse processo gera novos valores de número inteiro que são filtrados com base no valor de número inteiro original e outros valores de número inteiro que são adjacentes ao valor de número inteiro original.
[00175] A Figura 21 será descrita da perspectiva do codificador de video 50 da Figura 2 embora outros dispositivos possam realizar técnicas similares. Conforme mostrado, na Figura 21, a unidade MC 37 da unidade de predição 32 obtém um bloco de pixels a partir da memória 34 que inclui valores de pixel de número inteiro correspondendo aos locais de pixel de número inteiro (211) . O filtro(s) 39 da unidade de predição 32 filtra os valores de pixel de número inteiro com base em outros valores de pixel de número inteiro do bloco de pixels para gerar valores de pixel de número inteiro ajustado (212). A unidade de predição 32 gera um bloco de predição com base nos valores ajustados de pixel de número inteiro (213), e o codificador de video 50 codifica um bloco de video com base no bloco de predição (214), por exemplo, acionando o somador 48 para subtrair o bloco de predição a partir do bloco de video sendo codificado para gerar um bloco residual. A seguir, transformação e quantização do bloco residual por intermédio da unidade de transformação 38 e de uma unidade de quantização 40, a codificação por entropia seguinte pela unidade de codificação por entropia 46, o codificador de video 50 emite o bloco de video codificado e informação de filtro (215) . Como com a interpolação de sub- pixel, filtragem semelhante à interpolação com relação aos locais de pixel de número inteiro pode envolver a saida e comunicação de informação de filtro uma vez por unidade codificada; ou possivelmente várias vezes por unidade codificada se diferentes áreas de uma unidade codificada utilizarem diferentes tipos de filtragem semelhante à interpolação de número inteiro.
[00176] A Figura 22 é um diagrama de fluxo ilustrando a operação exemplar de um decodificador de video que utiliza filtragem de locais de pixel de número inteiro para gerar valores ajustados de pixel de número inteiro consistentes com essa revelação. A unidade de predição 55 do decodificador de video 60 recebe blocos de video codificados, e também recebe informação de filtro (por exemplo, uma vez por unidade codificada) (221) . A unidade de predição 55 obtém um bloco de pixels a partir da memória 62 que inclui valores de pixel de número inteiro correspondendo às posições de pixel de número inteiro (222) . A unidade de predição 55 invoca um filtro (não mostrado) como parte da compensação de movimento para filtrar valores de pixel de número inteiro com base em outros valores de pixel de número inteiro do bloco de pixels para gerar valores de pixel de número inteiro ajustados (223) . A unidade de predição 55 gera um bloco de predição com base nos valores ajustados de pixel de número inteiro "224". O decodificador de video 60 pode então decodificar os blocos de video com base no bloco de predição, por exemplo, acionando o somador 64 para adicionar o bloco preditivo interpolado pela unidade de predição 55 para um bloco de video residual a ser decodificado (225).
[00177] A Figura 23 é um diagrama de fluxo ilustrando uma técnica para interpolação definida por distorção de taxa para codificação de video com base em dois conjuntos de filtros candidatos. Nesse caso, a unidade MC 37 da unidade de predição 32 pode gerar dois ou mais conjuntos diferentes de dados preditivos, um conjunto com base no primeiro conjunto de filtros candidatos de interpolação e outro conjunto com base no segundo conjunto de filtros candidatos de interpolação. A unidade MC 37 pode então usar uma análise baseada em distorção de taxa para selecionar qual filtro de interpolação produzirá os melhores resultados a partir da perspectiva de taxa e distorção. Desse modo, a unidade MC 37 não apenas considera qual o conjunto de dados preditivos produzirá os melhores resultados (isto é, a menor distorção), mas também considerará o fato de que um conjunto de filtros candidatos pode exigir menos overhead de bits para conduzir seus coeficientes de filtro para o decodificador.
[00178] Conforme mostrado na Figura 23, a unidade MC 37 da unidade de predição 32 gera primeiros dados preditivos interpolados para codificação de dados de video com base em um primeiro filtro de interpolação (231) . O primeiro filtro de interpolação, em um exemplo, compreende um filtro de interpolação fixa correspondendo a um filtro definido por um padrão de codificação de video especifico, tal como um filtro que corresponde a um filtro de interpolação ITU-T H.264. Para precisão adicionada, em alguns casos, o filtro de interpolação fixa pode corresponder a um filtro de interpolação ITU-T H.264 sem arredondamento intermediário de valores de meio pixel que são usados para gerar valores de um quarto de pixel. Nesse caso, o filtro de interpolação fixa pode gerar valores de meio pixel e pode arredondar para cima tais valores com o propósito de interpolação para resolução de meio pixel. Contudo, até o ponto em que tais valores de meio pixel também serão usados para interpolação para resolução de um quarto de pixel, a unidade MC 37 pode armazenar versões não arredondadas dos valores de meio pixel e usar as versões não arredondadas dos valores de meio pixel para qualquer interpolação para resolução de um quarto de pixel.
[00179] A seguir, a unidade MC 37 da unidade de predição 32 gera segundos dados preditivos interpolados para codificação de video dos dados de video com base em um segundo filtro de interpolação (232). Em um exemplo, o segundo filtro de interpolação pode compreender um filtro de interpolação adaptativo. Nesse caso, consistente com a interpolação adaptativa, a unidade MC 37 pode definir os coeficientes de filtro a serem usados. Particularmente, a unidade MC 37 pode executar um processo de interpolação adaptativo no qual a unidade MC 37 começa com os coeficientes de filtro preestabelecidos, gera dados preditivos preliminares, e então ajusta os coeficientes de filtro em um processo adaptativo de modo que tais coeficientes de filtro definem dados preditivos mais desej áveis.
[00180] Quando a unidade MC 37 da unidade de predição 32 tiver gerado os primeiros e segundos dados preditivos interpolados, a unidade MC 37 pode selecionar entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base em uma análise de distorção de taxa (233). Desse modo, a unidade MC 37 não apenas considera qual conjunto de dados preditivos produzirá os melhores resultados (isto é, a menor distorção) , mas a unidade MC 37 também fatora as diferentes quantidades de dados (isto é, as diferentes taxas de bits) que serão exigidas para o primeiro filtro de interpolação em relação ao segundo filtro de interpolação. Notavelmente, se o filtro de interpolação fixa for usado (por exemplo, como o primeiro filtro de interpolação), o codificador de video 50 não precisará codificar os coeficientes de filtro no fluxo de bits, ao passo que se o filtro de interpolação adaptativo for usado (por exemplo, como o segundo filtro de interpolação) o codificador de video 50 precisará codificar os coeficientes de filtro. Consequentemente, a análise de distorção de taxa pode determinar qual conjunto de dados preditivos produzirá os melhores resultados (isto é, o menor custo de distorção de taxa), mediante consideração do fato de que o uso do filtro de interpolação fixa não requer bits adicionais para conduzir os coeficientes de filtro para o decodificador.
[00181] Mais especificamente, a seleção entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base em uma análise de distorção de taxa (233) pode compreender o cálculo de um primeiro custo de distorção de taxa associado aos dados de video se os dados de video forem codificados por intermédio dos primeiros dados preditivos interpolados, calculando-se um segundo custo de distorção de taxa associado aos dados de video se os dados de video forem codificados por intermédio dos segundos dados preditivos interpolados, e selecionando-se entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base no primeiro e no segundo custo de distorção de taxa.
[00182] O custo de distorção de taxa associado aos dados de video se os dados de video forem codificados por intermédio dos primeiros dados preditivos interpolados pode compreender uma primeira métrica de diferença, por exemplo, erro médio quadrado (MSE) de valores de pixel ou soma da diferença absoluta (SAD) dos valores de pixel ou soma de diferença elevada ao quadrado (SSD) dos valores de pixel indicativo de diferenças entre os dados de video e os primeiros dados preditivos interpolados, mais um primeiro valor que quantifica o custo associado à codificação dos coeficientes de filtro. Nesse caso, se o primeiro filtro de interpolação for um filtro de interpolação fixa, o primeiro valor que quantifica o custo pode ser definido como zero. Similarmente, o segundo custo de distorção de taxa pode compreender uma segunda métrica de diferença indicativa das diferenças entre os dados de video e os segundos dados preditivos interpolados (MSE, SAD ou SSD), acrescidos de um segundo valor que quantifica o custo associado à codificação dos coeficientes de filtro. No caso onde o segundo filtro de interpolação é um filtro de interpolação adaptativo, o segundo valor que quantifica o custo associado com a codificação dos coeficientes de filtro pode compreender o número de bits (r) necessário para codificar os coeficientes de filtro de interpolação adaptativa, ou possivelmente esse número (r) multiplicado por um multiplicador Lagrangiano (X) .
[00183] Após a seleção entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base em uma análise de distorção de taxa (233), a unidade MC 37 da unidade de predição 32 codifica os dados de video com base na seleção (234), e codifica a sintaxe para indicar a seleção (235) . A sintaxe pode compreender um indicador de um bit ou um indicador de múltiplos bits que define se o primeiro filtro de interpolação ou o segundo filtro de interpolação deve ser usado por um decodificador. O processo da Figura 23 pode ser repetido para cada um de vários locais de sub-pixel para cada unidade codificada de uma sequência de video para indicar se o primeiro filtro de interpolação ou o segundo filtro de interpolação deve ser usado por um decodificador para cada um dos vários locais de sub-pixel. Os locais de sub-pixel podem compreender quinze possíveis locais de sub- pixel consistentes com a interpolação para resolução de um quarto de pixel, ou podem compreender um número diferente de locais de sub-pixel. O processo da Figura 23 também pode ser repetido para o local de pixel de número inteiro para cada unidade codificada de uma sequência de video para indicar que o primeiro filtro de interpolação ou o segundo filtro de interpolação deve ser usado por um decodificador para a localização de pixel de número inteiro.
[00184] Quando o codificador de video 50 (Figura 2) tiver codificado os dados de video com base na seleção (234), e sintaxe codificada para indicar a seleção (235), o modem 23 e o transmissor 24 (Figura 1) podem modular e transmitir os dados de video codificado e a sintaxe para o dispositivo de destino 17. No caso onde o primeiro filtro de interpolação é fixo e o segundo filtro de interpolação é adaptativo, o transmissor 24 pode transmitir os coeficientes de filtro quando a sintaxe indicar que os segundos dados preditivos interpolados foram usados para gerar os dados de video codificado, mas pode transmitir nenhum coeficiente de filtro quando a sintaxe indicar que os primeiros dados preditivos interpolados foram usados para gerar os dados de video codificado. Desse modo, quando o primeiro filtro de interpolação é fixo e o segundo filtro de interpolação é adaptativo, os coeficientes de filtro são enviados apenas se a sintaxe indicar que a filtragem de interpolação adaptativa foi usada, e a decisão no sentido de usar ou não a filtragem de interpolação adaptativa considera não apenas a qualidade de video preditiva, mas também a taxa de bits, que é afetada pela presença dos coeficientes de filtro no fluxo de bits transmitido. Em outros exemplos, contudo, o primeiro e o segundo filtro de interpolação podem ser, ambos, fixos, ou ambos podem ser adaptativos.
[00185] As técnicas dessa revelação podem ser aplicadas em muitos cenários, incluindo cenários quando há mais do que dois conjuntos de filtros sendo selecionados pelo codificador. Em outras palavras, filtros de interpolação adicionais também podem ser aplicados para gerar dados preditivos interpolados adicionais, os quais também podem ser considerados na análise de distorção de taxa. Em outras palavras, o método não é limitado a gerar apenas primeiro e segundo dados preditivos interpolados com base em dois filtros de interpolação, mas poderia ser aplicado para gerar qualquer pluralidade de dados preditivos interpolados com base em qualquer número de filtros de interpolação. Essencialmente, os dados preditivos interpolados de análise de distorção de taxa são usados para identificar qual filtro selecionar. Em um exemplo, um método executado pelo codificador de video 50 pode compreender gerar uma pluralidade de diferentes versões de dados preditivos para codificação dos dados de video com base em uma pluralidade de diferentes filtros de interpolação, selecionar entre a pluralidade de diferentes versões de dados preditivos com base em uma análise de distorção de taxa, codificar os dados de video com base na seleção, e codificar sintaxe para indicar a seleção.
[00186] Além de selecionar o filtro de interpolação com base em uma análise de distorção de taxa, e gerar sintaxe para indicar a seleção, a unidade MC 37 da unidade de predição 32 também pode conduzir uma análise de distorção de taxa similar com relação à filtragem de pixel de número inteiro, que é explicado em mais detalhe acima. Particularmente, a unidade MC 37 da unidade de predição 32 pode gerar dois ou mais conjuntos diferentes de dados preditivos para locais de pixel de número inteiro, por exemplo, um com filtragem de pixel de número inteiro e outro sem filtragem de pixel de número inteiro, e pode conduzir uma análise de distorção de taxa com relação a esses dois conjuntos diferentes para determinar se a filtragem de pixel de número inteiro é desejada. Consequentemente, a unidade MC 37 da unidade de predição 32 pode gerar outro elemento de sintaxe com base em uma análise de distorção de taxa associada a dois conjuntos diferentes de dados preditivos de número inteiro para indicar se filtragem de pixel de número inteiro deve ser aplicada para unidade codificada, em que um primeiro conjunto de dados preditivos de número inteiro é não filtrado e um segundo conjunto dos dados preditivos de número inteiro é filtrado. Desse modo, a decisão no sentido de se conduz filtragem de pixel de número inteiro pode-se basear não apenas na qualidade da codificação de video, mas também no overhead de bit possivel associado com a filtragem de pixel de número inteiro, particularmente quando a filtragem de pixel de número inteiro envolveria a codificação e envio de coeficientes de filtro de pixel de número inteiro usados para realizar tal filtragem de pixel de número inteiro. Filtragem de número inteiro também pode considerar N filtros de número inteiro (por exemplo, onde N é qualquer número inteiro positivo e plural). Consistente com o uso de N filtros de número inteiro, o exemplo acima corresponderia ao caso onde N é dois e um dos filtros não aplica qualquer filtragem.
[00187] Sempre que os coeficientes de filtros de interpolação forem efetivamente codificados e enviados a partir do dispositivo de origem 12 para o dispositivo de destino 16, essa revelação também considera as técnicas para codificar tais coeficientes de filtro de interpolação. A codificação descrita para os coeficientes de filtro pode aperfeiçoar a compactação de dados. Particularmente, essa revelação considera as técnicas de predição para os coeficientes de filtro, por exemplo, em relação aos coeficientes de filtro fixo. Além disso, essa revelação considera as técnicas de predição para um segundo conjunto de coeficientes de filtro em relação ao primeiro conjunto de coeficientes de filtro. Desse modo, simetria imperfeita entre diferentes coeficientes de filtro pode ser explorada para permitir a compactação de dados. Além do uso de tais técnicas de predição para coeficientes de filtro de interpolação, essa revelação também provê técnicas úteis de quantização e codificação por entropia de coeficientes de filtro de interpolação com base em codificação de prefixo e sufixo. A discussão seguinte provê mais detalhes sobre esses aspectos dessa revelação.
[00188] A Figura 24 é um diagrama de fluxo ilustrando uma técnica para codificar coeficientes de filtro utilizando codificação preditiva. Nesse caso, os coeficientes de filtro usados pelo codificador de video 50 podem ser codificados de forma preditiva em relação aos coeficientes de filtro de um filtro fixo, o qual pode aperfeiçoar adicionalmente a compactação de dados quando os coeficientes de filtro são enviados como parte de um fluxo de bits codificado.
[00189] Conforme mostrado na Figura 24, a unidade MC 37 da unidade de predição 32 identifica um conjunto de coeficientes de filtro para interpolação de dados preditivos na codificação de video (241) . Por exemplo, a unidade MC 37 pode identificar o conjunto de coeficientes de filtro mediante realização de um processo de filtragem de interpolação adaptativa. Nesse caso, a unidade MC 37 pode determinar o conjunto de coeficientes de filtro pode intermédio do processo de filtragem de interpolação adaptativa e gerar os dados preditivos com base nos coeficientes de filtro identificados no processo de filtragem de interpolação adaptativa. Na filtragem de interpolação adaptativa, conforme explicado aqui em maior detalhe, a unidade MC 37 pode realizar uma abordagem de duas passagens na qual os dados preditivos são gerados com base em um filtro fixo, e então os coeficientes de filtro são ajustados de tal modo que os dados preditivos são tornados mais similares aos dados de video sendo codificados. Os coeficientes de filtro ajustados, então, definem os coeficientes de filtro que são usados e codificados no fluxo de bits.
[00190] Para codificar os coeficientes de filtro de tal modo que tais coeficientes de filtro possam ser transmitidos como parte de um fluxo de bits, a unidade de predição e quantização de coeficiente 41 pode gerar valores residuais associados ao conjunto de coeficientes de filtro com base na codificação preditiva do conjunto de coeficientes de filtro em relação aos coeficientes de filtro associados a um filtro de interpolação fixa (242). Particularmente, a unidade de predição e quantização de coeficiente 41 pode subtrair os coeficientes de filtro determinados no processo de filtragem de interpolação adaptativa a partir dos coeficientes de filtro correspondentes associados a um filtro fixo, tal como um filtro de interpolação ITU-T H.264, ou um filtro de interpolação ITU-T H.264 sem arredondamento intermediário dos valores de meio pixel. Mediante codificação e transmissão de valores residuais, mais propriamente do que transmitir os coeficientes de filtro efetivos, a quantidade de dados comunicados no fluxo de bits pode ser reduzida. Nesse caso, o decodificador pode ser programado para conhecer a forma na qual os coeficientes de filtro são codificados.
[00191] O codificador de video 50 pode acionar a unidade de predição e quantização de coeficiente 41 para predizer e quantizar os coeficientes residuais, e a unidade de codificação por entropia 46 pode codificar por entropia os resíduos quantizados (243) . O codificador de video 50 pode então emitir os valores residuais como parte do fluxo de bits codificado (244) . A quantização dos valores residuais associados aos coeficientes de filtro pode envolver a quantização de valores residuais, em que pelo menos a alguns dos valores residuais associados com diferentes coeficientes de filtro são atribuídos diferentes niveis de quantização. Desse modo, a unidade de predição e quantização de coeficiente 41 pode atribuir mais quantização para os coeficientes residuais, maiores, e pode atribuir menos quantização para coeficientes residuais menores, para obter um equilíbrio desejável de quantização e exatidão. Quando mais quantização é usada, mais dados são eliminados, porém mais compactação pode ser obtida. A unidade de codificação por entropia 46 pode codificar por entropia os valores residuais mediante atribuição de um código de prefixo, atribuindo um código de sufixo e atribuindo um valor de sinal para os valores residuais após a quantização dos valores residuais. O codificador de video 50 pode então emitir os valores residuais como parte do fluxo de bits codificado (244) .
[00192] A Figura 27 é um gráfico conceptual ilustrando alguns coeficientes de filtro ilustrativos que podem ser codificados de forma preditiva. Nesse caso, os coeficientes de filtro Oi, O2, O3 θ O4 podem definir coeficientes de filtro associados com um filtro de interpolação fixo. Os coeficientes de filtro Xi, X2, X3 e X4 podem definir os coeficientes de filtro desejados, os quais podem ser razoavelmente similares àqueles do filtro de interpolação fixo. Consequentemente, os coeficientes de filtro Xi, X2, X3 e X4 podem ser preditos com base nos coeficientes de filtro Oi, O2, O3 θ O4respectivamente. Particularmente, um primeiro valor residual pode ser formado como a diferença entre Xi e Oi. Similarmente, um segundo valor residual pode ser formado como a diferença entre X2 e O2, um terceiro valor residual pode ser formado como a diferença entre X3 e O3, e um quarto valor residual pode ser formado como a diferença entre X4 e O4. Os valores residuais podem compreender menos dados do que os coeficientes de filtro originais, desse modo promovendo a compactação de dados.
[00193] Em alguns casos, o conjunto de coeficientes de filtro compreende um primeiro conjunto de coeficientes de filtro que define apenas uma porção de um conjunto inteiro de coeficientes de filtro associados a um filtro de interpolação adaptativo, em que um segundo conjunto de coeficientes de filtro pode ser determinado por um decodificador com base no primeiro conjunto de coeficientes de filtro e na simetria de coeficiente. Por exemplo, os coeficientes de filtro Xi e X2 podem ser codificados de forma preditiva com base em Oi e O2, respectivamente. Nesse caso, contudo, X3 e X4 podem ser simétricos com Xi e X2 e o decodif icador pode ser programado para saber que tal simetria é imposta. Consequentemente, através do uso de simetria, os coeficientes X3 e X4 nesse exemplo simples, podem ser eliminados a partir do fluxo de bits, e podem ser calculados no decodificador com base em simetria de coeficiente conhecida quando os coeficientes Xx e X2 forem decodificados de forma preditiva.
[00194] A Figura 25 é outro diagrama de fluxo ilustrando uma técnica para codificar os coeficientes de filtro utilizando codificação preditiva. Nesse caso, contudo, dois tipos diferentes de predição são utilizados. Conforme mostrado na Figura 25, a unidade MC 37 da unidade de predição 32 identifica um conjunto de coeficientes de filtro para interpolação de dados preditivos na codificação de video (251). Como com o processo da Figura 24, na Figura 25, a unidade MC 37 pode identificar o conjunto de coeficientes de filtro mediante realização de um processo de filtragem de interpolação adaptativa. Nesse caso, a unidade MC 37 pode determinar o conjunto de coeficientes de filtro por intermédio do processo de filtragem de interpolação adaptativa e gerar os dados preditivos com base nos coeficientes de filtro identificados no processo de filtragem de interpolação adaptativo. Na filtragem de interpolação adaptativa, a unidade MC 37 pode realizar uma abordagem de duas passagens na qual os dados preditivos são gerados com base em um filtro fixo, e então os coeficientes de filtro são ajustados de tal modo que os dados preditivos são tornados mais similares aos dados de video sendo codificados. Os coeficientes de filtro ajustados, então, definem os coeficientes de filtro que são usados e codificados no fluxo de bits.
[00195] Para codificar os coeficientes de filtro de tal modo que tais coeficientes de filtro possam ser transmitidos como parte de um fluxo de bits, a unidade de predição e quantização de coeficientes 41 pode gerar um primeiro conjunto de valores residuais associado a um primeiro conjunto dos coeficientes de filtro com base na codificação preditiva relativa aos coeficientes de filtro associados a um filtro de interpolação fixo (252) . Particularmente, a unidade de predição e quantização de coeficiente 41 pode subtrair o primeiro conjunto de coeficientes de filtro a partir dos coeficientes de filtro correspondentes associados a um filtro fixo, tal como um filtro de interpolação ITU-T H.264, ou um filtro de interpolação ITU-T H.264 sem arredondamento intermediário de valores de meio pixel. A seguir, a unidade de predição e quantização de coeficiente 41 pode gerar um segundo conjunto de valores residuais associados a um segundo conjunto dos coeficientes de filtro com base na codificação preditiva em relação ao primeiro conjunto de coeficientes de filtro 252. Particularmente, a unidade de predição e quantização de coeficiente 41 pode subtrair o segundo conjunto de coeficientes de filtro a partir de valores equivalentes ou girados do primeiro conjunto de coeficientes. Assim, o primeiro conjunto de coeficientes é codificado de forma preditiva com base nos coeficientes de um filtro fixo, e o segundo conjunto de coeficientes é codificado de forma preditiva com base no primeiro conjunto de coeficientes. Mediante geração de valores residuais mais propriamente do que utilizando os coeficientes de filtro efetivos, a quantidade de dados comunicada no fluxo de bits pode ser reduzida. Além disso, mediante uso do filtro fixo para predizer o primeiro conjunto de coeficientes e então utilizar o primeiro conjunto de coeficientes para predizer o segundo conjunto de coeficientes, compactação adicional de dados pode ser obtida em relação à predição que se baseia apenas no filtro fixo.
[00196] Como com o processo da Figura 24, na Figura 25, o codificador de video 50 pode acionar a unidade de predição e quantização de coeficiente 41 para codificar de forma preditiva e quantizer os coeficientes residuais, e a unidade de codificação por entropia 46 pode codificar por entropia os sinais quantizados (254). O codificador de video 50 pode então emitir os valores residuais como parte do fluxo de bits codificado (254). Outra vez, a quantização dos valores residuais associados com os coeficientes de filtro pode envolver a quantização de valores residuais, em que aos pelo menos alguns dos valores residuais associados com diferentes coeficientes de filtro são atribuídos niveis diferentes de quantização. Desse modo, a unidade de predição e quantização de coeficiente 41 pode atribuir mais quantização aos coeficientes residuais, maiores, e pode atribuir menos quantização aos coeficientes residuais menores para obter o equilíbrio desejável de quantização e exatidão. A unidade de codificação por entropia 46 pode codificar por entropia os valores residuais mediante atribuição de um código de prefixo, atribuição de um código de sufixo e atribuição de um valor de sinal para os valores residuais após a quantização dos valores residuais. O codificador de video 50 pode então emitir os valores residuais como parte do fluxo de bits codificado (255).
[00197] A Figura 28 é um gráfico conceptual ilustrando alguns coeficientes de filtro ilustrativos que podem ser codificados de forma preditiva compatível com o processo da Figura 25. Nesse caso, os coeficientes de filtro Oi e 02 podem definir coeficientes de filtro associados com um filtro de interpolação fixo. Os coeficientes de filtro X2 e X2 podem definir um primeiro conjunto dos coeficientes de filtro desejados, os quais podem ser razoavelmente similares àqueles do filtro de interpolação fixo. Consequentemente, os coeficientes de filtro Xi e X2 podem ser preditos com base nos coeficientes de filtro Oi e 02respectivamente. Particularmente, um primeiro valor residual pode ser formado como a diferença entre Xi e Oi, e um segundo valor residual pode ser formado como a diferença entre X2 e 02. Os valores residuais podem compreender menos dados do que os coeficientes de filtro originais, desse modo promovendo a compactação de dados. Os valores residuais são então quantizados pela unidade de predição e quantização de coeficiente 41 e codificados por entropia por intermédio da unidade de codificação por entropia 46. Xx e X2 podem se referir aos coeficientes de filtro modificados que são gerados pela adição de valores residuais desquantizados aos coeficientes de filtro de predição O2 e O2.
[00198] A seguir, um segundo conjunto de coeficientes de filtro, Z2 e Z2, pode ser codificado de forma preditiva com base no primeiro conjunto de coeficientes X2 e X2, por exemplo, especificamente a partir dos coeficientes X} e X2 os quais são definidos com base nos coeficientes Xi e X2. Particularmente, um terceiro valore residual pode ser formado como a diferença entre Zi e Xj, e um quarto valor residual pode ser formado como uma diferença entre Z2 e X2 . X} e X2 podem ser mais similares a Zi e Z2 do que Oi e O2 e, portanto, mediante uso de X} e X2 para codificar de forma preditiva Zi e Z2, compactação de dados adicional pode ser promovida.
[00199] A Figura 26 é um diagrama de fluxo ilustrando uma técnica para decodificar os coeficientes de filtro utilizando codificação preditiva. A Figura 26 será descrita a partir da perspectiva do decodificador de video 60 da Figura 16. Conforme mostrado o decodificador de video 60 recebe os valores residuais associados a um conjunto de coeficientes de filtro (261) . O decodificador de video 60 pode decodificar por entropia os valores residuais por intermédio da unidade de decodificação por entropia 52, e pode acionar a unidade de predição e quantização inversa de coeficiente 53 para desquantizar os valores residuais (262), que são então enviados para a unidade de predição 55. A unidade de predição 56 gera o conjunto de coeficientes de filtro utilizando decodificação preditiva dos valores residuais (263).
[00200] Particularmente, a unidade de predição 56 pode gerar o conjunto inteiro de coeficientes de filtro com base nos valores residuais e coeficientes de filtro, associados a um filtro de interpolação fixo, por exemplo, conforme ilustrado de forma conceptual na Figura 27 e tratado acima no contexto de codificação. Em alguns casos, um primeiro conjunto de coeficientes de filtro pode ser gerado com base nos valores residuais, e coeficientes de filtro, associados a um filtro de interpolação fixo, e um segundo conjunto de coeficientes de filtro pode ser gerado com base na simetria. Em outros casos, um primeiro conjunto de coeficientes de filtro pode ser gerado com base nos valores residuais, e nos coeficientes de filtro associados a um filtro de interpolação fixo, e um segundo conjunto de coeficientes de filtro pode ser gerado com base nos valores residuais adicionais e o primeiro conjunto de coeficientes de filtro, por exemplo, como ilustrado de modo conceptual na Figura 28 e tratado acima no contexto de codificação. Em todo o caso, a unidade de predição 56 do decodificador de video 60 aplica o conjunto de coeficientes de filtro para interpolar os dados preditivos usados para decodificação preditiva de blocos de video (264). Particularmente, a unidade de predição 56 filtra os dados para gerar dados preditivos interpolados utilizando os coeficientes de filtro decodificados de modo preditivo de modo que os blocos de video podem ser decodificados com base em tais dados preditivos interpolados.
[00201] Outra vez, o conjunto de coeficientes de filtro decodificados de forma preditiva pode compreender um primeiro conjunto de coeficientes de filtro que definem apensa uma porção de um conjunto inteiro de coeficientes de filtro associados a um filtro de interpolação adaptativo. Nesse caso, a unidade de predição e quantização inversa de coeficiente 53 do decodificador de video 60 pode gerar um segundo conjunto de coeficientes de filtro com base no primeiro conjunto de coeficientes de filtro e simetria de coeficiente, e aplicar o primeiro e o segundo conjunto de coeficientes de filtro para interpolar os dados preditivos.
[00202] Em outro caso, o conjunto de coeficientes de filtro decodificados de forma preditiva pode compreender um primeiro conjunto de coeficientes de filtro que define apenas uma porção de um conjunto inteiro de coeficientes de filtro associados a um filtro de interpolação adaptativo. Nesse caso, o decodificador de video 60 pode receber valores residuais adicionais associados com o conjunto inteiro de coeficientes de filtro. A unidade de predição e quantização inversa de coeficiente 53 pode gerar um segundo conjunto de coeficientes de filtro, utilizando decodificação preditiva com base nos valores residuais adicionais, e no primeiro conjunto de coeficientes de filtro; e a unidade de predição 55 pode aplicar o primeiro e o segundo conjunto de coeficientes de filtro para interpolar os dados preditivos.
[00203] Em alguns casos, filtros de interpolação fixos com base nos filtros H.264/AVC podem ser usados para predizer os filtros 1-D (os quais podem incluir filtros para as posições de sub-pixel a, b, d, h mostradas nas Figuras 8, 9, 10 e 11) . Para os filtros 2-D, que incluem filtros para as posições de sub-pixel e, f, i, e j mostradas nas Figuras 12, 13, 14 e 15, um dos seguintes esquemas de predição pode ser usado: 1. Definir predição para zero (nenhuma predição), 2. Utilizar uma predição de filtro fixa, tal como o filtro médio agrupado sobre um conjunto de treinamento, isto é, onde é o (i,j)° coeficiente de filtro no filtro médio para posição de sub-pixel SP. 3. Explorar a possível simetria nos coeficientes e usar os coeficientes já codificados para predizer os coeficientes restantes.
[00204] Para os filtros 1-D, qualquer um desses três métodos de predição também pode ser aplicado.
[00205] Para predição, a Figura 29 provê um exemplo de um arranjo de coeficientes de filtro de pixel de número inteiro para o qual as técnicas de predição podem ser usadas para codificação. Nesse exemplo, se pode supor que nenhuma simetria é imposta ao filtro de pixel de número inteiro. Os coeficientes (h0,0), (h0,l), (hl,0), (hl,l), (h2,0), (h2,l), (h0,2), (hl,2) e (h2,2) podem ser quantizados e decodificados em primeiro lugar. Então, os coeficientes já codificados à esquerda superior (h0,0), (h0,l), (hl,0), (hl,l) e (h2,0) podem ser usados para predizer os coeficientes à direita superior (h0,3), (hl,3), (h2,3), (h0,4), (hl,4) e (h2,4). A seguir, quando a metade superior dos coeficientes de filtro (h0,0), (h0,l), (h0,2), (h0,3), (h0,4), (hl,0), (hl,l), (hl,2), (hl,3) e (hl,4) são quantizados e codificados, eles podem ser usados adicionalmente para predizer a metade inferior dos coeficientes de filtro (h3,0), (h3,l), (h.3,2), (h3,3), (h3,4), (h4,0), (h4,l), (h4,2), (h4,3) e (h4,4). A predição de outros coeficientes de filtro pode ser feita de forma similar. Por exemplo, para o filtro de posição de sub-pixel "e" (vide Figura 12), o qual pode ter alguma simetria diagonalmente, os coeficientes à direita em cima, podem ser quantizados e codificados em primeiro lugar, e então usados para predizer os coeficientes à esquerda em baixo.
[00206] Em todo o caso, após a predição dos coeficientes (por exemplo, por intermédio da unidade de predição e quantização de coeficiente 41 da unidade de predição 32), erros de predição são quantizados (por exemplo, mediante a unidade de predição e quantização de coeficiente 41). Conforme delineado acima, a assim chamada "quantização desigual" pode ser usada. Nesse caso, a precisão de quantização aplicada pela unidade de predição e quantização de coeficiente 41 pode depender da localização de coeficiente. Descobriu-se que para os coeficientes com magnitude menor (os quais são tipicamente coeficientes mais distantes do centro do filtro) , melhor precisão pode ser desejável. Em comparação, os coeficientes com magnitude maior (os quais são tipicamente coeficientes mais próximos do centro do filtro), menos precisão é mais desejável.
[00207] As matrizes seguintes, Qw,Q2D, podem ser usadas pela unidade de predição e quantização de coeficiente 41 para especificar a precisão de quantização para os coeficientes nos filtros 1D, nos filtros 2D, e no filtro de pixel de número inteiro, respectivamente. Observar que os números de bits dados nas matrizes podem incluir um bit para codificar o sinal dos coeficientes respectivos.
[00208] A unidade de predição e quantização de coeficiente 41 pode codificar os erros de predição de coeficiente quantizado, isto é, os valores residuais de coeficiente, com base em um esquema de codificação de prefixo simples. Em primeiro luqar, a faixa dinâmica da maqnitude do erro de predição é dividida em N faixas, por exemplo, N = 6. Se a faixa dinâmica da magnitude for [ 0, . . ., 2 v-J — i ] , onde q é a precisão de quantização para a posição de coeficiente dada, (tal como especificado nas matrizes acima) então cada faixa n, n=0...N-l, pode cobrir as seguintes faixas:
[00209] Nesse caso, a faixa b, b=0...N-l, a qual pertence à magnitude de entrada m, pode ser codificada utilizando um código de prefixo unário (o qual considera b+1 bits) . Então, o restante da magnitude, m - bstart, pode ser codificado utilizando o código de sufixo de comprimento fixo de (q - N + b - 1) bits. Finalmente, o sinal do erro de predição é codificado utilizando 1 bit.
[00210] Por exemplo, para o coeficiente central no filtro 1D, precisão de 9 bits pode ser usada pela unidade de predição e quantização de coeficiente 41 para quantizer o erro de predição, isto é, q = 9, dos quais 8 bits podem ser usados para quantizer a magnitude de erro. Se a magnitude de erro for 97, então ela está compreendida na 4a faixa, isto é, b=4 . Portanto, o código de prefixo unário "11110" pode ser codificado para indicar a 4a faixa, e o restante de m - bs^ = 97-64 = 33 pode ser codificado utilizando um código de sufixo de comprimento fixo de (q- N + b-1) = (9-6 +4 - 1)=6 bits. Finalmente, um bit "0" pode ser codificado para indicar o sinal positivo.
[00211] As técnicas dessa revelação podem ser implementadas em uma ampla variedade de dispositivos ou equipamentos, incluindo um telefone sem fio, e circuito integrado (IC) ou um conjunto de ICs (isto é, um conjunto de chips). Quaisquer componentes, módulos ou unidades foram descritos para enfatizar aspectos funcionais e não requerem necessariamente realização por unidades de hardware diferentes.
[00212] Consequentemente, as técnicas aqui descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em hardware, quaisquer recursos descritos como módulos, unidades ou componentes podem ser implementados em conjunto em um dispositivo lógico integrado; ou separadamente como dispositivos lógicos discretos, porém operáveis entre si. Se implementadas em software, as técnicas podem ser realizadas ao menos em parte por um meio legivel por computador compreendendo instruções que, quando executadas em um processador, realizam um ou mais dos métodos descritos acima. 0 meio legivel por computador pode compreender um meio de armazenamento legivel por computador e pode formar parte de um produto de programa de computador, o qual pode incluir materiais de embalagem. 0 meio de armazenamento legivel por computador pode compreender memória de acesso aleatório (RAM) tal como memória de acesso aleatório, dinâmica, síncrona (SDRAM), memória de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória de leitura programável eletricamente apagável (EEPROM), memória flash, meio de armazenamento de dados magnético ou ótico, e semelhante. As técnicas adicionalmente, ou alternativamente, podem ser realizadas ao menos em parte por intermédio de um meio de comunicação legivel por computador que carrega 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.
[00213] O código pode ser executado por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação especifica (ASICs), arranjos de lógica programável no campo (FPGAs), ou outro conjunto de circuitos lógicos integrados ou discretos equivalentes. Consequentemente, o termo "processador", conforme aqui usado pode se referir a qualquer uma entre estrutura precedente ou qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de módulos de software dedicados ou módulos de hardware configurados para codificar e decodificar, ou incorporados em um codec de video combinado. Além disso, as técnicas poderiam ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
[00214] Diversos aspectos da revelação foram descritos. Esses e outros aspectos estão dentro do escopo das reivindicações a seguir.
Claims (12)
1. Método de interpolação de sub-pixel para compensação de movimento em codificação de video, caracterizadopelo fato de que compreende: gerar (231) primeiros dados preditivos interpolados para codificação de dados de video com base em um primeiro filtro de interpolação correspondente a um filtro de interpolação fixo; gerar (232) segundos dados preditivos interpolados para codificação dos dados de video com base em um segundo filtro de interpolação correspondente a um filtro de interpolação adaptativo; selecionar (233) entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base em uma análise de distorção de taxa utilizando pelo menos uma taxa de bits e um nivel de distorção; codificar (234) os dados de video com base na seleção; e codificar (235) um elemento de sintaxe para indicar a seleção, em que um elemento de sintaxe separado é definido para cada local de sub-pixel para a unidade codificada para indicar se o primeiro filtro de interpolação ou o segundo filtro de interpolação deve ser usado por um decodificador para cada um dentre os locais de sub-pixel; em que selecionar entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base em uma análise de distorção de taxa compreende: calcular um primeiro custo de distorção de taxa associado aos dados de video caso os dados de video sejam codificados através dos primeiros dados preditivos interpolados, em que o primeiro custo de distorção de taxa é uma primeira métrica de diferença; calcular um segundo custo de distorção de taxa associado aos dados de video caso os dados de video sejam codificados através dos segundos dados preditivos interpolados, em que o segundo custo de distorção de taxa compreende uma segunda métrica de diferença mais um valor que qualifica custo associado a codificação de coeficientes de filtro, em que o valor compreende um número de bits necessários para codificar coeficientes de filtro de interpolação adaptativa para o segundo filtro de interpolação; e selecionar entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base nos primeiro e segundo custos de distorção de taxa.
2. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que o primeiro filtro de interpolação opera de acordo com o padrão ITU-T H.264.
3. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que o primeiro filtro de interpolação implementa técnicas definidas pelo padrão ITU- T H.264 sem arredondamento intermediário de valores de pixel fracionários que são usados para gerar outros valores de pixel fracionários.
4. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que o elemento de sintaxe compreende um indicador que define se o primeiro filtro de interpolação ou o segundo filtro de interpolação deve ser usado por um decodificador.
5. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que um elemento de sintaxe separado é definido para locais de pixel de número inteiro dos dados de video para indicar se um primeiro filtro ou um segundo filtro deve ser usado por um decodificador para os locais de pixel de número inteiro.
6. Método, de acordo com a reivindicação 5, caracterizadopelo fato de que o primeiro filtro não aplica qualquer filtragem de número inteiro e o segundo filtro é associado com coeficientes de filtro adaptativo.
7. Método, de acordo com a reivindicação 1, caracterizadopelo fato de que compreende adicionalmente transmitir os dados de video codificados e o elemento de sintaxe para indicar se os primeiros dados preditivos interpolados ou os segundos dados preditivos interpolados foram usados para gerar os dados de video codificados.
8. Método, de acordo com a reivindicação 7, caracterizadopelo fato de que compreende adicionalmente: transmitir coeficientes de filtro quando o segundo filtro de interpolação for adaptativo e o elemento de sintaxe indicar que os segundos dados preditivos interpolados foram usados para gerar os dados de video codificados; e transmitir nenhum coeficiente de filtro quando o primeiro filtro de interpolação for fixo e o elemento de sintaxe indicar que os primeiros dados preditivos interpolados foram usados para gerar os dados de video codificados.
9. Dispositivo (12) para interpolação de sub- pixel para compensação de movimento em codificação de video, caracterizadopelo fato de que compreende: meios para gerar primeiros dados preditivos interpolados para codificação de dados de video com base em um primeiro filtro de interpolação correspondente a um filtro de interpolação fixo; meios para gerar segundos dados preditivos interpolados para codificação dos dados de video com base em um segundo filtro de interpolação correspondente a um filtro de interpolação adaptativo; meios para selecionar entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base em uma análise de distorção de taxa utilizando pelo menos uma taxa de bits e um nivel de distorção; meios para codificar os dados de video com base na seleção; e meios para codificar um elemento de sintaxe para indicar a seleção, em que um elemento de sintaxe separado é definido para cada local de sub-pixel para a unidade codificada para indicar se o primeiro filtro de interpolação ou o segundo filtro de interpolação deve ser usado por um decodificador para cada um dentre os locais de sub-pixel; em que os meios para selecionar entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base em uma análise de distorção de taxa compreende: meios para calcular um primeiro custo de distorção de taxa associado aos dados de video caso os dados de video sejam codificados através dos primeiros dados preditivos interpolados, em que o primeiro custo de distorção de taxa é uma primeira métrica de diferença; meios para calcular um segundo custo de distorção de taxa associado aos dados de video caso os dados de video sejam codificados através dos segundos dados preditivos interpolados, em que o segundo custo de distorção de taxa compreende uma segunda métrica de diferença mais um valor que qualifica custo associado a codificação de coeficientes de filtro, em que o valor compreende um número de bits necessários para codificar coeficientes de filtro de interpolação adaptativa; e meios para selecionar entre os primeiros dados preditivos interpolados e os segundos dados preditivos interpolados com base nos primeiro e segundo custos de distorção de taxa.
10. Dispositivo (12), de acordo com a reivindicação 9, caracterizadopelo fato de que os meios são incorporados em um codificador de video (50), em que o codificador de video (50) compreende um circuito integrado.
11. Dispositivo (12), de acordo com a reivindicação 9, caracterizadopelo fato de que os meios são incorporados em um codificador de video (50), em que o codificador de video (50) compreende um microprocessador.
12. Dispositivo (12), de acordo com a reivindicação 9, caracterizadopelo fato de que os meios são incorporados em um codificador de vídeo (50), em que o dispositivo (12) compreende um dispositivo de comunicação sem fio que inclui o codificador de vídeo.
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US4402308P | 2008-04-10 | 2008-04-10 | |
US4402008P | 2008-04-10 | 2008-04-10 | |
US61/044,020 | 2008-04-10 | ||
US61/044,023 | 2008-04-10 | ||
US4424008P | 2008-04-11 | 2008-04-11 | |
US61/044,240 | 2008-04-11 | ||
US5737308P | 2008-05-30 | 2008-05-30 | |
US61/057,373 | 2008-05-30 | ||
US12/420,315 US9967590B2 (en) | 2008-04-10 | 2009-04-08 | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter |
US12/420,315 | 2009-04-08 | ||
PCT/US2009/040254 WO2009126915A1 (en) | 2008-04-10 | 2009-04-10 | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter |
Publications (2)
Publication Number | Publication Date |
---|---|
BRPI0910634A2 BRPI0910634A2 (pt) | 2016-08-02 |
BRPI0910634B1 true BRPI0910634B1 (pt) | 2020-11-03 |
Family
ID=40688433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BRPI0910634-0A BRPI0910634B1 (pt) | 2008-04-10 | 2009-04-10 | método e dispositivo para interpolação de sub-pixel para compensação de movimento em codificação de vídeo |
Country Status (9)
Country | Link |
---|---|
US (3) | US9967590B2 (pt) |
EP (1) | EP2304961B1 (pt) |
JP (2) | JP5536034B2 (pt) |
KR (1) | KR101202633B1 (pt) |
CN (1) | CN101990758B (pt) |
BR (1) | BRPI0910634B1 (pt) |
CA (1) | CA2719232C (pt) |
TW (1) | TWI542222B (pt) |
WO (1) | WO2009126915A1 (pt) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9967590B2 (en) | 2008-04-10 | 2018-05-08 | Qualcomm Incorporated | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter |
US8831086B2 (en) * | 2008-04-10 | 2014-09-09 | Qualcomm Incorporated | Prediction techniques for interpolation in video coding |
JP5200788B2 (ja) * | 2008-09-09 | 2013-06-05 | 富士通株式会社 | 映像信号処理装置、映像信号処理方法および映像信号処理プログラム |
WO2010063881A1 (en) * | 2008-12-03 | 2010-06-10 | Nokia Corporation | Flexible interpolation filter structures for video coding |
KR101678968B1 (ko) * | 2009-08-21 | 2016-11-25 | 에스케이텔레콤 주식회사 | 참조 픽처 보간 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치 |
US8554061B2 (en) * | 2009-09-10 | 2013-10-08 | Apple Inc. | Video format for digital video recorder |
US8737825B2 (en) | 2009-09-10 | 2014-05-27 | Apple Inc. | Video format for digital video recorder |
US20120163479A1 (en) * | 2009-09-28 | 2012-06-28 | Canon Kabushiki Kaisha | Methods and devices for filtering and coding a digital signal |
KR101709822B1 (ko) * | 2009-11-24 | 2017-02-23 | 텔레폰악티에볼라겟엘엠에릭슨(펍) | 부호화된 텍셀 블록에서 동작할 수 있는 복호 시스템 및 방법 |
WO2011086672A1 (ja) * | 2010-01-13 | 2011-07-21 | 株式会社 東芝 | 動画像符号化装置および復号装置 |
JP2011146980A (ja) * | 2010-01-15 | 2011-07-28 | Sony Corp | 画像処理装置および方法 |
US8995527B2 (en) * | 2010-02-19 | 2015-03-31 | Qualcomm Incorporated | Block type signalling in video coding |
US9094658B2 (en) | 2010-05-10 | 2015-07-28 | Mediatek Inc. | Method and apparatus of adaptive loop filtering |
WO2011142815A1 (en) * | 2010-05-12 | 2011-11-17 | Thomson Licensing | Methods and apparatus for uni-prediction of self-derivation of motion estimation |
US8577159B2 (en) | 2010-09-14 | 2013-11-05 | Blackberry Limited | Methods and devices for data compression with adaptive filtering in the transform domain |
CA2805722C (en) * | 2010-10-05 | 2016-03-29 | Ching-Yeh Chen | Method and apparatus of region-based adaptive loop filtering |
US10045046B2 (en) | 2010-12-10 | 2018-08-07 | Qualcomm Incorporated | Adaptive support for interpolating values of sub-pixels for video coding |
US9172972B2 (en) | 2011-01-05 | 2015-10-27 | Qualcomm Incorporated | Low complexity interpolation filtering with adaptive tap size |
JP5552092B2 (ja) * | 2011-06-13 | 2014-07-16 | 日本電信電話株式会社 | 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム |
JP5762243B2 (ja) * | 2011-10-18 | 2015-08-12 | 日本電信電話株式会社 | 映像符号化方法,装置,映像復号方法,装置およびそれらのプログラム |
EP2595382B1 (en) | 2011-11-21 | 2019-01-09 | BlackBerry Limited | Methods and devices for encoding and decoding transform domain filters |
KR101156667B1 (ko) * | 2011-12-06 | 2012-06-14 | 주식회사 에이디알에프코리아 | 통신 시스템의 필터 계수 설정 방법 |
US10230956B2 (en) | 2012-09-26 | 2019-03-12 | Integrated Device Technology, Inc. | Apparatuses and methods for optimizing rate-distortion of syntax elements |
US10277907B2 (en) | 2012-10-25 | 2019-04-30 | Integrated Device Technology, Inc. | Rate-distortion optimizers and optimization techniques including joint optimization of multiple color components |
WO2015015681A1 (ja) * | 2013-07-31 | 2015-02-05 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 画像符号化方法および画像符号化装置 |
US20160080771A1 (en) * | 2014-09-17 | 2016-03-17 | Mediatek Inc. | Motion compensation apparatus having at least one processing circuit shared by normal mode and resized reference frame mode and related motion compensation method |
WO2016129851A1 (ko) * | 2015-02-13 | 2016-08-18 | 엘지전자(주) | 비균등 위상 보간을 이용하여 비디오 신호를 인코딩, 디코딩하는 방법 및 장치 |
US10200713B2 (en) * | 2015-05-11 | 2019-02-05 | Qualcomm Incorporated | Search region determination for inter coding within a particular picture of video data |
GB2576286B (en) | 2017-04-21 | 2022-09-07 | Zenimax Media Inc | Systems and methods for deferred post-processes in video encoding |
CN111201791B (zh) * | 2017-11-07 | 2022-05-24 | 华为技术有限公司 | 用于视频编码的帧间预测装置和方法的插值滤波器 |
WO2023153891A1 (ko) * | 2022-02-13 | 2023-08-17 | 엘지전자 주식회사 | 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체 |
Family Cites Families (111)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61210599A (ja) | 1985-03-14 | 1986-09-18 | Casio Comput Co Ltd | 録音機能付電子機器 |
JP2904284B2 (ja) | 1989-06-01 | 1999-06-14 | キヤノン株式会社 | 符号化方法及び装置 |
JP2835187B2 (ja) | 1991-01-07 | 1998-12-14 | 株式会社東芝 | 符号化/復号化器および符号化/復号化方法 |
US5684538A (en) | 1994-08-18 | 1997-11-04 | Hitachi, Ltd. | System and method for performing video coding/decoding using motion compensation |
DE69601362T2 (de) | 1995-05-02 | 1999-08-26 | Innovision Ltd. | Bewegungskompensierende filterung |
US6345145B1 (en) * | 1995-08-25 | 2002-02-05 | Sony Corporation | Signal recording/reproducing method and apparatus, signal record medium and signal transmission/reception method and apparatus |
JP3787650B2 (ja) | 1995-09-08 | 2006-06-21 | ソニー株式会社 | デイジタル画像信号符号化装置及び方法、符号化画像信号復号装置及び方法 |
JP2938412B2 (ja) | 1996-09-03 | 1999-08-23 | 日本電信電話株式会社 | 動画像の輝度変化補償方法、動画像符号化装置、動画像復号装置、動画像符号化もしくは復号プログラムを記録した記録媒体および動画像の符号化データを記録した記録媒体 |
KR100303685B1 (ko) | 1996-09-30 | 2001-09-24 | 송문섭 | 영상 예측부호화 장치 및 그 방법 |
JP3235546B2 (ja) | 1997-11-07 | 2001-12-04 | 日本電気株式会社 | ディジタルフィルタの量子化係数の決定方法及びその決定プログラムが記録されたコンピュータ上で読み出し可能な記録媒体 |
US6539058B1 (en) | 1998-04-13 | 2003-03-25 | Hitachi America, Ltd. | Methods and apparatus for reducing drift due to averaging in reduced resolution video decoders |
US6266373B1 (en) | 1998-06-15 | 2001-07-24 | U.S. Philips Corporation | Pixel data storage system for use in half-pel interpolation |
JP2000106675A (ja) | 1998-07-29 | 2000-04-11 | Matsushita Electric Ind Co Ltd | 映像符号化方法、映像符号化装置及び動きベクトル検出装置 |
US6529638B1 (en) | 1999-02-01 | 2003-03-04 | Sharp Laboratories Of America, Inc. | Block boundary artifact reduction for block-based image compression |
JP2000353961A (ja) | 1999-06-11 | 2000-12-19 | Fuji Xerox Co Ltd | 画像処理装置 |
JP3639462B2 (ja) | 1999-06-25 | 2005-04-20 | 三洋電機株式会社 | リチウム二次電池 |
FI117533B (fi) | 2000-01-20 | 2006-11-15 | Nokia Corp | Menetelmä digitaalisten videokuvien suodattamiseksi |
JP3992419B2 (ja) | 2000-03-27 | 2007-10-17 | パイオニア株式会社 | 情報再生装置 |
US6813505B2 (en) * | 2001-01-05 | 2004-11-02 | Skyworks Solutions, Inc. | Efficient and flexible communication device and system with base-to-base communication |
DE10120395A1 (de) | 2001-04-25 | 2002-10-31 | Bosch Gmbh Robert | Einrichtung zur Interpolation von Abtastwerten sowie Bildencoder und Bilddecoder |
JP2003026296A (ja) | 2001-07-18 | 2003-01-29 | Nkk Plant Engineering Corp | 樽定量充填及び/又は抜取り装置、充填ノズル、抜取りノズル、並びにライン内残酒抜取りシステム |
US6950469B2 (en) | 2001-09-17 | 2005-09-27 | Nokia Corporation | Method for sub-pixel value interpolation |
GB2379820A (en) | 2001-09-17 | 2003-03-19 | Nokia Corp | Interpolating values for sub-pixels |
KR100747958B1 (ko) | 2001-09-18 | 2007-08-08 | 마쯔시다덴기산교 가부시키가이샤 | 화상 부호화 방법 및 화상 복호화 방법 |
JP3936335B2 (ja) | 2001-11-30 | 2007-06-27 | 株式会社エヌ・ティ・ティ・ドコモ | 動画像符号化装置、動画像復号化装置、動画像符号化方法、動画像復号化方法、プログラム及びプログラムを記憶したコンピュータ読み取り可能な記録媒体 |
MXPA04006814A (es) | 2002-01-14 | 2004-12-06 | Nokia Corp | Filtros dinamicos de codificacion. |
JP2004007379A (ja) | 2002-04-10 | 2004-01-08 | Toshiba Corp | 動画像符号化方法及び動画像復号化方法 |
JP4015934B2 (ja) | 2002-04-18 | 2007-11-28 | 株式会社東芝 | 動画像符号化方法及び装置 |
US7129962B1 (en) | 2002-03-25 | 2006-10-31 | Matrox Graphics Inc. | Efficient video processing method and system |
US7620109B2 (en) | 2002-04-10 | 2009-11-17 | Microsoft Corporation | Sub-pixel interpolation in motion estimation and compensation |
US7305034B2 (en) | 2002-04-10 | 2007-12-04 | Microsoft Corporation | Rounding control for multi-stage interpolation |
JP4120301B2 (ja) | 2002-04-25 | 2008-07-16 | ソニー株式会社 | 画像処理装置およびその方法 |
EP1467491B1 (de) * | 2002-05-02 | 2007-01-24 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Arithmetische Codierung von Transformationskoeffizienten |
JP2004007277A (ja) | 2002-05-31 | 2004-01-08 | Ricoh Co Ltd | 通信端末装置、音声認識システム、および情報アクセスシステム |
US8406301B2 (en) | 2002-07-15 | 2013-03-26 | Thomson Licensing | Adaptive weighting of reference pictures in video encoding |
AU2003246987A1 (en) | 2002-07-09 | 2004-01-23 | Nokia Corporation | Method and system for selecting interpolation filter type in video coding |
KR20050018948A (ko) | 2002-07-09 | 2005-02-28 | 노키아 코포레이션 | 비디오 부호화에서 보간 필터 유형을 선택하기 위한 방법및 장치 |
US7903742B2 (en) | 2002-07-15 | 2011-03-08 | Thomson Licensing | Adaptive weighting of reference pictures in video decoding |
JP4724351B2 (ja) | 2002-07-15 | 2011-07-13 | 三菱電機株式会社 | 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法、および通信装置 |
US20040012610A1 (en) | 2002-07-22 | 2004-01-22 | Taneja Nimita J. | Anti-aliasing interlaced video formats for large kernel convolution |
AU2002364104A1 (en) | 2002-08-15 | 2004-03-03 | On2.Com | Imprroved video compression system |
KR100472476B1 (ko) | 2002-08-31 | 2005-03-10 | 삼성전자주식회사 | 움직임 보상을 위한 보간 방법 및 그 장치 |
DE10240404A1 (de) | 2002-09-02 | 2004-03-18 | Austriamicrosystems Ag | Hall-Sensor und Verfahren zu dessen Betrieb |
US20040076333A1 (en) | 2002-10-22 | 2004-04-22 | Huipin Zhang | Adaptive interpolation filter system for motion compensated predictive video coding |
KR100534207B1 (ko) | 2002-12-09 | 2005-12-08 | 삼성전자주식회사 | 비디오 부호화기의 움직임 추정기 및 그 방법 |
WO2004082290A1 (ja) | 2003-03-10 | 2004-09-23 | Mitsubishi Denki Kabushiki Kaisha | 映像信号符号化装置、および映像信号符号化方法 |
JP2004297768A (ja) | 2003-03-10 | 2004-10-21 | Mitsubishi Electric Corp | 映像信号符号化装置、および映像信号符号化方法 |
RU2305377C2 (ru) | 2003-05-20 | 2007-08-27 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Способ уменьшения искажения сжатого видеоизображения и устройство для его реализации |
US7471724B2 (en) * | 2003-06-23 | 2008-12-30 | Vichip Corp. Limited | Method and apparatus for adaptive multiple-dimensional signal sequences encoding/decoding |
EP1636998A2 (en) | 2003-06-25 | 2006-03-22 | Thomson Licensing | Method and apparatus for weighted prediction estimation using a displaced frame differential |
US7599438B2 (en) | 2003-09-07 | 2009-10-06 | Microsoft Corporation | Motion vector block pattern coding and decoding |
US8094711B2 (en) * | 2003-09-17 | 2012-01-10 | Thomson Licensing | Adaptive reference picture generation |
NO319629B1 (no) | 2003-11-28 | 2005-09-05 | Tandberg Telecom As | Fremgangsmate for korrigering av interpolerte pikselverdier |
CN1294490C (zh) | 2003-12-31 | 2007-01-10 | 宏碁股份有限公司 | 智能卡与终端机间的数据处理方法及数据处理*** |
EP1578137A2 (en) | 2004-03-17 | 2005-09-21 | Matsushita Electric Industrial Co., Ltd. | Moving picture coding apparatus with multistep interpolation process |
WO2005104564A1 (ja) | 2004-04-21 | 2005-11-03 | Matsushita Electric Industrial Co., Ltd. | 動き補償装置 |
JP2005318297A (ja) | 2004-04-28 | 2005-11-10 | Toshiba Corp | 動画像符号化・復号方法及び装置 |
US7436405B2 (en) | 2004-05-14 | 2008-10-14 | Microsoft Corporation | Terrain rendering using nested regular grids |
KR100605105B1 (ko) | 2004-05-28 | 2006-07-26 | 삼성전자주식회사 | 영상 보간 장치 |
CN1717056A (zh) | 2004-07-02 | 2006-01-04 | 三菱电机株式会社 | 用于小波视频编码中的高通时间滤波帧的帧内预测 |
WO2006004331A1 (en) | 2004-07-07 | 2006-01-12 | Samsung Electronics Co., Ltd. | Video encoding and decoding methods and video encoder and decoder |
US8374238B2 (en) | 2004-07-13 | 2013-02-12 | Microsoft Corporation | Spatial scalability in 3D sub-band decoding of SDMCTF-encoded video |
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 |
EP3133813B1 (en) | 2004-09-16 | 2020-06-17 | InterDigital VC Holdings, Inc. | Method and apparatus for weighted prediction video codec utilizing local brightness variation |
EP1641274B1 (en) | 2004-09-23 | 2013-06-05 | Panasonic Corporation | Video coding employing an image de-graining loop-filter |
JP4284265B2 (ja) | 2004-11-02 | 2009-06-24 | 株式会社東芝 | 動画像符号化装置、動画像符号化方法、動画像復号化装置および動画像復号化方法 |
US7653132B2 (en) | 2004-12-21 | 2010-01-26 | Stmicroelectronics, Inc. | Method and system for fast implementation of subpixel interpolation |
US8218634B2 (en) | 2005-01-13 | 2012-07-10 | Ntt Docomo, Inc. | Nonlinear, in-the-loop, denoising filter for quantization noise removal for hybrid video compression |
JP2006211152A (ja) | 2005-01-26 | 2006-08-10 | Hokkaido Univ | 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法、画像符号化用プログラム、画像復号用プログラム |
JP2008536414A (ja) | 2005-04-13 | 2008-09-04 | ゴットフリート・ヴィルヘルム・ライプニッツ・ウニヴェルジテート・ハノーヴァー | ビデオの拡張された符号化方法及び装置 |
US8208564B2 (en) | 2005-06-24 | 2012-06-26 | Ntt Docomo, Inc. | Method and apparatus for video encoding and decoding using adaptive interpolation |
EP1746839A1 (en) | 2005-07-22 | 2007-01-24 | Thomson Licensing | Method and apparatus for encoding video data |
JP2007060199A (ja) | 2005-08-24 | 2007-03-08 | Matsushita Electric Ind Co Ltd | 可変長復号装置およびそれを含む集積回路 |
WO2007047271A2 (en) | 2005-10-12 | 2007-04-26 | Thomson Licensing | Methods and apparatus for weighted prediction in scalable video encoding and decoding |
US7778494B2 (en) | 2005-10-13 | 2010-08-17 | Texas Instruments Incorporated | FIR-based interpolation in advanced video codecs on VLIW processor |
KR100754841B1 (ko) | 2005-10-28 | 2007-09-04 | 경희대학교 산학협력단 | 비트율 왜곡 비용에 기초하여 선택된 보간 필터를 이용하여공간 계층간 예측을 수행하는 스케일러블 h.264부호화/복호화 방법 |
US7899263B2 (en) | 2006-01-10 | 2011-03-01 | Texas Instruments Incorporated | Method and apparatus for processing analytical-form compression noise in images with known statistics |
EP1985122A1 (en) | 2006-02-17 | 2008-10-29 | Thomson Licensing | Localized weighted prediction handling video data brightness variations |
US8189934B2 (en) | 2006-03-27 | 2012-05-29 | Panasonic Corporation | Image coding apparatus and image decoding apparatus |
GB0609117D0 (en) | 2006-05-09 | 2006-06-21 | Biotica Tech Ltd | Novel compounds |
TWI444047B (zh) | 2006-06-16 | 2014-07-01 | Via Tech Inc | 用於視訊解碼的去方塊效應濾波器、視訊解碼器與圖形處理單元 |
JP5535625B2 (ja) | 2006-07-18 | 2014-07-02 | トムソン ライセンシング | 適応的参照フィルタリングの方法及び装置 |
TW200808067A (en) | 2006-07-31 | 2008-02-01 | Univ Nat Cheng Kung | Prediction module |
BRPI0715507A2 (pt) | 2006-08-02 | 2013-06-18 | Thomson Licensinc S A | mÉtodos e aparelhos para particionamento geomÉtrico adaptativo para decodificaÇço de vÍdeo |
US8582663B2 (en) | 2006-08-08 | 2013-11-12 | Core Wireless Licensing S.A.R.L. | Method, device, and system for multiplexing of video streams |
SG140508A1 (en) | 2006-08-31 | 2008-03-28 | St Microelectronics Asia | Multimode filter for de-blocking and de-ringing |
US20080075165A1 (en) | 2006-09-26 | 2008-03-27 | Nokia Corporation | Adaptive interpolation filters for video coding |
US9014280B2 (en) | 2006-10-13 | 2015-04-21 | Qualcomm Incorporated | Video coding with adaptive filtering for motion compensated prediction |
US8509316B2 (en) * | 2007-01-09 | 2013-08-13 | Core Wireless Licensing, S.a.r.l. | Adaptive interpolation filters for video coding |
US8942505B2 (en) | 2007-01-09 | 2015-01-27 | Telefonaktiebolaget L M Ericsson (Publ) | Adaptive filter representation |
EP2132941B1 (en) | 2007-04-09 | 2017-05-17 | Nokia Technologies Oy | High accuracy motion vectors for video coding with low encoder and decoder complexity |
JP2009047917A (ja) | 2007-08-20 | 2009-03-05 | Fujitsu Ltd | 光波長選択スイッチおよび制御方法 |
EP2048886A1 (en) | 2007-10-11 | 2009-04-15 | Panasonic Corporation | Coding of adaptive interpolation filter coefficients |
US20090097545A1 (en) * | 2007-10-14 | 2009-04-16 | Nokia Corporation | Fixed-Point Implementation of an Adaptive Image Filter with High Coding Efficiency |
US8831086B2 (en) | 2008-04-10 | 2014-09-09 | Qualcomm Incorporated | Prediction techniques for interpolation in video coding |
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 |
US8804831B2 (en) | 2008-04-10 | 2014-08-12 | Qualcomm Incorporated | Offsets at sub-pixel resolution |
US8705622B2 (en) | 2008-04-10 | 2014-04-22 | Qualcomm Incorporated | Interpolation filter support for sub-pixel resolution in video coding |
US9967590B2 (en) | 2008-04-10 | 2018-05-08 | Qualcomm Incorporated | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter |
US8971412B2 (en) | 2008-04-10 | 2015-03-03 | Qualcomm Incorporated | Advanced interpolation techniques for motion compensation in video coding |
US8120607B1 (en) | 2008-05-30 | 2012-02-21 | Nvidia Corporation | Boundary transition region stitching for tessellation |
US8188999B2 (en) | 2008-06-17 | 2012-05-29 | Qualcomm Incorporated | Method and apparatus for organizing object geometry for spatial and memory coherency and optimal rendering |
US20100164954A1 (en) | 2008-12-31 | 2010-07-01 | Sathe Rahul P | Tessellator Whose Tessellation Time Grows Linearly with the Amount of Tessellation |
US20100214294A1 (en) | 2009-02-20 | 2010-08-26 | Microsoft Corporation | Method for tessellation on graphics hardware |
US20100253683A1 (en) | 2009-04-01 | 2010-10-07 | Munkberg Carl J | Non-uniform tessellation technique |
US8884957B2 (en) | 2009-09-09 | 2014-11-11 | Advanced Micro Devices, Inc. | Tessellation engine and applications thereof |
US8537158B2 (en) | 2009-12-02 | 2013-09-17 | Microsoft Corporation | Parallel triangle tessellation |
GB201007348D0 (en) | 2010-04-30 | 2010-06-16 | Imagination Tech Ltd | Programmable tessellation in a tile based rendering system |
US20110310102A1 (en) | 2010-06-17 | 2011-12-22 | Via Technologies, Inc. | Systems and methods for subdividing and storing vertex data |
-
2009
- 2009-04-08 US US12/420,315 patent/US9967590B2/en active Active
- 2009-04-10 KR KR1020107025053A patent/KR101202633B1/ko active IP Right Grant
- 2009-04-10 WO PCT/US2009/040254 patent/WO2009126915A1/en active Application Filing
- 2009-04-10 EP EP09730952.0A patent/EP2304961B1/en active Active
- 2009-04-10 CA CA2719232A patent/CA2719232C/en active Active
- 2009-04-10 TW TW098112131A patent/TWI542222B/zh active
- 2009-04-10 BR BRPI0910634-0A patent/BRPI0910634B1/pt active IP Right Grant
- 2009-04-10 CN CN2009801126790A patent/CN101990758B/zh active Active
- 2009-04-10 JP JP2011504212A patent/JP5536034B2/ja active Active
-
2014
- 2014-02-24 JP JP2014033412A patent/JP2014140192A/ja active Pending
-
2018
- 2018-02-20 US US15/900,720 patent/US10440388B2/en active Active
-
2019
- 2019-10-02 US US16/591,540 patent/US11683519B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP5536034B2 (ja) | 2014-07-02 |
TWI542222B (zh) | 2016-07-11 |
EP2304961B1 (en) | 2016-03-09 |
CA2719232C (en) | 2016-05-24 |
TW201010441A (en) | 2010-03-01 |
US20090257502A1 (en) | 2009-10-15 |
EP2304961A1 (en) | 2011-04-06 |
BRPI0910634A2 (pt) | 2016-08-02 |
US20200107044A1 (en) | 2020-04-02 |
CN101990758B (zh) | 2013-02-20 |
JP2014140192A (ja) | 2014-07-31 |
JP2011517238A (ja) | 2011-05-26 |
US20180184113A1 (en) | 2018-06-28 |
CA2719232A1 (en) | 2009-10-15 |
WO2009126915A1 (en) | 2009-10-15 |
KR101202633B1 (ko) | 2012-11-19 |
CN101990758A (zh) | 2011-03-23 |
KR20100129339A (ko) | 2010-12-08 |
US11683519B2 (en) | 2023-06-20 |
WO2009126915A8 (en) | 2010-12-23 |
US10440388B2 (en) | 2019-10-08 |
US9967590B2 (en) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BRPI0910634B1 (pt) | método e dispositivo para interpolação de sub-pixel para compensação de movimento em codificação de vídeo | |
KR101242958B1 (ko) | 비디오 코딩에서의 서브-픽셀 해상도를 위한 보간 필터 서포트 | |
KR101202632B1 (ko) | 비디오 코딩에서의 보간을 위한 예측 기술 | |
JP5180366B2 (ja) | ビデオコーディングにおけるサブピクセル位置の補間フィルタリングに対する対称性 | |
ES2633476T3 (es) | Filtrado de tipo interpolación de posiciones de píxeles enteros en la codificación de vídeo | |
BR112013014415B1 (pt) | Método e dispositivo para decodificar dados de vídeo e método e dispositivo para codificar dados de vídeo | |
US9219921B2 (en) | Mixed tap filters | |
RU2477577C2 (ru) | Подобная интерполяции фильтрация положений целочисленных пикселей при видеокодировании |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B15K | Others concerning applications: alteration of classification |
Ipc: H04N 19/523 (2014.01), H04N 19/117 (2014.01), H04N |
|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 03/11/2020, OBSERVADAS AS CONDICOES LEGAIS. |