BR112020025982A2 - sinalização de preditor de vetor de movimento de unidade de subpredição - Google Patents

sinalização de preditor de vetor de movimento de unidade de subpredição Download PDF

Info

Publication number
BR112020025982A2
BR112020025982A2 BR112020025982-9A BR112020025982A BR112020025982A2 BR 112020025982 A2 BR112020025982 A2 BR 112020025982A2 BR 112020025982 A BR112020025982 A BR 112020025982A BR 112020025982 A2 BR112020025982 A2 BR 112020025982A2
Authority
BR
Brazil
Prior art keywords
prediction
unit
motion
list
candidates
Prior art date
Application number
BR112020025982-9A
Other languages
English (en)
Inventor
Han Huang
Wei-Jung Chien
Vadim SEREGIN
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 BR112020025982A2 publication Critical patent/BR112020025982A2/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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/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/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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

Landscapes

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

Abstract

A presente invenção se refere a um método de decodificação de dados de vídeo compreendendo analisar um sinalizador de movimento da unidade de subpredição a partir de dados de vídeo recebidos, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição se o sinalizador de movimento da unidade de subpredição estiver ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de predição se o sinalizador de movimento da unidade de subpredição não estiver ativo, e decodificar os dados de vídeo codificados usando um preditor de vetor de movimento selecionado.

Description

“SINALIZAÇÃO DE PREDITOR DE VETOR DE MOVIMENTO DE UNIDADE DE SUBPREDIÇÃO”
[0001] Este Pedido de Patente reivindica prioridade ao Pedido de Patente Não Provisório US nº: 16/443.113, depositado em 17 de junho de 2019, que reivindica prioridade ao Pedido Provisório US nº 62/687.052, depositado em 19 de junho de 2018, todo o conteúdo dos referidos pedidos de patente é aqui incorporado por referência. Campo Técnico da Invenção
[0002] Esta revelação se refere à codificação e decodificação de vídeo. Antecedentes da Invenção
[0003] As funcionalidades de vídeo digital podem ser incorporadas a uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de transmissão digital direta, sistemas de transmissão sem fio, assistentes pessoais digitais (PDAs), laptops ou desktops, tablets, leitores de e-book, câmeras digitais, dispositivos de gravação digital, leitores de mídia digital, dispositivo de jogos de vídeo, consoles de jogos de vídeo, telefones celulares ou de rádio por satélite, os chamados “telefones inteligentes”, dispositivos de teleconferências de vídeo, dispositivos de streaming de vídeo e semelhantes. Os dispositivos de vídeo digital implementam técnicas de codificação de vídeo, como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC), ITU-T H.265/Codificação de Vídeo de Alta Eficiência
(HEVC), e as extensões desses padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar, e/ou armazenar informações de vídeo digital de forma mais eficiente, implementando essas técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (por exemplo, uma imagem de vídeo ou uma porção de uma imagem de vídeo) pode ser segmentada em blocos de vídeo, que também podem ser referidos como unidades de árvore de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando predição espacial com respeito a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar a predição espacial com respeito às amostras de referência em blocos vizinhos na mesma imagem ou a predição temporal com respeito às amostras de referência em outras imagens de referência. As imagens podem ser chamadas de quadros, e as imagens de referência podem ser chamadas de quadros de referência. Sumário da Invenção
[0005] Em geral, esta revelação se refere à predição de vetor de movimento em codecs de vídeo. Por exemplo, um preditor de vetor de movimento é selecionado de forma adaptativa a partir de duas listas de candidatos de predição de vetor de movimento, que são derivados. A primeira lista inclui candidatos de predição de vetor de movimento em nível da PU, a segunda lista inclui candidatos de predição de vetor de movimento em nível sub-PU.
[0006] Em uma forma de realização exemplificativa, é discutido um método de dados de vídeo de decodificação. O método inclui receber dados de vídeo codificados, analisar um sinalizador de movimento da unidade de subpredição a partir dos dados de vídeo codificados, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição não está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de predição, selecionar um preditor de vetor de movimento ou da lista de candidatos de predição de movimento em nível da unidade de subpredição ou da lista de candidatos de predição de movimento em nível da unidade de predição, e decodificar os dados de vídeo codificados usando o preditor de vetor de movimento selecionado. Os dados de vídeo codificados incluem um bloco em curso e em que a lista de candidatos de predição de movimento em nível da unidade de subpredição e a lista de candidatos de predição de movimento em nível da unidade de predição são derivadas a partir dos blocos vizinhos do bloco em curso. Os blocos vizinhos são vizinhos espaciais do bloco em curso em uma imagem em curso ou vizinhos temporais do bloco em curso em uma imagem previamente codificada. A lista de candidatos de predição de movimento em nível da unidade de subpredição é, pelo menos em parte, ordenada com base nas ocorrências de predição de movimento nos blocos vizinhos. Os pixels em uma unidade de predição compartilham informações do primeiro vetor de movimento e os pixels em uma unidade de subpredição compartilham informações do segundo vetor de movimento, e em que as informações do primeiro vetor de movimento ou as informações do segundo vetor de movimento são determinadas a partir do preditor de vetor de movimento selecionado. A lista de candidatos de vetor de movimento em nível da unidade de predição inclui pelo menos um dentre: candidatos vizinhos espaciais e candidatos vizinhos temporais. A lista de candidatos de predição de movimento em nível da unidade de subpredição inclui pelo menos um dentre: predição de vetor de movimento afim, predição de vetor de movimento temporal alternativa (ATMVP), predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar e derivação de vetor de movimento de correspondência padrão (PMVD). O método inclui derivar um índice de candidato de fusão em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, em que o índice de candidato de fusão especifica o preditor de vetor de movimento a ser selecionado.
[0007] Em outra forma de realização exemplificativa, um aparelho para decodificar dados de vídeo é discutido. O aparelho inclui uma memória para armazenar dados de vídeo codificados recebidos e um processador. O processador configurado para analisar um sinalizador de movimento da unidade de subpredição a partir dos dados de vídeo codificados, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição não está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de predição, selecionar um preditor de vetor de movimento ou da lista de candidatos de predição de movimento em nível da unidade de subpredição ou da lista de candidatos de predição de movimento em nível da unidade de predição e decodificar os dados de vídeo codificados usando o preditor de vetor de movimento selecionado.
Os dados de vídeo codificados incluem um bloco em curso e em que a lista de candidatos de predição de movimento em nível da unidade de subpredição e a lista de candidatos de predição de movimento em nível da unidade de predição são derivados a partir dos blocos vizinhos do bloco em curso.
Os blocos vizinhos são vizinhos espaciais do bloco em curso em uma imagem em curso ou vizinhos temporais do bloco em curso em uma imagem previamente codificada.
A lista de candidatos de predição de movimento em nível da unidade de subpredição é, pelo menos em parte, ordenada com base nas ocorrências de predição de movimento nos blocos vizinhos.
Os pixels em uma unidade de predição compartilham informações do primeiro vetor de movimento e os pixels em uma unidade de subpredição compartilham informações do segundo vetor de movimento , e em que as informações do primeiro vetor de movimento ou as informações do segundo vetor de movimento são determinadas a partir do preditor de vetor de movimento selecionado. A lista de candidatos de vetor de movimento em nível da unidade de predição inclui pelo menos um de: candidatos vizinhos espaciais e candidatos vizinhos temporais. A lista de candidatos de predição de movimento em nível da unidade de subpredição inclui pelo menos um dentre: predição de vetor de movimento afim, predição de vetor de movimento temporal alternativa (ATMVP), predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar, e derivação de vetor de movimento de correspondência padrão (PMVD). O processador ainda configurado para derivar um índice de candidato de fusão em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, em que o índice de candidato de fusão especifica o preditor de vetor de movimento a ser selecionado.
[0008] Em outra forma de realização exemplificativa, é discutido um aparelho para decodificação de dados de vídeo. O aparelho inclui meios de memória para armazenar dados de vídeo codificados recebidos e um meio de processador. O meio de processador configurado para analisar um sinalizador de movimento da unidade de subpredição a partir dos dados de vídeo codificados, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição não está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de predição, selecionar um preditor de vetor de movimento ou da lista de candidatos de predição de movimento em nível da unidade de subpredição ou da lista de candidatos de predição de movimento em nível da unidade de predição, e decodificar os dados de vídeo codificados usando o preditor de vetor de movimento selecionado.
Os dados de vídeo codificados incluem um bloco em curso e em que a lista de candidatos de predição de movimento em nível da unidade de subpredição e a lista de candidatos de predição de movimento em nível da unidade de predição são derivadas a partir dos blocos vizinhos do bloco em curso.
Os blocos vizinhos são vizinhos espaciais do bloco em curso em uma imagem em curso ou vizinhos temporais do bloco em curso em uma imagem previamente codificada.
A lista de candidatos de predição de movimento em nível da unidade de subpredição é, pelo menos em parte, ordenada com base nas ocorrências de predição de movimento nos blocos vizinhos.
Os pixels em uma unidade de predição compartilham informações do primeiro vetor de movimento e os pixels em uma unidade de subpredição compartilham informações do segundo vetor de movimento, e em que as informações do primeiro vetor de movimento ou as informações do segundo vetor de movimento são determinadas a partir do preditor de vetor de movimento selecionado.
A lista de candidatos de vetor de movimento em nível da unidade de predição inclui pelo menos um dentre: candidatos vizinhos espaciais e candidatos vizinhos temporais.
A lista de candidatos de predição de movimento em nível da unidade de subpredição inclui pelo menos um dentre: predição de vetor de movimento afim, predição de vetor de movimento temporal alternativa (ATMVP), predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar, e derivação de vetor de movimento de correspondência padrão (PMVD). O meio de processador é configurado ainda para derivar um índice de candidato de fusão em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, em que o índice de candidato de fusão especifica o preditor de vetor de movimento a ser selecionado.
[0009] Em outra forma de realização exemplificativa, um meio de armazenamento legível por computador não transitório tendo nele armazenadas instruções que, quando executadas, levam um ou mais processadores a realizar um método. O método inclui receber dados de vídeo codificados, analisar um sinalizador de movimento da unidade de subpredição a partir dos dados de vídeo codificados, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição não está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de predição, selecionar um preditor de vetor de movimento ou da lista de candidatos de predição de movimento em nível da unidade de subpredição ou da lista de candidatos de predição de movimento em nível da unidade de predição, e decodificar os dados de vídeo codificados usando o preditor do vetor de movimento selecionado. Os dados de vídeo codificados incluem um bloco em curso e em que a lista de candidatos de predição de movimento em nível da unidade de subpredição e a lista de candidatos de predição de movimento em nível da unidade de predição são derivadas a partir dos blocos vizinhos do bloco em curso.
Os blocos vizinhos são vizinhos espaciais do bloco em curso em uma imagem em curso ou vizinhos temporais do bloco em curso em uma imagem previamente codificada.
A lista de candidatos de predição de movimento em nível da unidade de subpredição é, pelo menos em parte, ordenada com base nas ocorrências de predição de movimento nos blocos vizinhos.
Os pixels em uma unidade de predição compartilham informações do primeiro vetor de movimento e os pixels em uma unidade de subpredição compartilham informações do segundo vetor de movimento, e em que as informações do primeiro vetor de movimento ou as informações do segundo vetor de movimento são determinadas a partir do preditor de vetor de movimento selecionado.
A lista de candidatos de vetor de movimento em nível da unidade de predição inclui pelo menos um dentre: candidatos vizinhos espaciais e candidatos vizinhos temporais.
A lista de candidatos de predição de movimento em nível da unidade de subpredição inclui pelo menos um dentre: predição de vetor de movimento afim, predição de vetor de movimento temporal alternativa (ATMVP), predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar e derivação de vetor de movimento de correspondência padrão (PMVD). O método inclui derivar um índice de candidato de fusão em resposta à determinação de que o sinalizador de movimento da unidade de predição está ativo, em que o índice de candidato de fusão especifica o preditor de vetor de movimento a ser selecionado.
[0010] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição, dos desenhos e das reivindicações. Breve Descrição dos Desenhos
[0011] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificativo que pode executar as técnicas desta revelação.
[0012] As figuras 2A e 2B são diagramas conceituais que ilustram uma estrutura de árvore binária quadtree (QTBT) exemplificativa e uma unidade de árvore de codificação (CTU) correspondente.
[0013] A figura 3 é um fluxograma que ilustra a derivação do preditor de vetor de movimento.
[0014] A figura 4 é um diagrama conceitual que ilustra candidatos vizinhos espaciais do vetor de movimento para um modo de fusão.
[0015] A figura 5 é um diagrama conceitual que ilustra candidatos temporais do vetor de movimento.
[0016] A figura 6 ilustra técnicas de seleção de blocos de candidatos do vetor de movimento.
[0017] A figura 7 é um diagrama conceitual que ilustra a Predição de Vetor de Movimento Espacial-Temporal (STMVP).
[0018] A figura 8 é um diagrama conceitual que ilustra técnicas de correspondência bilateral.
[0019] A figura 9 é um diagrama conceitual que ilustra técnicas de correspondência de modelo.
[0020] A figura 10 é um diagrama conceitual que ilustra a predição do vetor de movimento plana
[0021] A figura 11 é um diagrama de blocos que ilustra um codificador de vídeo exemplificativo que pode realizar as técnicas desta revelação.
[0022] A figura 12 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificativo que pode realizar as técnicas desta revelação. Descrição Detalhada da Invenção
[0023] Esta revelação está relacionada à derivação de vetor de movimento do lado do decodificador (DMVD). As técnicas de derivação de vetor de movimento do lado do decodificador descritas nesta revelação podem ser usadas em conjunto com qualquer codec de vídeo existente, como HEVC (Codificação de Vídeo de Alta Eficiência), ou podem ser usadas como técnicas de codificação para qualquer padrão de codificação de vídeo futuro, como H.266 Codificação de Vídeo Versátil (VVC) e Codificação de Vídeo Essencial (EVC).
[0024] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo 100 que pode executar as técnicas desta revelação. As técnicas desta revelação são geralmente direcionadas à codificação (codificação e/ou decodificação) de dados de vídeo, e, em particular, são relacionadas às técnicas discutidas neste documento. Em geral, os dados de vídeo incluem quaisquer dados para processamento de um vídeo. Assim, os dados de vídeo podem incluir vídeo bruto, não codificado, vídeo codificado, vídeo decodificado (por exemplo, reconstruído) e metadados de vídeo, como dados de sinalização.
[0025] Como mostrado na figura 1, o sistema 100 inclui um dispositivo de fonte 102 que fornece dados de vídeo codificados para serem decodificados e exibidos por um dispositivo de destino 116, neste exemplo. Em particular, o dispositivo de fonte 102 fornece os dados de vídeo para o dispositivo de destino 116 através de um meio legível por computador 110. O dispositivo de fonte 102 e o dispositivo de destino 116 podem compreender qualquer um de uma ampla gama de dispositivos, incluindo computadores desktop, notebooks (ou seja, laptops), tablets, conversores, aparelhos de telefone, como smartphones, televisores, câmeras, dispositivos de exibição, leitores de mídia digital, consoles de videogames, dispositivo de streaming de vídeo ou semelhantes. Em alguns casos, o dispositivo de fonte 102 e o dispositivo de destino 116 podem ser equipados para comunicação sem fio e, portanto, podem ser referidos como dispositivos de comunicação sem fio.
[0026] No exemplo da figura 1, o dispositivo de fonte 102 inclui a fonte de vídeo 104, memória 106, codificador de vídeo 200 e interface de emissão 108. O dispositivo de destino 116 inclui interface de entrada 122, decodificador de vídeo 300, memória 120 e dispositivo de exibição 118. De acordo com esta revelação, o codificador de vídeo 200 do dispositivo de fonte 102 e o decodificador de vídeo 300 do dispositivo de destino 116 podem ser configurados para aplicar as técnicas para a derivação do vetor de movimento do lado do decodificador. Assim, o dispositivo de 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 de fonte e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo de fonte 102 pode receber dados de vídeo de uma fonte de vídeo externa, como uma câmera externa. Da mesma forma, o dispositivo de destino 116 pode interagir com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.
[0027] O sistema 100, como mostrado na figura 1, é meramente um exemplo. Em geral, qualquer dispositivo de codificação e/ou decodificação de vídeo digital pode realizar técnicas para derivação do vetor de movimento do lado do decodificador. O dispositivo de fonte 102 e o dispositivo de destino 116 são meramente exemplos desses dispositivos de codificação em que o dispositivo de fonte 102 gera dados de vídeo codificados para a transmissão ao dispositivo de destino 116. Esta revelação se refere a um dispositivo de “codificação” como um dispositivo que realiza a codificação (codificação e/ou decodificação) de dados. Assim, o codificador de vídeo 200 e o decodificador de vídeo 300 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 uma 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 oferecer suporte à transmissão de vídeo unilateral ou bidirecional entre os dispositivos de vídeo 102, 116, por exemplo, para streaming de vídeo, reprodução de vídeo, transmissão de vídeo via broadcast ou videotelefonia.
[0028] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (isto é, dados de vídeo brutos, e não codificados) e fornece uma série sequencial de imagens (também denominadas “quadros”) dos dados de vídeo para o codificador de vídeo 200, que codifica dados para as imagens. A fonte de vídeo 104 do dispositivo de fonte 102 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo bruto capturado previamente e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como outra alternativa, a fonte de vídeo 104 pode gerar dados com base em gráficos de computador como o vídeo de fonte, 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 200 codifica dados de vídeo capturados, pré-capturados ou gerados por computador. O codificador de vídeo 200 pode reorganizar as imagens a partir da ordem recebida (às vezes referida como “ordem de exibição”) em uma ordem de codificação para codificação. O codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados. O dispositivo de fonte 102 pode, então, emitir os dados de vídeo codificados através da interface de emissão 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.
[0029] A memória 106 do dispositivo de fonte 102 e a memória 120 do dispositivo de destino 116 representam memórias de propósito geral. Em alguns exemplos, as memórias 106, 120 podem armazenar dados de vídeo brutos, por exemplo, vídeo bruto da fonte de vídeo 104 e dados de vídeo brutos, decodificados do decodificador de vídeo 300. Adicional ou alternativamente, as memórias 106, 120 podem armazenar instruções de software executáveis por, por exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300, respectivamente. Embora mostrado separadamente do codificador de vídeo 200 e do decodificador de vídeo 300 neste exemplo, deve ser entendido que o codificador de vídeo 200 e o decodificador de vídeo 300 também podem incluir memórias internas para propósitos de funcionalidades semelhantes ou equivalentes. Além disso, as memórias 106, 120 podem armazenar dados de vídeo codificados, por exemplo, de emissão do codificador de vídeo 200 e de entrada para o decodificador de vídeo 300. Em alguns exemplos, porções de memórias 106, 120 podem ser alocadas como um ou mais buffers de vídeo, por exemplo, para armazenar dados de vídeo brutos, decodificados e/ou codificados.
[0030] O meio legível por computador 110 pode representar qualquer tipo de meio ou dispositivo capaz de transportar os dados de vídeo codificados do dispositivo de fonte 102 para o dispositivo de destino 116. Em um exemplo, o meio legível por computador 110 representa um meio de comunicação para permitir que o dispositivo de 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 com base em computador. A interface de emissão 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, como um protocolo de comunicação sem fio. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede com base em pacotes, como uma rede de área local, uma rede de área ampla ou uma rede global, como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que pode ser útil para facilitar a comunicação do dispositivo de fonte 102 para o dispositivo de destino 116.
[0031] Em alguns exemplos, o dispositivo de fonte 102 pode emitir dados codificados da interface de emissão 108 para o dispositivo de armazenamento 112. Da mesma forma, o dispositivo de destino 116 pode acessar dados codificados do dispositivo de armazenamento 112 através da interface de entrada 122. O dispositivo de armazenamento 112 pode incluir qualquer um dentre uma variedade de mídias de armazenamento de dados distribuídas ou acessadas localmente, como um disco rígido, discos Blu-ray, DVDs, CD- ROMs, memória flash, memória volátil ou não volátil ou qualquer outro armazenamento de mídia digital adequado para armazenar dados de vídeo codificados.
[0032] Em alguns exemplos, o dispositivo de 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 de fonte 102. O dispositivo de destino 116 pode acessar os dados de vídeo armazenados no servidor de arquivos 114 via streaming ou download. O servidor de arquivos 114 pode ser qualquer tipo de dispositivo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 116. O servidor de arquivos 114 pode representar um servidor da web (por exemplo, de um site), um servidor de Protocolo de Transferência de Arquivos (FTP), um dispositivo de rede de distribuição de conteúdo ou um dispositivo de armazenamento conectado à rede (NAS). O dispositivo de destino 116 pode acessar dados de vídeo codificados do servidor de arquivos 114 por meio de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos, que é adequada para acessar dados de vídeo codificados armazenados no servidor de arquivos 114. O servidor de arquivos 114 e a interface de entrada 122 podem ser configurados para operar de acordo com um protocolo de transmissão de streaming, um protocolo de transmissão de download ou uma combinação dos mesmos.
[0033] A interface de emissão 108 e a interface de entrada 122 podem representar transmissores/receptores sem fio, modems, componentes de rede com fio (por exemplo, placas Ethernet), componentes de comunicação sem fio que operam de acordo com qualquer um de uma variedade de padrões IEEE 802.11 ou outros componentes físicos. Em exemplos em que a interface de emissão 108 e a interface de entrada 122 compreendem componentes sem fio, a interface de emissão 108 e a interface de entrada 122 podem ser configuradas para transferir dados, como dados de vídeo codificados, de acordo com um padrão de comunicação celular, como 4G, 4G-LTE (Evolução a Longo Prazo), LTE Avançada, 5G ou semelhante. Em alguns exemplos em que a interface de emissão 108 compreende um transmissor sem fio, a interface de emissão 108 e a interface de entrada 122 podem ser configuradas para transferir dados, como dados de vídeo codificados, de acordo com outros padrões sem fio, como uma especificação IEEE 802.11, uma especificação IEEE
802.15 (por exemplo, ZigBee™), um padrão Bluetooth™ ou semelhante. Em alguns exemplos, o dispositivo de fonte 102 e/ou o dispositivo de destino 116 podem incluir respectivos dispositivos de sistema em um chip (SoC). Por exemplo, o dispositivo de fonte 102 pode incluir um dispositivo SoC para realizar a função atribuída ao codificador de vídeo 200 e/ou à interface de emissão 108, e o dispositivo de destino 116 pode incluir um dispositivo SoC para realizar a função atribuída ao decodificador de vídeo 300 e/ou a interface de entrada 122.
[0034] As técnicas desta revelação podem ser aplicadas à codificação de vídeo no suporte de qualquer uma dentre uma variedade de aplicações de multimídia, como transmissões de televisão sem fio, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de streaming de vídeo da Internet, como streaming adaptativo dinâmico sobre HTTP (DASH), vídeo digital codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações.
[0035] A interface de entrada 122 do dispositivo de destino 116 recebe um fluxo de bits de vídeo codificado do meio legível por computador 110 (por exemplo, dispositivo de armazenamento não transitório 112, servidor de arquivos 114 ou semelhantes). O fluxo de bits de vídeo codificado do meio legível por computador 110 pode incluir informações de sinalização definidas pelo codificador de vídeo 200, que também é usado pelo decodificador de vídeo 300, tal como elementos de sintaxe com 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 semelhantes). 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 um de uma variedade de dispositivos de exibição, como um tubo de raios catódicos (CRT), uma tela de cristal líquido (LCD), uma tela de plasma, uma tela de diodo orgânico emissor de luz (OLED) ou outro tipo de dispositivo de exibição.
[0036] Embora não mostrado na figura 1, em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser integrados cada um 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, as unidades MUX-DEMUX podem estar em conformidade com o protocolo do multiplexador ITU H.223 ou outros protocolos, como o protocolo de datagrama de usuário (UDP).
[0037] Cada um dentre o codificador de vídeo 200 e o decodificador de vídeo 300 pode ser implementado como qualquer um dentre uma variedade de codificadores e/ou circuitos decodificadores adequados, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta revelação. Cada um dos codificadores de vídeo 200 e decodificadores de vídeo 300 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo. Um dispositivo incluindo um codificador de vídeo 200 e/ou um decodificador de vídeo 300 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação sem fio, como um telefone celular.
[0038] Os padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO-IEC MPEG 4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo com Múltiplas Visualizações (MVC).
[0039] Um padrão de codificação de vídeo, nomeado como Codificação de Vídeo de Alta Eficiência (HEVC) ou ITU- T H.265, incluindo sua área de extensão, extensão de múltipla visualização (MV-HEVC) e extensão escalável (SHVC), foi desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC), bem como a Equipe de Colaboração Conjunta no Desenvolvimento da Extensão de Codificação de Vídeo 3D (JCT-3V) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e do Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG).
[0040] VCEG ITU-T (Q6/16) e MPEG ISO/IEC (JCT 1/SC 29/WG 11) estão estudando agora a necessidade potencial de padronização da futura tecnologia de codificação de vídeo com uma capacidade de compreensão que excede o padrão HEVC atual (incluindo suas extensões atuais e extensões de curto prazo para codificação de conteúdo de tela e codificação de dinâmica de alto alcance). Os grupos estão trabalhando juntos nesta atividade de exploração em um esforço de colaboração conjunto conhecido como Equipe Conjunta de Exploração de Vídeo (JVET) para avaliar os projetos de tecnologia de compressão propostos por seus especialistas nesta área. A JVET reuniu-se pela primeira vez de 19 a 21 de outubro de 2015. E a última versão do software de referência, isto é, o Modelo de Exploração Conjunta 7 (JEM 7) pode ser baixado em: https://ivet.hhi.fraunhofer.de/svn/svn HMJEMSoftware/tags/HM-l6.6-JEM-57.0/ Uma descrição do
Algoritmo do Modelo de Teste de Exploração Conjunta 7 (JEM7) pode ser referida como JVET-G1001.
[0041] O codificador de vídeo 200 e o decodificador de vídeo 300 pode operar de acordo com um padrão de codificação de vídeo, como o ITU-T H.265, também conhecido como Codificação de Vídeo de Alta Eficiência (HEVC) ou extensões disso, como as extensões multivista e/ou de codificação de vídeo escalável. Alternativamente, o codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com os padrões de outro proprietário ou de outra indústria, como o Modelo de Teste de Exploração Conjunta (JEM) ou ITU-T H.266, também conhecido como Codificação de Vídeo Versátil (VVC). Um esboço recente do padrão VVC é descrito em Bross, et al. “Codificação de Vídeo Versátil (Esboço 3)”, Equipe Conjunta de Especialistas em Vídeo (JVET), do ITU-T SG 16 WP 3 e ISO/IEC JTC I/SC 29/WG 11, 13ª Reunião: Marrakech, MA, 9 a 18 de janeiro de 2019, JVET-M1001-v3 (doravante “VVC Esboço 4”). As técnicas desta revelação, no entanto, não estão limitadas a qualquer padrão de codificação particular. Como será discutido, o decodificador de vídeo 300 pode ser configurado para realizar uma ou mais técnicas desta revelação. Por exemplo, o decodificador de vídeo 300 pode analisar um sinalizador de movimento da unidade de predição a partir de dados de vídeo codificados recebidos, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição caso o sinalizador de movimento da unidade de predição esteja ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de predição caso o sinalizador de movimento da unidade de subpredição não esteja ativo, e decodificar dados de vídeo codificados usando um preditor de vetor de movimento selecionado.
[0042] Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem realizar a codificação de imagens com base em blocos. O termo “bloco” geralmente se refere a uma estrutura que inclui dados a serem processados (por exemplo, codificados, decodificados ou de outra forma usados 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 200 e o decodificador de vídeo 300 podem codificar dados de vídeo representados em um formato YUV (por exemplo, Y, Cb, Cr). Isso é, em vez de codificar dados vermelhos, verdes e azuis (RGB) para amostras de uma imagem, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar componentes de luminância e crominância, onde os componentes de crominância podem incluir componentes de crominância de matiz vermelho e matiz azul. Em alguns exemplos, o codificador de vídeo 200 converte dados de RGB formatados recebidos em uma representação YUV antes da codificação, e o decodificador de vídeo 300 converte a representação YUV para o formato de RGB. Alternativamente, unidades de pré e pós-processamento (não mostradas) podem realizar essas conversões.
[0043] Esta revelação pode geralmente se referir à 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. Da mesma forma, esta revelaçã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 segmentação de imagens em blocos. Assim, as referências à codificação de uma imagem ou bloco devem geralmente ser entendidas como valores de codificação para os elementos de sintaxe que formam a imagem ou bloco.
[0044] A HEVC define vários blocos, incluindo unidades de codificação (CUs), unidades de predição (PUs), e unidades de transformada (TUs). De acordo com HEVC, um codificador de vídeo (como o codificador de vídeo 200) segmenta uma unidade de árvore de codificação (CTU) em CETs, de acordo com uma estrutura de quadtree. Ou seja, o codificador de vídeo divide CTUs e CUs em quatro quadrados iguais, não sobrepostos, e cada nó da quadtree tem zero ou quatro nós filhos. Os nós sem nós filhos podem ser referidos como “nós folha”, e as CUs desses nós folha podem incluir uma ou mais PUs e/ou uma ou mais TUs. O codificador de vídeo pode ainda segmentar PUs e TUs. Por exemplo, na HEVC, uma quadtree residual (RQT) representa a segmentação de TUs. Na HEVC, as PUs representam dados de interpredição, enquanto as TUs representam dados residuais. As CUs que são intrapreditas incluem informações de intrapredição, como em uma indicação de intramodo.
[0045] Como um outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para operar de acordo com JEM ou VVC. De acordo com JEM ou VVC, um codificador de vídeo (como um codificador de vídeo 200) segmenta uma imagem em uma pluralidade de unidades de árvores de codificação (CTUs). O codificador de vídeo 200 pode segmentar uma CTU de acordo com uma estrutura de árvore, como uma estrutura de árvore quadtree binária (QTBT). A estrutura QTBT remove os conceitos de múltiplos tipos de segmentação, como a separação entre CUs, PUs, e TUs da HEVC. Uma estrutura QTBT de JEM inclui dois níveis: um primeiro nível segmentado de acordo com a segmentação de quadtree, e um segundo nível segmentado de acordo com a segmentação de árvore binária. Um nó raiz da estrutura QTBT corresponde a uma CTU. Os nós folha das árvores binárias correspondem às unidades de codificação (CUs).
[0046] Em uma estrutura de segmentação MTT, blocos podem ser segmentados usando uma segmentação de quadtree (QT), uma segmentação de árvore binária (BT) e um ou mais tipos de segmentações de árvores triplas (TT). Uma segmentação de árvore tripla é uma segmentação onde um bloco é dividido em três sub-blocos. Em alguns exemplos, uma segmentação de árvore tripla divide um bloco em três sub-blocos sem dividir o bloco original pelo centro. Os tipos de segmentação em MTT (por exemplo, QT, BT e TT) podem ser simétricos ou assimétricos.
[0047] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar uma única estrutura de QTBT ou MTT para representar cada um dos componentes de luminância e crominância, enquanto em outros exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar duas ou mais estruturas QTBT ou MTT,
como uma estrutura QTBT/MTT para o componente de luminância e outra estrutura QTBT ou MTT para ambos os componentes de crominância (ou duas estruturas QTBT/MTT para respectivos componentes de crominância).
[0048] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para usar a segmentação em quadtree por HEVC, a segmentação QTBT ou a segmentação MTT, ou outras estruturas de segmentação. Para fins de explicação, a descrição das técnicas dessa revelação é apresentada com respeito à segmentação QTBT. No entanto, deve ser entendido que as técnicas desta revelação também podem ser aplicadas a codificadores de vídeo configurados para usar a segmentação quadtree ou também outros tipos de segmentação.
[0049] Esta revelação pode usar “NxN” e “N por N” de forma permutável para se referir às dimensões da amostra de um bloco (como uma CU ou outro bloco de vídeo) em termos de dimensões verticais e horizontais, por exemplo, amostras de 16x16 ou amostras de 16 por 16. 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). Da mesma forma, uma CU NxN 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 organizadas em linhas e colunas. Além disso, as CUs não precisam, necessariamente, ter o mesmo número de amostras na direção horizontal como na direção vertical. Por exemplo, as CUs podem compreender amostras NXM, onde M não é necessariamente igual a N.
[0050] O codificador de vídeo 200 codifica dados de vídeo para CUs que representam informações de predição e/ou residuais, e outras informações. As informações de predição indicam como a CU deve ser predita para formar um bloco de predição para a CU. As informações residuais geralmente representam diferenças de amostra por amostra entre amostras da CU antes da codificação e o bloco de predição.
[0051] Para predizer uma CU, o codificador de vídeo 200 pode geralmente formar um bloco de predição para a CU por meio de interpredição ou intrapredição. A interpredição geralmente se refere à predição da CU a partir de dados de uma imagem previamente codificada, ao passo que a intrapredição geralmente se refere à predição da CU de dados previamente codificados da mesma imagem. Para realizar a interpredição, o codificador de vídeo 200 pode gerar o bloco de predição usando um ou mais vetores de movimento. O codificador de vídeo 200 geralmente pode fazer uma pesquisa 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 200 pode calcular um indicador de diferença usando uma soma de diferença absoluta (SAD), soma de diferenças quadradas (SSD), diferença média absoluta (MAD), diferenças médias quadradas (MSD) ou outros cálculos de diferença para determinar se um bloco de referência corresponde mais intimamente à CU atual. Em alguns exemplos, o codificador de vídeo 200 pode predizer a CU atual usando predição unidirecional ou predição bidirecional.
[0052] Alguns exemplos de JEM e VVC também fornecem um modo de compensação de movimento afim, que pode ser considerado como um modo de interpredição. Em um modo de compensação de movimento afim, o codificador de vídeo 200 pode determinar dois ou mais vetores de movimento que representam um movimento não translacional, como aumentar ou diminuir o zoom, rotação, movimento em perspectiva ou outros tipos de movimento irregular.
[0053] Para realizar a intrapredição, o codificador de vídeo 200 pode selecionar um modo de intrapredição para gerar o bloco de predição. Alguns exemplos de JEM e VVC fornecem sessenta e sete modos de intrapredição, incluindo vários modos direcionais, bem como modo planar e modo DC. Em geral, o codificador de vídeo 200 seleciona um modo de intrapredição que descreve amostras vizinhas a um bloco em curso (por exemplo, um bloco de uma CU) a partir do qual prediz amostras do bloco em curso. Essas amostras podem geralmente estar acima, acima e à esquerda ou à esquerda do bloco em curso na mesma imagem do bloco em curso, assumindo que o codificador de vídeo 200 codifica CTUs e CUs em ordem de varredura raster (da esquerda para a direita, de cima para baixo).
[0054] O codificador de vídeo 200 codifica dados que representam o modo de predição para um bloco em curso. Por exemplo, para modos de interpredição, o codificador de vídeo 200 pode codificar dados que representam qual, de cada um dos vários modos de interpredição disponíveis, é usado, assim como as informações de movimento para o modo correspondente. Para interpredição unidirecional ou bidirecional, por exemplo, o codificador de vídeo 200 pode codificar vetores de movimento usando predição de vetor de movimento avançada (AMVP) ou modo de fusão. O codificador de vídeo 200 pode usar modos similares para codificar vetores de movimento para o modo de compensação de movimento afim.
[0055] Após a predição, como a intrapredição ou interpredição de um bloco, o codificador de vídeo 200 pode calcular dados residuais para o bloco. Os dados residuais, como um bloco residual, representam, amostra por amostra, diferenças entre o bloco e um bloco de predição para o bloco, formado usando o modo de predição correspondente. O codificador de vídeo 200 pode aplicar uma ou mais transformadas ao bloco residual, para produzir dados transformados em um domínio de transformada ao invés do domínio de amostra. Por exemplo, o codificador de vídeo 200 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada de inteiros, uma transformada de wavelet, ou uma transformada conceitualmente semelhante a dados de vídeo residuais. Adicionalmente, o codificador de vídeo 200 pode aplicar uma transformada secundária seguindo a primeira transformada, 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 semelhantes. O codificador de vídeo 200 produz coeficientes de transformada após a aplicação de uma ou mais transformadas.
[0056] Como observado acima, após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 200 pode realizar a quantização dos coeficientes de transformada. A quantização geralmente se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, proporcionando compressão adicional. Ao realizar o processo de quantização, o codificador de vídeo 200 pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. Por exemplo, o codificador de vídeo 200 pode arredondar um valor de n bits para um valor de m bits durante a quantização, onde n é maior do que m. Em alguns exemplos, para realizar a quantização, o codificador de vídeo 200 pode realizar um deslocamento para a direita bit a bit do valor a ser quantizado.
[0057] Após a quantização, o codificador de vídeo 200 pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional, incluindo os coeficientes de transformada quantizados. A varredura pode ser concebida para colocar os coeficientes de transformada de energia mais alta (e, portanto, frequência mais baixa) na frente do vetor e para colocar os coeficientes de transformada de energia mais baixa (e, portanto, frequência mais alta) atrás do vetor. Em alguns exemplos, o codificador de vídeo 200 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantizados para produzir um vetor serializado e, em seguida, codificar, por entropia, os coeficientes de transformada quantizados do vetor. Em alguns exemplos, o codificador de vídeo 200 pode realizar uma varredura adaptativa. Após varrer os coeficientes de transformada quantizados para formar o vetor unidimensional, o codificador de vídeo 200 pode codificar,
por entropia, o vetor unidimensional, por exemplo, de acordo com a codificação aritmética binária adaptativa ao contexto (CAB AC). O codificador de vídeo 200 também pode codificar, por entropia, os valores de elementos de sintaxe descrevendo metadados associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 300 na decodificação dos dados de vídeo.
[0058] Para realizar CABAC, o codificador de vídeo 200 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode ser relacionado a, por exemplo, se os valores vizinhos do símbolo têm valor zero ou não. A determinação da probabilidade pode ter como base um contexto atribuído ao símbolo.
[0059] O codificador de vídeo 200 pode ainda gerar dados de sintaxe, como dados de sintaxe com base em bloco, e dados de sintaxe com base em sequência, para o decodificador de vídeo 300, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia, ou outros dados de sintaxe, como um conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de vídeo (VPS). O decodificador de vídeo 300 pode, da mesma forma, decodificar esses dados de sintaxe para determinar como decodificar os dados de vídeo correspondentes.
[0060] Desta maneira, o codificador de vídeo 200 pode gerar um fluxo de bits que incluem dados de vídeo codificados, por exemplo, elementos de sintaxe que descrevem a segmentação de uma imagem em blocos (por exemplo, CUs) e informações de predição e/ou residuais para os blocos. Enfim, o decodificador de vídeo 300 pode receber o fluxo de bits e decodificar os dados de vídeo codificados.
[0061] Em geral, o decodificador de vídeo 300 realiza um processo recíproco em relação ao realizado pelo codificador de vídeo 200 para decodificar os dados de vídeo codificados do fluxo de bits. Por exemplo, o decodificador de vídeo 300 pode decodificar valores para elementos de sintaxe do fluxo de bits usando CABAC de uma maneira substancialmente similar, embora recíproca, ao processo de codificação CABAC do codificador de vídeo 200. Os elementos de sintaxe podem definir informações de segmentação de uma imagem em CTUs, e a segmentação de cada CTU de acordo com uma estrutura de segmentação correspondente, tal como uma estrutura QTBT, para definir CUs de uma CTU. Os elementos de sintaxe podem ainda definir informações de predição e residuais para blocos (por exemplo, CUs) de dados de vídeo.
[0062] As informações residuais podem ser representadas por, por exemplo, coeficientes de transformada quantizada. O decodificador de vídeo 300 pode quantizar inversamente e transformar inversamente os coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 300 usa um modo de predição sinalizado (intra ou interpredição) e informações de predição relacionadas (por exemplo, informações de movimento para interpredição) para formar um bloco de predição para o bloco. O decodificador de vídeo 300 pode, então, combinar o bloco de predição e o bloco residual (em uma base amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 300 pode realizar processamento adicional, como realizar um processo de desbloqueio para reduzir artefatos visuais ao longo dos limites do bloco.
[0063] Esta revelação pode geralmente se referir à “sinalização” de algumas informações, como elementos de sintaxe. O termo “sinalização” pode geralmente se referir à comunicação de valores de elementos de sintaxe e/ou outros dados usados para decodificar dados de vídeo codificados. Isto é, o codificador de vídeo 200 pode sinalizar valores para elementos de sintaxe no fluxo de bits. Em geral, sinalizar refere-se à geração de um valor no fluxo de bits. Como observado acima, o dispositivo de fonte 102 pode transportar o fluxo de bits para o dispositivo de destino 116 substancialmente em tempo real, ou não em tempo real, como o que pode ocorrer ao armazenar elementos de sintaxe no dispositivo de armazenamento 112 para recuperação posterior pelo dispositivo de destino 116.
[0064] As figuras 2A e 2B são diagramas conceituais que ilustram um exemplo de estrutura de árvore binária de quadtree (QTBT) 130, e uma unidade de árvore de codificação (CTU) 132 correspondente. As linhas sólidas representam a divisão da quadtree e as linhas pontilhadas indicam a divisão da árvore binária. Em cada nó de divisão (ou seja, não folha) da árvore binária, um indicador é sinalizado para indicar qual tipo de divisão (ou seja, horizontal ou vertical) se usa, onde 0 indica divisão horizontal e 1 indica divisão vertical neste exemplo. Para a divisão de quadtree, não há necessidade de indicar o tipo de divisão, pois os nós da quadtree se dividem em um bloco horizontal e verticalmente em 4 sub-blocos de tamanho igual. Consequentemente, o codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar os elementos de sintaxe (como informações de divisão) para um nível de região de árvore de uma estrutura de QTBT 130 (isto é, as linhas sólidas) e elementos de sintaxe (como as informações de divisão) para um nível de árvore de predição de estrutura de QTBT 130 (isto é, as linhas tracejadas). O codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar os dados de vídeo, como dados de predição e de transformada, para CUs representadas pelos nós folha terminais da estrutura de QTBT 130.
[0065] Em geral, a CTU 132 da figura 2B pode ser associada a parâmetros definindo tamanhos dos blocos correspondentes aos nós da estrutura de QTBT 130 no primeiro e no segundo níveis. Estes parâmetros incluem o tamanho de CTU (representando o tamanho de uma CTU 132 em amostras), um tamanho mínimo de quadtree (MinQTSize, representando o tamanho mínimo permitido do nó folha da quadtree), um tamanho máximo de árvore binária (MaxBTSize, representando o tamanho máximo permitido do nó raiz da árvore binária), uma profundidade máxima da árvore binária (MaxBTDepth, representando a profundidade máxima permitida da árvore binária), e um tamanho mínimo da árvore binária (MinBTSize, representando o tamanho mínimo permitido do nó folha da árvore binária).
[0066] O nó raiz da estrutura de QTBT correspondente a uma CTU pode ter quatro nós filhos no primeiro nível da estrutura de QTBT, cada um deles pode ser segmentado de acordo com a segmentação de quadtree. Isso é, nós do primeiro nível são também nós folha (não tendo nós filhos) ou têm quatro nós filhos. O exemplo da estrutura de QTBT 130 representa esses nós, incluindo o nó original e os nós filhos, tendo linhas sólidas para ramificações. Se os nós do primeiro nível não forem mais largos do que o tamanho máximo permitido do nó raiz de árvore binária (MaxBTSize), eles podem ser segmentados posteriormente pelas respectivas árvores binárias. A divisão da árvore binária de um nó pode ser iterada até que os nós resultantes da divisão atinjam o tamanho mínimo permitido do nó folha da árvore binária (MinBTSize) ou a profundidade máxima permitida da árvore binária (MaxBTDepth). O exemplo da estrutura de QTBT 130 representa esses nós como tendo linhas tracejadas para ramificações. O nó folha da árvore binária é referido como uma unidade de codificação (CU), que é usada para predição (por exemplo, predição de intraimagem ou de interimagem) e transformada, sem qualquer segmentação posterior. Como discutido acima, as CUs também podem ser referidas como “blocos de vídeo” ou “blocos”.
[0067] Em um exemplo da estrutura de segmentação de QTBT, o tamanho da CTU é definido como 128x128 (amostras luma e duas amostras croma de 64x64 correspondentes), o MinQTSize é definido como 16x16, o MaxBTSize é definido como 64x64, o MinBTSize (tanto para as larguras quanto para a altura) é definido como 4, e o MaxBTDepth é definido como
4. A segmentação de quadtree é aplicada à CTU primeiro, para gerar nós folha de quadtree. Os nós folha de quadtree podem ter um tamanho de 16x16 (isto é, o MinQTSize) a 128x128 (isto é, o tamanho da CTU). Caso o nó folha de quadtree seja 128x128, ele não será dividido posteriormente pela árvore binária, já que o tamanho excede o MaxBTSize
(isto é, 64x64, neste exemplo). Caso contrário, o nó folha de quadtree será posteriormente segmentado pela árvore binária. Portanto, o nó folha de quadtree também é o nó raiz da árvore binária e tem a profundidade da árvore binária como 0. Quando a profundidade da árvore binária atinge MaxBTDepth (4, neste exemplo), nenhuma divisão posterior é permitida. Quando o nó da árvore binária tem largura igual ao MinBTSize (4, neste exemplo), isso quer dizer que nenhuma divisão horizontal posterior é permitida. De maneira similar, um nó de árvore binária que tem a altura igual ao MinBTSize quer dizer que nenhuma divisão vertical posterior é permitida para aquele nó de árvore binária. Como observado acima, os nós folha da árvore binária são referidos como CUs, e são processados posteriormente de acordo com a predição e a transformada sem segmentação posterior.
[0068] Nesta seção, são discutidos padrões de codificação de vídeo, especialmente técnicas relacionadas à predição de vetor de movimento de padrões anteriores.
[0069] Os padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo de Múltiplas Visualizações (MVC). O último esboço conjunto da MVC é descrito em “Codificação de vídeo avançada para serviços audiovisuais comuns”, Recomendação ITU-T H.264, março de 2010.
[0070] Além disso, existe um padrão de codificação de vídeo desenvolvido recentemente, nomeado como Codificação de Vídeo de Alta Eficiência (HEVC), desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC), do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagens em Movimento ISO/IEC (MPEG). Um esboço recente está disponível em: http://phenix.int- eyry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC- L1003-v34.zip .
[0071] Informações de Movimento
[0072] Para cada bloco, um conjunto de informações de movimento pode estar disponível. O conjunto de informações de movimento contém informações de movimento para direções de predição para frente e para trás. Aqui, as direções de predição para frente e para trás são duas direções de predição correspondentes à lista de imagem de referência (RefPicList0) e a lista de imagem de referência 1 (RefPicList1) de uma imagem ou fatia em curso. Os termos “para frente” e “para trás” não têm, necessariamente, um significado geométrico. Em vez disso, eles são usados para distinguir em qual se baseia a lista de imagens de referência de um vetor de movimento. A predição para frente significa que a predição é formada com base na lista de referência 0, enquanto a predição para trás significa que a predição é formada com base na lista de referência 1. Tanto no caso da lista de referência 0 quanto da lista de referência 1 serem usadas para formar uma predição para um determinado bloco, ela é chamada de predição bidirecional.
[0073] Para uma imagem ou fatia determinada, se apenas uma lista de imagem de referência for usada, cada bloco dentro da imagem ou da fatia é predito para frente.
Se as duas listas de imagem de referência forem usadas para uma imagem ou fatia determinada, um bloco dentro da imagem ou fatia pode ser predito para frente, ou predito para trás, ou predito de maneira bidirecional.
[0074] Para cada direção de predição, as informações de movimento contêm um índice de referência e um vetor de movimento. Um índice de movimento é usado para identificar uma imagem de referência na lista de imagem de referência correspondente (por exemplo, RefPicList0 ou RefPicList1). Um vetor de movimento tem tanto um componente horizontal quanto um vertical, com cada um deles indicando um valor de deslocamento ao longo das direções horizontal e vertical, respectivamente. Em algumas descrições, para simplificar, as palavras “vetor de movimento” podem ser usadas de maneira permutável com informações de movimento, para indicar tanto o vetor de movimento quanto seu índice de referência associado.
[0075] POC
[0076] A contagem de ordem de imagens (POC) é 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 podem ter o mesmo valor de POC, isso normalmente não acontece dentro de uma sequência de vídeo codificada. Quando várias sequências de vídeo codificado estão presentes em um fluxo de bits, imagens com o mesmo valor de POC podem estar mais próximas uma da outra em termos de ordem de decodificação.
[0077] Os valores de POC das imagens são normalmente usados para a construção de listas de imagens de referência, para a derivação de um conjunto de imagens de referência como em HEVC e para graduação de vetor de movimento.
[0078] Unidade de Predição
[0079] Uma unidade de predição (PU) se refere a uma unidade básica de amostras que compartilham as mesmas informações de predição. Na PU de interpredição, as informações de predição podem ser do mesmo conjunto de informações de movimento ou do mesmo método para derivar informações de movimento para a PU. Em um exemplo, uma PU pode ser a mesma em uma estrutura de bloco de HEVC, e também pode ser o bloco básico em outras estruturas de segmentação de blocos, segmentação de árvore binária mais quadtree, segmentação de múltiplos tipos de árvores, e outros.
[0080] Uma subPU é um sub-bloco em uma PU, em que as amostras compartilham o mesmo conjunto de informações de movimento. No movimento em nível subPU, as amostras em uma PU compartilham o mesmo método/modelo para derivação de informações de movimento, mas uma subPU pode ter seu próprio conjunto de informações de movimento e pode ser diferente de outra subPU na mesma PU.
[0081] A figura 3 ilustra um exemplo de fluxograma de derivação de preditor de vetor de movimento, como discutido neste documento. Duas listas de candidatos do preditor de vetor de movimento são derivadas através das informações dos blocos vizinhos em domínios tridimensionais. O decodificador, de maneira adaptativa, escolhe uma lista de acordo com elementos de sintaxe decodificados is_sub_pu_motion_flag do fluxo de bits.
[0082] Em um exemplo, a lista sub_pu só pode existir se o bloco em curso for maior do que um valor predefinido. Em outro exemplo, um bloco pode conter apenas uma subPU, por exemplo, um bloco 4x4, o sinalizador é, então, para indicar que a geração de informações de movimento tem como base o método subPU ou não. As duas listas podem incluir um número diferente de candidatos de predição de movimento, que podem ser predefinidos ou sinalizados em cabeçalhos de SPS, PPS ou fatias. Os blocos vizinhos podem ser os vizinhos espaciais na imagem em curso ou os vizinhos temporais em imagens previamente codificadas.
[0083] Como ilustrado na Figura 3, o processo de derivação das duas listas será discutido. Em 300, o decodificador determina se o sinalizador está ativo ou não. Se o decodificador determinar que o sinalizador não está ativo, o decodificador prossegue para o 302. Se o sinalizador estiver ativo, o decodificador prossegue para o
306.
[0084] Em 302, é derivada uma primeira lista de candidatos de predição de movimento em nível da PU. Em 306, é derivada uma segunda lista de candidatos de predição de movimento em nível subPU. Candidato de predição de movimento em nível da PU significa que todos os pixels em uma mesma PU compartilham o mesmo conjunto de informações de movimento. Candidato de predição de movimento em nível subPU significa que todos os pixels em uma mesma subPU compartilham o mesmo conjunto de informações de movimento, mas diferentes subPU em uma PU podem ter diferentes conjuntos de informações de movimento. Um conjunto de informações de movimento pode incluir direções de interpredição, índice ou índices de imagem de referência se usando várias referências, vetor de movimento ou vetores de movimento se usando múltiplas referências.
[0085] Um exemplo da lista de candidatos de vetor de movimento em nível da PU é a lista de candidatos de fusão de HEVC. Exemplos de predição de movimento em nível subPU incluem, mas não se limitam a, predição de vetor de movimento afim (Afim), predição de vetor de movimento temporal alternativa (ATMVP), predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar e Derivação de Vetor de Movimento de Correspondência Padrão (PMVD), e outros. Uma tabela de sintaxe exemplificativa é mostrada na tabela 1 abaixo. O elemento de sintaxe sub_pu_motion_idx pode ser usado para indicar o candidato selecionado na lista de candidatos de predição de movimento em nível da subPU, e o elemento de sintaxe pu_motion_idx é usado para indicar o candidato selecionado na lista de candidados de predição de movimento em nível da PU. Tabela 1 Descritor is_sub_pu_motion_flag ae (v) if is_sub_pu_motion_flag sub_pu_motion_idx ae(v) } else { pu_motion_idx ae(v) }
[0086] Em outro método, os candidatos de vetor movimento em nível da PU podem ser divididos em dois grupos. is_sub_pu_motion_flag é sinalizado quando o decodificador recebe a sintaxe que indica que o candidato selecionado não está no primeiro grupo de candidatos de informações de movimento em nível da PU. O is_sub_pu_motion_flag pode estar sinalizado implicitamente no índice de fusão em nível da PU como um dos índices. Então, o índice de fusão em nível da subPU seria ainda sinalizado se is_sub_pu_motion_flag fosse verdadeiro. Em um exemplo, a ordem de inserção da lista de candidados da predição de movimento em nível da PU é A→B→S→C→D→E. A, B, C, D, E representam os candidatos da predição de movimento em nível da PU, e S é um indicador do sub_pu_motion_flag. Se S for selecionado, então sub_pu_motion_flag é considerado verdadeiro. Um exemplo de A pode ser o candidato de fusão espacial inferior esquerdo, e um exemplo de B pode ser o candidato de fusão espacial superior direito. Note que outra ordem de inserção pode ser aplicada também.
[0087] Note que os candidatos da predição de movimento em nível subPU são agrupados em todos os métodos descritos acima.
[0088] Sinalização para Seleção do Candidado de Predição do Vetor de Movimento
[0089] Um elemento de sintaxe is_sub_pu_motion_flag é primeiramente usado para indicar se o candidato da predição de movimento é do nível subPU. O is_sub_pu_motion_flag pode ser binarizado usando um bin
(0/1) e codificado pelo codificador aritmético binário com base no contexto. O contexto pode depender do tamanho / área da PU ou da profundidade da PU na árvore de aegmentação do bloco. Uma PU maior pode tender a ter mais frequência na escolha da predição do vetor de movimento em nível da subPU do que uma PU menor. O contexto também pode depender do sub_pu_motion_flag de blocos vizinhos espaciais/temporais. A chance de a PU em curso usar o movimento subPU é maior se os blocos vizinhos tiverem movimento subPU.
[0090] Se is_sub_pu_motion_flag for verdadeiro (“1”), um elemento de sintaxe sub_pu_motion_idx é usado para indicar o método para derivar o candidado da predição do movimento subPU. O número total de métodos, isto é, o número total de candidatos da predição de movimento em nível subPU, num_sub_pu_motion pode ser sinalizado em sintaxe de alto nível. O sub_pu_motion_idx pode ser binarizado usando um código unário truncado dependendo no num_sub_pu_motion. No entanto, outro método de binarização também pode ser aplicado.
[0091] Se is_sub_pu_motion_flag for falso (“0”), um elemento de sintaxe nor_pu_motion_idx é usado para indicar o método para derivar o candidato da predição de movimento em nível da PU. O número total de candidatos da predição de vetor de movimento em nível da PU, num_nor_pu_motion, pode ser sinalizado como sintaxe de alto nível. O nor_pu_motion_idx pode ser binarizado usando um código unário truncado dependendo do num_nor_pu_motion. No entanto, outro método de binarização também pode ser aplicado.
[0092] Derivação de Candidatos da Predição de Movimento em nível da PU
[0093] Um candidato da predição de movimento em nível da PU pode ser derivado a partir dos blocos codificados vizinhos espaciais ou temporais de forma semelhante em HEVC. No modo de fusão HEVC,
[0094] Em HEVC, a lista de candidato de MV contém até 5 candidatos para o modo de fusão e apenas dois candidatos para o modo AMVP. Um candidato de fusão pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento correspondentes a ambas as listas de imagens de referência (lista 0 e lista 1) e os índices de referência. Se um candidato de fusão for identificado por um índice de fusão, as imagens de referência usadas para a predição dos blocos em curso, assim como os vetores de movimento, são determinadas.
[0095] Com base no descrito acima, um ou mais preditores de vetor de movimento são selecionados com base em um índice de candidato decodificado.
[0096] No modo de fusão HEVC, até quatro candidatos de MV espaciais 402, 404, 406 e 408 de um bloco 400 podem ser derivados com as ordens mostradas na figura
4. A ordem é a seguinte: esquerda (0, A1), acima (1, B1), acima à direita (2, B0), abaixo à esquerda (3, A0) e acima à esquerda (4, B2).
[0097] Candidatos vizinhos temporais em HEVC serão discutidos agora. Um candidato do preditor de vetor de movimento temporal (TMVP), se permitido e disponível, é adicionado à lista de candidatos de MVP após os candidatos espaciais de vetor de movimento. A localização do bloco principal para a derivação do candidato do TMVP é o bloco inferior à direita, fora da PU justaposta como mostrado na figura 5 como um bloco “T” 500, para compensar a polarização dos blocos acima e à esquerda usados para gerar candidatos vizinhos espaciais. No entanto, se esse bloco 502 estiver localizado fora da linha de CTB atual ou as informações de movimento não estiverem disponíveis, o bloco é substituído por um bloco central 504 da PU. O candidato do vetor de movimento TMVP é derivado a partir da PU justaposta da imagem justaposta, indicada no nível de fatia. O vetor de movimento para a PU justaposta é chamado de MV justaposto.
[0098] Derivação de Candidatos de Predição de Movimento em nível subPU
[0099] Os candidatos da predição de movimento em nível subPU podem incluir, mas não se limitam a, predição de vetor de movimento afim, Predição de vetor de movimento temporal alternativa (ATMVP), Predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar, e Derivação de Vetor de Movimento de Correspondência Padrão (PMVD), et al. A seguir, serão ilustrados exemplos desta predição de movimento em nível subPU. No entanto, algumas variações ou outra predição de movimento em nível subPU também pode ser adicionada.
[0100] Predição de Movimento Afim
[0101] No método de predição do movimento afim de 4 parâmetros, o campo do vetor de movimento de um bloco é descrito pela equação (1):
[0102] onde (w, h) é o tamanho do bloco, e (x, y) é a coordenada. (v0x, v0y) é o vetor de movimento do ponto de controle do canto superior à esquerda, e (v1x, v1y) é o vetor de movimento do ponto de controle do canto superior à direita.
[0103] No método de predição de movimento afim de 6 parâmetros, o campo do vetor de movimento de um bloco é descrito pela equação (2):
[0104] onde, além disso, (v2x, v2y) é o vetor de movimento do ponto de controle do canto inferior à esquerda.
[0105] Na predição com base no movimento afim da subPU, o MV de uma subPU pode ser derivado calculando o MV no centro da subPU. Alternativamente, nós podemos reduzir (w, h) e (x, y) de acordo com o tamanho da subPU.
[0106] Em um método, (Vix, Viy) podem ser derivados a partir de um bloco vizinho que é codificado previamente pelo movimento afim, considerando que o bloco em curso compartilha o mesmo modelo de movimento afim com o bloco vizinho previamente codificado.
[0107] Em outro método, (Vix, Viy) podem ser derivados do vetor de movimento no bloco vizinho codificado. Por exemplo, como mostrado na figura 6, (v0x,
v0y) podem ser derivados a partir do vetor de movimento no bloco A 600, B 602 ou C 604, (v1x, v1y) podem ser derivados do vetor de movimento no bloco C 606 ou D 608, (v2x, v2y) podem ser derivados do bloco E 610 ou F 612.
[0108] Predição de Vetor de Movimento Temporal Alternativa
[0109] No método de predição de vetor de movimento temporal alternativa (ATMVP) (ou às vezes chamado de predição de vetor de movimento temporal avançada), a predição de vetor de movimento temporal (TMVP) é modificada pela busca de múltiplos conjuntos de informações de movimento (incluindo vetores de movimento e índices de referência) das subPUS da PU em curso.
[0110] Predição de Vetor de Movimento Espacial- Temporal
[0111] No método de predição de vetor de movimento espacial-temporal, os vetores de movimento das subPUS são derivados de maneira recursiva, seguindo a ordem de varredura raster. A figura 7 ilusta o conceito da STMVP. Considere uma PU 8x8 que contém quatro subPUS 4x4 A, B, C e D. Os blocos vizinhos 4x4 no quadro atual são rotulados como a, b, c e d. A derivação de movimento da subCU A inicia identificando seus dois vizinhos espaciais. O primeiro vizinho é o bloco NxN acima da subCU A (bloco c). Se o bloco c não estiver disponível ou estiver intracodificado, os outros blocos NxN acima da subCU A são checados (da esquerda pra direita, iniciando no bloco c). O segundo vizinho é um bloco à esquerda da subCU A (bloco b). Se o bloco b não estiver disponível ou estiver intracodificado, outros blocos à esquerda da subCU A são checados (de cima para baixo, iniciando no bloco b). As informações de movimento adquiridas dos blocos vizinhos para cada lista são dimensionadas ao primeiro quadro de referência de uma determinada lista. Em seguida, a predição de vetor de movimento temporal (TMVP) do sub-bloco A é derivada seguindo o mesmo procedimento da derivação de TMVP, como especificado em HEVC. As informações de movimento do bloco justaposto na localização D são buscadas e dimensionadas de acordo. Finalmente, após recuperar e dimensionar as informações de movimento, todos os vetores de movimento disponíveis (até 3) são calculados separadamente para cada lista de referência. O vetor de movimento calculado é atribuído como o vetor de movimento da subCU em curso.
[0112] Derivação de Vetor de Movimento de Correspondência Padrão
[0113] O método de Derivação de Vetor de Movimento de Correspondência Padrão (PMMVD) tem como base técnicas de conversão de aumento da taxa de quadros. O processo de derivação de movimento tem duas etapas. Uma pesquisa de movimento em nível da PU é realizada primeiro, seguida por um refinamento do movimento em nível subPU. Em nível da PU, um vetor de movimento inicial é derivado para toda a PU com base na correspondência bilateral ou na correspondência de modelo. Primeiro, uma lista de candidatos de MV é gerada e o candidato que leva ao custo mínimo de correspondência é selecionado como o ponto de partida para maior refinamento em nível da PU. Em seguida, uma pesquisa de local com base na correspondência bilateral ou na correspondência de modelo ao redor do ponto de partida é realizada e os resultados de MV no custo mínimo de correspondência são considerados como o MV para toda a CU. Subsequentemente, as informações de movimento são ainda refinadas ao nível subPU com os vetores de movimento da CU derivados como os pontos de partida.
[0114] O conceito da correspondência bilateral é ilustrado na figura 8. A correspondência bilateral é usada para derivar informações de movimento encontrando a correspondência mais próxima entre dois blocos ao longo da trajetória de movimento do bloco em curso em duas imagens de referência diferentes. Assumindo a trajetória de movimento contínuo, os vetores de movimento MV0 e MV1 apontando para os dois blocos de referência devem ser proporcionais às distâncias temporais, isto é, TD0 e TD1, entre a imagem em curso e as duas imagens de referência. Como um caso especial, quando a imagem em curso está temporariamente entre as duas imagens de referência e a distância temporal da imagem em curso para as duas imagens de referência é a mesma, a correspondência bilateral se torna MV bidirecional com base em espelho.
[0115] A correspondência de modelo, como ilustrada na figura 9, é usada para derivar informações de movimento encontrando a correspondência mais próxima entre um modelo (blocos vizinhos superiores ou à esquerda do bloco em curso) na imagem em curso e um bloco (do mesmo tamanho do modelo) em uma imagem em curso.
[0116] Predição de Vetor de Movimento Planar
[0117] A predição de vetor de movimento planar é alcançada calculando a média de uma interpolação linear horizontal e vertical em blocos de 4x4 do seguinte modo.
[0118] W e H denotam a largura e a altura do bloco. (x, y) são as coordenadas do sub-bloco em curso em relação ao sub-bloco do canto superior à esquerda. Todas as distâncias são denotadas pelas distâncias de pixel divididas por 4. P(x, y) é o vetor de movimento do sub- bloco em curso.
[0119] A predição horizontal Ph(x, y) e a predição vertical PV(x, y) para a localização (x, y) é calculada da seguinte maneira:
[120] onde L(-1, y) e R(W, y) são vetores de movimento dos blocos 4x4 à esquerda e à direita do bloco em curso. A(x, -1) e B(x, H) são vetores de movimento dos blocos 4x4 superiores e abaixo do bloco em curso, como mostrado na figura 9.
[0121] As informações de movimento de referência da coluna da esquerda e dos blocos vizinhos da linha acima são derivadas dos blocos vizinhos espaciais do bloco em curso.
[0122] As informações de movimento de referência da coluna da esquerda e dos blocos vizinhos da linha abaixo são derivados da seguinte forma. 1) Derivar as informações de movimento do bloco 4x4 vizinho temporal inferior à direita
2) Calcular os vetores de movimento dos blocos 4x4 vizinhos da coluna da direita, usando as informações de movimento derivadas do bloco 4x4 vizinho inferior à direita junto com as informações de movimento do bloco 4x4 vizinho à direita acima, como R(W, y)= ((H-y-1)x AR + (y+1) x BR)/H. 3) Calcular os vetores de movimento dos blocos 4x4 vizinhos da linha inferior, usando as informações de movimento derivadas do bloco 4x4 vizinho inferior à direita junto com as informações de movimento do bloco 4x4 vizinho inferior à esquerda, como B(x, H) = ((W-x-1)x BL + (x+1 ) x BR)/W.
[0123] onde AR é o vetor de movimento do bloco 4x4 vizinho espacial acima à direita, BR é o vetor de movimento do bloco 4x4 vizinho temporal inferior à direita e BL é o vetor de movimento do bloco 4x4 vizinho espacial inferior à esquerda, conforme mostrado na figura 10.
[0124] As informações de movimento adquiridas a partir dos blocos vizinhos para cada lista são dimensionáveis para a primeira imagem de referência de uma determinada lista.
[0125] Inserção da Lista de Candidatos
[0126] Se disponível, os candidatos de predição de movimento ao nível subPU são inseridos na lista na seguinte ordem padrão: Afim→ATMVP→STMVP→PMMVD→Planar. A ordem padrão pode ser predefinida ou sinalizada com base no tipo de fatia, camada temporal, modelo de movimento afim e/ou disponibilidade de preditor de movimento temporal. A ordem padrão também pode diferir com base no tipo de bloco,
formato do bloco ou tamanho do bloco. O número máximo de candidatos da predição de movimento em nível subPU é determinado por um número predefinido e/ou o número total de candidatos de predição de movimento em nível subPU disponível como indicado pela sintaxe de máximo nível. Em um exemplo, se o número predefinido for 3, e todos os candidatos afins, ATMVP, STMVP, PMMVD e Planar estiverem disponíveis, então o número máximo será 3. Mas se apenas o afim e o ATMVP estiverem disponíveis, o número máximo será
2. Se o número máximo for 0, então o is_sub_pu_motion_flag será inferido como falso (‘0’) e não será sinalizado no fluxo de bits.
[0127] Outra ordem de candidatos padrão também pode ser usada.
Em um exemplo, Afim→PMVD→ATMVP→STMVP→Planar.
Em outro exemplo, PMMVD→Afim→ATMVP→STMVP→Planar.
Em outro exemplo, dois ou mais candidatos afins podem ser usados.
Afim 1→Afim 2→PMMVD→ATMVP→STMVP→Planar Ou Afim 1→ ATMVP→Afim 2→Planar
[0128] Reordenação Priorizada de Candidatos
[0129] A lista de candidatos de movimento de predição ao nível subPU padrão pode ser reordenada com base em suas ocorrências nos blocos codificados vizinhos. Em um exemplo, o candidato que tem mais ocorrências nos blocos vizinhos codificados é colocado em uma posição de índice menor na lista.
[0130] Reordenação Parcial Priorizada de Candidatos
[0131] A fim de reduzir a complexidade da reordenação de candidatos, a reordenação priorizada de candidatos é aplicada apenas a uma ou várias sublistas. Por exemplo, os candidatos 1-2, 3-4 na ordem padrão são reordenados separadamente com base em seu aparecimento nos blocos vizinhos codificados.
[0132] Corte
[0133] Para reduzir a complexidade, nenhum corte ou corte parcial pode ser aplicado na lista de candidados da subPU. Em um exemplo, o corte entre ATMVP, STMVP e planar pode ser aplicado, mas nenhum corte é aplicado entre afim e o resto dos candidatos ds subPU.
[0134] Em outro exemplo, o corte só é aplicado quando o número da subPU é menor ou igual ao valor predefinido.
[0135] Métodos de Sinalização Alternativos do Candidato da Predição de Movimento da subPU
[0136] A seleção do candidato de predição de movimento da subPU pode ser sinalizada ativando sinalizadores de acordo com a ordem de inserção de candidato ao invés de um índice. Em um exemplo, se a ordem de inserção for Afim→PMMVD→ATMVP→STMVP→Planar, então a sinalização é conforme mostrado na Tabela 2.
[0137] Em outro método alternativo, os candidatos de predição de movimento da subPU podem ser agrupados em muitos subgrupos. Por exemplo, Afim, Planar são agrupados no subgrupo 1, ATMVP e STMVP são agrupados no subgrupo 2, e
PMMVD é, ainda, outro subgrupo 3. Uma sinalização exemplificativa é mostrada na tabela 3. Uma sintaxe pmmvd_flag é sinalizada primeiro para indicar se é um candidato PMMVD ou não.
Então, se não for um candidato PMMVD, outro elemento de sintaxe sub_groupl_flag é sinalizado para indicar se ele é candidato do subgrupo 1. Se sub_groupl_flag for verdadeiro, indicando que é candidato do subgrupo 1, affine_flag é sinalizado para indicar se é um candidato afim.
Se não for um candidato afim, então planar_mv_flag é definido como verdadeiro para indicar que é um candidato Planar.
Se sub_groupl_flag for falso, então atmvp_flag é sinalizado para indicar se é um candidato ATMVP.
Se não for um candidato ATMVP, stmvp_flag é definido como verdadeiro para indicar que é candidato STMVP.
Tabela 2 Descritor affine_flag ae(v) if(!affine_flag){ pmmvd_flag ae(v) if(!pmmd_flag){ amtvp_flag ae (v) if(!amtvp_flag){ stmvp_flag ae(v) if(!stmvp_flag){ planar_mv_flag = true } } }
} Tabela 3 Descritor pmmvd_flag ae(v) if(!pmmvd_flag) sub_group1_flag ae(v) if(sub_group1_flag) { affine_flag ae(v) if(!affine_flag) { planar_mv_flag = verdadeiro } } else { atmvp_flag ae(v) if(!atmvp_flag) { stmvp_flag = true } } }
[0138] Observe que, na tabela 2 e na tabela 3, a verificação de disponibilidade foi ignorada para um exemplo fácil. Um sinalizador é considerado falso (’0’) se o candidato correspondente não estiver disponível. Observe também que outras variações de agrupamentos também podem ser aplicadas.
[0139] A figura 11 é um diagrama de blocos que ilustra um codificador de vídeo 200 exemplificativo que pode realizar as técnicas desta revelação. A figura 11 é fornecida para fins de explicação e não deve ser considerada uma limitação das técnicas conforme amplamente exemplificado e descrito nesta revelação. Para fins de explicação, esta revelação descreve o codificador de vídeo 200 no contexto de padrões de codificação de vídeo, como o padrão de codificação de vídeo HEVC e o padrão de codificação de vídeo H.266 em desenvolvimento. No entanto, as técnicas desta revelação não estão limitadas a esses padrões de codificação de vídeo e são geralmente aplicáveis à codificação e decodificação de vídeo.
[0140] No exemplo da Figura 11, o codificador de vídeo 200 inclui memória de dados de vídeo 230, unidade de seleção de modo 202, unidade de geração residual 204, unidade de processamento de transformada 206, unidade de quantização 208, unidade de quantização inversa 202, unidade de processamento de transformada inversa 212, unidade de reconstrução 214, unidade de filtro 216, buffer de imagem decodificada (DPB) 218 e unidade de codificação por entropia 220.
[0141] A memória de dados de vídeo 230 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 200. O codificador de vídeo 200 pode receber os dados de vídeo armazenados na memória de dados de vídeo 230, por exemplo, a fonte de vídeo 104 (Figura 1). DPB 218 pode agir como uma memória de imagem de referência que armazena dados de vídeo de referência para usar na predição de dados de vídeo subsequentes pelo codificador de vídeo 200. A memória de dados de vídeo 230 e DPB 218 podem ser formados por qualquer um da variedade de dispositivos de memória, como a memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrono (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 230 e DPB 218 pode ser fornecido pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 230 pode estar no chip com outros componentes do codificador de vídeo 200, conforme ilustrado, ou fora do chip em relação a esses componentes.
[0142] Nesta revelação, a referência à memória de dados de vídeo 230 não deve ser interpretada como sendo limitada à memória interna para o codificador de vídeo 200, a menos que especificamente descrita como tal, ou memória externa para o codificador de vídeo 200, a menos que especificamente descrita como tal. Em vez disso, a referência à memória de dados de vídeo 230 deve ser entendida como memória de referência que armazena dados de vídeo que o codificador de vídeo 200 recebe para codificação (por exemplo, dados de vídeo para um bloco em curso que deve ser codificado). A memória 106 da Figura 1 também pode fornecer armazenamento temporário de emissões das várias unidades do codificador de vídeo 200.
[0143] As várias unidades da figura 11 estão ilustradas para auxiliar na compreensão das operações realizadas pelo codificador de vídeo 200. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis, ou uma combinação das mesmas. Circuitos de função fixa se referem a circuitos que fornecem funcionalidade, e que estão predefinidos nas operações que podem ser realizadas. Circuitos programáveis se referem a circuitos que podem ser programados para realizar várias funções, e fornecem funcionalidade flexível nas operações que podem ser realizadas. Por exemplo, circuitos programáveis podem executar um software ou firmware que levam os circuitos programáveis a operar na maneira definida pelas instruções do software ou firmware. Circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa realizam são geralmente imutáveis. Em alguns exemplos, a uma ou mais das unidades podem ser blocos de circuitos distintos (de função fixa ou programáveis), e, em alguns exemplos, a uma ou mais unidades podem ser circuitos programáveis.
[0144] O codificador de vídeo 200 pode incluir unidades de aritmética lógica (ALUs), unidades de função elementar (EFUs), circuitos digitais, circuitos analógicos, e/ou núcleos programáveis, formados a partir de circuitos programados. Nos exemplos onde as operações do codificador de vídeo 200 são realizadas usando um software executado pelos circuitos programáveis, a memória 106 (figura 1) pode armazenar o código do objeto do software que o codificador de vídeo 200 recebe e executa, ou outra memória dentro do codificador de vídeo 200 (não mostrado) pode armazenar tais instruções.
[0145] A memória de dados de vídeo 230 é configurada para armazenar dados de vídeo recebidos. O codificador de vídeo 200 pode recuperar uma imagem dos dados de vídeo da memória de dados de vídeo 230 e fornecer os dados de vídeo para a de geração residual 204 e a unidade de seleção de modo 202.unidade Dados de vídeo na memória de dados de vídeo 230 podem ser dados de vídeo brutos que devem ser codificados.
[0146] A unidade de seleção de modo 202 inclui a unidade estimativa de movimento 222, a unidade de compensação de movimento 224, e uma unidade de intrapredição 226. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para realizar a predição de vídeo de acordo com outros modos de predição. Como exemplos, a unidade de seleção de modo 202 pode incluir uma unidade de paleta, uma unidade de cópia intrabloco (que pode ser uma parte da unidade estimativa de movimento 222 e/ou unidade de compensação de movimento 224), uma unidade afim, uma unidade de modelo linear (LM), ou semelhantes.
[0147] A unidade de seleção de modo 202 geralmente coordena múltiplas passagens de codificação para testar combinações de parâmetros de codificação e valores de taxa de distorção resultantes para essas combinações. Os parâmetros de codificação podem incluir a segmentação de CTUs em CUs, modos de predição para as CUs, tipos de transformada para dados residuais das CUs, parâmetros de quantização para dados residuais das CUs, e assim por diante. A unidade de seleção de modo 202 pode, em última análise, selecionar a combinação de parâmetros de codificação com valores de taxa de distorção que são melhores do que as outras combinações testadas.
[0148] O codificador de vídeo 200 pode segmentar uma imagem recuperada da memória de dados de vídeo 230 em uma série de CTUs e encapsular uma ou mais CTUs dentro de uma fatia. A unidade de seleção de modo 210 pode segmentar uma CTU em uma imagem de acordo com a estrutura de árvore, como a estrutura QTBT ou a estrutura de quadtree de HEVC descrita acima. Como descrito acima, o codificador de vídeo 200 pode formar uma ou mais CUs a partir da segmentação de uma CTU de acordo com a estrutura da árvore. Essa CU também pode ser referida, de maneira geral, como “bloco de vídeo” ou “bloco”.
[0149] Em geral, a unidade de seleção de modo 202 também controla seus componentes (por exemplo, a unidade estimativa de movimento 222, a unidade de compensação de movimento 224, e a unidade de intrapredição 226) para gerar um bloco de predição para um bloco em curso (por exemplo, uma CU atual, ou em HEVC, a parte sobreposta de uma PU e uma TU). Para a interpredição de um bloco em curso, a unidade estimativa de movimento 222 pode realizar uma pesquisa de movimento para identificar um ou mais blocos de referência de correspondência próxima em uma ou mais imagens de referência (por exemplo, uma ou mais imagens previamente codificadas armazenadas em DPB 218). Em particular, a unidade estimativa de movimento 222 pode calcular um valor representativo do quão semelhante um potencial bloco de referência é ao bloco em curso, por exemplo, de acordo com uma soma de diferença absoluta (SAD), soma de diferenças quadradas (SSD), diferença média absoluta (MAD), diferenças médias quadradas (MSD) ou semelhantes. A unidade estimativa de movimento 222 pode, em geral, realizar estes cálculos usando diferenças de amostra para amostra entre o bloco em curso e o bloco de referência em consideração. A unidade de estimativa de movimento 222 pode identificar um bloco de referência que tem um valor mais baixo resultante destes cálculos, indicando um bloco de referência que mais se aproxima do bloco em curso.
[0150] A unidade estimativa de movimento 222 pode formar um ou mais vetores de movimento (MVs) que definem as posições dos blocos de referência nas imagens de referência relativas à posição do bloco em curso em uma imagem em curso. A unidade estimativa de movimento 222 pode, então, fornecer vetores de movimento para a unidade de compensação de movimento 224. Por exemplo, para a interpredição unidirecional, a unidade estimativa de movimento 222 pode fornecer um vetor de movimento singular, enquanto para a interpredição bidirecional, a unidade estimativa de movimento 222 pode fornecer dois vetores de movimento. A unidade de compensação de movimento 224 pode, então, gerar um bloco de predição usando os vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados do bloco de referência usando o vetor de movimento. Como outro exemplo, se o vetor de movimento tem uma precisão de amostra fracionária, a unidade de compensação de movimento 224 pode interpolar valores para o bloco de predição de acordo com um ou mais filtros de interpolação. Além disso, para a interpredição bidirecional, a unidade de compensação de movimento 224 pode recuperar dados para dois blocos de referência identificados pelos respectivos vetores de movimento e combinar os dados recuperados, por exemplo, por meio de média de amostra por amostra ou média ponderada.
[0151] Como outro exemplo, para intrapredição, ou codificação de intrapredição, a unidade de intrapredição 226 pode gerar o bloco de predição a partir de amostras vizinhas do bloco em curso. Por exemplo, para modos direcionais, a unidade de intrapredição 226 pode, geralmente, combinar matematicamente os valores para amostras vizinhas e preencher esses valores calculados na direção definida ao longo do bloco em curso para produzir o bloco de predição. Como outro exemplo, para um modo de DC, a unidade de intrapredição 226 pode calcular uma média das amostras vizinhas do bloco em curso e gerar o bloco de predição para incluir esta média resultante para cada amostra do bloco de predição.
[0152] A unidade de seleção de modo 202 fornece o bloco de predição para a unidade de geração residual 204. A unidade de geração residual 204 recebe uma versão bruta não codificada do bloco em curso da memória de dados de vídeo 230 e o bloco de predição da unidade de seleção de modo
202. A unidade de geração residual 204 calcula diferenças de amostra por amostra entre o bloco em curso e o bloco de predição. As diferenças resultantes de amostra por amostra definem um bloco residual para o bloco em curso. Em alguns exemplos, a unidade de geração residual 204 também pode determinar diferenças entre valores de amostra no bloco residual para gerar um bloco residual usando modulação de código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada usando um ou mais circuitos subtratores que realizam a subtração binária.
[0153] Nos exemplos onde a unidade de seleção de modo 202 segmenta as CUs em PUs, cada PU pode ser associada a uma unidade de predição luma e unidades de predição croma correspondentes. O codificador de vídeo 200 e o decodificador de vídeo 300 podem oferecer suporte às PUs que têm vários tamanhos. Como indicado acima, o tamanho de uma CU refere-se ao tamanho do bloco de codificação luma da CU e o tamanho de uma PU pode se referir ao tamanho da unidade de predição luma da PU. Assumindo que o tamanho de uma CU específica é 2Nx2N, o codificador de vídeo 200 pode oferecer suporte aos tamanhos da PU 2Nx2N ou NxN para intrapredição e tamanhos da PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN ou semelhantes para interpredição. O codificador de vídeo 200 e o decodificador de vídeo 300 também podem oferecer suporte à segmentação assimétrica para tamanhos da PU de 2NxnU, 2NxnD, nLx2N, e nRx2N para intrapredição.
[0154] Nos exemplos onde a unidade de seleção de modo 202 não segmenta, posteriormente, uma CU em PUs, cada CU pode ser associada a um bloco de codificação luma e blocos de codificação croma correspondentes. Como acima, o tamanho de uma CU pode se referir ao tamanho de um bloco de codificação luma da CU. O codificador de vídeo 200 e o decodificador de vídeo 300 podem oferecer suporte aos tamanhos da CU de 2Nx2N, 2NxN, ou Nx2.
[0155] Para outras técnicas de codificação de vídeo como a codificação de modo de cópia intrabloco, uma codificação de modo afim, uma codificação de modo de modelo linear (LM), como alguns exemplos, a unidade de seleção 202, via respectivas unidades associadas às técnicas de codificação, gera um bloco de predição para o bloco em curso sendo codificado. Em alguns exemplos, como a codificação do modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de predição e, em vez disso, gerar elementos de sintaxe que indicam a forma pela qual reconstruir o bloco com base em uma paleta selecionada. Nesses modos, a unidade de seleção de modo 202 pode fornecer estes elementos de sintaxe para a unidade de codificação por entropia 220 para serem codificados.
[0156] Como descrito acima, a unidade de geração residual 204 recebe os dados de vídeo para o bloco em curso e o bloco de predição correspondente. A unidade de geração residual 204, então, gera um bloco residual para o bloco em curso. Para gerar o bloco residual, a unidade de geração residual 204 calcula diferenças de amostra por amostra entre o bloco de predição e o bloco em curso. Portanto,
[0157] A unidade de processamento de transformada 206 aplica uma ou mais transformadas ao bloco residual para gerar um bloco de coeficientes de transformada (referido neste documento como um “bloco de coeficiente de transformada”). A unidade de processamento de transformada 206 pode aplicar várias transformadas a um bloco residual para formar o bloco de coeficiente de transformada. Por exemplo, a unidade de processamento de transformada 206 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada de inteiros, uma transformada de wavelet, ou uma transformada conceitualmente semelhante a um bloco residual. Em alguns exemplos, a unidade de processamento de transformada 206 pode realizar múltiplas transformadas a um bloco residual, por exemplo, uma transformada primária e uma transformada secundária, como uma transformada rotacional. Em alguns exemplos, a unidade de processamento de transformada 206 não aplica transformadas a um bloco residual.
[0158] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficiente de transformada, para produzir um bloco de coeficiente de transformada quantizado. A unidade de quantização 208 pode quantizar os coeficientes de transformada de um bloco de coeficiente de transformada de acordo com um valor de parâmetro de quantização (QP) associado ao bloco em curso. O codificador de vídeo 200 (por exemplo, através da unidade de seleção de modo 202) pode ajustar o grau de quantização aplicado aos blocos de coeficiente associados ao bloco em curso pelo ajuste do valor de QP associado à CU. A quantização pode introduzir perda de informação, e, portanto, os coeficientes de transformada quantizados podem ter uma precisão menor do que os coeficientes de transformada originais produzidos pela unidade de processamento de transformada 206.
[0159] A unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 pode aplicar a quantização inversa e transformadas inversas a um bloco de coeficiente de transformada quantizado, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente de transformada. A unidade de reconstrução 214 pode produzir um bloco reconstruído correspondente ao bloco em curso (embora potencialmente com algum grau de distorção) com base no bloco residual reconstruído e um bloco de predição gerado pela unidade de seleção de modo 202. Por exemplo, a unidade de reconstrução 214 pode adicionar amostras do bloco residual reconstruído para amostras correspondentes do bloco de predição gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[0160] A unidade de filtro 216 pode realizar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 216 pode realizar operações desbloqueadas para reduzir artefatos de bloqueio ao longo das bordas das CUs. As operações da unidade de filtro 216 podem ser ignoradas, em alguns exemplos.
[0161] O codificador de vídeo 200 armazena blocos reconstruídos em DPB 218. Por exemplo, em exemplos onde as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 216 pode armazenar blocos reconstruídos para o DPB 218. Em exemplos onde operações da unidade de filtro 224 são necessárias, a unidade de filtro 216 pode armazenar blocos reconstruídos filtrados para o DPB 218. A unidade estimativa de movimento 222 e a unidade de compensação de movimento 224 pode recuperar uma imagem de referência do DPB 218, formada a partir dos blocos reconstruídos (e potencialmente filtrados), para interpredizer os blocos das imagens codificadas subsequentes. Além disso, a unidade de intrapredição 226 pode usar blocos reconstruídos no DPB 218 de uma imagem em curso para intrapredizer outros blocos na imagem em curso.
[0162] Em geral, a unidade de codificação por entropia 220 pode codificar por entropia os elementos de sintaxe recebidos a partir de outros componentes funcionais do codificador de vídeo 200. Por exemplo, a unidade de codificação por entropia 220 pode codificar por entropia blocos de coeficiente de transformada quantizados para a unidade de quantização 208. Como outro exemplo, a unidade de codificação por entropia 220 pode codificar por entropia os elementos de sintaxe de predição (por exemplo, as informações de movimento para as informações de interpredição ou as informações de modo intra para intrapredição) da unidade de seleção de modo 202. A unidade de codificação por entropia 220 pode realizar uma ou mais operações de codificação por entropia nos elementos de sintaxe, que são outro exemplo de dados de vídeo, para gerar dados codificados por entropia. Por exemplo, a unidade de codificação por entropia 220 pode realizar uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação CAB AC, uma operação de comprimento variável a variável (V2V), uma operação de codificação aritmética binária adaptativa ao contexto com base em sintaxe (SBAC), operação de codificação por Entropia de Segmentação com Probabilidade de Intervalo (PIPE), uma operação de codificação do exponencial Golomb, ou outro tipo de operação de codificação por entropia nos dados. Em alguns exemplos, a unidade de codificação por entropia 220 pode operar em modo de desvio, onde os elementos de sintaxe não são codificados por entropia.
[0163] O codificador de vídeo 200 pode emitir um fluxo de bits que inclui os elementos de sintaxe codificados por entropia necessários para reconstruir blocos de uma fatia ou imagem. Em particular, a unidade de codificação por entropia 220 pode emitir o fluxo de bits.
[0164] As operações descritas acima são descritas com respeito a um bloco. Essa descrição deve ser entendida como sendo operações para um bloco de codificação luma e/ou blocos de codificação croma. Como descrito acima, em alguns exemplos, o bloco de codificação luma e os blocos de codificação croma são componentes luma e croma de CET. Em alguns exemplos, o código de codificação luma e os blocos de codificação croma são componentes luma e croma de uma PU.
[0165] Em alguns exemplos, operações realizadas com respeito a um bloco de codificação luma precisam não ser repetidas para os blocos de codificação croma. Como um exemplo, as operações para identificar um vetor de movimento (MV) e uma imagem de referência para um bloco de codificação luma não precisam ser repetidas para identificar um MV e uma imagem de referência para os blocos croma. Em vez disso, o MV para o bloco de codificação luma pode ser dimensionado para determinar o MV para os blocos de croma e a imagem de referência pode ser a mesma. Como outro exemplo, o processo de intrapredição pode ser o mesmo para blocos de codificação luma e blocos de codificação croma.
[0166] O codificador de vídeo 200 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 circuitos e configurados para derivar um modelo de conversão do aumento da taxa de quadros (FRUC) usando um valor de pixel de predição e realiza uma técnica de derivação do vetor de movimento ao lado do decodificador usando um modelo derivado. Em outro exemplo, o decodificador de vídeo 300 pode ser configurado para determinar vetores de movimento respectivos a partir de um ou mais blocos vizinhos de dados de vídeo e derivar um vetor de movimento para um bloco em curso de dados de vídeo usando os vetores de movimento respectivos a partir de um ou mais blocos vizinhos de dados de vídeo. Em outro exemplo, o decodificador de vídeo 300 pode ser configurado para determinar vetores de movimento respectivos a partir de um ou mais blocos justapostos de dados de vídeo, e derivar um vetor de movimento para um bloco em curso de dados de vídeo usando os vetores de movimento respectivos para o um ou mais blocos justapostos de dados de vídeo.
[0167] A figura 12 é um diagrama de blocos que ilustra um decodificador de vídeo 300 exemplificativo que pode realizar as técnicas desta revelação. A figura 12 é fornecida para fins de explicação e não é limitante nas técnicas conforme amplamente exemplificado e descrito nesta revelação. Para fins de explicação, esta revelação descreve o decodificador de vídeo 300 de acordo com as técnicas de JEM, H.266/VVC e HEVC. No entanto, as técnicas desta revelação podem ser realizadas por dispositivos de codificação de vídeo que são configurados para outros padrões de codificação de vídeo.
[0168] No exemplo da figura 12, o decodificador de vídeo 300 inclui uma memória de buffer de imagem codificado (CPB) 320, uma unidade de decodificação por entropia 302, uma unidade de processamento de predição 304, uma unidade de processamento de transformada inversa 308, uma unidade de reconstrução 310, uma unidade de filtro 312, e um buffer de imagem decodificada (DPB) 314. A unidade de processamento de predição 304 inclui uma unidade de compensação de movimento 316 e uma unidade de intrapredição
318. A unidade de processamento de predição 304 pode incluir unidades de adição para realizar a predição de acordo com outros modos de predição. Como exemplos, a unidade de processamento de predição 304 pode incluir uma unidade de paleta, uma unidade de cópia intrabloco (que pode formar parte de uma unidade de compensação de movimento 317), uma unidade afim, uma unidade de modelo linear (LM) ou semelhantes. Em outros exemplos, o decodificador de vídeo 300 pode incluir mais, poucos ou diferentes componentes funcionais.
[0169] A memória CB 320 pode armazenar dados de vídeo, como o fluxo de bits do vídeo codificado, a ser decodificado pelos componentes do decodificador de vídeo
300. Os dados de vídeo armazenados na memória CPB 320 podem ser derivados, por exemplo, a partir de um meio legível por computador 110 (figura 1). Uma memória CPB 320 pode incluir um CPB que armazena dados de vídeo codificados (por exemplo, elementos de sintaxe) de um fluxo de bits do vídeo codificado. Além disso, a memória CPB 320 pode armazenar dados de vídeo além de elementos de sintaxe de uma imagem codificada, como dados temporários que representam emissões das várias unidades do decodificador de vídeo 300. O DPB 314 geralmente armazena imagens decodificadas, em que o decodificador de vídeo 300 pode emitir e/ou usar os dados de vídeo de referência ao decodificar dados ou imagens subsequentes do fluxo de bits de vídeo codificado. A memória de CPB 320 e o DPB 314 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, como a memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrono (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de CPB 320 e o DPB 314 podem ser fornecidos a partir do mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de CPB 320 pode estar no chip com outros componentes do decodificador de vídeo 300 ou fora do chip em relação a esses componentes.
[0170] Adicional ou alternativamente, em alguns exemplos, o decodificador de vídeo 300 pode recuperar dados de vídeo codificados da memória 120 (Figura 1). Ou seja, a memória 120 pode armazenar dados, conforme discutido acima, com a memória de CPB 320. Da mesma forma, a memória 120 pode armazenar instruções a serem executadas pelo decodificador de vídeo 300, quando algumas ou todas as funcionalidades do decodificador de vídeo 300 são implementadas no software para ser executado por circuitos de processamento do decodificador de vídeo 300.
[0171] As várias unidades mostradas na figura 12 são ilustradas para ajudar a compreender as operações realizadas pelo decodificador de vídeo 300. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis, ou uma combinação das mesmas. Similar à figura 11, os circuitos de função fixa se referem a circuitos que fornecem funcionalidade particular, e são predefinidos nas operações que podem ser realizados. Circuitos programáveis se referem a circuitos que podem ser programados para realizar várias funções, e fornecem funcionalidade flexível nas operações que podem ser realizadas. Por exemplo, circuitos programáveis podem executar um software ou firmware que levam os circuitos programáveis a operar na maneira definida pelas instruções do software ou firmware. Circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa realizam são geralmente imutáveis. Em alguns exemplos, a uma ou mais das unidades podem ser blocos de circuitos distintos (de função fixa ou programáveis), e, em alguns exemplos, a uma ou mais unidades podem ser circuitos programáveis.
[0172] O decodificador de vídeo 300 pode incluir ALUs, EFUs, circuitos digitais, circuitos analógicos, e/ou núcleos programáveis formados a partir de circuitos programáveis. Em exemplos onde as operações do decodificador de vídeo 300 são realizadas pela execução do software nos circuitos programáveis, a memória no chip ou fora do chip pode armazenar instruções (por exemplo, código de objeto) do software que o decodificador de vídeo 300 recebe e executa.
[0173] A unidade de codificação por entropia 302 pode receber dados de vídeo codificados do CPB e decodificar por entropia dos dados de vídeo para reproduzir elementos de sintaxe. A unidade de processamento de predição 304, a unidade de quantização inversa 306, a unidade de processamento de transformada inversa 308, a unidade de reconstrução 310 e a unidade de filtro 312 pode gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0174] Em geral, o decodificador de vídeo 300 reconstrói a imagem bloco por bloco. O decodificador de vídeo 300 pode realizar uma operação de reconstrução em cada bloco individualmente (onde o bloco em curso sendo reconstruído, isto é, decodificado, pode ser referido como “bloco em curso”).
[0175] A unidade de decodificação por entropia 302 pode decodificar por entropia elementos de decodificação que definem coeficientes de transformada quantizados de um bloco de coeficiente de transformada quantizado, como informações de transformada, como um parâmetro de quantização (QP) e/ou indicador(es) do modo de transformada. A unidade de quantização inversa 306 pode usar o QP associado com o bloco de coeficiente de transformada quantizado para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa para a unidade de quantização inversa 306 aplicar. A unidade de quantização inversa 306 pode, por exemplo, realizar uma operação de deslocamento à esquerda bit a bit para quantizar inversamente os coeficientes de transformada quantizados. A unidade de quantização inversa 306 pode, desse modo, formar um bloco de coeficiente de transformada incluindo coeficientes de transformada.
[0176] Após a unidade de quantização inversa 306 formar o bloco de coeficiente de transformada, a unidade de processamento de transformada inversa 308 pode aplicar um ou mais transformadas inversas para o bloco de coeficiente de transformada para gerar um bloco residual associado ao bloco em curso. Por exemplo, a unidade de processamento de transformada inversa 308 pode aplicar um DCT inverso, uma transformada de inteiro inverso, uma transformada de Karhunen-Loeve inverso (KLT), uma transformada de rotacional inversa, uma transformada direcional inversa, ou outra transformada inversa para o bloco de coeficiente.
[0177] Além disso, a unidade de processamento de predição 304 gera um bloco de predição de acordo com elementos de sintaxe de informação de predição que foram decodificados por entropia pela unidade de decodificação por entropia 302. Por exemplo, se os elementos de sintaxe da informação de predição indicam que o bloco em curso é interpredito, a unidade de compensação de movimento 316 pode gerar o bloco de predição. Neste caso, os elementos de sintaxe das informações de predição podem indicar uma imagem de referência no DPB 314 e a partir de tal recuperar um bloco de referência, assim como um vetor de movimento que identifica a localização do bloco de referência na imagem de referência relativa à localização do bloco em curso na imagem em curso. A unidade de compensação de movimento 316 pode geralmente realizar o processo de interpredição de uma maneira que é substancialmente similar à descrita com respeito à unidade de compensação de movimento 224 (figura 11).
[0178] Como outro exemplo, se os elementos de sintaxe das informações de predição indicarem que o bloco em curso é intrapredito, a unidade de intrapredição 318 pode gerar o bloco de predição de acordo com um modo de intrapredição indicado pelos elementos de sintaxe de informações de predição. Novamente, a unidade de intrapredição 318 pode geralmente realizar o processo de intrapredição de maneira que substancialmente similar à descrita com respeito à unidade de intrapredição 226 (figura 11). A unidade de intrapredição 318 pode recuperar dados das amostras vizinhas para o bloco em curso do DPB
314.
[0179] A unidade de reconstrução 310 pode reconstruir o bloco em curso usando o bloco de predição e o bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual para amostras correspondentes ao bloco de predição para reconstruir o bloco em curso.
[0180] A unidade de filtro 312 pode realizar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 312 pode realizar operações de desbloqueio para reduzir artefatos de bloqueio ao longo das bordas dos blocos reconstruídos. As operações da unidade de filtro 312 não são necessariamente realizadas em todos os exemplos.
[0181] O decodificador de vídeo 300 pode armazenar os blocos reconstruídos no DPB 314. Como discutido acima, o DPB 314 pode fornecer informações de referência, como as amostras de uma imagem em curso para intrapredição e imagens previamente decodificadas para compensação de movimento subsequente, para a unidade de processamento de predição 304. Além disso, o decodificador de vídeo 300 pode emitir imagens decodificadas do DPB para apresentação subsequente em um dispositivo de exibição, como o dispositivo de exibição 118 da figura 1.
[0182] Desta forma, o decodificador de vídeo 300 representa um exemplo de um dispositivo de decodificação de vídeo incluindo uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em circuitos e configuradas para implementar os métodos e processos discutidos neste documento.
[0183] Por exemplo, os dados de vídeo codificados podem incluir a seguinte sintaxe:
Tabela 4. Sintaxe de Dados de Fusão merge_data( x0, y0, cbWidth, cbHeight Descritor mmvd_flag[ x0, y0 ] ae(v) if( mmvd_flag[ x0, y0 ] == 1) { mmvd_merge_flag[ x0, y0 ] ae(v) mmvd_distance_idx[ x0, y0 ] ae(v) mmvd_direction_idx[ x0, y0 ] ae(v) } else { if( MaxNumSubblockMergeCand >0 && cbWidth >= 8 && cbHeight >= 8 ) merge_subblock_flag[ x0 ][ y0 ] ae(v) if(merge_subblock_flag[ x0 ][ y0 ]== 1) { if( MaxNumSubblockMergeCand >1) merge_subblock_idx[ x0 ][ y0 ] ae(v) } else { if(sps_ciip_enabled_flag && cu_skip_flag[ x0 ][ y0 ] == 0 && (cbWidth*cbHeight)>= 64 && cbWidth < 128 && cbHeight < 128) { ciip_flag[ x0 ][ y0 ] ae(v) if (ciip_flag[ x0 ][ y0 ]) { if( cbWidht<= 2* cbHeight || cbHeight <= 2* cbWidth ciip_luma_mpm_flag[ x0 ][ y0 ] ae(v) if( ciip_luma_mpm_flag[ x0 ][ y0 ] ) ciip_luma_mpm_idx[ x0 ][ y0 ] ae(v)
} } if(sps_triangle_enabled_flag && tile_group_type_ == B && cbWidth*cbHeight >= 64) merge_triangle_flag[ x0 ][ y0 ] ae(v) if( merge_triangle_flag[ x0 ][ y0 ] ) merge_triangle_idx[ x0 ][ y0 ] ae(v) else if( MaxNumMergeCand > 1) merge_idx[ x0 ][ y0 ] ae(v) } } }
[0184] O merge_subblock_flag [x0][y0] específica se os parâmetros de interpredição com base em sub-bloco para a unidade de codificação em curso são deduzidos dos blocos vizinhos. Os índices de matriz x0, y0 especificam a localização (x0, y0) da amostra luma superior à esquerda do bloco de codificação considerado em relação à amostra luma superior à esquerda da imagem. Quando merge_subblock_flag[x0][y0] não está presente, é deduzido como igual a 0.
[0185] O merge_subblock_idx[x0][y0] especifica o índice de candidato de fusão da lista de candidato de fusão com base em sub-bloco, onde x0, y0 especificam a localização (x0, y0) da amostra superior à esquerda do bloco de codificação considerado em relação à amostra luma superior à esquerda da imagem.
[0186] Quando merge_subblock_idx[x0][y0] não está presente, é deduzido como igual a 0.
[0187] Se merge_subblock_flag[xCb][yCb] for igual a 1, o processo de derivação para vetores de movimento e índices de referência no modo de fusão de sub-bloco como especificado em 8.4.4.2 será usado com a localização do bloco de codificação luma (xCb, yCb), a largura do bloco de codificação luma cbWidth e a altura do bloco de codificação luma cbHeight como entradas, o número de sub-blocos de codificação luma na direção horizontal numSbX e na direção vertical numSbY, os índices de referência refIdxL0, refIdxL1, as matrizes de sinalizadores de utilização da lista de predição predFlagL0[xSbIdx][ySbIdx] e predFlagL1[xSbIdx][ySbIdx], as matrizes do vetor de movimento do sub-bloco de luma mvL0[xSbIdx][ySbIdx] e mvL0[xSbIdx][ySbIdx] e as matrizes do vetor de movimento do sub-bloco croma mvCL0[xSbIdx][ySbIdx] e mvCL1[xSbIdx][ySbIdx], com xSbIdx = 0.. numSbX - 1, ySbIdx = 0 .. numSbY - 1, e o índice de peso de bipredição gbiIdx como saídas.
[0188] Deve-se reconhecer que, dependendo do exemplo, alguns atos ou eventos de qualquer uma das técnicas descritas neste documento podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos ou deixados de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em alguns exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através de processamento multiencadeado, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[0189] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software,
firmware, ou qualquer combinação dos mesmos. Se implementados em software, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir mídia de armazenamento legível por computador, que corresponde a um meio tangível, como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta forma, a mídia legível por computador geralmente pode corresponder à (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação, como um sinal ou onda portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[0190] A título de exemplo, e não como limitação, tal mídia de armazenamento legível por computador pode compreender 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 pode ser usado para armazenar o código do programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada meio legível por computador. Por exemplo, se as instruções são transmitidas de um site, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro- ondas, então o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, estão incluídos na definição de meio. Deve ser entendido, no entanto, que os meios de armazenamento legíveis por computador e os meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são direcionados para meios de armazenamento tangíveis não transitórios. Disquete e disco, conforme usados aqui, inclui disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, onde os discos geralmente reproduzem dados magneticamente, enquanto os discos reproduzem dados opticamente com lasers. As combinações dos itens acima também devem ser incluídas no escopo da mídia legível por computador.
[0191] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo “processador”, conforme usado neste documento, pode se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida em módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0192] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais dos dispositivos configurados para executar as técnicas divulgadas, mas não necessariamente requerem a realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com software e/ou firmware adequado
[0193] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (30)

REIVINDICAÇÕES
1. Método de decodificação de dados de vídeo, que compreende: receber dados de vídeo codificados; analisar um sinalizador de movimento da unidade de subpredição a partir dos dados de vídeo codificados; em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição; em resposta à determinação de que o sinalizador de movimento da unidade de subpredição não está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição; selecionar um preditor de vetor de movimento ou da lista de candidatos de predição de movimento em nível da unidade de subpredição ou da lista de candidatos de predição de movimento em nível da unidade de predição; e decodificar os dados de vídeo codificados usando o preditor do vetor de movimento selecionado.
2. Método, de acordo com a reivindicação 1, em que os dados de vídeo codificados incluem um bloco em curso e em que a lista de candidatos de predição de movimento em nível da unidade de subpredição e a lista de candidatos de predição de movimento em nível da unidade de predição são derivadas a partir dos blocos vizinhos do bloco em curso.
3. Método, de acordo com a reivindicação 2, em que os blocos vizinhos são vizinhos espaciais do bloco em curso em uma imagem em curso ou vizinhos temporais do bloco em curso em uma imagem codificada previamente.
4. Método, de acordo com a reivindicação 2, em que a lista de candidatos de predição de movimento em nível da unidade de subpredição ou a lista de candidatos de predição de movimento em nível da unidade de predição é, pelo menos em parte, ordenada com base nas ocorrências de predição de movimento nos blocos vizinhos.
5. Método, de acordo com a reivindicação 1, em que os pixels em uma unidade de predição compartilham informações do primeiro vetor de movimento e os pixels em uma unidade de subpredição compartilham informações do segundo vetor de movimento, e em que as informações do primeiro vetor de movimento ou as informações do segundo vetor são determinadas a partir do preditor de vetor de movimento selecionado.
6. Método, de acordo com a reivindicação 1, em que a lista de candidatos do vetor de movimento em nível da unidade de predição inclui pelo menos um dentre: candidatos vizinhos espaciais e candidatos vizinhos temporais.
7. Método, de acordo com a reivindicação 1, em que a lista de candidatos de predição de movimento em nível da unidade de subpredição inclui pelo menos um dentre: predição de vetor de movimento afim, predição de vetor de movimento temporal alternativa (ATMVP), predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar e derivação de vetor de movimento de correspondência padrão (PMVD).
8. Método, de acordo com a reivindicação 1, que compreende ainda: derivar um índice de candidato de fusão em resposta à determinação de que o sinalizador de movimento da unidade de predição está ativo, em que o índice de candidato de fusão especifica o preditor de vetor de movimento a ser selecionado.
9. Aparelho para decodificar dados de vídeo, que compreende: uma memória para armazenar dados de vídeo codificados recebidos; e um processador, o processador configurado para: analisar um sinalizador de movimento da unidade de subpredição a partir dos dados de vídeo codificados, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição não está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de predição; selecionar um preditor de vetor de movimento ou da lista de candidatos de predição de movimento em nível da unidade de subpredição ou da lista de candidatos de predição de movimento em nível da unidade de predição; e decodificar os dados de vídeo codificados usando o preditor de vetor de movimento selecionado.
10. Aparelho, de acordo com a reivindicação 9, em que dados de vídeo codificados incluem um bloco em curso e em que a lista de candidatos de predição de movimento em nível da unidade de subpredição e a lista de candidatos de predição de movimento em nível da unidade de predição são derivadas a partir dos blocos vizinhos do bloco em curso.
11. Aparelho, de acordo com a reivindicação 10, em que os blocos vizinhos são vizinhos espaciais do bloco em curso em uma imagem em curso ou vizinhos temporais do bloco em curso em uma imagem codificada previamente.
12. Aparelho, de acordo com a reivindicação 10, em que a lista de candidatos de predição de movimento em nível da unidade de subpredição ou a lista de candidatos de predição de movimento em nível da unidade de predição são, pelo menos parcialmente, ordenados com base nas ocorrências de predição de movimento nos blocos vizinhos.
13. Aparelho, de acordo com a reivindicação 9, em que os pixels em uma unidade de predição compartilham informações do primeiro vetor de movimento e os pixels em uma unidade de subpredição compartilham informações do segundo vetor de movimento, e em que as informações do primeiro vetor de movimento ou as informações do segundo vetor são determinadas a partir do preditor de vetor de movimento selecionado.
14. Aparelho, de acordo com a reivindicação 9, em que a lista de candidatos de vetor de movimento em nível da unidade de predição inclui pelo menos um dentre: candidatos vizinhos espaciais e candidatos vizinhos temporais.
15. Aparelho, de acordo com a reivindicação 9, em que a lista de candidatos de predição de movimento em nível da unidade de subpredição inclui pelo menos um dentre: predição de vetor de movimento afim, predição de vetor de movimento temporal alternativa (ATMVP), predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar e derivação de vetor de movimento de correspondência padrão (PMVD).
16. Aparelho, de acordo com a reivindicação 9, o processador ainda configurado para: derivar um índice de candidato de fusão em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, em que o índice de candidato de fusão especifica o preditor de vetor de movimento a ser selecionado.
17. Aparelho para decodificação de dados de vídeo, que compreende: um meio de memória para armazenar dados de vídeo codificados recebidos; e um meio de processador, o meio de processador configurado para: analisar um sinalizador de movimento da unidade de subpredição a partir dos dados de vídeo codificados, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição, em resposta à determinação de que o sinalizador de movimento da unidade de subpredição não está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de predição; selecionar um preditor de vetor de movimento ou da lista de candidatos de predição de movimento em nível da unidade de subpredição ou da lista de candidatos de predição de movimento em nível da unidade de predição; e decodificar os dados de vídeo codificados usando o preditor de vetor de movimento selecionado.
18. Aparelho, de acordo com a reivindicação 17, em que os dados de vídeo codificados incluem um bloco em curso e em que a lista de candidatos de predição de movimento em nível da unidade de subpredição e a lista de candidatos de predição de movimento em nível da unidade de predição são derivadas a partir de blocos vizinhos do bloco em curso.
19. Aparelho, de acordo com a reivindicação 18, em que blocos vizinhos são vizinhos espaciais do bloco em curso em uma imagem em curso ou vizinhos temporais do bloco em curso em uma imagem previamente codificada.
20. Aparelho, de acordo com a reivindicação 18, em que a lista de candidatos de predição de movimento em nível da unidade de subpredição ou a lista de candidatos de predição de movimento em nível da unidade de predição é, pelo menos parcialmente, ordenada com base nas ocorrências de predição de movimento nos blocos vizinhos.
21. Aparelho, de acordo com a reivindicação 17, em que os pixels em uma unidade de predição compartilham informações do primeiro vetor de movimento e os pixels em uma unidade de subpredição compartilham informações do segundo vetor de movimento, e em que as informações do primeiro vetor de movimento ou as informações do segundo vetor são determinadas a partir do preditor de vetor de movimento selecionado.
22. Aparelho, de acordo com a reivindicação 17, em que a lista de candidatos de vetor de movimento em nível da unidade de predição inclui pelo menos um dentre: candidatos vizinhos espaciais e candidatos vizinhos temporais.
23. Aparelho, de acordo com a reivindicação 17, em que a lista de candidatos de predição de movimento em nível da unidade de subpredição inclui pelo menos um dentre: predição de vetor de movimento afim, predição de vetor de movimento temporal alternativa (ATMVP), predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar e derivação de vetor de movimento de correspondência padrão (PMVD).
24. Aparelho, de acordo com a reivindicação 17, os meios de processador ainda configurados para: derivar um índice de candidato de fusão em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, em que o índice de candidato de fusão especifica o preditor de vetor de movimento a ser selecionado.
25. Meio de armazenamento legível por computador não transitório tendo nele armazenadas instruções que, quando executadas, levam um ou mais processadores a realizar um método que compreende: receber dados de vídeo codificados; analisar um sinalizador de movimento da unidade de subpredição a partir dos dados de vídeo codificados; em resposta à determinação de que o sinalizador de movimento da unidade de subpredição está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição; em resposta à determinação de que o sinalizador de movimento da unidade de subpredição não está ativo, derivar uma lista de candidatos de predição de movimento em nível da unidade de subpredição; selecionar um preditor de vetor de movimento ou da lista de candidatos de predição de movimento em nível da unidade de subpredição ou da lista de candidatos de predição de movimento em nível da unidade de predição; e decodificar os dados de vídeo codificados usando o preditor de vetor de movimento selecionado.
26. Meio, de acordo com a reivindicação 25, em que os dados de vídeo codificados incluem um bloco em curso e em que a lista de candidatos de predição de movimento em nível da unidade de subpredição e a lista de candidatos de predição de movimento em nível da unidade de predição são derivadas a partir de blocos vizinhos do bloco em curso.
27. Meio, de acordo com a reivindicação 26, em que os blocos vizinhos são vizinhos espaciais do bloco em curso em uma imagem em curso ou vizinhos temporais do bloco em curso em uma imagem previamente codificada.
28. Método, de acordo com a reivindicação 26, em que a lista de candidatos de predição de movimento em nível da unidade de subpredição ou a lista de candidatos de predição de movimento em nível da unidade de predição é, pelo menos parcialmente, ordenada com base em ocorrências de predição de movimento nos blocos vizinhos.
29. Meio, de acordo com a reivindicação 25, em que:
os pixels em uma unidade de predição compartilham informações do primeiro vetor de movimento e os pixels em uma unidade de subpredição compartilham informações do segundo vetor de movimento, e em que as informações do primeiro vetor de movimento ou as informações do segundo vetor são determinadas a partir do preditor de vetor de movimento selecionado, em que a lista de candidatos de vetor de movimento em nível da unidade de predição inclui pelo menos um dentre: cadidatos vizinhos espaciais e candidatos vizinhos temporais, e em que a lista de candidatos de predição de movimento em nível da unidade de predição inclui pelo menos uma dentre: predição de vetor de movimento afim, predição de vetor de movimento temporal alternativa (ATMVP), predição de vetor de movimento espacial-temporal (STMVP), predição de vetor de movimento planar e derivação de vetor de movimento de correspondência padrão (PMVD).
30. Meio, de acordo com a reivindicação 25, o método compreendendo ainda: derivar um índice de candidato de fusão em resposta à determinação de que o sinalizador de movimento da unidade de predição está ativo, em que o índice de candidato de fusão especifica o preditor de vetor de movimento a ser selecionado.
BR112020025982-9A 2018-06-19 2019-06-18 sinalização de preditor de vetor de movimento de unidade de subpredição BR112020025982A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862687052P 2018-06-19 2018-06-19
US62/687,052 2018-06-19
US16/443,113 US20190387247A1 (en) 2018-06-19 2019-06-17 Signaling sub-prediction unit motion vector predictor
US16/443,113 2019-06-17
PCT/US2019/037722 WO2019246092A1 (en) 2018-06-19 2019-06-18 Signaling sub-prediction unit motion vector predictor

Publications (1)

Publication Number Publication Date
BR112020025982A2 true BR112020025982A2 (pt) 2021-03-23

Family

ID=68839373

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020025982-9A BR112020025982A2 (pt) 2018-06-19 2019-06-18 sinalização de preditor de vetor de movimento de unidade de subpredição

Country Status (11)

Country Link
US (1) US20190387247A1 (pt)
EP (1) EP3811622A1 (pt)
JP (1) JP7379391B2 (pt)
KR (1) KR20210020908A (pt)
AR (1) AR115568A1 (pt)
AU (1) AU2019288269B2 (pt)
BR (1) BR112020025982A2 (pt)
MX (1) MX2020013843A (pt)
PH (1) PH12020551952A1 (pt)
SG (1) SG11202011223WA (pt)
WO (1) WO2019246092A1 (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116347099A (zh) * 2018-06-19 2023-06-27 北京字节跳动网络技术有限公司 没有运动矢量预测截断的选择的运动矢量差精度
EP3806472A4 (en) * 2018-06-30 2021-04-14 Guangdong Oppo Mobile Telecommunications Corp., Ltd. METHOD AND DEVICE FOR INTERPRDICTION BASED ON MERGING MODE
EP4362468A3 (en) * 2018-07-02 2024-06-26 Huawei Technologies Co., Ltd. Motion vector prediction method and device, and codec
CN116546213A (zh) 2018-09-19 2023-08-04 北京字节跳动网络技术有限公司 具有自适应运动矢量分辨率的仿射模式的语法重用
WO2020086317A1 (en) * 2018-10-23 2020-04-30 Tencent America Llc. Method and apparatus for video coding
KR20210121021A (ko) 2019-01-31 2021-10-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 어파인 모드 적응적 움직임 벡터 해상도 코딩 문맥
US11375222B2 (en) * 2019-09-22 2022-06-28 Tencent America LLC Method and device for video encoding and decoding with interpolation filter flag being consistent with MMVD distances

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3263960B2 (ja) * 1991-10-22 2002-03-11 ソニー株式会社 動きベクトル符号器および復号器
JP6616773B2 (ja) * 2014-01-03 2019-12-04 ユニバーシティ−インダストリー コーオペレイション グループ オブ キョンヒ ユニバーシティ サブ予測ユニット単位の時間的な視点間動き情報の誘導方法及び装置
US10070130B2 (en) * 2015-01-30 2018-09-04 Qualcomm Incorporated Flexible partitioning of prediction units
US10560718B2 (en) * 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
JP7048503B2 (ja) * 2016-09-27 2022-04-05 シャープ株式会社 復号装置、符号化装置、復号方法、および、符号化方法

Also Published As

Publication number Publication date
AU2019288269B2 (en) 2023-07-27
US20190387247A1 (en) 2019-12-19
KR20210020908A (ko) 2021-02-24
MX2020013843A (es) 2021-03-25
AU2019288269A1 (en) 2020-12-10
JP7379391B2 (ja) 2023-11-14
WO2019246092A1 (en) 2019-12-26
SG11202011223WA (en) 2021-01-28
PH12020551952A1 (en) 2021-08-16
JP2021527999A (ja) 2021-10-14
CN112534820A (zh) 2021-03-19
AR115568A1 (es) 2021-02-03
EP3811622A1 (en) 2021-04-28

Similar Documents

Publication Publication Date Title
BR112021009558A2 (pt) simplificação da predição de vetor de movimento baseada em histórico
EP4376406A1 (en) Combination of inter-prediction and intra-prediction in video coding
KR102331683B1 (ko) 3d 비디오 코딩을 위한 블록-기반 진보된 잔차 예측
BR112021002967A2 (pt) predição de movimento afim
BR112021000002A2 (pt) Mvps não adjacentes baseados em múltiplos históricos para processamento de frente de onda de código de vídeo
KR20200116462A (ko) 비디오 코딩을 위한 인트라-블록 카피
BR112021002219A2 (pt) lista de candidatos baseada em histórico com classificação
BR112020006588A2 (pt) predição afim em codificação de vídeo
BR112020025982A2 (pt) sinalização de preditor de vetor de movimento de unidade de subpredição
BR112017015890B1 (pt) Predição avançada do vetor de movimento temporal com base em unidade de subpredição
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
TW201933873A (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
US11601666B2 (en) Derivation of temporal motion vector prediction candidates in video coding
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
BR112021005354A2 (pt) restrições afins para redução da largura de banda de pior caso na codificação de vídeo
BR112021014879A2 (pt) Modo de inter-intraprevisão para dados de vídeo
EP3850838A1 (en) Vector predictor list generation
BR112021003869A2 (pt) predição temporal de parâmetros de filtro de loop adaptativo com consumo reduzido de memória para codificação de vídeo
KR20230123933A (ko) 비디오 코딩을 위한 다중 가설 예측
CN112534820B (zh) 信令通知子预测单元运动矢量预测器
RU2783333C2 (ru) Передача в служебных сигналах предиктора вектора движения на основе субъединиц предсказания
TW202232951A (zh) 多通路解碼器側運動向量細化
TW202245477A (zh) 幀間預測模式中的模板匹配細化