BR112020006568A2 - combinações de predição de dependentes de posição em codificação de vídeo - Google Patents
combinações de predição de dependentes de posição em codificação de vídeo Download PDFInfo
- Publication number
- BR112020006568A2 BR112020006568A2 BR112020006568-4A BR112020006568A BR112020006568A2 BR 112020006568 A2 BR112020006568 A2 BR 112020006568A2 BR 112020006568 A BR112020006568 A BR 112020006568A BR 112020006568 A2 BR112020006568 A2 BR 112020006568A2
- Authority
- BR
- Brazil
- Prior art keywords
- respective sample
- value
- weight
- sample
- predictor block
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Um codificador de vídeo pode gerar um bloco preditor usando um modo de intra predição. Como parte da geração do bloco preditor, o codificador de vídeo pode, para cada respectiva amostra em um conjunto de amostras no bloco preditor, determinar, com base em um valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra. Adicionalmente, o codificador de vídeo pode determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra. O codificador de vídeo também pode determinar um valor primário para a respectiva amostra. O codificador de vídeo pode, em seguida, determinar um valor secundário para a respectiva amostra com base no primeiro peso, segundo peso, e o valor primário.
Description
[0001]Este pedido reivindica o benefício do Pedido de Patente Provisório dos EUA 62/570.019, depositado em 09 de outubro de 2017 e reivindica prioridade ao Pedido dos EUA 16/154.261, depositado em 08 de outubro de 2018, o conteúdo total dos quais é incorporado por referência.
[0002]Essa divulgação refere-se a codificação de vídeo.
[0003]Os recursos de vídeo digital podem ser incorporados a uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), laptops ou computadores de mesa, computadores tipo tablet, leitores de e-book, digital câmeras, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de vídeo game, consoles de vídeo game, telefones de rádio por satélite ou celular, smartphones, dispositivos de teleconferência, dispositivos de streaming de vídeo e semelhantes. Os dispositivos de vídeo digital implementam técnicas de compactação de vídeo, como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, Codificação de Vídeo Avançada (AVC), ITU-T H.265, padrão de codificação de vídeo de alta eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber,
codificar, decodificar e/ou armazenar informações de vídeo digital com mais eficiência, implementando essas técnicas de compressão de vídeo.
[0004]As técnicas de compressão de vídeo podem executar predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser particionada em blocos de vídeo, como blocos de árvore de codificação e blocos de codificação. 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. Para uma compressão adicional, os dados residuais podem ser transformados do domínio de pixel em um domínio de transformação, resultando em coeficientes de transformação residuais, que podem ser quantizados.
[0005]Em geral, esta divulgação descreve técnicas relacionadas à intra predição e codificação intra modo. As técnicas desta divulgação podem ser usadas no contexto de codecs de vídeo avançados, como extensões do HEVC ou a próxima geração de padrões de codificação de vídeo.
[0006]Em um exemplo, essa divulgação descreve um método de decodificar dados de vídeo, o método compreendendo: gerar um bloco preditor usando um modo de intra predição, em que gerar o bloco preditor compreende:
determinar um valor inicial de um primeiro peso; determinar um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinar um valor de um terceiro peso para a respectiva amostra; determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e reconstruir, com base no bloco preditor e dados residuais, um bloco decodificado dos dados de vídeo.
[0007]Em um outro exemplo, essa divulgação descreve um método de codificar dados de vídeo, o método compreendendo: gerar um bloco preditor usando um modo de intra predição, em que gerar o bloco preditor compreende: determinar um valor inicial de um primeiro peso; determinar um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinar um valor de um terceiro peso para a respectiva amostra; determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e gerar dados residuais com base no bloco preditor e um bloco de codificação dos dados de vídeo.
[0008]Em um outro exemplo, essa divulgação descreve um aparelho para decodificar dados de vídeo, o aparelho compreendendo: uma ou mais mídias de armazenamento configuradas para armazenar os dados de vídeo; e um ou mais processadores configurados para: gerar um bloco preditor usando um modo de intra predição, em que o um ou mais processadores são configurados de modo que, como parte da geração do bloco preditor, o um ou mais processadores: determinam um valor inicial de um primeiro peso; determinam um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinam, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinam, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinam um valor de um terceiro peso para a respectiva amostra; determinam um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinam um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinam um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e reconstruir, com base no bloco preditor e dados residuais, um bloco decodificado dos dados de vídeo.
[0009]Em um outro exemplo, essa divulgação descreve um aparelho para codificar dados de vídeo, o aparelho compreendendo: uma ou mais mídias de armazenamento configuradas para armazenar os dados de vídeo; e um ou mais processadores configurados para: gerar um bloco preditor usando um modo de intra predição, em que o um ou mais processadores são configurados de modo que, como parte da geração do bloco preditor, o um ou mais processadores: determinam um valor inicial de um primeiro peso; determina um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinam, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinam, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinam um valor de um terceiro peso para a respectiva amostra; determinam um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinam um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinam um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e gerar dados residuais com base no bloco preditor e um bloco de codificação dos dados de vídeo.
[0010]Em um outro exemplo, essa divulgação descreve um aparelho para decodificar dados de vídeo, o aparelho compreendendo: meios para armazenar os dados de vídeo; e meios para gerar um bloco preditor usando um modo de intra predição, em que os meios para gerar o bloco preditor compreende: meios para determinar um valor inicial de um primeiro peso; meios para determinar um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: meios para determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; meios para determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; meios para determinar um valor de um terceiro peso para a respectiva amostra; meios para determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; meios para determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição; e meios para determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e meios para reconstruir, com base no bloco preditor e dados residuais, um bloco decodificado dos dados de vídeo.
[0011]Em um outro exemplo, essa divulgação descreve um aparelho para codificar dados de vídeo, o aparelho compreendendo: meios para armazenar os dados de vídeo; e meios para gerar um bloco preditor usando um modo de intra predição, em que os meios para gerar o bloco preditor compreende: meios para determinar um valor inicial de um primeiro peso; meios para determinar um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: meios para determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; meios para determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; meios para determinar um valor de um terceiro peso para a respectiva amostra; meios para determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; meios para determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição; e meios para determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e meios para gerar dados residuais com base no bloco preditor e um bloco de codificação dos dados de vídeo.
[0012]Em um outro exemplo, essa divulgação descreve um meio de armazenamento legível por computador tendo instruções armazenadas nele que, quando executadas, faz um ou mais processadores: gerar um bloco preditor usando um modo de intra predição, em que o um ou mais processadores são configurados de modo que que, como parte da geração do bloco preditor, o um ou mais processadores: determinam um valor inicial de um primeiro peso; determinam um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinam, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinam, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinam um valor de um terceiro peso para a respectiva amostra; determina um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinam um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinam um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e reconstruir, com base no bloco preditor e dados residuais, um bloco decodificado de dados de vídeo.
[0013]Em um outro exemplo, essa divulgação descreve um meio de armazenamento legível por computador tendo instruções armazenadas nele que, quando executadas, faz um ou mais processadores: gerar um bloco preditor usando um modo de intra predição, em que o um ou mais processadores são configurados tal que, como parte da geração do bloco preditor, o um ou mais processadores:
determina um valor inicial de um primeiro peso; determina um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determina, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determina, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determina um valor de um terceiro peso para a respectiva amostra; determina um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determina um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determina um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e gerar dados residuais com base no bloco preditor e um bloco de codificação dos dados de vídeo.
[0014]Os detalhes de um ou mais aspectos da divulgação são estabelecidos nos desenhos anexos e na descrição abaixo. Outras características, objetos e vantagens das técnicas descritas nesta divulgação serão evidentes a partir da descrição, desenhos e reivindicações.
[0015]A Figura 1 é um diagrama de bloco que ilustra um exemplo de sistema de codificação e decodificação de vídeo que pode usar uma ou mais técnicas descritas nesta divulgação.
[0016]A Figura 2 ilustra um exemplo de intra predição para um bloco 16 x 16.
[0017]A Figura 3 ilustra exemplo de modos de intra predição.
[0018]A Figura 4 é um diagrama conceitual que ilustra um exemplo de modo planar como definido em HEVC.
[0019]A Figura 5 é um diagrama conceitual que ilustra um exemplo de um modo de intra predição angular.
[0020]A Figura 6A é um diagrama conceitual que ilustra um exemplo de dados disponíveis para combinação de predição dependente de posição para um bloco de 4 x 4 pixels.
[0021]A Figura 6B é um diagrama conceitual que ilustra um exemplo de dados disponíveis para combinação de predição dependente de posição para um bloco de 4 x 4 pixels.
[0022]A Figura 7A é um diagrama de bloco que ilustra um exemplo usando um modo planar/DC com uma ponderação aplicada para gerar uma amostra de predição (0,0), de acordo com uma técnica desta divulgação.
[0023]A Figura 7B é um diagrama de bloco que ilustra um exemplo usando um modo planar/DC com uma ponderação aplicada para gerar uma amostra de predição (1, O), de acordo com uma técnica desta divulgação.
[0024]A Figura 7C é um diagrama de bloco que ilustra um exemplo usando um modo planar/DC com uma ponderação aplicada para gerar uma amostra de predição (0,1), de acordo com uma técnica desta divulgação.
[0025]A Figura 7D é um diagrama de bloco que ilustra um exemplo usando um modo planar/DC com uma ponderação aplicada para gerar uma amostra de predição (1, 1), de acordo com uma técnica desta divulgação.
[0026]A Figura 8 é um diagrama de bloco que ilustra um exemplo de codificador de vídeo que pode implementar uma ou mais técnicas descritas nesta divulgação.
[0027]A Figura 9 é um diagrama de bloco que ilustra um exemplo de decodificador de vídeo que pode implementar uma ou mais técnicas descritas nesta divulgação.
[0028]A Figura 10 é um fluxograma que ilustra um exemplo de operação de um codificador de vídeo de acordo com uma técnica desta divulgação.
[0029]A Figura 11 é um fluxograma que ilustra um exemplo de operação de um decodificador de vídeo de acordo com uma técnica desta divulgação.
[0030]Um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) pode usar intra predição para gerar um bloco preditor para um bloco atual de uma imagem atual. Em geral, ao usar a intra predição para gerar um bloco preditor, o codificador de vídeo determina um conjunto de amostras de referência em uma coluna à esquerda do bloco atual na imagem atual e/ou em uma linha acima do bloco atual na imagem atual. O codificador de vídeo pode, em seguida, usar as amostras de referência para determinar valores de amostras no bloco preditor.
[0031]Em codificação de vídeo de alta eficiência (HEVC) e outros padrões de codificação de vídeo, o codificador de vídeo realiza suavização intra referência. Quando o codificador de vídeo realiza suavização intra referência, o codificador de vídeo aplica um filtro às amostras de referência antes de usar as amostras de referência para determinar valores previstos de amostras no bloco preditor. Por exemplo, o codificador de vídeo pode aplicar um filtro bilinear de 2 derivações, um filtro de 3 derivações (1,2,1)/4, ou um filtro de suavização intra dependente de modo às amostras de referência. Na descrição de filtro acima, o ‘/4’ denota a normalização dividindo-se os resultados por 4. Da mesma forma, realizando a suavização intra referência melhora a precisão de predição, especialmente quando o bloco atual representa um gradiente que varia suavemente.
[0032]Embora a suavização intra referência possa melhorar a precisão de predição em muitas situações, existem outras situações em que pode ser benéfico o uso das amostras de referência não filtradas. A combinação de predição dependente de posição (PDPC) é um esquema que foi desenvolvido para resolver esses problemas e melhorar intra predição. No esquema de PDPC, um codificador de vídeo determina um valor de uma amostra de bloco preditor com base nas amostras de referência filtradas, amostras de referência não filtradas, e a posição da amostra de bloco preditor dentro do bloco preditor. O uso do esquema de PDPC pode ser associado com ganhos de eficiência de codificação. Por exemplo, a mesma quantidade de dados de vídeo pode ser codificada usando poucos bits.
[0033]Apesar dos ganhos de eficiência de codificação associados com o uso do esquema de PDPC descrito acima, existem várias desvantagens. Por exemplo, o esquema de PDPC é limitado ao modo planar apenas para controlar complexidade do codificador, que pode limitar o ganho de codificação contribuído pelo esquema de PDPC.
[0034]Essa divulgação descreve técnicas que podem melhorar o esquema de PDPC descrito acima, resultando em um esquema de PDPC simplificado. Por exemplo, de acordo com um exemplo da técnica desta divulgação, um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) gera um bloco preditor usando um modo de intra predição. Como parte da geração do bloco preditor, o codificador de vídeo pode determinar um valor inicial de um primeiro peso e determinar um valor inicial de um segundo peso.
Além disso, para cada respectiva amostra em um conjunto de amostras no bloco preditor, o codificador de vídeo pode determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra.
O codificador de vídeo também pode determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra.
Além disso, o codificador de vídeo pode determinar um valor de um terceiro peso para a respectiva amostra.
O codificador de vídeo também pode determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra.
Adicionalmente, o codificador de vídeo pode determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição.
Em seguida, o codificador de vídeo pode determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de: (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra,
(ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento. Neste exemplo, o modo de intra predição não é necessariamente limitado ao modo planar. Em vez disso, as técnicas de PDPC descritas neste exemplo podem ser usadas com outros modos de intra predição, potencialmente resultando em desempenho de compressão melhorado. Além disso, o projeto desta divulgação pode evitar o uso de operações de divisão, que pode simplificar a implementação, economizar energia, e acelerar a decodificação.
[0035]A Figura 1 é um diagrama de bloco que ilustra um exemplo de sistema de codificação e decodificação de vídeo 10 que pode utilizar as técnicas desta divulgação. Como mostrado na Figura 1, o sistema 10 inclui um dispositivo de origem 12 que fornece dados de vídeo codificados a serem decodificados posteriormente por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece os dados de vídeo codificados para o dispositivo de destino 14 através de um meio legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem incluir qualquer uma de uma ampla faixa de dispositivos ou aparelhos, incluindo computadores de mesa, computadores tipo notebook (isto é, laptop), computadores tipo tablet, decodificadores, aparelhos de telefone como assim chamado telefones “inteligentes”, computadores tipo tablet, televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de vídeo game, dispositivos de streaming de vídeo, ou semelhantes. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 são equipados para comunicação sem fio. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio. As técnicas descritas nesta divulgação podem ser aplicadas a aplicativos com fio/sem fio. O dispositivo de origem 12 é um exemplo de dispositivo de codificação de vídeo (isto é, um dispositivo para codificar dados de vídeo). O dispositivo de destino 14 é um exemplo de dispositivo de decodificação de vídeo (isto é, um dispositivo para decodificar dados de vídeo).
[0036]O sistema 10 ilustrado da Figura 1 é apenas um exemplo. As técnicas para processar dados de vídeo podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Em alguns exemplos, as técnicas podem ser realizadas por um codificador/decodificador de vídeo, da mesma forma denominado como um “CODEC”. O dispositivo de origem 12 e o dispositivo de destino 14 são exemplos de tais dispositivos de codificação em que o dispositivo de origem 12 gera dados de vídeo codificados para transmissão ao dispositivo de destino 14. Em alguns exemplos, o dispositivo de origem 12 e o dispositivo de destino 14 operam em uma maneira substancialmente simétrica de modo que cada um do dispositivo de origem 12 e do dispositivo de destino 14 inclua componentes de codificação e decodificação de vídeo. Consequentemente, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, para streaming de vídeo, reprodução de vídeo, dispersão de vídeo, ou telefonia por vídeo.
[0037]No exemplo da Figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, mídia de armazenamento 19 configuradas para armazenar dados de vídeo, um codificador de vídeo 20, e uma interface de saída 22. O dispositivo de destino 14 inclui uma interface de entrada 26, mídia de armazenamento 28 configuradas para armazenar dados de vídeo codificados, um decodificador de vídeo 30, e dispositivo de exibição
32. Em outros exemplos, o dispositivo de origem 12 e o dispositivo de destino 14 incluem outros componentes ou arranjos. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa, como uma câmera externa. Do mesmo modo, o dispositivo de destino 14 pode interfacear com um dispositivo de exibição externa, em vez disso incluir um dispositivo de exibição integrado.
[0038]A fonte de vídeo 18 é uma fonte de dados de vídeo. Os dados de vídeo podem incluir uma série de imagens. A fonte de vídeo 18 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 alimentação de vídeo para receber dados de vídeo de um provedor de conteúdo de vídeo. Em alguns exemplos, a fonte de vídeo 18 gera dados de vídeo com base em gráficos por computador, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por computador. A mídia de armazenamento 19 pode ser configurada para armazenar os dados de vídeo. Em cada caso, o vídeo gerado por computador, capturado, pré- capturado pode ser codificado pela codificador de vídeo
20.
[0039]A interface de saída 22 pode emitir as informações de vídeo codificadas para um meio legível por computador 16. A interface de saída 22 pode incluir vários tipos de componentes ou dispositivos. Por exemplo, a interface de saída 22 pode incluir um transmissor sem fio, um modem, um componente de rede com fio (por exemplo, uma placa Ethernet), ou um outro componente físico. Nos exemplos onde a interface de saída 22 inclui um transmissor sem fio, a interface de saída 22 pode ser configurada para transmitir dados, como dados de vídeo codificados, modulados de acordo com um padrão de comunicação de celular, como 4G, LTE 4G, LTE Avançada, 5G, e semelhantes. Em alguns exemplos onde a interface de saída 22 inclui um transmissor sem fio, a interface de saída 22 pode ser configurada para transmitir dados, como dados de vídeo codificados, modulados de acordo com outros padrões com fio, como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (por exemplo, ZigBeeTM), um padrão BluetoothTM, e semelhantes. Em alguns exemplos, o conjunto de circuitos de interface de saída 22 é integrado em conjunto de circuitos de codificador de vídeo 20 e/ou outros componentes de dispositivo de origem
12. Por exemplo, codificador de vídeo 20 e interface de saída 22 podem ser partes de um sistema em um chip (SoC). O SoC também pode incluir outros componentes, como um microprocessador de uso geral, uma unidade de processamento de gráficos, e assim por diante.
[0040]O dispositivo de destino 14 pode receber dados de vídeo codificados a serem decodificados através do meio legível por computador 16. O meio legível por computador 16 pode incluir qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para dispositivo de destino
14. Em alguns exemplos, o meio legível por computador 16 inclui um meio de comunicação para permitir que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. O meio de comunicação pode incluir qualquer meio de comunicação com fio ou sem fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede com base 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 comunicação do dispositivo de origem 12 para o dispositivo de destino 14. O dispositivo de destino 14 pode incluir uma ou mais mídias de armazenamento de dados configuradas para armazenar dados de vídeo codificados e dados de vídeo decodificados.
[0041]Em alguns exemplos, a interface de saída 22 pode emitir dados, como dados de vídeo codificados, para um dispositivo intermediário, como um dispositivo de armazenamento. Da mesma forma, a interface de entrada 26 do dispositivo de destino 14 pode receber dados codificados a partir do dispositivo intermediário. O dispositivo intermediário pode incluir qualquer uma de uma variedade de mídia de armazenamento de dados distribuída ou localmente acessada 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 alguns exemplos, o dispositivo intermediário corresponde a um servidor de arquivo. Exemplo de servidores de arquivo incluem servidores web, servidores FTP, dispositivos de armazenamento conectados à rede (NAS), ou unidades de disco local.
[0042]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 com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão de streaming, uma transmissão de download ou uma combinação dos mesmos.
[0043]O meio legível por computador 16 pode incluir mídia transitória, como transmissã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 disco rígido, unidade flash, CD, digital disco de vídeo, 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 de origem 12 e fornecer os dados de vídeo codificados ao dispositivo de destino 14, por exemplo, via transmissão de rede. Da mesma forma, um dispositivo de computação de uma instalação de produção média, como uma instalação de gravação de disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, o meio legível por computador 16 pode ser entendido como incluindo um ou mais meios legíveis por computador de várias formas, em vários exemplos.
[0044]A interface de entrada 26 do dispositivo de destino 14 recebe dados do meio legível por computador
16. A interface de entrada 26 pode incluir vários tipos de componentes ou dispositivos. Por exemplo, a interface de entrada 26 pode incluir um receptor sem fio, um modem, um componente de rede com fio (por exemplo, uma placa Ethernet) ou outro componente físico. Em exemplos em que a interface de entrada 26 inclui um receptor sem fio, a interface de entrada 26 pode ser configurada para receber dados, como o fluxo de bits, modulado de acordo com um padrão de comunicação celular, como 4G, LTE 4G, LTE Avançada, 5G e semelhantes. Em alguns exemplos em que a interface de entrada 26 inclui um receptor sem fio, a interface de entrada 26 pode ser configurada para receber dados, como o fluxo de bits, modulados de acordo com outros padrões sem fio, como uma especificação IEEE
802.11, uma especificação IEEE 802.15 (por exemplo, ZigBeeTM), um padrão BluetoothTM, e semelhantes. Em alguns exemplos, o conjunto de circuitos de interface de entrada 26 pode ser integrado em conjunto de circuitos do decodificador de vídeo 30 e/ou outros componentes do dispositivo de destino 14. Por exemplo, o decodificador de vídeo 30 e a interface de entrada 26 podem ser partes de um SoC. O SoC também pode incluir outros componentes, como um microprocessador de uso geral, uma unidade de processamento de gráficos, e assim por diante.
[0045]A mídia de armazenamento 28 pode ser configurada para armazenar dados de vídeo codificados, como dados de vídeo codificados (por exemplo, um fluxo de bits) recebidos pela interface de entrada 26. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário. O dispositivo de exibição 32 pode incluir qualquer uma de uma variedade de dispositivos de exibição como um tubo de raio catódicos (CRT), uma tela de cristal líquido (LCD), uma tela de plasma, uma tela de diodo emissora de luz orgânica (OLED), ou um outro tipo de dispositivo de exibição.
[0046]O codificador de vídeo 20 e o decodificador de vídeo 30 cada um pode ser implementado como qualquer uma de uma variedade de conjunto de circuitos adequado, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), 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 um meio legível por computador não transitório adequado e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta divulgação. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo.
[0047]Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 codificar e decodificar dados de vídeo de acordo com uma codificação de vídeo padrão ou especificação. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar e decodificar dados de vídeo de acordo com ITUT 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 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas Extensões de codificação de vídeo escalável (SVC) e codificação de vídeo com várias visualizações (MVC) ou outro padrão ou especificação de codificação de vídeo. Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 codificam e decodificam dados de vídeo de acordo com a Codificação de vídeo de alta eficiência (HEVC), que como conhecido como ITU-T H.265, suas extensões de codificação de conteúdo de tela e alcance, sua extensão de codificação de vídeo 3D (3D-HEVC), sua extensão de múltiplas visualizações (MV- HEVC) ou sua extensão escalável (SHVC). Uma Equipe Conjunta de Exploração de Vídeo (JVET) está atualmente desenvolvendo o padrão versátil de codificação de vídeo (VVC) com base no modelo de exploração conjunta.
[0048]Esta divulgação pode geralmente se referir a “sinalizar” certas informações, como elementos de sintaxe. O termo “sinalização” pode geralmente se referir à comunicação de elementos de sintaxe e/ou outros dados usados para decodificar os dados de vídeo codificados. Essa comunicação pode ocorrer em tempo real ou quase real. Como alternativa, essa comunicação pode ocorrer ao longo de um período de tempo, como pode ocorrer ao armazenar elementos de sintaxe em um meio de armazenamento legível por computador em um fluxo de bits no momento da codificação, que pode ser recuperado por um dispositivo de decodificação a qualquer momento após ser armazenado neste meio.
[0049]Os dados do vídeo incluem uma série de fotos. As fotos também podem ser chamadas de “quadros”. Uma imagem pode incluir uma ou mais matrizes de amostra. Cada matriz de amostra respectiva de uma imagem inclui uma matriz bidimensional de amostras para um respectivo componente de cor. Por exemplo, uma imagem pode incluir uma matriz bidimensional de amostras de luma, uma matriz bidimensional de amostras de croma Cb e uma matriz bidimensional de amostras de croma Cr. Em outros casos,
uma imagem pode ser monocromática e pode incluir apenas uma matriz de amostras de luma.
[0050]Como parte da codificação de dados de vídeo, o codificador de vídeo 20 pode codificar imagens dos dados de vídeo. Por outras palavras, o codificador de vídeo 20 pode gerar representações codificadas das imagens dos dados de vídeo. Esta divulgação pode se referir a uma representação codificada de uma imagem como uma “imagem codificada” ou uma “imagem codificada”.
[0051]Como parte da geração de uma representação codificada de uma imagem, o codificador de vídeo 20 codifica blocos de amostras nas matrizes de amostra da imagem. Um bloco é uma matriz bidimensional de dados, como uma matriz bidimensional de amostras. O codificador de vídeo 20 pode incluir, em um fluxo de bits, uma representação codificada de um bloco.
[0052]Em alguns exemplos, para codificar um bloco da imagem, o codificador de vídeo 20 realiza intra predição ou inter predição para gerar um ou mais blocos preditores para o bloco. Adicionalmente, o codificador de vídeo 20 pode gerar dados residuais para o bloco. O bloco residual inclui amostras residuais. Cada amostra residual pode indicar uma diferença entre uma amostra de um dos blocos preditores gerados e uma amostra do bloco correspondente. O codificador de vídeo 20 pode aplicar uma transformação para blocos de amostras residuais para gerar coeficientes de transformação. Além disso, o codificador de vídeo 20 pode quantificar os coeficientes de transformação. Em alguns exemplos, o codificador de vídeo 20 pode gerar um ou mais elementos de sintaxe para representar um coeficiente de transformação. O codificador de vídeo 20 pode codificar por entropia um ou mais dos elementos de sintaxe representando o coeficiente de transformação.
[0053]Em algumas especificações de codificação de vídeo, para gerar uma representação codificada de uma imagem, codificador de vídeo 20 particiona cada matriz de amostra da imagem em blocos de árvore de codificação (CTBs) e codifica os CTBs. Um CTB é um bloco N x N de amostras em uma matriz de amostra de uma imagem. Por exemplo, um CTB pode variar em tamanho de 16 x 16 a 64 x 64.
[0054]Uma unidade de árvore de codificação (CTU) de uma imagem inclui um ou mais CTBs colocados e estruturas de sintaxe usadas para codificar as amostras de um ou mais CTBs colocados. Por exemplo, cada CTU pode incluir um CTB de amostras luma de uma imagem, dois CTBs correspondentes de amostras de croma da imagem e estruturas de sintaxe usadas para codificar as amostras dos CTBs. Em imagens monocromáticas ou imagens com três planos de cores separados, uma CTU pode incluir uma única CTB e estruturas de sintaxe usadas para codificar as amostras da CTB. Uma CTU também pode ser chamada de “bloco de árvore” ou “maior unidade de codificação” (LCU). Nesta divulgação, uma “estrutura de sintaxe” pode ser definida como zero ou mais elementos de sintaxe presentes juntos em um fluxo de bits em uma ordem especificada. Em alguns codecs, uma imagem codificada é uma representação codificada contendo todas as CTUs da imagem.
[0055]Para codificar uma CTU de uma imagem, o codificador de vídeo 20 pode particionar os CTBs da CTU em um ou mais blocos de codificação. Um bloco de codificação é um bloco N x N de amostras. Em alguns codecs, para codificar uma CTU de uma imagem, o codificador de vídeo 20 pode particionar os blocos de árvore de codificação da CTU para particionar os CTBs da CTU em blocos de codificação de acordo com uma estrutura de árvore, daí o nome “unidades de árvore de codificação”.
[0056]Uma unidade de codificação (CU) inclui um ou mais blocos de codificação e estruturas de sintaxe usadas para codificar amostras de um ou mais blocos de codificação. Por exemplo, uma UC pode incluir um bloco de codificação de amostras de luma e dois blocos de codificação correspondentes de amostras de croma de uma imagem que possui uma matriz de amostras de luma, uma matriz de amostras Cb e uma matriz de amostras Cr e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação. Em imagens monocromáticas ou imagens com três planos de cores separados, uma CU pode incluir um único bloco de codificação e estruturas de sintaxe usadas para codificar as amostras do bloco de codificação.
[0057]Além disso, o codificador de vídeo 20 pode codificar UCs de uma imagem dos dados de vídeo. Em alguns codecs, como parte da codificação de uma CU, o codificador de vídeo 20 pode particionar um bloco de codificação da CU em um ou mais blocos preditores. Um bloco preditor é um bloco retangular (isto é, quadrado ou não quadrado) de amostras nas quais a mesma predição é aplicada. Uma unidade de predição (PU) de uma CU pode incluir um ou mais blocos preditores de uma CU e estruturas de sintaxe usadas para prever o um ou mais blocos preditores. Por exemplo, uma PU pode incluir um bloco preditor de amostras de luma, dois blocos preditores correspondentes de amostras de croma e estruturas de sintaxe usadas para prever os blocos preditores. Em imagens monocromáticas ou imagens com três planos de cores separados, uma PU pode incluir um único bloco preditor e estruturas de sintaxe usadas para prever o bloco preditor. Em outros codecs, o codificador de vídeo 20 não particiona um bloco de codificação de uma CU em blocos preditores. Em vez disso, a predição ocorre no nível da CU. Assim, o bloco de codificação de uma CU pode ser sinônimo de um bloco preditor de uma CU.
[0058]O codificador de vídeo 20 pode gerar um bloco preditor (por exemplo, um bloco preditor de luma, Cb e Cr) para um bloco preditor (por exemplo, bloco preditor de luma, Cb e Cr) de uma CU. O codificador de vídeo 20 pode usar intra predição ou inter predição para gerar um bloco preditor. Se o codificador de vídeo 20 usa predição interna para gerar um bloco preditor, o codificador de vídeo 20 pode gerar o bloco preditor com base em amostras decodificadas da imagem que inclui a CU. Se o codificador de vídeo 20 usa inter predição para gerar um bloco preditor de uma imagem atual, o codificador de vídeo 20 pode gerar o bloco preditor com base em amostras decodificadas de uma imagem de referência (isto é, uma imagem diferente da imagem atual).
[0059]Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode realizar intra predição usando um modo de intra predição selecionado de modos de intra predição disponíveis. O modos de intra predição podem incluir modos de intra predição direcionais, que também podem ser denominados como direções intra predição. Diferentes modos de intra predição direcionais correspondem a diferentes ângulos. Em alguns exemplos, para determinar um valor de uma amostra atual de um bloco preditor usando um modo de intra predição direcional, o codificador de vídeo pode determinar um ponto onde uma linha que passa através da amostra atual no ângulo correspondente ao modo de intra predição direcional cruza um conjunto de amostras de borda. As amostras de borda podem incluir amostras em uma coluna imediatamente à esquerda do bloco preditor e amostras em uma linha imediatamente acima do bloco preditor. Se o ponto estiver entre duas das amostras de borda, o codificador de vídeo poderá interpolar ou de outro modo determinar um valor correspondente ao ponto. Se o ponto corresponder a um única uma das amostras de borda, o codificador de vídeo pode determinar que o valor do ponto é igual à amostra de borda. O codificador de vídeo pode definir o valor da amostra atual do bloco preditor igual ao valor determinado do ponto.
[0060]O codificador de vídeo 20 pode gerar um ou mais blocos residuais para a CU. Por exemplo, o codificador de vídeo 20 pode gerar um resíduo separado para cada componente de cor (por exemplo, luma, Cb e Cr). Cada amostra em um bloco residual da UC para um componente de cor indica uma diferença entre uma amostra em um bloco preditor da CU para o componente de cor e uma amostra correspondente no bloco de codificação da CU para o componente de cor.
[0061]Em alguns padrões de codificação de vídeo, o codificador de vídeo 20 pode decompor os blocos residuais de uma CU em um ou mais blocos de transformação. Por exemplo, o codificador de vídeo 20 pode usar o particionamento de quatro árvores para decompor os blocos residuais de uma CU em um ou mais blocos de transformação. Um bloco de transformação é um bloco de amostras retangular (por exemplo, quadrado ou não quadrado) no qual a mesma transformação é aplicada. Uma unidade de transformação (TU) de uma CU pode incluir um ou mais blocos de transformação. O codificador de vídeo 20 pode aplicar uma ou mais transformações a um bloco de transformação de uma TU para gerar um bloco de coeficiente para a TU. Um bloco de coeficiente é uma matriz bidimensional de coeficientes de transformação. O codificador de vídeo 20 pode gerar elementos de sintaxe indicando alguns ou todos os coeficientes de transformação potencialmente quantizados. O codificador de vídeo 20 pode codificar por entropia (por exemplo, usando codificação aritmética binária adaptativa ao contexto (CABAC)) um ou mais dos elementos de sintaxe que indicam um coeficiente de transformação quantizado.
[0062]O codificador de vídeo 20 pode emitir um fluxo de bits que inclui dados de vídeo codificados. Em outras palavras, o codificador de vídeo 20 pode emitir um fluxo de bits que inclui uma representação codificada de dados de vídeo. A representação codificada dos dados de vídeo pode incluir uma representação codificada de imagens dos dados de vídeo. Por exemplo, o fluxo de bits pode incluir uma sequência de bits que forma uma representação de imagens codificadas dos dados de vídeo e dados associados. Em alguns exemplos, uma representação de uma imagem codificada pode incluir representação codificada de blocos da imagem.
[0063]O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo codificador de vídeo 20. Como observado acima, o fluxo de bits pode incluir uma representação codificada de dados de vídeo. O decodificador de vídeo 30 pode decodificar o fluxo de bits para reconstruir imagens dos dados de vídeo. Como parte da decodificação do fluxo de bits, o decodificador de vídeo 30 obtém elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 reconstrói imagens dos dados de vídeo com base, pelo menos em parte, nos elementos de sintaxe obtidos do fluxo de bits. O processo para reconstruir imagens dos dados de vídeo pode ser geralmente recíproco ao processo realizado pelo codificador de vídeo 20 para codificar as imagens.
[0064]Por exemplo, como parte da decodificação de uma imagem dos dados de vídeo, o decodificador de vídeo 30 pode usar predição inter ou intra predição para gerar blocos preditores para CUs da imagem. Além disso, o decodificador de vídeo 30 pode determinar coeficientes de transformação com base em elementos de sintaxe obtidos a partir do fluxo de bits. Em alguns exemplos, o decodificador de vídeo 30 quantiza inversamente os coeficientes de transformação determinados. A quantização inversa mapeia um valor quantizado para um valor reconstruído. Por exemplo, o decodificador de vídeo 30 pode quantificar inversamente um valor determinando o valor multiplicado por um tamanho de etapa de quantização. Além disso, o decodificador de vídeo 30 pode aplicar uma transformação inversa nos coeficientes de transformação determinados para determinar valores de amostras residuais. O decodificador de vídeo 30 pode reconstruir um bloco da imagem com base nas amostras residuais e nas amostras correspondentes dos blocos preditores gerados. Por exemplo, o decodificador de vídeo 30 pode adicionar amostras residuais às amostras correspondentes dos blocos preditores gerados para determinar amostras reconstruídas do bloco.
[0065]Mais especificamente, o decodificador de vídeo 30 pode usar inter predição ou intra predição para gerar um ou mais blocos preditores para cada PU de uma CU atual. Além disso, o decodificador de vídeo 30 pode quantificar inversamente blocos de coeficientes de TUs da CU atual. O decodificador de vídeo 30 pode executar transformações inversas nos blocos de coeficientes para reconstruir os blocos de transformação das TUs da CU atual. O decodificador de vídeo 30 pode reconstruir um bloco de codificação da CU atual com base em amostras dos blocos preditores das PUs da CU atual e amostras residuais dos blocos de transformação das TUs da CU atual. Em alguns exemplos, o decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual, adicionando as amostras dos blocos preditores de PUs da
CU atual às amostras decodificadas correspondentes dos blocos de transformação das TUs da CU atual. Ao reconstruir os blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.
[0066]Uma fatia de uma imagem pode incluir um número inteiro de blocos da imagem. Por exemplo, uma fatia de uma imagem pode incluir um número inteiro número de CTUs da imagem. As CTUs de uma fatia podem ser solicitadas consecutivamente em um ordem de varredura, como um ordem de varredura de rastreamento. Em alguns codecs, uma fatia é definida como um número inteiro de CTUs contidas em um segmento de fatia independente e todos os segmentos de fatia dependentes subsequentes (se houver) que precedem o próximo segmento de fatia independente (se houver) dentro da mesma unidade de acesso. Além disso, em alguns codecs, um segmento de fatia é definido como um número inteiro de CTUs solicitadas consecutivamente na varredura da seção justaposta e contidas em uma única unidade de NAL. Uma varredura da seção justaposta é uma ordem sequencial específica de CTBs que particionam uma imagem em que os CTBs são solicitados consecutivamente em varredura de rastreamento de CTB em uma seção justaposta, enquanto as seções justapostas em uma imagem são solicitadas consecutivamente em uma varredura de rastreamento das seções justapostas da imagem. Uma seção justaposta é uma região retangular de CTBs dentro de uma coluna de seção justaposta específica e uma linha de seção justaposta específica em uma imagem.
[0067]A intra predição realiza predição de bloco de imagem usando as amostras de imagem reconstruídas espacialmente vizinhas do bloco. Um exemplo típico da intra predição para um bloco de imagem de 16 x 16 é mostrado na Figura 2. Com a intra predição, o bloco de imagem 16 x 16 (no quadrado escuro delineado) é previsto pelas amostras reconstruídas vizinhas acima e à esquerda (amostras de referência) ao longo de uma direção de predição selecionada (como indicado pela seta branca). Na Figura 2, um quadrado de bloco contém um bloco 50 de 16 x 16. Na Figura 2, o bloco 50 é previsto pelas amostras reconstruídas vizinhas acima e à esquerda 52, 54 (isto é, amostras de referência) ao longo de uma direção de predição selecionada. Na Figura 2, as amostras fora da caixa preta são as amostras de referência. A seta branca na Figura 2 indica a direção da predição selecionada.
[0068]A Figura 3 ilustra exemplo de modos de intra predição. Em alguns exemplos, a intra predição de um bloco luma inclui 35 modos, incluindo o modo planar, modo DC e 33 modos angulares. Os 35 modos da intra predição são indexados como mostrado na tabela abaixo. Tabela 1 — Especificação de modo de intra predição e nomes associados Modo de intra Nome associado predição 0 INTRA PLANAR 1 INTRA DC
2.,34 INTRA_ANGULAR2..INTRA_ANGULAR34
[0069]A Figura 4 é um diagrama conceitual que ilustra um exemplo de modo planar. Para o modo Planar, que normalmente é o modo de intra predição mais frequentemente usado, a amostra de predição é gerada como mostrado na Figura 4. Para realizar a predição planar para um bloco N x N, para cada amostra p, localizada em (x, y), o valor da predição pode ser calculado aplicando um filtro bilinear a quatro amostras reconstruídas vizinhas específicas, isto é, amostras de referência. As quatro amostras de referência incluem a amostra reconstruída no canto superior direito TR, a amostra reconstruída no canto inferior esquerdo e as duas amostras reconstruídas localizadas na mesma coluna (rx,-1) e linha (r-1,y) da amostra atual. O modo planar pode ser formulado como abaixo: onde e
[0070]Para modo DC, o bloco preditor é preenchido com o valor médio das amostras reconstruídas vizinhas. Geralmente, tanto os modos Planar quanto DC são aplicados para modelar regiões de imagem com variações constantes e constantes.
[0071]Para modos de intra predição angulares em HEVC, que incluem 33 diferentes direções de predição, o processo de intra predição pode ser descrito como a seguir. Para cada determinado modo de intra predição angular, a direção de intra predição pode ser identificada consequentemente; por exemplo, de acordo com a Figura 3, intra modo 18 corresponde a uma direção de predição horizontal pura, e intra modo 26 corresponde a uma direção de predição vertical pura. Portanto, no exemplo da Figura 3, intra modo 18 corresponde ao modo horizontal e intra modo 26 corresponde ao modo vertical.
[0072]A Figura 5 é um diagrama conceitual que ilustra um exemplo de um modo de intra predição angular. Dada uma direção de intra predição específica, para cada amostra do bloco preditor, sua coordenada (x, y) é primeiro projetada para a linha/coluna de amostras reconstruídas vizinhas ao longo da direção de predição, como mostrado em um exemplo na Figura 5. Suponha que (x,y) é projetado para a posição parcial uma entre duas amostras reconstruídas vizinhas L e R; em seguida, o valor de predição para (x, y) pode ser calculado usando um filtro de interpolação bi-linear de duas derivações, formulado como a seguir: Por exemplo, como mostrado no exemplo da Figura 5, coordenadas (x,y) de uma amostra 70 de um bloco preditor 72 são projetadas ao longo de um direção de intra predição específica 74. Para evitar operações de ponto flutuante, em HEVC, o cálculo acima é realmente aproximado usando número inteiro aritmético como: onde um é um número inteiro igual a 32* α.
[0073]Em alguns exemplos, antes de intra predição, as amostras de referência vizinhas são filtradas usando um filtro bilinear de 2 derivações ou 3 derivações (1,2,1)/4, como conhecido como suavização intra referência, ou suavização intra dependente de modo (MDIS). Ao executar a intra predição, dado o índice de modo de intra predição (predModeIntra) e tamanho do bloco (nTbS), é decidido se um processo de suavização de referência é realizado e qual filtro suave é usado. O índice de modo de intra predição é um índice que indica um modo de intra predição. O texto abaixo do padrão de HEVC descreve um processo de filtragem das amostras vizinhas.
8.4.4.2.3 Processo de filtragem de amostras vizinhas Entradas para esse processo são: as amostras vizinhas p[x][y], com x = —1, y = —
1..nTbS * 2 — 1 e x = 0..nTbS * 2 — 1, y = —1, uma variável nTbS que especifica o tamanho do bloco de predição. Saídas desse processo são as amostras filtradas pF[x][y], com x = —1, y = —1..nTbS * 2 — 1 e x = 0..nTbS * 2 — 1, y = —1. A variável filterFlag é derivada como a seguir: - Se uma ou mais das seguintes condições forem verdadeiras, filterFlag é definido igual a 0: - predModeIntra é igual a INTRA DC. - nTbS é igual 4. - De outro modo, o seguinte aplica: - A variável minDistVerHor é definida igual a Min(Abs(predModeIntra — 26), Abs(predModeIntra — 10)). - A variável intraHorVerDistThres[nTbS] é especificada na tabela 8 - 3. - A variável filterFlag é derivada como a seguir:
- Se minDistVerHor for maior do que intraHorVerDistThres[nTbS], filterFlag é definido igual a
1. - De outro modo, filterFlag é definido igual a
0. Tabela 8 - 3 — Especificação de intraHorVerDistThres[nTbS] para vários tamanhos do bloco de predição nTbS = 8 nTbS = nTbS = 32 16 intraHorVerDistThres[nTbS] 7 1 0 Quando filterFlag é igual a 1, o seguinte aplica: - A variável biIntFlag é derivada como a seguir: -Se todas as seguintes condições forem verdadeiras, biIntFlag é definido igual a 1: — Strong_intra_smoothing_enabled_flag é igual a 1 De outro modo, biIntFlag é definido igual a 0. A filtragem é realizada como a seguir: Se biIntFlag for igual a 1, os valores da amostra filtrada pF[x][y] com x = —1, y = —1.,63 e x = 0.,63, y = — 1 são derivados como a seguir:
para para De outro modo (biIntFlag é igual a 0), os valores da amostra filtrada pF[x][y] com x = —1, y = —1..nTbS * 2 — 1 e x = 0..nTbS * 2 — 1, y = —1 são derivados como a seguir: para para
[0074]Panusopone et al., “Predição Planar de Peso Desigual e PDPC Restrito”, Equipe Conjunta de Exploração de Vídeo (JVET) da ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29WG 11, 5ª Reunião, Genebra, CH, de 12 a 20 de janeiro de 2017, o documento JVET-E0068 descreveu um modo plano de peso desigual (UWP). No modo UWP, para um bloco W x H (largura x altura), a predição planar é realizada da maneira da Figura 4 com: onde R e B são calculados como mostrado abaixo,
onde BR é calculado como mostrado abaixo, e onde pxy é um valor da amostra prevista.
[0075] Embora a redundância de complemento cruzado seja significativamente reduzida no espaço de cores YCbCr, ainda existe correlação entre os componentes de três cores. Várias técnicas foram estudadas para melhorar o desempenho da codificação de vídeo, reduzindo ainda mais a correlação entre os três componentes de cores. Por exemplo, na codificação de vídeo em cromatografia 4:2:0, uma técnica chamada modo de predição de Modelo Linear (LM) foi estudada durante o desenvolvimento do padrão de HEVC. Na amostragem 4:2:0, cada uma das duas matrizes de croma tem metade da altura e metade da largura da matriz luma. Com o modo de predição LM, as amostras de croma são previstas com base em amostras de luma reconstruídas do mesmo bloco, usando um modelo linear da seguinte maneira: onde predc(i, j) representa uma predição de amostras de croma em um bloco atual e recL(i, j) representa uma amostras de luma reconstruídas com baixa amostragem do bloco atual. Parâmetros α e β são derivados de amostras reconstruídas causais em torno do bloco atual. Amostras causais de um bloco são amostras que ocorrem antes do bloco em um ordem de decodificação. Se o tamanho do bloco de croma for denotado por N x N, em seguida ambos i e j estão dentro da faixa [0, N).
[0076]Parâmetros α e β na equação (5) são derivados minimizando-se o erro de regressão entre as amostras de croma e luma reconstruídas vizinhas em torno do bloco atual.
Os parâmetros α e β são resolvidos como a seguir:
[0077]Nas equações acima, x 1 é uma amostra de referência de luma reconstruída com amostragem baixa, onde o formato de cor não é 4:4:4 (ou seja, o formato de cor é aquele em que uma amostra de croma corresponde a várias amostras de luma), y 1 é reconstruída amostras de referência de croma sem amostragem descendente e I é o número de amostras de referência. Em outras palavras, o codificador de vídeo pode amostrar para baixo as amostras de referência de luma reconstruídas com base no formato de cor que não são 4:4:4, mas evita amostrar as amostras de referência de luma reconstruídas com base no formato de cor que é 4:4:4) Para um bloco de cromatografia N x N alvo, quando as amostras causais esquerda e acima estão disponíveis, o número total de amostras envolvidas I é igual a 2N. Quando apenas amostras causais à esquerda ou acima estão disponíveis, o número total de amostras envolvidas I é igual a N. Aqui, N é sempre igual a 2 m (em que m pode ser diferente para diferentes tamanhos de CU). Portanto, para reduzir a complexidade, as operações de deslocamento podem ser usadas para implementar as operações de divisão nas equações (3) e (4). Uma amostra de referência pode ser considerada indisponível quando um valor verdadeiro da amostra de referência não está disponível para uso por um decodificador de vídeo (por exemplo, quando a amostra de referência está fora de uma fatia, imagem ou limite de ladrilho em relação ao bloco de predição).
[0078]Publicação de Patente dos EUA Nº 2017- 0094285-A1 descreve um conjunto de equações parametrizadas que definem como combinar previsões com base em valores de referência filtrados e não filtrados e na posição do pixel previsto. Esse esquema é chamado de combinação de predição dependente de posição (PDPC) e foi adotado no JEM 7. A. Said et al., “Combinação intra-predição dependente de posição”, Genebra, Suíça, contribuição ITU-T SG16, contribuição COM16-C1046, Outubro de 2015, é um documento de envio padrão referente ao assunto adotado. No JEM 7, o PDPC é aplicado apenas no modo Planar.
[0079]A Figura 6A é um diagrama conceitual que ilustra um exemplo de dados disponíveis para PDPC para um bloco de 4 x 4 pixel. A Figura 6B é um diagrama conceitual que ilustra um exemplo de dados disponíveis para PDPC para um bloco de 4 x 4 pixel. Com PDPC, dados quaisquer dois conjuntos de predições de pixel Pr [x, y] e qs[x, y], calculados usando apenas as referências não filtradas e filtradas (ou suavizadas) 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, do qual o valor depende em uma posição de pixel. Na Figura 6A e Figura 6B, referências (isto é, amostras de referência) são mostradas como quadrados sombreados e as amostras de predição são mostradas como quadrados brancos.
[0080]Uma implementação prática do PDPC usa a fórmula: onde, são e predefinidos parâmetros que controlam a rapidez com que os pesos das amostras de referência esquerda, superior esquerda e superior não filtrada decaem na direção horizontal e vertical, N é o tamanho do bloco, qs(HEVC)[x, y] são valores de predição calculados de acordo com a padrão de HEVC, para o modo específico, usando referências filtradas e:
é um fator de normalização, definido pelos parâmetros. Filtros de referência, por exemplo, 3 derivações {1,2,1}, 5 derivações {1,4,6,4,1} ou 7 derivações {1,6,15,20,15,6,1}, são aplicados em referências não filtradas para gerar as referências filtradas. Nesta divulgação, a notação {t1, t2 , ... tc, ..., t n} para derivações de um filtro indica que um valor filtrado de uma amostra atual em um conjunto de amostras é igual a uma soma ponderada de amostras antes e após a amostra atual, onde o peso aplicado à amostra atual é o peso central em {t 1, t2, ... tc, ..., tn} (ou seja, tc) e pesos t1 ...tc-1 são pesos aplicados às amostras antes da amostra atual e tc+1...tn são pesos aplicados às amostras após a amostra atual. Em alguns exemplos, filtros passa-baixo podem ser usados como filtros de referência. Um filtro passa-baixo típico pode ter apenas coeficientes de filtro positivos ou podem estar presentes coeficientes de filtro negativos, mas o valor absoluto é relativamente pequeno ou a dose é zero.
[0081]Alternativamente, o PDPC pode ser formulado como um filtro de 4 derivações como abaixo: onde são as ponderações aplicadas nas amostras de referência não filtradas superior, esquerda e superior esquerda.
[0082]Existem várias deficiências no JEM relacionadas ao modo PDPC. Por exemplo, no JEM 7, o PDPC é aplicado apenas ao modo planar, o que limita o ganho de codificação contribuído pelo PDPC. No JEM 7, há um filtro de limite aplicado ao modo DC e um filtro de borda aplicado aos modos horizontal e vertical. O filtro de limite aplicado no modo DC é um filtro para o preditor através dos limites do bloco, à esquerda e acima. O filtro de borda horizontal/vertical é um filtro que compensa a diferença entre o pixel de referência horizontal e vertical e o pixel do canto superior esquerdo. Essas ferramentas de codificação refinam a intra predição de uma maneira que se sobrepõe ao PDPC em termos de projeto de algoritmo. A existência de várias ferramentas de codificação que se sobrepõem não é desejada em termos de um projeto limpo e harmonizado de intra predição. Os parâmetros no PDPC são derivados com base no treinamento, que pode ser subótimo em termos de ganho de codificação para diferentes seqüências. O modo UWP requer operações de divisão, que não são preferidas para implementação prática. Embora a UWP possa ser aproximada alternativamente usando uma tabela de consulta (LUT) para evitar divisões, isso requer memória adicional para armazenar a LUT. Para resolver os problemas mencionados acima, esta divulgação propõe as seguintes técnicas.
[0083]Essa divulgação descreve técnicas simplificadas de PDPC que podem abordar uma ou mais das deficiências descritas acima. A Figura 7A é um diagrama de bloco que ilustra um exemplo de usando um modo planar/DC com uma ponderação aplicada para gerar uma amostra de predição (0,0), de acordo com uma técnica desta divulgação. A Figura 7B é um diagrama de bloco que ilustra um exemplo usando um modo planar/DC com uma ponderação aplicada para gerar uma amostra de predição (1,0), de acordo com uma técnica desta divulgação. A Figura 7C é um diagrama de bloco que ilustra um exemplo usando um modo planar/DC com uma ponderação aplicada para gerar uma amostra de predição (0,1), de acordo com uma técnica desta divulgação. A Figura 7D é um diagrama de bloco que ilustra um exemplo usando um modo planar/DC com uma ponderação aplicada para gerar uma amostra de predição (1, 1), de acordo com uma técnica desta divulgação. As técnicas simplificadas de PDPC divulgadas aqui são aplicadas tanto para componentes de luminância (Y) e crominância (Cb, Cr), apenas componentes de luminância, ou apenas componentes de crominância.
[0084]De acordo com uma técnica desta divulgação, um codificador de vídeo pode calcular uma amostra de predição em coordenadas (x, y) como a seguir usando a equação (9), abaixo.
Na equação (9) e em outras partes nesta divulgação, exemplos de valores de deslocamento e rightShift podem incluir offset = 32 e rightShift = 6. Na Equação (9),
qs(HEVC)[x, y] denota um valor de uma amostra de predição nas coordenadas (x, y) determinadas de acordo com o processo de intra predição especificada por HEVC. Em alguns exemplos, o deslocamento pode ser igual a 0, 0,5, ou um outro valor.
[0085]Em um outro exemplo, o codificador de vídeo pode calcular um valor de uma amostra de predição nas coordenadas (x, y) de acordo com a equação (10), abaixo.
Na Equação (10), gs[x, y] denota um valor de uma amostra de predição nas coordenadas (x, y) determinadas de acordo com um processo de intra predição, que pode ser o processo de intra predição especificada por HEVC ou um outro processo de intra predição.
[0086]Em um outro exemplo, o codificador de vídeo pode calcular um valor de uma amostra de predição nas coordenadas (x, y) de acordo com a equação (11), abaixo.
Equação (11) mostra um exemplo de relação entre rightShift e o valor do qual wT, wL, e wTL são subtraídos para determinar o quarto peso. As equações usadas nas seções intituladas “Especificação do modo de intra predição PLANAR”, “Especificação do modo de intra predição INTRA_DC”, “Especificação do modo de intra predição INTRA_HOR” e “Especificação do modo de intra predição INTRA_VER” abaixo usam um versão da equação (11) em que rightShift é igual a 6 e, consequentemente, o valor do qual wT, wL, e wTL são subtraídos para determinar o quarto peso é igual a 64.
[0087]Para evitar uma tabela de LUT para os pesos, como ocorreu no projeto original do PDPC, na versão simplificada, um codificador de vídeo implementado de acordo com as técnicas desta divulgação pode selecionar os pesos iniciais wL, wT para amostras de referência esquerda e superior (por exemplo, 32, 32, como mostrado na Figura 7A), derivar o peso wTL para as amostras de referência superior esquerda como -(wL » 4)- (wT >> 4) (por exemplo, -4 como mostrado na Figura 7A) e, em seguida, calcular a de predição PDPC para a primeira amostra no bloco aplicando-se a equação (9), (10), ou (11).
[0088]Passando para a próxima amostra no bloco, os valores iniciais dos pesos wL, wT, wTL são atualizados com base na distância entre a amostra atual e os limites do bloco. Por exemplo, a atualização pode ser apenas uma operação de desvio, como “»1” ou “»2”, isto é, um peso é dividido por 2 ou 4 (por exemplo, passando de (0, 0) para (1, 0) como mostrado na Figura 7A e Figura 7B, wL é dividido por 4). Passando para a próxima amostra no bloco, os pesos são atualizados novamente e assim por diante. Nessa abordagem, não há necessidade de uma LUT com pesos, pois todos os pesos são derivados dos pesos iniciais.
[0089]Assim, de acordo com uma técnica desta divulgação, o codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) pode determinar um valor inicial de um primeiro peso (wL)
e pode determinar um valor inicial de um segundo peso (wT). Além disso, para cada respectiva amostra em um conjunto de amostras no bloco preditor, o codificador de vídeo pode determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra.
O codificador de vídeo também pode determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra.
Além disso, o codificador de vídeo pode determinar um valor de um terceiro peso (wTL) para a respectiva amostra.
O codificador de vídeo também pode determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra.
Por exemplo, o codificador de vídeo pode determinar o valor do quarto peso para a respectiva amostra como (64 — wL — wT — wTL) ou de acordo com qualquer um dos outros exemplos fornecidos nesta divulgação.
Adicionalmente, o codificador de vídeo pode determinar um valor primário (qs[x, y]) para a respectiva amostra de acordo com o modo de intra predição.
Em seguida, o codificador de vídeo pode determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de:
(i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento. Em alguns exemplos, cada um dos valores do primeiro, segundo, terceiro, e quarto pesos é um valor não zero.
[0090]Em alguns exemplos, a atualização de wL, wT e wTL pode não ocorrer após derivar uma predição de PDPC para cada amostra. Ou seja, em alguns exemplos, o codificador de vídeo não determina valores diferentes do primeiro, segundo e terceiro pesos para cada amostra separada do bloco preditivo. Por exemplo, a atualização pode ocorrer após N amostras processadas (por exemplo, quando N = 2, a atualização ocorre após cada segunda amostra). Em outro exemplo, o codificador de vídeo atualiza wL para cada outra amostra ao longo da direção horizontal e wT é atualizado para cada outra amostra ao longo da direção vertical. Adicionalmente, todos os pesos envolvidos (por exemplo, o primeiro, segundo, terceiro, e quarto pesos) podem ter diferentes processos de atualização e dependências da distância. Por exemplo, o codificador de vídeo pode atualizar o primeiro, segundo, terceiro, e quarto pesos depois de processar diferentes números de amostras; e a quantidade pela qual o codificador de vídeo muda o primeiro, segundo, terceiro, e quarto pesos de acordo com a distância de limites do bloco preditor pode ser diferente.
[0091]Em alguns exemplos, como a atualização é realizadas e depois de quantas amostras, pode depender do tamanho do bloco, intra modo, transformação usada, e assim por diante. Por exemplo, o codificador de vídeo pode atualizar um peso (por exemplo, o primeiro, segundo, terceiro, e/ou quarto peso) depois de processar cada amostra de um bloco preditor se um tamanho do bloco preditor for menor do que um tamanho de limite de W x L (por exemplo, 32 x 32, 16 x 16, etc.) e pode atualizar o peso depois de processar duas amostras do bloco preditor se o tamanho do bloco preditor for maior do que o tamanho de limite de W x L. Em um outro exemplo, o codificador de vídeo pode atualizar um peso (por exemplo, o primeiro, segundo, terceiro, e/ou quarto peso) depois de processar cada amostra de um bloco preditor se o modo de intra predição do bloco preditor for um modo de intra predição direcional e pode atualizar o peso depois de processar duas amostras do bloco preditor se o modo de intra predição do bloco preditor for o modo Planar ou DC.
[0092]Em um exemplo de implementação, uma implementação dupla das técnicas simplificadas de PDPC desta divulgação pode ser possível e ambas as implementações podem fornecer os resultados idênticos. Em uma implementação, as técnicas simplificadas de PDPC desta divulgação podem ser consideradas como um segundo estágio depois da intra predição convencional é derivado. Isto é, as técnicas simplificadas de PDPC desta divulgação podem ser observadas como um pós processamento de predição. Um tal método pode fornecer uma implementação uniforme para todos os intra modos, mas pode requerer um estágio adicional na intra predição. Em uma outra implementação, as técnicas simplificadas de PDPC desta divulgação podem ser implementadas como um modo de intra predição modificado, isto é, um outro modo de intra predição diferente de intra predição convencional. Em um tal método, a modificação pode ser modo de intra predição específico, mas pode não requerer um estágio adicional na intra predição. As técnicas simplificadas de PDPC desta divulgação podem ter essa dualidade na implementação, que pode fornecer uma vantagem adicional e um implementador pode escolher a abordagem mais adequada ao projeto do codec.
[0093]Para intra predição, para cada intra amostra de predição (por exemplo, para cada respectiva amostra do bloco preditor ou um subconjunto do mesmo), depois da intra amostra de predição ser gerada (isto é, depois de um valor primário para a respectiva amostra ser determinado), o valor de amostra de predição pode ser ainda mais ajustado por uma soma ponderada de uma amostra de referência esquerda, uma amostra de referência superior, uma amostra de referência esquerda superior, e seu valor de amostra de predição original (isto é, o valor primário para a respectiva amostra). A ponderação da amostra de referência esquerda é denotada wL, a ponderação da amostra de referência superior é denotado wT, e a ponderação da amostra de referência esquerda superior é denotada wTL. Em alguns exemplos, um codificador de vídeo pode derivar wTL por uma soma ponderada de wL e wT (por exemplo, wTL = a•wL + b.wT). Assim, em alguns tais exemplos, o codificador de vídeo pode determinar um valor do terceiro peso (wTL) para uma amostra do bloco preditor como uma soma de um primeiro parâmetro (a) multiplicado pelo valor do primeiro peso (wL) para a respectiva amostra mais um segundo parâmetro (b) multiplicado pelo valor do segundo peso (wT) para a respectiva amostra. Em alguns exemplos, wL e wT são inicializado como 0,5. Em alguns exemplos, cada um do primeiro parâmetro e do segundo parâmetro está entre O e 1, exclusive.
[0094]Os valores do primeiro parâmetro (a) e o segundo parâmetro (b) podem ser determinados em uma ou mais de várias maneiras. Por exemplo, os valores de a e b podem ser dependente do modo. Por exemplo, em um exemplo onde os valores de a e b são dependentes do modo, os valores de a e b podem ser dependentes em diferentes direções intra predição. Assim, neste exemplo, diferentes valores de a e b podem ser aplicados para diferentes direções intra predição. Por exemplo, para modos de intra predição não direcionais (por exemplo, modo planar e modo
DC), o primeiro parâmetro (a) é igual ao segundo parâmetro (b) (isto é, a = b). Em um outro exemplo onde os valores de a e b são dependentes do modo, uma tabela de pesquisa é predefinida, entrada na tabela de pesquisa é o índice de modo de intra predição, e saída da tabela de pesquisa é os valores de a e b. Em alguns exemplos, se predição vertical for usada, em seguida, mais preferência pode ser determinada para b, isto é b > a. Similar, para predição horizontal, a pode ser maior do que b.
[0095]Além disso, em outros exemplos onde os valores de a e b são dependentes do modo, para modos de intra predição direcionais (por exemplo, horizontal e vertical), o primeiro parâmetro (a) e o segundo parâmetro (b) são derivados com base na diferença de ângulo de intra predição ou na diferença de índice de modo intra em relação à direção de predição horizontal e vertical. Por exemplo, em um exemplo, para predição horizontal, a é igual a 0 e b é igual a 1; para predição vertical, a é igual a 1 e b é igual a 0. Neste exemplo, para ângulos de predição tipo vertical, a diferença do ângulo em relação à predição vertical é medida para calcular a e b. Além disso, neste exemplo, para ângulos de predição tipo horizontal, a diferença do ângulo em relação a predição horizontal é medida para calcular a e b.
[0096]Em um outro exemplo de como os valores do primeiro parâmetro (a) e o segundo parâmetro (b) podem ser determinados, a e b são dois valores constantes, independentemente da posição dentro do bloco preditor. Neste exemplo, valores típicos de a e b incluem: 1/16, 1 1 1/32, 1/8, /4, /2, 1 e 0. Em um outro exemplo, a e b são sinalizados a partir do codificador de vídeo 20 para decodificador de vídeo 30 em um nível de sequência, um nível de imagem, um nível de fatia, um nível de bloco, ou um outro nível.
[0097]Em alguns exemplos, um codificador de vídeo pode derivar o valor do primeiro peso (wT) com base em uma coordenada vertical dimensionada y da amostra de predição, um tamanho do bloco, e um modo de intra predição. Por exemplo, y pode ser dividido por 2, 4, ou 8 para derivar o valor do primeiro peso (wT). Como peso é alterado pode depender do tamanho do bloco (por exemplo, o divisor da coordenada). Para pequenos blocos, a queda do peso pode ser mais rápida do que para os blocos maiores. O codificador de vídeo pode derivar o valor do segundo peso (wL) com base em uma coordenada horizontal dimensionada x da amostra de predição, o tamanho do bloco e o modo de intra predição. Neste exemplo, o tamanho do bloco pode se referir a um de: min(log2(largura), log2(altura)), max(log2(largura), log2(altura)), (10g2(largura)+10g2(altura))/2, log2(largura) + log2(altura), log2(largura), ou log2(altura). Neste exemplo, para modos de intra predição não direcionais como modos Planar e DC, para a mesma coordenada (x, y), os mesmos valores de wT e wL podem ser usados. Em outras palavras, neste exemplo, wT = wL = m para cada amostra de predição do bloco preditor, mas pode ser diferentes valores de m para diferentes amostras de predição do bloco preditor. Além disso, o dimensionamento na coordenada vertical e horizontal x e y pode ser predefinido. Em alguns exemplos, os valores típicos do valor do dimensionamento incluem 2, 4 e 8.
[0098] Em um exemplo, as técnicas divulgadas aqui (ponderações acima das amostras de referência esquerda, superior e superior esquerda) são aplicadas para Modo planar, modo DC, modo horizontal e modo vertical.
[0099]Em alguns exemplos, o codificador de vídeo pode aplicar as técnicas simplificadas de PDPC desta divulgação apenas quando condições específicas se aplicam. Por exemplo, quando as condições não se aplicam, o codificador de vídeo pode determinar valores secundários de amostras em um bloco preditor usando intra predição convencional. Em um exemplo, o codificador de vídeo pode aplicar as técnicas simplificadas de PDPC desta divulgação para modo LM ou modo LM aprimorado (componente Croma), conforme descrito em Zhang et al., “Intra-predição de modelo linear aprimorado de componente cruzado”, “Exploração de vídeo em conjunto” Equipe (JVET) da ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 4º Encontro, Chengdu, CN, 15 a 21 de outubro de 2016, documento nº JVET-D0110. Neste exemplo, o codificador de vídeo não aplica as técnicas simplificadas de PDPC desta divulgação para um bloco preditor de um CU quando modo LM ou modo LM aprimorado não é aplicado na CU. Em alguns exemplos, as técnicas simplificadas de PDPC desta divulgação são aplicadas para certos tamanhos do bloco,
por exemplo, para tamanho de área do bloco maior do que um limite (por exemplo, blocos de predição maiores (ou menor) do que 8 x 8, 16 x 16, 32 x 32, 16 x 8, etc.). Em alguns exemplos, as técnicas simplificadas de PDPC desta divulgação são aplicadas para certos tipos de imagens ou fatias. Por exemplo, em um exemplo, o codificador de vídeo apenas aplica as técnicas simplificadas de PDPC desta divulgação em I-fatias. Além disso, em alguns exemplos, as técnicas simplificadas de PDPC desta divulgação não são aplicadas quando algumas amostras vizinhas não estão disponíveis. Por exemplo, em um exemplo, o codificador de vídeo não aplica as técnicas simplificadas de PDPC desta divulgação se as amostras vizinhas superiores não estiverem disponíveis.
[0100]Além disso, em um outro exemplo, as técnicas simplificadas de PDPC desta divulgação são aplicadas apenas a posições de amostra de predição selecionadas dentro de um bloco de predição, em vez de aplicar a todo o bloco de predição. Em alguns exemplos, as posições de amostra de predição selecionadas estão em um número predefinido de colunas, começando na esquerda e/ou em um número predefinido de linhas, começando na parte superior. Por exemplo, um codificador de vídeo pode aplicar as técnicas simplificadas de PDPC desta divulgação para linhas ou colunas numeradas pares do bloco de predição, mas não para linhas ou colunas de número ímpar do bloco de predição. Em alguns exemplos, o número de colunas/linhas de amostras de predição às quais as técnicas simplificadas de PDPC desta divulgação são aplicadas pode depender de informações codificadas, incluindo, entre outras, tamanho do bloco, altura e/ou largura do bloco e/ou intra modo de predição. Por exemplo, o codificador de vídeo pode aplicar as técnicas de PDPC simplificadas desta divulgação a cada linha do bloco de predição se o tamanho do bloco de predição for menor que um tamanho limite (por exemplo, 16 x 16, 8 x 8, etc.) e pode aplicar as Técnicas de PDPC simplificadas desta divulgação para todas as outras linhas/colunas do bloco de predição se o tamanho do bloco de predição for maior ou igual ao tamanho do limite.
[0101]As operações de recorte nas amostras de predição após as operações de ponderação podem ser removidas. O recorte pode ser usado para garantir que o valor do preditor esteja dentro de um determinado intervalo, geralmente relacionado à profundidade do bit de entrada. Se, após derivar o preditor, o pixel estiver excedendo o alcance, o codificador de vídeo poderá cortar seu valor para o valor mínimo ou máximo do alcance. No entanto, de acordo com as técnicas desta divulgação, essas operações de corte em amostras de predição podem ser desnecessárias.
[0102]As amostras de referência esquerda, superior e superior esquerda usadas para ajustar a amostra de predição podem ser amostras de referência filtradas/suavizadas ou amostras de referência não filtradas, e a seleção depende do modo intra-predição. Em um exemplo, para as direções intra predição CC, Horizontal e Vertical, um codificador de vídeo pode usar as amostras de referência não filtradas superior, esquerda e superior esquerda no cálculo da soma ponderada; para o modo Planar, amostras de referência filtradas/suavizadas à esquerda, de referência superior e superior esquerda são usadas no cálculo.
[0103]Como descrito acima, em versões anteriores de PDPC, um codificador de vídeo pode aplicar filtros de 5 derivações ou 7 derivações às amostras de referência. Entretanto, de acordo com alguns exemplos desta divulgação, em vez de aplicar um filtro de derivação mais longo (por exemplo, um filtro de 5 derivações ou um de 7 derivações) às amostras de referência, o codificador de vídeo pode aplicar apenas um filtro de derivação curto (por exemplo, um filtro de 3 derivações) e o filtro de derivação mais longo pode ser substituído por vários filtros de derivação curtos em cascata em uma ordem predefinida. Essa divulgação pode usar a frase “amostras de referência suavizadas” para se referir às amostras resultando da aplicação de um filtro, ou cascata de filtros, a um conjunto de amostras de referência. Diferentes conjuntos de amostras de referência suavizadas podem ser aplicados em intra predição, por exemplo, PDPC. Em outras palavras, o codificador de vídeo pode gerar diferentes conjuntos de amostras de referência suavizadas quando realizar as técnicas simplificadas de PDPC desta divulgação. Em alguns exemplos, o codificador de vídeo pode gerar os diferentes conjuntos de amostras de referência suavizadas aplicando-se diferentes cascatas de filtros de derivação curtos. Diferentes cascatas de filtros de derivação curtos podem ter diferentes números de filtros de derivação curtos e/ou diferentes ordens de filtros de derivação curtos em cascata. O codificador de vídeo pode selecionar um conjunto de amostras de referência suavizadas em que realizar as técnicas simplificadas de PDPC desta divulgação. A seleção de qual conjunto de amostras de referência suavizadas pode depender do tamanho do bloco, por exemplo, tamanho de área do bloco, bloco altura e/ou largura, e/ou modo de intra predição. Por exemplo, o codificador de vídeo pode selecionar um primeiro conjunto de amostras de referência suavizadas (por exemplo, um conjunto de amostras de referência gerado com um primeiro filtro ou conjunto de filtros) quando um tamanho do bloco de predição é menor do que um tamanho de limite (por exemplo, 16 x 16, 8 x 8, etc.) e pode selecionar um segundo conjunto de amostras de referência suavizadas quando o tamanho do bloco de predição é maior do que ou igual ao tamanho de limite.
[0104]Em um exemplo onde o codificador de vídeo aplica uma cascata de filtros de derivação curtos às amostras de referência, a cascata de filtros de derivação curtos inclui um filtro de 3 derivações {2, 4, 2} e um filtro de 3 derivações {4, 0, 4}. Neste exemplo, o codificador de vídeo gera um primeiro conjunto de amostras de referência suavizadas usando o filtro de 3 derivações {2, 4, 2} e gera um segundo conjunto de amostras de referência suavizadas aplicando-se ainda o filtro de 3 derivações {4, 0, 4} na parte superior do primeiro conjunto de amostras de referência suavizadas. Em outras palavras, o codificador de vídeo pode gerar o segundo conjunto de amostras de referência suavizadas em cascata na filtragem usando o filtro de 3 derivações {2, 4, 2} e o filtro de 3 derivações {4, 0, 4}. Em um outro exemplo, os dois filtros de derivação curtos incluem um filtro {2, 4, 2} e um filtro {3, 2, 3}, e o mesmo processo descrito acima pode ser aplicado. Em um outro exemplo, em vez de colocar em cascata dois filtros de 3 derivações, o codificador de vídeo pode diretamente aplicar um filtro de 5 derivações {1, 2, 2, 2, 1} às amostras de referência.
[0105]Em alguns exemplos, o codificador de vídeo aplica a filtragem de amostra de referência com qualquer um dos modos de intra predição. Em outros exemplos, o codificador de vídeo aplica a filtragem de amostra de referência para alguns modos de intra predição, mas não outros. Por exemplo, em um exemplo, ao aplicar as técnicas simplificadas de PDPC desta divulgação, o codificador de vídeo apenas aplica a filtragem de amostra de referência em modo de intra predição Planar, não nos modos de intra predição DC, horizontal, ou vertical.
[0106]Em alguns exemplos, o codificador de vídeo pode aplicar diferentes filtros (por exemplo, diferentes números de derivações de filtro) para as amostras de referência, e a seleção dos filtros pode depender do local de amostra de referência. Por exemplo, em um exemplo, o codificador de vídeo pode aplicar diferentes filtros a uma amostra de referência dependendo de se a amostra de referência está localizada em uma posição limite (inferior-esquerdo, superior-direito, superior- esquerdo) de todas as amostras de referência disponíveis ou não. Em alguns exemplos, que conjunto de filtros é aplicado é sinalizado pelo codificador de vídeo 20 para o decodificador de vídeo 30. Em tais exemplos, o codificador de vídeo 20 pode sinalizar o conjunto de filtros em vários locais dentro do fluxo de bits, como em um nível de sequência, um nível de imagem, um nível de fatia ou um nível de bloco.
[0107]No projeto de PDPC original, as versões não filtradas e filtradas das amostras de referência são usadas na derivação de predição. Entretanto, pode haver um outro filtro de suavização usado para intra referência de suavização, como intra suavização dependente do modo (MDIS) usado em HEVC. Para unificar ainda mais o processo de predição, os filtros de PDPC como o filtro de 3/5 derivações usado para gerar a versão filtrada (comprimento do filtro pode depender do tamanho do bloco e/ou intra direção) pode ser substituído nas técnicas simplificadas de PDPC desta divulgação para usar exatamente a mesma filtragem de suavização (MDIS, por exemplo) que pode ser aplicada para os modos não usam PDPC. Desta forma, pode não ser necessário de manter um processo de filtragem específico de PDPC e implementação de PDPC pode ser ainda mais simplificada.
[0108]A parte a seguir dessa divulgação descreve exemplo de texto de especificação de codec para implementar exemplo de técnicas desta divulgação. Algumas operações que refletem as técnicas desta divulgação são enfatizadas com indicadores “<highlight>... </highlight>“.
[0109]A seção a seguir de texto de especificação de codec intitulada “Processo de filtragem de amostras vizinhas” descreve um processo de filtragem para amostras de referência vizinhas usado para intra predição. Processo de filtragem das amostras vizinhas Entradas para esse processo são: - as amostras vizinhas p[x][y], com x = —1, y = —
1..nTbS * 2 — 1 e x = 0..nTbS * 2 — 1, y = —1, - uma variável nTbWidth e nTbHeight que especifica a largura e altura do bloco de transformação. - um filtro de 3 derivações f[3]. Saídas desse processo são as amostras filtradas pF[x][y], com x = —1, y = —1.. (nTbWidth+nTbHeight)— 1 e x = 0.. (nTbWidth+nTbHeight) — 1, y = —1. A variável filterFlag é derivada como a seguir: - Se uma ou mais das seguintes condições forem verdadeiras, filterFlag é definido igual a 0: - predModeIntra é igual a INTRA DC. - nTbS é igual 4. - De outro modo, o seguinte aplica: - A variável minDistVerHor é definida igual a - Min(Abs(predModeIntra — 26), Abs(predModeIntra — 10)). - A variável intraHorVerDistThres[nTbS] é especificada na tabela 8 - 3. A variável filterFlag é derivada como a seguir: - Se minDistVerHor for maior do que intraHorVerDistThres[nTbWidth], filterFlag é definido igual a 1. - De outro modo, filterFlag é definido igual a
0.
Tabela 8 - 3 — Especificação de intraHorVerDistThres[nTbWidth] para vários tamanhos do bloco de predição nTbWidth nTbWidth nTbWidth =8 =16 =32 intraHorVerDistThres[nTbS] 7 1 O
Quando filterFlag é igual a 1,0 seguinte aplica: - A variável biIntFlag é derivada como a seguir: - Se todas as seguintes condições forem verdadeiras, biIntFlag é definido igual a 1: - strong_intra_smoothing_enabled_flag é igual a 1 - nTbWidth é igual a 32
- De outro modo, biIntFlag é definido igual a 0. A filtragem é realizada como a seguir: - Se biIntFlag é igual a 1, os valores da amostra filtrada pF[x][y] com x = —1, y = —1.,63 e x = 0.,63, y = — 1 são derivados como a seguir:
para para - De outro modo (biIntFlag é igual a 0), os valores da amostra filtrada pF[x][y] com x = —1, y = —1.. (nTbWidth+nTbHeight)— 1 e x = 0.. (nTbWidth+nTbHeight) — 1, y = —1 são derivados como a seguir: para para
[0110]Como observado acima, um codificador de vídeo pode gerar vários conjuntos de amostras de referência suavizadas e, em seguida, selecionar um dos conjuntos de amostras de referência suavizadas para o uso nas técnicas simplificadas de PDPC desta divulgação. A seção a seguir de texto de especificação de codec intitulada “Geração de vários conjuntos de amostras de referência de intra predição” descreve um exemplo de maneira de gerar os vários conjuntos de amostras de referência suavizadas. Geração de vários conjuntos de amostras de referência de intra predição Entradas para esse processo são: - as amostras vizinhas não filtradas unfiltRef [x][y], com x = —1, y = —1.. (nTbWidth+nTbHeight)— 1 e x =
0.. (nTbWidth+nTbHeight) — 1, y = —1, - uma variável nTbWidth e nTbHeight que especifica a largura e altura do bloco de predição. Saídas desse processo são as amostras filtradas filtRef [2][x][y], com x = —1, y = —1.. (nTbWidth+nTbHeight)— 1 e x = 0.. (nTbWidth+nTbHeight) — 1, y = —1.
1. O processo de filtragem de amostras vizinhas especificada na seção “Processo de filtragem de amostras vizinhas” é referido com a matriz de amostra unfiltRef e o tamanho do bloco de transformação nTbWidth e nTbHeight como entradas, e a saída é atribuída à matriz de amostra filtRef
[0][x][y].
2. O processo de filtragem de amostras vizinhas especificada na seção “Processo de filtragem de amostras vizinhas” é referido com a matriz de amostra filtRef
[0][x][y] e o tamanho do bloco de transformação nTbWidth e nTbHeight como entradas, e a saída é atribuída à matriz de amostra filtRef [1][x][y].
[0111]A seção a seguir de texto de especificação de codec intitulada “Especificação de modo de intra predição INTRA_PLANAR” descreve um processo para determinar amostras de um bloco preditor usando as técnicas simplificadas de PDPC desta divulgação com o modo de intra predição Planar. Especificação de modo de intra predição INTRA_PLANAR Entradas para esse processo são: - as amostras vizinhas não filtradas unfiltRef[x][y], com x = —1, y = —1..nTbHeight* 2 — 1 e x =
0.. nTbWidth* 2 — 1, y = —1, - as amostras filtradas vizinhas filtRef[x][y], com x = —1, y = —1.. - nTbHeight * 2 — 1 e x = 0.. nTbWidth * 2 — 1, y = —1, Saídas desse processo são as amostras previstas predSamples[x][y], com x, y = 0..nTbS — 1.<highlight> O valor de rightShift é derivado como (log2(nTbWidth) + 1 + log2(nTbHeight) + 1) » 2; </highlight> Para cada local de amostra (x, y), o valor da amostra de predição predSamples[x][y], com x, y = 0..nTbS — 1, é derivado como a seguir:
[0112]A seção a seguir de texto de especificação de codec intitulada “Especificação de modo de intra predição INTRA_DC” descreve um processo para determinar amostras de um bloco preditor usando as técnicas simplificadas de PDPC desta divulgação com o modo de intra predição DC.
Especificação de modo de intra predição INTRA_DC Entradas para esse processo são: - as amostras vizinhas não filtradas unfiltRef[x][y], com e
- uma variável nTbWidth e nTbHeight que especifica a largura e altura do bloco de predição.
Saídas desse processo são as amostras previstas predSamples[x][y], com x, y = 0..nTbS — 1. <highlight> O valor de rightShift é derivado como (log2(nTbWidth) + 1 + log2(nTbHeight) + 1) » 2; </highlight>
Os valores das amostras de predição predSamples[x][y], com x, y = 0..nTbS — 1, são derivados pelas seguintes etapas solicitadas:
1. Uma variável dcVal é derivada como a seguir: onde k = Log2(nTbS).
2. Para cada local de amostra (x, y), o valor da amostra de predição predSamples[x][y], com x, y = 0..nTbS — 1, é derivado como a seguir:
[0113]A seção a seguir de texto de especificação de codec intitulada “Especificação de modo de intra predição INTRA_HOR” descreve um processo para determinar amostras de um bloco preditor usando as técnicas simplificadas de PDPC desta divulgação com o modo de intra predição horizontal. Especificação de modo de intra predição INTRA_HOR Entradas para esse processo são: - as amostras vizinhas não filtradas unfiltRef[x][y], com x = —1, y = —1,0, ..., nTbHeight* 2 — 1, e x = 0, 1, nTbWidth* 2 — 1, y = —1, - uma variável nTbWidth e nTbHeight que especifica a largura e altura do bloco de predição.
Saídas desse processo são as amostras previstas predSamples[x][y], com x, y = 0..nTbS — 1. <highlight> O valor de rightShift é derivado como (log2(nTbWidth) + 1 + log2(nTbHeight) + 1) » 2; </highlight> Para cada local de amostra (x, y), o valor da amostra de predição predSamples[x][y], com x, y = 0..nTbS — 1, é derivado como a seguir:
[0114]A seção a seguir de texto de especificação de codec intitulada “Especificação de modo de intra predição INTRA_VER” descreve um processo para determinar amostras de um bloco preditor usando as técnicas simplificadas de PDPC desta divulgação com o modo de intra predição vertical. Especificação de modo de intra predição INTRA_VER Entradas para esse processo são: - as amostras vizinhas não filtradas unfiltRef[x][y], com x = —1, y = —1..nTbHeight* 2 — 1 e x = 0.. nTbWidth* 2 — 1, y = —1,
- uma variável nTbWidth e nTbHeight que especifica a largura e altura do bloco de predição. Saídas desse processo são as amostras previstas predSamples[x][y], com x, y = 0..nTbS — 1. <highlight> O valor de rightShift é derivado como (log2(nTbWidth) + 1 + log2(nTbHeight) + 1) » 2; </highlight> Para cada local de amostra (x, y), o valor da amostra de predição predSamples[x][y], com x, y = 0..nTbS — 1, é derivado como a seguir:
[0115]A Figura 8 é um diagrama de bloco que ilustra um exemplo de codificador de vídeo 20 que pode implementar as técnicas desta divulgação. A Figura 8 é fornecida para propósitos de explicação e não deve ser considerado limitativo das técnicas como amplamente exemplificado e descrito nesta divulgação. As técnicas desta divulgação podem ser aplicáveis para vários padrões ou métodos de codificação.
[0116]O conjunto de circuitos de processamento inclui codificador de vídeo 20, e codificador de vídeo 20 é configurado para realizar um ou mais do exemplo das técnicas descritas nesta divulgação. Por exemplo, o codificador de vídeo 20 inclui conjunto de circuitos integrados, e as várias unidades ilustradas na Figura 8 podem ser formadas como blocos de circuito de hardware que são interconectados com um barramento de circuito. Estes blocos de circuito de hardware podem ser blocos de circuito separados ou duas ou mais das unidades podem ser combinadas em um bloco de circuito de hardware comum. Os blocos de circuito de hardware podem ser formados como uma combinação de componentes eletrônicos que formam blocos de operação como unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), bem como blocos lógicos como AND, OR, NAND, NOR, XOR, XNOR, e outros blocos lógicos semelhantes.
[0117]Em alguns exemplos, uma ou mais das unidades ilustradas na Figura 8 são unidades de software em execução no conjunto de circuitos de processamento. Em tais exemplos, o código do objeto para essas unidades de software é armazenado na memória. Um sistema de operação pode fazer com que o codificador de vídeo 20 recupere o código do objeto e execute o código do objeto, que faz com que o codificador de vídeo 20 realize as operações para implementar as técnicas do exemplo. Em alguns exemplos, as unidades de software podem ser firmware que o codificador de vídeo 20 executa na inicialização. Consequentemente, o codificador de vídeo 20 é um componente estrutural tendo hardware que realiza as técnicas do exemplo ou tem software/firmware em execução no hardware para especializar o hardware para realizar as técnicas do exemplo.
[0118]No exemplo da Figura 8, o codificador de vídeo 20 inclui uma unidade de processamento de predição 100, memória de dados de vídeo 101, uma unidade de geração residual 102, uma unidade de processamento de transformação 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de processamento de transformação inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 114, um buffer de imagem decodificada 116, e uma unidade de codificação por entropia 118. A unidade de processamento de predição 100 inclui uma unidade de processamento de inter predição 120 e uma unidade de processamento de intra predição 126. A unidade de processamento de inter predição 120 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada).
[0119]A memória de dados de vídeo 101 pode ser configurada para armazenar dados de vídeo a serem codificados pelos componentes de codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 101 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O buffer de imagem decodificada 116 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para o uso em dados de vídeo codificados pelo codificador de vídeo 20, por exemplo, em modos intra- ou inter-codificação. A memória de dados de vídeo 101 e buffer de imagem decodificada 116 podem ser formados por qualquer uma de uma variedade de dispositivos de memória, como memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrona (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 101 e buffer de imagem decodificada 116 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 101 pode estar no chip com outros componentes de codificador de vídeo 20, ou fora do chip em relação a esses componentes. A memória de dados de vídeo 101 pode ser a mesma como ou parte da mídia de armazenamento 19 da Figura 1.
[0120]O codificador de vídeo 20 recebe dados de vídeo. O codificador de vídeo 20 pode codificar cada CTU em uma fatia de uma imagem dos dados de vídeo. Cada uma das CTUs pode ser associada com blocos de árvore de luma de tamanho igual (CTBs) e CTBs correspondentes da imagem. Como parte da codificação de uma CTU, unidade de processamento de predição 100 pode realizar o particionamento para dividir os CTBs da CTU em blocos progressivamente menores. Os blocos menores podem ser blocos de codificação de CUs. Por exemplo, a unidade de processamento de predição 100 pode particionar um CTB associado com uma CTU de acordo com uma estrutura de árvore.
[0121]O codificador de vídeo 20 pode codificar CUs de uma CTU para gerar representações codificadas das CUs (isto é, CUs codificadas). Como parte da codificação de uma CU, unidade de processamento de predição 100 pode particionar os blocos de codificação associados com a CU entre uma ou mais PUs da CU. Assim, cada PU pode ser associada com um bloco de predição de luma e blocos de predição de croma correspondentes. O codificador de vídeo
20 e o decodificador de vídeo 30 podem suportar PUs tendo vários tamanhos. Como indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação de luma da CU e o tamanho de uma PU pode se referir ao tamanho de um bloco de predição de luma da PU. Assumindo que o tamanho de uma CU específica é 2N x 2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2N x 2N ou N x N para intra predição, e tamanhos de PU simétricos de 2N x 2N, 2N x N, N x 2N, N x N, ou semelhante para inter predição. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2N x nU, 2N x nD, nL x 2N, e nR x 2N para inter predição.
[0122]A unidade de processamento de inter predição 120 pode gerar dados preditivos para uma PU. Como parte da geração dos dados preditivos para uma PU, unidade de processamento de inter predição 120 realiza inter predição na PU. Os dados preditivos para a PU podem incluir blocos preditores da PU e informações de movimento para a PU. A unidade de processamento de inter predição 120 pode realizar diferentes operações para uma PU de uma CU dependendo se a PU é em uma fatia I, uma fatia P, ou uma fatia B. Em uma fatia I, todas as PUs são intra preditivas. Consequentemente, se a PU estiver em uma fatia I, a unidade de processamento de inter predição 120 não realizará inter predição na PU. Assim, para blocos codificados no modo I, o bloco preditivo pode ser formado usando predição espacial de blocos vizinhos previamente codificados dentro do mesmo quadro. Se uma PU estiver em uma fatia P, a unidade de processamento de inter predição 120 pode usar inter predição unidirecional para gerar um bloco preditor da PU. Se uma PU estiver em uma fatia B, a unidade de processamento de inter predição 120 pode usar inter predição unidirecional ou bidirecional para gerar um bloco preditor da PU.
[0123]A unidade de processamento de intra predição 126 pode gerar dados preditivos para uma PU realizando-se intra predição na PU. Os dados preditivos para a PU podem incluir blocos preditores da PU e vários elementos de sintaxe. A unidade de processamento de intra predição 126 pode realizar intra predição em PUs em fatias I, fatias P, e fatias B.
[0124]Para realizar intra predição em uma PU, a unidade de processamento de intra predição 126 pode usar vários modos de intra predição para gerar vários conjuntos de dados preditivos para a PU. A unidade de processamento de intra predição 126 pode usar amostras reconstruídas de blocos de amostra de PUs vizinhas para gerar um bloco preditor para uma PU. As PUs vizinhas podem ser acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma ordem de codificação da esquerda para a direita, superior para inferior para PUs, CUs, e CTUs. A unidade de processamento de intra predição 126 pode usar vários números de modos de intra predição, por exemplo, 33 modos de intra predição direcionais. Em alguns exemplos, o número de modos de intra predição pode depender do tamanho da região associada com a PU. A unidade de processamento de intra predição 126 pode realizar técnicas de intra predição desta divulgação.
[0125]A unidade de processamento de predição 100 pode selecionar os dados preditivos para PUs de uma CU dentre os dados preditivos gerados pela unidade de processamento de inter predição 120 para as PUs ou os dados preditivos gerados pela unidade de processamento de intra predição 126 para as PUs. Em alguns exemplos, a unidade de processamento de predição 100 seleciona os dados preditivos para as PUs da CU com base nas métricas de taxa/distorção dos conjuntos de dados preditivos. Os blocos preditores dos dados preditivos selecionados podem ser denominados aqui como os blocos preditores selecionados.
[0126]A unidade de processamento de intra predição 126 pode gerar um bloco preditor usando um modo de intra predição de acordo com qualquer uma das técnicas desta divulgação. Por exemplo, como parte da geração do bloco preditor, a unidade de processamento de intra predição 126 pode determinar um valor inicial de um primeiro peso e determinar um valor inicial de um segundo peso. Além disso, para cada respectiva amostra em um conjunto de amostras no bloco preditor, a unidade de processamento de intra predição 126 pode determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra. A unidade de processamento de intra predição 126 também pode determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra.
Além disso, a unidade de processamento de intra predição 126 pode determinar um valor de um terceiro peso para a respectiva amostra.
A unidade de processamento de intra predição 126 também pode determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra.
Adicionalmente, a unidade de processamento de intra predição 126 pode determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição.
Em seguida, a unidade de processamento de intra predição 126 pode determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de: (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra,
(iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento. Por exemplo, a unidade de processamento de intra predição 126 pode determinar o valor secundário para a respectiva amostra de acordo com a equação (11), onde wT é o primeiro peso, wL é o segundo peso, wTL é o terceiro peso, e (2rightShift wT — wL — wTL) é o quarto peso, e rightShift é o segundo valor.
[0127] A unidade de geração residual 102 pode gerar, com base nos blocos de codificação (por exemplo, blocos de codificação de luma, Cb e Cr) para uma CU e os blocos preditores selecionados (por exemplo, blocos de luma, Cb e Cr preditivos) para as PUs da CU, blocos residuais (por exemplo, blocos residuais de luma, Cb e Cr) para a CU. Por exemplo, a unidade de geração residual 102 pode gerar os blocos residuais da CU de modo que cada amostra nos blocos residuais tenha um valor igual a uma diferença entre uma amostra em um bloco de codificação da CU e uma amostra correspondente em um bloco preditor selecionado correspondente de uma PU da CU.
[0128] A unidade de processamento de transformação 104 pode realizar partição dos blocos residuais de uma CU em blocos de transformação de TUs da CU. Por exemplo, a unidade de processamento de transformação 104 pode realizar particionamento de quad- tree para particionar os blocos residuais da CU em blocos de transformação de TUs da CU. Assim, uma TU pode ser associado com um bloco de transformação de luma e dois blocos de transformação de croma. Os tamanhos e posições dos blocos de transformação de croma e luma de TUs de uma CU podem ou podem não ser com base nos tamanhos e posições de blocos de predição das PUs da CU. Uma estrutura quad- tree conhecido como um “quad-tree residual” (RQT) pode incluir nós associados com cada uma das regiões. As TUs de uma CU podem corresponder a nós de folha do RQT.
[0129]A unidade de processamento de transformação 104 pode gerar blocos de coeficiente de transformação para cada TU de uma CU aplicando-se uma ou mais transformações aos blocos de transformação da TU. A unidade de processamento de transformação 104 pode aplicar várias transformações a um bloco de transformação associado com uma TU. Por exemplo, a unidade de processamento de transformação 104 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada direcional, ou uma transformação conceitualmente semelhante a um bloco de transformação. Em alguns exemplos, a unidade de processamento de transformação 104 não aplica transformações a um bloco de transformação. Em tais exemplos, o bloco de transformação pode ser tratado como um coeficiente de bloco de transformação.
[0130]A unidade de quantização 106 pode quantificar os coeficientes de transformação em um bloco de coeficiente. A unidade de quantização 106 pode quantificar um bloco de coeficiente associado com uma TU de uma CU com base em um valor de parâmetro de quantização (QP) associado com a CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente associados com uma CU ajustando-se o valor de QP associado com a CU. A quantização pode introduzir perda de informações. Assim, os coeficientes de transformação quantizados podem ter menor precisão do que os originais.
[0131]A Unidade de quantização inversa 108 e unidade de processamento de transformação inversa 110 podem aplicar quantização inversa e transformações inversas a um bloco de coeficiente, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente. A unidade de reconstrução 112 pode adicionar o bloco residual reconstruído para amostras correspondentes de um ou mais blocos preditores gerados pela unidade de processamento de predição 100 para produzir um bloco de transformação reconstruído associado com uma TU. Ao reconstruir blocos de transformação para cada TU de uma CU, desta forma, o codificador de vídeo 20 pode reconstruir os blocos de codificação da CU.
[0132]A unidade de filtro 114 pode realizar um ou mais operações de desbloqueio para reduzir artefatos de bloqueio nos blocos de codificação associados com uma CU. O buffer de imagem decodificada 116 pode armazenar os blocos de codificação reconstruídos depois da unidade de filtro 114 realizar as uma ou mais operações de desbloqueio nos blocos de codificação reconstruídos. A unidade de processamento de inter predição 120 pode usar uma imagem de referência que contém os blocos de codificação reconstruídos para realizar inter predição em PUs de outras imagens. Além disso, a unidade de processamento de intra predição 126 pode usar blocos de codificação reconstruídos em buffer de imagem decodificada
116 para realizar intra predição em outras PUs na mesma imagem como a CU.
[0133]A unidade de codificação por entropia 118 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação por entropia 118 pode receber blocos de coeficiente da unidade de quantização 106 e pode receber elementos de sintaxe da unidade de processamento de predição 100. A unidade de codificação por entropia 118 pode realizar uma ou mais operações de codificação por entropia nos dados para gerar dados codificados por entropia. Por exemplo, a unidade de codificação por entropia 118 pode realizar uma operação de CABAC, uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação aritmética binária adaptativa ao contexto (SBAC) com base em sintaxe, uma operação de codificação por entropia de particionamento de intervalo de probabilidade (PIPE), uma operação de codificação Exponencial-Golomb ou outro tipo de operação de codificação de entropia nos dados. O codificador de vídeo 20 pode emitir um fluxo de bits que inclui dados codificados por entropia gerados pela unidade de codificação de entropia 118. Por exemplo, o fluxo de bits pode incluir dados que representam valores de coeficientes de transformação para uma UC.
[0134]A Figura 9 é um diagrama de bloco que ilustra um exemplo de decodificador de vídeo 30 que é configurado para implementar as técnicas desta divulgação. A Figura 9 é fornecida para propósitos de explicação e não é limitativa nas técnicas como amplamente exemplificado e descrito nesta divulgação. Para propósitos de explicação, essa divulgação descreve o decodificador de vídeo 30 no contexto de codificação de HEVC. Entretanto, as técnicas desta divulgação podem ser aplicáveis a outros padrões ou métodos de codificação, como Codificação de vídeo versátil (VVC).
[0135]O conjunto de circuitos de processamento inclui o decodificador de vídeo 30, e o decodificador de vídeo 30 é configurado para realizar uma ou mais das técnicas do exemplo descritas nesta divulgação. Por exemplo, o decodificador de vídeo 30 inclui conjunto de circuitos integrados, e as várias unidades ilustradas na Figura 9 podem ser formadas como blocos de circuito de hardware que são interconectados com um barramento de circuito. Estes blocos de circuito de hardware podem ser blocos de circuito separados ou duas ou mais das unidades podem ser combinadas em um bloco de circuito de hardware comum. Os blocos de circuito de hardware podem ser formados como uma combinação de componentes eletrônicos que formam blocos de operação como unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), bem como blocos lógicos como AND, OR, NAND, NOR, XOR, XNOR, e outros blocos lógicos semelhantes.
[0136]Em alguns exemplos, uma ou mais das unidades ilustradas na Figura 9 podem ser unidades de software em execução no conjunto de circuitos de processamento. Em tais exemplos, o código do objeto para essas unidades de software é armazenado na memória. Um sistema de operação pode fazer com que o decodificador de vídeo 30 recupere o código do objeto e execute o código do objeto, que faz com que o decodificador de vídeo 30 realize as operações para implementar as técnicas do exemplo. Em alguns exemplos, as unidades de software podem ser firmware que o decodificador de vídeo 30 executa na inicialização. Consequentemente, o decodificador de vídeo 30 é um componente estrutural tendo hardware que realiza as técnicas do exemplo ou tem software/firmware em execução no hardware para especializar o hardware para realizar as técnicas do exemplo.
[0137]No exemplo da Figura 9, o decodificador de vídeo 30 inclui um unidade de decodificação por entropia 150, memória de dados de vídeo 151, uma unidade de processamento de predição 152, uma unidade de quantização inversa 154, uma unidade de processamento de transformação inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 160, e um buffer de imagem decodificada 162. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 164 e uma unidade de processamento de intra predição 166. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos, ou diferentes componentes funcionais.
[0138]A memória de dados de vídeo 151 pode armazenar dados de vídeo codificados, como um fluxo de bits de vídeo codificados, a serem decodificados pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 151 podem ser obtidos, por exemplo, de meio legível por computador 16, por exemplo, de um fonte de vídeo local, como uma câmera, através de comunicação de rede sem fios e com fios de dados de vídeo, ou acessando-se mídia de armazenamento de dados físicos. A memória de dados de vídeo 151 pode formar um buffer de imagem codificada (CPB) que armazena dados de vídeo codificados de um fluxo de bits de vídeo codificados. O buffer de imagem decodificada 162 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para o uso em dados de vídeo decodificados pelo decodificador de vídeo 30, por exemplo, em modos intra- ou inter- codificação, ou para saída. A memória de dados de vídeo 151 e buffer de imagem decodificada 162 podem ser formados por qualquer uma de uma variedade de dispositivos de memória, como memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrona (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 151 e buffer de imagem decodificada 162 pode ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 151 pode estar no chip com outros componentes do decodificador de vídeo 30, ou fora do chip em relação a esses componentes. A memória de dados de vídeo 151 pode ser a mesmo coma ou parte da mídia de armazenamento 28 da Figura 1.
[0139]A memória de dados de vídeo 151 recebe e armazena dados de vídeo codificados (por exemplo, unidades de NAL) de um fluxo de bits. A unidade de decodificação por entropia 150 pode receber dados de vídeo codificados (por exemplo, unidades de NAL) da memória de dados de vídeo 151 e pode analisar as unidades de NAL para obter elementos de sintaxe. A unidade de decodificação por entropia 150 pode decodificar por entropia elementos de sintaxe codificados por entropia nas unidades de NAL. A unidade de processamento de predição 152, unidade de quantização inversa 154, unidade de processamento de transformação inversa 156, unidade de reconstrução 158, e unidade de filtro 160 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos a partir do fluxo de bits. A unidade de decodificação por entropia 150 pode realizar um processo geralmente recíproco àquele da unidade de codificação por entropia 118.
[0140]Além de obter elementos de sintaxe a partir do fluxo de bits, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em uma CU não particionada. Para realizar a operação de reconstrução em uma CU, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir blocos residuais da CU.
[0141]Como parte da realização de uma operação de reconstrução em uma TU de uma CU, a unidade de quantização inversa 154 pode quantificar inversamente, isto é, desquantificar, blocos de coeficiente associados com a TU. Depois da unidade de quantização inversa 154 quantiza inversamente um bloco de coeficiente, unidade de processamento de transformação inversa 156 pode aplicar uma ou mais transformações inversas ao bloco de coeficiente de modo a gerar um bloco residual associado com a TU. Por exemplo, a unidade de processamento de transformação inversa 156 pode aplicar uma DCT inversa, uma transformação de número inteiro inverso, uma transformação de Karhunen-Loeve inversa (KLT), uma transformação de rotação inversa, uma transformação direcional inversa ou outra transformação inversa ao bloco de coeficiente.
[0142]Se uma PU for codificada usando intra predição, a unidade de processamento de intra predição 166 pode realizar intra predição para gerar blocos preditores da PU. A unidade de processamento de intra predição 166 pode usar um modo de intra predição para gerar o blocos preditores da PU com base em amostras de blocos vizinhos espacialmente. A unidade de processamento de intra predição 166 pode determinar o modo de intra predição para a PU com base em um ou mais elementos de sintaxe obtidos a partir do fluxo de bits. A unidade de processamento de intra predição 166 pode realizar técnicas de intra predição desta divulgação.
[0143]A unidade de processamento de intra predição 166 pode gerar um bloco preditor usando um modo de intra predição de acordo com qualquer uma das técnicas desta divulgação. Por exemplo, como parte da geração do bloco preditor, a unidade de processamento de intra predição 166 pode determinar um valor inicial de um primeiro peso e determinar um valor inicial de um segundo peso. Além disso, para cada respectiva amostra em um conjunto de amostras no bloco preditor, a unidade de processamento de intra predição 166 pode determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra.
A unidade de processamento de intra predição 166 também pode determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra.
Além disso, a unidade de processamento de intra predição 166 pode determinar um valor de um terceiro peso para a respectiva amostra.
A unidade de processamento de intra predição 166 também pode determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra.
Adicionalmente, unidade de processamento de intra predição 166 pode determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição.
Em seguida, a unidade de processamento de intra predição 166 pode determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de: (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento. Por exemplo, a unidade de processamento de intra predição 166 pode determinar o valor secundário para a respectiva amostra de acordo com a equação (11), onde wT é o primeiro peso, wL é o segundo peso, wTL é o terceiro peso, (2rightShift wT — wL — wTL) é o quarto peso, e rightShift é o segundo valor.
[0144]Se uma PU for codificada usando inter predição, a unidade de compensação de movimento 164 pode determinar informações de movimento para a PU. A unidade de compensação de movimento 164 pode determinar, com base nas informações de movimento da PU, um ou mais blocos de referência. A unidade de compensação de movimento 164 pode gerar, com base no um ou mais blocos de referência, blocos preditores (por exemplo, blocos de luma, Cb e Cr preditivos) para a PU.
[0145]A unidade de reconstrução 158 pode usar blocos de transformação (por exemplo, blocos de transformação de luma, Cb e Cr) para TUs de uma CU e os blocos preditores (por exemplo, blocos de luma, Cb e Cr) das PUs da CU, isto é, dados de intra-predição ou dados de inter-predição, como aplicável, para reconstruir os blocos de codificação (por exemplo, blocos de codificação de luma, Cb e Cr) para a CU. Por exemplo, a unidade de reconstrução 158 pode adicionar amostras dos blocos de transformação (por exemplo, blocos de transformação de luma, Cb e Cr) para amostras correspondentes dos blocos preditores (por exemplo, blocos preditores de luma, Cb e Cr) para reconstruir os blocos de codificação (por exemplo, blocos de codificação de luma, Cb e Cr) da CU.
[0146]A unidade de filtro 160 pode realizar uma operação de desbloqueio para reduzir artefatos de bloqueio associados com os blocos de codificação da CU. O decodificador de vídeo 30 pode armazenar os blocos de codificação da CU em buffer de imagem decodificada 162. O buffer de imagem decodificada 162 pode fornecer imagens de referência para compensação de movimento subsequente, intra predição e apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da Figura 1. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos em buffer de imagem decodificada 162, operações de intra predição ou inter predição para PUs de outros CUs.
[0147]A Figura 10 é um fluxograma que ilustra um exemplo de operação do codificador de vídeo 20 de acordo com uma técnica desta divulgação. Os fluxogramas desta divulgação são fornecidos como exemplos. Em outros exemplos, as operações podem incluir mais, menos, ou diferentes ações. Além disso, em alguns exemplos, as operações podem ser realizadas em diferentes ordens.
[0148]No exemplo da Figura 10, o codificador de vídeo 20 (por exemplo, unidade de processamento de intra predição 126 (Figura 8) do codificador de vídeo 20) pode gerar um bloco preditor usando um modo de intra predição (1000). Em alguns exemplos, o modo de intra predição é um modo de intra predição DC. Em alguns exemplos, o modo de intra predição é um modo de intra predição horizontal. Em alguns exemplos, o modo de intra predição é um modo de intra predição vertical. Em alguns exemplos, o modo de intra predição pode ser um outro tipo de modo de intra predição. Em alguns exemplos, cada uma das amostras no bloco preditor é uma amostra de luma. Em alguns exemplos, cada uma das amostras no bloco preditor é uma amostra de croma. Em alguns exemplos, o codificador de vídeo 20 pode aplicar a operação da Figura 10 tanto para amostras de luma quanto de croma.
[0149]Como parte da geração do bloco preditor, o codificador de vídeo 20 pode determinar um valor inicial de um primeiro peso (1002). Adicionalmente, o codificador de vídeo 20 pode determinar um valor inicial de um segundo peso (1004). Em alguns exemplos, o valor inicial do primeiro peso e o valor inicial do segundo peso pode ser fixo e predeterminado. Em alguns exemplos, wL e wT são inicializados como 0,5. Em alguns exemplos, o codificador de vídeo 20 pode determinar o valor inicial do primeiro peso e o valor inicial do segundo peso com base em um ou mais fatores, como um tamanho do bloco preditor ou o modo de inter predição.
[0150]Além disso, para cada respectiva amostra em um conjunto de amostras no bloco preditor, o codificador de vídeo 20 pode determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra (1006). O primeiro limite pode ser um limite do bloco preditor superior. Em alguns exemplos, o codificador de vídeo 20 pode determinar o valor do primeiro peso para a respectiva amostra realizando-se uma operação de desvio no valor inicial do primeiro peso por uma quantidade com base na distância entre a respectiva amostra e o primeiro limite do bloco preditor. Por exemplo, nas seções desta divulgação intitulada “Especificação de modo de intra predição PLANAR”, “Especificação de modo de intra predição DC”, “Especificação de modo de intra predição HOR”, e “Especificação de modo de intra predição VER”, o codificador de vídeo 20 pode determinar o valor do primeiro peso para a respectiva amostra como 32 » ((y « 1) » rightShift), onde 32 é o valor inicial do primeiro peso e y é uma distância em amostras de um limite do bloco preditor superior. Em outros exemplos, o codificador de vídeo 20 pode determinar o valor do primeiro peso para a respectiva amostra dividindo-se o valor inicial do primeiro peso por uma quantidade com base na distância entre a respectiva amostra e o primeiro limite do bloco preditor.
[0151]O conjunto de amostras no bloco preditor pode incluir cada amostra do bloco preditor. Em outros exemplos, o conjunto de amostras no bloco preditor pode ser um subconjunto das amostras no bloco preditor. Em outras palavras, em alguns exemplos, as técnicas simplificadas de PDPC desta divulgação são apenas aplicadas para posições de amostra de predição selecionadas em vez de serem aplicadas a todo o bloco preditor. Por exemplo, as posições de amostra de predição selecionadas nas quais as técnicas simplificadas de PDPC desta divulgação são aplicadas podem ser um número predefinido de colunas do bloco preditor partindo da esquerda do bloco preditor e/ou número predefinido de linhas do bloco preditor partindo de a parte superior do bloco preditor.
[0152] O codificador de vídeo 20 também pode determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra (1008). O segundo limite pode ser um limite do bloco preditor à esquerda. Em alguns exemplos, codificador de vídeo 20 pode determinar o valor do segundo peso para a respectiva amostra realizando-se uma operação de desvio no valor inicial do segundo peso por uma quantidade com base na distância entre a respectiva amostra e o segundo limite do bloco preditor. Por exemplo, nas seções desta divulgação intitulada “Especificação de modo de intra predição PLANAR”, “Especificação de modo de intra predição intra DC”, “Especificação de modo de intra predição intra HOR”, e “Especificação de modo de intra predição intra VER”, codificador de vídeo 20 pode determinar o valor do segundo peso para a respectiva amostra como 32 » ((x « 1) » rightShift), onde 32 é o valor inicial do segundo peso,
x é uma distância em amostras de um limite do bloco preditor à esquerda, e rightShift é um valor pelo qual desvia à direita (x « 1). Em alguns exemplos, o codificador de vídeo 20 pode determinar o segundo peso para a respectiva amostra dividindo-se o valor inicial do segundo peso por uma quantidade com base na distância entre a respectiva amostra e o segundo limite do bloco preditor.
[0153]Em alguns exemplos, o codificador de vídeo 20 pode determinar o valor do primeiro peso para a respectiva amostra com base em uma ou mais de: uma coordenada horizontal dimensionada da amostra atual, um tamanho do bloco do bloco preditor, ou o modo de intra predição. Em alguns exemplos, o codificador de vídeo 20 pode derivar o valor do segundo peso para a respectiva amostra com base em uma ou mais de: uma coordenada vertical dimensionada da respectiva amostra, o tamanho do bloco do bloco preditor, ou o modo de intra predição.
[0154] Além disso, o codificador de vídeo 20 pode determinar um valor de um terceiro peso para a respectiva amostra (1010). O codificador de vídeo 20 pode determinar o valor do terceiro peso para a respectiva amostra em uma ou mais das várias maneiras. Por exemplo, o codificador de vídeo 20 pode determinar o valor do terceiro peso para a respectiva amostra como (wL»4) + (wT>>4), onde wL é o valor do primeiro peso para a respectiva amostra, wT é o valor do segundo peso para a respectiva amostra, e >> é a operação de desvio à direita. Em um outro exemplo, codificador de vídeo 20 pode determinar o valor do terceiro peso para a respectiva amostra como -(w L>> 4)-(w/5> 4), onde wL é o valor do primeiro peso para a respectiva amostra, wT é o valor do segundo peso para a respectiva amostra, e » é a operação de desvio à direita.
[0155]Em alguns exemplos, o codificador de vídeo 20 determina o valor do terceiro peso para a respectiva amostra com base no modo de intra predição. Por exemplo, em um exemplo, como mostrado nas seções desta divulgação intituladas “Especificação do modo de intra predição intra PLANAR” e “Especificação do modo de intra predição intra DC”, o codificador de vídeo 20 pode determinar o valor do terceiro peso para o respectivo amostra como wTL = (wL » 4) + (wT >> 4). Neste exemplo, como mostrado na seção desta divulgação intitulada “Especificação do modo de intra predição intra HOR”, o codificador de vídeo 20 pode determinar o valor do terceiro peso para a respectiva amostra como wTL = wT. Neste exemplo, como mostrado na seção desta divulgação intitulada “Especificação do modo de intra predição intra VER”, o codificador de vídeo 20 pode determinar o valor do quarto peso para a respectiva amostra como wTL = wL.
[0156] Em alguns exemplos, o codificador de vídeo 20 pode determinar o valor do terceiro peso para a respectiva amostra como uma soma de um primeiro parâmetro multiplicado pelo valor do primeiro peso para a respectiva amostra mais um segundo parâmetro multiplicado pelo valor do segundo peso para a respectiva amostra. Como um exemplo, o codificador de vídeo 20 pode determinar o valor do terceiro peso (wTL) como wTL = a•wL + b.wT. O codificador de vídeo 20 pode determinar os valores do primeiro parâmetro (a) e do segundo parâmetro (b) de acordo com qualquer um dos exemplos fornecidos em outras partes nesta divulgação. Por exemplo, o codificador de vídeo 20 pode determinar, com base em uma direção de intra predição, os valores do primeiro parâmetro e do segundo parâmetro. Em alguns exemplos, os valores do primeiro parâmetro e do segundo parâmetro são dependentes em uma diferença de ângulo de intra predição ou uma diferença de índice de modo intra em relação a uma direção de predição horizontal e/ou uma vertical.
[0157]Em alguns exemplos, o codificador de vídeo 20 pode sinalizar valores do primeiro parâmetro e do segundo parâmetro no fluxo de bits. Como observado em outras partes nesta divulgação, o fluxo de bits pode incluir uma representação codificada dos dados de vídeo. Por exemplo, o codificador de vídeo 20 pode incluir elementos de sintaxe que especifica o primeiro parâmetro e o segundo parâmetro no fluxo de bits.
[0158]Além disso, no exemplo da Figura 10, o codificador de vídeo 20 também pode determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra (1012). O codificador de vídeo 20 pode determinar o valor do quarto peso para a respectiva amostra em uma ou mais das várias maneiras. Por exemplo, o codificador de vídeo 20 pode determinar o valor do quarto peso para a respectiva amostra como sendo igual a (64 — wT — wL — wTL), onde wT é o valor do segundo peso para a respectiva amostra, wL é o valor do primeiro peso para a respectiva amostra, e wTL é o valor do terceiro peso para a respectiva amostra, e o segundo valor (isto é, o valor de desvio à direita) é igual a 6. Em alguns exemplos, o codificador de vídeo 20 pode determinar o valor do quarto peso para a respectiva amostra como sendo igual a (2rightShift wT — wL — wTL), onde wT é o valor do segundo peso para a respectiva amostra, wL é o valor do primeiro peso para a respectiva amostra, e wTL é o valor do terceiro peso para a respectiva amostra.
[0159] Adicionalmente, no exemplo da Figura 10, o codificador de vídeo 20 pode determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição (1014). Por exemplo, o codificador de vídeo 20 pode determinar o valor primário da respectiva amostra usando um modo de intra predição Planar, modo de intra predição DC, ou modo de intra predição direcional, como descrito em outras partes nesta divulgação.
[0160]Por exemplo, o codificador de vídeo 20 pode determinar o valor primário para a respectiva amostra com base em amostras de referência em uma imagem atual que contêm o bloco preditor. Por exemplo, neste exemplo, o codificador de vídeo 20 pode determinar o valor primário para a respectiva amostra com base em amostras de referência do bloco preditor. As amostras de referência do bloco preditor podem incluir amostras decodificadas em uma coluna à esquerda do bloco preditor e amostras decodificadas em uma linha acima do bloco preditor. Assim, as amostras de referência do bloco preditor podem incluir uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, uma amostra de referência acima para a amostra atual que está acima da respectiva amostra, e uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra. Entretanto, dependendo do modo de intra predição, determinar o valor primário para o respectivo valor de amostra com base nas amostras de referência para o bloco preditor não requer que o codificador de vídeo 20 use um ou mais, ou qualquer, da amostra de referência esquerda para a respectiva amostra, a amostra de referência acima para a respectiva amostra, ou a amostra de referência esquerda acima para a respectiva amostra. Em alguns exemplos, o codificador de vídeo 20 pode determinar o valor primário para a respectiva amostra com base em amostras reconstruídas que estão dentro do bloco preditor.
[0161]Em alguns exemplos, o codificador de vídeo 20 aplica um ou mais filtros às amostras de referência e determina o valor primário para a respectiva amostra com base nas amostras de referência filtradas. Por exemplo, o codificador de vídeo 20 pode filtrar as amostras de referência de acordo com qualquer um dos exemplos fornecidos em outras partes nesta divulgação. Em outros exemplos, o codificador de vídeo 20 pode determinar o valor primário para a respectiva amostra com base em amostras de referência não filtradas.
[0162]Em seguida, o codificador de vídeo 20 pode determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor (1016). O primeiro valor para a respectiva amostra pode ser uma soma de: (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento. Por exemplo, o codificador de vídeo 20 pode determinar o valor secundário para a respectiva amostra de acordo com a equação (11), onde wT é o primeiro peso, wL é o segundo peso, wTL é o terceiro peso, e (2rightShift wT—wL —w TL) é o quarto peso, e rightShift é o segundo valor. Em alguns exemplos, o valor de deslocamento é igual a 32 e o segundo valor é igual 6.
[0163]Em alguns exemplos, o codificador de vídeo 20 aplica um ou mais filtros às amostras de referência (incluindo a amostra de referência esquerda, amostra de referência acima, e amostra de referência esquerda acima) e pode determinar o valor secundário para a respectiva amostra com base nas amostras de referência filtradas. Por exemplo, o codificador de vídeo 20 pode filtrar as amostras de referência de acordo com qualquer um dos exemplos fornecidos em outras partes nesta divulgação. As amostras de referência podem ser amostras de referência do bloco preditor. Isto é, as amostras de referência podem ser em uma coluna à esquerda do bloco preditor e em uma linha acima do bloco preditor. Nos exemplos onde as amostras de referência são amostras de referência do bloco preditor, o codificador de vídeo 20 pode gerar as amostras de referência filtradas do bloco preditor aplicando-se um filtro para começar, amostras de referência não filtradas do bloco preditor. Em outros exemplos, o codificador de vídeo 20 pode usar valores não filtrados de uma ou mais da amostra de referência esquerda, a amostra de referência acima, e a amostra de referência esquerda acima para determinar o valor secundário para a respectiva amostra.
[0164]Em alguns exemplos, o codificador de vídeo 20 apenas aplica as técnicas simplificadas de PDPC desta divulgação para certos tamanhos do bloco, (por exemplo, blocos com tamanhos maiores do que um limite). Assim, em alguns exemplos, o codificador de vídeo 20 pode determinar o valor secundário para a respectiva amostra é o primeiro valor desviado para a direita pelo segundo valor com base em um tamanho do bloco preditor sendo maior do que um limite predeterminado. Assim, em casos onde o tamanho do bloco preditor não é maior do que o limite, o valor secundário para a respectiva amostra pode ser igual ao valor primário para a respectiva amostra.
[0165]Além disso, no exemplo da Figura 10, codificador de vídeo 20 pode gerar dados residuais com base no bloco preditor e um bloco de codificação dos dados de vídeo (1018). Por exemplo, o codificador de vídeo 20 pode gerar os dados residuais subtraindo-se amostras do bloco de codificação de amostras do bloco preditor correspondentes.
[0166]A Figura 11 é um fluxograma que ilustra um exemplo de operação do decodificador de vídeo 30 de acordo com uma técnica desta divulgação. No exemplo da Figura 11, o decodificador de vídeo 30 (por exemplo, unidade de processamento de intra predição 166 (Figura 9) do decodificador de vídeo 30) pode gerar um bloco preditor usando um modo de intra predição (1100). Em alguns exemplos, o modo de intra predição é um modo de intra predição DC. Em alguns exemplos, o modo de intra predição é um modo de intra predição horizontal. Em alguns exemplos, o modo de intra predição é um modo de intra predição vertical. Em alguns exemplos, o modo de intra predição pode ser um outro tipo de modo de intra predição. Em alguns exemplos, cada uma das amostras no bloco preditor é uma amostra de luma. Em alguns exemplos, cada uma das amostras no bloco preditor é uma amostra de croma. Em alguns exemplos, decodificador de vídeo 30 pode aplicar a operação da Figura 10 tanto para amostras de luma quanto de croma.
[0167]Como parte da geração do bloco preditor, o decodificador de vídeo 30 pode determinar um valor inicial de um primeiro peso (1102). Adicionalmente, o decodificador de vídeo 30 pode determinar um valor inicial de um segundo peso (1104). O decodificador de vídeo 30 pode determinar o valor inicial do primeiro peso e o valor inicial do segundo peso de acordo com qualquer um dos exemplos fornecidos em relação às ações (1002) e (1004) e em outras partes nesta divulgação.
[0168]Além disso, para cada respectiva amostra em um conjunto de amostras no bloco preditor, o decodificador de vídeo 30 pode determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra (1106). O primeiro limite pode ser um limite do bloco preditor superior. O decodificador de vídeo 30 também pode determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra (1108). O segundo limite pode ser um limite do bloco preditor à esquerda. Além disso, o decodificador de vídeo 30 pode determinar um valor de um terceiro peso para a respectiva amostra (1110). O decodificador de vídeo 30 também pode determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra (1112). O decodificador de vídeo 30 pode determinar os valores do primeiro, segundo, terceiro, e quarto pesos para a respectiva amostra na mesma maneira como o codificador de vídeo 20 como descrito acima em relação às ações (1006), (1008), (1010) e (1012), e descrito em outras partes nesta divulgação.
[0169]Adicionalmente, no exemplo da Figura 11, decodificador de vídeo 30 pode determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição (1114). Por exemplo, o decodificador de vídeo 30 pode determinar o valor primário na mesma maneira como codificador de vídeo 20 como descrito acima em relação à ação (1014) e descrito em outras partes nesta divulgação.
[0170]Em seguida, o decodificador de vídeo 30 pode determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor (1116). O primeiro valor para a respectiva amostra pode ser uma soma de: (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra,
(iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento. Por exemplo, o decodificador de vídeo 30 pode determinar o valor secundário para a respectiva amostra de acordo com a equação (11), onde wT é o primeiro peso, wL é o segundo peso, wTL é o terceiro peso, e (2rightShift wT— wL —w TL) é o quarto peso, e rightShift é o segundo valor. Em alguns exemplos, o valor de deslocamento é igual a 32 e o segundo valor é igual 6.
[0171]Em alguns exemplos, o decodificador de vídeo 30 aplica um ou mais filtros para as amostras de referência (incluindo a amostra de referência esquerda, amostra de referência acima, e amostra de referência esquerda acima) e pode determinar o valor secundário para a respectiva amostra com base nas amostras de referência filtradas. Por exemplo, o decodificador de vídeo 30 pode filtrar as amostras de referência de acordo com qualquer um dos exemplos fornecidos em outras partes nesta divulgação. As amostras de referência podem ser amostras de referência do bloco preditor. Isto é, as amostras de referência podem ser em uma coluna à esquerda do bloco preditor e em uma linha acima do bloco preditor. Nos exemplos onde as amostras de referência são amostras de referência do bloco preditor, o decodificador de vídeo 30 pode gerar as amostras de referência filtradas do bloco preditor aplicando-se um filtro para começar, amostras de referência não filtradas do bloco preditor. Em outros exemplos, o decodificador de vídeo 30 pode usar valores não filtrados de uma ou mais da amostra de referência esquerda, a amostra de referência acima, e a amostra de referência esquerda acima para determinar o valor secundário para a respectiva amostra.
[0172]Em alguns exemplos, o decodificador de vídeo 30 apenas aplica as técnicas simplificadas de PDPC desta divulgação para certos tamanhos do bloco (por exemplo, blocos com tamanhos maior do que um limite). Assim, em alguns exemplos, o decodificador de vídeo 30 pode determinar o valor secundário para a respectiva amostra é o primeiro valor desviado para a direita pelo segundo valor com base em um tamanho do bloco preditor sendo maior do que um limite predeterminado. Assim, em casos onde o tamanho do bloco preditor não é maior do que o limite, o valor secundário para a respectiva amostra pode ser igual ao valor primário para a respectiva amostra.
[0173]Além disso, no exemplo da Figura 11, o decodificador de vídeo 30 pode reconstruir, com base no bloco preditor e nos dados residuais, um bloco decodificado dos dados de vídeo (1118). Por exemplo, o decodificador de vídeo 30 pode gerar os dados residuais adicionando amostras do bloco preditor às amostras dos dados residuais.
[0174]Certos aspectos desta divulgação foram descritos com relação a extensões do padrão de HEVC para fins de ilustração. No entanto, as técnicas descritas nesta divulgação podem ser úteis para outros processos de codificação de vídeo, incluindo outros processos de codificação de vídeo padrão ou proprietários ainda não desenvolvidos.
[0175]Um codificador de vídeo, como descrito nesta divulgação, pode se referir a um codificador de vídeo ou decodificador de vídeo. Da mesma forma, uma unidade de codificação de vídeo pode se referir a um codificador ou decodificador de vídeo. Da mesma forma, a codificação de vídeo pode se referir à codificação ou decodificação de vídeo, conforme aplicável. Esta divulgação pode usar o termo “unidade de vídeo” ou “bloco de vídeo” ou “bloco” para se referir a um ou mais blocos de amostra e estruturas de sintaxe usadas para codificar amostras de um ou mais blocos de amostras. Exemplos de tipos de unidades de vídeo podem incluir CTUs, UCs, PUs, unidades de transformação (TUs), macroblocos, partições de macroblocos e assim por diante. Em alguns contextos, a discussão de PUs pode ser intercambiada com a discussão de macroblocos ou partições de macroblocos. Exemplos de tipos de blocos de vídeo podem incluir blocos de árvore de codificação, blocos de codificação e outros tipos de blocos de dados de vídeo.
[0176]As técnicas podem ser aplicadas à codificação de vídeo em suporte a qualquer uma das diversas aplicações multimídia, como transmissões de televisão pelo ar, transmissões de televisão a cabo, transmissões com fio, transmissões de televisão por satélite, transmissões de vídeo por streaming na Internet, como streaming adaptativo dinâmico por HTTP (DASH), vídeo digital codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outros aplicativos ou combinações dos exemplos acima. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicativos como streaming de vídeo, reprodução de vídeo, transmissão de vídeo e/ou telefonia por vídeo.
[0177]É necessário reconhecer que, dependendo do exemplo, certos atos ou eventos de qualquer uma das técnicas descritas aqui podem ser executados em uma sequência diferente, podem ser adicionados, mesclados ou excluídos completamente (por exemplo, nem todos os atos descritos ou eventos 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 processamento multithread, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[0178]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 ou transmitidas por, como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. Mídia legível por computador pode incluir mídia de armazenamento legível por computador, que corresponde a um meio 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. Dessa maneira, a mídia legível por computador geralmente pode 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 portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que possa ser acessada por um ou mais computadores ou um ou mais circuitos de processamento para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[0179]A título de exemplo, e não como limitação, essas mídias de armazenamento legíveis por computador podem incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash, memória cache, ou qualquer outro meio que possa ser usado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente denominada meio legível por computador. Por exemplo, se as instruções forem transmitidas de um site, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, como infravermelho, rádio e micro- ondas, estão incluídos na definição de meio. Deve-se entender, no entanto, que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outras mídias transitórias, mas são direcionadas a mídias de armazenamento tangíveis e não transitórias. Disquete e disco, conforme usado aqui, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, onde os discos geralmente reproduzem dados magneticamente, enquanto os discos reproduzem dados óticos com lasers. As combinações acima também devem ser incluídas no escopo da mídia legível por computador.
[0180]A funcionalidade descrita nesta divulgação pode ser realizada por função fixa e/ou conjunto de circuitos de processamento programáveis. Por exemplo, as instruções podem ser executadas por função fixa e/ou conjunto de circuitos de processamento programáveis. Tais conjuntos de circuitos de processamento podem incluir um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados específicos para aplicativos (ASICs), matrizes lógicas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo “processador”, como aqui utilizado, pode se referir a qualquer uma das estruturas anteriores ou a qualquer outra estrutura adequada para a implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida em módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos. Os conjuntos de circuitos de processamento podem ser acoplados a outros componentes de várias maneiras. Por exemplo, um conjunto de conjuntos de circuitos de processamento pode ser acoplado a outros componentes por meio de uma interconexão de dispositivo interno, uma conexão de rede com ou sem fio ou outro meio de comunicação.
[0181]As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um telefone celular, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um chipset). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não exigem necessariamente a 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 fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0182]Nesta divulgação, termos ordinais como “primeiro”, “segundo”, “terceiro” e assim por diante, não são necessariamente indicadores de posições dentro de uma ordem, mas podem simplesmente ser usados para distinguir diferentes instâncias da mesma coisa.
[0183]Vários exemplos foram descritos.
Estes e outros exemplos estão dentro do escopo das reivindicações a seguir.
Claims (31)
1. Método de decodificar dados de vídeo, o método compreendendo: gerar um bloco preditor usando um modo de intra predição, em que gerar o bloco preditor compreende: determinar um valor inicial de um primeiro peso; determinar um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinar um valor de um terceiro peso para a respectiva amostra; determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e reconstruir, com base no bloco preditor e dados residuais, um bloco decodificado dos dados de vídeo.
2. Método, de acordo com a reivindicação 1, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor, determinar o valor primário para a respectiva amostra compreende determinar o valor primário para a respectiva amostra com base em amostras de referência do bloco preditor, as amostras de referência incluindo a amostra de referência esquerda para a respectiva amostra, a amostra de referência acima para a respectiva amostra, e a amostra de referência esquerda acima para a respectiva amostra.
3. Método, de acordo com a reivindicação 2, em que as amostras de referência do bloco são amostras de referência filtradas e o método compreende ainda: gerar as amostras de referência filtradas do bloco preditor aplicando-se um filtro às amostras de referência iniciais do bloco preditor.
4. Método, de acordo com a reivindicação 1, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor: determinar o valor do primeiro peso para a respectiva amostra compreende determinar o valor do primeiro peso para a respectiva amostra realizando-se uma operação de desvio no valor inicial do primeiro peso por uma quantidade com base na distância entre a respectiva amostra e o primeiro limite do bloco preditor; e determinar o valor do segundo peso compreende determinar o valor do segundo peso para a respectiva amostra realizando-se a operação de desvio no valor inicial do segundo peso por uma quantidade com base na distância entre a respectiva amostra e o segundo limite do bloco preditor.
5. Método, de acordo com a reivindicação 1, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor, o valor do quarto peso para a respectiva amostra é igual a (64 — wT — wL — wTL), onde wT é o valor do segundo peso para a respectiva amostra, wL é o valor do primeiro peso para a respectiva amostra, e wTL é o valor do terceiro peso para a respectiva amostra, o valor de deslocamento é igual a 32, e o segundo valor é igual a 6.
6. Método, de acordo com a reivindicação 1, em que determinar o valor do terceiro peso para a respectiva amostra compreende: determinar o valor do terceiro peso para a respectiva amostra como (wL » 4) + (wT » 4), onde wL é o valor do primeiro peso para a respectiva amostra, wT é o valor do segundo peso para a respectiva amostra, e » é uma operação de desvio à direita.
7. Método, de acordo com a reivindicação 1, ainda compreendendo, para cada respectiva amostra no conjunto de amostras no bloco preditor: determinar o valor do terceiro peso para a respectiva amostra como uma soma de um primeiro parâmetro multiplicado pelo valor do primeiro peso para a respectiva amostra mais um segundo parâmetro multiplicado pelo valor do segundo peso para a respectiva amostra.
8. Método, de acordo com a reivindicação 7, ainda compreendendo: determinar, com base em uma direção de intra predição, os valores do primeiro parâmetro e o segundo parâmetro, obter valores do primeiro parâmetro e o segundo parâmetro de um fluxo de bits que compreende uma representação codificada dos dados de vídeo, ou determinar os valores do primeiro parâmetro e do segundo parâmetro com base em uma diferença de ângulo de intra predição ou uma diferença de índice de modo intra em relação a uma direção de predição horizontal e/ou uma vertical.
9. Método, de acordo com a reivindicação 1, em que o modo de intra predição é um modo de intra predição DC, um modo de intra predição horizontal, ou um modo de intra predição vertical.
10. Método de codificar dados de vídeo, o método compreendendo: gerar um bloco preditor usando um modo de intra predição, em que gerar o bloco preditor compreende: determinar um valor inicial de um primeiro peso; determinar um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinar um valor de um terceiro peso para a respectiva amostra; determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e gerar dados residuais com base no bloco preditor e um bloco de codificação dos dados de vídeo.
11. Método, de acordo com a reivindicação 10, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor: determinar o valor do primeiro peso para a respectiva amostra compreende determinar o valor do primeiro peso para a respectiva amostra realizando-se uma operação de desvio no valor inicial do primeiro peso por uma quantidade com base na distância entre a respectiva amostra e o primeiro limite do bloco preditor; e determinar o valor do segundo peso compreende determinar o valor do segundo peso para a respectiva amostra realizando-se a operação de desvio no valor inicial do segundo peso por uma quantidade com base na distância entre a respectiva amostra e o segundo limite do bloco preditor.
12. Método, de acordo com a reivindicação 10, em que determinar o valor do terceiro peso para a respectiva amostra compreende: determinar o valor do terceiro peso para a respectiva amostra como (wL » 4) + (wT » 4), onde wL é o valor do primeiro peso para a respectiva amostra, wT é o valor do segundo peso para a respectiva amostra, e » é uma operação de desvio à direita.
13. Método, de acordo com a reivindicação 10, ainda compreendendo, para cada respectiva amostra no conjunto de amostras no bloco preditor: determinar o valor do terceiro peso para a respectiva amostra como uma soma de um primeiro parâmetro multiplicado pelo valor do primeiro peso para a respectiva amostra mais um segundo parâmetro multiplicado pelo valor do segundo peso para a respectiva amostra.
14. Método, de acordo com a reivindicação 10, em que o modo de intra predição é um modo de intra predição DC, um modo de intra predição horizontal, ou um modo de intra predição vertical.
15. Aparelho para decodificar dados de vídeo, o aparelho compreendendo: uma ou mais mídias de armazenamento configuradas para armazenar os dados de vídeo; e um ou mais processadores configurados para: gerar um bloco preditor usando um modo de intra predição, em que o um ou mais processadores são configurados de modo que, como parte da geração do bloco preditor, o um ou mais processadores: determinam um valor inicial de um primeiro peso; determinam um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinam, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinam, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinam um valor de um terceiro peso para a respectiva amostra; determinam um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinam um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinam um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e reconstruir, com base no bloco preditor e dados residuais, um bloco decodificado dos dados de vídeo.
16. Aparelho, de acordo com a reivindicação 15, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor, o um ou mais processadores são configurados para determinar o valor primário para a respectiva amostra com base em amostras de referência do bloco preditor, as amostras de referência incluindo a amostra de referência esquerda para a respectiva amostra, a amostra de referência acima para a respectiva amostra, e a amostra de referência esquerda acima para a respectiva amostra.
17. Aparelho, de acordo com a reivindicação 16, em que as amostras de referência do bloco são amostras de referência filtradas e o um ou mais processadores são configurados para gerar as amostras de referência filtradas do bloco preditor aplicando-se um filtro às amostras de referência iniciais do bloco preditor.
18. Aparelho, de acordo com a reivindicação 15, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor, o um ou mais processadores são configurados para: determinar o valor do primeiro peso para a respectiva amostra realizando-se uma operação de desvio no valor inicial do primeiro peso por uma quantidade com base na distância entre a respectiva amostra e o primeiro limite do bloco preditor; e determinar o valor do segundo peso para a respectiva amostra realizando-se a operação de desvio no valor inicial do segundo peso por uma quantidade com base na distância entre a respectiva amostra e o segundo limite do bloco preditor.
19. Aparelho, de acordo com a reivindicação 15, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor, o valor do quarto peso para a respectiva amostra é igual a (64 — wT — wL — wTL), onde wT é o valor do segundo peso para a respectiva amostra, wL é o valor do primeiro peso para a respectiva amostra, e wTL é o valor do terceiro peso para a respectiva amostra, o valor de deslocamento é igual a 32, e o segundo valor é igual a
6.
20. Aparelho, de acordo com a reivindicação 15, em que o um ou mais processadores são configurados para determinar o valor do terceiro peso para a respectiva amostra como (wL » 4) + (wT >> 4), onde wL é o valor do primeiro peso para a respectiva amostra, wT é o valor do segundo peso para a respectiva amostra, e » é uma operação de desvio à direita.
21. Aparelho, de acordo com a reivindicação 15, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor, o um ou mais processadores são configurados para determinar o valor do terceiro peso para a respectiva amostra como uma soma de um primeiro parâmetro multiplicado pelo valor do primeiro peso para a respectiva amostra mais um segundo parâmetro multiplicado pelo valor do segundo peso para a respectiva amostra.
22. Aparelho, de acordo com a reivindicação 21,
em que o um ou mais processadores são ainda configurados para: determinar, com base em uma direção de intra predição, os valores do primeiro parâmetro e do segundo parâmetro, obter valores do primeiro parâmetro e do segundo parâmetro de um fluxo de bits que compreende uma representação codificada dos dados de vídeo, ou determinar os valores do primeiro parâmetro e do segundo parâmetro com base em uma diferença de ângulo de intra predição ou uma diferença de índice de modo intra em relação a uma direção de predição horizontal e/ou uma vertical.
23. Aparelho, de acordo com a reivindicação 15, em que o modo de intra predição é um modo de intra predição DC, um modo de intra predição horizontal, ou um modo de intra predição vertical.
24. Aparelho, de acordo com a reivindicação 23, em que o aparelho compreende: um circuito integrado, um microprocessador, ou um dispositivo de comunicação sem fio.
25. Aparelho para codificar dados de vídeo, o aparelho compreendendo: uma ou mais mídias de armazenamento configuradas para armazenar os dados de vídeo; e um ou mais processadores configurados para: gerar um bloco preditor usando um modo de intra predição, em que o um ou mais processadores são configurados de modo que, como parte da geração do bloco preditor, o um ou mais processadores:
determinam um valor inicial de um primeiro peso; determinam um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinam, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinam, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinam um valor de um terceiro peso para a respectiva amostra; determinam um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinam um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinam um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e gerar dados residuais com base no bloco preditor e um bloco de codificação dos dados de vídeo.
26. Aparelho, de acordo com a reivindicação 25, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor, o um ou mais processadores são configurados para: determinar o valor do primeiro peso para a respectiva amostra realizando-se uma operação de desvio no valor inicial do primeiro peso por uma quantidade com base na distância entre a respectiva amostra e o primeiro limite do bloco preditor; e determinar o valor do segundo peso para a respectiva amostra realizando-se a operação de desvio no valor inicial do segundo peso por uma quantidade com base na distância entre a respectiva amostra e o segundo limite do bloco preditor.
27. Aparelho, de acordo com a reivindicação 25, em que o um ou mais processadores são configurados para determinar o valor do terceiro peso para a respectiva amostra como (wL » 4) + (wT >> 4), onde wL é o valor do primeiro peso para a respectiva amostra, wT é o valor do segundo peso para a respectiva amostra, e » é uma operação de desvio à direita.
28. Aparelho, de acordo com a reivindicação 25, em que, para cada respectiva amostra no conjunto de amostras no bloco preditor, o um ou mais processadores são configurados para determinar o valor do terceiro peso para a respectiva amostra como uma soma de um primeiro parâmetro multiplicado pelo valor do primeiro peso para a respectiva amostra mais um segundo parâmetro multiplicado pelo valor do segundo peso para a respectiva amostra.
29. Aparelho, de acordo com a reivindicação 25, em que o modo de intra predição é um modo de intra predição DC, um modo de intra predição horizontal, ou um modo de intra predição vertical.
30. Aparelho, de acordo com a reivindicação 25, em que o aparelho compreende: um circuito integrado, um microprocessador, ou um dispositivo de comunicação sem fio.
31. Meio de armazenamento legível por computador tendo instruções armazenadas nele que, quando executadas, faz um ou mais processadores: gerar um bloco preditor usando um modo de intra predição, em que o um ou mais processadores são configurados de modo que, como parte da geração do bloco preditor, o um ou mais processadores: determinar um valor inicial de um primeiro peso; determinar um valor inicial de um segundo peso; para cada respectiva amostra em um conjunto de amostras no bloco preditor: determinar, com base no valor inicial do primeiro peso e uma distância entre a respectiva amostra e um primeiro limite do bloco preditor, um valor do primeiro peso para a respectiva amostra; determinar, com base no valor inicial do segundo peso e uma distância entre a respectiva amostra e um segundo limite do bloco preditor, um valor do segundo peso para a respectiva amostra; determinar um valor de um terceiro peso para a respectiva amostra; determinar um valor de um quarto peso para a respectiva amostra com base no valor do primeiro peso para a respectiva amostra, o valor do segundo peso para a respectiva amostra, e o valor do terceiro peso para a respectiva amostra; determinar um valor primário para a respectiva amostra de acordo com o modo de intra predição; e determinar um valor secundário para a respectiva amostra como um primeiro valor para a respectiva amostra desviada para a direita por um segundo valor, o primeiro valor para a respectiva amostra sendo uma soma de (i) o valor do primeiro peso para a respectiva amostra, multiplicado por uma amostra de referência esquerda para a respectiva amostra que está à esquerda da respectiva amostra, (ii) o valor do segundo peso para a respectiva amostra multiplicado por uma amostra de referência acima para a respectiva amostra que está acima da respectiva amostra, (iii) o valor do terceiro peso para a respectiva amostra multiplicado por uma amostra de referência esquerda acima para a respectiva amostra que está acima e à esquerda da respectiva amostra, (iv) o valor do quarto peso para a respectiva amostra multiplicado pelo valor primário para a respectiva amostra, e (v) um valor de deslocamento; e reconstruir, com base no bloco preditor e dados residuais, um bloco decodificado de dados de vídeo.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762570019P | 2017-10-09 | 2017-10-09 | |
US62/570,019 | 2017-10-09 | ||
US16/154,261 US10965941B2 (en) | 2017-10-09 | 2018-10-08 | Position-dependent prediction combinations in video coding |
US16/154,261 | 2018-10-08 | ||
PCT/US2018/054979 WO2019074905A1 (en) | 2017-10-09 | 2018-10-09 | COMBINATIONS OF POSITION-DEPENDENT PREDICTIONS IN VIDEO CODING |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112020006568A2 true BR112020006568A2 (pt) | 2020-10-06 |
Family
ID=65992690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112020006568-4A BR112020006568A2 (pt) | 2017-10-09 | 2018-10-09 | combinações de predição de dependentes de posição em codificação de vídeo |
Country Status (8)
Country | Link |
---|---|
US (1) | US10965941B2 (pt) |
EP (1) | EP3695606A1 (pt) |
KR (1) | KR102382410B1 (pt) |
CN (1) | CN111183645B (pt) |
BR (1) | BR112020006568A2 (pt) |
SG (1) | SG11202001959XA (pt) |
TW (1) | TWI763935B (pt) |
WO (1) | WO2019074905A1 (pt) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107181950B (zh) * | 2010-12-08 | 2020-11-06 | Lg 电子株式会社 | 一种执行内预测的编码装置和解码装置 |
EP3364653A4 (en) * | 2015-10-16 | 2019-07-10 | LG Electronics Inc. | FILTRATION METHOD AND DEVICE FOR IMPROVING THE PREDICTION IN A BILDCODING SYSTEM |
US10715818B2 (en) | 2016-08-04 | 2020-07-14 | Intel Corporation | Techniques for hardware video encoding |
WO2019091292A1 (en) * | 2017-11-13 | 2019-05-16 | Mediatek Singapore Pte. Ltd. | Method and apparatus for intra prediction fusion in image and video coding |
US10567752B2 (en) | 2018-07-02 | 2020-02-18 | Tencent America LLC | Method and apparatus for intra prediction for non-square blocks in video compression |
CN116347109A (zh) * | 2018-08-17 | 2023-06-27 | 北京字节跳动网络技术有限公司 | 一种处理视频数据的方法和装置 |
US11509908B2 (en) * | 2018-09-11 | 2022-11-22 | Panasonic Intellectual Property Corporation Of America | Encoder, decoder, encoding method, and decoding method |
TWI824006B (zh) | 2018-09-12 | 2023-12-01 | 大陸商北京字節跳動網絡技術有限公司 | 交叉分量線性建模中的下採樣 |
WO2020094057A1 (en) | 2018-11-06 | 2020-05-14 | Beijing Bytedance Network Technology Co., Ltd. | Position based intra prediction |
CN113632467B (zh) * | 2018-11-14 | 2024-10-25 | 夏普株式会社 | 用于将解块滤波器应用于重构视频数据的系统和方法 |
WO2020111982A1 (en) * | 2018-11-26 | 2020-06-04 | Huawei Technologies Co., Ltd. | Method of intra predicting a block of a picture |
CN113170122B (zh) | 2018-12-01 | 2023-06-27 | 北京字节跳动网络技术有限公司 | 帧内预测的参数推导 |
BR112021010428A2 (pt) | 2018-12-07 | 2021-08-24 | Beijing Bytedance Network Technology Co., Ltd. | Método para processamento de vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador |
CN118632022A (zh) | 2018-12-21 | 2024-09-10 | 株式会社 Xris | 视频信号编码/解码方法及其装置 |
WO2020169101A1 (en) * | 2019-02-22 | 2020-08-27 | Beijing Bytedance Network Technology Co., Ltd. | Neighbouring sample selection for intra prediction |
CN113491121B (zh) | 2019-02-24 | 2022-12-06 | 北京字节跳动网络技术有限公司 | 对视频数据进行编解码的方法、设备及计算机可读介质 |
US11025913B2 (en) | 2019-03-01 | 2021-06-01 | Intel Corporation | Encoding video using palette prediction and intra-block copy |
CN117880494A (zh) | 2019-03-24 | 2024-04-12 | 北京字节跳动网络技术有限公司 | 用于帧内预测的参数推导的条件 |
KR20210145824A (ko) * | 2019-04-19 | 2021-12-02 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 제산 없는 인트라 예측을 위한 방법 및 장치 |
WO2020216302A1 (en) | 2019-04-23 | 2020-10-29 | Beijing Bytedance Network Technology Co., Ltd. | Intra Prediction and Residual Coding |
US10855983B2 (en) | 2019-06-13 | 2020-12-01 | Intel Corporation | Encoding video using two-stage intra search |
CN113994671B (zh) | 2019-06-14 | 2024-05-10 | 北京字节跳动网络技术有限公司 | 基于颜色格式处理视频单元边界和虚拟边界 |
JP7433346B2 (ja) | 2019-06-14 | 2024-02-19 | 北京字節跳動網絡技術有限公司 | ビデオ単位境界および仮想境界の処理 |
CN114342372A (zh) * | 2019-06-19 | 2022-04-12 | 韩国电子通信研究院 | 帧内预测模式、以及熵编解码方法和装置 |
IL313252A (en) * | 2019-07-10 | 2024-08-01 | Guangdong Oppo Mobile Telecommunications Corp Ltd | Image component prediction method, encoder, decoder and storage medium |
CN117376556A (zh) * | 2019-08-14 | 2024-01-09 | 北京字节跳动网络技术有限公司 | 位置相关帧内预测样点滤波 |
WO2021027928A1 (en) | 2019-08-14 | 2021-02-18 | Beijing Bytedance Network Technology Co., Ltd. | Weighting factors for prediction sample filtering in intra mode |
CN114287131A (zh) | 2019-08-19 | 2022-04-05 | 北京字节跳动网络技术有限公司 | 基于计数器的帧内预测模式的更新 |
BR112022005046A2 (pt) | 2019-09-18 | 2022-07-05 | Beijing Bytedance Network Tech Co Ltd | Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador e meio de gravação não transitório legível por computador |
CN117278747A (zh) | 2019-09-22 | 2023-12-22 | 北京字节跳动网络技术有限公司 | 自适应环路滤波中的填充过程 |
JP7326600B2 (ja) | 2019-09-27 | 2023-08-15 | 北京字節跳動網絡技術有限公司 | 異なるビデオユニット間の適応ループフィルタリング |
EP4029263A4 (en) | 2019-10-10 | 2022-12-07 | Beijing Bytedance Network Technology Co., Ltd. | FILLING PROCEDURE AT UNAVAILABLE SAMPLING POINTS IN AN ADAPTIVE LOOP FILTERING |
GB2588406B (en) * | 2019-10-22 | 2022-12-07 | British Broadcasting Corp | Video encoding and video decoding |
EP4042684A4 (en) | 2019-10-29 | 2022-11-30 | Beijing Bytedance Network Technology Co., Ltd. | SIGNALING AN ADAPTIVE CROSS-COMPONENT LOOP FILTER |
JP7393550B2 (ja) | 2019-12-11 | 2023-12-06 | 北京字節跳動網絡技術有限公司 | クロス成分適応ループフィルタリングのためのサンプルパディング |
WO2021134759A1 (en) * | 2020-01-02 | 2021-07-08 | Huawei Technologies Co., Ltd. | An encoder, a decoder and corresponding methods of symmetric mode dependent intra smoothing when wide angle intra prediction is activated |
CN116325728A (zh) | 2020-06-30 | 2023-06-23 | 抖音视界有限公司 | 自适应环路滤波的边界位置 |
US12120296B2 (en) * | 2021-03-23 | 2024-10-15 | Tencent America LLC | Method and apparatus for video coding |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008004940A1 (en) | 2006-07-07 | 2008-01-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Video data management |
EP2493194A4 (en) | 2009-10-22 | 2014-07-16 | Univ Zhejiang | VIDEO AND PICTURE CODING / DECODING SYSTEM BASED ON THE PREDICTION OF SPATIAL DOMAINS |
US9113050B2 (en) * | 2011-01-13 | 2015-08-18 | The Boeing Company | Augmented collaboration system |
US9930366B2 (en) | 2011-01-28 | 2018-03-27 | Qualcomm Incorporated | Pixel level adaptive intra-smoothing |
US9288500B2 (en) | 2011-05-12 | 2016-03-15 | Texas Instruments Incorporated | Luma-based chroma intra-prediction for video coding |
US9020294B2 (en) | 2012-01-18 | 2015-04-28 | Dolby Laboratories Licensing Corporation | Spatiotemporal metrics for rate distortion optimization |
US9363516B2 (en) * | 2012-01-19 | 2016-06-07 | Qualcomm Incorporated | Deblocking chroma data for video coding |
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 |
US9924191B2 (en) * | 2014-06-26 | 2018-03-20 | Qualcomm Incorporated | Filters for advanced residual prediction in video coding |
US11463689B2 (en) * | 2015-06-18 | 2022-10-04 | Qualcomm Incorporated | Intra prediction and intra mode coding |
WO2017043816A1 (ko) | 2015-09-10 | 2017-03-16 | 엘지전자(주) | 인터-인트라 병합 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
US10425648B2 (en) | 2015-09-29 | 2019-09-24 | Qualcomm Incorporated | Video intra-prediction using position-dependent prediction combination for video coding |
JPWO2017068856A1 (ja) | 2015-10-21 | 2018-08-09 | シャープ株式会社 | 予測画像生成装置、画像復号装置および画像符号化装置 |
US10455228B2 (en) | 2016-03-21 | 2019-10-22 | Qualcomm Incorporated | Determining prediction parameters for non-square blocks in video coding |
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) |
CN107071417B (zh) | 2017-04-10 | 2019-07-02 | 电子科技大学 | 一种用于视频编码的帧内预测方法 |
CN108810552B (zh) | 2017-04-28 | 2021-11-09 | 华为技术有限公司 | 图像预测方法和相关产品 |
WO2019009752A1 (en) | 2017-07-05 | 2019-01-10 | Huawei Technologies Co., Ltd. | DEVICES AND METHODS FOR VIDEO CODING |
US20190089952A1 (en) * | 2017-09-19 | 2019-03-21 | Futurewei Technologies, Inc. | Bidirectional Weighted Intra Prediction |
-
2018
- 2018-10-08 US US16/154,261 patent/US10965941B2/en active Active
- 2018-10-09 EP EP18793140.7A patent/EP3695606A1/en active Pending
- 2018-10-09 SG SG11202001959XA patent/SG11202001959XA/en unknown
- 2018-10-09 KR KR1020207009685A patent/KR102382410B1/ko active IP Right Grant
- 2018-10-09 TW TW107135646A patent/TWI763935B/zh active
- 2018-10-09 CN CN201880064834.5A patent/CN111183645B/zh active Active
- 2018-10-09 WO PCT/US2018/054979 patent/WO2019074905A1/en unknown
- 2018-10-09 BR BR112020006568-4A patent/BR112020006568A2/pt unknown
Also Published As
Publication number | Publication date |
---|---|
CN111183645B (zh) | 2023-11-17 |
CN111183645A (zh) | 2020-05-19 |
WO2019074905A1 (en) | 2019-04-18 |
KR20200057014A (ko) | 2020-05-25 |
EP3695606A1 (en) | 2020-08-19 |
SG11202001959XA (en) | 2020-04-29 |
TWI763935B (zh) | 2022-05-11 |
TW201924346A (zh) | 2019-06-16 |
KR102382410B1 (ko) | 2022-04-01 |
US20190110045A1 (en) | 2019-04-11 |
US10965941B2 (en) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112020006568A2 (pt) | combinações de predição de dependentes de posição em codificação de vídeo | |
US11197005B2 (en) | Cross-component prediction for video coding | |
ES2845673T3 (es) | Copia intrabloque a nivel de fragmento | |
US10200719B2 (en) | Modification of transform coefficients for non-square transform units in video coding | |
ES2927641T3 (es) | Fusionar filtros para múltiples clases de bloques para codificación de video | |
US11044473B2 (en) | Adaptive loop filtering classification in video coding | |
US20180091825A1 (en) | Interpolation filters for intra prediction in video coding | |
ES2970034T3 (es) | Suavizado e interpolación de intrapredicción de gran angular | |
BR112020006875A2 (pt) | projeto de baixa complexidade para fruc | |
BR112019027071A2 (pt) | intra-predição aperfeiçoada em codificação de vídeo | |
BR112021009721A2 (pt) | informação de movimento triangular para codificação de vídeo | |
BR112021015658A2 (pt) | Restrições no refinamento de vetor de movimento no lado do decodificador | |
BR112021015697A2 (pt) | Codificação de sub-bloco por intra predição generalizada em codificação de vídeo | |
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 | |
TW202415068A (zh) | 視訊寫碼中之三角合併模式索引之發信 | |
BR112020026713A2 (pt) | Modo de combinação dependente de suavização intra (mdis) com comutação de filtro de interpolação intra | |
BR112016027428B1 (pt) | Inicialização de paleta de preditor em codificação de vídeo com base em paleta | |
BR112016000863B1 (pt) | Previsão residual de componente intercor | |
US11539952B2 (en) | Implicit transform selection in video coding | |
BR112016008229B1 (pt) | Sistemas e métodos para derivação rps intercamada com base em dependência de previsão de referência de subcamada | |
BR112021000640A2 (pt) | Arredondamento de vetores de movimento para resolução de diferença de vetor de movimento adaptativa e precisão de armazenamento de vetor de movimento aumentada em codificação de vídeo | |
BR112021003869A2 (pt) | predição temporal de parâmetros de filtro de loop adaptativo com consumo reduzido de memória para codificação de vídeo | |
BR112021010946A2 (pt) | Partição de unidade de transformada (tu) com base em árvore para codificação de vídeo | |
BR112020025748A2 (pt) | Estimativa de probabilidade ponderada eficiente para codificação aritmética binária | |
BR112021011060A2 (pt) | Codificação de escape para níveis de coeficiente |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B350 | Update of information on the portal [chapter 15.35 patent gazette] |