BR112018006408B1 - Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo - Google Patents

Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo Download PDF

Info

Publication number
BR112018006408B1
BR112018006408B1 BR112018006408-4A BR112018006408A BR112018006408B1 BR 112018006408 B1 BR112018006408 B1 BR 112018006408B1 BR 112018006408 A BR112018006408 A BR 112018006408A BR 112018006408 B1 BR112018006408 B1 BR 112018006408B1
Authority
BR
Brazil
Prior art keywords
video
prediction
values
unfiltered
filtered
Prior art date
Application number
BR112018006408-4A
Other languages
English (en)
Other versions
BR112018006408A2 (pt
Inventor
Amir Said
Xin Zhao
Jianle Chen
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112018006408A2 publication Critical patent/BR112018006408A2/pt
Publication of BR112018006408B1 publication Critical patent/BR112018006408B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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 an image region, e.g. an object
    • H04N19/176Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/182Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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 an image region, e.g. an object
    • H04N19/172Methods 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 an image region, e.g. an object the region being a picture, frame or field

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

intra-previsão de vídeo melhorada usando combinação de previsão dependente de posição para codificação de vídeo. as técnicas são descritas para intra-previsão de vídeo melhorada usando a combinação de previsão dependente de posição na codificação de vídeo. na codificação de vídeo de alta eficiência um conjunto de 35 preditores lineares é usado para fazer intra codificação e a previsão pode ser calculada a partir de um conjunto não filtrado ou filtrado de pixels de ´referência´ vizinhos, dependendo do modo do preditor e do tamanho do bloco selecionados. as técnicas desta revelação podem usar uma combinação ponderada de ambos os conjuntos não filtrado e filtrado de pixels de referência para obter uma melhor compressão através da previsão melhorada e, portanto, pequeno residual, permitir o cálculo paralelo eficaz de todos os conjuntos de valores de previsão e manter baixa complexidade através da aplicação da filtragem apenas a um conjunto de pixels de referência e não aos próprios valores previstos.

Description

[0001] Este pedido reivindica o benefício do Pedido de patente provisório US 62/234.645, depositado em 29 de setembro de 2015, estando a totalidade de seu conteúdo aqui incorporada, a título de referência.
CAMPO TÉCNICO
[0002] A revelação se refere à codificação de vídeo.
ANTECEDENTES
[0003] Capacidades de vídeo digitais podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de transmissão digital direta, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), laptops ou computadores de mesa, computadores tablet, leitores de e-books, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digitais, dispositivos de jogos de vídeo, videogames, telefones celulares de rádio ou satélite, os chamados “smartphones”, dispositivos de teleconferência por vídeo, dispositivos de streaming de vídeo e afins. Dispositivos de vídeo digital implementam técnicas de codificação de vídeo, como aquelas descritas em vários padrões incluindo os definidos pelo ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), e ITU-T H.265, Codificação de Vídeo de Alta Eficiência (HEVC) e extensões desses padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informação de vídeo digital mais eficientemente pela implementação de tais técnicas de codificação de vídeo.
[0004] Técnicas de codificação de vídeo incluem a predição espacial (inter-imagem) e/ou predição temporal (inter-imagem) para reduzir ou eliminar a redundância inerente nas sequências de vídeo. Para a codificação de vídeo baseada em blocos, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser referidos como blocos de árvore, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intra- codificada (I) de uma imagem são codificados utilizando a predição espacial relativamente às amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem usar a predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intra-codificado é codificado de acordo com um modo intra-codificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residuais, que podem então ser quantificados. Os coeficientes de transformada quantificados, dispostos inicialmente em um arranjo bidimensional, podem ser varridos de modo a produzir um vetor unidimensional de coeficientes de transformada, e a codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
SUMÁRIO
[0006] Em geral, esta revelação descreve técnicas relacionadas à predição intra de vídeo melhorada usando a combinação de predição dependente de posição na codificação de vídeo. As técnicas podem ser usadas no contexto de codecs de vídeo avançados, como extensões de HEVC ou a próxima geração de padrões de codificação de vídeo. Em HEVC, por exemplo, um conjunto de 35 preditores lineares é usado para fazer intra codificação e a predição pode ser calculada a partir de um conjunto não filtrado ou filtrado de pixels de “referência” vizinhos, dependendo do modo do preditor e do tamanho do bloco selecionados. As técnicas desta revelação podem usar uma combinação ponderada de ambos os conjuntos não filtrado e filtrado de pixels de referência para obter uma melhor compressão (através, por exemplo, da predição melhorada e, portanto, pequeno residual), permitir o cálculo paralelo eficaz de todos os conjuntos de valores de predição e manter baixa complexidade (através, por exemplo, da aplicação da filtragem apenas a um conjunto de pixels de referência e não aos próprios valores previstos).
[0007] Em um exemplo, esta revelação é direcionada a um método de decodificação de dados de vídeo, o método compreendendo decodificar blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; formar uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; formar uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; calcular um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos; e reconstruir o bloco atual com base no conjunto calculado de valores preditivos.
[0008] Em outro exemplo, esta revelação é direcionada a um método de codificação de dados de vídeo, o método compreendendo receber um bloco atual de uma imagem, uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados e uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados; decodificar blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; formar uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; formar uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; gerar um bloco preditivo para o bloco atual, em que gerar compreende calcular um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos; gerar um bloco residual baseado na diferença entre o bloco atual e o bloco preditivo; e codificar dados que representam o bloco residual em um fluxo de bits.
[0009] Em um outro exemplo, esta revelação é direcionada a um dispositivo para decodificar dados de vídeo, o dispositivo compreendendo uma memória e um ou mais processadores em comunicação com a memória. Os um ou mais processadores são configurados para decodificar blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; formar uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; formar uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; calcular um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos; e reconstruir o bloco atual com base no conjunto calculado de valores preditivos.
[0010] Em um outro exemplo, esta revelação é direcionada a um dispositivo para codificar dados de vídeo, o dispositivo compreendendo uma memória e um ou mais processadores em comunicação com a memória. Os um ou mais processadores são configurados para receber um bloco atual de uma imagem, uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados e uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados; decodificar blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; formar uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; formar uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; gerar um bloco preditivo para o bloco atual, em que gerar compreende calcular um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos; gerar um bloco residual baseado na diferença entre o bloco atual e o bloco preditivo; e codificar dados que representam o bloco residual em um fluxo de bits.
[0011] Em um outro exemplo, esta revelação é direcionada a um dispositivo para decodificação de dados de vídeo, o dispositivo compreendendo meios para decodificar blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; meios para formar uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; meios para formar uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; meios para calcular um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos; e meios para reconstruir o bloco atual com base no conjunto calculado de valores preditivos.
[0012] Em outro exemplo, esta revelação é direcionada a um dispositivo para codificação de dados de vídeo, o dispositivo compreendendo meios para receber um bloco atual de uma imagem, uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados e uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados; meios para decodificar blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; meios para formar uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; meios para formar uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; meios para gerar um bloco preditivo para o bloco atual, em que gerar compreende calcular um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos; meios para gerar um bloco residual baseado na diferença entre o bloco atual e o bloco preditivo; e meios para codificar dados que representam o bloco residual em um fluxo de bits.
[0013] Em um exemplo adicional, esta revelação é direcionada a um meio legível por computador não transitório que tem armazenadas nele instruções para processamento de dados de vídeo que, quando executadas, fazem com que os um ou mais processadores decodifiquem blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; formem uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; formem uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; calculem um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos; e reconstruam o bloco atual com base no conjunto calculado de valores preditivos.
[0014] Em um exemplo adicional, esta revelação é direcionada a um meio legível por computador não transitório tendo armazenadas nele instruções para processamento de dados de vídeo, que quando executadas, fazem com que um ou mais processadores recebam um bloco atual de uma imagem, uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados e uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados; decodifiquem blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; formem uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; formem uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; gerem um bloco preditivo para o bloco atual, em que gerar compreende calcular um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos; gerem um bloco residual baseado na diferença entre o bloco atual e o bloco preditivo; e codifiquem dados que representam o bloco residual em um fluxo de bits.
[0015] Os detalhes de um ou mais exemplos são apresentados nos desenhos de acompanhamento e na descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição e desenhos, e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0016] A FIG. 1 é um diagrama ilustrando um bloco de 4x4 pixels que devem ser previstos na codificação intra- quadro que pode utilizar técnicas descritas nesta revelação.
[0017] A FIG. 2 é um diagrama ilustrando configurações de filtro para os preditores direcionais com base no tamanho do bloco.
[0018] A FIG. 3 ilustra uma predição de um bloco de 4x4 usando uma referência não filtrada, de acordo com as técnicas da presente revelação.
[0019] A FIG. 4 ilustra uma predição de um bloco de 4x4 usando uma referência filtrada, de acordo com as técnicas da presente revelação.
[0020] A FIG. 5 é um diagrama de blocos que ilustra um sistema de codificação de decodificação de vídeo exemplar que pode usar as técnicas descritas nesta revelação.
[0021] A FIG. 6 é um diagrama de blocos que ilustra um codificador de vídeo exemplar que pode implementar as técnicas desta revelação.
[0022] A FIG. 7 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar que pode implementar as técnicas desta revelação.
[0023] A FIG. 8 é um fluxograma que mostra um exemplo de método de acordo com as técnicas desta revelação.
[0024] A FIG. 9 é um fluxograma que mostra um exemplo de método de acordo com as técnicas desta revelação.
DESCRIÇÃO DETALHADA
[0025] Em geral, esta revelação descreve técnicas relacionadas à predição intra de vídeo melhorada usando a combinação de predição dependente de posição na codificação de vídeo. As técnicas podem ser usadas no contexto de codecs de vídeo avançados, como extensões de HEVC ou a próxima geração de padrões de codificação de vídeo.
[0026] As técnicas desta revelação são geralmente descritas com relação ao ITU-T H.265, também chamado de Codificação de Vídeo de Alta Eficiência (HEVC), que é descrita em "SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services— Coding of moving video,” High Efficiency Video Coding, ITU-T H.265, Abril 2013. Entretanto, estas técnicas podem ser aplicadas a outros padrões de codificação de vídeo, incluindo extensões de HEVC e extensões de outros padrões. Exemplos de outros padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), incluindo suas extensões de Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo de Multi-vista (MVC).
[0027] O padrão H.265 foi recentemente finalizado pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU- T (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). A última especificação de esboço HEVC, aqui referida como HEVC WD, está disponível em http://phenix.int- evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC- N1003-v1.zip.
[0028] A extensão de multi-vista para HEVC, MV-HEVC, também foi desenvolvida pelo JCT-3V. Um exemplo de um Esboço de Trabalho (WD) do MV-HEVC, referido como MV-HEVC WD8, está disponível em phenix.it- sudparis.eu/jct2/doc_end_user/documents/8_Valencia/wgl1/JCT 3 V-H1002-v5.zip. Uma extensão escalável para o HEVC, denominada SHVC, também foi desenvolvida pelo JCT-VC. Um exemplo de um Esboço de Trabalho (WD) do SHVC, referido como SHVC WD6, está disponível em phenix.it- sudparis.eu/jct/doc_end_user/documents/17_Valencia/wgl l/JCTVC-Q1008-v2.zip.
[0029] No padrão de compressão de vídeo HEVC, a predição intra-quadro é aplicada aos blocos com NxN pixels, usando um grupo de 4N+1 pixels que são adjacentes ao bloco a ser previsto, ou seja, pixels de referência. Esses pixels de referência possuem valores que foram reconstruídos e são conhecidos no codificador e no decodificador quando a predição do bloco é calculada. Por exemplo, a FIG. 1 mostra um bloco de 4x4 pixels que devem ser previstos no método de codificação intra-quadro utilizado pela HEVC. Os pixels a serem previstos 90 são mostrados como quadrados brancos e os pixels de referência 92 como quadrados cinzas.
[0030] A predição intra é uma ferramenta de codificação que é empregada para reduzir ou remover redundâncias espaciais usando pixels vizinhos dentro de uma imagem. Para encontrar direções de predição exatas e remover redundâncias efetivamente, a HEVC pode usar até 35 modos de predição para cada PU. Pode haver dois conjuntos de valores usados para predição, dependendo do modo do preditor (planar, DC ou direcional) e do tamanho do bloco. Para cada modo, ou uma versão não filtrada ou filtrada dos pixels de referência pode ser usada para predição. HEVC, por exemplo, define uma tabela fixa para determinar se deve usar pixels de referência filtrados ou não filtrados na predição intra.
[0031] A FIG. 2 é um diagrama conceitual ilustrando uma representação gráfica definindo configurações de filtro para predição direcional com base no tamanho do bloco. Um círculo 1 é mostrado na FIG. 2 em que um modo de predição (por exemplo, modo de predição direcional) utiliza uma filtragem de amostra de referência para um tamanho de bloco específico (por exemplo, 8x8, 16x16 e 32x32). Um “x” cinza é mostrado na FIG. 2 onde um modo de predição usa amostras de referência não filtradas para um tamanho de bloco específico. Por exemplo, os modos de predição 2, 18 e 34 podem usar pixels de referência filtrados independentemente do tamanho do bloco, os modos 10 e 26 podem usar pixels de referência não filtrados, independentemente do tamanho do bloco, modos 3-8, 12-17, 19-24 e 28-33 podem usar pixels de referência não filtrados em blocos de tamanho 8x8, mas usa pixels de referência filtrados em blocos de tamanhos 16x16 e 32x32 e os modos 9, 11, 25 e 27 usam pixels de referência não filtrados em blocos de tamanhos 8x8 e 16x16 e pixels de referência filtrados em blocos de tamanho 32x32. Além disso, pode haver um tipo de filtro passa-baixa que pode ser usado com as três taps (1/4, 1/2, 1/4).
[0032] Os métodos atuais podem ser mais adequados para vídeos de baixa resolução usados no passado, onde a melhor compressão é obtida com blocos na maioria pequenos (por exemplo, 4x4 ou 8x8). No entanto, uma tendência mais recente é ter vídeo HD 1080*1920 ou vídeo UHD 2160x3840. Para essas resoluções, a predição usando tamanhos de bloco maiores pode ser mais eficiente e obter melhor compressão.
[0033] Uma filtragem de passa baixa mais forte da referência nesses blocos maiores pode ser usada para obter melhor compressão. No entanto, nesses casos, um único filtro passa-baixa que otimiza a predição para todos os blocos de um determinado tamanho de bloco e o filtro ideal varia de acordo com a textura em cada bloco.
[0034] Um dispositivo de vídeo que implementa o padrão HEVC atual usa a predição que é baseada na referência filtrada ou na referência não filtrada, que não suporta uma maneira de combinar informações desses dois casos, mesmo que esses dados possam estar prontamente disponíveis no codificador e decodificador.
[0035] Um dispositivo de codificação de vídeo, como um codificador de vídeo ou um decodificador de vídeo, pode usar as técnicas da presente revelação para realizar uma combinação de predição dependente de posição (PDPC), ou seja, usar uma ou mais equações parametrizadas definindo como combinar previsões baseadas em valores de referência filtrados e não filtrados e na posição de pixel prevista. A presente revelação descreve vários conjuntos de parâmetros, de modo que o codificador pode testar cada um (através, por exemplo, usando análise de distorção de taxa) e sinalizar ao decodificador os parâmetros ideais (por exemplo, os parâmetros resultando no melhor desempenho de distorção de taxa entre esses parâmetros que são testados).
[0036] A FIG. 3 ilustra uma predição de um bloco de 4x4 (p) usando uma referência não filtrada (r), de acordo com as técnicas da presente revelação. A FIG. 4 ilustra uma predição de um bloco de 4x4 (q) usando uma referência filtrada (s), de acordo com as técnicas da presente revelação. Enquanto ambas as FIGs. 3 e 4 ilustram um bloco de 4x4 pixels e 17(4x4+1) respectivos valores de referência, as técnicas da presente revelação podem ser aplicadas a qualquer tamanho de bloco e número de valores de referência.
[0037] Um codificador de vídeo que executa a Combinação de Predição Dependente da Posição pode usar a combinação entre as previsões filtrada (q) e não filtrada (p), de forma que o bloco previsto para um bloco atual a ser codificado pode ser calculado usando valores de pixel das matrizes de referência filtrada (s) e não filtrada (r).
[0038] Em um exemplo das técnicas de PDPC, dado quaisquer dois conjuntos de previsões de pixels pr [x, y] e qs [x, y], calculados usando apenas as referências não filtradas e filtradas r e s, respectivamente, o valor previsto combinado de um pixel, denotado por v [x, y], é definido por onde c[x, y] é o conjunto de parâmetros de combinação. O valor do peso c[x, y] pode estar entre 0 e 1. A soma dos pesos c[x, y] e (1-c[x, y]) pode ser igual a um.
[0039] Em certos exemplos, pode não ser prático ter um conjunto de parâmetros tão grandes quanto o número de pixels no bloco. Nesses exemplos, c[x, y] pode ser definido por um conjunto muito menor de parâmetros, mais uma equação para calcular todos os valores de combinação desses parâmetros. Nesse exemplo, a seguinte fórmula pode ser usada: onde , g, e dv, dh ϵ {1,2}, são parâmetros de predição, N é o tamanho de bloco, e são valores de predição calculados usando de acordo com o padrão HEVC, para o modo específico, usando respectivamente as referências não filtradas e filtradas, e é um fator de normalização (ou seja, para formar os pesos atribuídos a e adicionar a 1), definido pelos parâmetros de predição.
[0040] A Fórmula 2 pode ser generalizada para qualquer padrão de codificação de vídeo na fórmula 2A: onde , g, e dv, dh ϵ {1,2}, são parâmetros de predição, N é o tamanho de bloco, e são valores de predição calculados usando de acordo com um padrão de codificação de vídeo (ou esquema de codificação de vídeo ou algoritmo), para o modo específico, usando respectivamente as referências não filtradas e filtradas, e é um fator de normalização (ou seja, para formar os pesos atribuídos a e adicionar a 1), definido pelos parâmetros de predição.
[0041] Estes parâmetros de predição podem incluir pesos para fornecer uma combinação linear ideal dos termos previstos de acordo com o tipo de modo de predição utilizado (por exemplo, DC, planar e 33 modos direcionais de HEVC). Por exemplo, o HEVC contém 35 modos de predição. Uma tabela de consulta pode ser construída com valores para cada um dos parâmetros de predição g, dv, e dh para cada um dos modos de predição (ou seja, 35 valores de g, dv, e dh para cada modo de predição). Esses valores podem ser codificados em um fluxo de bits com o vídeo ou podem ser valores constantes conhecidos pelo codificador e decodificador antes do tempo e podem não precisar ser transmitidos em um arquivo ou bitstream. Os valores para , g, dv e dh podem ser determinados por um algoritmo de treinamento de otimização pela descoberta de valores para os parâmetros de predição que proporcionam melhor compressão para um conjunto de vídeos de treinamento. Em outro exemplo, há uma pluralidade de conjuntos de parâmetros de predição predefinidos para cada modo de predição (por exemplo, uma tabela de consulta) e o conjunto de parâmetros de predição selecionado (mas não os próprios parâmetros) é transmitido para um decodificador em um arquivo codificado ou fluxo de bits. Em outro exemplo os valores para g, dv e dh podem ser gerados em tempo real por um codificador de vídeo e transmitidos para um decodificador em um arquivo codificado ou fluxo de bits.
[0042] Em outro exemplo, em vez de usar a predição HEVC, um dispositivo de codificação de vídeo que executa essas técnicas pode usar uma versão modificada de HEVC, como uma que usa 65 previsões direcionais em vez de 33 previsões direcionais. Na verdade, qualquer tipo de predição intra- quadro pode ser usado.
[0043] Em outro exemplo, a fórmula pode ser escolhida para facilitar cálculos. Por exemplo, podemos usar o seguinte tipo de preditor onde e
[0044] Esta abordagem pode explorar a linearidade da predição de HEVC (ou outra). Definindo h como a resposta ao impulso de um filtro k de um conjunto predefinido, se tivermos onde “*” representa a convolução, então ou seja, a predição linearmente combinada pode ser calculada a partir da referência combinada linearmente.
[0045] As Fórmulas 4, 6 e 8 podem ser generalizadas para qualquer padrão de codificação de vídeo nas fórmulas 4A, 6A e 8A: onde e Esta abordagem pode explorar a linearidade da predição do padrão de codificação. Definindo h como a resposta ao impulso de um filtro k de um conjunto predefinido, se tivermos onde “*” representa a convolução, então ou seja, a predição linearmente combinada pode ser calculada a partir da referência combinada linearmente.
[0046] Em um exemplo, as funções de predição podem usar o vetor de referência (por exemplo, r e s) apenas como entrada. Neste exemplo, o comportamento do vetor de referência não muda se a referência foi filtrada ou não filtrada. Se r e s são iguais (por exemplo, alguma referência r não filtrada ocorre por ser a mesma que outra referência filtrada s) então as funções preditivas, por exemplo, pr[x, y] (também escrita como p(x,y,r)) é igual a ps[x, y] (também escrita como p(x,y,s), aplicadas às referências filtradas e não filtradas são iguais. Adicionalmente, as previsões de pixel p e q podem ser equivalentes (por exemplo, produzir a mesma saída dada a mesma entrada). Nesse exemplo, as fórmulas (l)-(8) podem ser reescritas com predição de pixels p[x, y] substituindo a predição de pixels q[x, y].
[0047] Em outro exemplo, a predição (por exemplo, os conjuntos de funções) pode mudar dependendo da informação de que uma referência foi filtrada. Neste exemplo, diferentes conjuntos de funções podem ser denotados (por exemplo, pr[x, y] e qs[x, y]). Neste caso, mesmo que r e s sejam iguais, pr[x, y] e qs[x, y] podem não ser iguais. Em outras palavras, a mesma entrada pode criar saída diferente, dependendo de se a entrada foi filtrada ou não. Nesse exemplo, p[x, y] pode não ser substituído por q[x, y].
[0048] Uma vantagem das equações de predição mostradas é que, com a formulação parametrizada, podem ser determinados conjuntos de parâmetros ideais (isto é, aqueles que otimizam a precisão da predição), para diferentes tipos de texturas de vídeo, usando técnicas como treinamento. Essa abordagem, por sua vez, pode ser estendida em alguns exemplos calculando vários conjuntos de parâmetros de preditor, para alguns tipos típicos de texturas, e tendo um esquema de compressão onde o codificador testa os preditores de cada conjunto e codifica como informação aquela que rende a melhor compressão.
[0049] A FIG. 5 é um diagrama de blocos que ilustra um sistema de codificação de decodificação 10 de vídeo exemplar que pode usar as técnicas descritas nesta revelação, incluindo PDPC. Conforme mostrado na FIG. 5, o sistema de decodificação 10 inclui um dispositivo fonte 12 que fornece dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, o dispositivo fonte 12 fornece os dados de vídeo para o dispositivo de destino 14 através de uma mídia legível por computador 16. O dispositivo fonte 12 e o dispositivo de destino 14 podem compreender qualquer uma de uma vasta gama de dispositivos, incluindo computadores de mesa, computadores portáteis (ou seja, laptops), computadores tablet, decodificadores, telefones como os chamados “smartphones”, chamadas almofadas “inteligentes”, televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogames, dispositivos de streaming de vídeo ou similares. Em alguns casos, o dispositivo fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fios.
[0050] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados através de uma mídia legível por computador 16. A mídia legível por computador 16 pode compreender qualquer tipo de mídia ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo fonte 12 para o dispositivo de destino 14. Em um exemplo, a mídia legível por computador 16 pode compreender um meio de comunicação para permitir que o dispositivo fonte 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fios, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fios ou com fios, como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área ampla ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que pode ser útil para facilitar a comunicação do dispositivo fonte 12 para o dispositivo de destino 14.
[0051] Em alguns exemplos, os dados codificados podem ser emitidos a partir da interface de saída 22 para um dispositivo de armazenamento. De modo semelhante, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer uma de uma variedade de mídias de armazenamento de dados distribuídas ou acessadas localmente, como um disco rígido, discos Blu-ray, DVDs, CD- ROMs, memória flash, memória volátil ou não volátil ou qualquer outra mídia de armazenamento digital adequada para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode conter o vídeo codificado gerado pelo dispositivo fonte 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento através de streaming ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Exemplos de servidores de arquivo incluem um servidor da web (por exemplo, para um site), um servidor FTP, dispositivos de armazenamento conectado à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão à Internet. Isto pode incluir um canal sem fios (por exemplo, uma conexão Wi-Fi), uma conexão com fios (por exemplo, DSL, modem por cabo, etc.) ou uma combinação de ambos que é adequada para acessar os dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão em fluxo contínuo, uma transmissão por download ou uma combinação de ambos.
[0052] As técnicas desta revelação não estão necessariamente limitadas a aplicações ou configurações sem fios. As técnicas podem ser aplicadas à codificação de vídeo no suporte de qualquer uma de uma variedade de aplicativos multimídia, como broadcasts de televisão através do ar, broadcasts de televisão por cabo, transmissões de televisão por satélite, transmissões de vídeo em streaming da Internet, como streaming adaptativo dinâmico sobre HTTP (DASH), vídeo digital que é codificado sobre uma mídia de armazenamento de dados, decodificação de vídeo digital armazenado em uma mídia de armazenamento de dados ou outros aplicativos. Em alguns exemplos, o sistema de decodificação 10 pode ser configurado para suportar uma transmissão de vídeo unidirecional ou bidirecional para suportar aplicativos como streaming de vídeo, reprodução de vídeo, broadcast de vídeo e/ou telefonia por vídeo.
[0053] No exemplo da FIG. 5, o dispositivo fonte 12 inclui fonte de vídeo 18, codificador de vídeo 20 e interface de saída 22. O dispositivo de destino 14 inclui interface de entrada 28, decodificador de vídeo 30 e dispositivo de visualização 32. De acordo com esta revelação, o codificador de vídeo 20 do dispositivo fonte 12 pode ser configurado para aplicar as técnicas descritas nesta revelação, técnicas relacionadas com a melhoria da predição intra de vídeo utilizando combinação de predição dependente da posição. De acordo com esta revelação, o codificador de vídeo 30 do dispositivo de destino 14 pode ser configurado para aplicar as técnicas descritas nesta revelação, técnicas relacionadas com a melhoria da predição intra de vídeo utilizando combinação de predição dependente da posição. Em outros exemplos, um dispositivo fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo fonte 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, como uma câmara externa. Do mesmo modo, o dispositivo de destino 14 pode interagir com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0054] Como observado acima, o dispositivo fonte 12 inclui a interface de saída 22 e o dispositivo de destino 14 inclui a interface de entrada 28. Em alguns exemplos, a interface de saída 22 representa um transmissor e a interface de entrada 28 representa um receptor. Em outros exemplos, a interface de saída 22 e a interface de entrada 28 representam exemplos de transceptores (isto é, interfaces capazes de transmitir e receber sinais de dados remotamente). Os transceptores podem ser configurados para enviar e receber dados de vídeo em sinais sem fio. Por exemplo, a interface de saída 22, quando implementada como um transceptor, pode enviar um sinal de dados (por exemplo, meio legível por computador 16) incluindo dados de vídeo codificados, enquanto a interface de entrada 28, quando implementada como um transceptor, pode receber um sinal de dados, meio legível por computador 16) incluindo dados de vídeo codificados. Como discutido acima, o codificador de vídeo 20 pode fornecer os dados de vídeo codificados para a interface de saída 22, enquanto a interface de entrada 28 pode fornecer dados de vídeo codificados para o decodificador de vídeo 30.
[0055] O sistema de decodificação 10 ilustrado da FIG. 5 é meramente um exemplo. As técnicas descritas nesta revelação podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora, geralmente, as técnicas desta revelação sejam realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador/decodificador de vídeo, tipicamente designado por “CODEC”. Além disso, as técnicas desta revelação também podem ser realizadas por um pré-processador de vídeo. O dispositivo fonte 12 e o dispositivo de destino 14 são meramente exemplos desses dispositivos de codificação em que o dispositivo fonte 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar de forma substancialmente simétrica, de modo que cada um dos dispositivos 12, 14 inclua componentes de codificação e decodificação de vídeo. Por conseguinte, o sistema de decodificação 10 pode suportar a transmissão de vídeo de uma via ou de duas vias entre dispositivos de vídeo 12, 14, por exemplo, para transmissão de vídeo, reprodução de vídeo, difusão de vídeo ou telefonia por vídeo.
[0056] A fonte de vídeo 18 do dispositivo fonte 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo previamente capturado e/ou uma interface de feed de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como outra alternativa, a fonte de vídeo 18 pode gerar dados baseados em gráficos por computador como o vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 é uma câmara de vídeo, o dispositivo fonte 12 e o dispositivo de destino 14 podem formar os chamados telefones de câmera ou telefones de vídeo. Como mencionado acima, no entanto, as técnicas descritas nesta revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas a aplicações sem fios e/ou com fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificada pode então ser emitida pela interface de saída 22 sobre uma mídia legível por computador 16.
[0057] A mídia legível por computador 16 pode incluir mídia transitória, como uma difusão sem fio ou transmissão de rede com fio, ou mídia de armazenamento (ou seja, mídia de armazenamento não transitória), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, Disco Blu-ray ou outra mídia legível por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo fonte 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, através de transmissão de rede. Da mesma forma, um dispositivo de computação de uma instalação de produção de mídia, como uma instalação de gravação de disco, pode receber dados de vídeo codificados do dispositivo fonte 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, a mídia legível por computador 16 pode ser entendida como incluindo uma ou mais mídias legíveis por computador de várias formas, em vários exemplos.
[0058] A interface de entrada 28 do dispositivo de destino 14 recebe informações da mídia legível por computador 16. A informação da mídia legível por computador 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que também é usado pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, GOPs. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer uma de uma variedade de dispositivos de exibição, como um tubo de raio catódico (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0059] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, como os padrões descritos acima e, em alguns exemplos, de acordo com o padrão de Codificação de Vídeo de Alta Eficiência (HEVC), também conhecido como ITU- T H.265, ou extensões do padrão HEVC, ou de acordo com a próxima geração de padrões de codificação de vídeo. As técnicas desta revelação, entretanto, não estão limitadas a qualquer padrão de codificação específico. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263. Embora não mostrada na FIG. 5, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser integrados com um codificador e decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas ou outro hardware e software para manusear a codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com um protocolo como o protocolo multiplexador ITU H.223 ou com outros protocolos, como o protocolo de datagrama de usuário (UDP).
[0060] O codificador de vídeo 20 e decodificador de vídeo 30, cada um pode ser implementado como qualquer um de uma variedade de circuitos de codificador adequados, conforme o caso, como um ou mais microprocessadores, processadores sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGA), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia legível por computador não transitória adequada e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta revelação. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador/decodificador combinados (CODEC) em um respectivo dispositivo.
[0061] Em geral, um quadro ou imagem de vídeo pode ser dividido em uma sequência de treeblocks, que também são conhecidos como as maiores unidades de codificação (LCUs), que podem incluir ambas a amostras luma e croma. Os dados de sintaxe dentro de um bitstream podem definir um tamanho para a LCU, que é uma unidade de codificação maior em termos de número de pixels. Uma fatia inclui uma série de treeblocks consecutivos na ordem de codificação. Um quadro ou imagem de vídeo pode ser particionado em uma ou mais fatias. Cada treeblock pode ser dividido em unidades de codificação (CUs) de acordo com uma estrutura de dados em quadtree. Em geral, uma estrutura de dados quadtree inclui um nó por CU, com um nó raiz correspondente ao treeblock. Se uma CU estiver dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós folha, cada um dos quais corresponde a uma das sub-CUs.
[0062] Cada nó da estrutura de dados quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir um sinalizador de divisão, indicando se o CU correspondente ao nó é dividido em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva e podem depender se a CU está dividida em sub-CUs. Se uma CU não for dividida adicionalmente, ela é referida como uma CU-folha. Nesta divulgação, quatro sub-CUs de uma CU-folha também são referidas como CUs-folhas, mesmo que não haja divisão explícita do CU-folha original. Por exemplo, se um CU no tamanho 16x16 não for dividido adicionalmente, as quatro sub-CUs 8x8 também são referidas como CUs-folhas, embora a CU 16x16 nunca tenha sido dividida.
[0063] Uma CU tem um propósito semelhante a um macrobloco do padrão H.264, exceto que uma CU não possui uma distinção de tamanho. Por exemplo, um treeblock pode ser dividida em quatro nós filho (também chamados de sub-CUs), e cada nó filho pode, por sua vez, ser um nó pai e ser dividido em outros quatro nós filhos. Um nó filho final não dividido, referido como um nó folha do quadtree, compreende um nó de codificação, também chamado de uma CU-folha. Os dados de sintaxe associados a um bitstream codificado podem definir um número máximo de vezes que um treeblock pode ser dividido, chamado de profundidade máxima de CU, e também podem definir um tamanho mínimo dos nós de codificação. Consequentemente, um bitstream também pode definir uma unidade de codificação menor (SCU). A revelação usa o termo “bloco” para se referir a uma CU, unidade de predição (PU), ou unidade de transformada (TU), no contexto de HEVC, ou estruturas de dados similares no contexto de outros padrões (ex., macroblocos e sub-blocos dos mesmos em H.264/AVC).
[0064] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e é geralmente de forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do treeblock com um tamanho máximo de, por exemplo, 64x64 pixels ou mais. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados a uma CU podem descrever, por exemplo, a partição da CU em uma ou mais PUs. Os modos de particionamento podem diferir entre se a CU é ignorada ou o modo direto codificado, o modo predição intra codificado ou o modo inter-predição codificado. As PUs podem ser divididas para não terem o formato quadrado. Os dados de sintaxe associados a uma CU também podem descrever, por exemplo, a partição da CU em uma ou mais TUs de acordo com um quadtree. Uma TU pode ter o formato quadrado ou não quadrado (ex., retangular).
[0065] O padrão HEVC permite transformações de acordo com TUs, que podem ser diferentes para diferentes CUs. As TUs são tipicamente dimensionadas com base no tamanho das PUs dentro de uma determinada CU definida para uma LCU particionada, embora esse nem sempre seja o caso. As TUs são normalmente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, as amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores usando uma estrutura quadtree conhecida como “quadtree residual” (RQT). Os nós folha do RQT podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixels associados às TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantificados.
[0066] Um CU-folha pode incluir uma ou mais PUs. Em geral, uma PU representa uma área espacial correspondente a toda ou a uma porção da CU correspondente, e pode incluir dados para recuperar e/ou gerar uma amostra de referência para a PU. Além disso, uma PU inclui dados relacionados à predição. Por exemplo, quando a PU é codificada intra-modo, os dados para a PU podem ser incluídos em um quadtree residual (RQT), que podem incluir dados que descrevem um modo de predição intra para uma TU correspondente à PU. O RQT pode também ser referido como uma árvore de transformada. Em alguns exemplos, o modo de predição intra pode ser sinalizado na sintaxe da CU-folha, em vez do RQT. Como outro exemplo, quando a PU é codificada inter-modo, a PU pode incluir dados que definem informações de movimento, como um ou mais vetores de movimento, para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, uma precisão de um quarto de pixel ou predição de um oitavo pixel), uma imagem de referência para a qual o vetor de movimento aponta, e/ou uma lista de imagens de referência (por exemplo, Lista 0, Lista 1 ou Lista C) para o vetor de movimento.
[0067] Uma dada CU-folha tendo uma ou mais PUs também pode incluir uma ou mais TUs. As unidades de transformada podem ser especificadas usando um RQT (também conhecido como uma estrutura quadtree de TU), conforme discutido acima. Por exemplo, um indicador de divisão pode indicar se uma CU- folha é dividida em quatro unidades de transformada. Então, cada unidade de transformada pode ser dividida adicionalmente em sub-TUs adicionais. Quando uma TU não for dividida adicionalmente, ela pode ser referida como uma TU- folha. Geralmente, para a intra-codificação, todas as TUs- folha pertencentes a uma CU-folha compartilham o mesmo modo de predição intra. Ou seja, o mesmo modo de predição intra é geralmente aplicado para calcular os valores previstos para todas as TUs de uma CU-folha. Para a intra-codificação, um codificador de vídeo pode calcular um valor residual para cada TU-folha usando o modo de predição intra, como uma diferença entre a porção da CU correspondente à TU e o bloco original. Uma TU não é necessariamente limitada ao tamanho de uma PU. Assim, as TUs podem ser maiores ou menores que uma PU. Para a intra-codificação, uma PU pode ser colocada com uma TU-folha correspondente para a mesma CU. Em alguns exemplos, o tamanho máximo de uma TU-folha pode corresponder ao tamanho da CU-folha correspondente.
[0068] Além disso, as TUs das CUs-folha também podem estar associadas às respectivas estruturas de dados de quadtree, referidas como quadtrees residuais (RQTs) ou árvores de transformada como observado acima. Ou seja, uma CU-folha pode incluir um quadtree indicando como a CU-folha é dividida em TUs. O nó raiz de um quadtree de TU geralmente corresponde a uma CU-folha, enquanto o nó raiz de um quadtree de CU geralmente corresponde a um treeblock (ou LCU). As TUs do RQT que não estão divididas são chamadas de TU-folha. Em geral, esta revelação usa os termos CU e TU para se referir à CU-folha e TU-folha, respectivamente, a menos que seja indicado de outra forma.
[0069] Uma sequência de vídeo normalmente inclui uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em outro lugar, que descreve uma série de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. O codificador de vídeo 20 normalmente opera em blocos de vídeo dentro de fatias de vídeo individuais para codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis e podem variar de tamanho de acordo com um padrão de codificação especificado.
[0070] Como um exemplo, a predição pode ser feita para as PUs de vários tamanhos. Supondo que o tamanho de uma CU específica é 2Nx2N, a predição intra pode ser realizada em tamanhos de PU de 2Nx2N ou NxN e a inter-predição pode ser feita em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N ou NxN. A partição assimétrica para a inter-predição também pode ser realizada para os tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Na partição assimétrica, uma direção de uma CU não é particionada, enquanto a outra direção é dividida em 25% e 75%. A porção da CU correspondente à partição de 25% é indicada por um “n” seguida de uma indicação de “para cima”, “para baixo”, “esquerda” ou “direita”. Assim, por exemplo, “2NxnU” refere-se a uma CU de 2Nx2N que é particionada horizontalmente com uma PU de 2Nx0.5N em cima e uma PU de 2Nxl na parte inferior.
[0071] De acordo com as técnicas desta revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para intra prever um bloco de dados de vídeo usando uma combinação linear de um conjunto de valores de referência filtrados e um conjunto de valores de referência não filtrados, onde os valores de referência correspondem aos pixels vizinhos previamente decodificados. Isto é, o codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar um ou mais filtros aos pixels vizinhos para formar o conjunto de valores de referência filtrados e utilizar os próprios pixels vizinhos como valores de referência não filtrados. Além disso, a combinação linear pode incluir a aplicação dos respectivos conjuntos de pesos e/ou outros parâmetros de predição aos valores de referência filtrados e não filtrados. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem calcular um bloco previsto utilizando qualquer uma das fórmulas (1), (2) e (4) como discutido acima.
[0072] Mais particularmente, como discutido em maior detalhe abaixo, o codificador de vídeo 20 geralmente prevê, então, codifica dados de vídeo usando essas técnicas, e também pode determinar e, em seguida, sinalizar os parâmetros de predição a serem utilizados durante a intra predição. O decodificador de vídeo 30, da mesma forma, recupera os parâmetros de predição do fluxo de bits, quando esses parâmetros de predição são codificados no fluxo de bits e, em seguida, aplica essas técnicas para prever, decodificar e reconstruir dados de vídeo.
[0073] Nesta descrição, “NxN” e “N por N” podem ser utilizadas de forma intercambiável para se referir às dimensões de pixels de um bloco de vídeo em termos de dimensões verticais e horizontais, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 tem 16 pixels na direção vertical (y = 16) e 16 pixels na direção horizontal (x = 16). Da mesma forma, um bloco de NxN geralmente tem N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro não negativo. Os pixels em um bloco podem ser dispostos em fileiras e colunas. Além disso, os blocos não precisam necessariamente ter o mesmo número de pixels na direção horizontal que na direção vertical. Por exemplo, os blocos podem compreender NxM pixels, onde M não é necessariamente igual a N.
[0074] Após a codificação intra-preditiva ou inter- preditiva usando as PUs de uma CU, o codificador de vídeo 20 pode calcular dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe que descrevem um método ou modo de geração de dados de pixels preditivos no domínio espacial (também referido como o domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformada após a aplicação de uma transformação, por exemplo, uma transformada cosseno discreta (DCT), uma transformada inteira, uma transformada em ondeleta ou uma transformada conceitualmente semelhante aos dados de vídeo residuais. Os dados residuais podem corresponder às diferenças de pixels entre pixels da imagem não codificada e valores de predição correspondentes às PUs. O codificador de vídeo 20 pode formar as TUs para incluir coeficientes de transformada quantificados representativos dos dados residuais para a CU. Ou seja, o codificador de vídeo 20 pode calcular os dados residuais (na forma de um bloco residual), transformar o bloco residual para produzir um bloco de coeficientes de transformada e, em seguida, quantizar os coeficientes de transformada para formar coeficientes de transformada quantificados. O codificador de vídeo 20 pode formar uma TU incluindo os coeficientes de transformada quantificados, bem como outras informações de sintaxe (por exemplo, informações de divisão para a TU).
[0075] Conforme observado, após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode realizar a quantização dos coeficientes de transformada. A quantização refere-se geralmente a um processo no qual os coeficientes de transformada são quantificados para, possivelmente, reduzir a quantidade de dados utilizados para representar os coeficientes, proporcionando uma compressão adicional. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. Por exemplo, um valor de n-bit pode ser arredondado para baixo para um valor de m-bit durante a quantização, onde n é maior que m.
[0076] Após a quantização, o codificador de vídeo pode verificar os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo os coeficientes de transformada quantificados. A varredura pode ser projetada para colocar coeficientes de energia (e, portanto, menor frequência) na frente da matriz e colocar coeficientes de energia mais baixos (e, portanto, de maior frequência) na parte de trás da matriz. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para explorar os coeficientes de transformada quantificados para produzir um vetor em série que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode executar uma varredura adaptativa. Depois de escanear os coeficientes de transformada quantificados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação de comprimento variável adaptável ao contexto (CAVLC), codificação aritmética binária adaptável ao contexto (CABAC), codificação aritmética binária adaptável ao contexto baseada em sintaxe (SBAC), codificação de Entropia de Partição de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação por entropia. O codificador de vídeo 20 também pode codificar por entropia elementos de sintaxe associados aos dados de vídeo codificados para utilização pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0077] Para executar o CABAC, o codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode se relacionar, por exemplo, aos valores vizinhos do símbolo não-zero ou não. Para executar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. As palavras-código no VLC podem ser construídas de modo que códigos relativamente mais curtos correspondem a símbolos mais prováveis, enquanto códigos mais longos correspondem a símbolos menos prováveis. Desta forma, o uso do VLC pode atingir uma economia de bits, por exemplo, usando palavras-código de igual comprimento para cada símbolo a ser transmitido. A determinação da probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0078] Em geral, o decodificador de vídeo 30 executa um processo substancialmente semelhante, embora recíproco, ao que é executado pelo codificador de vídeo 20 para decodificar dados codificados. Por exemplo, o decodificador de vídeo 30 quantifica e transforma inversamente os coeficientes de uma TU recebida para reproduzir um bloco residual. O decodificador de vídeo 30 usa um modo de predição sinalizado (intra ou inter-predição) para formar um bloco previsto. Em seguida, o decodificador de vídeo 30 combina o bloco previsto e o bloco residual (em uma base de pixel por pixel) para reproduzir o bloco original. O processamento adicional pode ser realizado, como realizar um processo de desbloqueio para reduzir os artefatos visuais ao longo dos limites do bloco. Além disso, o decodificador de vídeo 30 pode decodificar elementos de sintaxe usando CABAC de uma maneira substancialmente semelhante, embora recíproco, ao processo de codificação CABAC do codificador de vídeo 20.
[0079] O codificador de vídeo 20 pode ainda enviar dados de sintaxe, como dados de sintaxe baseados em bloco, dados de sintaxe baseados em imagens e dados de sintaxe baseados em GOP, para o decodificador de vídeo 30, por exemplo, em um cabeçalho de quadro, um cabeçalho de bloco, um cabeçalho de fatia, ou um cabeçalho GOP. Os dados de sintaxe de GOP podem descrever vários quadros no respectivo GOP, e os dados de sintaxe do quadro podem indicar um modo de codificação/predição usado para codificar o quadro correspondente.
[0080] O codificador de vídeo 20 e decodificador de vídeo 30, cada um pode ser implementado como qualquer um de uma variedade de circuitos de codificador ou decodificador adequados, conforme aplicável, como um ou mais microprocessadores, processadores sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGA), circuito de lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador/decodificador de vídeo combinados (codec). Um dispositivo incluindo codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação sem fio, como um telefone celular.
[0081] A FIG. 6 é um diagrama de blocos ilustrando um exemplo de codificador de vídeo 20 que pode implementar as técnicas descritas nesta revelação, técnicas relacionadas com a melhoria da predição intra de vídeo utilizando combinação de predição dependente da posição. De acordo com esta revelação, o codificador de vídeo 20 pode ser configurado para aplicar as técnicas descritas nesta revelação, técnicas relacionadas com a melhoria da predição intra de vídeo utilizando combinação de predição dependente da posição. O codificador de vídeo 20 pode executar intra e inter-codificação de blocos de vídeo dentro de fatias de vídeo. A intra-codificação baseia-se na predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de um quadro ou imagem de vídeo. A inter-codificação baseia-se na predição temporal para reduzir ou remover a redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. O intra-modo (modo I) pode se referir a qualquer um dos vários modos de codificação com base espacial. Inter-modos, como predição unidirecional (modo P) ou bi-predição (modo B), podem se referir a qualquer um dos vários modos de codificação baseados no tempo.
[0082] Conforme mostrado na FIG. 6, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da FIG. 2, o codificador de vídeo 20 inclui unidade de seleção de modo 40, memória de imagem de referência 64 (que também pode ser referida como um buffer de imagem decodificada (DPB)), somador 50, unidade de processamento de transformada 52, unidade de quantização 54 e unidade de codificação de entropia 56. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, a unidade de estimativa de movimento 42, a unidade de predição intra 46 e unidade de partição 48. Para a reconstrução de blocos de vídeo, o codificador de vídeo 20 também inclui a unidade de quantização inversa 58, a unidade de transformada inversa 60 e o somador 62. O filtro passa baixa 66 pode receber a informação de imagem da memória da imagem de referência 64 e pode pré-filtrar as amostras de referência para uso pela unidade de seleção de modo 40 (e unidade de predição intra 46). Um filtro de desbloqueio (não mostrado na FIG. 6) também pode ser incluído para filtrar os contornos do bloco para remover artefatos de bloqueio do vídeo reconstruído. Se desejado, o filtro de desbloqueio tipicamente filtra a saída do somador 62. Filtros adicionais (em circuito ou pós circuito) também podem ser usados além do filtro de desbloqueio e filtro passa baixa 66.
[0083] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro de vídeo ou uma fatia a ser codificada. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 executam a codificação inter-preditiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer predição temporal. A unidade de predição intra 46 pode alternativamente executar a codificação intra-preditiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer predição espacial. O codificador de vídeo 20 pode executar várias passagens de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0084] O filtro passa baixo 66 pode ser aplicado a todos os blocos ou, em alguns exemplos, aos blocos acima de um determinado tamanho (por exemplo, blocos maiores que 4x4 em HEVC). Em alguns exemplos, o filtro passa baixa 66 pode ser aplicado apenas aos pixels de referência. Um filtro passa baixa com 3-tap pode ser aplicado aos blocos de dados de vídeo. No entanto, uma pessoa versada na técnica reconheceria que qualquer número de tipos de filtros passa baixa pode ser utilizado com base nas técnicas descritas.
[0085] Nos exemplos da presente revelação, um filtro forte pode ser aplicado aos valores de referência de alguns ou todos os blocos e combinado com os pixels de referência filtrados em filtro passa baixa e/ou os pixels de referência filtrados no filtro passa baixa para uso em uma equação de predição. Detalhes adicionais relativos ao uso desses filtros, e predição intra resultante realizada pela unidade predição intra 46, são discutidos abaixo.
[0086] Além disso, a unidade de partição 48 pode particionar blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de particionamento anteriores em passagens de codificação anteriores. Por exemplo, a unidade de partição 48 pode inicialmente particionar um quadro ou fatia em LCUs e particionar cada uma das LCUs em sub-CUs com base na análise de distorção de taxa (por exemplo, otimização de distorção de taxa). A unidade de seleção de modo 40 pode ainda produzir uma estrutura de dados de quadtree indicativa de particionamento de uma LCU em sub-CUs. As CUs do nó folha do quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0087] A unidade de seleção de modo 40 pode selecionar um dos modos de predição, intra ou inter, por exemplo, com base em resultados de erro e fornecer o bloco previsto resultante para o somador 50 para gerar dados de bloco residual e para o somador 62 para reconstruir o bloco codificado para utilização como um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores intra-modo, informações de partição, e outras dessas informações de sintaxe, para a unidade de codificação por entropia 56.
[0088] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de uma imagem ou quadro de vídeo atual em relação a um bloco de predição dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco preditivo é um bloco que é encontrado para coincidir com o bloco a ser codificado em termos de diferença de pixel, que pode ser determinada pela soma da diferença absoluta (SAD), a soma da diferença quadrada (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel sub-inteiros de imagens de referência armazenadas na memória da imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de um quarto de posições de pixel, um oitavo de posições de pixel ou outras posições de pixel fracionadas da imagem de referência. Por conseguinte, a unidade de estimativa de movimento 42 pode realizar uma pesquisa de movimento em relação às posições de pixel completas e posições de pixel fracionadas e emitir um vetor de movimento com precisão de pixel fracionada.
[0089] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou de uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e para a unidade de compensação de movimento 44.
[0090] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver a obtenção ou geração do bloco preditivo com base no vetor de movimento determinado pela unidade de estimativa de movimento 42. Novamente, a unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 pode ser funcionalidade integradas, em alguns exemplos. Ao receber o vetor de movimento para o PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma das listas de imagens de referência. O somador 50 forma um bloco de vídeo residual subtraindo os valores de pixel do bloco de predição dos valores de pixel do bloco de vídeo atual que está sendo codificado, formando valores de diferença de pixel, como discutido abaixo. Em geral, a unidade de estimativa de movimento 42 realiza a estimativa de movimento em relação aos componentes luma, e a unidade de compensação de movimento 44 usa os vetores de movimento calculados com base nos componentes luma para ambos componentes croma e componentes luma. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para utilização pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0091] A unidade de predição intra 46 pode intra-prever um bloco atual, como uma alternativa à inter-predição realizada pela unidade de estimativa de movimento 42 e pela unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de predição intra 46 pode determinar um modo predição intra para utilizar para codificar um bloco atual. Em alguns exemplos, a unidade de predição intra 46 pode codificar um bloco atual utilizando vários modos de predição intra, por exemplo, durante passagens de codificação separadas, e a unidade de predição intra 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de predição intra apropriado para usar a partir dos modos testados.
[0092] A unidade de predição intra 46 pode realizar predição de um conjunto não filtrado ou filtrado de pixels de “referência” vizinhos, dependendo do modo preditor selecionado e tamanho do bloco usando coordenação de predição dependente da posição. Os pixels de referência filtrados podem ser filtrados através do filtro passa baixa 66. A unidade de predição intra 4 6 pode usar um ou mais de um número de fórmulas exemplificativas (l) - (8) para calcular um valor previsto combinado de um pixel.
[0093] Em uma unidade de predição intra exemplar 46, quando dado quaisquer dois conjuntos de previsões de pixels pr [x, y] e qs [x, y], calculados usando apenas as referências não filtradas e filtradas r e s, respectivamente, podem calcular um valor previsto combinado de um pixel, denotado por v [x, y], através da fórmula (1) como definido acima.
[0094] Em uma outra unidade de predição intra exemplar 4 6 pode usar uma equação com um conjunto de parâmetro menor. Nesses exemplos, c[x, y] pode ser definido por um conjunto muito menor de parâmetros, mais uma equação para calcular todos os valores de combinação desses parâmetros. Em tal fórmula exemplar (2) como definida acima pode ser usada pela unidade predição intra 46.
[0095] Em outro exemplo, a fórmula pode ser escolhida para facilitar cálculos. Por exemplo, a unidade de predição intra 46 pode usar um preditor como definido na fórmula (4) acima. Essa abordagem pode explorar a linearidade da predição de HEVC (ou outra) como mostrado nas fórmulas (7) e (8) acima.
[0096] A unidade de predição intra 46 pode selecionar os parâmetros de predição (ex.,, g, dv e/ou dh) que correspondem à equação de predição usada pela unidade de predição intra 46 que melhor se encaixa na predição (ex., tendo as melhores características de distorção de taxa).
[0097] Por exemplo, a unidade de seleção de modo 40 pode calcular os valores de distorção de taxa utilizando uma análise de distorção de taxa para os vários modos de predição intra testados e selecionar o modo de predição intra e parâmetros de predição com as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa, unidade de seleção de modo 40 geralmente determinam uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) usada para produzir o bloco codificado. A unidade de seleção de modo 40 pode calcular razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de predição intra exibe o melhor valor de distorção de taxa para o bloco. Por exemplo, a unidade de predição intra 46 pode testar cada um de um conjunto de equações parametrizadas combinando valores de referência filtrados e não filtrados. A unidade de predição intra 46 pode testar cada (ou uma pluralidade) de conjuntos de parâmetros para determinar qual modo e parâmetros exibem o melhor valor de distorção de taxa para o bloco.
[0098] Em um exemplo, a unidade de seleção de modo 40 pode utilizar uma tabela contendo parâmetros de predição para cada um dos modos de predição. A unidade de seleção de modo 40 pode calcular os resultados de distorção de taxa para cada método de combinação de predição dependente da posição (PDPC), bem como para não utilizar o PDPC. A unidade de seleção de modo 40 pode então selecionar o modo de predição e os parâmetros de predição (ou falta de parâmetros de predição) que exibam o melhor valor de distorção de taxa. Em um exemplo em que nenhuma técnica de aceleração é usada, o número de testes realizados pela unidade de seleção de modo 40 seria igual (número de modos preditores) x (número de conjuntos de parâmetros PDPC + 1).
[0099] Após selecionar um modo de predição intra para um bloco, a unidade de seleção de modo 40 pode fornecer informação indicativa do modo de predição intra selecionado e parâmetros de predição de PDPC para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar a informação que indica o modo predição intra selecionado. O codificador de vídeo 20 pode incluir nos dados de configuração de bitstream transmitidos, que podem incluir uma pluralidade de tabelas de índice de modos de predição intra e uma pluralidade de tabelas de índice de modos de predição intra modificadas (também referidas como tabelas de mapeamento de palavras código), definições de contextos de codificação para vários blocos e indicações de um modo de predição intra mais provável, parâmetros de predição (ou os valores do parâmetro de predição ou um valor único correspondente a um conjunto predefinido de parâmetros de predição), uma tabela de índice de modo de predição intra e uma tabela de índice de modo de predição intra modificada para utilizar para cada um dos contextos. O codificador de vídeo pode incluir parâmetros de predição em um ou mais conjunto de parâmetro de vídeo (VPS), um conjunto de parâmetro de sequência (SPS), um conjunto de parâmetro de imagem (PPS), um cabeçalho de fatia, um cabeçalho de bloco ou outros desses dados.
[0100] O codificador de vídeo 20 forma um bloco de vídeo residual pela subtração dos dados de predição da unidade de seleção de modo 40 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que realizam esta operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente semelhante, ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficientes de transformada. Transformadas em ondeleta, transformadas inteiras, transformadas de sub-banda, transformadas de seno discretas (DSTs) ou outros tipos de transformadas poderiam ser usados em vez de uma DCT. Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada. A transformada pode converter as informações residuais de um domínio de pixel para um domínio de transformada, como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantifica os coeficientes de transformada para reduzir ainda mais a taxa de bits. O processo de quantificação pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantificação pode ser modificado ajustando um parâmetro de quantificação.
[0101] Seguindo a quantificação, a unidade de codificação de entropia 56 varre e codifica a entropia dos coeficientes de transformada quantificados. Por exemplo, a unidade de codificação de entropia 56 pode executar codificação de comprimento variável adaptável ao contexto (CAVLC), codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa ao contexto sintáctica (SBAC), codificação de entropia de partição de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia. No caso da codificação por entropia baseada em contexto, o contexto pode ser baseado nos blocos vizinhos. Seguindo a codificação por entropia pela unidade de codificação de entropia 56, o bitstream codificado pode ser transmitido para outro dispositivo (por exemplo, decodificador de vídeo 30) ou arquivado para posterior transmissão ou recuperação.
[0102] A unidade de quantização inversa 58 e a unidade de transformada inversa 60 aplicam a quantização inversa e a transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel. Em particular, o somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado por movimento produzido antes pela unidade de compensação de movimento 44 ou unidade de predição intra 46 para produzir um bloco de vídeo reconstruído para armazenamento na memória da imagem de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimativa de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para inter-codificar um bloco em um quadro de vídeo subsequente.
[0103] O codificador de vídeo 20 geralmente usa o processo discutido acima para codificar cada bloco de cada imagem em uma sequência de vídeo codificada. Além disso, em alguns exemplos, o codificador de vídeo 20 pode determinar camadas temporais às quais atribuir cada uma das imagens. Além disso, o codificador de vídeo 20 pode ser configurado para codificar imagens de outras camadas, por exemplo, outras vistas, camadas de codificação de vídeo escalonáveis ou semelhantes. Em qualquer caso, o codificador de vídeo 20 pode ainda codificar dados indicando uma camada à qual cada imagem pertence, para uma ou mais camadas (por exemplo, de várias dimensões de vídeo).
[0104] A FIG. 7 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar 30 que pode implementar as técnicas desta revelação. De acordo com esta revelação, o decodificador de vídeo 30 pode ser configurado para aplicar as técnicas descritas nesta revelação, técnicas relacionadas com a melhoria da predição intra de vídeo utilizando combinação de predição dependente da posição. No exemplo da FIG. 7, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 70, unidade de compensação de movimento 72, unidade de predição intra 74, unidade de quantificação inversa 76, unidade de transformada inversa 82, filtro passa baixa 84 e somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 20 (FIG. 6. A unidade de compensação de movimento 72 pode gerar dados de predição baseados em vetores de movimento recebidos da unidade de decodificação por entropia 70 (tanto diretamente quando através do filtro passa baixa 84), enquanto a unidade de intra predição 74 pode gerar dados de predição com base em indicadores de modo de predição intra e parâmetros de predição recebidos da unidade de decodificação por entropia 70.
[0105] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um bitstream de vídeo codificado que representa blocos de vídeo de uma seção de vídeo codificada e elementos de sintaxe associados do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica o bitstream para gerar coeficientes quantificados, vetores de movimento ou indicadores de modo de predição intra, parâmetros de predição PDPC, e outros elementos de sintaxe. A unidade de decodificação de entropia 70 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.
[0106] Quando a porção de vídeo é codificada como uma fatia intra-codificada (I), a unidade de predição intra 84 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de predição intra sinalizado, parâmetros de predição intra e dados dos blocos anteriormente decodificados do quadro ou imagem atual. Alguns ou todos os blocos decodificados do quadro ou imagem atual são filtrados através do filtro passa baixa 84 para utilização pela unidade de predição intra 74.
[0107] A unidade de predição intra 74 pode realizar predição de um conjunto não filtrado ou filtrado de pixels de “referência” vizinhos, dependendo do modo preditor selecionado e tamanho do bloco usando coordenação de predição dependente da posição. Os pixels de referência filtrados podem ser filtrados através do filtro passa baixa 84. A unidade de predição intra 74 pode usar um ou mais de um número de fórmulas exemplificativas (l) - (8) definido acima para calcular um valor previsto combinado de um pixel.
[0108] Em uma unidade de predição intra exemplar 74, quando dado quaisquer dois conjuntos de previsões de pixels pr [x, y] e qs [x, y], calculados usando apenas as referências não filtradas e filtradas r e s, respectivamente, podem calcular um valor previsto combinado de um pixel, denotado por v [x, y], através da fórmula (1) como definido acima.
[0109] Em uma outra unidade de predição intra exemplar 7 4 pode usar uma equação com um conjunto de parâmetro menor. Nesses exemplos, c[x, y] pode ser definido por um conjunto muito menor de parâmetros, mais uma equação para calcular todos os valores de combinação desses parâmetros. Em tal fórmula exemplar (2) como definida acima pode ser usada pela unidade predição intra 74.
[0110] Em outro exemplo, a fórmula pode ser escolhida para facilitar cálculos. Por exemplo, a unidade de predição intra 74 pode usar um preditor como definido na fórmula (4) acima. Essa abordagem pode explorar a linearidade da predição de HEVC (ou outra) como mostrado nas fórmulas (7) e (8) acima.
[0111] A unidade de predição intra 74 pode usar parâmetros de predição decodificados (ex., g, dv e/ou dh) que correspondem à equação de predição usada pela unidade de predição intra 74 para calcular o bloco previsto.
[0112] Quando a quadro de vídeo é codificado como uma fatia inter-codificada (isto é, B, P ou GPB), a unidade de compensação de movimento 82 produz blocos de predição para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação por entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, Lista 0 e Lista 1, utilizando técnicas de construção padrão com base em imagens de referência armazenadas na memória de imagem de referência 82 A unidade de compensação de movimento 72 determina a informação de predição para um bloco de vídeo da fatia de vídeo atual analisando os vetores de movimento e outros elementos de sintaxe e utiliza a informação de predição para produzir os blocos de predição para o bloco de vídeo atual a ser decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou inter- predição) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de inter-predição (ex., fatia B, fatia P ou fatia GPB), informação de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo inter-codificado da fatia, estado de inter-predição para cada bloco de vídeo inter-codificado da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0113] A unidade de compensação de movimento 72 também pode executar a interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação como usados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para pixels sub- inteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos de predição.
[0114] A unidade de quantificação inversa 76 quantifica inversamente, isto é, desquantifica, os coeficientes de transformada quantificados fornecidos no bitstream e decodificados pela unidade de decodificação de entropia 70. O processo de quantificação inversa pode incluir a utilização de um parâmetro de quantificação QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantificação e, do mesmo modo, um grau de quantificação inversa que deve ser aplicado.
[0115] A unidade de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada inteira inversa ou um processo de transformada inversa conceitualmente semelhante, aos coeficientes de transformada para produzir blocos residuais no domínio de pixel.
[0116] Depois da unidade de compensação de movimento 72 ou unidade de predição intra 74 gerar o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado somando os blocos residuais da unidade de transformada inversa 78 com os blocos correspondentes gerados pela unidade de compensação de movimento 72 ou unidade de predição intra 74. O somador 80 representa o componente ou componentes que realizam esta operação de soma. Se for desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados para remover artefatos de bloqueio. Outros filtros de circuito (tanto no circuito de codificação como após o circuito de codificação) também podem ser usados para suavizar transições de pixel ou, de outro modo, melhorar a qualidade do vídeo. Os blocos de vídeo decodificados em uma dada imagem ou quadro são então armazenados na memória de imagem de referência 82, que armazena imagens de referência utilizadas para compensação de movimento subsequente. A memória de imagem de referência 82 armazena também o vídeo decodificado para apresentação posterior em um dispositivo de visualização, como o dispositivo de visualização 32 da FIG. 5.
[0117] O decodificador de vídeo 30 geralmente usa o processo discutido acima para decodificar cada bloco de cada imagem em uma sequência de vídeo codificada. Além disso, em alguns exemplos, o decodificador de vídeo 30 pode decodificar dados que indicam camadas temporais às quais as imagens são atribuídas. Além disso, o decodificador de vídeo 30 pode ser configurado para decodificar imagens de outras camadas, por exemplo, outras vistas, camadas de codificação de vídeo escalonáveis ou semelhantes. Em qualquer caso, o decodificador de vídeo 30 pode ainda decodificar dados indicando uma camada à qual cada imagem pertence, para uma ou mais camadas (por exemplo, de várias dimensões de vídeo).
[0118] A FIG. 8 é um fluxograma que mostra um exemplo de método de acordo com as técnicas desta revelação. Em um exemplo da revelação, a unidade de predição intra 46 no codificador de vídeo 20 pode ser configurada para codificar blocos de uma imagem atual na ordem de varredura de rastreio (100). O codificador de vídeo 20 pode ainda ser configurado para determinar a predição intra de um bloco atual de uma imagem atual (102). O codificador de vídeo 20 pode ainda ser configurado para formar valores de referência filtrados a partir de blocos decodificados vizinhos ao bloco atual (104). O filtro passa baixa 66 pode ser configurado para filtrar os valores de referência anteriores. O codificador de vídeo 20 pode ainda ser configurado para determinar os parâmetros de predição para o bloco atual de predição intra (106). A determinação dos parâmetros de predição pode incluir o corte de vários parâmetros para determinar o conjunto de parâmetros que é ideal. Exemplos adicionais incluem a seleção de um subconjunto de todos os parâmetros de predição e a verificação de cada combinação de parâmetros do subconjunto para selecionar um conjunto de parâmetros que seja ideal. A seleção do conjunto de parâmetro ideal pode ser baseada em uma análise de distorção de taxa.
[0119] O codificador de vídeo 20 pode ainda ser configurado para intra-prever o bloco atual usando valores de referência filtrados e valores de referência não filtrados usando parâmetros de predição para formar o bloco previsto (108). Em um exemplo, o codificador de vídeo pode ser configurado para gerar um bloco preditivo pelo cálculo de um conjunto de valores preditivos associados a um conjunto de pixels com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e os um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos. Em um exemplo, o cálculo do conjunto de valores preditivos compreende o cálculo do conjunto de valores preditivos uma pluralidade de vezes com diferentes valores de parâmetros e a seleção de um conjunto de parâmetros ideal dos diferentes valores de parâmetro. O codificador de vídeo 20 pode ser configurado para gerar o bloco preditivo através de qualquer uma das fórmulas paramétricas (l) - (8) discutidas acima.
[0120] O codificador de vídeo 20 pode ainda ser configurado para calcular o bloco residual representando as diferenças entre o bloco previsto e o bloco original (110). O codificador de vídeo 20 pode ainda ser configurado para transformar e quantificar o bloco residual (112). O codificador de vídeo 20 pode ainda ser configurado para codificar a entropia dos coeficientes de transformada quantificados, parâmetros de predição e indicação do modo de predição intra para o bloco atual (114). O codificador de vídeo 20 pode ainda ser configurado para gerar um fluxo de bits com os coeficientes de transformada quantificados codificados por entropia, parâmetros de predição e indicação do modo de predição intra para o bloco atual.
[0121] A FIG. 9 é um fluxograma que mostra um exemplo de método de acordo com as técnicas desta revelação. Em um exemplo da revelação, a unidade de predição intra 74 no decodificador de vídeo 30 pode ser configurada para decodificar blocos da imagem atual na ordem de varredura de rastreio (200). O decodificador de vídeo 30 pode ainda ser configurado para decodificar a entropia dos coeficientes de transformada quantificados, parâmetros de predição e indicação do modo de predição intra para o bloco atual (202).
[0122] O decodificador de vídeo 30 pode ainda ser configurado para desquantificar o bloco residual (204).
[0123] O decodificador de vídeo 30 pode ainda ser configurado para formar valores de referência filtrados a partir do bloco atual vizinho dos blocos decodificados (206).
[0124] O decodificador de vídeo 30 pode ainda ser configurado para intra-prever o bloco atual usando valores de referência filtrados e valores de referência não filtrados usando parâmetros de predição decodificados para formar o bloco previsto (208). Em um exemplo, o decodificador de vídeo 30 pode ser configurado para calcular um conjunto de valores preditivos associados a um conjunto de pixels com base em uma combinação linear de um ou mais da pluralidade de valores de referência filtrados na matriz de referência filtrada multiplicada por um primeiro conjunto de pesos e os um ou mais da pluralidade de valores de referência não filtrados na matriz de referência não filtrada multiplicada por um segundo conjunto de pesos. Em um exemplo, o primeiro conjunto de pesos e o segundo conjunto de pesos variam com base em uma posição de um pixel previsto do conjunto de pixels. Em outro exemplo, um primeiro peso dentro do primeiro conjunto de pesos é superior a um segundo peso do primeiro conjunto de pesos onde uma primeira distância entre um primeiro valor preditivo do conjunto de valores previstos associados ao primeiro peso e a matriz de referência filtrada é maior que uma segunda distância entre um segundo valor preditivo do conjunto de valores previstos associados ao segundo peso e a matriz de referência filtrada. Nesse exemplo, pixels preditivos dentro do bloco preditivo que estão mais distantes dos pixels de referência, o peso dos pixels de referência filtrados é maior.
[0125] Em um exemplo adicional, o decodificador de vídeo 30 pode ser configurado para calcular um conjunto de valores de predição não filtrados com base na pluralidade de valores de referência não filtrados na matriz de referência não filtrada e calcular um conjunto de valores de predição filtrados com base na pluralidade de valores de referência filtrados na matriz de referência filtrada. O conjunto de valores de predição não filtrados e o conjunto de valores de predição filtrados podem ser baseados em um ou mais parâmetros preditores direcionais (por exemplo, modo de predição direcional, como os modos de predição direcionais HEVC descritos na FIG. 2 acima) decodificados a partir do fluxo de bits.
[0126] Em um exemplo, o decodificador de vídeo 30 pode ser configurado para calcular o conjunto de valores preditivos através de fórmulas paramétricas (l) - (8) como discutido acima.
[0127] O decodificador de vídeo 30 pode ainda ser configurado para reconstruir um bloco de vídeo com base no conjunto computacional de valores preditivos (210).
[0128] Deve-se reconhecer que, dependendo do exemplo, certos atos ou eventos de qualquer das técnicas aqui descritas podem ser realizados em uma sequência diferente, podem ser adicionados, mesclados ou excluídos (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através de processador multithreaded, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[0129] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas através de uma ou mais instruções ou código em uma mídia legível por computador e executadas por uma unidade de processamento baseada em hardware. A mídia legível por computador pode incluir a mídia de armazenamento legível por computador, que corresponde a uma mídia tangível, como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, a mídia legível por computador pode geralmente corresponder a (1) mídia de armazenamento legível por computador tangível que é não- transitória ou (2) um meio de comunicação, como um sinal ou onda transportadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código, e/ou estruturas de dados para a implementação das técnicas descritas na presente revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0130] A título de exemplo, e não como limitação, tais mídias de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnéticos, memória flash ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado sob a forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Também, qualquer conexão é adequadamente chamada de uma mídia legível por computador. Por exemplo, se as instruções são transmitidas a partir de um site, servidor, ou de outra origem remota através de um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fios, tais como infravermelho, rádio e microondas, então o cabo coaxial, cabo de fibra óptica, par trançado, DSL, ou tecnologias sem fios, tais como infravermelho, rádio e microondas estão incluídas na definição de mídia de transmissão. Deve-se compreender, no entanto, que a mídia de armazenamento legível por computador e mídia de armazenamento de dados não incluem conexões, ondas transportadoras, sinais ou outra mídia transitória, mas são, ao invés, direcionadas à mídia de armazenamento tangível, não transitória. Disco e disquete, como aqui utilizados, incluem disco compacto (CD), disco a laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray onde os disquetes geralmente reproduzem dados magneticamente, enquanto que os discos reproduzem dados oticamente com lasers. Combinações dos anteriores também devem ser incluídas dentro do escopo de mídias legíveis por computador.
[0131] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASIC), arranjos de lógica programáveis em campo (FPGA), ou outros circuitos lógicos ou discretos equivalentes. Consequentemente, o termo “processador” como aqui utilizado pode referir-se a qualquer uma das estruturas precedentes 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 fornecida dentro de módulos de hardware e/ou software dedicados configurados para a codificação e decodificação, ou incorporados em um codec combinado. Também, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0132] As técnicas da presente revelação podem ser implementadas em uma vasta variedade de dispositivos ou aparelhos, incluindo um monofone sem fios, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos na presente revelação para enfatizar os aspectos funcionais dos dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente da realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecida por uma coleta de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com o software e/ou firmware adequado.
[0133] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (15)

1. Método de decodificação de dados de vídeo, o método compreendendo: decodificar blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; formar uma predição filtrada ao calcular uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; formar uma predição não filtrada ao calcular uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; calcular um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual; e reconstruir o bloco atual com base no conjunto de valores preditivos calculado, o método caracterizado pelo fato de que o conjunto de valores preditivos é calculado com base em uma combinação linear da predição filtrada multiplicada por um primeiro conjunto de pesos e a predição não filtrada multiplicada por um segundo conjunto de pesos.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro conjunto de pesos e o segundo conjunto de pesos variam com base em uma posição de um pixel previsto do conjunto de pixels; e, preferivelmente em que: um primeiro peso dentro do primeiro conjunto de pesos é superior a um segundo peso do primeiro conjunto de pesos quando uma primeira distância entre um primeiro valor preditivo do conjunto de valores preditivos associados ao primeiro peso e à matriz de referência filtrada é maior que uma segunda distância entre um segundo valor preditivo do conjunto de valores preditivos associados ao segundo peso e à matriz de referência filtrada.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: calcular um conjunto de valores preditivos não filtrados com base na pluralidade de valores de referência não filtrados na matriz de referência não filtrada; e calcular um conjunto de valores preditivos filtrados com base na pluralidade de valores de referência filtrados na matriz de referência filtrada, em que calcular o conjunto de valores preditivos compreende calcular o conjunto de valores preditivos usando o conjunto de valores preditivos não filtrados e o conjunto de valores preditivos filtrados; e, preferivelmente em que: o conjunto de valores preditivos não filtrados e o conjunto de valores preditivos filtrados são baseados em um modo direcional de intra codificação.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que calcular o conjunto de valores preditivos compreende calcular o conjunto de valores preditivos através de uma fórmula paramétrica: em que x representa um identificador de coluna para um pixel do bloco atual e y representa um identificador de fileira para o pixel do bloco atual, v[x,y] representa um valor preditivo combinado para o pixel do bloco atual em uma posição definida por x e y, pr[x,y] representa os um ou mais dentre a pluralidade de valores de referência não filtrados, qs[x,y] representa os um ou mais dentre a pluralidade de valores de referência filtrados na matriz de referência filtrada, c representa o segundo conjunto de pesos e 1-c representa o primeiro conjunto de pesos.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que calcular o conjunto de valores preditivos através de uma fórmula paramétrica: onde x representa um identificador de coluna para um pixel do bloco atual e y representa um identificador de fileira para um pixel do bloco atual, v[x,y] representa um valor preditivo combinado, representa a matriz de referência não-filtrada, o segundo conjunto de pesos compreende que são parâmetros de predição, N é um tamanho do bloco atual, representa a pluralidade de valores de referência não-filtrados calculados de acordo com uma predição não filtrada de um padrão de codificação de vídeo, representa a pluralidade de valores de referência filtrados calculados de acordo com a predição filtrada do padrão de codificação de vídeo, o primeiro conjunto de pesos compreende b[x,y] que representa um fator de normalização, e min() representa uma função mínima.
6. Método, de acordo com a reivindicação 4, acordo com a reivindicação 4, caracterizado pelo fato de que:
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que calcular o conjunto de valores previstos compreende calcular o conjunto de valores preditivos através de uma fórmula paramétrica: onde onde x representa um identificador de coluna para um pixel do bloco atual e y representa um identificador de fileira para um pixel do bloco atual, v[x,y] representa um valor preditivo combinado, r representa a matriz de referência não-filtrada, o segundo conjunto de pesos compreende a, que são parâmetros de predição, o primeiro conjunto de pesos compreende que representa a pluralidade de valores de referência não filtrados calculados de acordo com uma predição não filtrada de um padrão de codificação de video representa a pluralidade de valores de referência filtrados calculados de acordo com uma predição filtrada do padrão de codificação de vídeo.
8. Método de codificação de dados de vídeo, o método compreendendo: receber um bloco atual de uma imagem, uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados, e uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados; decodificar blocos vizinhos para um bloco atual em uma imagem de dados de vídeo; formar uma predição filtrada ao calcular uma matriz de referência filtrada compreendendo uma pluralidade de valores de referência filtrados compreendendo versões filtradas de pixels vizinhos para o bloco atual nos blocos vizinhos; formar uma predição não filtrada ao calcular uma matriz de referência não filtrada compreendendo uma pluralidade de valores de referência não filtrados correspondendo às versões não filtradas dos pixels vizinhos; gerar um bloco preditivo para o bloco atual, em que gerar compreende calcular um conjunto de valores preditivos associados a um conjunto de pixels do bloco atual; gerar um bloco residual baseado em uma diferença entre o bloco atual e o bloco preditivo; e codificar dados que representam o bloco residual em um fluxo de bits; o método caracterizado pelo fato de que o conjunto de valores preditivos é calculado com base em uma combinação linear da predição filtrada multiplicada por um primeiro conjunto de pesos e a predição não filtrada multiplicada por um segundo conjunto de pesos.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que calcular o conjunto de valores preditivos compreende: calcular uma pluralidade de conjuntos de valores preditivos usando diferentes valores de parâmetros; e selecionar um dentre os conjuntos de valores preditivos como um conjunto ideal de valores preditivos.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que selecionar um dentre os conjuntos de valores preditivos como o conjunto ideal de valores preditivos compreende: realizar uma análise de distorção de taxa na pluralidade de conjuntos de valores preditivos; e selecionar um dentre os conjuntos de valores preditivos que produz o melhor desempenho de distorção de taxa dentre a pluralidade de conjuntos de valores preditivos.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que gerar um bloco preditivo para o bloco atual compreende adicionalmente: calcular um segundo conjunto de valores preditivos associados a um conjunto de pixels do bloco atual com base nos um ou mais dentre a pluralidade de valores de referência filtrados na matriz de referência filtrada ou nos um ou mais dentre a pluralidade de valores de referência não filtrados na matriz de referência não filtrada; realizar uma segunda análise de distorção de taxa no segundo conjunto de valores preditivos; e selecionar um dentre o segundo conjunto de valores preditivos e o conjunto ideal de valores preditivos.
12. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende adicionalmente codificar os valores de parâmetros correspondentes ao conjunto selecionado dentre os conjuntos de valores preditivos no fluxo de bits.
13. Dispositivo para decodificação de dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: uma memória configurada para armazenar dados de vídeo associados a uma imagem; e um ou mais processadores em comunicação com a memória e configurados para realizar as etapas do método conforme definido em qualquer uma das reivindicações 1 a 7.
14. Dispositivo para codificação de dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: uma memória configurada para armazenar vídeo associado a uma imagem; e um ou mais processadores em comunicação com a memória e configurados para realizar as etapas do método conforme definido em qualquer uma das reivindicações 8 a 12.
15. Memória legível por computador caracterizada pelo fato de que compreende instruções nela armazenadas, as instruções sendo executáveis por um computador para realizar as etapas de método conforme definido em qualquer uma das reivindicações 1 a 12.
BR112018006408-4A 2015-09-29 2016-09-22 Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo BR112018006408B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562234645P 2015-09-29 2015-09-29
US62/234,645 2015-09-29
US15/272,034 2016-09-21
US15/272,034 US10425648B2 (en) 2015-09-29 2016-09-21 Video intra-prediction using position-dependent prediction combination for video coding
PCT/US2016/053126 WO2017058635A1 (en) 2015-09-29 2016-09-22 Improved video intra-prediction using position-dependent prediction combination for video coding

Publications (2)

Publication Number Publication Date
BR112018006408A2 BR112018006408A2 (pt) 2018-10-09
BR112018006408B1 true BR112018006408B1 (pt) 2023-12-26

Family

ID=58407611

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112018006408-4A BR112018006408B1 (pt) 2015-09-29 2016-09-22 Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo

Country Status (10)

Country Link
US (2) US10425648B2 (pt)
EP (1) EP3357247B1 (pt)
JP (1) JP6903644B2 (pt)
KR (1) KR20180063201A (pt)
CN (2) CN113612997B (pt)
BR (1) BR112018006408B1 (pt)
CA (1) CA3000373C (pt)
ES (1) ES2779461T3 (pt)
TW (1) TWI766844B (pt)
WO (1) WO2017058635A1 (pt)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3396960A4 (en) * 2016-02-16 2019-04-10 Samsung Electronics Co., Ltd. VIDEO ENCODING METHOD AND APPARATUS, AND DECODING METHOD AND APPARATUS THEREOF
US10455228B2 (en) * 2016-03-21 2019-10-22 Qualcomm Incorporated Determining prediction parameters for non-square blocks in video coding
US10623774B2 (en) 2016-03-22 2020-04-14 Qualcomm Incorporated Constrained block-level optimization and signaling for video coding tools
US10547854B2 (en) 2016-05-13 2020-01-28 Qualcomm Incorporated Neighbor based signaling of intra prediction modes
JP6956471B2 (ja) * 2016-05-13 2021-11-02 日本放送協会 符号化装置、復号装置及びプログラム
CN117201776A (zh) * 2016-09-13 2023-12-08 韩国电子通信研究院 视频编码/解码方法和装置以及存储比特流的记录介质
US20190215521A1 (en) * 2016-09-22 2019-07-11 Mediatek Inc. Method and apparatus for video coding using decoder side intra prediction derivation
US10506228B2 (en) 2016-10-04 2019-12-10 Qualcomm Incorporated Variable number of intra modes for video coding
US11146795B2 (en) 2017-03-10 2021-10-12 Qualcomm Incorporated Intra filtering flag in video coding
JP7036628B2 (ja) * 2017-03-10 2022-03-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
AU2018230328B2 (en) * 2017-03-10 2021-05-06 Hfi Innovation Inc. Method and apparatus of implicit intra coding tool settings with intra directional prediction modes for video coding
US10728548B2 (en) * 2017-04-04 2020-07-28 Futurewei Technologies, Inc. Processing reference samples used for intra-prediction of a picture block
GB2591410A (en) 2017-04-21 2021-07-28 Zenimax Media Inc Systems and methods for rendering & pre-encoded load estimation based encoder hinting
US10638126B2 (en) 2017-05-05 2020-04-28 Qualcomm Incorporated Intra reference filter for video coding
US10805641B2 (en) 2017-06-15 2020-10-13 Qualcomm Incorporated Intra filtering applied together with transform processing in video coding
CN117041537A (zh) * 2017-06-21 2023-11-10 Lg 电子株式会社 在图像编译***中根据帧内预测用于解码图像的方法和设备
CN118337990A (zh) * 2017-06-26 2024-07-12 交互数字麦迪逊专利控股公司 利用多个加权参考进行帧内预测的方法和装置
EP3652936A1 (en) 2017-07-05 2020-05-20 Huawei Technologies Co., Ltd. Devices and methods for video coding
CN110720216B (zh) 2017-07-05 2022-05-10 华为技术有限公司 用于视频编码的设备和方法
BR112020004557A2 (pt) * 2017-09-15 2020-09-08 Sony Corporation dispositivo e método de processamento de imagem.
KR102389868B1 (ko) 2017-09-28 2022-04-22 삼성전자주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치
US10965941B2 (en) 2017-10-09 2021-03-30 Qualcomm Incorporated Position-dependent prediction combinations in video coding
EP3487177A1 (en) * 2017-11-21 2019-05-22 Thomson Licensing Method and apparatus for low-complexity bi-directional intra prediction in video encoding and decoding
US11611757B2 (en) 2018-04-02 2023-03-21 Qualcomm Incorproated Position dependent intra prediction combination extended with angular modes
EP3554071A1 (en) * 2018-04-12 2019-10-16 InterDigital VC Holdings, Inc. Method and apparatus for intra prediction using a composite reference array
WO2019199142A1 (ko) * 2018-04-13 2019-10-17 엘지전자 주식회사 인트라 예측 방법을 결정하기 위한 영상 코딩 방법 및 장치
JP7486430B2 (ja) * 2018-05-14 2024-05-17 インターデジタル ヴイシー ホールディングス, インコーポレイテッド 四分木二分木のブロック形状適応イントラ予測方向
JP2021528893A (ja) 2018-06-26 2021-10-21 インターデジタル ヴイシー ホールディングス, インコーポレイテッド 可変重みを使用する複数参照イントラ予測
US11277644B2 (en) * 2018-07-02 2022-03-15 Qualcomm Incorporated Combining mode dependent intra smoothing (MDIS) with intra interpolation filter switching
US10567752B2 (en) 2018-07-02 2020-02-18 Tencent America LLC Method and apparatus for intra prediction for non-square blocks in video compression
US11128872B2 (en) * 2018-07-16 2021-09-21 Qualcomm Incorporated Position dependent intra prediction combination with wide angle intra prediction
CN112425162A (zh) 2018-07-16 2021-02-26 交互数字Vc控股公司 宽角帧内预测和位置依赖性帧内预测组合
US10911765B2 (en) * 2018-08-01 2021-02-02 Tencent America LLC Method and apparatus for video coding
US10491893B1 (en) * 2018-08-29 2019-11-26 Tencent America LLC Method and apparatus for multi-line intra prediction
EP3854080A1 (en) * 2018-09-21 2021-07-28 InterDigital VC Holdings, Inc. Harmonization of intra transform coding and wide angle intra prediction
GB2577337A (en) * 2018-09-24 2020-03-25 Sony Corp Image data encoding and decoding
CN113068030B (zh) 2018-10-12 2023-01-03 Oppo广东移动通信有限公司 视频图像分量预测方法及装置、计算机存储介质
WO2020084473A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Multi- iteration motion vector refinement
CN117459722A (zh) 2018-11-12 2024-01-26 北京字节跳动网络技术有限公司 组合帧间-帧内预测的简化
US11310515B2 (en) * 2018-11-14 2022-04-19 Tencent America LLC Methods and apparatus for improvement for intra-inter prediction mode
CN112889281B (zh) 2018-11-26 2022-11-18 华为技术有限公司 对图像中的块进行帧内预测的方法、设备和存储介质
KR20210091322A (ko) * 2018-12-21 2021-07-21 후아웨이 테크놀러지 컴퍼니 리미티드 모드 및 크기 의존적 블록 레벨 제한의 방법 및 장치
WO2020125803A1 (en) * 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Intra prediction using polynomial model
KR20210114386A (ko) 2019-02-08 2021-09-23 주식회사 윌러스표준기술연구소 이차 변환을 이용하는 비디오 신호 처리 방법 및 장치
JP7293376B2 (ja) 2019-02-28 2023-06-19 ヒューマックス・カンパニー・リミテッド イントラ予測ベースのビデオ信号処理方法及び装置
EP3935842A1 (en) * 2019-03-05 2022-01-12 FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. Use-case driven context model selection for hybrid video coding tools
KR102635518B1 (ko) 2019-03-06 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 변환된 단예측 후보의 사용
US20220174277A1 (en) * 2019-03-11 2022-06-02 Telefonaktiebolaget Lm Ericsson (Publ) Video coding involving gop-based temporal filtering
EP3939312A4 (en) * 2019-03-11 2022-04-27 Tencent America Llc PDPC INTER MODE IMPROVEMENT
US11445174B2 (en) * 2019-05-06 2022-09-13 Tencent America LLC Method and apparatus for video coding
EP3967037A1 (en) * 2019-05-10 2022-03-16 FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. Matrix-based intra prediction
US11202070B2 (en) 2019-05-30 2021-12-14 Hulu, LLC Parallel bi-directional intra-coding of sub-partitions
US11197009B2 (en) * 2019-05-30 2021-12-07 Hulu, LLC Processing sub-partitions in parallel using reference pixels
US11134275B2 (en) * 2019-06-04 2021-09-28 Tencent America LLC Method and apparatus for performing primary transform based on filtering of blocks
US11039156B2 (en) * 2019-06-11 2021-06-15 Tencent America LLC Unified position dependent prediction combination process
KR20220035108A (ko) * 2019-07-22 2022-03-21 인터디지털 브이씨 홀딩스 인코포레이티드 행렬 기반 인트라 예측을 이용한 비디오 인코딩 및 디코딩을 위한 방법 및 장치
CN114402614A (zh) * 2019-07-22 2022-04-26 交互数字Vc控股公司 使用基于矩阵的帧内预测进行视频编码和解码的方法和装置
CN117376556A (zh) 2019-08-14 2024-01-09 北京字节跳动网络技术有限公司 位置相关帧内预测样点滤波
EP3997872A4 (en) 2019-08-14 2022-10-26 Beijing Bytedance Network Technology Co., Ltd. WEIGHTING FACTORS FOR FILTERING PREDICTION SAMPLES IN INTRA MODE
KR20220061908A (ko) * 2019-09-24 2022-05-13 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 예측값의 확정 방법, 인코더, 디코더 및 컴퓨터 저장 매체
EP4029251A4 (en) * 2019-10-08 2022-11-16 Huawei Technologies Co., Ltd. METHOD AND APPARATUS FOR ADAPTIVE ADJUSTMENT OF PRECISION OF WEIGHTING PREDICTION PARAMETERS
US11671592B2 (en) * 2019-12-09 2023-06-06 Qualcomm Incorporated Position-dependent intra-prediction combination for angular intra-prediction modes for video coding
CN111193934A (zh) * 2020-04-10 2020-05-22 杭州雄迈集成电路技术股份有限公司 一种帧内预测方法、***、计算机设备及可读存储介质
CN113965764B (zh) * 2020-07-21 2023-04-07 Oppo广东移动通信有限公司 图像编码方法、图像解码方法及相关装置
US11743459B2 (en) * 2020-09-29 2023-08-29 Qualcomm Incorporated Filtering process for video coding

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0120009D0 (en) * 2001-08-15 2001-10-10 Uws Ventures Ltd Cause and effect diagnosis
EP2493194A4 (en) * 2009-10-22 2014-07-16 Univ Zhejiang VIDEO AND PICTURE CODING / DECODING SYSTEM BASED ON THE PREDICTION OF SPATIAL DOMAINS
US9154807B2 (en) * 2010-06-25 2015-10-06 Qualcomm Incorporated Inclusion of switched interpolation filter coefficients in a compressed bit-stream
US9930366B2 (en) * 2011-01-28 2018-03-27 Qualcomm Incorporated Pixel level adaptive intra-smoothing
TR201905119T4 (tr) * 2011-04-25 2019-05-21 Lg Electronics Inc İç tahmin yöntemi ve bu yöntemi kullanan kodlayıcı ve kod çözücü.
US9288500B2 (en) * 2011-05-12 2016-03-15 Texas Instruments Incorporated Luma-based chroma intra-prediction for video coding
US9282344B2 (en) * 2011-11-04 2016-03-08 Qualcomm Incorporated Secondary boundary filtering for video coding
US9020294B2 (en) * 2012-01-18 2015-04-28 Dolby Laboratories Licensing Corporation Spatiotemporal metrics for rate distortion optimization
US9813709B2 (en) * 2012-09-28 2017-11-07 Nippon Telegraph And Telephone Corporation Intra-prediction encoding method, intra-prediction decoding method, intra-prediction encoding apparatus, intra-prediction decoding apparatus, program therefor and recording medium having program recorded thereon
US9451254B2 (en) * 2013-07-19 2016-09-20 Qualcomm Incorporated Disabling intra prediction filtering
WO2015057947A1 (en) * 2013-10-17 2015-04-23 Huawei Technologies Co., Ltd. Improved reference pixel selection and filtering for intra coding of depth map
CN108141609A (zh) * 2015-10-21 2018-06-08 夏普株式会社 预测图像生成装置、图像解码装置以及图像编码装置
US10230961B2 (en) * 2016-06-03 2019-03-12 Mediatek Inc. Method and apparatus for template-based intra prediction in image and video coding
US10674165B2 (en) * 2016-12-21 2020-06-02 Arris Enterprises Llc Constrained position dependent intra prediction combination (PDPC)
US20190089952A1 (en) * 2017-09-19 2019-03-21 Futurewei Technologies, Inc. Bidirectional Weighted Intra Prediction

Also Published As

Publication number Publication date
CA3000373C (en) 2024-01-16
CN108141608B (zh) 2021-08-24
JP6903644B2 (ja) 2021-07-14
US10425648B2 (en) 2019-09-24
JP2018530246A (ja) 2018-10-11
US20170094285A1 (en) 2017-03-30
KR20180063201A (ko) 2018-06-11
CA3000373A1 (en) 2017-04-06
US20190373267A1 (en) 2019-12-05
TW201729595A (zh) 2017-08-16
CN113612997B (zh) 2024-06-21
CN108141608A (zh) 2018-06-08
WO2017058635A1 (en) 2017-04-06
CN113612997A (zh) 2021-11-05
ES2779461T3 (es) 2020-08-17
BR112018006408A2 (pt) 2018-10-09
TWI766844B (zh) 2022-06-11
EP3357247B1 (en) 2019-12-18
EP3357247A1 (en) 2018-08-08

Similar Documents

Publication Publication Date Title
BR112018006408B1 (pt) Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo
US10652571B2 (en) Advanced motion vector prediction speedups for video coding
ES2901503T3 (es) Decodificación de datos de vídeo usando una estructura de árbol de múltiples tipos de dos niveles
ES2867624T3 (es) Extracción de subflujos de bits de MCTS para codificación de vídeo
ES2952256T3 (es) Modelado de contexto eficiente de memoria
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
JP5805849B2 (ja) ビデオコード化における動きベクトル予測
BR112018006266B1 (pt) Fluxo ótico bidirecional avançado para codificação de vídeo
KR102182441B1 (ko) 비디오 코딩에서 hevc 확장들을 위한 다중 계층들의 저복잡도 지원
BR112020006232A2 (pt) codificação de informação de movimento de predição afim para codificação de vídeo
US20130163664A1 (en) Unified partition mode table for intra-mode coding
BR112016021151B1 (pt) Transformada inversa de espaço-cor tanto para vídeo codificado com perdas como sem perdas
BR112014025418B1 (pt) Processamento paralelo de frente de onda para codificação de vídeo
ES2886344T3 (es) Predicción residual generalizada para codificación de vídeo escalable y codificación de vídeo 3D
BR112016023406B1 (pt) Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa
BR112015032977B1 (pt) Equipamento e método para codificar informações de vídeo, equipamento e método para decodificar informações de vídeo, e memória legível por computador
BR112013032040B1 (pt) Método e aparelho para codificação de vídeo, e memória legível por computador
BR112013007563B1 (pt) Filtro de intra suavização para codificação de vídeo
BR112013033809B1 (pt) Codificação de vídeo usando resolução de vetor de movimento adaptativo
BR112016007360B1 (pt) Previsão ponderada explícita de alta precisão para codificação de vídeo
BR112014032473B1 (pt) Método e dispositivo para decodificar dados de vídeo, método e dispositvo para codificar dados de vídeo e mídia de armazenamento legível por computador
BR112013033645B1 (pt) Elementos de sintaxe de sinalização para coeficientes de transformada para subconjuntos de uma unidade de codificação de nível-folha
BR112014023466B1 (pt) Derivação de contexto para codificação de última posição para codificação de vídeo
BR112015007273B1 (pt) Método e dispositivo para processar dados de vídeo de múltiplas camadas, dispositivo de codificação de vídeo e memória legível por computador

Legal Events

Date Code Title Description
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: 20 (VINTE) ANOS CONTADOS A PARTIR DE 22/09/2016, OBSERVADAS AS CONDICOES LEGAIS