BR112020006588A2 - predição afim em codificação de vídeo - Google Patents

predição afim em codificação de vídeo Download PDF

Info

Publication number
BR112020006588A2
BR112020006588A2 BR112020006588-9A BR112020006588A BR112020006588A2 BR 112020006588 A2 BR112020006588 A2 BR 112020006588A2 BR 112020006588 A BR112020006588 A BR 112020006588A BR 112020006588 A2 BR112020006588 A2 BR 112020006588A2
Authority
BR
Brazil
Prior art keywords
block
prediction
syntax
video
syntax structure
Prior art date
Application number
BR112020006588-9A
Other languages
English (en)
Inventor
Kai Zhang
Jianle Chen
Xin Zhao
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112020006588A2 publication Critical patent/BR112020006588A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

Um dispositivo para a decodificação de vídeo pode ser configurado para obter, a partir de uma estrutura de sintaxe em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, um elemento de sintaxe indicando se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; com base no elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; e utilizar o bloco preditivo e dados residuais para reconstruir o primeiro bloco.

Description

“PREDIÇÃO AFIM EM CODIFICAÇÃO DE VÍDEO”
[001] Este Pedido reivindica o benefício do Pedido Provisório US Nº62/570,417, depositado em 10 de outubro de 2017 e reivindica prioridade para o pedido de patente US Nº 16/155,744, depositado em 9 outubro de 2018, cujo conteúdo inteiro é incorporado por referência aqui.
CAMPO TÉCNICO
[002] A presente invenção refere-se a dispositivos, sistemas e métodos para codificação de vídeo.
FUNDAMENTOS
[003] As capacidades de vídeo digital podem ser incorporadas em 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), computadores laptop ou desktop, computadores de mesa, leitores de e-livro, câmeras digitais, dispositivos de gravação digital, aparelhos de reprodução digital, dispositivos de jogos de vídeo, consoles de videoconferência, telefones celulares ou de rádio via satélite, assim chamados "telefones inteligentes", dispositivos de teleconferência de vídeo, dispositivos de transmissão contínua de vídeo e semelhantes. Dispositivos de vídeo Digital implementam técnicas de compressão de vídeo, tais como aquelas 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), padrão ITU-T H.265, 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ção de vídeo digital mais eficientemente implementando tais técnicas de compressão de vídeo.
[004] Técnicas de compressão de vídeo realizam predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (isto é, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser referidos como blocos de códigos, Unidades de codificação (CUs) e/ou nós de codificação. Blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados utilizando predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P79B) de uma imagem podem utilizar predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. Predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo intracodificação e os dados residuais. Para maior compressão, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes de tranformada residual, que então podem ser quantificados.
SUMÁRIO
[005] Em geral, esta descrição descreve técnicas relacionadas à predição entre imagem, mais especificamente a compensação de movimento afins na codificação de vídeo baseada em bloco. As técnicas desta descrição podem ser aplicadas a padrões de codificação de vídeo atuais ou futuros.
[006] Em um exemplo, um método para decodificar dados de vídeo inclui obter, a partir de uma estrutura de sintaxe em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, um elemento de sintaxe indicando se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco, com base no elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizando a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; e utilizar o bloco preditivo e dados residuais para reconstruir o primeiro bloco.
[007] Em outro exemplo, um método de codificação de dados de vídeo inclui a determinação de que a predição afim de 6 parâmetros é habilitada para blocos correspondentes a uma estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; em resposta à determinação de que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizando um de predição afim de 4 parâmetros ou predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; utilizar o bloco preditivo para determinar dados residuais para o primeiro bloco; e incluindo, em um fluxo de bits, os dados residuais e uma estrutura de sintaxe compreendendo um elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe.
[008] Em outro exemplo, um dispositivo para decodificar dados de vídeo inclui uma memória configurada para armazenar dados de vídeo e um ou mais processadores acoplados à memória, implementado em conjunto de circuitos de processamento, e configurado para: obter, a partir de uma estrutura de sintaxe em um fluxo de bits compreendendo uma representação codificada dos dados de vídeo, um elemento de sintaxe indicando se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; com base no elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; e utilizar o bloco preditivo e dados residuais para reconstruir o primeiro bloco.
[009] Em outro exemplo, um dispositivo para codificar dados de vídeo, o dispositivo inclui uma memória configurada para armazenar dados de vídeo e um ou mais processadores acoplados à memória, implementado em conjunto de circuitos de processamento, e configurado para: determinar que a predição afim de 6 parâmetros é habilitada para blocos correspondentes a uma estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; em resposta à determinação de que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, o uso de uma predição afim de 4 parâmetros ou a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; utilizar o bloco preditivo para determinar os dados residuais para o primeiro bloco; e incluir, em um fluxo de bits, os dados residuais e uma estrutura de sintaxe compreendendo um elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe.
[0010] Em outro exemplo, um meio de armazenamento legível por computador que armazena instruções que, quando executadas por um ou mais processadores, fazem com que o um ou mais processadores obtenham, a partir de uma estrutura de sintaxe em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, um elemento de sintaxe indicando se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, em que os blocos correspondendo à estrutura de sintaxe compreender um primeiro bloco; com base no elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; e utilizar o bloco preditivo e dados residuais para reconstruir o primeiro bloco.
[0011] Em outro exemplo, um aparelho para decodificar dados de vídeo inclui meios para obter, a partir de uma estrutura de sintaxe em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, um elemento de sintaxe que indica se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, em que os blocos correspondendo à estrutura de sintaxe compreender um primeiro bloco; meios para utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco com base no elemento de sintaxe indicando que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe; e meios para utilizar o bloco preditivo e dados residuais para reconstruir o primeiro bloco.
[0012] Os detalhes de um ou mais aspectos da descrição são estabelecidos nos desenhos anexos e na descrição abaixo. Outras características, objetivos e vantagens das técnicas descritas nesta descrição serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0013] A Figura 1 é um diagrama de blocos que ilustra um exemplo de sistema de codificação e decodificação de vídeo que pode utilizar uma ou mais técnicas descritas nesta revelação.
[0014] As Figuras 2A e 2B são diagramas conceituais que ilustram uma estrutura de árvore binária quádrupla exemplar (QTBT), e uma unidade de árvore de codificação Correspondente (CTU).
[0015] A Figura 3 ilustra candidatos de vetor de movimento vizinho espacial (MV) para o modo de fusão.
[0016] A Figura 3B ilustra candidatos de MV vizinhos espaciais para o modo de Predição de Vetor de Movimento Avançado (AMVP).
[0017] A Figura 4 é um diagrama conceptual que ilustra um exemplo de modo afins de MV de dois pontos com quatro parâmetros afins.
[0018] A Figura 5 ilustra um campo de vetor de movimento afins (MVF) por sub-bloco.
[0019] A Figura 6A é um diagrama de blocos que ilustra um bloco atual e blocos vizinhos como usado no modo INTER_AF.
[0020] A Figura 6B ilustra uma lista de candidatos de predição de vetor de movimento afim exemplar.
[0021] A Figura 7A é um fluxograma que ilustra uma estratégia exemplar para a estimativa de movimento afim como adotado no modelo de Exploração Conjunta.
[0022] A Figura 7B é um fluxograma que ilustra uma estratégia iterativa exemplar para a estimativa de movimento afim.
[0023] A Figura 8A mostra blocos vizinhos usados ao codificar um bloco atual em modo AF_MERGE.
[0024] A Figura 8B ilustra o AF_MERGE quando um bloco vizinho esquerdo-inferior é codificado no modo afim.
[0025] A Figura 9 é um diagrama conceptual de um modelo afins com seis parâmetros.
[0026] A Figura 10A é um diagrama de blocos que ilustra a semente de movimento exemplar de MVs afins de blocos pai.
[0027] A Figura 10B é um diagrama de blocos que ilustra a semente de movimento exemplar de MVs afins de blocos pai.
[0028] A Figura 11 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo que pode implementar uma ou mais técnicas descritas nesta revelação.
[0029] A Figura 12 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo que pode implementar uma ou mais técnicas descritas nesta revelação.
[0030] A Figura 13 é um fluxograma que ilustra um processo de codificação de vídeo ilustrativo.
[0031] A Figura 14 é um fluxograma que ilustra um processo ilustrativo de decodificação de vídeo.
DESCRIÇÃO DETALHADA
[0032] O uso de modelos de movimento afins foi proposto para a provisão de uma compressão adicional de dados de vídeo. Um modelo de movimento afins para um bloco expressa a rotação do bloco em uma série de imagens. Um modelo de movimento afins de um bloco pode ser determinado com base em vetores de movimento de pontos de controle do bloco. Em algumas implementações, os pontos de controle do bloco são os cantos superior-esquerdo e superior-direito do bloco. Em algumas implementações, os pontos de controle do bloco incluem ainda o canto inferior esquerdo do bloco. Um codificador de vídeo (isto é, um codificador de vídeo ou um decodificador de vídeo) pode calcular vetores de movimento de sub-blocos do bloco com base nos vetores de movimento dos pontos de controle do bloco.
[0033] Duas técnicas principais foram propostas para sinalizar os vetores de movimento dos pontos de controle de um bloco. A primeira técnica é chamada de modo afim. A segunda técnica é chamada de modo de fusão afins. No modo afim, um codificador de vídeo gera uma lista de Candidatos de Predição de vetor de movimento afina (MVP) para um bloco atual. A lista de candidatos de conjunto afine MVP é uma lista de conjuntos Afins MVP. Cada conjunto afim MVP é um conjunto de MVPs correspondendo a diferentes pontos de controle do bloco atual. O codificador de vídeo sinaliza um índice que identifica para um decodificador de vídeo um conjunto associado de MVP associado na lista de candidatos de conjunto afine MVP. Adicionalmente, o codificador de vídeo sinaliza uma diferença de vetor de movimento (MVD) para cada um dos pontos de controle do bloco atual. O vetor de movimento de um ponto de controle pode ser igual ao MVD para o ponto de controle mais o preditor de vetor de movimento para o ponto de controle no conjunto de equino MVP Selecionado. O codificador de vídeo também sinaliza um índice de referência que identifica uma imagem de referência que o decodificador de vídeo é utilizado com o bloco atual. O decodificador de vídeo gera a mesma lista de candidatos de conjunto de MVP afins e utiliza o índice sinalizado para determinar o conjunto de MVP associado. O decodificador de vídeo pode adicionar os MVDs a vetores de movimento do conjunto de MVP selecionado para determinar o vetor de movimento dos pontos de controle do bloco atual.
[0034] No modo de fusão afins, um codificador de vídeo e um decodificador de vídeo identificam o mesmo bloco de fonte afim para um bloco atual. O bloco de fonte afim pode ser um bloco codificado com afins que vizinhos espacialmente no bloco atual. O codificador de vídeo e o decodificador de vídeo extrapolar os vetores de movimento dos pontos de controle do bloco atual a partir dos vetores de movimento dos pontos de controle do bloco de fonte afim. Por exemplo, o codificador de vídeo e o decodificador de vídeo podem construir um modelo de movimento afins que descreve vetores de movimento de localizações dentro do bloco atual. O modelo de movimento afins é definido por um conjunto de parâmetros afins. O codificador de vídeo e o decodificador de vídeo podem determinar os parâmetros afins com base nos vetores de movimento dos pontos de controle do bloco atual. O codificador de vídeo e o decodificador de vídeo podem determinar os vetores de movimento dos pontos de controle do bloco atual com base em vetores de movimento de pontos de controle do bloco de fonte afim.
[0035] Como será explicado em maiores detalhes abaixo, as técnicas desta descrição podem melhorar o custo global associado com a predição afim permitindo maior flexibilidade em termos dos tipos de predição afim que podem ser realizadas para um dado bloco, enquanto também mantendo overhead de sinalização eficiente. De acordo com as técnicas desta descrição, um elemento de sintaxe que indica se a predição afim de 6 parâmetros é habilitada para blocos correspondentes a uma estrutura de sintaxe, possivelmente em conjunto com outros elementos de sintaxe, pode ser usado para permitir certos tipos de predição afim quando esses tipos de predição afim resultam em compactação de vídeo melhorada, mas também pode reduzir o overhead de bits associado com a predição afim quando certos tipos de predição afim não melhoram a compressão por uma certa quantidade. Assim, a implementação das técnicas desta descrição pode permitir a codificação de vídeo e os dispositivos de decodificação de vídeo para a obtenção de uma melhor compensação de taxa-distorção.
[0036] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplar 100 que pode realizar as técnicas desta descrição. As técnicas desta descrição são geralmente dirigidas a codificação (codificação e/ou decodificação) de dados de vídeo. Em geral, dados de vídeo incluem quaisquer dados para processamento de vídeo. Assim, os dados de vídeo podem incluir vídeo cru, não codificado, vídeo codificado, vídeo decodificado (por exemplo, reconstruído), e metadados de vídeo, tais como dados de sinalização.
[0037] Conforme mostrado na Figura 1, o sistema 100 inclui um dispositivo fonte 102 que fornece dados de vídeo codificados a serem decodificados e exibidos por um dispositivo de destino 116, neste exemplo. Em particular, o dispositivo fonte 102 fornece os dados de vídeo para o dispositivo de destino 116 através de um meio legível por computador 110.0 Dispositivo fonte 102 e dispositivo de destino 116 pode ser qualquer dentre uma ampla gama de dispositivos, incluindo computadores de mesa, computadores notebook (isto é, laptop), computadores de mesa, caixas de mesa, aparelhos telefônicos, telefones inteligentes, televisões, câmeras, dispositivos de exibição, tocadores de mídia digital, consoles de videogame, dispositivo de transmissão contínua de vídeo, ou semelhantes. Em alguns casos, o dispositivo fonte 102 e o dispositivo de destino 116 podem ser equipados para comunicação sem fio, e assim podem ser referidos como dispositivos de comunicação sem fio.
[0038] No exemplo da Figura 1, o dispositivo fonte 102 inclui a fonte de vídeo 104, a memória 106, o codificador de vídeo 20, e a interface de saída 108. O dispositivo de destino 116 inclui a interface de entrada 122, o decodificador de vídeo 30, a memória 120 e o dispositivo de exibição 118. De acordo com esta descrição, o codificador de vídeo 20 do dispositivo fonte 102 e o decodificador de vídeo 30 do dispositivo de destino 116 podem ser configurados para aplicar as técnicas para a predição afim. Assim, o dispositivo fonte 102 representa um exemplo de um dispositivo de codificação de vídeo, enquanto o dispositivo de destino 116 representa um exemplo de um dispositivo de decodificação de vídeo. Em outros exemplos, um dispositivo fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo fonte 102 pode receber dados de vídeo a partir de uma fonte externa de vídeo, tal como uma câmera externa. Da mesma forma, o dispositivo de destino 116 pode fazer interface com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.
[0039] O sistema 100, conforme mostrado na Figura 1, é meramente um exemplo. Em geral, qualquer dispositivo de codificação e/ou decodificação de vídeo digital pode executar técnicas para predição afim. O dispositivo fonte 102 e o dispositivo de destino 116 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo fonte 102 gera dados de vídeo codificados para transmissão para o dispositivo de destino
116. Esta descrição refere-se a um dispositivo de "codificação" como um dispositivo que executa codificação (codificação e/ou decodificação) de dados. Assim, o codificador de vídeo 20 e o decodificador de vídeo 30 representam exemplos de dispositivos de codificação, em particular, um codificador de vídeo e um decodificador de vídeo, respectivamente. Em alguns exemplos, os dispositivos 102, 116 podem operar de maneira substancialmente simétrica, de modo que cada um dos dispositivos 102, 116 inclua componentes de codificação e decodificação de vídeo. Portanto, o sistema 100 pode suportar a transmissão de vídeo de uma via ou de duas vias entre os dispositivos de vídeo 102, 116, por exemplo, para transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo, ou videotelefonia.
[0040] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (isto é, dados de vídeo brutos, não codificados) e fornece uma série sequencial de imagens (também referidas como "quadros") dos dados de vídeo para o codificador de vídeo 20, que codifica os dados para as imagens. A fonte de vídeo 104 do dispositivo fonte 102 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo bruto previamente capturado e/ou uma interface de entrada de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo. Como alternativa adicional, a fonte de vídeo 104 pode gerar dados baseados em gráficos de computador como vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em cada caso, o codificador de vídeo 20 codifica os dados de vídeo capturados, pré- capturados ou gerados por computador. O codificador de vídeo 20 pode rearranjar as imagens da ordem recebida (algumas vezes referida como "ordem de exibição") em uma ordem de codificação para codificação. O codificador de vídeo 20 pode gerar um fluxo de bits incluindo dados de vídeo codificados. O dispositivo fonte 102 pode então emitir os dados de vídeo codificados através da interface de saída 108 no meio legível por computador 110 para recepção e/ou recuperação, por exemplo, pela interface de entrada 122 do dispositivo de destino 116.
[0041] A memória 106 do dispositivo fonte 102 e a memória 120 do dispositivo de destino 116 representam memórias de uso geral. Em alguns exemplos, as memórias 106, 120 podem armazenar dados de vídeo brutos, por exemplo, vídeo bruto a partir da fonte de vídeo 104 e dados de vídeo decodificados brutos a partir do decodificador de vídeo 30. Adicionalmente ou alternativamente, as memórias 106, 120 podem armazenar instruções de software executáveis por, por exemplo, codificador de vídeo 20 e decodificador de vídeo 30, respectivamente. Embora mostrado separadamente do codificador de vídeo 20 e do decodificador de vídeo 30 neste exemplo, deve ser entendido que o codificador de vídeo 20 e o decodificador de vídeo 30 também podem incluir memórias internas para propósitos funcionalmente similares ou equivalentes. Além disso, as memórias 106, 120 podem armazenar dados de vídeo codificados, por exemplo, saída do codificador de vídeo 20 e entrada para o decodificador de vídeo 30. Em alguns exemplos, partes das memórias 106, 120 podem ser alocadas como um ou mais armazenamentos temporários de vídeo, por exemplo, para armazenar dados de vídeo brutos, decodificados e/ou codificados.
[0042] O meio legível por computador 110 pode representar qualquer tipo de meio ou dispositivo capaz de transportar os dados de vídeo codificados a partir do dispositivo fonte 102 para o dispositivo de destino 116. Em um exemplo, o meio legível por computador 110 representa um meio legível por computador para habilitar dispositivo de fonte 102 para permitir que o dispositivo fonte 102 transmita dados de vídeo codificados diretamente para o dispositivo de destino 116 em tempo real, por exemplo, através de uma rede de radiofrequência ou rede baseada em computador. A interface de saída 108 pode modular um sinal de transmissão incluindo os dados de vídeo codificados, e a interface de entrada 122 pode modular o sinal de transmissão recebido, de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio. O meio de comunicação pode incluir um ou ambos de um meio de comunicação sem fio ou por fios, tal 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 baseada em pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo fonte 102 para o dispositivo de destino 116.
[0043] Em alguns exemplos, o dispositivo fonte 102 pode transmitir dados codificados da interface de saída 108 para o dispositivo de armazenamento 112. O dispositivo de armazenamento 112 pode incluir qualquer dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente, tal 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 outro meio de armazenamento digital adequado para armazenamento de dados de vídeo codificados.
[0044] Em alguns exemplos, o dispositivo fonte 102 pode emitir dados de vídeo codificados para o servidor de arquivos 114 ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo fonte 102. O dispositivo de destino 116 pode acessar dados de vídeo armazenados a partir do servidor de arquivos 114 através de transmissão contínua ou transferência. O servidor de arquivos 114 pode ser qualquer tipo de dispositivo servidor capaz de armazenar dados de vídeo codificados e transmitir os dados de vídeo codificados para o dispositivo de destino 116. O servidor de arquivos 114 pode representar um servidor de rede (por exemplo, para um website), um servidor de Protocolo de Transferência de arquivo (FTP), um dispositivo de rede de entrega de conteúdo, ou um dispositivo de armazenamento ligado por rede (NAS). O dispositivo de destino 116 pode acessar dados de vídeo codificados a partir do servidor de arquivos 114 através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isto pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão cabeada (por exemplo, DSL, modem de cabo, etc.), o servidor de arquivo 114 e a interface de entrada 122 podem ser configurados para operar de acordo com um protocolo de transmissão contínua, um protocolo de transmissão de download, ou uma combinação dos mesmos.
[0045] A interface de saída 108 e a interface de entrada 122 podem representar transmissores/receptores sem fio, modems, componentes de rede com fio (por exemplo, cartões de Ethernet), componentes de comunicação sem fio que operam de acordo com qualquer uma de uma variedade de padrões IEEE 802.11, ou outros componentes físicos. Em exemplos onde a interface de saída 108 e a interface de entrada 122 incluem componentes sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tais como dados de vídeo codificados, de acordo com um padrão de comunicação celular, tal como 4G, 4G-LTE (Evolução de Longo Prazo), LTE Avançado, 5G ou similar. Em alguns exemplos, onde a interface de saída 108 inclui um transmissor sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tais como dados de vídeo codificados, de acordo com outros padrões sem fio, tal como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (por exemplo, ZigBee ™), Padrão Bluetooth ™, ou similar. Em alguns exemplos, o dispositivo fonte 102 e/ou o dispositivo de destino 116 pode incluir dispositivos respectivos sistemas-em-um-chip (SoC). Por exemplo, o dispositivo fonte 102 pode incluir um dispositivo SoC para executar a funcionalidade atribuída ao codificador de vídeo 20 e/ou interface de saída 108, e o dispositivo de destino 116 pode incluir um dispositivo SoC para executar a funcionalidade atribuída ao decodificador de vídeo 30 e/ou interface de entrada 122.
[0046] As técnicas desta descrição podem ser aplicadas a codificação de vídeo em suporte de qualquer uma dentre uma variedade de aplicações multimídia, tais como transmissões de televisão através de ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo de transmissão contínua de Internet, tais como transmissão contínua adaptativa dinâmica através de HTTP (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outras aplicações.
[0047] A interface de entrada 122 do dispositivo de destino 116 recebe um fluxo de bits de vídeo codificado a partir do meio legível por computador 110 (por exemplo, dispositivo de armazenamento 112, servidor de arquivos 114, ou similar). O meio legível por computador de fluxo de vídeo codificado 110 pode incluir informações de sinalização definidas pelo codificador de vídeo 20, que também é usada pelo decodificador de vídeo 30, tal como elementos de sintaxe tendo valores que descrevem características e/ou processamento de blocos de vídeo ou outras unidades codificadas (por exemplo, fatias, imagens, grupos de imagens, sequências ou similares). O dispositivo de exibição 118 exibe imagens decodificadas dos dados de vídeo decodificados para um usuário. O dispositivo de exibição 118 pode representar qualquer dentre uma variedade de dispositivos de exibição, tais como um tubo de raios catódicos (CRT), um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED), ou outro tipo de dispositivo de exibição.
[0048] Embora não mostrado na Figura 1, em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser integrados com um codificador de áudio e/ou decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e/ou software, para lidar com fluxos multiplexados incluindo áudio e vídeo em um fluxo de dados comum. Se aplicável, unidades MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223, ou outros protocolos como o protocolo de Datagrama de usuário (UDP).
[0049] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser implementados como qualquer um de uma variedade de circuitos de codificador e/ou decodificador adequados, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados específicos de aplicativo (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação 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 executar as instruções em hardware utilizando um ou mais processadores para realizar as técnicas desta revelação. Cada um do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais podendo ser integrado como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo. Um dispositivo incluindo codificador de vídeo 20 e/ou decodificador de vídeo 30 pode incluir um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0050] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, tal como ITU-T H.265, também referido como Codificação de vídeo de alta eficiência (HEVC) ou extensões ao mesmo, tais como as extensões de codificação de vídeo multivistas e/ou escaláveis. Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou industriais, tal como o Modelo de Teste de Exploração Conjunta (JEM). As técnicas desta descrição, no entanto, não são limitadas a qualquer padrão de codificação particular.
[0051] ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) estão agora estudando a necessidade potencial de padronização da tecnologia de codificação de vídeo futura com uma capacidade de compressão que excede significativamente aquela do padrão HEVC atual (incluindo suas extensões atuais e extensões de longo prazo para codificação de conteúdo de tela e codificação de faixa dinâmica alta). Há evidência de que aperfeiçoamentos significativos na eficiência de codificação podem ser obtidos pela exploração das características de conteúdo de vídeo, especialmente para o conteúdo de alta resolução como 4K, com novas ferramentas de codificação dedicadas além de H.265/HEVC. Com base no trabalho de ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11), um novo padrão de codificação de vídeo, referido como padrão De codificação de vídeo versátil (VVC), está sob desenvolvimento pela Equipe de Vídeo De vídeo conjunta (JVET) de VCEG E MPEG. Um avanço antecipado do VVC está disponível no documento JVET- J1001 "Versátil Vídeo Coding (draft 1)" e sua descrição de algoritmo está disponível no documento JVET-J1002 "algoritmo descrição para Codificação De Vídeo versátil E Modelo de teste 1 (VTM 1)."
[0052] Em geral, o codificador de vídeo 20 e o decodificador de vídeo 30 podem executar a codificação baseada em bloco de imagens. O termo "bloco" refere-se geralmente a uma estrutura que inclui dados a serem processados (por exemplo, codificados, decodificados ou usados de outra forma no processo de codificação e/ou decodificação). Por exemplo, um bloco pode incluir uma matriz bidimensional de amostras de dados de luminância e/ou crominância. Em geral, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados de vídeo representados em formato YUV (por exemplo, Y, Cb, Cr). Isto é, ao invés de codificar os dados vermelho, verde e azul (RGB) para amostras de uma imagem, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar componentes de luminância e crominância, onde os componentes de crominância podem incluir ambos os componentes de crominância vermelha e de crominância azul. Em alguns exemplos, o codificador de vídeo 20 converte os dados formatados RGB recebidos em uma representação YUV antes da codificação, e o decodificador de vídeo 30 converte a representação YUV para o formato RGB. Alternativamente, unidades pré- e pós-processamento (não mostradas) podem executar estas conversões.
[0053] Esta descrição pode geralmente referir- se à codificação (por exemplo, codificação e decodificação) de imagens para incluir o processo de codificação ou decodificação de dados da imagem. Similarmente, esta descrição pode se referir à codificação de blocos de uma imagem para incluir o processo de codificação ou decodificação de dados para os blocos, por exemplo, predição e/ou codificação residual. Um fluxo de bits de vídeo codificado geralmente inclui uma série de valores para elementos de sintaxe representativos de decisões de codificação (por exemplo, modos de codificação) e divisão de imagens em blocos. Assim, as referências para a codificação de uma imagem ou bloco devem ser entendidas como valores de codificação para elementos de sintaxe que formam a imagem ou bloco.
[0054] O HEVC define vários blocos, incluindo unidades de Codificação (CUs), unidades de Predição (PUs) e unidades de transformada (TUs). De acordo com o HEVC, um codificador de vídeo (tal como o codificador de vídeo 20) divide uma unidade de árvore de Codificação (CTU) Em CUs de acordo com uma estrutura quádrupla. Isto é, as partições de codificador de vídeo CTUs e CUs em quatro quadrados não sobrepostos iguais, e cada nó da quadtree possui zero ou quatro nós filhos. Nós sem nós filhos podem ser referidos como "nós de folha", e CUs de tais nós de folha podem incluir um ou mais PUs e/ou um ou mais TUs. O codificador de vídeo pode adicionalmente dividir PUs e TUs. Por exemplo, em HEVC, uma coluna de quadtree residual (RQT) representa a partição de TUs. Em HEVC, As PUs representam dados de interpredição, enquanto que Os TUs representam dados residuais. CUs que são intra-previstas incluem informação intrapredição, tal como uma indicação intra- modo.
[0055] Como um outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para operar de acordo com JEM ou VVC. De acordo com JEM, um codificador de vídeo (tal como o codificador de vídeo 20) divide uma imagem em uma pluralidade de CTUs. O codificador de vídeo 20 pode dividir uma CTU de acordo com uma estrutura de árvore, tal como uma estrutura de quadtree-binária (QTBT). A Estrutura QTBT de JEM remove os conceitos de múltiplos tipos de partição, tais como a separação entre CUs, PUs e TUs de HEVC. A estrutura QTBT de JEM inclui dois níveis: um primeiro nível dividido de acordo com a divisão quádrupla, e um segundo nível dividido de acordo com a partição de árvore binária. Um nó raiz da estrutura QTBT corresponde a CTU. Nós de folha das árvores binárias correspondem a unidades de codificação (CUs).
[0056] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem utilizar uma única estrutura QTT para representar cada um dos componentes de luminância e crominância, enquanto em outros exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem utilizar duas ou mais Estruturas QTBT, tais como uma Estrutura QTBT para o componente de luminância e outra estrutura QTBT para ambos os componentes De crominância (ou duas estruturas QTBT para os respectivos componentes de crominância).
[0057] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para a utilização de partição quádrupla por HEVC, Partição QTBT de acordo com JEM, ou outras estruturas de partição. Para fins de explicação, a descrição das técnicas desta descrição é apresentada com relação à partição QTBT. Entretanto, deve- se entender que as técnicas desta descrição também podem ser aplicadas a codificadores de vídeo configurados para a utilização de partição quádrupla, ou outros tipos de partição também.
[0058] Esta descrição pode utilizar "NxN" e "N por N" intercambiavelmente para se referir às dimensões da amostra de um bloco (tal como uma CU ou outro bloco de vídeo) em termos de dimensões vertical e horizontal, por exemplo, 16x16 amostras ou 16 por 16 amostras. Em geral, uma CU 16x16 terá 16 amostras em uma direção vertical (y = 16) e 16 amostras em uma direção horizontal (x = 16). Do mesmo modo, um NxN CU geralmente tem N amostras em uma direção vertical e N amostras em uma direção horizontal, onde N representa um valor inteiro não negativo. As amostras em uma CU podem ser dispostas em linhas e colunas. Além disso, o Mesmo não precisa ter necessariamente o mesmo número de amostras na direção horizontal como na direção vertical. Por exemplo, a CUs pode incluir amostras NxM, onde M não é necessariamente igual a N.
[0059] O codificador de vídeo 20 codifica os dados de vídeo para as CUs que representa a predição e/ou informações residuais, e outras informações. A informação de predição indica como a CU deve ser prevista a fim de formar um bloco de predição para a CU. A informação residual representa geralmente diferenças de amostra por amostra entre amostras da CU antes da codificação e do bloco de predição.
[0060] Para prever uma CU, o codificador de vídeo 20 pode geralmente formar um bloco de predição para a CU através de interpredição ou intrapredição. Interpredição geralmente se refere à predição da CU Dos dados de uma imagem previamente codificada, enquanto que a intrapredição se refere geralmente à predição da CU Dos dados previamente codificados da mesma imagem. Para realizar a interpredição, o codificador de vídeo 20 pode gerar o bloco de predição utilizando um ou mais vetores de movimento. O codificador de vídeo 20 pode geralmente realizar uma busca de movimento para identificar um bloco de referência que corresponde intimamente à CU, por exemplo, em termos de diferenças entre a CU e o bloco de referência. O codificador de vídeo 20 pode calcular uma métrica de diferença usando uma soma de diferença absoluta (SAD), soma de diferenças quadradas (SSD), diferença absoluta média (MAD), diferenças quadradas Médias (MSD), ou outros tais cálculos de diferença para determinar se um bloco de referência casa estreitamente com a CU Atual. em alguns exemplos, o codificador de vídeo 20 pode prever a CU atual utilizando predição unidirecional ou predição bidirecional.
[0061] JEM também provê um modo de compensação de movimento afins, que pode ser considerado um modo de interpredição. No modo de compensação de movimento afins, o codificador de vídeo 20 pode determinar dois ou mais vetores de movimento que representam movimento não- translacional, tal como zoom em ou fora, rotação, movimento em perspectiva, ou outros tipos de movimento irregular.
[0062] Para realizar a intrapredição, o codificador de vídeo 20 pode selecionar um modo intrapredição para gerar o bloco de predição. JEM provê sessenta e sete modos intrapredição, incluindo vários modos direcionais, bem como modo plano e Modo DC. Em geral, o codificador de vídeo 20 seleciona um modo intrapredição que descreve amostras vizinhas a um bloco atual (por exemplo, um bloco de uma CU) a partir do qual prever amostras do bloco atual.Tais amostras podem geralmente estar acima, acima e para a esquerda, ou à esquerda do bloco atual na mesma imagem que o bloco atual, presumindo-se que o codificador de vídeo 20 codifica CTUs e CUs na ordem de varredura de varredura (esquerda para a direita, topo para fundo).
[0063] O codificador de vídeo 20 codifica os dados que representam o modo de predição para um bloco atual. Por exemplo, para modos de interpredição, o codificador de vídeo 20 pode codificar dados representando quais dos vários modos de interpredição disponíveis são usados, bem como informação de movimento para o modo correspondente. Para predição interdirecional ou bidirecional, por exemplo, o codificador de vídeo 20 pode codificar vetores de movimento utilizando predição de vetor de movimento avançado (AMVP) ou modo de fusão. Codificador de vídeo 20 pode utilizar modos similares para codificar vetores de movimento para modo de compensação de movimento afins.
[0064] Seguindo a predição, tal como intrapredição ou interpredição de um bloco, o codificador de vídeo 20 pode calcular dados residuais para o bloco. Os dados residuais, tais como um bloco residual, representam amostras por diferenças de amostra entre o bloco e o bloco de predição para o bloco, formado utilizando o modo de predição correspondente. O codificador de vídeo 20 pode aplicar uma ou mais transformadas ao bloco residual, para produzir dados transformados em um domínio de transformada em vez do domínio de amostra. Por exemplo, o codificador de vídeo 20 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada de inteiro, uma transformada de ondas pequenas, ou uma transformada conceitualmente similar aos dados de vídeo residuais. Adicionalmente, o codificador de vídeo 20 pode aplicar uma transformada secundária seguindo a primeira transformada, tal como uma transformada secundária não separável dependente de modo (MDNSST), uma transformada dependente de sinal, uma Transformada de Karhunen-Loeve (KLT), ou similar. O codificador de vídeo 20 produz coeficientes de transformada após a aplicação de uma ou mais transformadas.
[0065] Como notado acima, seguindo quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode realizar a quantificação dos coeficientes de transformada. A quantização se refere geralmente a um processo no qual coeficientes de transformada são quantificados para reduzir possivelmente a quantidade de dados utilizados para representar os coeficientes, proporcionando uma compressão adicional. Pela realização do processo de quantificação, o codificador de vídeo 20 pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. Por exemplo, o codificador de vídeo 20 pode circular um valor de n-bit para um valor m-bit durante a quantificação, onde n é maior do que m em alguns exemplos, para realizar a quantificação, o codificador de vídeo 20 pode executar um deslocamento para a direita do valor a ser quantificado.
[0066] Após a quantificação, o codificador de vídeo 20 pode varrer os coeficientes de transformada, produzir um vetor unidimensional da matriz bidimensional incluindo os coeficientes de transformada quantizados. A varredura pode ser projetada para colocar coeficientes de energia mais alta (e portanto frequência mais baixa) na frente do vetor e colocar coeficientes de transformada de energia mais baixa (e, portanto, frequência mais alta) na parte posterior do vetor. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantizados para produzir um vetor seriado, e então codificar entropia os coeficientes de transformada quantizados do vetor. Em outros exemplos, o codificador de vídeo 20 pode executar uma varredura adaptativa. Após a varredura dos coeficientes de transformada quantizados para formar o vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação aritmética binária adaptativa de contexto (CABAC). O codificador de vídeo 20 também pode codificar por entropia valores para elementos de sintaxe que descrevem metadados associados aos dados de vídeo codificados para utilização pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0067] Para realizar o CABAC, o codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode relacionar, por exemplo, se os valores vizinhos do símbolo são de valor zero ou não. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0068] O codificador de vídeo 20 pode adicionalmente gerar dados de sintaxe, tais como dados de sintaxe baseados em bloco, dados de sintaxe com base em imagem, e dados de sintaxe com base em sequência, para o decodificador de vídeo 30, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia, ou outros dados de sintaxe, tal como um conjunto de parâmetro de sequência (SPS), conjunto de parâmetro de imagem (PPS), ou conjunto de parâmetro de vídeo (VPS). O decodificador de vídeo 30 pode também decodificar tais dados de sintaxe para determinar como decodificar dados de vídeo correspondentes.
[0069] Desta maneira, o codificador de vídeo 20 pode gerar um fluxo de bits incluindo dados de vídeo codificados, por exemplo, elementos de sintaxe que descrevem a partição de uma imagem em blocos (por exemplo, CUs) e predição e/ou informações residuais para os blocos. Por fim, o decodificador de vídeo 30 pode receber o fluxo de bits e decodificar os dados de vídeo codificados.
[0070] Em geral, o decodificador de vídeo 30 realiza um processo recíproco para o executado pelo codificador de vídeo 20 para decodificar os dados de vídeo codificados do fluxo de bits. Por exemplo, o decodificador de vídeo 30 pode decodificar valores para elementos de sintaxe do fluxo de bits utilizando o CABAC de uma maneira substancialmente similar a, embora recíproco com o processo de codificação CABAC do codificador de vídeo 20. Os elementos de sintaxe podem definir a informação de partição de uma imagem em CTUs, e a divisão de cada CTU de acordo com uma estrutura de partição correspondente, tal como uma Estrutura QTBT, para definir as CUs da CTU. Os elementos de sintaxe podem ainda definir a predição e informações residuais para blocos (por exemplo, CUs) de dados de vídeo.
[0071] A informação residual pode ser representada, por exemplo, por coeficientes de transformada quantizados. O decodificador de vídeo 30 pode quantizar inversa e transformar inversa os coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 30 utiliza um modo de predição sinalizado (intra-ou interpredição) e informação de predição relacionada (por exemplo, informação de movimento para interpredição) para formar um bloco de predição para o bloco. O decodificador de vídeo 30 pode então combinar o bloco de predição e o bloco residual (em base amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 30 pode executar processamento adicional, tal como a realização de um processo de desbloqueio para reduzir os artefatos visuais ao longo dos limites do bloco.
[0072] Esta descrição pode geralmente referir- se a "sinalização" certas informações, tais como elementos de sintaxe. O termo "sinalização" pode geralmente referir- se à comunicação de elementos de sintaxe de valores e/ou outros dados utilizados para decodificar dados de vídeo codificados. Isto é, o codificador de vídeo 20 pode sinalizar valores para elementos de sintaxe no fluxo de bits. Em geral, a sinalização refere-se à geração de um valor no fluxo de bits. Conforme notado acima, o dispositivo fonte 102 pode transportar o fluxo de bits para o dispositivo de destino 116 substancialmente em tempo real, ou não em tempo real, tal como pode ocorrer ao armazenar os elementos de sintaxe ao dispositivo de armazenamento 112 para recuperação posterior pelo dispositivo de destino 116.
[0073] As Figuras 3A e 3B são um diagrama conceptual que ilustra um exemplo de Estrutura QTBT 130, e uma CTU 132. Correspondentes, as linhas sólidas representam divisão quádrupla, e linhas pontilhadas indicam divisão de árvore binária. Em cada nó dividido (isto é, não-folha) da árvore binária, um indicador é sinalizado para indicar qual tipo de divisão (isto é, horizontal ou vertical) é usado, onde 0 indica divisão horizontal e 1 indica divisão vertical neste exemplo. Para a divisão quádrupla, não há necessidade de indicar o tipo de divisão, já que os nós de quadtree dividem um bloco horizontalmente e verticalmente em 4 sub-blocos com igual tamanho. Consequentemente, o codificador de vídeo 20 pode codificar, e o decodificador de vídeo 30 pode decodificar, elementos de sintaxe (tais como informações de divisão) para um nível de árvore de regiões da estrutura QTBT 130 (isto é, as linhas sólidas) e elementos de sintaxe (tais como informações de divisão) para um nível de Árvore de predição da estrutura QTBT 130 (isto é, as linhas tracejadas). O codificador de vídeo 20 pode codificar, e o decodificador de vídeo 30 pode decodificar, dados de vídeo, tais como predição e dados de transformada, por exemplo, representado por nós terminais da estrutura QTBT 130.
[0074] Em geral, a CTU 132 da Figura 3B pode ser associada a parâmetros que definem tamanhos de blocos correspondentes aos nós da Estrutura QTBT 130 nos primeiro e segundo níveis. Estes parâmetros podem incluir um tamanho de CTU (representando um tamanho de CTU 132 em amostras), um tamanho mínimo de quadtree (MinQTSize, representando um tamanho mínimo de nó de folha de quadtree máximo), um tamanho de árvore binária máximo (MaxBTSize, representando um tamanho de nó de raiz de árvore binária permitida máximo), uma profundidade de árvore binária máxima (MaxBTDepth, representando uma profundidade de árvore binária permitida máxima), e um tamanho mínimo de árvore binária (MinBTSize, representando o tamanho mínimo de nó de folha de árvore binária permitida).
[0075] O nó raiz de uma estrutura QTBT correspondente a CTU Pode ter quatro nós filhos no primeiro nível da estrutura QTBT, cada um dos quais podendo ser dividido de acordo com a divisão quádrupla. Isto é, nós do primeiro nível são nós de folha (não tendo nós filhos) ou têm quatro nós filhos. O exemplo da estrutura QTBT 130 representa tais nós como incluindo o nó pai e os nós filhos tendo linhas sólidas para ramificações. Se os nós do primeiro nível não forem maiores do que o tamanho de nó de raiz de árvore binário máximo permitido (MaxBTSize), eles podem ser adicionalmente divididos por respectivas árvores binárias. A divisão de árvore binária de um nó pode ser repetida até que os nós resultantes da divisão alcancem o tamanho mínimo permitido do nó de folha de árvore binária (MinBTSize) ou a profundidade de árvore binária permitida Máxima (MaxBTDepth). O exemplo da estrutura QTBT 130 representa tais nós como tendo linhas tracejadas para ramificações. O nó de folha de árvore binária é referido como uma unidade de codificação (CU), que é utilizada para predição (por exemplo, intrapredição-imagem ou inter- imagem) e transformada, sem qualquer partição adicional. Como discutido acima, as CUs também podem ser referidas como "blocos de vídeo" ou "blocos".
[0076] Em um exemplo da estrutura de partição QTBT, o Tamanho de CTU é ajustado como 128x128 (amostras de luma e duas amostras de croma de 64x64 correspondentes), MinQTSize é ajustado como 16x16, o MaxBTSize é ajustado como 64x64, o MinBTSize (tanto para largura como altura) é ajustado como 4, e o MaxBTDepth é ajustado como 4. O particionamento quadrangular é aplicado à CTU primeiro para gerar nós de folha de quadtree. Os nós de folha quadtree podem ter um tamanho de 16x16 (isto é, o tamanho de MinQTSize) para 128x128 (isto é, o tamanho de CTU). Se o nó de raiz quádrupla é 1212x128, então o nó não será dividido ainda mais pela árvore binária, porque o tamanho excede o máximo (isto é, 64x64, neste exemplo). Caso contrário, o nó de quadtree de folha será dividido adicionalmente pela árvore binária. Portanto, o nó de folha quádrupla é também o nó raiz para a árvore binária e tem a profundidade de árvore binária quando a profundidade de árvore binária alcança MaxBTDepth (4, neste exemplo), nenhuma divisão adicional é permitida. Um nó de árvore binária tendo largura igual ao Tamanho Mínimo (4, neste exemplo) implica que nenhuma divisão horizontal adicional é permitida. Similarmente, um nó de árvore binária tendo uma altura igual a MinBTSize implica que nenhuma divisão vertical adicional é permitida para aquele nó de árvore binária. Conforme observado acima, os nós de folha da árvore binária são referidos como CUs e são adicionalmente processadas de acordo com predição e transformada sem partição adicional.
[0077] Em H.265/HEVC, para cada bloco, um conjunto de informações de movimento pode ser disponível. Um conjunto de informações de movimento contém informações de movimento para as direções de prognóstico para frente e para trás. Aqui, as direções de prognóstico para frente e para trás são duas direções de predição de um modo de predição bidirecional. Os termos "para frente" e "para trás" não têm necessariamente uma geometria, mas, ao invés disso, correspondem a duas listas de imagem de referência; a lista de imagem de referência 0 (RefPicList0) e a lista de imagem de Referência 1 (RefPicList1) de uma imagem atual. Quando apenas uma lista de imagem de referência está disponível para uma imagem ou fatia, apenas a RefPicList0 está disponível e a informação de movimento de cada bloco de uma fatia sempre é enviada.
[0078] Para cada direção de predição, a informação de movimento deve conter um índice de referência e um vetor de movimento. Em alguns casos, por simplicidade, um vetor de movimento propriamente dito pode ser chamado de forma que é suposto que tem um índice de referência associado. Um índice de referência é usado para identificar uma imagem de referência na lista de imagem de referência atual (RefPicList0 ou RefPicList1). Um vetor de movimento tem um componente horizontal e vertical.
[0079] Contagem de ordem de imagem (POC) é amplamente usada em padrões de codificação de vídeo para identificar uma ordem de exibição de uma imagem. Embora existam casos em que duas imagens dentro de uma sequência de vídeo codificada poderão ter o mesmo valor de POC, ela tipicamente não ocorre dentro de uma sequência de vídeo codificada. Quando as sequências de vídeo codificadas múltiplas estão presentes em um fluxo de bits, imagens com um mesmo valor de POC podem ficar mais próximas umas das outras em termos de ordem de decodificação. Valores de POC de imagens são tipicamente usados para construção de lista de imagem de referência, derivação de conjunto de imagem de referência como em HEVC e escala de vetor de movimento.
[0080] Um codificador de vídeo pode realizar predição interdirecional ou interpredição bidirecional para um bloco atual (por exemplo, uma CU ou PU). Quando da realização da interpredição unidirecional para o bloco atual, o codificador de vídeo utiliza um vetor de movimento para determinar uma localização em uma imagem de referência. O codificador de vídeo pode então gerar um bloco preditivo para o bloco atual. O bloco preditivo pode incluir um bloco de amostras na imagem de referência na localização indicada pelo vetor de movimento, ou um bloco de amostras interpoladas a partir de amostras da imagem de referência. Quando da realização de interpredição bidirecional, o codificador de vídeo pode executar este processo com uma segunda imagem de referência e um segundo vetor de movimento, gerando assim um segundo bloco preditivo para o bloco atual. Na interpredição bidirecional, os blocos preditivos gerados a partir de imagens de referência simples podem ser referidos aqui como blocos preditivos preliminares. Além disso, na interpredição bidirecional, o codificador de vídeo pode gerar, com base nos dois blocos preliminares, um bloco preditivo final para o bloco atual. Em alguns exemplos, o codificador de vídeo pode gerar o bloco preditivo final tal que cada amostra no bloco preditivo final é uma média ponderada de amostras correspondentes nos blocos preditivos preliminares.
[0081] Para suportar interpredição em uma imagem, um codificador de vídeo gera duas listas de imagem de referência para a imagem. As listas de imagem de referência da imagem incluem imagens de referência que estão disponíveis para utilização na realização da predição entre blocos na imagem. As duas listas de imagem de referência são comumente referidas como Lista 0 e Lista 1. Em um exemplo, cada imagem de referência na Lista de imagem 0 ocorre antes da imagem na ordem de saída. Neste exemplo, cada imagem de referência na Lista 1 de imagem ocorre após a imagem em ordem de saída. Portanto, o uso de uma imagem de referência na Lista 0 pode ser considerado uma primeira direção de interpredição e o uso de uma imagem de referência na lista 1 pode ser considerado uma segunda direção de interpredição. O codificador de vídeo 20 e o decodificador de vídeo 30 geram a Lista de imagens 0 com imagens de referência da mesma ordem. Da mesma forma, o codificador de vídeo 20 e o decodificador de vídeo 30 geram a lista 1 da imagem com imagens de referência da mesma ordem. Assim, o codificador de vídeo 20 pode indicar para o decodificador de vídeo 30 uma imagem de referência em uma lista de imagem de referência sinalizando um índice de referência que indica uma localização na lista de imagem de referência da imagem de referência.
[0082] O padrão HEVC provê múltiplos modos de interpredição, incluindo o modo de fusão e o modo de predição de vetor de movimento avançado (AMVP). Em outras palavras, no padrão HEVC, existem dois modos de interpredição, denominados fusão (salto é considerado como um caso especial de fusão) e modos de predição de vetor de movimento avançado (AMVP) respectivamente para uma unidade de previsão (PU). No modo de AMVP ou de fusão, uma lista candidata de vetor de movimento (MV) é mantida para os preditores de vetor de movimento múltiplo. O(s) vetor(es) de movimento(s), bem como os índices de referência no modo de fusão, da PU atual são gerados tomando-se um candidato a Partir da lista candidata de MV. A lista candidata de MV contém até 5 candidatos para o modo de fusão e apenas dois candidatos para o modo de AMVP. Um candidato de fusão pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento correspondendo a ambas as listas de imagem de referência (lista 0 e lista 1) e os índices de referência. Se um candidato de fusão é identificado por um índice de fusão, as imagens de referência são usadas para a predição dos blocos atuais, bem como os vetores de movimento associados são determinados. No entanto, sob o modo AMVP para cada direção de predição potencial a partir da lista 0 ou da lista 1, um índice de referência precisa ser sinalizado explicitamente, junto com um índice MVP para a Lista candidata de MV uma vez que o candidato AMV contém apenas um vetor de movimento. No modo de AMVP, os vetores de movimento previstos podem ser adicionalmente refinados. Como pode ser visto acima, um candidato de fusão corresponde a um conjunto completo de informações de movimento enquanto um candidato AMV contém apenas um vetor de movimento para uma direção de predição específica e índice de referência. Os candidatos para ambos os modos são derivados similarmente dos mesmos blocos vizinhos espaciais e temporais.
[0083] Mais especificamente, no modo de fusão, o codificador de vídeo 20 e o decodificador de vídeo 30 geram listas candidatas de vetor de movimento de fusão (MV) para uma PU. A lista candidata de MV de fusão para a PU inclui um ou mais candidatos de fusão, que também podem ser referidos como preditores de vetor de movimento (MVPs). Em HEVC, a lista Candidata de MV de fusão contém até 5 candidatos de fusão. Cada respectivo candidato de fusão na lista de candidatos de MV de fusão especifica um ou mais vetor de movimento (s) e um ou mais índices de referência (es). Por exemplo, um candidato de fusão pode especificar um vetor de movimento de lista 0 e/ou um vetor de movimento de lista 1 e pode especificar um índice de referência de lista 0 e/ou um índice de referência de lista 1. Um vetor de movimento de lista 0 é um vetor de movimento que indica uma localização em uma imagem de referência na lista 0. Um vetor de movimento de lista 1 é um vetor de movimento que indica uma localização em uma imagem de referência na lista
1. O codificador de Vídeo 20 pode sinalizar um índice de fusão que indica uma localização na lista candidata de MV de fusão de um candidato de fusão selecionado para a PU. O decodificador de vídeo 30 pode utilizar o índice de fusão para identificar o candidato de fusão selecionado. O decodificador de vídeo 30 pode então utilizar os vetores de movimento e os índices de referência do candidato de fusão selecionado como os vetores de movimento e os índices de referência da PU.
[0084] No modo de AMVP, o codificador de vídeo 20 gera uma lista de candidatos de AMVP de lista 0 e/ou uma lista candidata de AMVP de lista 1 para uma PU, qualquer uma das quais pode ser referida como uma lista de candidatos AMVP. O decodificador de vídeo 30 gera listas candidatas de AMVP que combinam com as listas candidatas de AMVP geradas pelo codificador de Vídeo 20 em HEVC, uma Lista de candidatos AMVP contém dois candidatos AMVP. Cada candidato AMV respectivo em uma lista de candidatos a 0 AMVP especifica um respectivo vetor de movimento de lista
0. Cada candidato AMV respectivo em uma lista candidata de AMVP de lista 1 especifica um vetor de movimento de lista 1 respectivo. No modo AMVP, se a PU for unidirecionalmente entre si da lista 0 ou bidirecionalmente interprevista, o codificador de vídeo 20 sinaliza uma lista de Índice MVP, um índice de referência de lista 0, e uma diferença de Vetor de movimento de lista 0 (MVD). A lista de índice MVP especifica a localização de um candidato AMVP selecionado na Lista de candidatos de AMVP de lista 0. O índice de referência de lista 0 especifica uma localização de uma imagem de referência de lista 0 selecionada. A lista 0 MVD especifica uma diferença entre um vetor de movimento de lista 0 da PU e o vetor de movimento de lista 0 especificado pelo candidato AMVP selecionado na Lista de candidatos de AMVP de lista 0. Consequentemente, o decodificador de vídeo 30 pode utilizar o índice MVP da lista 0 e a lista 0 MVD para determinar o vetor de movimento da lista 0 da PU. O decodificador de vídeo 30 pode então determinar um bloco preditivo preliminar ou final para a PU incluindo amostras correspondentes a uma localização na imagem de referência de Lista 0 selecionada identificada pelo vetor de movimento da Lista 0 da PU. O codificador de vídeo 20 pode sinalizar elementos de sintaxe similares para a Lista 1 e o decodificador de vídeo 30 pode utilizar os elementos de sintaxe para a Lista 1 de maneira similar.
[0085] Como pode ser visto acima, um candidato de fusão corresponde a um conjunto completo de informações de movimento, enquanto que um candidato AMV contém apenas um vetor de movimento para uma direção de predição específica. Os candidatos para o modo de fusão e o modo AMVP podem ser derivados de forma similar a partir dos mesmos blocos vizinhos espaciais e temporais.
[0086] A Figura 3A e a Figura 3B mostram exemplos de blocos vizinhos que podem ser usados para derivar candidatos de MV espaciais. Os candidatos de MV espacial são derivados dos blocos vizinhos mostrados na Figura 3 a e Na Figura 3B, para uma PU específica (PU0), embora os métodos que geram os candidatos a partir dos blocos diferem para os modos de fusão e AMVP. A Figura 3 ilustra os candidatos de MV vizinhos espaciais para o modo de fusão. No modo de fusão, até quatro candidatos de MV espaciais podem ser derivados com a ordem mostrada na Figura 3A com números e a ordem é a seguinte: esquerda (0), acima (1), acima da direita (2), abaixo da esquerda (3) e acima da esquerda (4).
[0087] A Figura 3B ilustra candidatos de MV vizinhos espaciais para o modo de AMVP.
No modo AMVP, os blocos vizinhos são divididos em dois grupos: um grupo esquerdo consistindo dos blocos 0 e 1, e um grupo acima consistindo dos blocos 2, 3 e 4 como mostrado na Figura 3B.
Para cada grupo, o candidato potencial em um bloco vizinho com referência à mesma imagem de referência que aquela indicada pelo índice de referência sinalizado tem a maior prioridade a ser escolhida para formar um candidato final do grupo.
E possível que todos os blocos vizinhos não contenham um vetor de movimento apontando para a mesma imagem de referência.
Portanto, se tal candidato não puder ser encontrado, o primeiro candidato disponível será escalonado para formar o candidato final, assim as diferenças de distância temporal podem ser compensadas.
Por exemplo, como parte de gerar uma lista candidata a 0 AMVP, o codificador de vídeo verifica se o bloco 0 é previsto a partir da lista 0 e, se assim For, se uma imagem de referência de lista 0 do bloco 0 é a mesma que a imagem de referência de lista 0 de PU atual.
Se O bloco 0 for previsto a partir da lista 0 e a lista de referência do bloco 0 e a mesma que a imagem de referência da lista 0 da PU atual, O codificador de vídeo inclui a lista do bloco do bloco 0 0 vetor de movimento na lista de candidatos a 0 AMVP.
Caso negativo, o codificador de vídeo verifica se o bloco 0 é previsto a partir da lista 1 e, se assim for, se a imagem de referência da lista 1 do bloco O é a mesma que a imagem de referência da lista 0 da PU.
Se o bloco 0 for previsto a partir da lista 0 e a imagem de referência da lista 1 do bloco 0 é a mesma que a imagem de referência da lista 0 da PU atual, o codificador de vídeo inclui o vetor de movimento da lista 1 do bloco O na lista de candidatos a 0 AMVP. Se a imagem de referência da Lista 1 do bloco O não for a mesma que a imagem de referência da Lista 0 da PU atual, o codificador de vídeo repete este processo com o bloco 01 em lugar do bloco 0.
[0088] Entretanto, se o bloco 1 não for previsto a partir da Lista 1 ou da lista de referência 1, a imagem de referência não é a mesma que a imagem de referência da lista 0 da PU Atual, o codificador de vídeo determina se o bloco 0 é previsto a partir da lista 0 e, se assim for, determinar se a imagem de referência da lista 0 do bloco 0 e a imagem de referência da lista 0 da PU Atual são ambas imagens de referência de longo prazo ou ambas as imagens de referência de curto prazo. Se a imagem de referência de lista 0 de bloco 0 e a imagem de referência de Lista 0 de PU atual são ambas as imagens de referência a longo prazo ou a imagem de referência de lista 0 de bloco 0 e a imagem de referência de Lista 0 de PU atual são as imagens de referência de curto prazo, o codificador de vídeo pode escalar o vetor de movimento de lista 0 de bloco 0 com base em uma diferença temporal entre a imagem de referência de Lista 0 de Bloco 0 e a imagem de referência da lista 0 de PU atual. O codificador de vídeo inclui a lista escalonada de vetor de movimento na lista de candidatos de AMVP de lista 0. Se a imagem de referência de lista 0 de bloco 0 for uma imagem de referência de longo prazo e a imagem de referência de lista 0 de PU atual é uma imagem de referência de curto prazo, ou vice-versa, o codificador de vídeo determina se o bloco 0 é previsto a partir da lista 1 e, caso positivo, determina se a imagem de referência de Lista 1 de bloco 0 e a imagem de referência de Lista 0 de PU atual são ambas imagens de referência de longo prazo ou ambas imagens de referência de curto prazo. Se a imagem de referência de Lista 1 de bloco 0 e a imagem de referência de Lista 0 de PU atual são ambas imagens de referência de longo prazo ou imagem de referência de Lista 0 de bloco 0 e a Imagem de referência de Lista 1 de PU atual são ambas imagens de referência de curto prazo, o codificador de vídeo pode escalonar o vetor de movimento da lista 1 de bloco 0 com base em uma diferença temporal entre a imagem de referência da lista 1 de bloco 0 e a imagem de referência da lista 0 da PU. O codificador de vídeo inclui a lista escalonada de vetor de movimento na lista de candidatos de AMVP de lista 0. Se a imagem de referência de Lista 1 de bloco 0 for uma imagem de referência de longo prazo e a imagem de referência de Lista 0 de PU atual é uma imagem de referência de curto prazo, ou vice-versa, o codificador de vídeo repete este processo com o bloco 1 em vez do bloco 0.
[0089] O codificador de vídeo pode executar um processo similar para os blocos 2, 3 e 4 a fim de incluir um segundo candidato na lista de candidatos de PVP da lista de PU Atual. Adicionalmente, o codificador de vídeo pode repetir este processo inteiro, intercambiando referências à lista 0 com a lista 1 e referência à lista 1 com a lista 0, para gerar a lista de candidatos de AMV 1 da lista de PU Atual.
[0090] Assim, no modo AVMP, os blocos vizinhos são divididos em dois grupos: grupo esquerdo consistindo dos blocos 0 e 1, e acima do grupo consistindo nos blocos
2, 3 e 4 como mostrado na figura 3B. Para cada grupo, o candidato potencial em um bloco vizinho com referência à mesma imagem de referência que aquela indicada pelo índice de referência sinalizado tem a maior prioridade a ser escolhida para formar um candidato final do grupo. É possível que todos os blocos vizinhos não contenham um vetor de movimento apontando para a mesma imagem de referência. Portanto, se tal candidato não puder ser encontrado, o primeiro candidato disponível pode ser escalonado para formar o candidato final; assim, as diferenças de distância temporal podem ser compensadas.
[0091] Um codificador de vídeo pode incluir um candidato de predição de vetor de movimento temporal (TMVP), se habilitado e disponível, em uma lista de candidatos de MV de Fusão Após candidatos de vetor de movimento espacial ou uma lista de candidatos AMVP. Por exemplo, no caso de AMVP, o codificador de vídeo pode incluir o Candidato TMVP na lista De candidatos AMVP se os blocos vizinhos espaciais não estiverem disponíveis (por exemplo, porque os blocos vizinhos espaciais estão fora de uma imagem, fatia ou limite de ladrilhos, porque os blocos vizinhos espaciais são intra-previstos, etc.). No modo de fusão, um candidato TMVP pode especificar os vetores de movimento da lista 0 e/ou Da lista 1 de um bloco vizinho temporal. Os índices de referência para o candidato TMVP no modo de fusão são sempre ajustados em 0. No modo AMVP, um Candidato TMVP especifica um vetor de movimento da lista 0 de um bloco vizinho temporal ou um Vetor de movimento da lista 1 do bloco vizinho temporal. O bloco vizinho temporal é um bloco em uma imagem de referência. O processo de derivação de vetor de movimento para um candidato TMVP pode ser o mesmo para ambos os modos de fusão e AMVP.
[0092] Como notado acima, um codificador de vídeo pode escalonar um vetor de movimento. Ao escalar um vetor de movimento, presume-se que o valor de um vetor de movimento é proporcional à distância das imagens no tempo de apresentação. Um vetor de movimento associa duas imagens, a imagem de referência, e a imagem contendo o vetor de movimento (a saber, a imagem contendo imagens). Quando um vetor de movimento é usado para prever o outro vetor de movimento, a distância da imagem contendo e a imagem de referência é calculada com base em valores de Contagem de Ordem de imagem (POC) da imagem de referência e da imagem contendo imagens.
[0093] Para um vetor de movimento previsto, uma nova distância (com base no POC) pode ser calculada com base no valor de POC de uma imagem contendo o bloco previsto de uma imagem de referência. O vetor de movimento é, por exemplo, escalonado com base nesses dois valores de POC. Para um candidato vizinho espacial, as imagens contendo os dois vetores de movimento são idênticas, enquanto as imagens de referência são diferentes. Em HEVC, o escalonamento de vetor de movimento se aplica a ambos TMVP e AMVP para candidatos vizinhos espaciais e temporais.
[0094] Além disso, em algumas implementações, se uma lista candidata de MV (por exemplo, uma lista candidata de MV de fusão ou uma lista de candidatos AMVP) não estiver completa (por exemplo, inclui menos do que um número predeterminado de candidatos), um codificador de vídeo pode gerar e inserir candidatos de vetor de movimento artificial no final da Lista de candidatos de MV até que a lista de candidatos de MV tenha o número requerido de candidatos. No modo de fusão, existem dois tipos de candidatos de MV artificiais: candidatos combinados derivados apenas para fatias B e candidatos zero. Um candidato combinado especifica uma combinação de um vetor de movimento de Lista 0 a partir de um candidato de fusão e um vetor de movimento de Lista 1 para um candidato de fusão diferente. Candidatos Zero são usados para predição de vetor de movimento somente se o primeiro tipo (isto é, candidatos combinados) não fornece candidatos artificiais suficientes. Um candidato a zero é um candidato que especifica um MV cujos componentes horizontal e vertical são cada um igual a 0.
[0095] Para cada par de candidatos que já estão na lista candidata e têm informações de movimento necessárias, candidatos de vetor de movimento combinado bidirecional são derivados por uma combinação do vetor de movimento do primeiro candidato com referência a uma imagem na lista 0 e o vetor de movimento de um segundo candidato com referência a uma imagem na lista 1.
[0096] Adicionalmente, um codificador de vídeo pode aplicar um processo de supressão para inserção candidata. Os candidatos a partir de diferentes blocos podem ser iguais, o que pode diminuir a eficiência de uma lista candidata de fusão/AMVP. Um processo de supressão é aplicado para resolver este problema. O mesmo compara um candidato contra os outros na lista de candidatos atual para evitar a inserção de candidato idêntico em certa extensão. Para reduzir a complexidade, somente números limitados de processo de supressão são aplicados ao invés de comparar cada potencial com todos os outros dispositivos existentes.
[0097] A compensação de movimento em H.265/HEVC é utilizada para gerar um preditor para o interbloco atual. Vetor de movimento de precisão de quarto pixel é usado e valores de pixel em posições fracionadas são interpolados utilizando valores de pixel inteiros vizinhos para ambos os componentes luma e croma.
[0098] Em muitos exemplos de padrões codec de vídeo, é aplicado apenas um modelo de movimento de tradução para predição de compensação de movimento (MCP). No mundo real, existem muitos tipos de movimentos, por exemplo, "zoom in/out", rotação, movimentos em perspectiva e outros movimentos irregulares. Se apenas um modelo de movimento de tradução for aplicado para MCP em tais sequências de teste com movimentos irregulares, ele afetará a precisão de predição e pode resultar em baixa eficiência de codificação. Por muitos anos, especialistas de vídeo têm tentado projetar muitos algoritmos para melhorar a MCP para maior eficiência de codificação. Em JEM, uma predição de compensação de movimento de transformada afim é aplicada para melhorar a eficiência de codificação. Proposto para lidar com modelos de movimento afins com 4 parâmetros como: Na equação (1), vx é um componente horizontal de um vetor de movimento para posição (x, y) dentro do bloco, e vy é um componente vertical do vetor de movimento para a posição
(x, y) dentro do bloco. Na equação (1), a, b, c, d, e, e f são parâmetros. Note que no modelo de movimento afins, diferentes posições dentro do bloco possuem diferentes vetores de movimento.
[0099] A Figura 4 é um diagrama conceptual que ilustra um exemplo de modo afins de MV de dois pontos com quatro parâmetros afins. O modelo de movimento afim de 4 parâmetros pode ser representado por um vetor de movimento de um ponto de controle superior-esquerdo (V0) e um vetor de movimento de um ponto de controle superior-direito (V1). A Figura 4 ilustra um modelo de movimento afins simplificado para um bloco atual 300. Como mostrado na figura 4, um campo de movimento afins do bloco é descrito por dois vetores de movimento de Ponto de controle MV0 e MV1. MV1 é um vetor de movimento de ponto de controle para um ponto de controle superior-esquerdo 302 do bloco atual
300. MV1 É um vetor de movimento de ponto de controle para um ponto de controle superior-direito 304 do bloco atual
300.
[00100] O campo de vetor de movimento (MVF) de um bloco é descrito pela seguinte equação: Na equação (2), vx é um componente horizontal de um vetor de movimento para uma posição (x, y) em um bloco; vy é um componente vertical do vetor de movimento para a posição (x, y) no bloco; (v0x, v0y) é um vetor de movimento do ponto de controle de canto superior esquerdo (por exemplo, ponto de controle superior-esquerdo 402); (v1x, v1y) é um vetor de movimento do ponto de controle de canto superior-direito (por exemplo, ponto de controle superior-direito 404); e w é uma largura do bloco. Assim, um codificador de vídeo pode utilizar a equação (2) para "extrapolar" vetores de movimento para posições (x, y) com base em vetores de movimento de pontos de controle do bloco. Nos exemplos do software JEM, a predição de movimento afins é somente aplicada a um bloco quadrado. Como extensão natural, a predição de movimento afins pode ser aplicada a um bloco não quadrado.
[00101] Para simplificar ainda mais a predição de compensação de movimento, a predição de transformada afim baseada em bloco pode ser aplicada. Assim, ao invés de derivar vetores de movimento para cada localização em um bloco, um codificador de vídeo pode derivar vetores de movimento para sub-blocos do bloco. Em JEM, os sub-blocos são blocos 4x4. Para derivar um vetor de movimento de um sub-bloco, o codificador de vídeo pode calcular o vetor de movimento de uma amostra central do sub-bloco de acordo com a equação (2). O codificador de vídeo pode então circular o vetor de movimento calculado para a precisão de fração de 1/16. O vetor de movimento arredondado pode ser referido aqui como um vetor de movimento de alta precisão. Então, o codificador de vídeo pode aplicar filtros de interpolação de compensação de movimento para gerar previsões (isto é, blocos preditivos) de cada um dos sub-blocos com vetores de movimento derivados.
[00102] A Figura 5 ilustra um exemplo de campo de vetor de movimento de afina (MVF) por sub-bloco. Como mostrado no exemplo da Figura 5, um bloco atual 400 tem um ponto de controle esquerdo superior 402 e um ponto de controle superior-direito 404. Um codificador de vídeo pode calcular, com base em um vetor de movimento 406 para o ponto de controle esquerdo superior 402 e um vetor de movimento 408 para o ponto de controle superior-direito 404, os vetores de movimento para sub-blocos do bloco atual
402. A figura 5 mostra os vetores de movimento dos sub- blocos como pequenas setas.
[00103] Após a MCP, o vetor de movimento de alta precisão de cada sub-bloco é arredondado e economizado como a mesma precisão que o vetor de movimento normal. Em alguns exemplos, o arredondamento do vetor de movimento de alta precisão só é executado quando a precisão dos vetores de movimento armazenado é menor que os vetores de movimento de alta precisão.
[00104] Existem dois modos de movimento afins em um exemplo De Modo JEM: AF_INTER e Modo AF_MERGE. Em JEM, o Modo INTER_AF pode Ser aplicado às CUs com largura e altura maiores do que 8. É sinalizado um Flag afins no nível de CU no fluxo de bits para indicar se o modo INTER_AF é usado. No modo INTER_AF, o codificador de vídeo 20 sinaliza um Índice de referência de lista 0 e/ou um índice de referência de lista 1 para o bloco atual para indicar uma Imagem de referência de lista 0 e/ou uma imagem de referência de lista 1.
[00105] No modo INTER_AF, o codificador de vídeo 20 e o decodificador de vídeo 30 formam, cada um, uma ou mais listas candidatas (isto é, listas candidatas de conjunto de MVP afins) para um bloco atual. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, construir uma lista de candidatos de conjunto de MVP de lista 0 e/ou uma lista de candidatos de conjunto de MVP para a lista 1. Cada uma das listas candidatas de conjuntos afins MVP inclui um respectivo conjunto de Conjuntos afins MVP. Em um modelo de movimento afim de 4 parâmetros, um conjunto de MVP afim em uma lista de conjuntos de Candidatos de conjunto de MVP de lista 0 especifica dois Vetores de movimento de lista 0 (isto é, um par de vetor de movimento). Em um modelo de movimento afim de 4 parâmetros, um conjunto afine MVP Ajustado em uma lista de candidatos de Conjunto MVP afine MVP especifica dois vetores de movimento da lista 1.
[00106] Inicialmente, um codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) tenta preencher uma lista de candidatos de conjunto de MVP afins com pares de vetor de movimento do tipo utilizando blocos vizinhos. A Figura 6A é um diagrama de blocos que ilustra um bloco atual 500 e blocos vizinhos como utilizado no modo INTER_AF. Como mostrado na Figura 6A, V0 é selecionado a partir dos vetores de movimento dos blocos a, B ou C o vetor de movimento do bloco vizinho é escalonado de acordo com a lista de referência e uma relação entre o POC da referência para o bloco vizinho, o POC da referência para a CU atual, e o POC da CU atual. Por exemplo, suponha que o codificador de vídeo selecione um vetor de movimento de lista 0 de um bloco vizinho (por exemplo, bloco A, B ou C) Como V0. Neste exemplo, o vetor de movimento da Lista 0 do bloco vizinho indica uma posição na imagem de referência do bloco vizinho (isto é, a referência para o bloco vizinho).
Além disso, neste exemplo, o codificador de vídeo 20 pode selecionar e sinalizar um índice de referência de Lista 0 indicando uma imagem de referência para a CU atual (isto é, a referência para a CU atual). Se a imagem de referência do bloco vizinho não for a mesma que a imagem de referência para a CU atual, o codificador de vídeo pode escalonar o vetor de movimento da Lista 0 do bloco vizinho com base em uma diferença entre uma distância temporal de referência e uma distância temporal atual. A distância temporal de referência é uma distância temporal entre o POC da imagem de referência do bloco vizinho e um POC da CU atual. A distância temporal atual é uma distância temporal entre o POC da CU atual e um POC da imagem de referência para a CU atual. O codificador de vídeo pode executar um processo similar para um vetor de movimento da Lista 1. A abordagem para selecionar v a partir dos blocos vizinhos D e E é similar.
[00107] Se o número de candidatos na lista de candidatos for menor do que 2, a lista de candidatos pode ser preenchida por pares de vetor de movimento compostos por duplicação de cada um dos candidatos AMVP {AMVP0, AMVP0} e {AMVP1, AMVP1}. Em outras palavras, um codificador de vídeo pode gerar dois candidatos AMVP da maneira descrita acima. Os dois candidatos AMVP são denominados AMBP0 e AMVP1. O codificador de vídeo pode então incluir, na lista candidata 520 da Figura 6B, um primeiro candidato de predição de vetor de movimento afina que especifica AMVP0 como um vetor de movimento para um primeiro ponto de controle e especifica AMVPO como um vetor de movimento para um segundo ponto de controle. Se o número de candidatos na lista de candidatos ainda for menor do que 2 após incluir o primeiro candidato afine MVP na lista candidata 520, o codificador de vídeo inclui um segundo candidato Afine MVP na lista candidata 520, onde o segundo candidato Afine MVP especifica AMVP1 Como o vetor de movimento para o primeiro ponto de controle e especifica AMVP1 como o vetor de movimento para o segundo ponto de controle.
[00108] Quando a lista candidata 520 é maior do que 2, o codificador de vídeo primeiramente classifica os candidatos na lista candidata 520 de acordo com a consistência dos vetores de movimento vizinhos (similaridade dos dois vetores de movimento em um par candidato). O codificador de vídeo somente mantém os primeiros dois candidatos, como mostrado na Figura 6B com o rótulo de linha "Tamanho = 2". O codificador de vídeo 20 pode utilizar uma verificação de custo de distorção de taxa para determinar qual candidato de conjunto de vetor de movimento é selecionado como a predição de vetor de movimento de ponto de controle (CPMVP) da CU atual. O codificador de vídeo 20 pode sinalizar no fluxo de bits um índice que indica a posição do CPMVP na lista candidata
520. O decodificador de vídeo 30 pode obter o índice do fluxo de bits e utilizar o índice para determinar qual dos candidatos na lista candidata 620 é o CMPVP. Depois que o CPMVP da CU afim atual é determinado, a estimativa de movimento afins é aplicada e o vetor de movimento do ponto de Controle (CMV) é encontrado. O codificador de vídeo 20 sinaliza no fluxo de bits uma diferença entre o CPMV e o CPMVP. Em outras palavras, o codificador de vídeo 20 sinaliza uma diferença de vetor de movimento (MVD) no fluxo de bits.
[00109] Para cada CU/PU cujo tamanho é igual ou maior do que 16x16, O modo INTER_AF pode ser aplicado como segue. Se a CU/PU atual estiver no modo INTER_AF, um indicador Afins no nível de CU/PU é sinalizado no fluxo de bits. Uma lista de candidatos é construída utilizando-se os blocos reconstruídos válidos vizinhos. Como mostrado na Figura 6A, v0 é selecionado dos vetores de movimento dos blocos A, B ou C o vetor de movimento do bloco vizinho é escalonado de acordo com a lista de referência e a relação entre o POC da referência para o bloco vizinho, o POC da referência para a CU/PU atual e o POC da CU/PU atual. A abordagem para selecionar v1 do bloco vizinho D e E é similar. Se o número de listas candidatas for menor do que 2, os candidatos de AMVP são designados para o custo de otimização de distorção de taxa v0 e v1 (RDO), o custo da CU/PU atual é usado para determinar qual (v0, v1) é selecionado como a predição do Vetor de movimento do ponto de controle (CPMVP) da CU/PU atual. O índice para indicar a posição do CPMVP na lista candidata é sinalizado no fluxo de bits. Depois que o CPMVP da condição atual CU/PU é determinado, estima-se que a estimativa de movimento afins é aplicada E o CMV é encontrado. Então, a diferença entre o CPMV e o CPMVP é codificada no fluxo de bits. A predição de compensação de movimento afins mencionada acima é aplicada para gerar os resíduos da CU/PU atual. Finalmente, os resíduos da CU/PU atual são transformados, quantificados e codificados no fluxo de bits como o procedimento tradicional.
[00110] A Figura 7 é um fluxograma que mostra um processo de algoritmo de estimativa de movimento exemplar (ME) para um codificador baseado em JEM. ME afim aplica uma estratégia iterativa como mostrado na Figura 7B. A pesquisa começa com uma semente (MV0, MV1). Em cada iteração, é derivado um refinado (MV0, MV1). Depois das iterações de MaxIteration, o melhor (MV0, MV1) com a soma Mínima de custo De Distorção transformada Absoluta (SAD) é emitido como os movimentos afins para este bloco.
[00111] A semente (MV0, MV1) é importante para encontrar os melhores movimentos afins. No procedimento ME afim, vários conjuntos de (MVP0, MVP1) para movimentos afins são utilizados como candidatos. Um MV encontrado pelo ME normal para interpredição não afim também pode ser considerado como candidato (MV, MV) para a interpredição afim. Estes candidatos são comparados pelo custo de SAD da compensação de movimento afins. Os movimentos com o custo mínimo são tratados como os movimentos de sementes.
[00112] No exemplo da Figura 7B, o codificador de vídeo 20 determina um MV de semente de entrada como (MV0, MV1) [0], calcula o custo [0], determina Best1 = 0 (650). O codificador de vídeo 20 ajusta i igual a zero (652). Para i = 0 a i +1 ≥ MaxIteração, o codificador de vídeo 20 deriva (MV0, MV1)[i +1] de (MV0, MV1) [i] (654). O [i+1] codificador de vídeo 20 calcula o custo e se (custo [i+1] [i] menor do que o custo ), então o codificador de vídeo [i +1] 20 ajusta Best1 igual a i +1 (656). Se (MV0, MV1) igualar (MV0, MV1)[i] (658, sim), então as saídas do Codificador de vídeo 20 (MV0, MV1)[best] (660). Em outras palavras, se o processo de refinamento não melhorar o MV de semente anterior, então o processo de refinamento pára.
(MV0, MV1)[best] pode ser de MV0, MV1) [i +1] ou (MV0, MV1) [i] . [i +1] [i] Se (MV0, MV1) não é igual (MV0, MV1) (658, n0) e i +1 não é ≥ MaxIteração (662, não), então o codificador de vídeo 20 incrementa i (664) e repete as etapas 654 e 656 até que as condições de uma das etapas 658 ou 662 sejam satisfeitas.
[00113] Quando a CU/PU atual é aplicada na modalidade AF MERGE, ela obtém o primeiro bloco codificado com o modo afim a partir dos blocos reconstruídos vizinhos válidos. A ordem de seleção para o bloco candidato é a esquerda, acima, acima da direita, da esquerda para a esquerda, conforme mostrado na Figura 8A. A Figura 8A mostra blocos vizinhos usados ao codificar um bloco atual 700 em modo AF_MERGE. Uma ordem de visita (isto é, uma ordem de seleção) para os blocos vizinhos é da esquerda (A), acima (B), acima da direita (C), do fundo esquerdo (D) Para a esquerda (E) como mostrado na figura 8A. Por exemplo, se o bloco A do lado esquerdo vizinho é codificado no modo afim como mostrado na figura 8B, os vetores de movimento v2, v3 e v4 do canto superior esquerdo, canto direito e canto esquerdo da CU/PU que contém o bloco a são derivados. O vetor de movimento VQ do canto superior esquerdo da CU/PU atual é calculado de acordo com v2, v3 e v4. De forma similar, o vetor de movimento v1 da acima da direita da CU/PU atual é calculado com base em v2, v3 e v4. Depois que o CMV da CU/PU atual v0 e v1 é obtido, de acordo com o modelo de movimento de afina simplificado definido na equação (2), a MVF da CU/PU atual é gerada. Então, a equina MCP é aplicada como descrito em outro lugar neste relatório. A fim de identificar se a CU/PU atual é codificada com o modo AF_MERGE, uma sinalização afim é sinalizada no fluxo de bits quando há pelo menos um bloco vizinho codificado no modo afins. Se não existe nenhum bloco afins no bloco atual, conforme mostrado na figura 8A, não é escrito um indicador afim no fluxo de bits.
[00114] Por exemplo, neste exemplo, para X = 0 e/ou X = l, o codificador de vídeo pode extrapolar o Vetor de movimento da Lista X de um ponto de controle superior- esquerdo do bloco B vizinho para gerar o Vetor de movimento da Lista X de um ponto de controle superior-esquerdo do bloco atual 700, o uso de Um índice de referência de lista X do ponto de controle superior-esquerdo do bloco B vizinho como o Índice de referência da lista X do ponto de controle superior-esquerdo do bloco atual 700, extrapolar o Vetor de movimento de Lista X de um ponto de controle superior- direito do bloco B vizinho para gerar o Vetor de movimento de Lista X de um ponto de controle superior-direito do bloco atual 700, e utilizar um Índice de referência de lista X do ponto de controle superior-direito do bloco B vizinho como o Índice de referência de lista X do ponto de controle superior-direito do bloco atual 700. Neste exemplo, o codificador de vídeo pode utilizar a equação (2) acima, para extrapolar um vetor de movimento de um ponto de controle do Bloco B vizinho para determinar um vetor de movimento de um ponto de controle do bloco atual 700, utilizando-se uma posição (x, y) do ponto de controle do bloco atual 700 como x e y na equação (2).
[00115] Em HEVC, a codificação Aritmética Binária adaptativa de contexto (CAB AC) é usada para converter um símbolo em um valor binarizado. Este processo é chamado de binarização. A binarização permite a codificação aritmética binária eficiente por meio de um mapeamento único de elementos de sintaxe não binários a uma sequência de bits, que são denominados depósitos.
[00116] Em software de referência JE2.0, para o modo de fusão afins, somente o indicador de aflição é codificado, e o índice de fusão é inferido como sendo o primeiro modelo de aflição vizinho disponível na ordem de verificação predefinida A-B-C-D-E para o modo afim, duas sintaxes MVD São codificadas para cada lista de predição indicando a diferença de vetor de movimento entre vetor de movimento afim derivado e vetor de movimento previsto.
[00117] No Pedido de Patente US 15/587.044, depositado em 4 de maio de 2017, é descrito um esquema de predição de movimento afins comutável. Um bloco com predição afim pode escolher utilizar um modelo afina de quatro parâmetros ou modelo afina de seis parâmetros adaptativamente. Um modelo afim com 6 parâmetros é definido como: Um modelo afim com 6 parâmetros tem três pontos de controle. Em outras palavras, um modelo afim com 6 parâmetros é determinado por três vetores de movimento como mostrado Na FIG. MV0 é o primeiro vetor de movimento de ponto de controle no canto Superior esquerdo, MVI é o segundo vetor de movimento de ponto de controle no canto esquerdo do bloco, E MV2 é o terceiro vetor de movimento de ponto de controle no canto esquerdo-inferior do bloco,
conforme mostrado Na figura 9. O modelo afins construído com os três vetores de movimento é calculado como: onde w e h são a largura e a altura do bloco, respectivamente.
[00118] Uma maneira similar à equiparação para derivar os vetores de movimento do canto superior esquerdo e do canto superior esquerdo como descrito em outro lugar nesta descrição também pode ser usada para derivar as MVPs para o canto superior esquerdo, o canto superior esquerdo e o canto inferior esquerdo.
[00119] Esta descrição propõe várias técnicas para melhorar a predição de aflição. As seguintes técnicas de itens podem ser aplicadas individualmente. Alternativamente, qualquer combinação das seguintes técnicas pode ser aplicada juntas.
[00120] De acordo com uma primeira técnica da revelação, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para controlar individualmente diferentes tipos de predição afim com diferentes números de parâmetros em nível de sequência, nível de imagem, nível de fatia ou um grupo de blocos pré- definidos (por exemplo, CTU). Por exemplo, duas sinalizações como são sinalizadas no cabeçalho de fatia. O elemento de sintaxe affine4_enable_flag é igual a 1 se a predição afim com quatro parâmetros for habilitada na fatia; caso contrário, a predição afim com quatro parâmetros é desabilitada na fatia. O elemento de sintaxe affine_enable_flag é igual a 1 se a predição afim com seis parâmetros for habilitada na fatia; caso contrário, a predição afim com seis parâmetros é desabilitada na fatia.
[00121] O codificador de vídeo 20 pode ser configurado para sinalizar tais sinalizadores de controle em múltiplos níveis de conjuntos de parâmetros de sintaxe. Por exemplo, os flags são sinalizados no nível de sequência e nível de fatia, o indicador de nível de sequência é utilizado como condição para sinalização de sinalizadores de nível de fatia. Como outro exemplo, o codificador de vídeo 20 pode ser configurado para sinalizar os sinalizadores no nível de imagem e nível de fatia, o indicador de nível de imagem é usado como condição para sinalização de sinalizadores de nível de fatia. Conjunto de parâmetro SPS Sintaxe de cabeçalho de fatia ..............
[00122] De acordo com uma segunda técnica desta descrição, o codificador de vídeo 20 pode ser configurado para ajustar os elementos de sintaxe affine4_enable_flag e affine6_enable_flag devem ser 0 ou 1 independentemente. Quando os elementos de sintaxe affine4_enable_flag = 1 e affine6_enable_flag = 1, tanto a predição afim com quatro parâmetros como seis parâmetros são habilitadas. Quando os elementos de sintaxe affine4_enable_flag = 1 e affine6_enable_flag = 0, somente a predição afim com quatro parâmetros é habilitada. Quando os elementos de sintaxe affine4_enable_flag = 0 e affine6_enable_flag = 1, somente a predição afim com seis parâmetros é habilitada. Quando os elementos de sintaxe affine4_enable_flag = 0 e affine6_enable_flag = 0, tanto a predição afim com quatro parâmetros como seis parâmetros são desabilitados. Neste caso, o modo de fusão afins também é desabilitado.
[00123] De acordo com uma terceira técnica desta descrição, o codificador de vídeo 20 pode ser configurado para executar a sinalização de nível de bloco para predição de aflição dependente dos sinalizadores de controle afins no nível de sequência, nível de imagem ou nível de fatia. Por exemplo, quando os elementos de sintaxe affine4_enable_flag = 0 e affine6_enable_flag = 0, indicando que nenhuma previsão afim é habilitada na fatia, os elementos de sintaxe aff_merge_flag e aff_inter_flag não são sinalizados em nível de bloco. O elemento de sintaxe aff_type, que indica o tipo afine (modelo afine de quatro parâmetros ou modelo afine de seis parâmetros) no nível de bloco, não é sinalizado. Quando os elementos de sintaxe affine4_enable_flag = 0 e affine6_enable_flag = 1, ou os elementos de sintaxe affine4_enable_flag = 0, indicando que somente a predição afim com quatro parâmetros é usada, ou apenas a predição afim com seis parâmetros é usada, na fatia, os elementos de sintaxe, o indicador de fusão e o sinal inter-flag são sinalizados em nível de bloco. No entanto, o tipo de sintaxe do elemento de sintaxe não é sinalizado neste caso porque apenas um tipo de predição afim é usado. Quando os elementos de sintaxe affine4_enable_flag = 1 e affine6_enable_flag = 1, indicando a predição afim com quatro parâmetros e a predição afim com seis parâmetros são usados na fatia, os elementos de sintaxe, o indicador de fusão e o sinal inter- sinalização são sinalizados no nível do bloco. O tipo de sintaxe de elemento de sintaxe é também sinalizado neste caso para indicar qual tipo de predição de aflição é usado neste bloco. A tabela abaixo mostra a lógica no nível de bloco.
[00124] De acordo com uma quarta técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para decidir se utilizar a predição afim com X parâmetros com base nas imagens previamente codificadas. Esta decisão pode ser feita em codificador ou decodificador. Se a decisão for feita no codificador de vídeo 20, o elemento de sintaxe affineX_enable_flag pode ser sinalizado a partir do codificador de vídeo 20 para o decodificador de Vídeo 30. Por exemplo, X pode ser 4 ou 6.
[00125] De acordo com uma quinta técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para decidir se utilizar a predição afim com X parâmetros com base nas imagens previamente codificadas na mesma camada temporal da imagem atual. Estas imagens designadas previamente codificadas/decodificadas são chamadas "imagens na mesma categoria" da imagem ou fatia atual.
[00126] De acordo com a sexta técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar se utilizar a predição afim com parâmetros X com base nas imagens previamente codificadas com o Mesmo valor de POC%M, onde % indica o operador de módulo. POC é a contagem de ordem de imagem de uma imagem e M é um inteiro tal como 4, 8 ou 16. Estas imagens designadas previamente codificadas/decodificadas são denominadas "imagens na mesma categoria" da imagem ou fatia atual.
[00127] De acordo com uma sétima técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para contar a área S de blocos codificados com o modo afim com os parâmetros X previamente codificados na mesma categoria da imagem atual. A área total de blocos (ou blocos intercodificados, ou blocos codificados intercodificados, mas não Codificados por SKIP) nas imagens intercodificadas previamente codificadas/decodificadas na mesma categoria da imagem atual é P. a relação S/P É calculada. Se S/P < T, a predição afim com Parâmetros X é desabilitada, isto é, o elemento de sintaxe affineX_enable_flag é ajustado para 0. De outra forma, a predição afim com parâmetros X é habilitada, isto é, o elemento de sintaxe affineX_enable_flag é ajustado para 1. T é um limite, que pode ser um número real fixo ou enviado a partir do codificador para o decodificador.
[00128] De acordo com uma oitava técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para contar a área S de todos os blocos codificados com o modo afim e a interferência entre as imagens previamente codificadas na mesma categoria da imagem atual. O modo afins inclui todos os modos afins com quaisquer parâmetros possíveis, por exemplo, inclui o modo afim entre os parâmetros 4 e o modo afim entre os parâmetros 6. A área total de blocos nas imagens intercodificadas previamente codificadas/decodificadas na mesma categoria da imagem atual é P. a relação S/P É calculada. Se S/P < T, a predição afim com quaisquer Parâmetros X é desabilitada, isto é, o elemento de sintaxe affineX_enable_flag é ajustado para 0 para todos Os X, por exemplo, os elementos de sintaxe affine4_enable_flag e affine6_enable_flag são ajustados em 0.
[00129] De acordo com uma nona técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para inicializar P e S a 0 antes da codificação da primeira imagem intercodificada e são contados da primeira imagem. P e S são reinicializados em 0 após codificação/decodificação de um grupo de imagens e são contados novamente a partir da próxima imagem de codificação/decodificação. Por exemplo, P e S são reinicializados em 0 após codificação/decodificação de um grupo de imagens (GOP) na estrutura hierárquica-B E são contados novamente a partir da próxima imagem de codificação/decodificação. Em outro exemplo, P e S são reinicializados em 0 após codificação/decodificação de cada M Imagens (Tais como 16 imagens, 32 imagens, etc.) e são contados novamente a partir da próxima imagem de codificação/decodificação.
[00130] De acordo com uma décima técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para executar sempre o processo de compensação de movimento (MC) com o método de derivação de movimento dos modelos afins com 6 parâmetros, exemplificado como a equação (4). Se o bloco atual for codificado com o modelo afins com 4 parâmetros, MV2 é primeiramente derivado de MVO e MV1 seguindo a equação (2) com x = 0 e y = h. Então, a compensação de movimento é conduzida com o método de derivação de movimento dos modelos afins com 6 parâmetros, Com MVO, MV1, e a MV2 Derivada na primeira etapa.
[00131] De acordo com uma décima primeira técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para realizar A predição de equina com 4 parâmetros primeiro,
seguido pelo prognóstico de equina de ME com 6 parâmetros. A saída (MVO, MV1) do ME para Predição de aflição com 4 parâmetros é usada para gerar os movimentos de sementes do ME para predição afim com 6 parâmetros. Por exemplo, MV2 é derivado de MVO e MV1 seguindo a equação (2) com x = 0 e y = h. Então, (MVO, MV1, MV2) é tratada como um movimento de semente Candidato do ME para predição de aflição com 6 parâmetros. Ela é comparada com outros candidatos para gerar o melhor movimento de sementes.
[00132] De acordo com uma décima segunda técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para realizar A predição de equina com 6 parâmetros primeiro, seguido pelo prognóstico de equina de ME com 4 parâmetros. A saída (MVO, MV1, MV2) do ME para Predição afim com 4 parâmetros é usada para gerar os movimentos de sementes do ME para Predição afim com 6 parâmetros. Por exemplo, (MVO, MV1) é tratada como um movimento de semente candidato do ME para Predição de aflição com 4 parâmetros. Ela é comparada com outros candidatos para gerar o melhor movimento de sementes. Em outro exemplo, se MV2 for igual ao movimento derivado de MVO e MV1 seguindo a equação (2) com x = 0 e y = h, então a predição de equina de ME com 4 parâmetros é pulada. O bloco atual pode ser codificado com predição afim com 4 parâmetros, com movimentos (MVO, MV1).
[00133] De acordo com uma décima terceira técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para, para um bloco atual, herdar a semente de movimento de ME para predição de afins a partir de um bloco de origem. A Figura
10A mostra um exemplo para a equina ME com 4 parâmetros. Após a codificação do bloco grande, os movimentos afins (MVO, MV1) são armazenados. Ao codificar um bloco pequeno dentro do bloco grande (MV0', MV1') é derivado de MVO e MV1 utilizando a eq. (2). (MV0', MV1') é usada como uma semente candidata para o ME para predição afim com 4 parâmetros. A Figura 10B mostra um exemplo para a equina ME com 6 parâmetros. Após a codificação do bloco grande, os movimentos afins (MVO, MV1, MV2) são armazenados. Ao codificar um bloco pequeno dentro do bloco grande (MV0’, MV1', MV2') é derivado de MVO, MV1 e MV2 utilizando a equação (4). (MV0’, MV1', MV2') é usada como uma semente candidata para o ME para predição afim com 6 parâmetros.
[00134] De acordo com uma quarta técnica desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para tal que o MVO não seja permitido ser igual A MV1 para predição afim com 4 parâmetros. Em um exemplo, MV1yy não pode ser igual a MV0y se MV1x = = MV0x. Em outro exemplo, os vetores de movimento dos pontos de controle não são permitidos estarem próximos uns dos outros. Em um exemplo, se as abs(MV0x-MV1x) e abs(MVOy-Mvy) não puderem ser menores do que um dado valor limite.
[00135] De acordo com uma décima quinta técnica desta descrição, o codificador de vídeo 20 pode ser configurado para sinalizar condicionalmente o elemento de sintaxe aff_inter_flag dependendo de se os CPMVPs estão próximos um do outro. Se os CPMVPs estão próximos um do outro, por exemplo, a soma de diferença absoluta é menor do que um dado limite, o elemento de sintaxe aff_inter_flag é sinalizado e derivado como 0.
[00136] De acordo com uma sexta técnica desta descrição, se o elemento de sintaxe affine4_enable_flag for 1, o codificador de vídeo 20 pode ser configurado para selecionar os dois pontos de controle adaptativamente com base em um custo calculado a partir de um dado critério, e os dois pontos (por exemplo, selecionado de topo-esquerdo, superior-direito e inferior-esquerdo) que minimiza o custo é usado como os dois pontos de controle, e a derivação de vetor de movimento descrita em (2) será acomodada, dependendo da qual dois pontos de controle são selecionados. O critério pode incluir a diferença de vetor de movimento, a diferença de valor reconstruída.
[00137] A figura 11 é um diagrama de blocos que ilustra um codificador de vídeo exemplar 20 que pode implementar as técnicas desta descrição. Figura 11 é provida para propósitos de explicação e não deve ser considerada limitativa das técnicas como amplamente exemplificadas e descritas neste relatório. As técnicas desta descrição podem ser aplicáveis a vários padrões ou métodos de codificação.
[00138] No exemplo da Figura 11, o codificador de vídeo 20 inclui uma unidade de processamento de predição 1200, uma memória de dados de vídeo 1201, uma unidade de geração residual 1202, uma unidade de processamento de transformada 1204, uma unidade de quantização 1206, uma unidade de quantização inversa 1208, uma unidade de processamento de transformada inversa 1210, uma unidade de reconstrução 1212, uma unidade de filtro 1214, um buffer de imagem decodificada 1216 e uma unidade de codificação de entropia 1218. A unidade de processamento de predição 1200 inclui uma unidade de processamento interpredição 1220 e uma unidade de processamento intrapredição 1222. A Unidade de processamento interpredição 1220 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada).
[00139] A memória de dados de vídeo 1201 pode ser configurada para armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 1201 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. Buffer de imagem decodificada 1216 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para utilização na codificação de dados de vídeo pelo codificador de vídeo 20, por exemplo, em modos intra-ou intercodificação. A memória de dados de vídeo 1201 e o buffer de imagem decodificada 1216 podem ser formadas por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetostritiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 1201 e o buffer de imagem decodificada 1216 podem ser providas pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 1201 pode ser em chip com outros componentes do codificador de vídeo 20, ou fora de chip com relação àqueles componentes. A memória de dados de vídeo 1201 pode ser a mesma ou parte do meio de armazenamento 19 da Figura
1.
[00140] 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 associado a blocos de árvore de codificação luma igualmente dimensionados (CTBs) e CTBs correspondentes Da imagem. Como parte da codificação de CTU, a unidade de processamento de predição 1200 pode executar a partição 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 1200 pode dividir um CTB associado a CTU de acordo com uma estrutura de árvore.
[00141] O codificador de vídeo 20 pode codificar CUs de uma CTU para gerar representações codificadas das CUs (isto é, sequências codificadas). Como parte de codificação de uma CU, a unidade de processamento de predição 1200 pode dividir os blocos de codificação associados com a CU entre uma ou mais PUs da CU. Assim, cada PU pode ser associada a 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 que tem vários tamanhos. Conforme 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. Presumindo-se que o tamanho de uma CU particular é 2Nx2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN para intrapredição, e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, ou similares para interpredição. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar partição assimétrica para tamanhos de PU de 2 NxnU, 2 NxnD, 2NxnD, nLx2N, e nRx2N para interpredição.
[00142] A unidade de processamento interpredição 1220 pode gerar dados preditivos para uma PU. Como parte de geração dos dados preditivos para uma PU, a unidade de processamento interpredição 1220 executa interpredição na PU. Os dados preditivos para a PU Podem incluir blocos preditivos das informações de PU e de movimento para a PU. A unidade de processamento interpredição 1220 pode realizar diferentes operações para a PU De uma CU, dependendo se a PU está em uma fatia I, uma fatia P, ou uma fatia B. Em uma fatia I, todas as PUs são intraprevistas. Portanto, se a PU estiver em uma fatia I, a unidade de processamento interpredição 1220 não executa interpredição na PU. Assim, para blocos codificados em modo I, o bloco previsto é formado utilizando predição espacial dos blocos vizinhos previamente codificados dentro do mesmo quadro. Se uma PU estiver em uma fatia P, a unidade de processamento interpredição 1220 pode utilizar interpredição unidirecional para gerar um bloco preditivo da PU. Se uma PU estiver em uma fatia B, a unidade de processamento interpredição 1220 pode utilizar uma predição interdirecional ou bidirecional para gerar um bloco preditivo da PU. A unidade de processamento interpredição 1220 pode aplicar as técnicas para modelos de movimento afins, conforme descrito em outro lugar neste relatório.
[00143] A unidade de processamento intrapredição 1222 pode gerar dados preditivos para a PU Mediante a realização da intrapredição na PU. Os dados preditivos para a PU Podem incluir blocos preditivos da PU e De vários elementos de sintaxe. A unidade de processamento intrapredição 1222 pode realizar a intrapredição sobre as fatias em L, P, e B.
[00144] Para efetuar a intrapredição em uma PU, a unidade de processamento intrapredição 1222 pode utilizar múltiplos modos intrapredição para gerar múltiplos conjuntos de dados preditivos para a PU. A unidade de processamento Intrapredição 1222 pode utilizar amostras de blocos de amostras de PUs vizinhos para gerar um bloco preditivo para uma PU. As PUs vizinhas podem estar acima, acima e para a direita, acima e para a esquerda, ou à esquerda da PU, presumindo-se um pedido de codificação esquerdo-a-direito, superior-a-fundo para PUs, CUs e CTUs. A unidade de processamento intrapredição 1222 pode utilizar vários números de modos intrapredição, por exemplo, 33 modos de intrapredição direcional. Em alguns exemplos, o número de modos intrapredição pode depender do tamanho da região associada à PU.
[00145] A unidade de processamento de predição 1200 pode selecionar os dados preditivos para PUs de uma CU Dentre os dados preditivos gerados pela unidade de processamento interpredição 1220 para PUs ou os dados preditivos gerados pela unidade de processamento intrapredição 1222 para PUs. Em alguns exemplos, a unidade de processamento de predição 1200 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 preditivos dos dados preditivos selecionados podem ser referidos aqui como os blocos preditivos selecionados.
[00146] A unidade de geração residual 1202 pode gerar, com base nos blocos de codificação (por exemplo, blocos de codificação luma, Cb e Cr) para uma CU E os blocos preditivos selecionados (por exemplo, blocos de luma, Cb e Cr Preditivos) para as PUs da CU, Blocos residuais (por exemplo, blocos residuais luma, Cb e Cr) para a CU. Por exemplo, a unidade de geração residual 1202 pode gerar os blocos residuais da CU tal que cada amostra nos blocos residuais tem 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 preditivo selecionado correspondente de uma PU da CU.
[00147] A unidade de processamento de transformada 1204 pode realizar a partição dos blocos residuais de uma CU em blocos de transformada de TUs da CU. Por exemplo, a unidade de processamento de transformada 1204 pode executar a partição de quadtree para dividir os blocos residuais da CU Para transformar blocos de TUs da CU. Assim, uma TU pode ser associada a um bloco de transformada de luma e em dois blocos de transformada de croma. Os tamanhos e posições dos blocos de transformada de luma e croma de um De uma CU Podem ou não ser baseados nos tamanhos e posições dos blocos de predição das PUs Da CU. Uma estrutura quadtree conhecida como "quadtree residual" (RQT) pode incluir nós associados a cada uma das regiões. O TUs de uma CU pode corresponder a nós de folha da RQT.
[00148] A unidade de processamento de transformada 1204 pode gerar blocos de coeficientes de transformada para cada TU de uma CU pela aplicação de uma ou mais transformadas com os blocos de transformada dos TU.
A unidade de processamento de transformada 1204 pode aplicar várias transformadas em um bloco de transformada associado a uma TU. Por exemplo, a unidade de processamento de transformada 1204 pode aplicar transformada discreta de cosseno (DCT), uma transformada direcional ou uma transformada conceitualmente similar a um bloco de transformada. Em alguns exemplos, a unidade de processamento de transformada 1204 não aplica transformadas em um bloco de transformada. Em tais exemplos, o bloco de transformada pode ser tratado como um bloco de coeficiente de transformação.
[00149] A unidade de quantização 1206 pode quantizar os coeficientes de transformada em um bloco de coeficiente. O processo de quantificação pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bits pode ser arredondado para um coeficiente de transformada de m-bits durante a quantificação, onde n é maior que m. A unidade de quantização 1206 pode quantizar um bloco de coeficiente associado a uma TU de uma CU Com base em um valor de parâmetro de quantificação (QP) associado com a CU. O codificador de vídeo 20 pode ajustar o grau de quantificação aplicado aos blocos de coeficientes associados com uma CU ajustando o valor QP associado com a CU. A quantificação pode introduzir a perda de informação. Assim, os coeficientes de transformada quantizados podem ter uma precisão menor do que os coeficientes originais.
[00150] A unidade de quantização inversa 1208 e a unidade de processamento de transformada inversa 1210 podem aplicar quantização inversa e transformadas inversas a um bloco de coeficiente, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente. A unidade de reconstrução 1212 pode adicionar o bloco residual reconstruído às amostras correspondentes a partir de um ou mais blocos preditivos gerados pela unidade de processamento de predição 1200 para produzir um bloco residual de transformada reconstruído associado a uma TU. Pela reconstrução dos blocos de transformada para cada TU de uma CU deste modo, o codificador de vídeo 20 pode reconstruir os blocos de codificação da CU.
[00151] A unidade de filtro 1214 pode executar uma ou mais operações de desbloqueio para reduzir os artefatos de bloqueio nos blocos de codificação associados a uma CU. O buffer de imagem decodificada 1216 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro 1214 realizar uma ou mais operações de desbloqueio nos blocos de codificação reconstruídos. A unidade de processamento interpredição 1220 pode utilizar uma imagem de referência que contém os blocos de codificação reconstruídos para a realização de interpredição em PUs de Outras imagens. Além disso, a unidade de processamento intrapredição 1222 pode utilizar blocos de codificação reconstruídos no buffer de imagem decodificada 1216 para realizar a intrapredição em outras PUs na mesma imagem que a CU.
[00152] A unidade de codificação de entropia 1218 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação de entropia 1218 pode receber blocos de coeficiente da unidade de quantização 1206 e pode receber elementos de sintaxe da unidade de processamento de previsão 1200. A unidade de codificação de entropia 1218 pode executar uma ou mais operações de codificação de entropia nos dados para gerar dados codificados por entropia. Por exemplo, a unidade de codificação de entropia 1218 pode executar uma operação de CABAC, uma operação de codificação de comprimento variável adaptativa de 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 de contexto baseada em sintaxe (SBAC), uma operação De codificação de Entropia de partição de Intervalo de probabilidade (PIPE), uma operação de Codificação exponencial-Golomb, ou outro tipo de operação de codificação por 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 1218. Por exemplo, o fluxo de bits pode incluir dados que representam valores de coeficientes de transformada para uma CU.
[00153] Desta maneira, o codificador de vídeo 20 representa um exemplo de um dispositivo configurado para codificar dados de vídeo e que inclui uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para incluir, em uma estrutura de sintaxe em um fluxo de bits que inclui uma representação codificada dos dados de vídeo, pelo menos um dentre um primeiro elemento de sintaxe ou um segundo elemento de sintaxe. A estrutura de sintaxe pode ser uma de um SPS, Um
PPS, um cabeçalho de fatias, ou uma CTU. O primeiro elemento de sintaxe pode indicar se a predição afim de 4 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, e o segundo elemento de sintaxe pode indicar se a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe. A uma ou mais unidades de processamento podem ser configuradas para ajustar o primeiro elemento de sintaxe e o segundo elemento de sintaxe independentemente. Com base na predição afim de 4 parâmetros sendo habilitada para um bloco atual do dado de vídeo ou predição afim de 6 parâmetros sendo habilitada para o bloco atual, a uma ou mais unidades de processamento podem ser configuradas para utilizar predição afim para gerar um bloco preditivo para o bloco atual e gerar dados residuais utilizando o bloco preditivo e o bloco atual.
[00154] A uma ou mais unidades de processamento podem ser configuradas para incluir, no fluxo de bits, com base no primeiro elemento de sintaxe que indica a predição afim de 4 parâmetros é habilitada para os blocos ou o segundo elemento de sintaxe que indica a predição afim de 6 parâmetros é habilitado para os blocos, pelo menos um dentre um terceiro elemento de sintaxe, um quarto elemento de sintaxe, e um quinto elemento de sintaxe. O terceiro elemento de sintaxe pode indicar se o modo de fusão afins é usado com o bloco atual, e o quarto elemento de sintaxe pode indicar se o modo afim é usado com o bloco atual. O quinto elemento de sintaxe pode indicar se o bloco atual é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros.
[00155] A uma ou mais unidades de processamento podem ser configuradas para incluir, no fluxo de bits, com base no primeiro elemento de sintaxe que indica que a predição afim de 4 parâmetros é habilitada para os blocos ou o segundo elemento de sintaxe que indica a predição afim de 6 parâmetros é habilitada para os blocos mas não ambos, pelo menos um dentre o terceiro elemento de sintaxe e o quarto elemento de sintaxe, e não o quinto elemento de sintaxe.
[00156] O codificador de vídeo 20 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo incluindo uma memória configurada para armazenar dados de vídeo, e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para determinar, com base em uma ou mais imagens previamente decodificadas dos dados de vídeo, se um modo de predição afim que utiliza um número particular de parâmetros é habilitado para blocos em uma imagem atual dos dados de vídeo, com base na predição afim que é habilitado para os blocos da imagem atual, o uso de predição afim para gerar um bloco preditivo para um bloco atual da imagem atual; e gerar dados residuais utilizando o bloco preditivo e o bloco atual.
[00157] A uma ou mais imagens previamente decodificadas podem estar na mesma camada temporal que a imagem atual. Cada uma das uma ou mais imagens previamente decodificadas pode ter um mesmo valor de POC mod M, onde M é um número inteiro. Para determinar se o modo de predição afim é habilitado para o bloco na imagem atual, uma ou mais unidades de processamento podem ser configuradas para determinar, com base em uma área de blocos em uma ou mais imagens previamente decodificadas que são codificadas com o modo de predição afim, se o modo de predição afim é habilitado para os blocos da imagem atual. A área de blocos em uma ou mais imagens previamente decodificadas que são codificadas com o modo de predição afim pode incluir áreas de blocos nas imagens previamente decodificadas que são codificadas com o modo de predição afim no modo de união afins e no modo de fusão afins. A uma ou mais unidades de processamento podem ser configuradas para reajustar uma variável que indica a área dos blocos em resposta ao alcance de uma extremidade de uma GOP.
[00158] O codificador de vídeo 20 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo e que inclui uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para derivar, com base em um vetor de movimento de um ponto de controle superior-esquerdo de um bloco atual dos dados de vídeo e um vetor de movimento de um ponto de controle superior-direito do bloco atual, um vetor de movimento para um ponto de controle inferior- esquerdo do bloco atual; utilizar os vetores de movimento dos pontos de controle superior-esquerdo, superior-direito e inferior-esquerdo do bloco atual para gerar um bloco preditivo; e gerar dados residuais com base no bloco preditivo e no bloco atual.
[00159] O codificador de vídeo 20 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo incluindo uma memória configurada para armazenar dados de vídeo, e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para incluir, em uma estrutura de sintaxe em um fluxo de bits que inclui uma representação codificada dos dados de vídeo, pelo menos um dentre um primeiro elemento de sintaxe ou um segundo elemento de sintaxe. O primeiro elemento de sintaxe pode indicar se a predição afim de 4 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, e o segundo elemento de sintaxe pode indicar se a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe. Com base na predição afim de 4 parâmetros sendo habilitada para um bloco atual do dado de vídeo ou predição afim de 6 parâmetros sendo habilitada para o bloco atual, a uma ou mais unidades de processamento podem ser configuradas para utilizar predição afim para gerar um bloco preditivo para o bloco atual e gerar dados residuais utilizando o bloco preditivo e o bloco atual.
[00160] O codificador de vídeo 20 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo incluindo uma memória configurada para armazenar dados de vídeo, e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para determinar um primeiro vetor de movimento para um ponto de controle superior-esquerdo de um bloco atual de uma imagem atual dos dados de vídeo e um segundo vetor de movimento para um ponto de controle superior- direito do bloco atual mediante a realização da estimativa de movimento para predição relativa de 4 parâmetros do bloco atual; derivar, com base no primeiro vetor de movimento e no segundo vetor de movimento, um terceiro vetor de movimento para um ponto de controle esquerdo inferior do bloco atual; utilizar o primeiro vetor de movimento, segundo vetor de movimento, e o terceiro vetor de movimento como um candidato de movimento de sementes para realizar a estimativa de movimento para predição afim de 6 parâmetros do bloco atual; utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo; e gerar dados residuais com base no bloco preditivo e no bloco atual.
[00161] O codificador de vídeo 20 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo, incluindo uma memória configurada para armazenar dados de vídeo, e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para determinar um primeiro vetor de movimento, um segundo vetor de movimento, e um terceiro vetor de movimento, realizando a estimativa de movimento para a predição afim de 6 parâmetros de um bloco atual de uma imagem atual dos dados de vídeo, o primeiro vetor de movimento sendo um vetor de movimento para um ponto de controle superior-esquerdo do bloco atual, o segundo vetor de movimento sendo um vetor de movimento para um ponto de controle de topo-direito do bloco atual, e o terceiro vetor de movimento sendo um vetor de movimento para um ponto de controle inferior-esquerdo do bloco atual; o uso do primeiro vetor de movimento e do segundo vetor de movimento como um candidato a movimento de sementes para a realização da estimativa de movimento para a predição afim de 4 parâmetros do bloco atual; utilizar a predição afim de 4 parâmetros para gerar um bloco preditivo; e gerar dados residuais com base no bloco preditivo e no bloco atual.
[00162] O codificador de vídeo 20 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo, incluindo uma memória configurada para armazenar dados de vídeo, e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para uso, como um movimento de sementes candidato para a realização da estimativa de movimento para a predição afim de um bloco atual de uma imagem atual dos dados de vídeo, vetores de movimento para pontos de controle de um bloco de origem de um bloco atual dos dados de vídeo; utilizar a predição afim para gerar um bloco preditivo; e gerar dados residuais com base no bloco preditivo e no bloco atual.
[00163] O codificador de vídeo 20 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo incluindo uma memória configurada para armazenar dados de vídeo, e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para determinar que o fluxo de bits não se conforma ao padrão de codificação de vídeo em resposta à determinação de pelo menos um de um vetor de movimento de um primeiro ponto de controle de um bloco afim de uma imagem atual dos dados de vídeo é igual a um vetor de movimento de um segundo ponto de controle do bloco ou uma diferença entre um vetor de movimento do primeiro ponto de controle e o segundo ponto de controle é inferior a um valor limite predeterminado.
[00164] O codificador de vídeo 20 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo incluindo uma memória configurada para armazenar dados de vídeo, e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para determinar que uma métrica de uma diferença entre os preditores de vetor de movimento de ponto de controle de um bloco atual dos dados de vídeo é maior do que um limite predeterminado; inclui, em um fluxo de bits que inclui uma representação codificada dos dados de vídeo, com base na métrica sendo maior do que o limite predeterminado, um elemento de sintaxe que indica se os vetores de movimento dos pontos de controle do bloco atual são sinalizados utilizando-se um modo afim; e com base nos vetores de movimento dos pontos de controle do bloco atual sendo sinalizado utilizando-se o sinal afim entre o modo, o sinal, no fluxo de bits, os vetores de movimento dos pontos de controle do bloco atual utilizando o modo afim.
[00165] O codificador de vídeo 20 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo incluindo uma memória configurada para armazenar dados de vídeo, e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para selecionar adaptativamente, com base em um custo calculado a partir de um critério predeterminado, dois pontos de controle dentre um ponto de controle superior-esquerdo de um bloco atual, um ponto de controle superior-direito do bloco atual, e um ponto de controle inferior-esquerdo do bloco atual, o bloco atual estando em uma imagem de atual dos dados de vídeo; uso de vetores de movimento dos dois pontos de controle selecionados em um modelo de movimento afins de 4 parâmetros para gerar um bloco preditivo para o bloco atual; e gerar dados residuais com base no bloco preditivo e no bloco atual.
[00166] A Figura 12 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30 que é configurado para implementar as técnicas desta descrição. A Figura 12 é provida para fins de explicação e não é limitativa das técnicas descritas amplamente e descritas neste relatório. Para fins de explicação, esta descrição descreve o decodificador de vídeo 30 no contexto da codificação HEVC. Entretanto, as técnicas desta descrição podem ser aplicáveis a outros padrões ou métodos de codificação.
[00167] No exemplo da Figura 12, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 1300, uma memória de dados de vídeo 1301, uma unidade de processamento de predição 1302, uma unidade de quantização inversa 1304, uma unidade de processamento de transformada inversa 1306, uma unidade de reconstrução 1308, uma unidade de filtro 1310 e uma unidade de processamento de prognóstico 1312. A unidade de processamento de predição 1302 inclui uma unidade de compensação de movimento 1314 e uma unidade de processamento intrapredição 1316. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou diferentes componentes funcionais.
[00168] A memória de dados de vídeo 1301 pode armazenar dados de vídeo codificados, tal como um fluxo de bits de vídeo codificado, para ser decodificado pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 1301 podem ser obtidos, por exemplo, a partir do meio legível por computador 16, por exemplo, a partir de uma fonte de vídeo local, tal como uma câmera, através de uma comunicação de rede com fios ou sem fios de dados de vídeo, ou pelo acesso aos meios físicos de armazenamento de dados físicos. A memória de dados de vídeo 1301 pode formar um buffer de imagem codificado (CPB) que armazena os dados de vídeo codificados a partir de um fluxo de bits de vídeo codificado. A memória intermediária de imagem decodificada 1312 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para utilização na decodificação de dados de vídeo pelo decodificador de vídeo 30, por exemplo, em modos intra- ou intercodificação, ou para saída. A memória de dados de vídeo 1301 e a memória intermediária de imagem decodificada 1312 podem ser formadas por qualquer um de uma variedade de dispositivos de memória, tais como DRAM, incluindo SDRAM, MRAM, RRAM, ou outros tipos de dispositivos de memória. A memória de dados de vídeo 1301 e a memória intermediária de imagem decodificada 1312 podem ser providas pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 1301 pode ser em chip com outros componentes do decodificador de vídeo 30, ou fora de chip com relação àqueles componentes. A memória de dados de vídeo 1301 pode ser a mesma ou parte do meio de armazenamento 28 da Figura 1.
[00169] A memória de dados de vídeo 1301 recebe e armazena dados de vídeo codificados (por exemplo, unidades Externas) de um fluxo de bits. A unidade de decodificação de entropia 1300 pode receber dados de vídeo codificados (por exemplo, unidades Externas) a partir da memória de dados de vídeo 1301 e pode analisar as unidades Externas para obter elementos de sintaxe. A unidade de decodificação de entropia 1300 pode decodificar por entropia elementos de sintaxe codificados por entropia nas unidades Externas. A unidade de processamento de predição 1302, a unidade de quantização inversa 1304, a unidade de processamento de transformada inversa 1306, a unidade de reconstrução 1308 e a unidade de filtro 1310 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 de entropia 1300 pode executar um processo geralmente recíproco àquele da unidade de codificação de entropia 1218.
[00170] Além de obter elementos de sintaxe a partir do fluxo de bits, o decodificador de vídeo 30 pode executar uma operação de reconstrução em uma CU. Para realizar a operação de reconstrução em uma CU, o decodificador de vídeo 30 pode executar uma operação de reconstrução em cada TU da CU. Pela realização da operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir blocos residuais da CU.
[00171] Como parte de realização de uma operação de reconstrução em TU de uma CU, a unidade de quantização inversa 1304 pode quantizar inversa, isto é, desquantizar, blocos de coeficientes associados com a TU. Após a unidade de quantização inversa 1304 quantizar um bloco de coeficiente, a unidade de processamento de transformada inversa 1306 pode aplicar uma ou mais transformadas inversas no bloco de coeficiente a fim de gerar um bloco residual associado com a TU. Por exemplo, a unidade de processamento de transformada inversa 1306 pode aplicar uma DCT inversa, uma transformada de inteiro inverso, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotativa inversa, uma transformada direcional inversa, ou outra transformada inversa para o bloco de coeficiente.
[00172] A unidade de quantização inversa 1304 pode realizar técnicas particulares desta descrição. Por exemplo, para pelo menos um respectivo grupo de quantificação de uma pluralidade de grupos de quantização dentro de um CTB de uma CTU de uma imagem dos dados de vídeo, a unidade de quantização inversa 1304 pode derivar, com base pelo menos em parte na informação de quantização local sinalizada no fluxo de bits, um respectivo parâmetro de quantificação para o respectivo grupo de quantização. Adicionalmente, neste exemplo, a unidade de quantização inversa 1304 pode quantizar inversa, com base no respectivo parâmetro de quantificação para o respectivo grupo de quantização, pelo menos um coeficiente de transformada de um bloco de transformada de uma TU de uma CU da CTU. Neste exemplo, o respectivo grupo de quantização é definido como um grupo de blocos sucessivos, de ordem de codificação e De codificação, de modo que os limites do respectivo grupo de quantização devem ser limites dos blocos de Codificação ou de codificação e um tamanho do respectivo grupo de quantização é maior ou igual a um limite. Decodificador de vídeo 30 (por exemplo, unidade de processamento de transformada inversa 1306, unidade de reconstrução 1308 e unidade de filtro 1310) podem reconstruir, com base em coeficientes de transformada quantizados inversos do bloco de transformada, um bloco de codificação da CU.
[00173] Se uma PU for codificada utilizando-se intrapredição, a unidade de processamento intrapredição 1316 pode realizar a intrapredição para gerar blocos preditivos da PU. A unidade de processamento intrapredição 1316 pode utilizar um modo intrapredição para gerar os blocos preditivos da PU Com base em amostras espacialmente vizinhas. A unidade de processamento intrapredição 1316 pode determinar o modo intrapredição para a PU com base em um ou mais elementos de sintaxe obtidos a partir do fluxo de bits.
[00174] Se uma PU for codificada utilizando-se interpredição, a unidade de compensação de movimento 1314 pode determinar a informação de movimento para a PU. A unidade de compensação de movimento 1314 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 1314 pode gerar, com base em um ou mais blocos de referência, blocos preditivos (por exemplo, blocos preditivos, blocos Cb e Cr) Para a PU. A unidade de compensação de movimento 1314 pode aplicar as técnicas para modelos de movimento afins, conforme descrito em outro lugar neste relatório.
[00175] A unidade de reconstrução 1308 pode utilizar blocos de transformada (por exemplo, blocos de transformação luma, Cb e Cr) para TUs De uma CU E dos blocos preditivos (por exemplo, blocos luma, Cb e Cr) das PUs da CU, isto É, dados intrapredição ou dados interpreditivos, conforme aplicável, para reconstruir os blocos de codificação (por exemplo, blocos de codificação luma, Cb e Cr) para a CU. Por exemplo, a unidade de reconstrução 1308 pode adicionar amostras dos blocos de transformada (por exemplo, blocos de transformada de luma, Cb e Cr) para amostras correspondentes dos blocos preditivos (por exemplo, blocos preditivos de luma, Cb e Cr) Para reconstruir Os blocos de codificação (por exemplo, blocos de codificação luma, Cb e Cr) da CU.
[00176] A unidade de filtros 1310 pode executar uma operação de desbloqueio para reduzir os artefatos de bloqueio associados aos blocos de codificação da CU. O decodificador de vídeo 30 pode armazenar os blocos de codificação da CU no buffer de imagem decodificado 1312. O buffer de imagem decodificada 1312 pode fornecer imagens de referência para compensação de movimento subsequente, intrapredição e apresentação em um dispositivo de exibição, tal como o dispositivo de exibição 32 da Figura 1. Por exemplo, o decodificador de vídeo 30 pode executar, com base nos blocos no buffer de imagem decodificada 1312, as operações intrapredição ou interpredição para as PUs de outras CUs.
[00177] Desta maneira, o decodificador de vídeo 30 representa um exemplo de um dispositivo de decodificação de vídeo que inclui uma memória configurada para armazenar dados de vídeo e um ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para obter, a partir de uma estrutura de sintaxe em um fluxo de bits que inclui uma representação codificada dos dados de vídeo, pelo menos um dentre um primeiro elemento de sintaxe ou um segundo elemento de sintaxe. O primeiro elemento de sintaxe indica se a predição afim de 4 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, e o segundo elemento de sintaxe indica se a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe. Com base no primeiro elemento de sintaxe que indica que a predição afim de 4 parâmetros é habilitada para um bloco atual dos dados de vídeo ou do segundo elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para o bloco atual, a uma ou mais unidades de processamento podem utilizar predição afim para gerar um bloco preditivo para o bloco atual e utilizar o bloco preditivo e dados residuais para reconstruir o bloco atual. A estrutura de sintaxe pode, por exemplo, ser uma de um SPS, Um PPS, um cabeçalho de fatias, ou uma CTU. O primeiro elemento de sintaxe e o segundo elemento de sintaxe podem ser ajustados independentemente.
[00178] A uma ou mais unidades de processamento também podem ser configuradas para obter, a partir do fluxo de bits, com base no primeiro elemento de sintaxe que indica que a predição afim de 4 parâmetros é habilitada para os blocos ou o segundo elemento de sintaxe que indica a predição afim de 6 parâmetros é habilitada para os blocos, pelo menos um dentre um terceiro elemento de sintaxe, um quarto elemento de sintaxe, e um quinto elemento de sintaxe. O terceiro elemento de sintaxe pode indicar se o modo de fusão afins é usado com o bloco atual, e o quarto elemento de sintaxe pode indicar se o modo afim é usado com o bloco atual. O quinto elemento de sintaxe pode indicar se o bloco atual é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros. A uma ou mais unidades de processamento também podem ser configuradas para obter, a partir do fluxo de bits, com base no primeiro elemento de sintaxe que indica que a predição afim de 4 parâmetros é habilitada para os blocos ou o segundo elemento de sintaxe que indica a predição afim de 6 parâmetros é habilitada para os blocos mas não ambos, pelo menos um dentre o terceiro elemento de sintaxe e o quarto elemento de sintaxe, e não o quinto elemento de sintaxe.
[00179] O decodificador de vídeo 30 também representa um exemplo de um dispositivo de decodificação de vídeo que inclui uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para determinar, com base em uma ou mais imagens previamente decodificadas dos dados de vídeo, se um modo de predição afim que utiliza um número particular de parâmetros é habilitado para blocos em uma imagem atual dos dados de vídeo, com base na predição afim que é habilitado para os blocos da imagem atual, o uso de predição de afins para gerar um bloco preditivo para um bloco atual da imagem atual; e utilizar o bloco preditivo e dados residuais para reconstruir o bloco atual. A uma ou mais imagens previamente decodificadas podem estar na mesma camada temporal que a imagem atual. Cada uma das uma ou mais imagens previamente decodificadas pode ter um mesmo valor de POC mod M, onde M é um número inteiro.
[00180] Para determinar se o modo de predição afim é habilitado para o bloco na imagem atual, uma ou mais unidades de processamento podem ser configuradas para determinar, com base em uma área de blocos em uma ou mais imagens previamente decodificadas que são codificadas com o modo de predição afim, se o modo de predição afim é habilitado para os blocos da imagem atual. A área de blocos em uma ou mais imagens previamente decodificadas que são codificadas com o modo de predição afim pode incluir áreas de blocos nas imagens previamente decodificadas que são codificadas com o modo de predição afim no modo de união afins e no modo de fusão afins. A uma ou mais unidades de processamento também podem ser configuradas para reajustar uma variável que indica a área dos blocos em resposta ao alcance de uma extremidade de uma GOP.
[00181] O decodificador de vídeo 30 também representa um exemplo de um dispositivo de decodificação de vídeo que inclui uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para derivar, com base em um vetor de movimento de um ponto de controle superior-esquerdo de um bloco atual dos dados de vídeo e um vetor de movimento de um ponto de controle superior-direito do bloco atual, um vetor de movimento para um ponto de controle inferior-esquerdo do bloco atual; utilizar os vetores de movimento da direita superior- direita, e pontos de controle esquerdo e inferior do bloco atual para gerar um bloco preditivo; e reconstruir o bloco atual com base no bloco preditivo e dados residuais.
[00182] O decodificador de vídeo 30 representa um exemplo de um dispositivo de decodificação de vídeo que inclui uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para obter, a partir de uma estrutura de sintaxe em um fluxo de bits que inclui uma representação codificada dos dados de vídeo, pelo menos um dentre um primeiro elemento de sintaxe ou um segundo elemento de sintaxe. O primeiro elemento de sintaxe indica se a predição afim de 4 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, e o segundo elemento de sintaxe indica se a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe. Com base no primeiro elemento de sintaxe que indica que a predição afim de 4 parâmetros é habilitada para um bloco atual dos dados de vídeo ou do segundo elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para o bloco atual, a uma ou mais unidades de processamento são configuradas para utilizar a predição afim para gerar um bloco preditivo para o bloco atual e utilizar o bloco preditivo e dados residuais para reconstruir o bloco atual.
[00183] A Figura 13 é um fluxograma que ilustra um processo de codificação de vídeo ilustrativo. O codificador de vídeo 20, incluindo a unidade de interpredição 1220 e a unidade de codificação de entropia 1218, pode ser configurado para realizar as técnicas da FIG. em um exemplo da revelação, o codificador de vídeo 20 pode ser configurado para determinar que a predição afim de 6 parâmetros é habilitada para blocos, incluindo um primeiro bloco, que corresponde a uma estrutura de sintaxe (1400). Em resposta à determinação de que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, o codificador de vídeo 20 pode ser configurado para utilizar um de predição afim de 4 parâmetros ou predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco (1402). O codificador de vídeo 20 pode utilizar o bloco preditivo para determinar os dados residuais para o primeiro bloco (1404) e incluir, em um fluxo de bits, os dados residuais e uma estrutura de sintaxe compreendendo um elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe (1406). A estrutura de sintaxe pode, por exemplo, ser um conjunto de parâmetro de sequência.
[00184] O codificador de vídeo 20 pode ser configurado para, em resposta à predição afim de 6 parâmetros sendo habilitada para os blocos correspondentes à estrutura de sintaxe, incluir no fluxo de bits um segundo elemento de sintaxe indicando se o primeiro bloco é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros. O segundo elemento de sintaxe pode, por exemplo, ser parte da estrutura de sintaxe ou pode ser um elemento de sintaxe de nível de bloco que não é parte da estrutura de sintaxe.
[00185] A Figura 14 é um fluxograma que ilustra um processo ilustrativo de decodificação de vídeo. O decodificador de vídeo 30, incluindo a unidade de decodificação por entropia 1300 e a unidade de compensação de movimento 1314, pode ser configurado para realizar as técnicas da Figura 14. Em um exemplo da revelação, o decodificador de vídeo 30 pode ser configurado para obter, a partir de uma estrutura de sintaxe em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, um elemento de sintaxe indicando se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe (1410). Com base no elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, o decodificador de vídeo 30 pode utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo para um primeiro bloco dos blocos correspondendo à estrutura de sintaxe (1412). O decodificador de vídeo 30 pode utilizar o bloco preditivo e dados residuais para reconstruir o primeiro bloco (1414). A estrutura de sintaxe pode, por exemplo, ser um conjunto de parâmetro de sequência.
[00186] Em alguns exemplos, em resposta ao elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, o decodificador de vídeo 30 pode ser configurado para obter a partir do fluxo de bits, um segundo elemento de sintaxe indicando se o primeiro bloco é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros. O segundo elemento de sintaxe pode, por exemplo, ser parte da estrutura de sintaxe ou pode ser um elemento de sintaxe de nível de bloco que não é parte da estrutura de sintaxe.
[00187] Os blocos correspondentes à estrutura de sintaxe podem incluir um segundo bloco, e o decodificador de vídeo 30 pode ser configurado para, em resposta ao elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, obter, a partir do fluxo de bits, um segundo elemento de sintaxe indicando se o segundo bloco é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros. Com base no segundo elemento de sintaxe que indica que o segundo bloco é codificado com predição afim de 4 parâmetros, o decodificador de vídeo 30 pode utilizar a predição afim de 4 parâmetros para gerar um segundo bloco preditivo para o segundo bloco e utilizar o segundo bloco preditivo e segundos dados residuais para reconstruir o segundo bloco.
[00188] Em alguns exemplos, o decodificador de vídeo 30 pode ser configurado para obter, a partir da estrutura de sintaxe no fluxo de bits, um elemento de sintaxe indicando se a predição afine de 4 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe e, com base no elemento de sintaxe que indica que a predição afim de 4 parâmetros é desabilitada para os blocos correspondentes à estrutura de sintaxe, utiliza a predição afim de 6 parâmetros para gerar o bloco preditivo para o primeiro bloco.
[00189] Certos aspectos da presente invenção foram descritos com relação às extensões do padrão HEVC para propósitos de ilustração. Entretanto, as técnicas descritas neste relatório 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ário presentemente em desenvolvimento ou ainda não desenvolvidos.
[00190] Um codificador de vídeo, conforme descrito neste relatório, pode se referir a um codificador de vídeo ou um decodificador de vídeo. Similarmente, uma unidade de codificação de vídeo pode se referir a um codificador de vídeo ou um decodificador de vídeo. Da mesma forma, a codificação de vídeo pode se referir a codificação de vídeo ou decodificação de vídeo, conforme aplicável. Nesta descrição, a frase "com base em" pode indicar com base apenas em, com base pelo menos em parte, ou com base em algum modo. Esta descrição pode utilizar o termo "unidade de vídeo" ou "bloco de vídeo" ou "bloco" para se referir a um ou mais blocos de amostras e estruturas de sintaxe utilizadas para codificar amostras de um ou mais blocos de amostras. Tipos de unidades de vídeo podem incluir CTUs, CUs, PUs, unidades de transformada (TUs), macroblocos, partições de macrobloco e assim por diante. Em alguns contextos, a discussão de PUs pode ser intercambiada com discussão de macroblocos ou partições de macrobloco. 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.
[00191] Deve ser reconhecido que, dependendo do exemplo, certas ações ou eventos de qualquer uma das técnicas aqui descritas pode ser realizada em uma sequência diferente, podem ser adicionadas, fundidas ou deixadas completamente (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser executados simultaneamente, por exemplo, através de processamento multi-roscado, processamento de interrupção, ou múltiplos processadores, em vez de sequencialmente.
[00192] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementado em software, as funções podem ser armazenadas ou transmitidas, 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. Meios legíveis por computador podem incluir meios de armazenamento passíveis de leitura por computador, que correspondem a um meio tangível tal como meios de armazenamento de dados, ou meios de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação tal como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que podem ser acessados por um ou mais computadores ou um ou mais circuitos de processamento para recuperar instruções, códigos e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[00193] A título de exemplo, e não de limitação, tais meios de armazenamento legíveis por computador podem ser qualquer um ou mais de RAM, ROM, EEPROM, CD-ROM, ou outro armazenamento de disco óptico, armazenamento de disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Também, qualquer conexão é apropriadamente denominada um meio legível por computador. Por exemplo, se instruções são transmitidas a partir de um website, servidor, ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fio tais como infravermelho, rádio e microondas, então o cabo coaxial, cabo de fibra óptica, par torcido, DSL ou tecnologias sem fio tais como infravermelho, rádio e microondas são incluídos na definição de meio. Deve-se entender, no entanto, que meios de armazenamento que podem ser lidos por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais, ou outros meios transientes, mas ao invés disso são dirigidos a meios de armazenamento tangível não transiente. Disco e disco, conforme aqui utilizado, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disco flexível e disco Blu-ray, onde os discos usualmente reproduzem dados magneticamente, enquanto discos reproduzem dados opticamente com lasers. Combinações do dito acima também devem ser incluídas no escopo de meios legíveis por computador.
[00194] A funcionalidade descrita neste relatório descritivo pode ser realizada por função fixa e/ou circuito de processamento programável. Por exemplo, as instruções podem ser executadas por função fixa e/ou circuito de processamento programável. Tais circuitos de processamento podem incluir um ou mais processadores, tais como um ou mais DSPs, microprocessadores de finalidade geral, ASICs, FPGAs ou outros circuitos lógicos integrados ou discretos equivalentes. Consequentemente, o termo "processador", conforme usado aqui, pode se referir a qualquer uma dentre a estrutura precedente ou qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Também, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos. Os circuitos de processamento podem ser acoplados a outros componentes de várias maneiras. Por exemplo, um circuito de processamento pode ser acoplado a outros componentes através de uma interconexão de dispositivo interno, uma conexão de rede com fios ou sem fios, ou outro meio de comunicação.
[00195] As técnicas desta descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chip). Vários componentes, módulos ou unidades são descritos nesta descrição para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas descritas, mas não requerem necessariamente realização por diferentes unidades de hardware. Ao invés, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou providas por uma coleção de unidades de hardware interoperatórias, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[00196] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (24)

REIVINDICAÇÕES
1. Método de decodificação de dados de vídeo, o método compreendendo: obter uma estrutura de sintaxe em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, um elemento de sintaxe que indica se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; com base no elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; e utilizar o bloco preditivo e dados residuais para reconstruir o primeiro bloco.
2. Método, de acordo com a reivindicação 1, em que a estrutura de sintaxe compreende um conjunto de parâmetro de sequência.
3. Método, de acordo com a reivindicação 1, em que compreende ainda: em resposta ao elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, obter o fluxo de bits, um segundo elemento de sintaxe indicando se o primeiro bloco é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros, em que um valor para o segundo elemento de sintaxe indica que o primeiro bloco é codificado com predição afim de 6 parâmetros.
4. Método, de acordo com a reivindicação 3, em que o segundo elemento de sintaxe compreende um elemento de sintaxe de nível de bloco que não é parte da estrutura de sintaxe.
5. Método, de acordo com a reivindicação 1, em que os blocos correspondentes à estrutura de sintaxe compreendem um segundo bloco, o método compreendendo adicionalmente: em resposta ao elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, a obtenção, a partir do fluxo de bits, de um segundo elemento de sintaxe indicando se o segundo bloco é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros, em que um valor para o segundo elemento de sintaxe indica que o segundo bloco é codificado com predição afim de 4 parâmetros; e com base no segundo elemento de sintaxe indicando que o segundo bloco é codificado com predição afim de 4 parâmetros, utilizar predição afim para gerar um segundo bloco preditivo para o segundo bloco utilizando a predição afim de 4 parâmetros; e utilizar o segundo bloco preditivo e segundos dados residuais para reconstruir o segundo bloco.
6. Método, de acordo com a reivindicação 1, em que compreende ainda: obter, a partir da estrutura de sintaxe no fluxo de bits, um elemento de sintaxe que indica se a predição afim de 4 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe; com base no elemento de sintaxe que indica que a predição afim de 4 parâmetros é desabilitada para os blocos correspondentes à estrutura de sintaxe, utilizar a predição afim para gerar o bloco preditivo para o primeiro bloco utilizando a predição afim de 6 parâmetros.
7. Método de codificação de dados de vídeo, o método compreendendo: determinar que a predição afim de 6 parâmetros é habilitada para blocos correspondendo a uma estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; em resposta à determinação de que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizar um de predição afim de 4 parâmetros ou predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; utilizar o bloco preditivo para determinar os dados residuais para o primeiro bloco; e incluindo, em um fluxo de bits, os dados residuais e uma estrutura de sintaxe compreendendo um elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe.
8. Método, de acordo com a reivindicação 7, em que a estrutura de sintaxe compreende um conjunto de parâmetro de sequência.
9. Método, de acordo com a reivindicação 7, em que compreende ainda: em resposta à predição afim de 6 parâmetros sendo habilitada para os blocos correspondentes à estrutura de sintaxe, incluir no fluxo de bits um segundo elemento de sintaxe indicando se o primeiro bloco é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros, em que um valor para o segundo elemento de sintaxe indica que o primeiro bloco é codificado com predição afim de 6 parâmetros.
10. Método, de acordo com a reivindicação 9, em que o segundo elemento de sintaxe compreende um elemento de sintaxe de nível de bloco que não é parte da estrutura de sintaxe.
11. Método, de acordo com a reivindicação 9, em que a estrutura de sintaxe compreende o segundo elemento de sintaxe.
12. Dispositivo para decodificar dados de vídeo, o dispositivo compreendendo: uma memória configurada para armazenar dados de vídeo; e um ou mais processadores acoplados à memória, implementados em circuito de processamento, e configurados para: obter, a partir de uma estrutura de sintaxe em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, um elemento de sintaxe indicando se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; com base no elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; e utilizar o bloco preditivo e dados residuais para reconstruir o primeiro bloco.
13. Dispositivo, de acordo com a reivindicação 12, em que a estrutura de sintaxe compreende um conjunto de parâmetro de sequência.
14. Dispositivo, de acordo com a reivindicação 12, em que um ou mais processadores são adicionalmente configurados para: em resposta ao elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, obtém o fluxo de bits, um segundo elemento de sintaxe indicando se o primeiro bloco é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros, em que um valor para o segundo elemento de sintaxe indica que o primeiro bloco é codificado com predição afim de 6 parâmetros.
15. Dispositivo, de acordo com a reivindicação 14, em que o segundo elemento de sintaxe compreende um elemento de sintaxe de nível de bloco que não é parte da estrutura de sintaxe.
16. Dispositivo, de acordo com a reivindicação 12, em que os blocos correspondentes à estrutura de sintaxe compreendem um segundo bloco, e em que o um ou mais processadores são adicionalmente configurados para: em resposta ao elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, obter, a partir do fluxo de bits, um segundo elemento de sintaxe indicando se o segundo bloco é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros, em que um valor para o segundo elemento de sintaxe indica que o segundo bloco é codificado com predição afim de 4 parâmetros; e com base no segundo elemento de sintaxe indicando que o segundo bloco é codificado com predição afim de 4 parâmetros, utilizar predição afim para gerar um segundo bloco preditivo para o segundo bloco utilizando a predição afim de 4 parâmetros; e utilizar o segundo bloco preditivo e segundo dados residuais para reconstruir o segundo bloco.
17. Dispositivo, de acordo com a reivindicação 12, em que um ou mais processadores são adicionalmente configurados para: obter, da estrutura de sintaxe no fluxo de bits, um elemento de sintaxe que indica se a predição afim de 4 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe; com base no elemento de sintaxe que indica que a predição afim de 4 parâmetros é desabilitada para os blocos correspondentes à estrutura de sintaxe, utilizar predição afim para gerar o bloco preditivo para o primeiro bloco utilizando a predição afim de 6 parâmetros.
18. Dispositivo para A codificação de dados de vídeo, o dispositivo compreendendo: uma memória configurada para armazenar dados de vídeo; e um ou mais processadores acoplados à memória,
implementados em circuito de processamento, e configurados para: determinar que a predição afim de 6 parâmetros é habilitada para blocos correspondentes a uma estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; em resposta à determinação de que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizar uma predição afim de 4 parâmetros ou a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; utilizar o bloco preditivo para determinar os dados residuais para o primeiro bloco; e incluir, em um fluxo de bits, os dados residuais e uma estrutura de sintaxe compreendendo um elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe.
19. Dispositivo, de acordo com a reivindicação 18, em que a estrutura de sintaxe compreende um conjunto de parâmetro de sequência.
20. Dispositivo, de acordo com a reivindicação 18, em que um ou mais processadores são adicionalmente configurados para: em resposta à predição afim de 6 parâmetros sendo habilitada para os blocos correspondentes à estrutura de sintaxe, incluir no fluxo de bits um segundo elemento de sintaxe indicando se o primeiro bloco é codificado com predição afim de 4 parâmetros ou predição afim de 6 parâmetros, em que um valor para o segundo elemento de sintaxe indica que o primeiro bloco é codificado com predição afim de 6 parâmetros.
21. Dispositivo, de acordo com a reivindicação 20, em que o segundo elemento de sintaxe compreende um elemento de sintaxe de nível de bloco que não é parte da estrutura de sintaxe.
22. Dispositivo, de acordo com a reivindicação 20, em que a estrutura de sintaxe compreende o segundo elemento de sintaxe.
23. Meio de armazenamento legível por computador que armazena instruções que, quando executadas por um ou mais processadores, fazem com que o um ou mais processadores: obter, a partir de uma estrutura de sintaxe em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, um elemento de sintaxe indicando se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; com base no elemento de sintaxe que indica que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe, utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco; e utilizar o bloco preditivo e dados residuais para reconstruir o primeiro bloco.
24. Aparelho para decodificação de dados de vídeo, o aparelho compreendendo: meios para obter, a partir de uma estrutura de sintaxe em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, um elemento de sintaxe indicando se a predição afim de 6 parâmetros é habilitada para blocos correspondentes à estrutura de sintaxe, em que os blocos correspondentes à estrutura de sintaxe compreendem um primeiro bloco; meios para utilizar a predição afim de 6 parâmetros para gerar um bloco preditivo para o primeiro bloco com base no elemento de sintaxe indicando que a predição afim de 6 parâmetros é habilitada para os blocos correspondentes à estrutura de sintaxe; e meios para a utilização do bloco preditivo e dados residuais para reconstruir o primeiro bloco.
BR112020006588-9A 2017-10-10 2018-10-10 predição afim em codificação de vídeo BR112020006588A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762570417P 2017-10-10 2017-10-10
US62/570,417 2017-10-10
US16/155,744 US11877001B2 (en) 2017-10-10 2018-10-09 Affine prediction in video coding
US16/155,744 2018-10-09
PCT/US2018/055209 WO2019075058A1 (en) 2017-10-10 2018-10-10 AFFINED PREDICTION FOR VIDEO CODING

Publications (1)

Publication Number Publication Date
BR112020006588A2 true BR112020006588A2 (pt) 2020-10-06

Family

ID=65992744

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020006588-9A BR112020006588A2 (pt) 2017-10-10 2018-10-10 predição afim em codificação de vídeo

Country Status (11)

Country Link
US (2) US11877001B2 (pt)
EP (1) EP3695604A1 (pt)
KR (1) KR20200055015A (pt)
CN (1) CN111164977B (pt)
AU (1) AU2018348143B2 (pt)
BR (1) BR112020006588A2 (pt)
CA (1) CA3074931A1 (pt)
CL (1) CL2020000873A1 (pt)
SG (1) SG11202001985VA (pt)
TW (1) TWI805627B (pt)
WO (1) WO2019075058A1 (pt)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240025714A (ko) * 2016-03-24 2024-02-27 엘지전자 주식회사 비디오 코딩 시스템에서 인터 예측 방법 및 장치
WO2019050385A2 (ko) * 2017-09-07 2019-03-14 엘지전자 주식회사 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
US11877001B2 (en) 2017-10-10 2024-01-16 Qualcomm Incorporated Affine prediction in video coding
CN117354538A (zh) * 2017-10-27 2024-01-05 松下电器(美国)知识产权公司 编码装置、解码装置、生成装置、发送装置和存储介质
US11172229B2 (en) 2018-01-12 2021-11-09 Qualcomm Incorporated Affine motion compensation with low bandwidth
WO2019183906A1 (zh) * 2018-03-29 2019-10-03 华为技术有限公司 帧间预测的方法和装置
WO2019199127A1 (ko) * 2018-04-12 2019-10-17 삼성전자 주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
KR20230169429A (ko) * 2018-04-13 2023-12-15 엘지전자 주식회사 비디오 처리 시스템에서 인터 예측 방법 및 장치
CN116668677A (zh) * 2018-05-10 2023-08-29 Lg电子株式会社 解码设备、编码设备和数据发送设备
KR20210038846A (ko) * 2018-06-29 2021-04-08 브이아이디 스케일, 인크. Affine motion 모델 기반 비디오 코딩을 위한 적응형 제어 포인트 선택
US10805624B2 (en) * 2018-07-16 2020-10-13 Tencent America LLC Determination of parameters of an affine model
MX2021000615A (es) * 2018-07-17 2021-07-02 Huawei Tech Co Ltd Señalización de modelos de movimiento.
US11057617B2 (en) * 2018-08-03 2021-07-06 Tencent America LLC Method and apparatus for video coding
CN117499672A (zh) 2018-08-27 2024-02-02 华为技术有限公司 一种视频图像预测方法及装置
BR112021004556A2 (pt) * 2018-09-10 2021-06-08 Lg Electronics Inc. método e aparelho de decodificação de imagens com base em predição de movimento afim usando lista de candidatos a mvp afim no sistema de codificação de imagens
EP4224849B1 (en) * 2018-09-21 2024-06-12 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Video signal encoding and decoding method, and apparatus therefor
GB2577318B (en) * 2018-09-21 2021-03-10 Canon Kk Video coding and decoding
EP3864850A1 (en) * 2018-10-10 2021-08-18 InterDigital VC Holdings, Inc. Affine mode signaling in video encoding and decoding
GB2595053B (en) 2018-10-18 2022-07-06 Canon Kk Video coding and decoding
CN114222135A (zh) * 2018-12-13 2022-03-22 北京达佳互联信息技术有限公司 视频编码方法以及设备
US11202089B2 (en) * 2019-01-28 2021-12-14 Tencent America LLC Method and apparatus for determining an inherited affine parameter from an affine model
CN113545041A (zh) * 2019-03-07 2021-10-22 数字洞察力有限公司 图像编码/解码方法和设备
CN113785586B (zh) * 2019-04-12 2023-12-22 寰发股份有限公司 用于视频编解码系统的简化仿射子块处理的方法及装置
JP2022530054A (ja) 2019-04-25 2022-06-27 オーピー ソリューションズ, エルエルシー ピクチャヘッダ内の大域的運動ベクトルの信号伝達
CN114128288A (zh) * 2019-04-25 2022-03-01 Op方案有限责任公司 运动矢量帧间预测的全局运动模型
EP3959886A4 (en) * 2019-04-25 2022-06-22 OP Solutions, LLC SIGNALING A GLOBAL MOTION VECTOR IN AN IMAGE HEAD
BR112021021348A2 (pt) * 2019-04-25 2022-01-18 Op Solutions Llc Candidatos de previsão de vetor de movimento seletiva em quadros com movimento global
EP3959883A4 (en) * 2019-04-25 2022-07-20 OP Solutions, LLC GLOBAL MOTION CONSTRAINED MOTION VECTOR DURING INTER PREDICTION
SG11202111757YA (en) * 2019-04-25 2021-11-29 Op Solutions Llc Adaptive motion vector prediction candidates in frames with global motion
WO2020233662A1 (en) * 2019-05-21 2020-11-26 Beijing Bytedance Network Technology Co., Ltd. Syntax signaling for optical-flow based inter coding
KR20200143296A (ko) * 2019-06-14 2020-12-23 현대자동차주식회사 인터 예측을 이용하여 비디오를 부호화 및 복호화하는 방법 및 장치
US11076167B2 (en) * 2019-06-24 2021-07-27 FG Innovation Company Limited Device and method for coding video data
US11432002B2 (en) * 2019-07-08 2022-08-30 Hyundai Motor Company Method and apparatus for encoding and decoding video using inter-prediction
JP7391199B2 (ja) * 2019-10-05 2023-12-04 北京字節跳動網絡技術有限公司 映像コーディングツールのレベルベースシグナリング

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5654771A (en) * 1995-05-23 1997-08-05 The University Of Rochester Video compression system using a dense motion vector field and a triangular patch mesh overlay model
WO1998042134A1 (en) 1997-03-17 1998-09-24 Mitsubishi Denki Kabushiki Kaisha Image encoder, image decoder, image encoding method, image decoding method and image encoding/decoding system
US6735249B1 (en) 1999-08-11 2004-05-11 Nokia Corporation Apparatus, and associated method, for forming a compressed motion vector field utilizing predictive motion coding
US6738423B1 (en) 2000-01-21 2004-05-18 Nokia Mobile Phones Ltd. Method for encoding and decoding video information, a motion compensated video encoder and a corresponding decoder
US6711211B1 (en) 2000-05-08 2004-03-23 Nokia Mobile Phones Ltd. Method for encoding and decoding video information, a motion compensated video encoder and a corresponding decoder
KR100359115B1 (ko) 2000-05-24 2002-11-04 삼성전자 주식회사 영상 코딩 방법
EP1467569A4 (en) 2002-01-18 2007-11-14 Toshiba Kk METHOD AND APPARATUS FOR ENCODING IMAGES IN MOTION, DECODING METHOD AND APPARATUS
WO2006034308A2 (en) 2004-09-21 2006-03-30 Euclid Discoveries, Llc Apparatus and method for processing video data
KR101366242B1 (ko) 2007-03-29 2014-02-20 삼성전자주식회사 움직임 모델 파라메터의 부호화, 복호화 방법 및 움직임모델 파라메터를 이용한 영상의 부호화, 복호화 방법 및장치
EP2286595A1 (en) 2008-06-16 2011-02-23 Dolby Laboratories Licensing Corporation Rate control model adaptation based on slice dependencies for video coding
JP2012080151A (ja) 2009-02-09 2012-04-19 Toshiba Corp 幾何変換動き補償予測を用いる動画像符号化及び動画像復号化の方法と装置
WO2011013253A1 (ja) 2009-07-31 2011-02-03 株式会社 東芝 幾何変換動き補償予測を用いる予測信号生成装置、動画像符号化装置及び動画像復号化装置
US8411750B2 (en) 2009-10-30 2013-04-02 Qualcomm Incorporated Global motion parameter estimation using block-based motion vectors
CN105120287B (zh) * 2010-04-13 2019-05-17 Ge 视频压缩有限责任公司 解码器、编码器以及用于解码和编码的方法
US9241160B2 (en) 2010-07-21 2016-01-19 Dolby Laboratories Licensing Corporation Reference processing using advanced motion models for video coding
CN103477635B (zh) * 2010-10-08 2017-01-18 Ge视频压缩有限责任公司 编码器和编码方法与解码器和解码方法
US9807424B2 (en) 2011-01-10 2017-10-31 Qualcomm Incorporated Adaptive selection of region size for identification of samples in a transition zone for overlapped block motion compensation
RU2480941C2 (ru) 2011-01-20 2013-04-27 Корпорация "Самсунг Электроникс Ко., Лтд" Способ адаптивного предсказания кадра для кодирования многоракурсной видеопоследовательности
US9282338B2 (en) 2011-06-20 2016-03-08 Qualcomm Incorporated Unified merge mode and adaptive motion vector prediction mode candidates selection
US9883203B2 (en) 2011-11-18 2018-01-30 Qualcomm Incorporated Adaptive overlapped block motion compensation
US9532046B2 (en) 2012-04-16 2016-12-27 Qualcomm Incorporated Reference picture set prediction for video coding
US9762903B2 (en) 2012-06-01 2017-09-12 Qualcomm Incorporated External pictures in video coding
US9736498B2 (en) 2012-10-03 2017-08-15 Mediatek Inc. Method and apparatus of disparity vector derivation and inter-view motion vector prediction for 3D video coding
US9819965B2 (en) * 2012-11-13 2017-11-14 Intel Corporation Content adaptive transform coding for next generation video
WO2015052935A1 (en) * 2013-10-11 2015-04-16 Sharp Kabushiki Kaisha Color information and chromaticity signaling
WO2015169200A1 (en) 2014-05-06 2015-11-12 Mediatek Singapore Pte. Ltd. Method of block vector prediction for intra block copy mode coding
WO2016008157A1 (en) 2014-07-18 2016-01-21 Mediatek Singapore Pte. Ltd. Methods for motion compensation using high order motion model
CN112087630B (zh) * 2014-09-30 2022-04-08 华为技术有限公司 图像预测方法、装置、解码器及存储介质
CN104363451B (zh) 2014-10-27 2019-01-25 华为技术有限公司 图像预测方法及相关装置
KR20220162877A (ko) 2014-10-31 2022-12-08 삼성전자주식회사 고정밀 스킵 부호화를 이용한 비디오 부호화 장치 및 비디오 복호화 장치 및 그 방법
MY190198A (en) 2015-03-10 2022-04-04 Huawei Tech Co Ltd Picture prediction method and related apparatus
KR102267922B1 (ko) 2015-09-23 2021-06-22 노키아 테크놀로지스 오와이 360도 파노라마 비디오를 코딩하는 방법, 장치 및 컴퓨터 프로그램 제품
KR20180048736A (ko) 2015-09-24 2018-05-10 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측 방법 및 장치
EP3629581A1 (en) 2015-10-13 2020-04-01 Samsung Electronics Co., Ltd. Method and device for encoding or decoding image
US11082713B2 (en) 2015-11-20 2021-08-03 Mediatek Inc. Method and apparatus for global motion compensation in video coding system
GB2561507B (en) 2016-01-07 2021-12-22 Mediatek Inc Method and apparatus for affine merge mode prediction for video coding system
WO2017130696A1 (ja) 2016-01-29 2017-08-03 シャープ株式会社 予測画像生成装置、動画像復号装置、および動画像符号化装置
US10638152B2 (en) 2016-03-15 2020-04-28 Mediatek Inc. Method and apparatus of video coding with affine motion compensation
US10623774B2 (en) 2016-03-22 2020-04-14 Qualcomm Incorporated Constrained block-level optimization and signaling for video coding tools
US10560712B2 (en) 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
WO2017201678A1 (zh) 2016-05-24 2017-11-30 华为技术有限公司 图像预测方法和相关设备
US10448010B2 (en) 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
US11877001B2 (en) 2017-10-10 2024-01-16 Qualcomm Incorporated Affine prediction in video coding

Also Published As

Publication number Publication date
US11877001B2 (en) 2024-01-16
WO2019075058A1 (en) 2019-04-18
US20240137556A1 (en) 2024-04-25
TW201924343A (zh) 2019-06-16
US20190110064A1 (en) 2019-04-11
AU2018348143A1 (en) 2020-03-26
CA3074931A1 (en) 2019-04-18
AU2018348143B2 (en) 2022-08-25
EP3695604A1 (en) 2020-08-19
SG11202001985VA (en) 2020-04-29
TWI805627B (zh) 2023-06-21
CL2020000873A1 (es) 2020-09-25
CN111164977A (zh) 2020-05-15
KR20200055015A (ko) 2020-05-20
CN111164977B (zh) 2024-05-24

Similar Documents

Publication Publication Date Title
BR112020006588A2 (pt) predição afim em codificação de vídeo
AU2019302660B2 (en) Multiple history based non-adjacent MVPs for wavefront processing of video coding
CN110771164B (zh) 视频译码中的帧间预测与帧内预测的组合
US11889100B2 (en) Affine motion vector prediction in video coding
BR112020006232A2 (pt) codificação de informação de movimento de predição afim para codificação de vídeo
WO2019147826A1 (en) Advanced motion vector prediction speedups for video coding
WO2019140189A1 (en) Affine motion compensation with low bandwidth
BR112021002967A2 (pt) predição de movimento afim
BR112021005357A2 (pt) aprimoramentos em preditor de vetor de movimento baseado em histórico
BR112021009558A2 (pt) simplificação da predição de vetor de movimento baseada em histórico
BR112019025566A2 (pt) Predição de vetor de movimento
BR112020006875A2 (pt) projeto de baixa complexidade para fruc
WO2018126163A1 (en) Motion vector generation for affine motion model for video coding
BR112021009721A2 (pt) informação de movimento triangular para codificação de vídeo
WO2019136131A1 (en) Generated affine motion vectors
TW202021354A (zh) 運動向量預測器清單產生
BR112021014603A2 (pt) Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
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
TW202228441A (zh) 用於視頻譯碼的多重假設預測
TW202232951A (zh) 多通路解碼器側運動向量細化
TW202415068A (zh) 視訊寫碼中之三角合併模式索引之發信

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]