BR112021000349A2 - Codificador de vídeo, decodificador de vídeo, e método correspondente - Google Patents

Codificador de vídeo, decodificador de vídeo, e método correspondente Download PDF

Info

Publication number
BR112021000349A2
BR112021000349A2 BR112021000349-5A BR112021000349A BR112021000349A2 BR 112021000349 A2 BR112021000349 A2 BR 112021000349A2 BR 112021000349 A BR112021000349 A BR 112021000349A BR 112021000349 A2 BR112021000349 A2 BR 112021000349A2
Authority
BR
Brazil
Prior art keywords
coding block
group
neighboring
control point
block
Prior art date
Application number
BR112021000349-5A
Other languages
English (en)
Inventor
Huanbang Chen
Haitao Yang
Jianle Chen
Original Assignee
Huawei Technologies Co., Ltd.
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 Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021000349A2 publication Critical patent/BR112021000349A2/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/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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
    • 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
    • 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/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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

“codificador de vídeo, decodificador de vídeo, e método correspondente''. modalidades da presente invenção fornecem um codificador de vídeo, um decodificador de vídeo, e um método correspondente. o método inclui: analisar um fluxo de bits para obter um índice, em que o índice é usado para indicar um grupo de vetor de movimento candidato alvo de um bloco de codificação atual; determinar o grupo de vetor de movimento candidato alvo em uma lista de vetores de movimento candidato afim com base no índice, em que a lista de vetores de movimento candidato afim inclui pelo menos um primeiro grupo de vetor de movimento candidato, o primeiro grupo de vetor de movimento candidato é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação ctu localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho é localizado na ctu; e predizer um valor de amostra predito do bloco de codificação atual com base no grupo de vetor de movimento candidato alvo. de acordo com as modalidades deste pedido, uma quantidade de tempos de leitura da memória pode ser reduzida, de modo que o desempenho de codificação e decodificação é aperfeiçoado.

Description

“CODIFICADOR DE VÍDEO, DECODIFICADOR DE VÍDEO, E MÉTODO CORRESPONDENTE” CAMPO DA TÉCNICA
[0001] Esse pedido se relaciona ao campo de tecnologias de codificação e decodificação de vídeo, e em particular, a um método de codificação, um método de decodificação, um dispositivo de codificação correspondente, e um dispositivo de decodificação correspondente.
FUNDAMENTOS
[0002] Capacidades de vídeo digital podem ser incorporadas em uma ampla variedade de aparelhos, incluindo televisões digitais, sistemas digitais de difusão ao vivo, sistemas de difusão sem fio, assistentes digitais pessoais (PDA), computadores tipo laptop ou de mesa, computadores tipo tablet, leitores de livro digital, câmeras digitais, aparelhos de gravação digital, aparelhos de reprodução de mídia digital, aparelhos de vídeo game, consoles de vídeo game, telefones via rádio celulares ou por satélite (os chamados "telefones inteligentes"), aparelhos de videoconferência, aparelhos de streaming de vídeo, e semelhantes. Aparelhos de vídeo digital implantam tecnologias de compactação de vídeo, por exemplo, tecnologias de compactação de vídeo descritas em padrões definidos por MPEG-2, MPEG-4, H.263 da ITU-T, e H.264/MPEG-4 parte 10: codificação de vídeo avançada (AVC) da ITU-T, o padrão de codificação de vídeo H.265/padrão de codificação de vídeo de alta eficiência (HEVC), e extensões de tais padrões. Os aparelhos de vídeo podem transmitir, receber, codificar, decodificar, e/ou armazenar informações de vídeo digital mais eficientemente implantando-se tais tecnologias de compactação de vídeo.
[0003] As tecnologias de compactação de vídeo são usadas para realizar predição espacial (imagem intra) e/ou predição temporal (imagem inter) para reduzir ou remover redundância inerente em sequências de vídeo. Em codificação de vídeo com base em bloco, uma fatia de vídeo (isto é, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em diversos blocos de imagem, e o bloco de imagem pode também ser referido como um bloco árvore, uma unidade de codificação (CU), e/ou um nó de codificação. Um bloco de imagem em uma fatia a ser codificada intra (I) de uma imagem é codificado através de predição espacial com base em uma amostra de referência em um bloco vizinho na mesma imagem. Para um bloco de imagem em uma fatia de uma imagem a ser codificada inter (P ou B), predição espacial com base em uma amostra de referência em um bloco vizinho na mesma imagem ou predição temporal com base em uma amostra de referência em uma outra imagem de referência pode ser usada. A imagem pode ser referida como um quadro, e a imagem de referência pode ser referida como um quadro de referência.
[0004] Vários padrões de codificação de vídeo incluindo o padrão de codificação de vídeo de alta eficiência (HEVC) propõem um modo de codificação preditivo usado para um bloco de imagem. Para ser específico, um bloco a ser codificado atual é predito com base em um bloco de dados de vídeo codificados. Em um modo de predição intra, um bloco atual é predito com base em um ou mais blocos vizinhos previamente decodificados em uma mesma imagem que o bloco atual. Em um modo de predição inter, um bloco atual é predito com base em um bloco decodificado em uma imagem diferente.
[0005] Predição de vetor de movimento é uma tecnologia chave que afeta desempenho de codificação/decodificação. Em um processo de predição de vetor de movimento existente, existe um método de predição de vetor de movimento com base em um modelo de movimento translacional para um objeto translacional em uma imagem, e existe um método de predição de vetor de movimento com base em um modelo de movimento e um método de predição de vetor de movimento com base em uma combinação de ponto de controle para um objeto não translacional. No método de predição de vetor de movimento com base no modelo de movimento, um grande montante de informações precisa ser lido a partir da memória, resultando em uma velocidade de codificação/decodificação relativamente baixa. Como reduzir uma quantidade de vezes de leitura a partir da memória em um processo de predição de vetor de movimento é um problema técnico sendo estudado por uma pessoa versada na técnica.
SUMÁRIO
[0006] Modalidades desse pedido fornecem um método de codificação, um método de decodificação, um dispositivo de codificação correspondente, e um dispositivo de decodificação correspondente, para reduzir em parte uma quantidade de vezes de leitura a partir da memória, de modo a aperfeiçoar desempenho de codificação e decodificação.
[0007] De acordo com um primeiro aspecto, uma modalidade desse pedido revela um método de codificação. O método inclui: determinar um grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins (a qual também é referida como uma lista de vetores de movimento candidatos) de acordo com um critério de custo de distorção de taxa, onde o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle de um bloco de codificação atual (por exemplo, um bloco de codificação afim atual), a lista de vetores de movimento candidatos afins inclui pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, ou o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho; e codificar um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
[0008] Por exemplo, se o grupo de vetores de movimento candidatos alvos é uma tupla de 2 de vetor de movimento candidato alvo, o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de dois pontos de controle do bloco de codificação atual. Se o grupo de vetores de movimento candidatos alvos é um tríplex de vetor de movimento candidato alvo, o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de três pontos de controle do bloco de codificação atual.
[0009] Opcionalmente, uma maneira de construir a lista de vetores de movimento candidatos afins pode ser: determinar um ou mais blocos de codificação afins vizinhos do bloco de codificação atual em uma ordem de um bloco vizinho A, um bloco vizinho B, um bloco vizinho C, um bloco vizinho D, e um bloco vizinho E (conforme mostrado na Figura 7A), onde o um ou mais blocos de codificação afins vizinhos incluem o primeiro bloco de codificação afim vizinho; e construir um primeiro modelo afim com base em vetores de movimento do primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho e coordenadas de localização do primeiro grupo de pontos de controle, e então obter preditores de vetor de movimento de um primeiro grupo de pontos de controle do bloco de codificação atual usando-se o primeiro modelo afim, onde os preditores de vetor de movimento do primeiro grupo de pontos de controle do bloco de codificação atual são usados como o primeiro grupo de vetores de movimento candidatos na lista de vetores de movimento candidatos afins.
[0010] Opcionalmente, quando um comprimento da lista de vetores de movimento candidatos afins é 1, o grupo de vetores de movimento alvo pode não precisar ser indicado usando-se um índice.
[0011] No supracitado método, a lista de vetores de movimento candidatos afins pode incluir somente um grupo de vetores de movimento candidatos, ou pode incluir uma pluralidade de grupos de vetor de movimento candidatos. Cada grupo de vetores de movimento candidatos pode ser uma tupla de 2 de vetor de movimento ou um vetor de movimento tríplex. Quando existe uma pluralidade de grupos de vetor de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é um da pluralidade de grupos de vetor de movimento candidatos. Um processo de derivação (derivation) de um outro grupo de vetores de movimento candidatos na pluralidade de grupos de vetor de movimento candidatos pode ser igual a um processo de derivação (derivation) do primeiro grupo de vetores de movimento candidatos, ou pode ser diferente de um processo de derivação (derivation) do primeiro grupo de vetores de movimento candidatos. Além disso, o grupo de vetores de movimento candidatos alvos é um grupo de vetores de movimento candidatos ideal selecionado a partir da lista de vetores de movimento candidatos afins de acordo com o critério de custo de distorção de taxa. Se o primeiro grupo de vetores de movimento candidatos é ideal (por exemplo, tem os mais baixos custos de distorção de taxa), o grupo de vetores de movimento candidatos alvos selecionado é o primeiro grupo de vetores de movimento candidatos. Se o primeiro grupo de vetores de movimento candidatos não é ideal, o grupo de vetores de movimento candidatos alvos selecionado não é o primeiro grupo de vetores de movimento candidatos. O primeiro bloco de codificação afim vizinho é um bloco de codificação em bloco afim específico em blocos vizinhos do bloco de codificação atual, e não é especificamente limitado no presente documento. A Figura 7A é usada como um exemplo para descrição. O primeiro bloco de codificação afim vizinho pode ser um bloco de codificação no qual uma localização vizinha A está localizada, um bloco de codificação no qual uma localização vizinha B está localizada, ou um outro bloco de codificação vizinho. Deve ser notado que A, B, C, D, e E na Figura 7A são meramente destinados a indicar localizações vizinhas, mas não são blocos de codificação reais. Além disso, "primeiro(a)", "segundo(a)", "terceiro(a)", e semelhantes que aparecem em outros lugares nas modalidades desse pedido indicam, cada um, um objeto específico. Um objeto específico indicado por "primeiro", um objeto específico indicado por "segundo", e um objeto específico indicado por "terceiro" representam diferentes objetos. Por exemplo, se um primeiro grupo de pontos de controle e um segundo grupo de pontos de controle existem, o primeiro grupo de pontos de controle e o segundo grupo de pontos de controle representam diferentes pontos de controle. Além disso, "primeiro(a)", "segundo(a)", e semelhantes nas modalidades desse pedido não significam uma ordem.
[0012] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações (por exemplo, coordenadas de localização e vetores de movimento) sobre pontos de controle mais inferiores (por exemplo, um ponto de controle inferior esquerdo e um ponto de controle inferior direito) do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está à esquerda do bloco de codificação atual, informações sobre pontos de controle mais à direita (por exemplo, um ponto de controle superior direito e um ponto de controle inferior direito) do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle são pontos de controle determinados com base na relação de localização entre o bloco de codificação atual e a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado, ou o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo (modelo afim de 6 parâmetros) de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle ou usar fixamente um ponto de controle superior esquerdo e um ponto de controle superior direito (modelo afim de 4 parâmetros) de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, existe uma probabilidade muito alta de que as informações que foram lidas a partir da memória possam ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando o desempenho de codificação.
[0013] Em uma possível implantação, o primeiro grupo de vetores de movimento candidatos ser obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho pode ser especificamente: o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro modelo afim (por exemplo, com base no primeiro modelo afim e coordenadas de localização de um grupo de pontos de controle do bloco de codificação atual), e o primeiro modelo afim é determinado com base em vetores de movimento e coordenadas de localização do primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho.
[0014] Em uma solução opcional, a lista de vetores de movimento candidatos afins adicionalmente inclui um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho. Localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes das localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho (por exemplo, os pontos de controle incluídos no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, mas os pontos de controle incluídos no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho são um ponto de controle superior direito, um ponto de controle inferior direito, e um ponto de controle inferior esquerdo do segundo bloco de codificação afim vizinho), ou o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho. Por exemplo, o primeiro bloco de codificação afim vizinho e o segundo bloco de codificação afim vizinho são diferentes blocos de codificação afins em blocos vizinhos circundantes espacialmente do bloco de codificação atual.
[0015] Em uma outra possível implantação, em um modo de predição de vetor de movimento antecipada AMVP, o método adicionalmente inclui: buscar, dentro de uma faixa de busca predefinida de acordo com o critério de custo de distorção de taxa usando-se o grupo de vetores de movimento candidatos alvos como um ponto de busca inicial, para vetores de movimento que são de um grupo de pontos de controle e que têm custos mais baixos; e então determinar vetores de movimento diferenciais MVDs entre o grupo de vetores de movimento candidatos alvos e os vetores de movimento do grupo de pontos de controle. Por exemplo, se um primeiro grupo de pontos de controle inclui um primeiro ponto de controle e um segundo ponto de controle, um vetor de movimento diferencial MVD entre um vetor de movimento do primeiro ponto de controle e um preditor de vetor de movimento, representado pelo grupo de vetores de movimento candidatos alvos, do primeiro ponto de controle em um grupo de pontos de controle precisa ser determinada, e um vetor de movimento diferencial MVD entre um vetor de movimento do segundo ponto de controle e um preditor de vetor de movimento, representado pelo grupo de vetores de movimento candidatos alvos, de um segundo ponto de controle no grupo de pontos de controle precisa ser determinada. Nesse caso, a codificação de um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido pode especificamente incluir: codificar os MVDs e o índice correspondente ao grupo de vetores de movimento candidatos alvos no fluxo de bits a ser transmitido.
[0016] Em uma outra solução opcional, em um modo de fusão, a codificação de um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido pode especificamente incluir: codificar o índice correspondente ao grupo de vetores de movimento candidatos alvos, um índice de quadro de referência, e um índice correspondente a uma direção de predição no fluxo de bits a ser transmitido. Deve ser entendido que no modo de fusão, o grupo de vetores de movimento candidatos alvos representa vetores de movimento de um grupo de pontos de controle do bloco de codificação atual. Em outras palavras, no modo de fusão, um preditor de vetor de movimento é igual a um vetor de movimento.
[0017] Em uma possível implantação, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho serem pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU pode incluir: se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação CTU acima do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito (ambos pertencem aos pontos de controle mais inferiores) do primeiro bloco de codificação afim vizinho, e é claro que informações sobre os dois pontos de controle não precisam ser lidas mais uma vez a partir da memória, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando o desempenho de codificação.
[0018] Opcionalmente, se o primeiro bloco de codificação afim vizinho estiver localizado na CTU acima do bloco atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho adicionalmente inclui um ponto de controle superior esquerdo ou um ponto de controle superior direito do primeiro bloco de codificação afim vizinho. Pode ser entendido que quando o primeiro grupo de pontos de controle inclui três pontos de controle, a precisão do primeiro grupo de vetores de movimento candidatos calculada com base no primeiro grupo de pontos de controle é mais alta.
[0019] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas e derivadas com base em coordenadas de localização (x4 , y4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e um vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar um vetor de movimento de um ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de codificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0020] Em uma outra solução opcional, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho serem pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU pode especificamente incluir: se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle superior direito e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está à esquerda do bloco de codificação atual, informações sobre pontos de controle mais à direita do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle superior direito e o ponto de controle inferior direito (ambos pertencem aos pontos de controle mais à direita) do primeiro bloco de codificação afim vizinho, e é claro que informações sobre os dois pontos de controle não precisam ser lidas mais uma vez a partir da memória, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando o desempenho de codificação.
[0021] Opcionalmente, se o primeiro bloco de codificação afim vizinho estiver localizado na CTU à esquerda do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho adicionalmente inclui um ponto de controle superior esquerdo ou um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho. Pode ser entendido que quando o primeiro grupo de pontos de controle inclui três pontos de controle, a precisão do primeiro grupo de vetores de movimento candidatos calculada com base no primeiro grupo de pontos de controle é mais alta.
[0022] Opcionalmente, tanto as coordenadas de localização (x5 , y5 ) do ponto de controle superior direito quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas e derivadas com base em coordenadas de localização (x4 , y4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x5 , y5 ) do ponto de controle superior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 ), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento do ponto de controle superior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco superior direito do primeiro bloco de codificação afim vizinho, e um vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar um vetor de movimento de um ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle superior direito quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de codificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle superior direito e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0023] Em uma outra solução opcional, quando o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho adicionalmente inclui um ponto de controle superior esquerdo ou um ponto de controle superior direito do primeiro bloco de codificação afim vizinho. Pode ser entendido que quando o primeiro grupo de pontos de controle inclui três pontos de controle, a precisão do primeiro grupo de vetores de movimento candidatos calculada com base no primeiro grupo de pontos de controle é mais alta.
[0024] Em uma outra solução opcional, depois da determinação de um grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins de acordo com um critério de custo de distorção de taxa, o método adicionalmente inclui: obter vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos; e predizer uma valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub- blocos do bloco de codificação atual (por exemplo, valores de amostra preditos do um ou mais sub-blocos são preditos com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual, e então o valor de amostra predito do bloco de codificação atual é obtido). Opcionalmente, quando os vetores de movimento do um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em um modelo afim do bloco de codificação atual e coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual, e um vetor de movimento de um sub-
bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base no modelo afim do bloco de codificação atual e coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual. Por exemplo, o modelo afim é construído com base no grupo de vetores de movimento candidatos alvos. Um modelo de parâmetro do modelo afim do bloco de codificação atual é obtido com base no grupo de vetores de movimento candidatos alvos e coordenadas de localização que são de um grupo de pontos de controle do bloco de codificação atual e que são representadas pelo grupo de vetores de movimento candidatos alvos. Então, o vetor de movimento do sub- bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de vetores de movimento candidatos afins de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0025] Opcionalmente, para qualquer bloco de codificação (tal como o bloco de codificação atual ou um bloco de codificação vizinho), se coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação são (x, y), coordenadas de um ponto de controle superior direito do bloco de codificação são (x+w, y), coordenadas de um ponto de controle inferior esquerdo do bloco de codificação são (x, y+h), e coordenadas de um ponto de controle inferior direito do bloco de codificação são (x+w, y+h). w é a largura do bloco de codificação, e h é a altura do bloco de codificação.
[0026] De acordo com um segundo aspecto, uma modalidade desse pedido fornece um codificador de vídeo, incluindo diversas unidades de função configuradas para implementar qualquer método no primeiro aspecto. Por exemplo, o codificador de vídeo pode incluir: uma unidade de predição inter, configurada para determinar um grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins de acordo com um critério de custo de distorção de taxa, onde o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle de um bloco de codificação atual, a lista de vetores de movimento candidatos afins inclui pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, ou o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, e a unidade de predição inter pode também ser referida como um módulo de predição inter, e em particular, um módulo de estimativa de movimento; e uma unidade de codificação de entropia, configurada para codificar um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
[0027] De acordo com um terceiro aspecto, uma modalidade desse pedido fornece um dispositivo de codificação de dados de vídeo, incluindo um codificador de vídeo configurado para implementar qualquer método no primeiro aspecto. Por exemplo, o dispositivo pode incluir: uma memória, configurada para armazenar dados de vídeo em uma forma de um fluxo de bits; e o codificador de vídeo, configurado para: determinar um grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins de acordo com um critério de custo de distorção de taxa, onde o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle de um bloco de codificação atual, a lista de vetores de movimento candidatos afins inclui pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, ou o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho; e codificar um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
[0028] De acordo com um quarto aspecto, uma modalidade desse pedido fornece um dispositivo de codificação de dados de vídeo. O dispositivo inclui uma memória não volátil e um processador que são acoplados entre si. A memória é configurada para armazenar uma instrução de programa. O processador é configurado para invocar o código de programa para realizar algumas das ou todas as etapas do primeiro aspecto e qualquer método no primeiro aspecto. Por exemplo, o processador é configurado para invocar o código de programa para realizar as seguintes etapas: determinar um grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins de acordo com um critério de custo de distorção de taxa; e codificar um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido, onde o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle de um bloco de codificação atual, a lista de vetores de movimento candidatos afins inclui pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, ou o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0029] De acordo com um quinto aspecto, uma modalidade desse pedido fornece uma mídia de armazenamento legível por computador. A mídia de armazenamento legível por computador armazena código de programa, e o código de programa inclui uma instrução usada para realizar algumas das ou todas as etapas de qualquer método no primeiro aspecto.
[0030] De acordo com um sexto aspecto, uma modalidade desse pedido fornece um produto de programa de computador. Quando o produto de programa de computador é rodado em um computador, o computador é habilitado a realizar algumas das ou todas as etapas de qualquer método no primeiro aspecto.
[0031] Deve ser entendido que soluções técnicas no segundo ao sexto aspectos desse pedido são consistentes com soluções técnicas no primeiro aspecto desse pedido, e efeitos benéficos alcançados pelos aspectos e implantações viáveis correspondente são similares. Detalhes não são descritos novamente.
[0032] De acordo com um sétimo aspecto, uma modalidade desse pedido revela um método de decodificação. O método inclui: analisar um fluxo de bits para obter um índice, onde o índice é usado para indicar um grupo de vetores de movimento candidatos alvos de um bloco de codificação atual (por exemplo, um bloco de codificação afim atual); determinar o grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins (a qual também é referida como uma lista de vetores de movimento candidatos) com base no índice (opcionalmente, quando um comprimento da lista de vetores de movimento candidatos afins é 1, o fluxo de bits não precisa ser analisado para obter o índice, mas o grupo de vetores de movimento alvo pode ser determinado diretamente), onde o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle do bloco de codificação atual, a lista de vetores de movimento candidatos afins inclui pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, ou o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho; obter vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos; e predizer um valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual.
[0033] Opcionalmente, por exemplo, uma maneira de construir a lista de vetores de movimento candidatos afins pode ser: determinar um ou mais blocos de codificação afins vizinhos do bloco de codificação atual em uma ordem de um bloco vizinho A, um bloco vizinho B, um bloco vizinho C, um bloco vizinho D, e um bloco vizinho E (conforme mostrado na Figura 7A), onde o um ou mais blocos de codificação afins vizinhos incluem o primeiro bloco de codificação afim vizinho; e obter preditores de vetor de movimento de um primeiro grupo de pontos de controle do bloco de codificação atual usando-se um primeiro modelo afim, onde os preditores de vetor de movimento do primeiro grupo de pontos de controle do bloco de codificação atual são usados como o primeiro grupo de vetores de movimento candidatos na lista de vetores de movimento candidatos afins, e um modelo de parâmetro do primeiro modelo afim é determinado com base em vetores de movimento do primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho e coordenadas de localização do primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho.
[0034] No supracitado método, a lista de vetores de movimento candidatos afins pode incluir somente um grupo de vetores de movimento candidatos, ou pode incluir uma pluralidade de grupos de vetor de movimento candidatos. Cada grupo de vetores de movimento candidatos pode ser uma tupla de 2 de vetor de movimento ou um vetor de movimento tríplex. Quando existe uma pluralidade de grupos de vetor de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é um da pluralidade de grupos de vetor de movimento candidatos. Um processo de derivação de um outro grupo de vetores de movimento candidatos na pluralidade de grupos de vetor de movimento candidatos pode ser igual a um processo de derivação do primeiro grupo de vetores de movimento candidatos, ou pode ser diferente de um processo de derivação do primeiro grupo de vetores de movimento candidatos. Além disso, o grupo de vetores de movimento candidatos alvos é um grupo de vetores de movimento candidatos selecionado a partir da lista de vetores de movimento candidatos afins com base no índice obtido a partir do fluxo de bits através de análise. Se o índice aponta para o primeiro grupo de vetores de movimento candidatos, o grupo de vetores de movimento candidatos alvos é o primeiro grupo de vetores de movimento candidatos. Se o índice aponta para um outro grupo de vetores de movimento candidatos, o grupo de vetores de movimento candidatos alvos não é o primeiro grupo de vetores de movimento candidatos. O primeiro bloco de codificação afim vizinho é um bloco de codificação em bloco afim específico vizinhos do bloco de codificação atual, e não é especificamente limitado no presente documento. A Figura 7A é usada como um exemplo para descrição. O primeiro bloco de codificação afim vizinho pode ser um bloco de codificação em uma localização vizinha A, um bloco de codificação em uma localização vizinha B, ou um outro bloco de codificação vizinho. Além disso, “primeiro(a)”, “segundo(a)”, "terceiro(a)", e semelhantes que aparecem em outros lugares nas modalidades desse pedido indicam, cada um, um objeto específico. Um objeto específico indicado por “primeiro”, um objeto específico indicado por “segundo”, e um objeto específico indicado por "terceiro" representam diferentes objetos. Por exemplo, se um primeiro grupo de pontos de controle e um segundo grupo de pontos de controle existem, o primeiro grupo de pontos de controle e o segundo grupo de pontos de controle representam diferentes pontos de controle. Além disso, “primeiro(a)”, “segundo(a)”, e semelhantes nas modalidades desse pedido não significam uma ordem.
[0035] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está à esquerda do bloco de codificação atual, informações sobre pontos de controle mais à direita do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle são pontos de controle determinados com base na relação de localização entre o bloco de codificação atual e a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado, ou o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle (ou usar fixamente um ponto de controle superior esquerdo e um ponto de controle superior direito de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle) no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, existe uma probabilidade muito alta que as informações que foram lidas a partir da memória possam ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando desempenho de decodificação.
[0036] Em uma possível implantação, o primeiro grupo de vetores de movimento candidatos ser obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho representa especificamente: o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro modelo afim (por exemplo, obtido com base no primeiro modelo afim e coordenadas de localização de um grupo de pontos de controle do bloco de codificação atual), e o primeiro modelo afim é determinado com base em vetores de movimento e coordenadas de localização do primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho. Nesse caso, a obtenção de vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos é especificamente: obter os vetores de movimento do um ou mais sub- blocos do bloco de codificação atual com base em um segundo modelo afim (por exemplo, obter os vetores de movimento do um ou mais sub-blocos do bloco de codificação atual com base no segundo modelo afim e coordenadas de localização do um ou mais sub-blocos do bloco de codificação atual), onde o segundo modelo afim é determinado com base no grupo de vetores de movimento candidatos alvos e coordenadas de localização de um grupo de pontos de controle do bloco de codificação atual.
[0037] Em uma outra solução opcional, a lista de vetores de movimento candidatos afins adicionalmente inclui um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho. Localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes das localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho (por exemplo, os pontos de controle incluídos no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, mas os pontos de controle incluídos no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho são um ponto de controle superior direito, um ponto de controle inferior direito, e um ponto de controle inferior esquerdo do segundo bloco de codificação afim vizinho), ou o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho.
[0038] Em uma solução opcional, em um modo de predição de vetor de movimento antecipada AMVP, a obtenção de vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos pode especificamente incluir: obter um novo grupo de vetores de movimento candidatos com base em um vetor de movimento diferencial MVD obtido a partir do fluxo de bits através de análise e no grupo de vetores de movimento candidatos alvos indicado pelo índice; e então obter os vetores de movimento do um ou mais sub-blocos do bloco de codificação atual com base no novo grupo de vetores de movimento candidatos. Por exemplo, o segundo modelo afim é primeiro determinado com base no novo grupo de vetores de movimento candidatos e coordenadas de localização de um grupo de pontos de controle do bloco de codificação atual, e os vetores de movimento do um ou mais sub-blocos do bloco de codificação atual são obtidos com base no segundo modelo afim. Por exemplo, os vetores de movimento do um ou mais sub-blocos do bloco de codificação atual são obtidos com base no segundo modelo afim e as coordenadas de localização do um ou mais sub-blocos do bloco de codificação atual.
[0039] Em uma outra possível implantação, em um modo de fusão, a predição de um valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual pode especificamente incluir: predizer o valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub- blocos do bloco de codificação atual e um índice de quadro de referência e a direção de predição que é indicada pelo índice.
[0040] Em uma outra possível implantação, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho serem pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU pode incluir: se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação CTU acima do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito (ambos pertencem aos pontos de controle mais inferiores) do primeiro bloco de codificação afim vizinho, e é claro que informações sobre os dois pontos de controle não precisam ser lidas mais uma vez a partir da memória, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando desempenho de decodificação.
[0041] Em uma outra solução opcional, se o primeiro bloco de codificação afim vizinho estiver localizado na CTU acima do bloco atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho adicionalmente inclui um ponto de controle superior esquerdo ou um ponto de controle superior direito do primeiro bloco de codificação afim vizinho. Pode ser entendido que quando o primeiro grupo de pontos de controle inclui três pontos de controle, a precisão do primeiro grupo de vetores de movimento candidatos calculada com base no primeiro grupo de pontos de controle é mais alta.
[0042] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas e derivadas com base em coordenadas de localização (x4 , y4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e um vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar um vetor de movimento de um ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de decodificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0043] Em uma outra possível implantação, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho serem pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU pode incluir: se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle superior direito e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está à esquerda do bloco de codificação atual, informações sobre pontos de controle mais à direita do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle superior direito e o ponto de controle inferior direito (ambos pertencem aos pontos de controle mais à direita) do primeiro bloco de codificação afim vizinho, e é claro que informações sobre os dois pontos de controle não precisam ser lidas mais uma vez a partir da memória, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando desempenho de decodificação.
[0044] Em uma outra possível implantação, se o primeiro bloco de codificação afim vizinho estiver localizado na CTU à esquerda do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho adicionalmente inclui um ponto de controle superior esquerdo ou um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho. Pode ser entendido que quando o primeiro grupo de pontos de controle inclui três pontos de controle, precisão do primeiro grupo de vetores de movimento candidatos calculada com base no primeiro grupo de pontos de controle é mais alta.
[0045] Opcionalmente, tanto as coordenadas de localização (x5 , y5 ) do ponto de controle superior direito quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x5 , y5 ) do ponto de controle superior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 ), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento do ponto de controle superior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco superior direito do primeiro bloco de codificação afim vizinho, e um vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar um vetor de movimento de um ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle superior direito quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de decodificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle superior direito e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0046] Em uma outra possível implantação, quando o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho adicionalmente inclui um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. Pode ser entendido que quando o primeiro grupo de pontos de controle inclui três pontos de controle, a precisão do primeiro grupo de vetores de movimento candidatos calculada com base no primeiro grupo de pontos de controle é mais alta.
[0047] Em uma outra solução opcional, quando os vetores de movimento do um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em um modelo afim do bloco de codificação atual e coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual, e um vetor de movimento de um sub-bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base no modelo afim do bloco de codificação atual e coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual. Por exemplo, o modelo afim é construído com base no grupo de vetores de movimento candidatos alvos e em coordenadas de localização de um grupo de pontos de controle do bloco de codificação atual. Um modelo de parâmetro do modelo afim é obtido com base no vetor de movimento candidato alvo e nas coordenadas de localização do grupo de pontos de controle do bloco de codificação atual. O vetor de movimento do sub-bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo- se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de vetores de movimento candidatos afins de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0048] Opcionalmente, para qualquer bloco de codificação (tal como o bloco de codificação atual ou um bloco de codificação vizinho), se coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação são (x, y), coordenadas de um ponto de controle superior direito do bloco de codificação são (x+w, y), coordenadas de um ponto de controle inferior esquerdo do bloco de codificação são (x, y+h), e coordenadas de um ponto de controle inferior direito do bloco de codificação são (x+w, y+h). w é a largura do bloco de codificação, e h é a altura do bloco de codificação.
[0049] De acordo com um oitavo aspecto, uma modalidade desse pedido fornece um decodificador de vídeo, incluindo diversas unidades de função configuradas para implementar qualquer método no sétimo aspecto. Por exemplo, o decodificador de vídeo pode incluir: uma unidade de decodificação de entropia, configurada para analisar um fluxo de bits para obter um índice, onde o índice é usado para indicar um grupo de vetores de movimento candidatos alvos de um bloco de codificação atual; e uma unidade de predição inter, configurada para: determinar o grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins com base no índice, onde o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle do bloco de codificação atual, a lista de vetores de movimento candidatos afins inclui pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, ou o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho; obter vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos; e predizer um valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual.
[0050] De acordo com um nono aspecto, uma modalidade desse pedido fornece um dispositivo de decodificação de dados de vídeo, incluindo um decodificador de vídeo configurado para implementar qualquer método no sétimo aspecto. Por exemplo, o dispositivo pode incluir:
uma memória, configurada para armazenar dados de vídeo em uma forma de um fluxo de bits; e o decodificador de vídeo, configurado para: analisar um fluxo de bits para obter um índice, onde o índice é usado para indicar um grupo de vetores de movimento candidatos alvos de um bloco de codificação atual; determinar o grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins com base no índice, onde o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle do bloco de codificação atual, a lista de vetores de movimento candidatos afins inclui pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, ou o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho; obter vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos; e predizer um valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual.
[0051] De acordo com um décimo aspecto, uma modalidade desse pedido fornece um dispositivo de decodificação de dados de vídeo. O dispositivo inclui uma memória não volátil e um processador que são acoplados entre si. A memória é configurada para armazenar uma instrução de programa. O processador é configurado para invocar o código de programa para realizar algumas das ou todas as etapas do sétimo aspecto e qualquer método no sétimo aspecto. Por exemplo, o processador é configurado para invocar o código de programa para realizar as seguintes etapas: analisar um fluxo de bits para obter um índice, onde o índice é usado para indicar um grupo de vetores de movimento candidatos alvos de um bloco de codificação atual; determinar o grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins com base no índice, onde o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle do bloco de codificação atual, a lista de vetores de movimento candidatos afins inclui pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, ou o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho; obter vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos; e predizer um valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual.
[0052] De acordo com um décimo primeiro aspecto, uma modalidade desse pedido fornece uma mídia de armazenamento legível por computador. A mídia de armazenamento legível por computador armazena código de programa, e o código de programa inclui uma instrução usada para realizar algumas das ou todas as etapas de qualquer método no sétimo aspecto.
[0053] De acordo com um décimo segundo aspecto, uma modalidade desse pedido fornece um produto de programa de computador. Quando o produto de programa de computador é rodado em um computador, o computador é habilitado a realizar algumas das ou todas as etapas de qualquer método no sétimo aspecto.
[0054] Deve ser entendido que soluções técnicas no oitavo ao décimo segundo aspectos desse pedido são consistentes com soluções técnicas no sétimo aspecto desse pedido, e efeitos benéficos alcançados pelos aspectos e implantações viáveis correspondente são similares. Detalhes não são descritos novamente.
BREVE DESCRIÇÃO DE DESENHOS
[0055] Para descrever as soluções técnicas nas modalidades desse pedido mais claramente, a seguir se descreve os desenhos anexos para descrever as modalidades desse pedido.
[0056] A Figura 1A é um diagrama de blocos esquemático de um sistema de codificação e decodificação de vídeo de acordo com uma modalidade desse pedido;
[0057] A Figura 1B é um fluxograma esquemático de dados de processamento de vídeo de acordo com uma modalidade desse pedido;
[0058] A Figura 2A é um diagrama de blocos esquemático de um codificador de vídeo de acordo com uma modalidade desse pedido;
[0059] A Figura 2B é um diagrama de blocos esquemático de um decodificador de vídeo de acordo com uma modalidade desse pedido;
[0060] A Figura 3 é um fluxograma de um método de predição inter para codificação de imagem de vídeo de acordo com uma modalidade desse pedido;
[0061] A Figura 4 é um fluxograma de um método de predição inter para decodificação de imagem de vídeo de acordo com uma modalidade desse pedido;
[0062] A Figura 5A é um diagrama esquemático de informações de movimento de um bloco de imagem atual e um bloco de referência de acordo com uma modalidade desse pedido;
[0063] A Figura 5B é um diagrama esquemático de um cenário de predição inter de acordo com uma modalidade desse pedido;
[0064] A Figura 5C é um diagrama esquemático de um cenário de blocos vizinhos de quadro inter de acordo com uma modalidade desse pedido;
[0065] A Figura 5D é um diagrama esquemático de um vetor de movimento de um bloco de codificação afim vizinho de acordo com uma modalidade desse pedido;
[0066] A Figura 6 é um fluxograma esquemático de um método de codificação de acordo com uma modalidade desse pedido;
[0067] A Figura 7A é um diagrama esquemático de um cenário de blocos vizinhos de acordo com uma modalidade desse pedido;
[0068] A Figura 7B é um diagrama esquemático de um cenário de blocos vizinhos de acordo com uma modalidade desse pedido;
[0069] A Figura 8A é um diagrama estrutural esquemático de uma unidade de compensação de movimento de acordo com uma modalidade desse pedido;
[0070] A Figura 8B é um diagrama estrutural esquemático de uma outra unidade de compensação de movimento de acordo com uma modalidade desse pedido;
[0071] A Figura 9 é um fluxograma esquemático de um método de decodificação de acordo com uma modalidade desse pedido;
[0072] A Figura 9A é um fluxograma esquemático de construir uma lista de vetores de movimento candidatos afins de acordo com uma modalidade desse pedido;
[0073] A Figura 9B é um fluxograma esquemático de construir uma lista de vetores de movimento candidatos afins de acordo com uma modalidade desse pedido;
[0074] A Figura 9C é um fluxograma esquemático de construir uma lista de vetores de movimento candidatos afins de acordo com uma modalidade desse pedido;
[0075] A Figura 9D é um fluxograma esquemático de construir uma lista de vetores de movimento candidatos afins de acordo com uma modalidade desse pedido;
[0076] A Figura 10 é um diagrama estrutural esquemático de um dispositivo de codificação ou um dispositivo de decodificação de acordo com uma modalidade desse pedido; e
[0077] A Figura 11 é um sistema de codificação de vídeo 1100 incluindo o codificador 100 na Figura 2A e/ou o decodificador 200 na Figura 2B de acordo com uma modalidade exemplificativa.
DESCRIÇÃO DE MODALIDADES
[0078] A seguir se descreve as modalidades desse pedido com referência aos desenhos anexos nas modalidades desse pedido.
[0079] Para codificação de um fluxo de vídeo ou uma parte de um fluxo de vídeo, tal como um quadro de vídeo ou um bloco de imagem, similaridades temporais e espaciais no fluxo de vídeo podem ser usadas para aperfeiçoar desempenho de codificação. Por exemplo, para um bloco de imagem atual no fluxo de vídeo, informações de movimento usadas para o bloco de imagem atual podem ser preditas com base em um bloco previamente codificado no fluxo de vídeo, e uma diferença (também referida como um residual) entre um bloco de predição e o bloco de imagem atual (isto é, um bloco original) é identificada, para codificar o bloco de imagem atual com base em bloco previamente codificado. De acordo com esse método, somente o residual usado para gerar o bloco de imagem atual e alguns parâmetros, em vez do bloco de imagem atual inteiro, são incluídos em um fluxo de bits de saída de vídeo digital. Essa tecnologia pode ser referida como predição inter.
[0080] Um vetor de movimento é um parâmetro importante em um processo de predição inter, e representa um deslocamento espacial de bloco previamente codificado em relação ao bloco de codificação atual. Um método de estimativa de movimento, tal como busca de movimento, pode ser usado para obter o vetor de movimento. Em uma tecnologia de predição inter, um bit representando um vetor de movimento é incluído em um fluxo de bits codificado, para permitir um decodificador para reproduzir um bloco de predição, desse modo obter um bloco reconstruído. Para aperfeiçoar adicionalmente eficiência de codificação, é adicionalmente proposto para codificar diferencialmente um vetor de movimento usando-se um vetor de movimento de referência, isto é, para codificar somente uma diferença entre o vetor de movimento e o vetor de movimento de referência em vez de codificar o vetor de movimento inteiro. Em alguns casos, um vetor de movimento de referência pode ser selecionado a partir de vetores de movimento previamente usados em um fluxo de vídeo. Selecionar um vetor de movimento previamente usado para codificar um vetor de movimento atual pode adicionalmente reduzir uma quantidade de bits incluída em um fluxo de bits de vídeo codificados.
[0081] A Figura 1A é um diagrama de blocos de um sistema de codificação de vídeo exemplificativo 1 de acordo com uma modalidade desse pedido. Conforme usado nesse relatório, o termo " codec de vídeo " normalmente se refere a um codificador de vídeo e um decodificador de vídeo. Nesse pedido, o termo "codificação de vídeo" ou "codificação" pode normalmente se referir a codificação de vídeo ou decodificação de vídeo. Um codificador de vídeo 100 e um decodificador de vídeo 200 no sistema de codificação de vídeo 1 são configurados para predizer informações de movimento, por exemplo, um vetor de movimento, de um bloco codificado atual de imagem ou um sub-bloco do bloco codificado atual de imagem de acordo com vários exemplos de método descritos em qualquer uma dentre uma pluralidade de novos modos de predição inter fornecidos nesse pedido, de modo que o vetor de movimento predito esteja maximamente perto de um vetor de movimento obtido usando-se um método de estimativa de movimento. Desse modo, um vetor de movimento diferencial não precisa ser transmitido durante codificação, desse modo adicionalmente aperfeiçoando o desempenho de codificação e decodificação.
[0082] Conforme mostrado na Figura 1A, o sistema de codificação de vídeo 1 inclui um aparelho de origem 10 e um aparelho de destino 20. O aparelho de origem 10 gera dados de vídeo codificados. Portanto, o aparelho de origem 10 pode ser referido como um aparelho de codificação de vídeo. O aparelho de destino 20 pode decodificar os dados de vídeo codificados gerados pelo aparelho de origem 10. Portanto, o aparelho de destino 20 pode ser referido como um aparelho de decodificação de vídeo. Várias soluções de implantação do aparelho de origem 10, do aparelho de destino 20, ou tanto o aparelho de origem 10 quanto o aparelho de destino 20 pode incluir um ou mais processadores e uma memória acoplada ao um ou mais processadores. A memória pode incluir, porém, sem limitação, para uma RAM, uma ROM, uma EEPROM, uma memória flash, ou qualquer outra mídia que pode ser usado para armazenar código de programa exigido em uma forma de uma instrução ou uma estrutura de dados que pode ser acessada por um computador, conforme descrito nesse relatório. Para facilidade de entendimento, a Figura 1B adicionalmente mostra um cenário no qual dados de vídeo são coletados, codificados, e enviados pelo aparelho de origem 10 e são recebidos, decodificados, e renderizados pelo aparelho de destino 20.
[0083] O aparelho de origem 10 e o aparelho de destino 20 podem incluir vários aparelhos, incluindo um computador de mesa, um aparelho de computação móvel, um computador tipo notebook (por exemplo, computador tipo laptop), um computador tipo tablet, um conversor, um aparelho de telefone que cabe na mão tal como um telefone inteligente, um aparelho de televisão, uma câmera, um aparelho de exibição, um aparelho de reprodução de mídia digital, um console de vídeo game, um computador inserido em veículo, e aparelhos similares.
[0084] O aparelho de destino 20 pode receber os dados de vídeo codificados a partir do aparelho de origem 10 através de um enlace 30. O enlace 30 pode incluir um ou mais mídia ou aparelhos que pode transferir os dados de vídeo codificados a partir do aparelho de origem 10 para o aparelho de destino
20. Em um exemplo, o enlace 30 pode incluir uma ou mais mídias de comunicações que habilitem o aparelho de origem 10 para transmitir diretamente os dados de vídeo codificados para o aparelho de destino 20 em tempo real. Nesse exemplo, o aparelho de origem 10 pode modular os dados de vídeo codificados de acordo com um padrão de comunicações (por exemplo, um protocolo de comunicações sem fio), e pode transmitir os dados modulados de vídeo para o aparelho de destino 20. A uma ou mais mídias de comunicações podem incluir uma mídia de comunicações sem fio e/ou uma mídia de comunicações com fio, por exemplo, um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. A uma ou mais mídias de comunicações podem ser uma parte de uma rede com base em pacote, e a rede com base em pacote é, por exemplo, uma rede de área local, uma rede de longa distância, ou uma rede global (por exemplo, a internet). A uma ou mais mídias de comunicações podem incluir um roteador, um comutador, uma estação de base, ou um outro dispositivo facilitando comunicação do aparelho de origem 10 para o aparelho de destino 20.
[0085] Em um outro exemplo, os dados codificados podem ser emitidos para um aparelho de armazenamento 40 através de uma interface de saída 140. Similarmente, os dados codificados podem ser acessados a partir do aparelho de armazenamento 40 através de uma interface de entrada 240. O aparelho de armazenamento 40 pode incluir qualquer um dentre uma pluralidade de mídias de armazenamento de dados distribuídos ou localmente acessados, por exemplo, um acionador de disco rígido, um disco Blu-ray, um DVD, um CD- ROM, uma memória flash, uma memória volátil ou não volátil, ou qualquer outra mídia de armazenamento digital adequado configurada para armazenar dados de vídeo codificados.
[0086] Em um outro exemplo, o aparelho de armazenamento 40 pode corresponder a um servidor de arquivo ou um outro aparelho de armazenamento intermediário que pode manter um vídeo codificado gerado pelo aparelho de origem 10. O aparelho de destino 20 pode acessar os dados de vídeo armazenados a partir do aparelho de armazenamento 40 através transmissão por streaming ou por download. O servidor de arquivo pode ser qualquer tipo de servidor que tenha capacidade de armazenar os dados de vídeo codificados e transmitir os dados de vídeo codificados para o aparelho de destino 20. Por exemplo, o servidor de arquivo pode ser um servidor de rede (por exemplo, usado para um site da web), um servidor FTP, um aparelho de armazenamento fixado à rede (NAS), ou um acionador de disco local. O aparelho de destino 20 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão (incluindo uma conexão internet). A conexão de dados padrão pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, uma DSL ou um modem a cabo), ou uma combinação dos mesmos que seja adequada para acessar os dados de vídeo codificados armazenados no servidor de arquivo. A transmissão dos dados de vídeo codificados a partir do aparelho de armazenamento 40 pode ser transmissão por streaming, transmissão por download, ou uma combinação das mesmas.
[0087] Uma tecnologia de predição de vetor de movimento nesse pedido pode ser usada para codificação e decodificação de vídeo, para suportar uma pluralidade de aplicações em múltiplas mídias, por exemplo, difusão para televisão pelo ar, transmissão para televisão a cabo, transmissão para televisão via satélite, transmissão de vídeo por streaming (por exemplo, pela internet), codificação de dados de vídeo armazenados em uma mídia de armazenamento de dados, decodificação de dados de vídeo armazenados em uma mídia de armazenamento de dados, ou outras aplicações. Em alguns exemplos, o sistema de codificação de vídeo 1 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional, para suportar aplicações tais como transmissão de vídeo por streaming, reprodução de vídeo, difusão de vídeo, e/ou videotelefonia.
[0088] O sistema de codificação de vídeo 1 descrito na Figura 1A é meramente um exemplo, e a tecnologia nesse pedido é aplicável a uma configuração de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente inclui qualquer comunicação de dados entre um aparelho de codificação e um aparelho de decodificação. Em um outro exemplo, dados são recuperados a partir de uma memória local, são transmitidos em uma rede em uma maneira por streaming, e semelhantes. O aparelho de codificação de vídeo pode codificar os dados e armazenar os dados na memória, e/ou o aparelho de decodificação de vídeo pode recuperar os dados a partir da memória e decodificar os dados. Em muitos exemplos, aparelhos que somente codificam dados e armazenam os dados na memória e/ou recuperam os dados a partir da memória e decodificam os dados e que não se comunicam um com o outro realizam codificação e decodificação.
[0089] No exemplo na Figura 1A, o aparelho de origem 10 inclui uma fonte de vídeo 120, o codificador de vídeo 100, e a interface de saída 140. Em alguns exemplos, a interface de saída 140 pode incluir um modulador/demodulador (modem) e/ou um transmissor. A fonte de vídeo 120 pode incluir um aparelho de captura de vídeo (por exemplo, uma câmera), um arquivo de vídeo incluindo dados de vídeo previamente capturados, uma interface alimentadora de vídeo para receber dados de vídeo a partir de fornecedor de conteúdo de vídeo, e/ou um sistema gráfico de computador para gerar dados de vídeo, ou uma combinação das supracitadas fontes de dados de vídeo.
[0090] O codificador de vídeo 100 pode codificar dados de vídeo que são da fonte de vídeo 120. Em alguns exemplos, o aparelho de origem 10 transmite diretamente os dados de vídeo codificados para o aparelho de destino 20 através da interface de saída 140. Em um outro exemplo, os dados de vídeo codificados podem ser alternativamente armazenados no aparelho de armazenamento 40, de modo que o aparelho de destino 20 subsequentemente acesse os dados de vídeo codificados para decodificação e/ou reprodução.
[0091] No exemplo na Figura 1A, o aparelho de destino 20 inclui a interface de entrada 240, o decodificador de vídeo 200, e um aparelho de exibição 220. Em alguns exemplos, a interface de entrada 240 inclui um receptor e/ou um modem. A interface de entrada 240 pode receber os dados de vídeo codificados através do enlace 30 e/ou a partir do aparelho de armazenamento
40. O aparelho de exibição 220 pode ser integrado com o aparelho de destino 20 ou pode ser localizado fora do aparelho de destino 20. Normalmente, o aparelho de exibição 220 exibe dados de vídeo decodificados. O aparelho de exibição 220 pode incluir uma pluralidade de tipos de aparelhos de exibição, por exemplo, um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED), ou um outro tipo de aparelho de exibição.
[0092] Embora não mostrado na Figura 1A, em alguns aspectos, o codificador de vídeo 100 e o decodificador de vídeo 200 podem ser respectivamente integrados com um codificador de áudio e um decodificador de áudio, e podem incluir uma unidade multiplexadora-demultiplexadora apropriada ou outro hardware e software, para codificar áudio e um vídeo em um fluxo de dados combinado ou um fluxo de dados separado. Em alguns exemplos, caso se aplique, a unidade MUX-DEMUX pode estar de acordo com o protocolo de multiplexador H.223 da ITU, ou um outro protocolo tal como o protocolo de datagrama de usuário (UDP).
[0093] O codificador de vídeo 100 e o decodificador de vídeo 200 podem ser, cada um, implementados como, por exemplo, qualquer um da seguinte pluralidade de circuitos: um ou mais microprocessadores, um processador de sinal digital (DSP), um circuito integrado de aplicação específica (ASIC), um arranjo de porta programável em campo (FPGA), lógica discreta, hardware, ou qualquer combinação dos mesmos. Se esse pedido é implementado parcialmente através de software, o aparelho pode armazenar, em uma mídia de armazenamento não volátil legível por computador apropriado, uma instrução usada para o software, e pode usar um ou mais processadores para executar a instrução em hardware, para implementar a tecnologia nesse pedido. Qualquer um dos supracitados integrantes (incluindo hardware, software, uma combinação de hardware e software, e semelhantes) pode ser considerado como um ou mais processadores. O codificador de vídeo 100 e o decodificador de vídeo 200 podem, cada um, ser incluídos em um ou mais codificadores ou decodificadores, e o codificador ou o decodificador pode ser integrado como uma parte de um codificador/decodificador (codec) combinados em um aparelho correspondente.
[0094] Nesse pedido, o codificador de vídeo 100 pode ser aproximadamente referido como um outro aparelho "sinalizando" ou "transmitindo" algumas informações, por exemplo, para, o decodificador de vídeo
200. O termo "sinalizando" ou "transmitindo" pode se referir aproximadamente à transferência de um elemento de sintaxe e/ou outros dados usados para decodificar dados de vídeo compactados. A transferência pode ocorrer em tempo real ou quase em tempo real. Alternativamente, a comunicação pode ocorrer depois de um período de tempo. Por exemplo, a comunicação pode ocorrer quando um elemento de sintaxe em um fluxo de bits codificado é armazenado em uma mídia de armazenamento legível por computador durante codificação, e o aparelho de decodificação pode então recuperar o elemento de sintaxe a qualquer momento depois que o elemento de sintaxe é armazenado na mídia.
[0095] O codificador de vídeo 100 e o decodificador de vídeo 200 podem operar de acordo com um padrão de compactação de vídeo, tal como codificação de vídeo de alta eficiência (HEVC), ou uma extensão do mesmo, e podem estar de acordo com um modelo teste (HM) de HEVC. Alternativamente, o codificador de vídeo 100 e o decodificador de vídeo 200 podem operar de acordo com um outro padrão da indústria, por exemplo, o padrão H.264 da ITU- T, o padrão H.265, ou uma extensão de tal padrão. No entanto, as tecnologias nesse pedido não são limitadas a quaisquer padrões de codificação e decodificação específicos.
[0096] Em um exemplo, com referência juntamente à Figura 3, o codificador de vídeo 100 é configurado para codificar um elemento de sintaxe relacionado a um bloco de imagem a ser codificado atual em um fluxo de bits de saída de vídeo digital (o qual é resumidamente referido como um fluxo de bits). No presente documento, o elemento de sintaxe usado para realizar predição inter no bloco de imagem atual é resumidamente referido como dados de predição inter. Para determinar um modo de predição inter a ser usado para codificar o bloco de imagem atual, o codificador de vídeo 100 é adicionalmente configurado para: determinar ou selecionar (S301) um modo de predição inter a ser usado para realizar predição inter no bloco de imagem atual em um conjunto de modos de predição inter candidatos (por exemplo, selecionar um modo de predição inter com custos comprometidos ou mais baixos de distorção de taxa de codificação o bloco de imagem atual em uma pluralidade de novos modos de predição inter); e codificar o bloco de imagem atual com base no modo de predição inter determinado (S303). O processo de codificação no presente documento pode incluir: predizer informações de movimento de um ou mais sub-blocos no bloco de imagem atual com base no modo de predição inter determinado (onde as informações de movimento podem ser especificamente informações de movimento de cada sub-bloco ou informações de movimento de todos os sub- blocos), e predizer valores de amostra preditos do um ou mais sub-blocos usando-se as informações de movimento do um ou mais sub-blocos no bloco de imagem atual, para obter um bloco de predição do bloco de imagem atual.
[0097] Deve ser entendido que, se uma diferença (isto é, um residual) entre o bloco de predição gerado usando-se as informações de movimento preditas com base no modo de predição inter e no bloco de imagem a ser codificado atual (isto é, um bloco original) é 0, o codificador de vídeo 100 precisa codificar somente o elemento de sintaxe relacionado ao bloco de imagem a ser codificado atual no fluxo de bits (também referido como um fluxo de bits). Caso contrário, além do elemento de sintaxe, um residual correspondente precisa ser adicionalmente codificado no fluxo de bits.
[0098] Em um outro exemplo, com referência juntamente à Figura 4, o decodificador de vídeo 200 é configurado para: decodificar um fluxo de bits para obter um elemento de sintaxe relacionado a um bloco de imagem a ser decodificado atual (S401), e quando os dados de predição inter indicam usar um modo de predição inter específico (por exemplo, um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP), um modo de fusão (merge), um modo de fusão afim affine_merge, ou um modo de predição de vetor de movimento afim afinne_inter) para predizer o bloco de imagem atual (S403), decodificar o bloco de imagem atual com base no modo de predição inter determinado (S405). O processo de decodificação no presente documento pode incluir: predizer informações de movimento de um ou mais sub-blocos no bloco de imagem atual, e realizar predição inter no bloco de imagem atual usando-se as informações de movimento do um ou mais sub-blocos no bloco de imagem atual.
[0099] Opcionalmente, se os dados de predição inter adicionalmente incluem um índice usado para indicar um grupo de vetores de movimento candidatos alvos do bloco de imagem atual, o decodificador de vídeo 200 é configurado para determinar o grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins. O grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle do bloco de imagem atual. Deve ser entendido que, se o decodificador de vídeo 200 usa o modo de fusão, os preditores de vetor de movimento que são do grupo de pontos de controle do bloco de imagem atual e que são representados pelo grupo de vetores de movimento candidatos alvos são usados como vetores de movimento do grupo de pontos de controle do bloco de imagem atual.
[0100] A Figura 2A é um diagrama de blocos de um codificador de vídeo 100 exemplificativo de acordo com uma modalidade desse pedido. O codificador de vídeo 100 é configurado para emitir um vídeo para uma entidade de pós-processamento 41. A entidade de pós-processamento 41 representa um exemplo de uma entidade de vídeo que tenha capacidade de processar dados de vídeo codificados que são do codificador de vídeo 100. Por exemplo, a entidade de vídeo é um elemento de rede sensível à mídia (MANE) ou um aparelho de cortar/um aparelho de editar. Em alguns casos, a entidade de pós- processamento 41 pode ser um exemplo de uma entidade de rede. Em alguns sistemas de codificação de vídeo, a entidade de pós-processamento 41 e o codificador de vídeo 100 podem ser componentes de aparelhos separados, enquanto em outros casos, funções descritas com respeito à entidade de pós- processamento 41 podem ser implementadas por um mesmo aparelho incluindo o codificador de vídeo 100. Em um exemplo, a entidade de pós-processamento 41 é um exemplo do aparelho de armazenamento 40 na Figura 1A.
[0101] O codificador de vídeo 100 pode codificar um bloco de imagem de vídeo, por exemplo, realizar predição inter no bloco de imagem de vídeo, com base em qualquer novo modo de predição inter em um conjunto de modos de predição inter candidatos que inclui modos 0, 1, 2, ..., e 10 e que é proposto nesse pedido.
[0102] Em um exemplo na Figura 2A, o codificador de vídeo 100 inclui uma unidade de processamento de predição 108, uma unidade de filtro 106, um buffer de imagem decodificada (DPB) 107, uma unidade de soma 114, uma unidade de transformada 101, uma unidade de quantização 102, e uma unidade de codificação de entropia 103. A unidade de processamento de predição 108 inclui uma unidade de predição inter 110 e uma unidade de predição intra 109. Para reconstrução de bloco de imagem, o codificador de vídeo 100 adicionalmente inclui uma unidade de quantização inversa 104, uma unidade de transformada inversa 105, e uma unidade de soma 113. A unidade de filtro 106 é destinada a representar uma ou mais unidades de filtro loop, por exemplo, a unidade de filtro de desbloqueio, uma unidade de filtro loop adaptável (ALF), e uma unidade de filtro de desvio adaptável de amostra (SAO). Embora a unidade de filtro 106 seja mostrada como um filtro in loop na Figura 2A, em uma outra implantação, a unidade de filtro 106 pode ser implementada com um filtro posterior. Em um exemplo, o codificador de vídeo 100 pode adicionalmente incluir uma unidade de armazenamento de dados de vídeo e uma unidade de partição (não mostrada na figura).
[0103] A unidade de armazenamento de dados de vídeo pode armazenar dados de vídeo codificados por um componente do codificador de vídeo 100. Os dados de vídeo armazenados na unidade de armazenamento de dados de vídeo podem ser obtidos a partir de uma fonte de vídeo 120. O DPB 107 pode ser uma unidade de armazenamento de imagem de referência que armazena dados de vídeo de referência usados pelo codificador de vídeo 100 para codificar os dados de vídeo em um modo de codificação intra ou inter. A unidade de armazenamento de dados de vídeo e o DPB 107 podem, cada um, incluir qualquer um dentre uma pluralidade de aparelhos de unidade de armazenamento, por exemplo, uma memória de acesso aleatório dinâmica (DRAM) incluindo uma DRAM síncrona (SDRAM), uma RAM (MRAM) magnetorresistiva, uma RAM resistiva (RRAM), ou um outro tipo de aparelho de unidade de armazenamento. A unidade de armazenamento de dados de vídeo e o DPB 107 podem ser fornecidos por um mesmo aparelho de unidade de armazenamento ou aparelhos de unidade de armazenamento separados. Em vários exemplos, a unidade de armazenamento de dados de vídeo pode ser integrada em um chip juntamente com outros componentes do codificador de vídeo 100, ou pode ser disposta fora do chip em relação àqueles componentes.
[0104] Conforme mostrado na Figura 2A, o codificador de vídeo 100 recebe dados de vídeo e armazena os dados de vídeo na unidade de armazenamento de dados de vídeo. A unidade de partição parte os dados de vídeo em diversos blocos de imagem, e esses blocos de imagem podem ser adicionalmente partidos em blocos menores. Por exemplo, partição de bloco de imagem com base em uma estrutura de árvore quaternária ou uma estrutura de árvore binária é realizada. A divisão pode adicionalmente incluir divisão em fatias (slice), telhas (tile), ou outras unidades maiores. O codificador de vídeo 100 é normalmente um componente para codificar um bloco de imagem em uma fatia de vídeo a ser codificada. A fatia pode ser partida em uma pluralidade de blocos de imagem (e pode ser partida em conjuntos de bloco de imagem que são referidos como telhas). A unidade de processamento de predição 108 pode selecionar um dentre uma pluralidade de possíveis modos de codificação usados para o bloco de imagem atual, por exemplo, um dentre uma pluralidade de modos de codificação intra ou um dentre uma pluralidade de modos de codificação inter. A pluralidade de modos de codificação inter inclui, porém, sem limitação, um ou mais dos modos 0, 1, 2, 3, ..., e 10 propostos nesse pedido. A unidade de processamento de predição 108 pode fornecer blocos codificados intra e codificados inter obtidos para a unidade de soma 114 para gerar um bloco residual, e fornecer os blocos para a unidade de soma 113 para reconstruir um bloco codificado usado como uma imagem de referência.
[0105] A unidade de predição intra 109 na unidade de processamento de predição 108 pode realizar codificação preditiva intra no bloco de imagem atual em relação a um ou mais blocos vizinhos que estão em um mesmo quadro ou fatia que o bloco a ser codificado atual, para remover redundância espacial. A unidade de predição inter 110 na unidade de processamento de predição 108 pode realizar codificação preditiva inter no bloco de imagem atual em relação a um ou mais blocos de predição em uma ou mais imagens de referência, para remover redundância temporal.
[0106] Especificamente, a unidade de predição inter 110 pode ser configurada para determinar um modo de predição inter a ser usada para codificar o bloco de imagem atual. Por exemplo, a unidade de predição inter 110 pode calcular valores de distorção de taxa de vários modos de predição inter em um conjunto de modos de predição inter candidatos através análise de distorção de taxa, e selecionar um modo de predição inter com uma característica de distorção de taxa ideal a partir dos modos de predição inter. A análise de distorção de taxa é normalmente usada para determinar um montante de distorção (ou erro) entre um bloco codificado e um bloco original que não foi codificado e que deve ser codificado para gerar o bloco codificado, e uma taxa de bits (isto é, uma quantidade de bits) usada para gerar o bloco codificado. Por exemplo, a unidade de predição inter 110 pode determinar, como o modo de predição inter a ser usado para realizar predição inter no bloco de imagem atual, um modo de predição inter que tem custos mais baixos de distorção de taxa e que deve ser usado para codificar o bloco de imagem atual. A seguir se descreve em detalhe um processo de codificação preditivo inter, e, em particular, um processo de predizer informações de movimento de um ou mais sub-blocos (os quais podem ser especificamente cada sub-bloco ou todos os sub-blocos) em um bloco de imagem atual em um modo afim (por exemplo, um modo de predição de vetor de movimento antecipada com base em transformação afim ou um modo de predição de fusão com base em transformação afim) nesse pedido. Em outras palavras, a seguir se descreve em detalhe um processo de predição de vetor de movimento com base em um modelo de movimento, por exemplo, um modelo afim de 4 parâmetros ou um modelo afim de 6 parâmetros.
[0107] A unidade de predição inter 110 é configurada para predizer as informações de movimento (por exemplo, um vetor de movimento) do um ou mais sub-blocos no bloco de imagem atual com base no modo de predição inter determinado, e obter ou gerar um bloco de predição do bloco de imagem atual usando-se as informações de movimento (por exemplo, o vetor de movimento) do um ou mais sub-blocos no bloco de imagem atual. A unidade de predição inter 110 pode localizar, em uma imagem de referência em uma lista de imagem de referência, o bloco de predição para o qual o vetor de movimento aponta. A unidade de predição inter 110 pode adicionalmente gerar um elemento de sintaxe associado a um bloco de imagem e uma fatia de vídeo, de modo que um decodificador de vídeo 200 use o elemento de sintaxe para decodificar o bloco de imagem da fatia de vídeo. Alternativamente, em um exemplo, a unidade de predição inter 110 realiza um processo de compensação de movimento usando- se informações de movimento de cada sub-bloco, para gerar um bloco de predição de cada sub-bloco, de modo a obter um bloco de predição do bloco de imagem atual. Deve ser entendido que a unidade de predição inter 110 no presente documento especificamente inclui uma unidade de estimativa de movimento 111 e uma unidade de compensação de movimento 112. A unidade de estimativa de movimento 111 é configurada para realizar um processo de estimativa de movimento (Motion estimation, ME), e a unidade de compensação de movimento 112 é configurada para realizar um processo de compensação de movimento (Motion compensation, MC).
[0108] Especificamente, depois de selecionar o modo de predição inter para o bloco de imagem atual, a unidade de predição inter 110 pode fornecer, para a unidade de codificação de entropia 103, informações indicando o modo de predição inter selecionado do bloco de imagem atual, de modo que a unidade de codificação de entropia 103 codifique as informações indicando o modo de predição inter selecionado. A unidade de predição intra 109 pode realizar predição intra no bloco de imagem atual. Especificamente, a unidade de predição intra 109 pode determinar um modo de predição intra a ser usado para codificar o bloco atual. Por exemplo, a unidade de predição intra 109 pode calcular valores de distorção de taxa de vários modos de predição intra a serem testados através de análise de distorção de taxa, e selecionar um modo de predição intra com uma característica de distorção de taxa ideal a partir dos modos a serem testados. Em qualquer caso, depois de selecionar o modo de predição intra para o bloco de imagem, a unidade de predição intra 109 pode fornecer, para a unidade de codificação de entropia 103, informações indicando o modo de predição intra do bloco de imagem atual selecionado, de modo que a unidade de codificação de entropia 103 codifique as informações indicando o modo de predição intra selecionado.
[0109] Depois que a unidade de processamento de predição 108 gera o bloco de predição do bloco de imagem atual através de predição inter e predição intra, o codificador de vídeo 100 subtrai o bloco de predição do bloco de imagem a ser codificado atual para formar um bloco residual de imagem. A unidade de soma 114 representa um ou mais componentes que realizam a operação de subtração. Dados de vídeo residuais no bloco residual podem ser incluídos em um ou mais TUs, e usados pela unidade de transformada 101. A unidade de transformada 101 transforma os dados de vídeo residuais em um coeficiente de transformada residual através de uma transformada tal como transformada discreta de cosseno (DCT) ou transformada conceitualmente similar. A unidade de transformada 101 pode transformar os dados de vídeo residuais de um domínio de valor de amostra para um domínio de transformada, por exemplo, um domínio de frequência.
[0110] A unidade de transformada 101 pode enviar os coeficientes de transformada obtidos para a unidade de quantização 102. A unidade de quantização 102 quantiza o coeficiente de transformada para reduzir adicionalmente uma taxa de bits. Em alguns exemplos, a unidade de quantização 102 pode adicionalmente verificar uma matriz incluindo um coeficiente de transformada quantizado. Alternativamente, a unidade de codificação de entropia 103 pode realizar a verificação.
[0111] Depois da quantização, a unidade de codificação de entropia
103 realiza codificação de entropia no coeficiente de transformada quantizado. Por exemplo, a unidade de codificação de entropia 103 pode realizar codificação de comprimento variável adaptável a contexto (CAVLC), codificação aritmética binária adaptável a contexto (CABAC), codificação aritmética binária adaptável a contexto com base na sintaxe (SBAC), codificação de entropia de partição de intervalo de probabilidade (PIPE), ou um outro método ou tecnologia de codificação de entropia. Depois que a unidade de codificação de entropia 103 realiza codificação de entropia, o fluxo de bits codificado pode ser transmitido para o decodificador de vídeo 200, ou arquivado para transmissão subsequente ou para ser recuperado pelo decodificador de vídeo 200. A unidade de codificação de entropia 103 pode adicionalmente realizar codificação de entropia em um elemento de sintaxe do bloco de imagem a ser codificado atual.
[0112] A unidade de quantização inversa 104 e a unidade de transformada inversa 105 respectivamente aplicam quantização inversa e transformada inversa, para reconstruir o bloco residual em um domínio de amostra, por exemplo, para uso subsequente como um bloco de referência de uma imagem de referência. A unidade de soma 113 adiciona o bloco residual reconstruído ao bloco de predição gerado pela unidade de predição inter 110 ou pela unidade de predição intra 109, para gerar um bloco de imagem reconstruído. A unidade de filtro 106 é aplicável ao bloco de imagem reconstruído para reduzir distorção tal como artefatos de bloqueio (artefatos de bloquear, block artifacts). Então, o bloco de imagem reconstruído é armazenado como o bloco de referência no buffer de imagem decodificada 107, e pode ser usado como o bloco de referência pela unidade de predição inter 110 para realizar predição inter em um bloco em um quadro de vídeo ou imagem subsequente.
[0113] Deve ser entendido que outras variantes estruturais do codificador de vídeo 100 podem ser usadas para codificar um fluxo de vídeo. Por exemplo, para alguns blocos de imagem ou quadros de imagem, o codificador de vídeo 100 pode diretamente quantizar um sinal residual. Nesse caso, processamento pela unidade de transformada 101 e pela unidade de transformada inversa 105 não é exigido. Alternativamente, para alguns blocos de imagem ou quadros de imagem, o codificador de vídeo 100 não gera dados residuais. Nesse caso, processamento pela unidade de transformada 101, pela unidade de quantização 102, pela unidade de quantização inversa 104, e pela unidade de transformada inversa 105 não é exigido. Alternativamente, o codificador de vídeo 100 pode armazenar diretamente o bloco de imagem reconstruído como o bloco de referência, e processamento pela unidade de filtro 106 não é exigido. Alternativamente, a unidade de quantização 102 e a unidade de quantização inversa 104 no codificador de vídeo 100 podem ser combinadas. A unidade de filtro loop é opcional. Além disso, para codificação de compactação sem perda, a unidade de transformada 101, a unidade de quantização 102, a unidade de quantização inversa 104, e a unidade de transformada inversa 105 são opcionais. Deve ser entendido que, em diferentes cenários de aplicação, a unidade de predição inter e a unidade de predição intra podem ser seletivamente habilitadas. Nessa solução, a unidade de predição inter é habilitada.
[0114] A Figura 2B é um diagrama de blocos de um decodificador de vídeo 200 exemplificativo de acordo com uma modalidade desse pedido. Em um exemplo na Figura 2B, o decodificador de vídeo 200 inclui uma unidade de decodificação de entropia 203, uma unidade de processamento de predição 208, uma unidade de quantização inversa 204, uma unidade de transformada inversa 205, uma unidade de soma 211, uma unidade de filtro 206, e um buffer de imagem decodificada 207. A unidade de processamento de predição 208 pode incluir uma unidade de compensação de movimento (também referida como uma unidade de predição inter) 210 e uma unidade de predição intra 209. Em alguns exemplos, o decodificador de vídeo 200 pode realizar um processo de decodificação que é substancialmente inverso ao processo de codificação descrito com respeito ao codificador de vídeo 100 na Figura 2A.
[0115] Durante a decodificação, o decodificador de vídeo 200 recebe, a partir do codificador de vídeo 100, um fluxo de bits de vídeo codificados que representa um bloco de imagem de uma fatia de vídeo codificado e um elemento de sintaxe associado. O decodificador de vídeo 200 pode receber dados de vídeo a partir de uma entidade de rede 42, e opcionalmente, pode adicionalmente armazenar os dados de vídeo em uma unidade de armazenamento de dados de vídeo (a qual não é mostrada na figura). A unidade de armazenamento de dados de vídeo pode armazenar dados de vídeo, tais como o fluxo de bits de vídeo codificados, que devem ser decodificados por um componente do decodificador de vídeo 200. Os dados de vídeo armazenados na unidade de armazenamento de dados de vídeo podem ser obtidos, por exemplo, a partir de uma fonte de vídeo local tal como um aparelho de armazenamento 40 ou uma câmera através de comunicação por rede com fio ou sem fio dos dados de vídeo, ou acessando- se uma mídia de armazenamento de dados físico. A unidade de armazenamento de dados de vídeo pode ser usada como um buffer de imagem decodificada (DPB) configurado para armazenar os dados de vídeo codificados que são do fluxo de bits de vídeo codificados. Portanto, embora a unidade de armazenamento de dados de vídeo não seja mostrada na Figura 2B, a unidade de armazenamento de dados de vídeo e o DPB 207 podem ser uma mesma unidade de armazenamento, ou podem ser unidades de armazenamento separadamente dispostas. A unidade de armazenamento de dados de vídeo e o DPB 207 podem, cada um, incluir qualquer um dentre uma pluralidade de aparelhos de unidade de armazenamento, por exemplo, uma memória de acesso aleatório dinâmica (DRAM) incluindo uma DRAM síncrona (SDRAM), uma RAM magnetorresistiva (MRAM), uma RAM resistiva (RRAM) ou um outro tipo de aparelho de unidade de armazenamento. Em vários exemplos, a unidade de armazenamento de dados de vídeo pode ser integrada em um chip juntamente com outros componentes do decodificador de vídeo 200, ou pode ser disposta fora do chip em relação a esses componentes.
[0116] A entidade de rede 42 pode ser, por exemplo, um servidor, um MANE, um editor/dispositivo de colagem de vídeo, ou um outro aparelho configurado para implementar uma ou mais das tecnologias descritas acima. A entidade de rede 42 pode ou não incluir um codificador de vídeo, por exemplo, o codificador de vídeo 100. Antes que a entidade de rede 42 envie o fluxo de bits de vídeo codificados para o decodificador de vídeo 200, a entidade de rede 42 pode implementar uma parte da tecnologia descrita nesse pedido. Em alguns sistemas de decodificação de vídeo, a entidade de rede 42 e o decodificador de vídeo 200 podem ser componentes de aparelhos separados. Em outros casos, funções descritas com respeito à entidade de rede 42 podem ser implementadas por um mesmo aparelho incluindo o decodificador de vídeo 200. Em alguns casos, a entidade de rede 42 pode ser um exemplo do aparelho de armazenamento 40 na Figura 1A.
[0117] A unidade de decodificação de entropia 203 do decodificador de vídeo 200 realiza decodificação de entropia no fluxo de bits para gerar um coeficiente quantizado e alguns elementos de sintaxe. A unidade de decodificação de entropia 203 encaminha os elementos de sintaxe para a unidade de processamento de predição 208. O decodificador de vídeo 200 pode receber elementos de sintaxe/um elemento de sintaxe em um nível de fatia de vídeo e/ou um nível de bloco de imagem.
[0118] Quando a fatia de vídeo é decodificada em uma fatia decodificada intra (I), a unidade de predição intra 209 da unidade de processamento de predição 208 pode gerar um bloco de predição do bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e dados de um bloco decodificado previamente de um quadro ou imagem atual. Quando a fatia de vídeo é decodificada em uma fatia decodificada inter (isto é, B ou P), a unidade de predição inter 210 da unidade de processamento de predição 208 pode determinar, com base no elemento de sintaxe recebido a partir da unidade de decodificação de entropia 203, um modo de predição inter a ser usado para decodificar um bloco de imagem atual da fatia de vídeo atual, e decodificar (por exemplo, realizar predição inter) o bloco de imagem atual com base no modo de predição inter determinado. Especificamente, informações de movimento do bloco de imagem atual ou um sub-bloco do bloco de imagem atual da fatia de vídeo atual são preditos com base no modo de predição inter (por exemplo, um modo de predição inter especificado por um elemento de sintaxe ou um modo de predição inter padrão). Desse modo, um bloco de predição do sub-bloco do bloco de imagem atual ou um bloco de predição do bloco de imagem atual é obtido ou gerado usando-se as informações de movimento preditas do bloco de imagem atual ou do sub- bloco do bloco de imagem atual em um processo de compensação de movimento. As informações de movimento no presente documento podem incluir informações de imagem de referência e um vetor de movimento. As informações de imagem de referência podem incluir, porém, sem limitação, informações de predição unidirecional/bidirecional, um número de lista de imagem de referência, e um índice de imagem de referência correspondente a uma lista de imagem de referência. Para predição inter, o bloco de predição pode ser gerado a partir de uma dentre imagem de referência em uma dentre listas de imagens de referências. O decodificador de vídeo 200 pode construir listas de imagem de referência, isto é, uma lista 0 e uma lista 1, com base em imagens de referência armazenadas no DPB 207. Um índice de quadro de referência da imagem atual pode ser incluído em uma dentre a lista de quadro de referência 0 e a lista de quadro de referência 1 ou em ambas as mesmas. Deve ser entendido que a unidade de predição inter 210 no presente documento realiza o processo de compensação de movimento. A seguir se descreve em detalhe um processo de predição inter de predizer informações de movimento de um bloco de imagem atual ou um sub-bloco do bloco de imagem atual usando-se informações de movimento de um bloco de referência em vários novos modos de predição inter. A seguir se descreve em detalhe um processo de predizer informações de movimento de um ou mais sub-blocos (os quais podem ser especificamente cada sub-bloco ou todos os sub-blocos) em um bloco de imagem atual em um modo afim (por exemplo, um modo predição de vetor de movimento antecipada com base em transformação afim ou um modo de predição de fusão com base em transformação afim) nesse pedido. Em outras palavras, a seguir se descreve em detalhe um processo de predição de vetor de movimento com base em um modelo de movimento, por exemplo, um modelo afim de 4 parâmetros ou um modelo afim de 6 parâmetros.
[0119] A unidade de quantização inversa 204 realiza quantização inversa em, isto é, desquantiza, um coeficiente de transformada quantizado fornecido no fluxo de bits e decodificado pela unidade de decodificação de entropia 203. Um processo de quantização inversa pode incluir: determinar um grau de quantização a ser aplicado usando-se um parâmetro de quantização calculado pelo codificador de vídeo 100 para cada bloco de imagem na fatia de vídeo, e similarmente determinar um grau de quantização inversa a ser aplicado. A unidade de transformada inversa 205 aplica transformada inversa, por exemplo, DCT inversa, transformada inteira inversa, ou um processo de transformada inversa conceitualmente similar, ao coeficiente de transformada, para gerar um bloco residual em um domínio de amostra.
[0120] Depois que a unidade de predição inter 210 gera o bloco de predição usado para o bloco de imagem atual ou o sub-bloco do bloco de imagem atual, o decodificador de vídeo 200 soma o bloco residual a partir da unidade de transformada inversa 205 e o correspondente bloco de predição gerado pela unidade de predição inter 210, para obter um bloco reconstruído, isto é, um bloco de imagem decodificada. A unidade de soma 211 representa um componente que realiza a operação de soma. Quando necessário, uma unidade de filtro loop (na ou depois de um loop de decodificação) pode ser adicionalmente usada para suavizar amostras, ou a qualidade de vídeo pode ser aperfeiçoada de uma outra maneira. A unidade de filtro 206 pode representar uma ou mais unidades de filtro loop, por exemplo, uma unidade de filtro de desbloqueio, uma unidade de filtro loop adaptável (ALF), e uma unidade de filtro de desvio adaptável de amostra (SAO). Embora a unidade de filtro 206 seja mostrada como uma unidade de filtro in-loop na Figura 2B, em uma outra implantação, a unidade de filtro 206 pode ser implementada como uma unidade de filtro loop posterior. Em um exemplo, a unidade de filtro 206 é aplicável a reconstrução de bloco para reduzir distorção de bloco, e esse resultado é emitido como um fluxo de vídeo decodificado. Além disso, um bloco de imagem decodificada em um dado quadro ou imagem pode ser adicionalmente armazenado no buffer de imagem decodificada 207, e o buffer de imagem decodificada 207 armazena uma imagem de referência usada para e compensação de movimento. O buffer de imagem decodificada 207 pode ser uma parte de uma unidade de armazenamento, e pode adicionalmente armazenar um vídeo decodificado para subsequente apresentação em um aparelho de exibição (por exemplo, o aparelho de exibição 220 na Figura 1A), ou pode ser separado de tal unidade de armazenamento.
[0121] Deve ser entendido que outras variantes estruturais do decodificador de vídeo 200 podem ser usadas para decodificar o fluxo de bits de vídeo codificados. Por exemplo, o decodificador de vídeo 200 pode gerar um fluxo de vídeo emitido sem processamento pela unidade de filtro 206. Alternativamente, para alguns blocos de imagem ou quadros de imagem, a unidade de decodificação de entropia 203 do decodificador de vídeo 200 não obtém um coeficiente quantizado através de decodificação. Nesse caso, processamento pela unidade de quantização inversa 204 e pela unidade de transformada inversa 205 não é exigido. A unidade de filtro loop é opcional. Além disso, para compactação sem perda, a unidade de quantização inversa 204 e a unidade de transformada inversa 205 são opcionais. Deve ser entendido que, em diferentes cenários de aplicação, a unidade de predição inter e a unidade de predição intra podem ser seletivamente habilitadas. Nessa solução, a unidade de predição inter é habilitada.
[0122] A Figura 5A é um diagrama esquemático exemplificativo de informações de movimento de um bloco de imagem atual 600 e um bloco de referência de acordo com uma modalidade desse pedido.
Conforme mostrado na Figura 5A, W e H são a largura e a altura do bloco de imagem atual 600 e a largura e a altura de um bloco colocalizado 600' do bloco de imagem atual 600. Blocos de referência do bloco de imagem atual 600 incluem um bloco vizinho espacialmente acima do bloco de imagem atual 600 e um bloco vizinho espacialmente à esquerda do bloco de imagem atual 600, e um bloco vizinho espacialmente abaixo do bloco colocalizado 600' e um bloco vizinho espacialmente à direita do bloco colocalizado 600'. O bloco colocalizado 600' é um bloco de imagem que está em uma imagem de referência e que tem um mesmo tamanho, um mesmo formato, e mesmas coordenadas que o bloco de imagem atual 600. Deve ser notado que não há informações de movimento de um bloco vizinho espacialmente abaixo do bloco de imagem atual e um bloco vizinho espacialmente à direita do bloco de imagem atual, os quais não são codificados.
Deve ser entendido que o bloco de imagem atual 600 e o bloco colocalizado 600' podem ter qualquer tamanho de bloco.
Por exemplo, o bloco de imagem atual 600 e o bloco colocalizado 600' podem incluir, porém, sem limitação, amostras 16 x 16, amostras 32 x 32, amostras 32 x 16, amostras 16 x 32, ou semelhantes.
Conforme descrito acima, cada quadro de imagem pode ser partido em blocos de imagem para codificação.
Esses blocos de imagem podem ser adicionalmente partidos em blocos menores.
Por exemplo, o bloco de imagem atual 600 e o bloco colocalizado 600' podem ser partidos em uma pluralidade de sub-blocos M x N.
Em outras palavras, um tamanho de cada sub- bloco é de M x N amostras.
Além disso, um tamanho de cada bloco de referência é também de M x N amostras, isto é, é igual ao tamanho do sub-bloco do bloco de imagem atual.
As coordenadas na Figura 5A são medidas em um bloco M x N. "M x N" e "M multiplicado por N" podem ser usados alternadamente para se referir a um tamanho de amostra de um bloco de imagem em uma dimensão horizontal e uma dimensão vertical.
Em outras palavras, existem M amostras em uma direção horizontal e N amostras em uma direção vertical, onde M e N representam valores em número inteiro não negativo.
Além disso, em um bloco, uma quantidade de amostras na direção horizontal e uma quantidade de amostras na direção vertical podem não ser necessariamente as mesmas.
Por exemplo, M = N = 4 no presente documento.
Certamente, o tamanho do sub- bloco do bloco de imagem atual e o tamanho do bloco de referência podem alternativamente ser amostras 8 x 8, amostras 8 x 4, amostras 4 x 8, ou um que seja o menor tamanho de bloco de predição. Além disso, o bloco de imagem descrito nesse pedido pode ser entendido como, porém, sem limitação, uma unidade de predição (prediction unit, PU), uma unidade de codificação (codification unit, UC), uma unidade de transformada (transform unit, TU), ou semelhantes. De acordo com estipulações em diferentes padrões de codificação de compactação de vídeo, a UC pode incluir uma ou mais unidades de predição PUs, ou um tamanho da PU é igual a um tamanho da UC. O bloco de imagem pode ter um tamanho fixo ou variável, e o tamanho pode variar com diferentes padrões de codificação de compactação de vídeo. Além disso, o bloco de imagem atual é um bloco de imagem a ser codificado ou a ser decodificado atual, por exemplo, uma unidade de predição a ser codificada ou a ser decodificada.
[0123] Em um exemplo, se cada bloco vizinho espacialmente à esquerda do bloco de imagem atual 600 está ou não disponível pode ser determinado sequencialmente ao longo de uma direção 1, e se cada bloco vizinho espacialmente acima do bloco de imagem atual 600 está ou não disponível pode ser determinado sequencialmente ao longo de uma direção 2. Por exemplo, é determinado se um bloco vizinho (também referido como um bloco de referência, onde "bloco vizinho" e "bloco de referência" podem ser alternadamente usados) está ou não codificado inter, e o bloco vizinho está disponível se o bloco vizinho existe e está codificado inter, ou o bloco vizinho está indisponível se o bloco vizinho não existe ou está codificado intra. Se um bloco vizinho está codificado intra, informações de movimento de um outro bloco de referência vizinho são copiadas como informações de movimento do bloco vizinho. Se o bloco vizinho espacialmente abaixo do bloco colocalizado 600' e o bloco vizinho espacialmente à direita do bloco colocalizado 600' estão disponíveis é detectado usando-se um método similar, e detalhes não são descritos no presente documento.
[0124] Além disso, se um tamanho de um bloco de referência disponível e o tamanho do sub-bloco do bloco de imagem atual são 4 x 4, informações de movimento do bloco de referência disponível podem ser conseguidas diretamente. Se um tamanho de um bloco de referência disponível é de, por exemplo, 8 x 4 ou 8 x 8, informações de movimento de um bloco 4 x 4 de centro do bloco de referência disponível podem ser conseguidas e usadas como informações de movimento do bloco de referência disponível. As coordenadas do vértice superior esquerdo do bloco 4 x 4 de centro em relação ao vértice superior esquerdo do bloco de referência são ((W/4)/2 x 4, (H/4)/2 x 4). Uma operação de divisão no presente documento é uma operação de divisão exata. Se M = 8, e N = 4, as coordenadas do vértice superior esquerdo do bloco 4 x 4 de centro em relação ao vértice superior esquerdo do bloco de referência são (4, 0). Opcionalmente, informações de movimento de um bloco 4 x 4 superior esquerdo do bloco de referência podem ser alternativamente conseguidas e usadas como informações de movimento do bloco de referência disponível. No entanto, esse pedido não é limitado às mesmas.
[0125] Para facilitar a descrição, a seguir se usa um sub-bloco para representar um sub-bloco M x N e se usa um bloco vizinho para representar um bloco M x N vizinho para descrição.
[0126] Predição inter é uma importante etapa nas modalidades desse pedido. A partir de uma perspectiva de um lado de decodificador, predição inter é buscar uma imagem reconstruída para um bloco de referência pareado para um bloco de codificação atual em uma imagem atual. Conforme mostrado na Figura 5B, um valor de amostra de uma amostra em um bloco de referência (por exemplo, um bloco de referência Fr1 ou um bloco de referência Fr2) é usado como informações preditas ou um valor predito ("informações" e "valor" não são distinguidos abaixo) de um valor de amostra de uma amostra em um bloco de codificação atual Fc. Esse processo é referido como estimativa de movimento ME. Além disso, informações de movimento do bloco de codificação atual são transmitidas. A partir da perspectiva do lado de decodificador, informações de movimento precisam ser obtidas através de análise durante predição inter, um bloco de referência é determinado na imagem reconstruída com base nas informações de movimento obtidas, e valores de amostra de amostras no bloco são usados como as informações preditas. Esse processo é referido como compensação de movimento MC. Informações reconstruídas podem ser obtidas combinando-se as informações preditas e informações residuais e realizar uma operação de filtro com informações combinadas. Uma ideia nesse pedido pode ser usada em HEVC, ou pode ser usado em uma outra codificação de vídeo/decodificação padrão. A seguir se descreve um possível caso de um modo de predição inter em um lado de codificador usando-se um exemplo no qual a ideia é usada em HEVC. Um possível caso de um modo de predição inter no lado de decodificador é similar e, portanto, nenhuma descrição adicional é fornecida.
[0127] Em HEVC, existe um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP) e um modo de fusão (Merge). A seguir se descreve separadamente os dois modos.
[0128] No modo AMVP, uma lista de vetores de movimento candidatos afins é primeiro construída usando-se informações de movimento de um bloco codificado que é espacialmente ou temporalmente vizinho para um bloco de codificação atual, e então um vetor de movimento ideal é determinado a partir da lista de vetores de movimento candidatos afins como um preditor de vetor de movimento (Motion vector predictor, MVP) do bloco de codificação atual. Os custos de distorção de taxa são calculados usando-se uma fórmula (0-1), onde J representa os custos de distorção de taxa, custos RD, SAD é uma soma de diferenças absolutas (Sum of Absolute Differences, SAD) entre valores de amostra preditos e valores de amostra originais que é obtida através de estimativa de movimento realizada usando-se um preditor de vetor de movimento candidato, R é uma taxa de bits, e λ é um multiplicador Lagrange. Um lado de codificador transfere, para um lado de decodificador, um valor de índice do preditor de vetor de movimento selecionado na lista de vetores de movimento candidatos afins e um valor de índice de quadro de referência. Além disso, busca de movimento é realizada em um domínio vizinho centrado em MVP, para obter um vetor de movimento real do bloco de codificação atual. O lado de codificador transfere uma diferença (Vetor de movimento diferencial) entre o MVP e o vetor de movimento real para o lado de decodificador. J = SAD + λR (0-1)
[0129] No modo de fusão, uma lista de informações de movimento candidatas é primeiro construída usando-se informações de movimento de um bloco codificado que é espacialmente ou temporalmente vizinho de um bloco de codificação atual, informações de movimento ideais são então determinadas a partir da lista de informações de movimento candidatas com base em custos de distorção de taxa e são usadas como informações de movimento do bloco de codificação atual, e um valor de índice (denotado como um índice de fusão, o mesmo abaixo) de uma localização das informações de movimento ideais na lista de informações de movimento candidatas é transferido para um lado de decodificador. Informações de movimento candidatas espaciais e temporais do bloco de codificação atual são mostradas na Figura 5C. As informações de movimento candidatas espaciais são a partir de cinco blocos vizinhos espacialmente (A0, A1, B0, B1 e B2). Se um bloco vizinho está indisponível ou está em um modo de codificação intra, o bloco vizinho não é adicionado à lista de informações de movimento candidatas. As informações de movimento candidatas temporais do bloco de codificação atual são obtidas depois que um MV de um bloco em uma correspondente localização em um quadro de referência é escalonado com base em contagens de ordem de imagem (Picture order count, POC) do quadro de referência e um quadro atual. Primeiro é determinado se um bloco em uma localização T no quadro de referência está disponível. Se o bloco não está disponível, um bloco em uma localização C é selecionado.
[0130] Em predição inter em HEVC, todas as amostras em um bloco de codificação atual usam as mesmas informações de movimento, e então compensação de movimento é realizada com base nas informações de movimento, para obter preditores das amostras do bloco de codificação. No entanto, no bloco de codificação atual, nem todas as amostras têm um mesmo movimento característico. Usar as mesmas informações de movimento pode resultar em compensação de movimento predição não acurada e mais informações residuais.
[0131] Nos padrões de codificação de vídeo existentes, estimativa de movimento de pareamento de bloco com base em um modelo de movimento translacional é usada, e é assumido que o movimento de todas as amostras em um bloco é consistente. No entanto, no mundo real, existe uma variedade de movimentos. Muitos objetos, por exemplo, um objeto que gira, uma roda gigante que gira em diferentes direções, fogos de artifício, e alguns dublês em filmes, não estão em movimento translacional. Para esses objetos em movimento, especialmente aqueles em um cenário UGC, se uma tecnologia de compensação de movimento de bloco com base no modelo de movimento translacional nos padrões de codificação existentes é usada para codificação, a eficiência de codificação é muito afetada. Portanto, estudos em um modelo de movimento não translacional foram realizados na indústria e pela Huawei. Em particular, estudos profundos foram realizados em um modelo de movimento com base em transformação para aperfeiçoar adicionalmente a eficiência de codificação.
[0132] Em predição com base em modelo de movimento não translacional, um mesmo modelo de movimento é usado em um lado de codificador e um lado de decodificador para deduzir informações de movimento de cada subunidade de compensação de movimento em um bloco de codificação atual, subsequente compensação de movimento é realizada com base nas informações de movimento da subunidade de compensação de movimento para obter um bloco de predição, desse modo aperfeiçoando eficiência de predição. Modelos de movimento comumente usados incluem um modelo afim de 6 parâmetros e um modelo de transformação afim de 4 parâmetros.
[0133] O modelo de transformação afim de 4 parâmetros é mostrado como uma fórmula (0-2): 𝑣𝑣𝑣𝑣 = 𝑎𝑎 + 𝑎𝑎 𝑥𝑥 + 𝑎𝑎 𝑦𝑦 �𝑣𝑣𝑣𝑣 = 𝑎𝑎1 − 𝑎𝑎3 𝑥𝑥 + 𝑎𝑎4 𝑦𝑦 (0-2) 2 4 3
[0134] O modelo de transformação afim de 4 parâmetros pode ser representado por vetores de movimento de duas amostras e coordenadas das amostras em relação a uma amostra superior esquerdo de um bloco de codificação atual. Uma amostra usada para representar um parâmetro de modelo de movimento é denotada como um ponto de controle. Se uma amostra em um vértice superior esquerdo (0, 0) e uma amostra em um vértice superior direito (W, 0) são usadas como pontos de controle, coordenadas de localização (x0 , y0 ) e um vetor de movimento (vx0 , vy0 ) que são de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização (x1 , y1 ) e um vetor de movimento (vx1 , vy1 ) que são de um ponto de controle superior direito do bloco de codificação atual são determinados primeiro, e então informações de movimento de cada subunidade de compensação de movimento no bloco de codificação atual são derivadas de acordo com uma fórmula (0-3), onde (x, y) representa coordenadas da subunidade de compensação de movimento em relação à amostra superior esquerdo do bloco de codificação atual, e W é a largura do bloco de codificação atual. 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣 = 𝑥𝑥 −𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝑊𝑊 � 𝑣𝑣𝑣𝑣 −𝑣𝑣𝑣𝑣 𝑣𝑣𝑣𝑣 −𝑣𝑣𝑣𝑣 (0-3) 𝑣𝑣𝑣𝑣 = 1 0 𝑥𝑥 + 1 0 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝑊𝑊
[0135] O modelo de transformação afim de 6 parâmetros é mostrado como uma fórmula (0-4): 𝑣𝑣𝑣𝑣 = 𝑎𝑎 + 𝑎𝑎 𝑥𝑥 + 𝑎𝑎 𝑦𝑦 �𝑣𝑣𝑣𝑣 = 𝑎𝑎1 + 𝑎𝑎3 𝑥𝑥 + 𝑎𝑎4 𝑦𝑦 (0-4) 2 5 6
[0136] O modelo de transformação afim de 6 parâmetros pode ser representado por vetores de movimento de três amostras e coordenadas das amostras em relação a uma amostra superior esquerdo de um bloco de codificação atual. Se uma amostra em um vértice superior esquerdo (0, 0), uma amostra em um vértice superior direito (W, 0), e uma amostra em um vértice inferior esquerdo (0, H) são usadas como pontos de controle, coordenadas de localização (x0 , y0 ) e um vetor de movimento (vx0 , vy0 ) que são de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização (x1 , y1 ) e um vetor de movimento (vx1 , vy1 ) que são de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização (x2 , y2 ) e um vetor de movimento (vx2 , vy2 ) que são de um ponto de controle inferior esquerdo do bloco de codificação atual são determinados primeiro, e então informações de movimento de cada subunidade de compensação de movimento no bloco de codificação atual são derivadas de acordo com uma fórmula (0-5), onde (x, y) representa coordenadas da subunidade de compensação de movimento em relação à amostra superior esquerdo do bloco de codificação atual, e W e H são respectivamente a largura e a altura do bloco de codificação atual. 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣2 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣 = 𝑥𝑥 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝐻𝐻 � 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣2 −𝑣𝑣𝑣𝑣0 (0-5) 𝑣𝑣𝑣𝑣 = 𝑥𝑥 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝐻𝐻
[0137] Um modelo bilinear de 8 parâmetros é mostrado como uma fórmula (0-6): 𝑣𝑣𝑣𝑣 = 𝑎𝑎 + 𝑎𝑎 𝑥𝑥 + 𝑎𝑎 𝑦𝑦 + 𝑎𝑎 𝑥𝑥𝑥𝑥 �𝑣𝑣𝑣𝑣 = 𝑎𝑎1 + 𝑎𝑎3 𝑥𝑥 + 𝑎𝑎4 𝑦𝑦 + 𝑎𝑎7 𝑥𝑥𝑥𝑥 (0-6) 2 5 6 8
[0138] O modelo bilinear de 8 parâmetros pode ser representado por vetores de movimento de quatro amostras e coordenadas das amostras em relação a uma amostra superior esquerdo de um bloco de codificação atual. Se uma amostra em um vértice superior esquerdo (0, 0), uma amostra em um vértice superior direito (W, 0), uma amostra em um vértice inferior esquerdo (0, H), e uma amostra em um vértice inferior direito (W, H) são usadas como pontos de controle, coordenadas de localização (x0 , y0 ) e um vetor de movimento (vx0 , vy0 ) que são de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização (x1 , y1 ) e um vetor de movimento (vx1 , vy1 ) que são de um ponto de controle superior direito do bloco de codificação atual, coordenadas de localização (x2 , y2 ) e um vetor de movimento (vx2 , vy2 ) que são de um ponto de controle inferior esquerdo do bloco de codificação atual, e coordenadas de localização (x3 , y3 ) e um vetor de movimento (vx3 , vy3 ) que são de um ponto de controle inferior direito do bloco de codificação atual são determinadas primeiro, e então informações de movimento de cada subunidade de compensação de movimento no bloco de codificação atual são derivadas de acordo com uma fórmula (0-7), onde (x, y) é coordenadas da subunidade de compensação de movimento em relação à amostra superior esquerdo do bloco de codificação atual, e W e H são respectivamente a largura e a altura do bloco de codificação atual. 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣2 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣3 +𝑣𝑣𝑣𝑣0 −𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑥𝑥2 𝑣𝑣𝑥𝑥 = 𝑥𝑥 + 𝑦𝑦 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝐻𝐻 𝑊𝑊𝑊𝑊 � 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣2 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣3 +𝑣𝑣𝑣𝑣0 −𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣2 (0-7) 𝑣𝑣𝑦𝑦 = 𝑥𝑥 + 𝑦𝑦 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝐻𝐻 𝑊𝑊𝑊𝑊
[0139] Um bloco de codificação que é predito usando-se um modelo de movimento não translacional é referido como um bloco de codificação não translacional.
[0140] Normalmente, informações de movimento de um ponto de controle de um bloco de codificação não translacional podem ser obtidas usando- se um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP) com base em transformação afim ou um modo de fusão (Merge) com base em transformação afim.
[0141] A seguir se usa informações de movimento de dois pontos de controle no modelo de transformação afim de 4 parâmetros como um exemplo para descrever separadamente, a partir de uma perspectiva de um lado de codificador e uma perspectiva de um lado de decodificador, como obter um vetor de movimento de um ponto de controle de um bloco de codificação atual ou um bloco de codificação atual.
[0142] (1) Construir uma tupla de 2 de vetor de movimento candidato.
[0143] Vetores de movimento de um ponto de controle superior esquerdo e um ponto de controle superior direito do bloco de codificação atual são determinados com base em informações de movimento de blocos codificados vizinhos do bloco de codificação atual. Conforme mostrado na Figura 7B, vetores de movimento de blocos codificados vizinhos superiores esquerdos A, B e C são usados como vetores de movimento candidatos para o vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, e vetores de movimento de superior direito blocos codificados vizinhos D e E são usados como vetores de movimento candidatos para o vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Os vetores de movimento candidatos do ponto de controle superior esquerdo e os vetores de movimento candidatos do ponto de controle superior direito são combinados para constituir uma fila de tuplas de 2 de vetor de movimento candidato dos dois pontos de controle. {(𝑣𝑣0𝐴𝐴 , 𝑣𝑣1𝐷𝐷 ), (𝑣𝑣0𝐴𝐴 , 𝑣𝑣1𝐸𝐸 ), (𝑣𝑣0𝐵𝐵 , 𝑣𝑣1𝐷𝐷 ), (𝑣𝑣0𝐵𝐵 , 𝑣𝑣1𝐸𝐸 ), (𝑣𝑣0𝐶𝐶 , 𝑣𝑣1𝐷𝐷 ), (𝑣𝑣0𝐶𝐶 , 𝑣𝑣1𝐸𝐸 )}.
[0144] No presente documento, 𝑣𝑣0 representa um vetor de movimento candidato do ponto de controle superior esquerdo, e 𝑣𝑣1 representa um vetor de movimento candidato do ponto de controle superior direito. Localizações das tuplas de 2 na fila são indexadas, e valores de índice são sequencialmente 0, 1, 2, 3, 4, e 5.
[0145] Opcionalmente, a fila de tupla de 2 de vetor de movimento candidato é removida e classificada de acordo com uma regra particular, e pode ser truncada ou preenchida até uma quantidade particular.
[0146] (2) Determinar uma tupla de 2 de vetor de movimento candidato ideal.
[0147] No lado de codificador, um vetor de movimento de cada subunidade de compensação de movimento (uma amostra ou um bloco de amostra 𝑵𝑵𝟏𝟏 × 𝑵𝑵𝟐𝟐 obtido através de divisão de acordo com um método particular) no bloco de codificação atual é obtido com base em tupla de 2 de cada candidato vetor de movimento de acordo com uma fórmula (3), de modo a obter um valor de amostra em uma localização, em um quadro de referência, para o qual o vetor de movimento de cada subunidade de compensação de movimento aponta. Esse valor de amostra é usado como um preditor para realizar compensação de movimento com base em transformação afim. Médias de diferenças entre valores originais e preditores que são de todas as amostras no bloco de codificação atual são calculadas, e vetores de movimento em uma tupla de 2 de vetor de movimento candidato correspondente a uma média de diferença mínima são selecionados como preditores de vetor de movimento dos dois pontos de controle no bloco de codificação atual. Um índice representando uma localização da tupla de 2 na fila de tupla de 2 de vetor de movimento candidato é codificada em um fluxo de bits e enviado para um decodificador.
[0148] No lado de decodificador, o índice é analisado para obter os preditores de vetor de movimento dos dois pontos de controle.
[0149] (3) Determinar vetores de movimento dos pontos de controle.
[0150] No lado de codificador, os preditores de vetor de movimento dos dois pontos de controle são usados como um ponto de busca inicial para realizar movimento busca dentro de uma faixa de busca específica, para obter os vetores de movimento dos dois pontos de controle. Diferenças entre os vetores de movimento e os preditores de vetor de movimento dos dois pontos de controle são transmitidas para o lado de decodificador.
[0151] No lado de decodificador, os vetores de movimento diferenciais dos dois pontos de controle são analisados e adicionados aos preditores de vetor de movimento, para obter os vetores de movimento dos pontos de controle.
[0152] Deve ser notado que, um método de predição de vetor de movimento com base em modelo de movimento fluxo principal atual inclui: atravessar blocos vizinhos de um bloco de codificação atual em uma ordem de A, B, C, D, e E na Figura 7A (conforme mostrado na Figura 5D, os blocos vizinhos A, B, C, D, e E são distribuídos ao redor de uma CTU 502 na qual o bloco de codificação atual está localizado) para encontrar um bloco de codificação afim e obter um vetor de movimento de um ponto de controle do bloco de codificação afim, construir um modelo de movimento com base em coordenadas de localização e no vetor de movimento do ponto de controle do bloco de codificação afim, e então substituir coordenadas de localização de um ponto de controle do bloco de codificação atual no modelo de movimento, para deduzir um preditor de vetor de movimento do ponto de controle do bloco atual. Especificamente, um ponto de controle superior esquerdo e um ponto de controle superior direito do bloco de codificação afim são usados para construir o modelo de movimento no presente documento (às vezes informações sobre um ponto de controle inferior esquerdo são adicionalmente usadas). A Figura 5D é usada como um exemplo. Se o bloco vizinho E é um bloco de codificação afim vizinho,
o modelo afim é construído usando-se coordenadas de localização e um vetor de movimento ������⃗ vE0 de um ponto de controle superior esquerdo do bloco vizinho vE1 de um ponto de E, coordenadas de localização e um vetor de movimento ������⃗ controle superior direito do bloco vizinho E, e coordenadas de localização e um vetor de movimento v E2 de um ponto de controle inferior esquerdo do bloco ������⃗ vizinho E. Se o bloco vizinho B é um bloco de codificação afim vizinho, o modelo afim é construído usando-se coordenadas de localização e um vetor de movimento ������⃗ vB0 de um ponto de controle superior esquerdo do bloco vizinho B, coordenadas de localização e um vetor de movimento v B1 de um ponto de ������⃗ controle superior direito do bloco vizinho B, e coordenadas de localização e um vetor de movimento v B2 de um ponto de controle inferior esquerdo do bloco ������⃗ vizinho B. No entanto, as coordenadas de localização e os vetores de movimento do ponto de controle superior esquerdo, o ponto de controle superior direito, e o ponto de controle inferior esquerdo do bloco de codificação afim vizinho que são usados em um processo de predição de vetor de movimento precisam todos ser lidos a partir da memória em tempo real, e isso aumenta a pressão de leitura de memória. Nas modalidades desse pedido, com referência a um recurso em que informações (coordenadas de localização e um vetor de movimento) sobre um ponto de controle em uma fronteira superior 501 da CTU 502 na qual o bloco de codificação atual está localizado foram lidas a partir da memória, é descrito como selecionar informações sobre um ponto de controle de um bloco de codificação afim vizinho para construir o modelo afim, para reduzir pressão de leitura de memória. A seguir se fornece separadamente descrições a partir de uma perspectiva de um lado de codificador e uma perspectiva de um lado de decodificador.
[0153] A Figura 6 é um fluxograma de um processo 700 de um método de codificação de acordo com uma modalidade desse pedido. O processo 700 pode ser realizado pelo codificador de vídeo 100, e especificamente, pode ser realizado pela unidade de predição inter (também referida como um preditor inter) 110 e a unidade de codificação de entropia (também referida como um codificador de entropia) 103 do codificador de vídeo 100. O processo 700 é descrito como uma série de etapas ou operações. Deve ser entendido que etapas ou operações do processo 700 podem ser realizadas em várias sequências e/ou simultaneamente, e não são limitadas a uma sequência de execução mostrada na Figura 6. É assumido que um fluxo de dados de vídeo incluindo uma pluralidade de quadro de vídeos está usando o codificador de vídeo. Se um primeiro bloco de codificação afim vizinho está localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima de um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado com base em um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Correspondentes ao processo mostrado na Figura 6, descrições relacionadas são conforme a seguir:
[0154] Etapa S700: O codificador de vídeo determina um modo de predição inter para o bloco de codificação atual.
[0155] Especificamente, o modo de predição inter pode ser um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP), ou pode ser um modo de fusão (Merge).
[0156] Se o modo de predição inter determinado para o bloco de codificação atual é o modo AMVP, as etapas S711 a S713 são realizadas.
[0157] Se o modo de predição inter determinado para o bloco de codificação atual é o modo de fusão, as etapas S721 a S723 são realizadas.
[0158] Modo AMVP:
[0159] Etapa S711: O codificador de vídeo constrói uma lista de preditor de vetor de movimento MVP candidata.
[0160] Especificamente, o codificador de vídeo constrói a lista de preditor de vetor de movimento MVP candidata (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer das seguintes duas maneiras ou uma combinação das duas maneiras. A lista de preditor de vetor de movimento MVP candidata construída pode ser uma lista de preditor de vetor de movimento MVP candidata tríplex ou uma lista de preditor de vetor de movimento MVP candidata de tupla de 2. As duas maneiras são especificamente conforme a seguir:
[0161] Maneira 1: A lista de preditor de vetor de movimento MVP candidata é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0162] Primeiro, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0163] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual com base no vetor de movimento do ponto de controle do primeiro bloco de codificação afim vizinho varia com um modelo de parâmetro do bloco de codificação atual. Portanto, a seguir se fornece descrições para diferentes casos.
[0164] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0165] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima do bloco de codificação atual, vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0166] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento e coordenadas de localização dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0167] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (1) e (2). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) − × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (1) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6 (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) − × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (2) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6
[0168] Nas fórmulas (1) e (2), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0169] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de codificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0170] Nesse caso, nas fórmulas (1) e (2), (x7 − x6 ) é igual a cuW, (𝑣𝑣𝑣𝑣7 , 𝑣𝑣𝑣𝑣7 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 + cuW – 1, y4 + cuH – 1) em uma imagem, e (𝑣𝑣𝑣𝑣6 , 𝑣𝑣𝑣𝑣6 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 , y4 + cuH – 1) na imagem.
[0171] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0172] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. Uma maneira de derivação pode ser conforme a seguir:
[0173] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0174] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0175] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (1), (2), e (3). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥2 − 𝑥𝑥6 ) − × (𝑦𝑦2 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (3) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥2 − 𝑥𝑥6 ) + × (𝑦𝑦2 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6
[0176] As fórmulas (1) e (2) foram descritas acima. Nas fórmulas (1), (2), e (3), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0177] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0178] Maneira 2: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0179] Uma maneira de construir a lista de preditores de vetor de movimento MVP candidatos varia com um modelo de parâmetro do bloco de codificação atual. Detalhes são descritos abaixo.
[0180] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. Uma maneira de derivação pode ser conforme a seguir:
[0181] Vetores de movimento de um vértice superior esquerdo e um vértice superior direito do bloco de codificação atual são estimados com base em informações de movimento de blocos codificados vizinhos do bloco de codificação atual. Conforme mostrado na Figura 7B, primeiramente, vetores de movimento de blocos codificados vizinhos A e/ou B e/ou C do vértice superior esquerdo são usados como vetores de movimento candidatos para o vetor de movimento do vértice superior esquerdo do bloco de codificação atual, e vetores de movimento de blocos codificados vizinhos D e/ou E do vértice superior direito são usados como vetores de movimento candidatos para o vetor de movimento do vértice superior direito do bloco de codificação atual. Um vetor de movimento candidato do vértice superior esquerdo e um vetor de movimento candidato do vértice superior direito podem ser combinados para obter um grupo de preditores de vetor de movimento candidatos. Uma pluralidade de registros obtidos através de combinação dessa maneira pode constituir a lista de preditores de vetor de movimento MVP candidatos.
[0182] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0183] Vetores de movimento de um vértice superior esquerdo, um vértice superior direito, e um vértice inferior esquerdo do bloco de codificação atual são estimados com base em informações de movimento de blocos codificados vizinhos do bloco de codificação atual. Conforme mostrado na Figura 7B, primeiramente, vetores de movimento de blocos codificados vizinhos A e/ou B e/ou C do vértice superior esquerdo são usados como vetores de movimento candidatos para o vetor de movimento do vértice superior esquerdo do bloco de codificação atual, vetores de movimento de blocos codificados vizinhos D e/ou E do vértice superior direito são usados como vetores de movimento candidatos para o vetor de movimento do vértice superior direito do bloco de codificação atual, e vetores de movimento de blocos codificados vizinhos F e/ou G do vértice inferior esquerdo são usados como vetores de movimento candidatos para o vetor de movimento do vértice inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato do vértice superior esquerdo, um vetor de movimento candidato do vértice superior direito, e um vetor de movimento candidato do vértice inferior esquerdo podem ser combinados para obter um grupo de preditores de vetor de movimento candidatos. Uma pluralidade de grupos de preditores de vetor de movimento candidatos obtidos através de combinação dessa maneira pode constituir a lista de preditores de vetor de movimento MVP candidatos.
[0184] Deve ser notado que a lista de preditores de vetor de movimento MVP candidatos pode ser construída usando-se somente os preditores de vetor de movimento candidatos preditos da maneira 1, ou a lista de preditores de vetor de movimento MVP candidatos pode ser construída usando- se somente os preditores de vetor de movimento candidatos preditos da maneira 2, ou a lista de preditores de vetor de movimento MVP candidatos pode ser construída usando-se tanto os preditores de vetor de movimento candidatos preditos da maneira 1 quanto os preditores de vetor de movimento candidatos preditos da maneira 2. Além disso, a lista de preditores de vetor de movimento MVP candidatos pode ser adicionalmente removida e classificada de acordo com uma regra pré-configurada, e então truncada ou preenchida até uma quantidade particular. Quando cada grupo de preditores de vetor de movimento candidatos na lista de preditores de vetor de movimento MVP candidatos inclui preditores de vetor de movimento de três pontos de controle, essa lista de preditores de vetor de movimento MVP candidatos pode ser referida como uma lista tríplex; ou quando cada grupo de preditores de vetor de movimento candidatos na lista de preditores de vetor de movimento MVP candidatos inclui preditores de vetor de movimento de dois pontos de controle, essa lista de preditores de vetor de movimento MVP candidatos pode ser referida como uma lista de tuplas de 2.
[0185] Etapa S712: O codificador de vídeo determina um grupo de vetores de movimento candidatos alvos na lista de preditores de vetor de movimento MVP candidatos de acordo com um critério de custo de distorção de taxa. Especificamente, para cada grupo de vetores de movimento candidatos na lista de preditores de vetor de movimento MVP candidatos, um vetor de movimento de cada sub-bloco do bloco atual é obtido através de cálculo, e a compensação de movimento é realizada para obter um preditor de cada sub- bloco, de modo a obter um preditor do bloco atual. Um grupo de vetores de movimento candidatos com um erro mínimo entre um preditor e um valor original é selecionado como um grupo de preditores de vetor de movimento ideal, isto é, o grupo de vetores de movimento candidatos alvos. Além disso, o grupo de vetores de movimento candidatos alvos determinado é usado como preditores de vetor de movimento candidatos ideais de um grupo de pontos de controle, e o grupo de vetores de movimento candidatos alvos corresponde a um número índice único na lista de preditores de vetor de movimento MVP candidatos.
[0186] Etapa S713: O codificador de vídeo codifica um vetor de movimento diferencial MVD e um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
[0187] Especificamente, o codificador de vídeo pode adicionalmente buscar, dentro de uma faixa de busca predefinida de acordo com o critério de custo de distorção de taxa usando-se o grupo de vetores de movimento candidatos alvos como um ponto de busca inicial, por vetores de movimento que são de um grupo de pontos de controle e que têm custos mais baixos, e então determinar vetores de movimento diferenciais MVDs entre o grupo de vetores de movimento candidatos alvos e os vetores de movimento do grupo de pontos de controle. Por exemplo, se um primeiro grupo de pontos de controle inclui um primeiro ponto de controle e um segundo ponto de controle, um vetor de movimento diferencial MVD entre um vetor de movimento do primeiro ponto de controle e um preditor de vetor de movimento, representado pelo grupo de vetores de movimento candidatos alvos, do primeiro ponto de controle em um grupo de pontos de controle precisa ser determinado, e um vetor de movimento diferencial MVD entre um vetor de movimento do segundo ponto de controle e um preditor de vetor de movimento, representado pelo grupo de vetores de movimento candidatos alvos, de um segundo ponto de controle no grupo de pontos de controle precisa ser determinado.
[0188] Opcionalmente, além das supracitadas etapas S711 a S713, etapas S714 e S715 podem ser adicionalmente realizadas no modo AMVP.
[0189] Etapa S714: O codificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim.
[0190] Especificamente, um novo grupo de vetores de movimento candidatos obtido com base no grupo de vetores de movimento candidatos alvos e o MVD inclui vetores de movimento de dois pontos de controle (o ponto de controle superior esquerdo e o ponto de controle superior direito) ou três pontos de controle (por exemplo, o ponto de controle superior esquerdo, o ponto de controle superior direito, e o ponto de controle inferior esquerdo). Para cada sub- bloco do bloco de codificação atual (um sub-bloco pode ser equivalente a uma unidade de compensação de movimento), informações de movimento de uma amostra a uma localização predefinida em uma unidade de compensação de movimento podem ser usadas para representar informações de movimento de todas as amostras na unidade de compensação de movimento. Se um tamanho da unidade de compensação de movimento é M x N (M é menor ou igual à largura W do bloco de codificação atual, N é menor ou igual à altura H do bloco de codificação atual, e M, N, W, e H são, cada um, um número inteiro positivo e são normalmente uma potência de 2, por exemplo, 4, 8, 16, 32, 64, ou 128), a amostra na localização predefinida pode ser um ponto de centro (M/2, N/2) da unidade de compensação de movimento, uma amostra superior esquerdo (0, 0), uma amostra superior direito (M – 1, 0), ou uma amostra em uma outra localização. A Figura 8A mostra uma unidade de compensação de movimento 4 x 4, e a Figura 8B mostra uma unidade de compensação de movimento 8 x 8. Um ponto de centro de uma unidade de compensação de movimento correspondente é representado por um triângulo.
[0191] Coordenadas de um ponto de centro de uma unidade de compensação de movimento em relação a uma amostra em um vértice superior esquerdo do bloco de codificação atual são calculadas de acordo com uma fórmula (5), onde i é uma iésima unidade de compensação de movimento (da esquerda para a direita) em uma direção horizontal, j é uma jésima unidade de compensação de movimento (de superior a inferior) em uma direção vertical, e (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) representa coordenadas de um ponto de centro de uma (i, j)ésima unidade de compensação de movimento em relação à amostra no ponto de controle superior esquerdo do bloco de codificação atual. Então, com base em um tipo de modelo afim (6 parâmetros ou 4 parâmetros) do bloco de codificação atual, (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) são substituídos em uma fórmula de modelo afim de 6 parâmetros (6-1) ou (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) são substituídos em uma fórmula de modelo afim de 4 parâmetros (6-2) para obter informações de movimento de um ponto de centro de cada unidade de compensação de movimento, e as informações de movimento são usadas como vetores de movimento (𝑣𝑣𝑣𝑣(𝑖𝑖,𝑗𝑗) , 𝑣𝑣𝑣𝑣(𝑖𝑖,𝑗𝑗) ) de todas as amostras na unidade de compensação de movimento.
𝑀𝑀 𝑥𝑥(𝑖𝑖,𝑗𝑗) = 𝑀𝑀 × 𝑖𝑖 + , 𝑖𝑖 = 0,1. . 2 � 𝑁𝑁 (5) 𝑦𝑦(𝑖𝑖,𝑗𝑗) = 𝑁𝑁 × 𝑗𝑗 + , 𝑗𝑗 = 0,1. . 2 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣2 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣 = 𝑥𝑥 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝐻𝐻 � 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣2 −𝑣𝑣𝑣𝑣0 (6-1) 𝑣𝑣𝑣𝑣 = 𝑥𝑥 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝐻𝐻 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣 = 𝑥𝑥 − 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝑊𝑊 � 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 (6-2) 𝑣𝑣𝑣𝑣 = 𝑥𝑥 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝑊𝑊
[0192] Opcionalmente, quando o bloco de codificação atual é um bloco de codificação de 6 parâmetros, e vetores de movimento de um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual e um modelo afim de 6 parâmetros construído usando- se os três pontos de controle, e um vetor de movimento de um sub-bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual e o modelo afim de 6 parâmetros construídos usando-se os três pontos de controle. Por exemplo, o vetor de movimento do sub-bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim de 6 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo- se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim de 6 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de preditores de vetor de movimento MVP candidatos de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0193] Opcionalmente, quando o bloco de codificação atual é um bloco de codificação de 4 parâmetros, e vetores de movimento de um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual e um modelo afim de 4 parâmetros construído usando- se os dois pontos de controle, e um vetor de movimento de um sub-bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual e o modelo afim de 4 parâmetros construído usando-se os dois pontos de controle. Por exemplo, o vetor de movimento do sub-bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim de 4 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo- se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim de 4 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de preditores de vetor de movimento MVP candidatos de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0194] Etapa S715: O codificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco. Por exemplo, um sub-bloco correspondente é encontrado em um quadro de referência com base no vetor de movimento de cada sub-bloco e um índice de quadro de referência, e filtração de interpolação é realizada, para obter o valor de amostra predito de cada sub-bloco.
[0195] Modo de fusão:
[0196] Etapa S721: O codificador de vídeo constrói uma lista de informações de movimento candidatas.
[0197] Especificamente, o codificador de vídeo constrói a lista de informações de movimento candidatas (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em uma das seguintes duas maneiras ou uma combinação das duas maneiras. A lista de informações de movimento candidatas construída é uma lista tríplex de informações de movimento candidatas. As duas maneiras são especificamente conforme a seguir:
[0198] Maneira 1: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0199] Primeiro, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0200] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Os detalhes são conforme a seguir:
[0201] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0202] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0203] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (1), (2), e (3).
[0204] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Uma tupla de 2 de vetor de movimento candidato é formada e é adicionada à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (1) e (2).
[0205] Nas fórmulas (1), (2), e (3), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0206] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0207] Maneira 2: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0208] A seguir se lista duas soluções, as quais são denotadas como uma solução A e uma solução B.
[0209] Solução A: Informações de movimento de dois pontos de controle do bloco de codificação atual são combinadas, para construir um modelo de transformação afim de 4 parâmetros. Os dois pontos de controle são combinados em uma maneira de {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, ou {CP3, CP4}. Por exemplo, um modelo de transformação afim de 4 parâmetros construído usando-se pontos de controle CP1 e CP2 é denotado como (CP1, CP2) Afim.
[0210] Deve ser notado que uma combinação de diferentes pontos de controle pode ser transformada em pontos de controle em uma mesma localização. Por exemplo, um modelo de transformação afim de 4 parâmetros obtido com base em uma combinação {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, ou {CP3, CP4} é transformado para ser representado por pontos de controle {CP1, CP2} ou {CP1, CP2, CP3}. Um método de transformação é conforme a seguir: informações de vetor de movimento e coordenada de um ponto de controle são substituídas em uma fórmula (7), para obter um modelo de parâmetro. Então, informações de coordenação de {CP1, CP2} são substituídas na fórmula, para obter vetores de movimento de {CP1, CP2}. Os vetores de movimento são usados como um grupo de preditores de vetor de movimento candidatos. vx = a + a x + a y �vy = a1 − a3 x + a4 y (7) 2 4 3
[0211] Na fórmula (7), a0 , a1 , a2 , a3 são todos parâmetros no modelo de parâmetro, e (x, y) representam coordenadas de localização.
[0212] Mais diretamente, a transformação pode ser realizada de acordo com as seguintes fórmulas, para obter um grupo de preditores de vetor de movimento representado pelo ponto de controle superior esquerdo e pelo ponto de controle superior direito, e o grupo de preditores de vetor de movimento é adicionado à lista de informações de movimento candidatas.
[0213] A fórmula (8) para transformar {CP1, CP2} em {CP1, CP2, CP3} é conforme a seguir: vy −vy vx2 = − 1 0 H + vx0
W � vx1 −vx0 (8) vy2 = + H + vy0
W
[0214] A fórmula (9) para transformar {CP1, CP3} em {CP1, CP2, CP3} é conforme a seguir: vy −vy vx1 = + 2 0 W + vx0
H � vx2 −vx0 (9) vy1 = − W + vy0
H
[0215] A fórmula (10) para transformar {CP2, CP3} em {CP1, CP2, CP3} é conforme a seguir: 2 vx −vx 1 vy −vy vx0 = W ∗ W − 2 1 H ∗ W + vx1 W∗W+H∗H W∗W+H∗H � vy2 −vy1 vx −vx (10) vy1 = W ∗ W + 2 1 H ∗ W + vy1 W∗W+H∗H W∗W+H∗H
[0216] A fórmula (11) para transformar {CP1, CP4} em {CP1, CP2, CP3} é conforme a seguir: 3 vx −vx 0 vy −vy vx1 = W ∗ W + 3 0 H ∗ W + vx0 W∗W+H∗H W∗W+H∗H � vy3 −vy0 vx −vx (11) vy1 = W ∗ W − 3 0 H ∗ W + vy0 W∗W+H∗H W∗W+H∗H
[0217] A fórmula (12) para transformar {CP2, CP4} em {CP1, CP2, CP3} é conforme a seguir: vy −vy vx0 = − 3 1 W + vx1
H � vx3 −vx1 (12) vy0 = + W + vy1
H
[0218] A fórmula (13) para transformar {CP3, CP4} em {CP1, CP2, CP3} é conforme a seguir: vy −vy vx0 = + 3 2 H + vx2
W � vx −vx (13) vy0 = − 3 2 H + vy2
W
[0219] Solução B: Informações de movimento de três pontos de controle do bloco de codificação atual são combinadas, para construir um modelo de transformação afim de 6 parâmetros. Os três pontos de controle são combinados em uma maneira de {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, ou {CP1, CP3, CP4}. Por exemplo, um modelo de transformação afim de 6 parâmetros construído usando-se pontos de controle CP1, CP2, e CP3 é denotado como (CP1, CP2, CP3) Afim.
[0220] Deve ser notado que uma combinação de diferentes pontos de controle pode ser transformada em pontos de controle em uma mesma localização. Por exemplo, um modelo de transformação afim de 6 parâmetros obtido com base em uma combinação {CP1, CP2, CP4}, {CP2, CP3, CP4}, ou {CP1, CP3, CP4} é transformado para ser representado por pontos de controle {CP1, CP2, CP3}. Um método de transformação é conforme a seguir: um vetor de movimento e informações de coordenada de um ponto de controle são substituídos em uma fórmula (14), para obter um modelo de parâmetro. Então, informações de coordenação de {CP1, CP2, CP3} são substituídas na fórmula, para obter vetores de movimento de {CP1, CP2, CP3}. Os vetores de movimento são usados como um grupo de preditores de vetor de movimento candidatos. vx = a + a x + a y �vy = a1 + a3 x + a4 y (14) 2 5 6
[0221] Na fórmula (14), a1 , a2 , a3 , a4 , a5 , a6 são parâmetros no modelo de parâmetro, e (x, y) representam coordenadas de localização.
[0222] Mais diretamente, a transformação pode ser realizada de acordo com as seguintes fórmulas, para obter um grupo de preditores de vetor de movimento representado pelo ponto de controle superior esquerdo, o ponto de controle superior direito, e o ponto de controle inferior esquerdo, e o grupo de preditores de vetor de movimento é adicionado à lista de informações de movimento candidatas.
[0223] Uma fórmula (15) para transformar {CP1, CP2, CP4} em {CP1, CP2, CP3} é conforme a seguir: vx = vx3 + vx0 − vx1 � 2 (15) vy2 = vy3 + vy0 − vy1
[0224] Uma fórmula (16) para transformar {CP2, CP3, CP4} em {CP1, CP2, CP3} é conforme a seguir: vx = vx1 + vx2 − vx3 � 0 (16) vy0 = vy1 + vy2 − vy3
[0225] Uma fórmula (17) para transformar {CP1, CP3, CP4} em {CP1, CP2, CP3} é conforme a seguir: vx = vx3 + vx0 − vx2 � 1 (17) vy1 = vy3 + vy0 − vy2
[0226] Deve ser notado que a lista de informações de movimento candidatas pode ser construída usando-se somente os preditores de vetor de movimento candidatos preditos da maneira 1, ou a lista de informações de movimento candidatas pode ser construída usando-se somente os preditores de vetor de movimento candidatos preditos da maneira 2, ou a lista de informações de movimento candidatas pode ser construída usando-se tanto os preditores de vetor de movimento candidatos preditos da maneira 1 quanto os preditores de vetor de movimento candidatos preditos da maneira 2. Além disso, a lista de informações de movimento candidatas pode ser adicionalmente removida e classificada de acordo com uma regra pré-configurada, e então truncada ou preenchida até uma quantidade particular. Quando cada grupo de preditores de vetor de movimento candidatos na lista de informações de movimento candidatas inclui preditores de vetor de movimento de três pontos de controle, essa lista de informações de movimento candidatas pode ser referida como uma lista tríplex; ou quando cada grupo de preditores de vetor de movimento candidatos na lista de informações de movimento candidatas inclui preditores de vetor de movimento de dois pontos de controle, essa lista de informações de movimento candidatas pode ser referida como uma lista de tuplas de 2.
[0227] Etapa S722: O codificador de vídeo determina um grupo de vetores de movimento candidatos alvos na lista de informações de movimento candidatas de acordo com um critério de custo de distorção de taxa. Especificamente, para cada grupo de vetores de movimento candidatos na lista de informações de movimento candidatas, um vetor de movimento de cada sub- bloco do bloco atual é obtido através de cálculo, e compensação de movimento é realizada para obter um preditor de cada sub-bloco, de modo a obter um preditor do bloco atual. Um grupo de vetores de movimento candidatos com um erro mínimo entre um preditor e um valor original é selecionado como um grupo de preditores de vetor de movimento ideal, isto é, o grupo de vetores de movimento candidatos alvos. Além disso, o grupo de vetores de movimento candidatos alvos determinado é usado como preditores de vetor de movimento candidatos ideais de um grupo de pontos de controle, e o grupo de vetores de movimento candidatos alvos corresponde a um número índice único na lista de informações de movimento candidatas.
[0228] Etapa S723: O codificador de vídeo codifica um índice correspondente ao grupo de vetores de movimento candidatos alvos, um índice de quadro de referência, e um índice correspondente a uma direção de predição em um fluxo de bits a ser transmitido.
[0229] Opcionalmente, além das supracitadas etapas S721 a S723, as etapas S724 e S725 podem ser adicionalmente realizadas no modo de fusão.
[0230] Etapa S724: O codificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim com base em parâmetro.
[0231] Especificamente, o grupo de vetores de movimento candidatos alvos inclui vetores de movimento de dois pontos de controle (o ponto de controle superior esquerdo e o ponto de controle superior direito) ou três pontos de controle (por exemplo, o ponto de controle superior esquerdo, o ponto de controle superior direito, e o ponto de controle inferior esquerdo). Para cada sub-bloco do bloco de codificação atual (um sub-bloco pode ser equivalente a uma unidade de compensação de movimento), informações de movimento de uma amostra em uma localização predefinida em uma unidade de compensação de movimento podem ser usadas para representar informações de movimento de todas as amostras na unidade de compensação de movimento. Se um tamanho da unidade de compensação de movimento é M x N (M é menor ou igual à largura W do bloco de codificação atual, N é menor ou igual à altura H do bloco de codificação atual, e M, N, W, e H são, cada um, um número inteiro positivo e são normalmente uma potência de 2, por exemplo, 4, 8, 16, 32, 64, ou 128), a amostra na localização predefinida pode ser um ponto de centro (M/2, N/2) da unidade de compensação de movimento, uma amostra superior esquerdo (0, 0), uma amostra superior direito (M – 1, 0), ou uma amostra em uma outra localização. A Figura 8A mostra uma unidade de compensação de movimento 4 x 4, e a Figura 8B mostra uma unidade de compensação de movimento 8 x 8.
[0232] Coordenadas de um ponto de centro de uma unidade de compensação de movimento em relação a uma amostra em um vértice superior esquerdo do bloco de codificação atual são calculadas de acordo com uma fórmula (5), onde i é uma iésima unidade de compensação de movimento (da esquerda para a direita) em uma direção horizontal, j é a jésima unidade de compensação de movimento (de superior a inferior) em uma direção vertical, e (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) representam coordenadas de um ponto de centro de uma (i, j)ésima unidade de compensação de movimento em relação à amostra no ponto de controle superior esquerdo do bloco de codificação atual. Então, com base em um tipo de modelo afim (6 parâmetros ou 4 parâmetros) do bloco de codificação atual, (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) são substituídos em uma fórmula de modelo afim de 6 parâmetros (6-1) ou (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) são substituídos em uma fórmula de modelo afim de 4 parâmetros (6-2) para obter informações de movimento de um ponto de centro de cada unidade de compensação de movimento, e as informações de movimento são usadas como vetores de movimento (𝑣𝑣𝑣𝑣(𝑖𝑖,𝑗𝑗) , 𝑣𝑣𝑣𝑣(𝑖𝑖,𝑗𝑗) ) de todas as amostras na unidade de compensação de movimento.
[0233] Opcionalmente, quando o bloco de codificação atual é um bloco de codificação de 6 parâmetros, e vetores de movimento de um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual e um modelo afim de 6 parâmetros construído usando- se os três pontos de controle, e um vetor de movimento de um sub-bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual e o modelo afim de 6 parâmetros construído usando-se os três pontos de controle. Por exemplo, o vetor de movimento do sub-bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim de 6 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo- se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim de 6 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de informações de movimento candidatas de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0234] Opcionalmente, quando o bloco de codificação atual é um bloco de codificação de 4 parâmetros, e vetores de movimento de um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual e um modelo afim de 4 parâmetros construído usando- se os dois pontos de controle, e um vetor de movimento de um sub-bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual e o modelo afim de 4 parâmetros construído usando-se os dois pontos de controle. Por exemplo, o vetor de movimento do sub-bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim de 4 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo- se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim de 4 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de informações de movimento candidatas de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0235] Etapa S725: O codificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco. Especificamente, um valor de amostra predito do bloco de codificação atual é predito com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual, e um índice de quadro de referência e uma direção de predição que são indicados pelos índices.
[0236] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, as informações que foram lidas a partir da memória podem ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando o desempenho de codificação.
[0237] Em uma outra modalidade opcional em um lado de codificador, se um primeiro bloco de codificação afim vizinho está localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima de um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado com base em um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho; ou se um primeiro bloco de codificação afim vizinho está localizado em uma CTU à esquerda de um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado com base em um ponto de controle superior direito e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0238] Etapa S900: O codificador de vídeo determina um modo de predição inter para o bloco de codificação atual.
[0239] Especificamente, o modo de predição inter pode ser um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP), ou pode ser um modo de fusão (Merge).
[0240] Se o modo de predição inter determinado para o bloco de codificação atual é o modo AMVP, as etapas S911 a S913 são realizadas.
[0241] Se o modo de predição inter determinado para o bloco de codificação atual é o modo de fusão, as etapas S921 a S923 são realizadas.
[0242] Modo AMVP:
[0243] Etapa S911: O codificador de vídeo constrói uma lista de preditores de vetor de movimento MVP candidatos.
[0244] Especificamente, o codificador de vídeo constrói a lista de preditores de vetor de movimento MVP candidatos (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das seguintes duas maneiras ou uma combinação das duas maneiras. A lista de preditores de vetor de movimento MVP candidatos construída pode ser uma lista de preditores de vetor de movimento MVP candidatos tríplex ou uma lista de tuplas de 2 de preditores de vetor de movimento MVP candidatos. As duas maneiras são especificamente conforme a seguir:
[0245] Maneira 1: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento modelo com base em movimento.
[0246] Primeiramente, todos os ou alguns dos blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados, sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0247] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual com base no vetor de movimento do ponto de controle do primeiro bloco de codificação afim vizinho varia com um modelo de parâmetro do bloco de codificação atual. Portanto, a seguir se fornece descrições para diferentes casos.
[0248] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0249] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima do bloco de codificação atual, vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidas.
[0250] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento e coordenadas de localização dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0251] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (1) e (2).
[0252] Nas fórmulas (1) e (2), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0253] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de codificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0254] Nesse caso, nas fórmulas (1) e (2), (x7 − x6 ) é igual a cuW, (𝑣𝑣𝑣𝑣7 , 𝑣𝑣𝑣𝑣7 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 + cuW – 1, y4 + cuH – 1) em uma imagem, e (𝑣𝑣𝑣𝑣6 , 𝑣𝑣𝑣𝑣6 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 , y4 + cuH – 1) na imagem.
[0255] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) à esquerda do bloco de codificação atual, vetores de movimento de dois pontos de controle mais à direita do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x5 , y5 ) e um vetor de movimento (vx5 , vy5 ) de um ponto de controle superior direito do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidas.
[0256] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento e coordenadas de localização dos dois pontos de controle mais à direita do primeiro bloco de codificação afim vizinho.
[0257] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (18) e (19). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣5 − × (𝑥𝑥0 − 𝑥𝑥5 ) + × (𝑦𝑦0 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (18) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣5 + × (𝑥𝑥0 − 𝑥𝑥5 ) + × (𝑦𝑦0 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5
(𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣5 − × (𝑥𝑥1 − 𝑥𝑥5 ) + × (𝑦𝑦1 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (19) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣5 + × (𝑥𝑥1 − 𝑥𝑥5 ) + × (𝑦𝑦1 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5
[0258] Nas fórmulas (18) e (19), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0259] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, e não está localizado na CTU à esquerda do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitado no presente documento. Por exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual. Como um outro exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU à esquerda do bloco de codificação atual.
[0260] Opcionalmente, a lista de preditores de vetor de movimento MVP candidatos adicionalmente inclui um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho. Localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes das localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho (por exemplo, os pontos de controle incluídos no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, mas os pontos de controle incluídos no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho são um ponto de controle superior direito, um ponto de controle inferior direito, e um ponto de controle inferior esquerdo do segundo bloco de codificação afim vizinho).
[0261] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. Uma maneira de derivação pode ser conforme a seguir:
[0262] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidas.
[0263] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0264] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (1), (2), e (3).
[0265] Nas fórmulas (1), (2), e (5), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0266] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de codificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0267] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais à direita do primeiro bloco de codificação afim vizinho são obtidas. Por exemplo, coordenadas de localização (x5 , y5 ) e um vetor de movimento (vx5 , vy5 ) de um ponto de controle superior direito do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0268] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0269] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (18), (19), e (20). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣5 − × (𝑥𝑥2 − 𝑥𝑥5 ) + × (𝑦𝑦2 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (20) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣5 + × (𝑥𝑥2 − 𝑥𝑥5 ) + × (𝑦𝑦2 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5
[0270] Nas fórmulas (18), (19), e (20), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0271] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, e não está localizado na CTU à esquerda do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitado no presente documento. Por exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual. Como um outro exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU à esquerda do bloco de codificação atual.
[0272] Opcionalmente, a lista de preditores de vetor de movimento MVP candidatos adicionalmente inclui um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho. Localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes das localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho (por exemplo, os pontos de controle incluídos no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, mas os pontos de controle incluídos no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho são um ponto de controle superior direito, um ponto de controle inferior direito, e um ponto de controle inferior esquerdo do segundo bloco de codificação afim vizinho).
[0273] Maneira 2: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0274] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S711. Portanto, detalhes não são descritos no presente documento novamente.
[0275] Etapa S912: O codificador de vídeo determina um grupo de vetores de movimento candidatos alvos na lista de preditores de vetor de movimento MVP candidatos de acordo com um critério de custo de distorção de taxa.
[0276] Para detalhes, fazer referência à descrição da etapa S712. Detalhes não são descritos no presente documento novamente.
[0277] Etapa S913: O codificador de vídeo codifica um vetor de movimento diferencial MVD e um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
[0278] Para detalhes, fazer referência à descrição da etapa S713. Detalhes não são descritos no presente documento novamente.
[0279] Modo de fusão:
[0280] Etapa S921: O codificador de vídeo constrói uma lista de informações de movimento candidatas.
[0281] Especificamente, o codificador de vídeo constrói a lista de informações de movimento candidatas (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de informações de movimento candidatas construída é uma lista tríplex de informações de movimento candidatas. As duas maneiras são especificamente conforme a seguir:
[0282] Maneira 1: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0283] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0284] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Os detalhes são conforme a seguir:
[0285] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidas. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0286] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0287] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (1), (2), e (3).
[0288] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. A tupla de 2 de vetor de movimento candidato é formada e é adicionada à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (1) e (2).
[0289] Nas fórmulas (1), (2), e (3), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 )
é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0290] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de codificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0291] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais à direita do primeiro bloco de codificação afim vizinho são obtidas. Por exemplo, coordenadas de localização (x5 , y5 ) e um vetor de movimento (vx5 , vy5 ) de um ponto de controle superior direito do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0292] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0293] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (18), (19), e (20).
[0294] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. A tupla de 2 de vetor de movimento candidato é formada e é adicionada à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (18) e (19).
[0295] Nas fórmulas (18), (19), e (20), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0296] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, e não está localizado na CTU à esquerda do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Por exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual. Como um outro exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU à esquerda do bloco de codificação atual.
[0297] Opcionalmente, a lista de informações de movimento candidatas adicionalmente inclui um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho. Localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes das localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho (por exemplo, os pontos de controle incluídos no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, mas os pontos de controle incluídos no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho são um ponto de controle superior direito, um ponto de controle inferior direito, e um ponto de controle inferior esquerdo do segundo bloco de codificação afim vizinho).
[0298] Maneira 2: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle
[0299] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S721. Portanto, detalhes não são descritos no presente documento novamente.
[0300] Etapa S922: O codificador de vídeo determina um grupo de vetores de movimento candidatos alvos na lista de informações de movimento candidatas de acordo com um critério de custo de distorção de taxa.
[0301] Para detalhes, fazer referência à descrição da etapa S722. Detalhes não são descritos no presente documento novamente.
[0302] Etapa S923: O codificador de vídeo codifica um índice correspondente ao grupo de vetores de movimento candidatos alvos, um índice correspondente a um índice de quadro de referência, e um índice correspondente a uma direção de predição em um fluxo de bits a ser transmitido.
[0303] Para detalhes, fazer referência à descrição da etapa S723. Detalhes não são descritos no presente documento novamente.
[0304] Etapa S924: O codificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base em vetores de movimento de três pontos de controle do bloco de codificação atual usando-se um modelo de transformação afim de 6 parâmetros.
[0305] Para detalhes, fazer referência à descrição da etapa S724. Detalhes não são descritos no presente documento novamente.
[0306] Etapa S925: O codificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco.
[0307] Para detalhes, fazer referência à descrição da etapa S725. Detalhes não são descritos no presente documento novamente.
[0308] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está à esquerda do bloco de codificação atual, informações sobre pontos de controle mais à direita do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, as informações que foram lidas a partir da memória podem ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando o desempenho de codificação.
[0309] Em uma outra modalidade opcional em um lado de codificador, se um primeiro bloco de codificação afim vizinho está localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima de um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado com base em um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior direito do primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0310] Etapa S1000: O codificador de vídeo determina um modo de predição inter para o bloco de codificação atual.
[0311] Especificamente, o modo de predição inter pode ser um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP), ou pode ser um modo de fusão (Merge).
[0312] Se o modo de predição inter determinado para o bloco de codificação atual é o modo AMVP, as etapas S1011 a S1013 são realizadas.
[0313] Se o modo de predição inter determinado para o bloco de codificação atual é o modo de fusão, as etapas S1021 a S1023 são realizadas.
[0314] Modo AMVP:
[0315] Etapa S1011: O codificador de vídeo constrói uma lista de preditores de vetor de movimento MVP candidatos.
[0316] Especificamente, o codificador de vídeo constrói a lista de preditores de vetor de movimento MVP candidatos (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de preditores de vetor de movimento MVP candidatos construída pode ser uma lista de preditores de vetor de movimento MVP candidatos tríplex ou uma lista de tuplas de 2 de preditores de vetor de movimento MVP candidatos. As duas maneiras são especificamente conforme a seguir:
[0317] Maneira 1: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0318] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0319] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual com base no vetor de movimento do ponto de controle do primeiro bloco de codificação afim vizinho varia com um modelo de parâmetro do bloco de codificação atual. Portanto, a seguir se fornece descrições para diferentes casos.
[0320] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0321] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima do bloco de codificação atual, vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho pode ser obtidos.
[0322] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e o vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0323] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (21) e (22). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (21) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6 (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (22) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6
[0324] Nas fórmulas (21) e (22), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0325] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de codificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0326] Nesse caso, nas fórmulas (21) e (22), (x7 − x6 ) é igual a cuW, (𝑣𝑣𝑣𝑣7 , 𝑣𝑣𝑣𝑣7 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 + cuW – 1, y4 + cuH – 1) em uma imagem, e (𝑣𝑣𝑣𝑣6 , 𝑣𝑣𝑣𝑣6 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 , y4 + cuH – 1) na imagem.
[0327] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0328] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0329] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0330] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e o vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0331] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (21), (22), e (23). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥2 − 𝑥𝑥6 ) + × (𝑦𝑦2 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (23) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥2 − 𝑥𝑥6 ) + × (𝑦𝑦2 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6
[0332] Nas fórmulas (21), (22), e (23), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0333] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0334] Maneira 2: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0335] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S711. Portanto, detalhes não são descritos no presente documento novamente.
[0336] Etapa S1012: O codificador de vídeo determina um grupo de vetores de movimento candidatos alvos na lista de preditores de vetor de movimento MVP candidatos de acordo com um critério de custo de distorção de taxa.
[0337] Para detalhes, fazer referência à descrição da etapa S712. Detalhes não são descritos no presente documento novamente.
[0338] Etapa S1013: O codificador de vídeo codifica um vetor de movimento diferencial MVD e um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
[0339] Para detalhes, fazer referência à descrição da etapa S713. Detalhes não são descritos no presente documento novamente.
[0340] Modo de fusão:
[0341] Etapa S1021: O codificador de vídeo constrói uma lista de informações de movimento candidatas.
[0342] Especificamente, o codificador de vídeo constrói a lista de informações de movimento candidatas (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de informações de movimento candidatas construída é uma lista tríplex de informações de movimento candidatas. As duas maneiras são especificamente conforme a seguir:
[0343] Maneira 1: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0344] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0345] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Os detalhes são conforme a seguir:
[0346] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0347] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e o vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0348] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (21), (22), e (23).
[0349] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Uma tupla de 2 de vetor de movimento candidato é formada e é adicionada à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (21) e (22).
[0350] Nas fórmulas (21), (22), e (23), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0351] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0352] Maneira 2: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle
[0353] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S721. Portanto, detalhes não são descritos no presente documento novamente.
[0354] Etapa S1022: O codificador de vídeo determina um grupo de vetores de movimento candidatos alvos na lista de informações de movimento candidatas de acordo com um critério de custo de distorção de taxa.
[0355] Para detalhes, fazer referência à descrição da etapa S722. Detalhes não são descritos no presente documento novamente.
[0356] Etapa S1023: O codificador de vídeo codifica um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
[0357] Para detalhes, fazer referência à descrição da etapa S723. Detalhes não são descritos no presente documento novamente.
[0358] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, as informações que foram lidas a partir da memória podem ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando o desempenho de codificação.
[0359] Em uma outra modalidade opcional em um lado de codificador, independentemente de uma localização de um primeiro bloco de codificação afim vizinho em relação a um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado diretamente com base em um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Descrições detalhadas são conforme a seguir:
[0360] Etapa S1100: O codificador de vídeo determina um modo de predição inter para o bloco de codificação atual.
[0361] Especificamente, o modo de predição inter pode ser um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP), ou pode ser um modo de fusão (merge).
[0362] Se o modo de predição inter determinado para o bloco de codificação atual é o modo AMVP, as etapas S1111 a S1113 são realizadas.
[0363] Se o modo de predição inter determinado para o bloco de codificação atual é o modo de fusão, as etapas S1121 a S1123 são realizadas.
[0364] Modo AMVP:
[0365] Etapa S1111: O codificador de vídeo constrói uma lista de preditores de vetor de movimento MVP candidatos.
[0366] Especificamente, o codificador de vídeo constrói a lista de preditores de vetor de movimento MVP candidatos (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de preditores de vetor de movimento MVP candidatos construída pode ser uma lista de preditores de vetor de movimento MVP candidatos tríplex ou uma lista de tuplas de 2 de preditores de vetor de movimento MVP candidatos. As duas maneiras são especificamente conforme a seguir:
[0367] Maneira 1: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0368] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo,
blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0369] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual com base no vetor de movimento do ponto de controle do primeiro bloco de codificação afim vizinho varia com um modelo de parâmetro do bloco de codificação atual. Portanto, a seguir se fornece descrições para diferentes casos.
[0370] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0371] Independentemente da localização do primeiro bloco de codificação afim vizinho em relação ao bloco de codificação atual, vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são diretamente obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0372] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e no vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0373] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (21) e (22). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (21) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6 (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (22) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6
[0374] Nas fórmulas (21) e (22), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0375] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de codificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0376] Nesse caso, nas fórmulas (21) e (22), (x7 − x6 ) é igual a cuW, (𝑣𝑣𝑣𝑣7 , 𝑣𝑣𝑣𝑣7 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 + cuW – 1, y4 + cuH – 1) em uma imagem, e (𝑣𝑣𝑣𝑣6 , 𝑣𝑣𝑣𝑣6 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 , y4 + cuH – 1) na imagem.
[0377] Opcionalmente, a lista de preditores de vetor de movimento
MVP candidatos adicionalmente inclui um segundo grupo de vetores de movimento candidatos, o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho, e o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho.
[0378] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0379] Independentemente da localização do primeiro bloco de codificação afim vizinho em relação ao bloco de codificação atual, coordenadas de localização e vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são diretamente obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0380] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e o vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0381] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (21), (22), e (23).
[0382] Nas fórmulas (21), (22), e (23), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0383] Opcionalmente, a lista de preditores de vetor de movimento MVP candidatos adicionalmente inclui um segundo grupo de vetores de movimento candidatos, o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho, e o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho.
[0384] Maneira 2: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0385] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S711. Portanto, detalhes não são descritos no presente documento novamente.
[0386] Etapa S1112: O codificador de vídeo determina um grupo de vetores de movimento candidatos alvos na lista de preditores de vetor de movimento MVP candidatos de acordo com um critério de custo de distorção de taxa.
[0387] Para detalhes, fazer referência à descrição da etapa S712. Detalhes não são descritos no presente documento novamente.
[0388] Etapa S1113: O codificador de vídeo codifica um vetor de movimento diferencial MVD e um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
[0389] Para detalhes, fazer referência à descrição da etapa S713. Detalhes não são descritos no presente documento novamente.
[0390] Modo de fusão:
[0391] Etapa S1121: O codificador de vídeo constrói uma lista de vetores de movimento candidatos afins.
[0392] Especificamente, o codificador de vídeo constrói a lista de vetores de movimento candidatos afins (também referida como uma lista de vetores de movimento candidatos) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de vetores de movimento candidatos afins construída é uma lista tríplex de vetores de movimento candidatos afins. As duas maneiras são especificamente conforme a seguir:
[0393] Maneira 1: A lista de vetores de movimento candidatos afins é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0394] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0395] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Os detalhes são conforme a seguir:
[0396] Independentemente da localização do primeiro bloco de codificação afim vizinho em relação ao bloco de codificação atual, coordenadas de localização e vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são diretamente obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0397] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e o vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0398] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de vetores de movimento candidatos afins. Detalhes são mostrados nas fórmulas (21), (22), e (23).
[0399] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Uma tupla de 2 de vetor de movimento candidato é formada e é adicionada à lista de vetores de movimento candidatos afins. Detalhes são mostrados nas fórmulas (21) e (22).
[0400] Nas fórmulas (21), (22), e (23), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0401] Opcionalmente, a lista de vetores de movimento candidatos afins adicionalmente inclui um segundo grupo de vetores de movimento candidatos, o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho, e o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho.
[0402] Maneira 2: A lista de vetores de movimento candidatos afins é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0403] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S721. Portanto, detalhes não são descritos no presente documento novamente.
[0404] Etapa S1122: O codificador de vídeo determina um grupo de vetores de movimento candidatos alvos na lista de vetores de movimento candidatos afins de acordo com um critério de custo de distorção de taxa.
[0405] Para detalhes, fazer referência à descrição da etapa S712. Detalhes não são descritos no presente documento novamente.
[0406] Etapa S1123: O codificador de vídeo codifica um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
[0407] Para detalhes, fazer referência à descrição da etapa S713. Detalhes não são descritos no presente documento novamente.
[0408] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, existe uma probabilidade muito alta de que as informações que foram lidas a partir da memória possam ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando o desempenho de codificação.
[0409] A Figura 9 é um fluxograma de um processo 900 de um método de decodificação de acordo com uma modalidade desse pedido. O processo 900 pode ser realizado pelo decodificador de vídeo 200, e especificamente, pode ser realizado pela unidade de predição inter (também referida como um preditor inter) 210 e a unidade de decodificação de entropia (também referida como um decodificador de entropia) 203 do decodificador de vídeo 200. O processo 900 é descrito como uma série de etapas ou operações. Deve ser entendido que etapas ou operações do processo 900 podem ser realizadas em várias sequências e/ou simultaneamente, e não são limitadas a uma sequência de execução mostrada na Figura 9. É assumido que um fluxo de dados de vídeo incluindo uma pluralidade de quadro de vídeos está usando o decodificador de vídeo. Se um primeiro bloco de codificação afim vizinho está localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima de um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado com base em um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Correspondentes ao processo mostrado na Figura 9, descrições relacionadas são conforme a seguir:
[0410] Em uma modalidade opcional em um lado de decodificador, se um primeiro bloco de codificação afim vizinho está localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima de um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado com base em um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0411] Etapa S1200: O decodificador de vídeo determina um modo de predição inter para o bloco de codificação atual.
[0412] Especificamente, o modo de predição inter pode ser um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP), ou pode ser um modo de fusão (merge).
[0413] Se o modo de predição inter determinado para o bloco de codificação atual é o modo AMVP, as etapas S1211 a S1216 são realizadas.
[0414] Se o modo de predição inter determinado para o bloco de codificação atual é o modo de fusão, as etapas S1221 a S1225 são realizadas.
[0415] Modo AMVP:
[0416] Etapa S1211: O decodificador de vídeo constrói uma lista de preditores de vetor de movimento MVP candidatos.
[0417] Especificamente, o decodificador de vídeo constrói a lista de preditores de vetor de movimento MVP candidatos (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de preditores de vetor de movimento MVP candidatos construída pode ser uma lista de preditores de vetor de movimento MVP candidatos tríplex ou uma lista de tuplas de 2 de preditores de vetor de movimento MVP candidatos. As duas maneiras são especificamente conforme a seguir:
[0418] Maneira 1: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento
[0419] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0420] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual com base no vetor de movimento do ponto de controle do primeiro bloco de codificação afim vizinho varia com um modelo de parâmetro do bloco de codificação atual. Portanto, a seguir se fornece descrições para diferentes casos.
[0421] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. A maneira de derivação pode ser conforme a seguir (conforme mostrado na Figura 9A):
[0422] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima do bloco de codificação atual, vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos (etapa S1201).
[0423] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento e coordenadas de localização dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho (etapa S1202).
[0424] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (1) e (2) (etapa S1203). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) − × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (1) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6 (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) − × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (2) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6
[0425] Nas fórmulas (1) e (2), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0426] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub- bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de decodificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0427] Nesse caso, nas fórmulas (1) e (2), (x7 − x6 ) é igual a cuW, (𝑣𝑣𝑣𝑣7 , 𝑣𝑣𝑣𝑣7 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 + cuW – 1, y4 + cuH – 1) em uma imagem, e (𝑣𝑣𝑣𝑣6 , 𝑣𝑣𝑣𝑣6 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 , y4 + cuH – 1) na imagem.
[0428] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0429] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0430] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0431] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0432] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (1), (2), e (3). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥2 − 𝑥𝑥6 ) − × (𝑦𝑦2 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (3) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥2 − 𝑥𝑥6 ) + × (𝑦𝑦2 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑥𝑥7 −𝑥𝑥6
[0433] As fórmulas (1) e (2) foram descritas acima. Nas fórmulas (1), (2), e (3), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0434] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0435] Maneira 2: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle
[0436] Uma maneira de construir a lista de preditores de vetor de movimento MVP candidatos varia com um modelo de parâmetro do bloco de codificação atual. Detalhes são descritos abaixo.
[0437] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0438] Vetores de movimento de um vértice superior esquerdo e um vértice superior direito do bloco de codificação atual são estimados com base em informações de movimento de blocos decodificados vizinhos do bloco de codificação atual. Conforme mostrado na Figura 7B, primeiramente, vetores de movimento de blocos decodificados vizinhos A e/ou B e/ou C do vértice superior esquerdo são usados como vetores de movimento candidatos para o vetor de movimento do vértice superior esquerdo do bloco de codificação atual, e vetores de movimento de blocos decodificados vizinhos D e/ou E do vértice superior direito são usados como vetores de movimento candidatos para o vetor de movimento do vértice superior direito do bloco de codificação atual. Um vetor de movimento candidato do vértice superior esquerdo e um vetor de movimento candidato do vértice superior direito podem ser combinados para obter um grupo de preditores de vetor de movimento candidatos. Uma pluralidade de registros obtidos através de combinação dessa maneira pode constituir a lista de preditores de vetor de movimento MVP candidatos.
[0439] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0440] Vetores de movimento de um vértice superior esquerdo, um vértice superior direito, e um vértice inferior esquerdo do bloco de codificação atual são estimados com base em informações de movimento de blocos decodificados vizinhos do bloco de codificação atual. Conforme mostrado na Figura 7B, primeiramente, vetores de movimento de blocos decodificados vizinhos A e/ou B e/ou C do vértice superior esquerdo são usados como vetores de movimento candidatos para o vetor de movimento do vértice superior esquerdo do bloco de codificação atual, vetores de movimento de blocos decodificados vizinhos D e/ou E do vértice superior direito são usados como vetores de movimento candidatos para o vetor de movimento do vértice superior direito do bloco de codificação atual, e vetores de movimento de blocos decodificados vizinhos F e/ou G do vértice inferior esquerdo são usados como vetores de movimento candidatos para o vetor de movimento do vértice inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato do vértice superior esquerdo, um vetor de movimento candidato do vértice superior direito, e um vetor de movimento candidato do vértice inferior esquerdo podem ser combinados para obter um grupo de preditores de vetor de movimento candidatos. Uma pluralidade de grupos de preditores de vetor de movimento candidatos obtidos através de combinação dessa maneira pode constituir a lista de preditores de vetor de movimento MVP candidatos.
[0441] Deve ser notado que a lista de preditores de vetor de movimento MVP candidatos pode ser construída usando-se somente os preditores de vetor de movimento candidatos preditos da maneira 1, ou a lista de preditores de vetor de movimento MVP candidatos pode ser construída usando- se somente os preditores de vetor de movimento candidatos preditos da maneira 2, ou a lista de preditores de vetor de movimento MVP candidatos pode ser construída usando-se tanto os preditores de vetor de movimento candidatos preditos da maneira 1 quanto os preditores de vetor de movimento candidatos preditos da maneira 2. Além disso, a lista de preditores de vetor de movimento MVP candidatos pode ser adicionalmente removida e classificada de acordo com uma regra pré-configurada, e então truncada ou preenchida até uma quantidade particular. Quando cada grupo de preditores de vetor de movimento candidatos na lista de preditores de vetor de movimento MVP candidatos inclui preditores de vetor de movimento de três pontos de controle, essa lista de preditores de vetor de movimento MVP candidatos pode ser referida como uma lista tríplex; ou quando cada grupo de preditores de vetor de movimento candidatos na lista de preditores de vetor de movimento MVP candidatos inclui preditores de vetor de movimento de dois pontos de controle, essa lista de preditores de vetor de movimento MVP candidatos pode ser referida como uma lista de tuplas de 2.
[0442] Etapa S1212: O decodificador de vídeo analisa um fluxo de bits, para obter um índice e um vetor de movimento diferencial MVD.
[0443] Especificamente, o decodificador de vídeo pode analisar o fluxo de bits usando-se a unidade de decodificação de entropia. O índice é usado para indicar um grupo de vetores de movimento candidatos alvos do bloco de codificação atual, e o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle do bloco de codificação atual.
[0444] Etapa S1213: O decodificador de vídeo determina o grupo de vetores de movimento alvo na lista de preditores de vetor de movimento MVP candidatos com base no índice.
[0445] Especificamente, o grupo de vetores de movimento candidatos alvos determinado pelo decodificador de vídeo na lista de preditores de vetor de movimento MVP candidatos com base no índice é usado como preditores de vetor de movimento candidatos ideais (opcionalmente, quando um comprimento da lista de preditores de vetor de movimento MVP candidatos é 1, o fluxo de bits não precisa ser analisado para obter o índice, mas o grupo de vetores de movimento alvo pode ser determinado diretamente). A seguir se descreve resumidamente os preditores de vetor de movimento candidatos ideais.
[0446] Se o modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros, preditores de vetor de movimento ideal de dois pontos de controle são selecionados a partir da lista de preditores de vetor de movimento MVP candidatos construída. Por exemplo, o decodificador de vídeo analisa o fluxo de bits para obter um número índice, e então determina preditores de vetor de movimento ideal de dois pontos de controle em uma lista de tuplas de 2 de preditores de vetor de movimento MVP candidatos com base no número índice. Cada grupo de preditores de vetor de movimento candidatos na lista de preditores de vetor de movimento MVP candidatos corresponde a um respectivo número índice.
[0447] Se o modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros, preditores de vetor de movimento ideal de três pontos de controle são selecionados a partir da lista de preditores de vetor de movimento MVP candidatos construída. Por exemplo, o decodificador de vídeo analisa o fluxo de bits para obter um número índice, e então determina preditores de vetor de movimento ideal de três pontos de controle em uma lista de preditores de vetor de movimento MVP candidatos tríplex com base no número índice. Cada grupo de preditores de vetor de movimento candidatos na lista de preditores de vetor de movimento MVP candidatos corresponde a um respectivo número índice.
[0448] Etapa S1214: O decodificador de vídeo determina o vetor de movimento do ponto de controle do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos e no vetor de movimento diferencial MVD que é obtido a partir do fluxo de bits através de análise.
[0449] Se o modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros, vetores de movimento diferenciais de dois pontos de controle do bloco de codificação atual são obtidos a partir do fluxo de bits através de decodificação, e um novo grupo de vetores de movimento candidatos é obtido com base nos vetores de movimento diferenciais dos pontos de controle e no grupo de vetores de movimento candidatos alvos indicado pelo índice. Por exemplo, um vetor de movimento diferencial MVD de um ponto de controle superior esquerdo e um vetor de movimento diferencial MVD de um ponto de controle superior direito são obtidos a partir do fluxo de bits através de decodificação, e são respectivamente adicionados a um vetor de movimento de um ponto de controle superior esquerdo e um vetor de movimento de um ponto de controle superior direito no grupo de vetores de movimento candidatos alvos, para obter um novo grupo de vetores de movimento candidatos. Portanto, o novo grupo de vetores de movimento candidatos inclui novos vetores de movimento do ponto de controle superior esquerdo e do ponto de controle superior direito do bloco de codificação atual.
[0450] Opcionalmente, um vetor de movimento de um terceiro ponto de controle pode ser adicionalmente obtido com base nos vetores de movimento dos dois pontos de controle do bloco de codificação atual no novo grupo de vetores de movimento candidatos usando-se o modelo de transformação afim de 4 parâmetros. Por exemplo, um vetor de movimento (vx0 , vy0 ) do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento (vx1 , vy1 ) do ponto de controle superior direito do bloco de codificação atual são obtidos. Então, um vetor de movimento (vx2 , vy2 ) de um ponto de controle inferior esquerdo (x2 , y2 ) do bloco de codificação atual é obtido através de cálculo de acordo com uma fórmula (4).
𝑣𝑣𝑣𝑣 −𝑣𝑣𝑣𝑣 𝑣𝑣𝑣𝑣2 = − 1 0 𝐻𝐻 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 � 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 (4) 𝑣𝑣𝑣𝑣2 = + 𝐻𝐻 + 𝑣𝑣𝑣𝑣0
𝑊𝑊
[0451] No presente documento, (x0 , y0 ) são coordenadas de localização do ponto de controle superior esquerdo, (x1 , y1 ) são coordenadas de localização do ponto de controle superior direito, W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0452] Se o modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros, vetores de movimento diferenciais de três pontos de controle do bloco de codificação atual são obtidos a partir do fluxo de bits através de decodificação, e um novo grupo de vetores de movimento candidatos é obtido com base nos vetores de movimento diferenciais MVDs dos pontos de controle e do grupo de vetores de movimento candidatos alvos indicado pelo índice. Por exemplo, um vetor de movimento diferencial MVD de um ponto de controle superior esquerdo, um vetor de movimento diferencial MVD de um ponto de controle superior direito, e um vetor de movimento diferencial de um ponto de controle inferior esquerdo são obtidos a partir do fluxo de bits através de decodificação, e são respectivamente adicionados a um vetor de movimento de um ponto de controle superior esquerdo, um vetor de movimento de um ponto de controle superior direito, e um vetor de movimento de um ponto de controle inferior esquerdo no grupo de vetores de movimento candidatos alvos, para obter um novo grupo de vetores de movimento candidatos. Portanto, o novo grupo de vetores de movimento candidatos inclui vetores de movimento do ponto de controle superior esquerdo, o ponto de controle superior direito, e o ponto de controle inferior esquerdo do bloco de codificação atual.
[0453] Etapa S1215: O decodificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim.
[0454] Especificamente, o novo grupo de vetores de movimento candidatos obtido com base no grupo de vetores de movimento candidatos alvos e nos MVDs inclui vetores de movimento de dois pontos de controle (o ponto de controle superior esquerdo e o ponto de controle superior direito) ou três pontos de controle (por exemplo, o ponto de controle superior esquerdo, o ponto de controle superior direito, e o ponto de controle inferior esquerdo). Para cada sub- bloco do bloco de codificação atual (um sub-bloco pode ser equivalente a uma unidade de compensação de movimento), informações de movimento de uma amostra em uma localização predefinida em uma unidade de compensação de movimento podem ser usadas para representar informações de movimento de todas as amostras na unidade de compensação de movimento. Se um tamanho da unidade de compensação de movimento é M x N (M é menor ou igual à largura W do bloco de codificação atual, N é menor ou igual à altura H do bloco de codificação atual, e M, N, W, e H são, cada um, um número inteiro positivo e são normalmente uma potência de 2, por exemplo, 4, 8, 16, 32, 64, ou 128), uma amostra na localização predefinida pode ser um ponto de centro (M/2, N/2) da unidade de compensação de movimento, uma amostra superior esquerdo (0, 0), uma amostra superior direito (M – 1, 0), ou uma amostra em uma outra localização. A Figura 8A mostra uma unidade de compensação de movimento 4 x 4, e a Figura 8B mostra uma unidade de compensação de movimento 8 x 8.
[0455] Coordenadas de um ponto de centro de uma unidade de compensação de movimento em relação a uma amostra em um vértice superior esquerdo do bloco de codificação atual são calculadas de acordo com uma fórmula (5), onde i é uma iésima unidade de compensação de movimento (da esquerda para a direita) em uma direção horizontal, j é uma jésima unidade de compensação de movimento (de superior a inferior) em uma direção vertical, e (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) representam coordenadas de um ponto de centro de uma (i, j)ésima unidade de compensação de movimento em relação à amostra no ponto de controle superior esquerdo do bloco de codificação atual. Então, com base em um tipo de modelo afim (6 parâmetros ou 4 parâmetros) do bloco de codificação atual, (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) são substituídos em uma fórmula de modelo afim de 6 parâmetros (6-1) ou (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) são substituídos em uma fórmula de modelo afim de 4 parâmetros (6-2) para obter informações de movimento de um ponto de centro de cada unidade de compensação de movimento, e as informações de movimento são usadas como vetores de movimento (𝑣𝑣𝑣𝑣(𝑖𝑖,𝑗𝑗) , 𝑣𝑣𝑣𝑣(𝑖𝑖,𝑗𝑗) ) de todas as amostras na unidade de compensação de movimento.
𝑀𝑀 𝑥𝑥(𝑖𝑖,𝑗𝑗) = 𝑀𝑀 × 𝑖𝑖 + , 𝑖𝑖 = 0,1. . 2 � 𝑁𝑁 (5) 𝑦𝑦(𝑖𝑖,𝑗𝑗) = 𝑁𝑁 × 𝑗𝑗 + , 𝑗𝑗 = 0,1. . 2 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣2 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣 = 𝑥𝑥 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝐻𝐻 � 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣2 −𝑣𝑣𝑣𝑣0 (6-1) 𝑣𝑣𝑣𝑣 = 𝑥𝑥 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝐻𝐻 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣 = 𝑥𝑥 − 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝑊𝑊 � 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 𝑣𝑣𝑣𝑣1 −𝑣𝑣𝑣𝑣0 (6-2) 𝑣𝑣𝑣𝑣 = 𝑥𝑥 + 𝑦𝑦 + 𝑣𝑣𝑣𝑣0
𝑊𝑊 𝑊𝑊
[0456] Opcionalmente, quando o bloco de codificação atual é um bloco de codificação de 6 parâmetros, e vetores de movimento de um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual e um modelo afim de 6 parâmetros construído usando- se os três pontos de controle, e um vetor de movimento de um sub-bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual e o modelo afim de 6 parâmetros construído usando-se os três pontos de controle. Por exemplo, o vetor de movimento do sub-bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim de 6 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo- se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim de 6 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de preditores de vetor de movimento MVP candidatos de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0457] Opcionalmente, quando o bloco de codificação atual é um bloco de codificação de 4 parâmetros, e vetores de movimento de um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual e um modelo afim de 4 parâmetros construído usando- se os dois pontos de controle, e um vetor de movimento de um sub-bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual e o modelo afim de 4 parâmetros construído usando-se os dois pontos de controle. Por exemplo, o vetor de movimento do sub-bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim de 4 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo- se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim de 4 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de preditores de vetor de movimento MVP candidatos de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0458] Etapa S1216: O decodificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco. Por exemplo, um sub-bloco correspondente é encontrado em um quadro de referência com base no vetor de movimento de cada sub-bloco e um índice de quadro de referência, e filtração de interpolação é realizada, para obter o valor de amostra predito de cada sub-bloco.
[0459] Modo de fusão:
[0460] Etapa S1221: O decodificador de vídeo constrói a lista de informações de movimento candidatas.
[0461] Especificamente, o decodificador de vídeo constrói a lista de informações de movimento candidatas (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de informações de movimento candidatas construída é uma lista tríplex de informações de movimento candidatas. As duas maneiras são especificamente conforme a seguir:
[0462] Maneira 1: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0463] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0464] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Os detalhes são conforme a seguir:
[0465] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0466] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0467] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual pode ser substituída no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (1), (2), e (3).
[0468] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Uma tupla de 2 de vetor de movimento candidato é formada e é adicionada à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (1) e (2).
[0469] Nas fórmulas (1), (2), e (3), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0470] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0471] Maneira 2: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0472] A seguir se lista duas soluções, as quais são denotadas como uma solução A e uma solução B.
[0473] Solução A: Informações de movimento de dois pontos de controle do bloco de codificação atual são combinadas, para construir um modelo de transformação afim de 4 parâmetros. Os dois pontos de controle são combinados em uma maneira de {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, ou {CP3, CP4}. Por exemplo, um modelo de transformação afim de 4 parâmetros construído usando-se pontos de controle CP1 e CP2 é denotado como (CP1, CP2) Afim.
[0474] Deve ser notado que uma combinação de diferentes pontos de controle pode ser transformada em pontos de controle em uma mesma localização. Por exemplo, um modelo de transformação afim de 4 parâmetros obtido com base em uma combinação {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, ou {CP3, CP4} é transformado para ser representado por pontos de controle {CP1, CP2} ou {CP1, CP2, CP3}. Um método de transformação é conforme a seguir: um vetor de movimento e informações de coordenada de um ponto de controle são substituídos em uma fórmula (7), para obter um modelo de parâmetro. Então, informações de coordenação de {CP1, CP2} são substituídas na fórmula, para obter vetores de movimento de {CP1, CP2}. Os vetores de movimento são usados como um grupo de preditores de vetor de movimento candidatos. vx = a + a x + a y �vy = a1 − a3 x + a4 y (7) 2 4 3
[0475] Na fórmula (7), a0 , a1 , a2 , a3 são todos parâmetros no modelo de parâmetro, e (x, y) representam coordenadas de localização.
[0476] Mais diretamente, a transformação pode ser realizada de acordo com as seguintes fórmulas, para obter um grupo de preditores de vetor de movimento representados pelo ponto de controle superior esquerdo e o ponto de controle superior direito, e o grupo de preditores de vetor de movimento é adicionado à lista de informações de movimento candidatas.
[0477] A fórmula (8) para transformar {CP1, CP2} em {CP1, CP2, CP3} é conforme a seguir: vy −vy vx2 = − 1 0 H + vx0
W � vx −vx (8) vy2 = + 1 0 H + vy0
W
[0478] A fórmula (9) para transformar {CP1, CP3} em {CP1, CP2, CP3} é conforme a seguir: vy −vy vx1 = + 2 0 W + vx0
H � vx −vx (9) vy1 = − 2 0 W + vy0
H
[0479] A fórmula (10) para transformar {CP2, CP3} em {CP1, CP2,
CP3} é conforme a seguir: 2 vx −vx 1 vy −vy vx0 = W ∗ W − 2 1 H ∗ W + vx1 W∗W+H∗H W∗W+H∗H � vy2 −vy1 vx −vx (10) vy1 = W ∗ W + 2 1 H ∗ W + vy1 W∗W+H∗H W∗W+H∗H
[0480] A fórmula (11) para transformar {CP1, CP4} em {CP1, CP2, CP3} é conforme a seguir: 3 vx −vx 0 vy −vy vx1 = W ∗ W + 3 0 H ∗ W + vx0 W∗W+H∗H W∗W+H∗H � vy3 −vy0 vx −vx (11) vy1 = W ∗ W − 3 0 H ∗ W + vy0 W∗W+H∗H W∗W+H∗H
[0481] A fórmula (12) para transformar {CP2, CP4} em {CP1, CP2, CP3} é conforme a seguir: vy −vy vx0 = − 3 1 W + vx1
H � vx3 −vx1 (12) vy0 = + W + vy1
H
[0482] A fórmula (13) para transformar {CP3, CP4} em {CP1, CP2, CP3} é conforme a seguir: vy −vy vx0 = + 3 2 H + vx2
W � vx −vx (13) vy0 = − 3 2 H + vy2
W
[0483] Solução B: Informações de movimento de três pontos de controle do bloco de codificação atual são combinadas, para construir um modelo de transformação afim de 6 parâmetros. Os três pontos de controle são combinados em uma maneira de {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, ou {CP1, CP3, CP4}. Por exemplo, um modelo de transformação afim de 6 parâmetros construído usando-se pontos de controle CP1, CP2, e CP3 é denotado como (CP1, CP2, CP3) Afim.
[0484] Deve ser notado que uma combinação de diferentes pontos de controle pode ser transformada em pontos de controle em uma mesma localização. Por exemplo, um modelo de transformação afim de 6 parâmetros obtido com base em uma combinação {CP1, CP2, CP4}, {CP2, CP3, CP4}, ou {CP1, CP3, CP4} é transformado para ser representado por pontos de controle {CP1, CP2, CP3}. Um método de transformação é conforme a seguir: um vetor de movimento e informações de coordenada de um ponto de controle são substituídos em uma fórmula (14), para obter um modelo de parâmetro. Então, informações de coordenação de {CP1, CP2, CP3} são substituídas na fórmula, para obter vetores de movimento de {CP1, CP2, CP3}. Os vetores de movimento são usados como um grupo de preditores de vetor de movimento candidatos.
vx = a + a x + a y �vy = a1 + a3 x + a4 y (14) 2 5 6
[0485] Na fórmula (14), a1 , a2 , a3 , a4 , a5 , a6 são parâmetros no modelo de parâmetro, e (x, y) representam coordenadas de localização.
[0486] Mais diretamente, a transformação pode ser realizada de acordo com as seguintes fórmulas, para obter um grupo de preditores de vetor de movimento representados pelo ponto de controle superior esquerdo, o ponto de controle superior direito, e o ponto de controle inferior esquerdo, e o grupo de preditores de vetor de movimento é adicionado à lista de informações de movimento candidatas.
[0487] Uma fórmula (15) para transformar {CP1, CP2, CP4} em {CP1, CP2, CP3} é conforme a seguir: vx = vx3 + vx0 − vx1 � 2 (15) vy2 = vy3 + vy0 − vy1
[0488] Uma fórmula (16) para transformar {CP2, CP3, CP4} em {CP1, CP2, CP3} é conforme a seguir: vx = vx1 + vx2 − vx3 � 0 (16) vy0 = vy1 + vy2 − vy3
[0489] Uma fórmula (17) para transformar {CP1, CP3, CP4} em {CP1, CP2, CP3} é conforme a seguir: vx = vx3 + vx0 − vx2 � 1 (17) vy1 = vy3 + vy0 − vy2
[0490] Deve ser notado que a lista de informações de movimento candidatas pode ser construída usando-se somente os preditores de vetor de movimento candidatos preditos da maneira 1, ou a lista de informações de movimento candidatas pode ser construída usando-se somente os preditores de vetor de movimento candidatos preditos da maneira 2, ou a lista de informações de movimento candidatas pode ser construída usando-se tanto os preditores de vetor de movimento candidatos preditos da maneira 1 quanto os preditores de vetor de movimento candidatos preditos da maneira 2. Além disso, a lista de informações de movimento candidatas pode ser adicionalmente removida e classificada de acordo com uma regra pré-configurada, e então truncada ou preenchida até uma quantidade particular. Quando cada grupo de preditores de vetor de movimento candidatos na lista de informações de movimento candidatas inclui preditores de vetor de movimento de três pontos de controle,
essa lista de informações de movimento candidatas pode ser referida como uma lista tríplex; ou quando cada grupo de preditores de vetor de movimento candidatos na lista de informações de movimento candidatas inclui preditores de vetor de movimento de dois pontos de controle, essa lista de informações de movimento candidatas pode ser referida como uma lista de tuplas de 2.
[0491] Etapa S1222: O decodificador de vídeo analisa um fluxo de bits, para obter um índice.
[0492] Especificamente, o decodificador de vídeo pode analisar o fluxo de bits usando-se a unidade de decodificação de entropia. O índice é usado para indicar um grupo de vetores de movimento candidatos alvos do bloco de codificação atual, e o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle do bloco de codificação atual.
[0493] Etapa S1223: O decodificador de vídeo determina o grupo de vetores de movimento alvo na lista de informações de movimento candidatas com base no índice.
[0494] Especificamente, o grupo de vetores de movimento candidatos alvos determinado pelo decodificador de vídeo na lista de preditores de vetor de movimento MVP candidatos com base no índice é usado como preditores de vetor de movimento candidatos ideais (opcionalmente, quando um comprimento da lista de informações de movimento candidatas é 1, o fluxo de bits não precisa ser analisado para obter o índice, mas o grupo de vetores de movimento alvo pode ser determinado diretamente). Especificamente, os preditores de vetor de movimento candidatos ideais são preditores de vetor de movimento ideal de dois ou três pontos de controle. Por exemplo, o decodificador de vídeo obtém um número índice a partir do fluxo de bits através de análise, e então determina preditores de vetor de movimento ideal de dois ou três pontos de controle na lista de informações de movimento candidatas com base no número índice. Cada grupo de preditores de vetor de movimento candidatos na lista de informações de movimento candidatas corresponde a um respectivo número índice.
[0495] Etapa S1224: O decodificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim com base em parâmetro.
[0496] Especificamente, o grupo de vetores de movimento candidatos alvos inclui vetores de movimento de dois pontos de controle (o ponto de controle superior esquerdo e o ponto de controle superior direito) ou três pontos de controle (por exemplo, o ponto de controle superior esquerdo, o ponto de controle superior direito, e o ponto de controle inferior esquerdo). Para cada sub-bloco do bloco de codificação atual (um sub-bloco pode ser equivalente a uma unidade de compensação de movimento), informações de movimento de uma amostra em uma localização predefinida em uma unidade de compensação de movimento podem ser usadas para representar informações de movimento de todas as amostras na unidade de compensação de movimento. Se um tamanho da unidade de compensação de movimento é M x N (M é menor ou igual à largura W do bloco de codificação atual, N é menor ou igual à altura H do bloco de codificação atual, e M, N, W, e H são, cada um, um número inteiro positivo e são normalmente uma potência de 2, por exemplo, 4, 8, 16, 32, 64, ou 128), a amostra na localização predefinida pode ser um ponto de centro (M/2, N/2) da unidade de compensação de movimento, a amostra superior esquerdo (0, 0), uma amostra superior direito (M – 1, 0), ou uma amostra em uma outra localização. A Figura 8A mostra uma unidade de compensação de movimento 4 x 4, e a Figura 8B mostra uma unidade de compensação de movimento 8 x 8.
[0497] Coordenadas de um ponto de centro de uma unidade de compensação de movimento em relação a uma amostra em um vértice superior esquerdo do bloco de codificação atual são calculadas de acordo com uma fórmula (5), onde i é uma iésima unidade de compensação de movimento (da esquerda para a direita) em uma direção horizontal, j é uma jésima unidade de compensação de movimento (de superior a inferior) em uma direção vertical, e (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) representam coordenadas de um ponto de centro de uma (i, j)ésima unidade de compensação de movimento em relação à amostra no ponto de controle superior esquerdo do bloco de codificação atual. Então, com base em um tipo de modelo afim (6 parâmetros ou 4 parâmetros) do bloco de codificação atual, (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) são substituídos em uma fórmula de modelo afim de 6 parâmetros (6-1) ou (𝑥𝑥(𝑖𝑖,𝑗𝑗) , 𝑦𝑦(𝑖𝑖,𝑗𝑗) ) são substituídos em uma fórmula de modelo afim de 4 parâmetros (6-2) para obter informações de movimento de um ponto de centro de cada unidade de compensação de movimento, e as informações de movimento são usadas como vetores de movimento (𝑣𝑣𝑣𝑣(𝑖𝑖,𝑗𝑗) , 𝑣𝑣𝑣𝑣(𝑖𝑖,𝑗𝑗) ) de todas as amostras na unidade de compensação de movimento.
[0498] Opcionalmente, quando o bloco de codificação atual é um bloco de codificação de 6 parâmetros, e vetores de movimento de um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual e um modelo afim de 6 parâmetros construído usando- se os três pontos de controle, e um vetor de movimento de um sub-bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual e no modelo afim de 6 parâmetros construído usando-se os três pontos de controle. Por exemplo, o vetor de movimento do sub-bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim de 6 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo- se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim de 6 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de informações de movimento candidatas de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0499] Opcionalmente, quando o bloco de codificação atual é um bloco de codificação de 4 parâmetros, e vetores de movimento de um ou mais sub-blocos do bloco de codificação atual são obtidos com base no grupo de vetores de movimento candidatos alvos, se uma fronteira inferior do bloco de codificação atual se sobrepõe à fronteira inferior de uma CTU na qual o bloco de codificação atual está localizado, um vetor de movimento de um sub-bloco no canto inferior esquerdo do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual e um modelo afim de 4 parâmetros construído usando- se os dois pontos de controle, e um vetor de movimento de um sub-bloco no canto inferior direito do bloco de codificação atual é obtido através de cálculo com base em coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual e o modelo afim de 4 parâmetros construído usando-se os dois pontos de controle. Por exemplo, o vetor de movimento do sub-bloco no canto inferior esquerdo do bloco de codificação atual pode ser obtido substituindo-se as coordenadas de localização (0, H) do canto inferior esquerdo do bloco de codificação atual no modelo afim de 4 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior esquerdo no modelo afim para cálculo), e o vetor de movimento do sub-bloco no canto inferior direito do bloco de codificação atual pode ser obtido substituindo- se as coordenadas de localização (W, H) do canto inferior direito do bloco de codificação atual no modelo afim de 4 parâmetros (em vez de substituir coordenadas de um ponto central do sub-bloco no canto inferior direito no modelo afim para cálculo). Desse modo, quando um vetor de movimento de um ponto de controle inferior esquerdo e um vetor de movimento de um ponto de controle inferior direito do bloco de codificação atual são usados (por exemplo, uma lista de informações de movimento candidatas de um outro bloco é subsequentemente construída com base nos vetores de movimento do ponto de controle inferior esquerdo e do ponto de controle inferior direito do bloco atual), valores acurados em vez de valores estimados são usados. W é a largura do bloco de codificação atual, e H é a altura do bloco de codificação atual.
[0500] Etapa S1225: O decodificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco. Especificamente, um valor de amostra predito do bloco de codificação atual é predito com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual, e um índice de quadro de referência e uma direção de predição que é indicada pelo índice.
[0501] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle (ou usar fixamente um ponto de controle superior esquerdo e um ponto de controle superior direito de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle) no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, as informações que foram lidas a partir da memória podem ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando o desempenho de decodificação.
[0502] Em uma outra modalidade opcional em um lado de decodificador, se um primeiro bloco de codificação afim vizinho está localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima de um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado com base em um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho; ou se um primeiro bloco de codificação afim vizinho está localizado em uma CTU à esquerda de um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado com base em um ponto de controle superior direito e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0503] Etapa S1300: O decodificador de vídeo determina um modo de predição inter para o bloco de codificação atual.
[0504] Especificamente, o modo de predição inter pode ser um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP), ou pode ser um modo de fusão (merge).
[0505] Se o modo de predição inter determinado para o bloco de codificação atual é o modo AMVP, as etapas S1311 a S1316 são realizadas.
[0506] Se o modo de predição inter determinado para o bloco de codificação atual é o modo de fusão, as etapas S1321 a S1325 são realizadas.
[0507] Modo AMVP:
[0508] Etapa S1311: O decodificador de vídeo constrói uma lista de preditores de vetor de movimento MVP candidatos.
[0509] Especificamente, o decodificador de vídeo constrói a lista de preditores de vetor de movimento MVP candidatos (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de preditores de vetor de movimento MVP candidatos construída pode ser uma lista de preditores de vetor de movimento MVP candidatos tríplex ou uma lista de tuplas de 2 de preditores de vetor de movimento MVP candidatos. As duas maneiras são especificamente conforme a seguir:
[0510] Maneira 1: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se método de predição de vetor de movimento com base em um modelo de movimento.
[0511] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0512] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual com base no vetor de movimento do ponto de controle do primeiro bloco de codificação afim vizinho varia com um modelo de parâmetro do bloco de codificação atual. Portanto, a seguir se fornece descrições para diferentes casos.
[0513] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. A maneira de derivação pode ser conforme a seguir (conforme mostrado na Figura 9B):
[0514] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima do bloco de codificação atual, vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos (etapa S1301).
[0515] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento e coordenadas de localização dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho (etapa S1302).
[0516] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (1) e (2) (etapa S1303).
[0517] Nas fórmulas (1) e (2), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0518] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de decodificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0519] Nesse caso, nas fórmulas (1) e (2), (x7 − x6 ) é igual a cuW, (𝑣𝑣𝑣𝑣7 , 𝑣𝑣𝑣𝑣7 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 + cuW – 1, y4 + cuH – 1) em uma imagem, e (𝑣𝑣𝑣𝑣6 , 𝑣𝑣𝑣𝑣6 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 , y4 + cuH – 1) na imagem.
[0520] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) à esquerda do bloco de codificação atual, vetores de movimento de dois pontos de controle mais à direita do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x5 , y5 ) e um vetor de movimento (vx5 , vy5 ) de um ponto de controle superior direito do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos (etapa S1304).
[0521] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento e coordenadas de localização dos dois pontos de controle mais à direita do primeiro bloco de codificação afim vizinho (etapa S1305).
[0522] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (18) e (19) (etapa S1306). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣5 − × (𝑥𝑥0 − 𝑥𝑥5 ) + × (𝑦𝑦0 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (18) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣5 + × (𝑥𝑥0 − 𝑥𝑥5 ) + × (𝑦𝑦0 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5 (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣5 − × (𝑥𝑥1 − 𝑥𝑥5 ) + × (𝑦𝑦1 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (19) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣5 + × (𝑥𝑥1 − 𝑥𝑥5 ) + × (𝑦𝑦1 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5
[0523] Nas fórmulas (18) e (19), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0524] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, e não está localizado na CTU à esquerda do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitado no presente documento. Por exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual. Como um outro exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU à esquerda do bloco de codificação atual.
[0525] Opcionalmente, a lista de preditores de vetor de movimento MVP candidatos adicionalmente inclui um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho. Localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes das localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho (por exemplo, os pontos de controle incluídos no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, mas os pontos de controle incluídos no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho são um ponto de controle superior direito, um ponto de controle inferior direito, e um ponto de controle inferior esquerdo do segundo bloco de codificação afim vizinho).
[0526] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0527] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0528] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0529] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo,
coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (1), (2), e (3).
[0530] Nas fórmulas (1), (2), e (5), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0531] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de decodificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0532] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais à direita do primeiro bloco de codificação afim vizinho são obtidas. Por exemplo, coordenadas de localização (x5 , y5 ) e um vetor de movimento (vx5 , vy5 ) de um ponto de controle superior direito do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0533] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0534] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (18), (19), e (20). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣5 − × (𝑥𝑥2 − 𝑥𝑥5 ) + × (𝑦𝑦2 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣5 ) (20) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣5 + × (𝑥𝑥2 − 𝑥𝑥5 ) + × (𝑦𝑦2 − 𝑦𝑦5 ) 𝑦𝑦7 −𝑦𝑦5 𝑦𝑦7 −𝑦𝑦5
[0535] Nas fórmulas (18), (19), e (20), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0536] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, e não está localizado na CTU à esquerda do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Por exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual. Como um outro exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU à esquerda do bloco de codificação atual.
[0537] Opcionalmente, a lista de preditores de vetor de movimento MVP candidatos adicionalmente inclui um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho. Localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes das localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho (por exemplo, os pontos de controle incluídos no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, mas os pontos de controle incluídos no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho são um ponto de controle superior direito, um ponto de controle inferior direito, e um ponto de controle inferior esquerdo do segundo bloco de codificação afim vizinho).
[0538] Maneira 2: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se a combinação de ponto de controle–método de predição de vetor de movimento com base.
[0539] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S1211. Portanto, detalhes não são descritos no presente documento novamente.
[0540] Etapa S1312: O decodificador de vídeo analisa um fluxo de bits, para obter um índice e um vetor de movimento diferencial MVD.
[0541] Para detalhes, fazer referência à descrição da etapa S1212. Detalhes não são descritos no presente documento novamente.
[0542] Etapa S1313: O decodificador de vídeo determina o grupo de vetores de movimento alvo na lista de preditores de vetor de movimento MVP candidatos com base no índice.
[0543] Para detalhes, fazer referência à descrição da etapa S1213. Detalhes não são descritos no presente documento novamente.
[0544] Etapa S1314: O decodificador de vídeo determina o vetor de movimento do ponto de controle do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos e o vetor de movimento diferencial MVD que é obtido a partir do fluxo de bits através de análise.
[0545] Para detalhes, fazer referência à descrição da etapa S1214. Detalhes não são descritos no presente documento novamente.
[0546] Etapa S1315: O decodificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim com base em parâmetro.
[0547] Para detalhes, fazer referência à descrição da etapa S1215. Detalhes não são descritos no presente documento novamente.
[0548] Etapa S1316: O decodificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco.
[0549] Para detalhes, fazer referência à descrição da etapa S1216. Detalhes não são descritos no presente documento novamente.
[0550] Modo de fusão:
[0551] Etapa S1321: O decodificador de vídeo constrói uma lista de informações de movimento candidatas.
[0552] Especificamente, o decodificador de vídeo constrói a lista de informações de movimento candidatas (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de informações de movimento candidatas construída é uma lista tríplex de informações de movimento candidatas. As duas maneiras são especificamente conforme a seguir:
[0553] Maneira 1: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0554] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0555] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Os detalhes são conforme a seguir:
[0556] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0557] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0558] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (1), (2), e (3).
[0559] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Uma tupla de 2 de vetor de movimento candidato é formada e é adicionada à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (1) e (2).
[0560] Nas fórmulas (1), (2), e (3), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0561] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de decodificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0562] Nesse caso, nas fórmulas (1) e (2), (x7 − x6 ) é igual para cuW, (𝑣𝑣𝑣𝑣7 , 𝑣𝑣𝑣𝑣7 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 + cuW – 1, y4 + cuH – 1) em uma imagem, e (𝑣𝑣𝑣𝑣6 , 𝑣𝑣𝑣𝑣6 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 , y4 + cuH – 1) na imagem.
[0563] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação atual, coordenadas de localização e vetores de movimento de dois pontos de controle mais à direita do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x5 , y5 ) e um vetor de movimento (vx5 , vy5 ) de um ponto de controle superior direito do primeiro bloco de codificação afim vizinho e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0564] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 4 parâmetros) é formado com base nos vetores de movimento dos dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho.
[0565] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (18), (19), e (20).
[0566] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual.
Uma tupla de 2 de vetor de movimento candidato é formada e é adicionada à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (18) e (19).
[0567] Nas fórmulas (18), (19), e (20), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0568] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, e não está localizado na CTU à esquerda do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Por exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual. Como um outro exemplo, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU à esquerda do bloco de codificação atual.
[0569] Opcionalmente, a lista de informações de movimento candidatas adicionalmente inclui um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho. Localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes das localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho (por exemplo, os pontos de controle incluídos no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, mas os pontos de controle incluídos no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho são um ponto de controle superior direito, um ponto de controle inferior direito, e um ponto de controle inferior esquerdo do segundo bloco de codificação afim vizinho).
[0570] Maneira 2: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0571] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S1221. Portanto, detalhes não são descritos no presente documento novamente.
[0572] Etapa S1322: O decodificador de vídeo analisa um fluxo de bits, para obter um índice.
[0573] Para detalhes, fazer referência à descrição da etapa S1222. Detalhes não são descritos no presente documento novamente.
[0574] Etapa S1323: O decodificador de vídeo determina o grupo de vetores de movimento alvo na lista de informações de movimento candidatas com base no índice.
[0575] Para detalhes, fazer referência à descrição da etapa S1223. Detalhes não são descritos no presente documento novamente.
[0576] Etapa S1324: O decodificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim com base em parâmetro.
[0577] Para detalhes, fazer referência à descrição da etapa S1224. Detalhes não são descritos no presente documento novamente.
[0578] Etapa S1325: O decodificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco.
[0579] Para detalhes, fazer referência à descrição da etapa S1225.
Detalhes não são descritos no presente documento novamente.
[0580] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está à esquerda do bloco de codificação atual, informações sobre pontos de controle mais à direita do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle (ou usar fixamente um ponto de controle superior esquerdo e um ponto de controle superior direito de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle) no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, as informações que foram lidas a partir da memória podem ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando desempenho de decodificação.
[0581] Em uma outra modalidade opcional em um lado de decodificador, se um primeiro bloco de codificação afim vizinho está localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima de um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado com base em um ponto de controle inferior esquerdo, um ponto de controle inferior direito, e um ponto de controle superior direito do primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0582] Etapa S1400: O decodificador de vídeo determina um modo de predição inter para o bloco de codificação atual.
[0583] Especificamente, o modo de predição inter pode ser um modo de predição de vetor de movimento antecipada (Advanced Motion Vector Prediction, AMVP), ou pode ser um modo de fusão (merge).
[0584] Se o modo de predição inter determinado para o bloco de codificação atual é o modo AMVP, as etapas S1411 a S1416 são realizadas.
[0585] Se o modo de predição inter determinado para o bloco de codificação atual é o modo de fusão, as etapas S1421 a S1425 são realizadas.
[0586] Modo AMVP:
[0587] Etapa S1411: O decodificador de vídeo constrói uma lista de preditores de vetor de movimento MVP candidatos.
[0588] Especificamente, o decodificador de vídeo constrói a lista de preditores de vetor de movimento MVP candidatos (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de preditores de vetor de movimento MVP candidatos construída pode ser uma lista de preditores de vetor de movimento MVP candidatos tríplex ou uma lista de tuplas de 2 de preditores de vetor de movimento MVP candidatos. As duas maneiras são especificamente conforme a seguir:
[0589] Maneira 1: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0590] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0591] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual com base no vetor de movimento do ponto de controle do primeiro bloco de codificação afim vizinho varia com um modelo de parâmetro do bloco de codificação atual. Portanto, a seguir se fornece descrições para diferentes casos.
[0592] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. A maneira de derivação pode ser conforme a seguir (conforme mostrado na Figura 9C):
[0593] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação (Coding Tree Unit, CTU) acima do bloco de codificação atual, vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos (etapa S1401).
[0594] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e no vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, nas coordenadas de localização e no vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e nas coordenadas de localização e no vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho (etapa S1402).
[0595] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (21) e (22) (etapa S1403). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (21) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6 (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (22) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6
[0596] Nas fórmulas (21) e (22), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0597] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub- bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de decodificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0598] Nesse caso, nas fórmulas (21) e (22), (x7 − x6 ) é igual a cuW, (𝑣𝑣𝑣𝑣7 , 𝑣𝑣𝑣𝑣7 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 + cuW – 1, y4 + cuH – 1) em uma imagem, e (𝑣𝑣𝑣𝑣6 , 𝑣𝑣𝑣𝑣6 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 , y4 + cuH – 1) na imagem.
[0599] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0600] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0601] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0602] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e no vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, nas coordenadas de localização e no vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e nas coordenadas de localização e no vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0603] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (21), (22), e (23). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥2 − 𝑥𝑥6 ) + × (𝑦𝑦2 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (23) 𝑣𝑣𝑣𝑣2 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥2 − 𝑥𝑥6 ) + × (𝑦𝑦2 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6
[0604] Nas fórmulas (21), (22), e (23), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0605] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0606] Maneira 2: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0607] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S1211. Portanto, detalhes não são descritos no presente documento novamente.
[0608] Etapa S1412: O decodificador de vídeo analisa um fluxo de bits, para obter um índice e um vetor de movimento diferencial MVD.
[0609] Para detalhes, fazer referência à descrição da etapa S1212. Detalhes não são descritos no presente documento novamente.
[0610] Etapa S1413: O decodificador de vídeo determina o grupo de vetores de movimento alvo na lista de preditores de vetor de movimento MVP candidatos com base no índice.
[0611] Para detalhes, fazer referência à descrição da etapa S1213. Detalhes não são descritos no presente documento novamente.
[0612] Etapa S1414: O decodificador de vídeo determina o vetor de movimento do ponto de controle do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos e o vetor de movimento diferencial MVD que é obtido a partir do fluxo de bits através de análise.
[0613] Para detalhes, fazer referência à descrição da etapa S1214. Detalhes não são descritos no presente documento novamente.
[0614] Etapa S1415: O decodificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim com base em parâmetro.
[0615] Para detalhes, fazer referência à descrição da etapa S1215. Detalhes não são descritos no presente documento novamente.
[0616] Etapa S1416: O decodificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco.
[0617] Para detalhes, fazer referência à descrição da etapa S1216. Detalhes não são descritos no presente documento novamente.
[0618] Modo de fusão:
[0619] Etapa S1421: O decodificador de vídeo constrói uma lista de informações de movimento candidatas.
[0620] Especificamente, o decodificador de vídeo constrói a lista de informações de movimento candidatas (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de informações de movimento candidatas construída é uma lista tríplex de informações de movimento candidatas. As duas maneiras são especificamente conforme a seguir:
[0621] Maneira 1: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0622] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0623] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Os detalhes são conforme a seguir:
[0624] Se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação atual, coordenadas de localização e vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0625] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e o vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0626] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (21), (22), e (23).
[0627] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual pode ser substituído no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Uma tupla de 2 de vetor de movimento candidato é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (21) e (22).
[0628] Nas fórmulas (21), (22), e (23), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0629] Se o primeiro bloco de codificação afim vizinho não está localizado na CTU acima do bloco de codificação atual, uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual não é limitada no presente documento. Especificamente, nesse caso, a maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual pode ser igual à ou diferente da maneira de predição usada quando o primeiro bloco de codificação afim vizinho está localizado na CTU acima do bloco de codificação atual.
[0630] Maneira 2: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0631] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S1221. Portanto, detalhes não são descritos no presente documento novamente.
[0632] Etapa S1422: O decodificador de vídeo analisa um fluxo de bits, para obter um índice.
[0633] Para detalhes, fazer referência à descrição da etapa S1222. Detalhes não são descritos no presente documento novamente.
[0634] Etapa S1423: O decodificador de vídeo determina o grupo de vetores de movimento alvo na lista de informações de movimento candidatas com base no índice.
[0635] Para detalhes, fazer referência à descrição da etapa S1223. Detalhes não são descritos no presente documento novamente.
[0636] Etapa S1424: O decodificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim de 6 parâmetros.
[0637] Para detalhes, fazer referência à descrição da etapa S1224. Detalhes não são descritos no presente documento novamente.
[0638] Etapa S1425: O decodificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco.
[0639] Para detalhes, fazer referência à descrição da etapa S1225. Detalhes não são descritos no presente documento novamente.
[0640] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle (ou usar fixamente um ponto de controle superior esquerdo e um ponto de controle superior direito de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle) no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, as informações que foram lidas a partir da memória podem ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando desempenho de decodificação.
[0641] Em uma outra modalidade opcional em um lado de decodificador, independentemente de uma localização de um primeiro bloco de codificação afim vizinho em relação a um bloco de codificação atual, um grupo de preditores de vetor de movimento candidatos é determinado diretamente com base em um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho. Descrições detalhadas são conforme a seguir:
[0642] Etapa S1500: O decodificador de vídeo determina um modo de predição inter para o bloco de codificação atual.
[0643] Especificamente, o modo de predição inter pode ser um modo de predição de vetor de movimento antecipada (Advanced Motion Vector
Prediction, AMVP), ou pode ser um modo de fusão (merge).
[0644] Se o modo de predição inter determinado para o bloco de codificação atual é o modo AMVP, as etapas S1511 a S1516 são realizadas.
[0645] Se o modo de predição inter determinado para o bloco de codificação atual é o modo de fusão, as etapas S1521 a S1525 são realizadas.
[0646] Modo AMVP:
[0647] Etapa S1511: O decodificador de vídeo constrói uma lista de preditores de vetor de movimento MVP candidatos.
[0648] Especificamente, o decodificador de vídeo constrói a lista de preditores de vetor de movimento MVP candidatos (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de preditores de vetor de movimento MVP candidatos construída pode ser uma lista de preditores de vetor de movimento MVP candidatos tríplex ou uma lista de tuplas de 2 de preditores de vetor de movimento MVP candidatos. As duas maneiras são especificamente conforme a seguir:
[0649] Maneira 1: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se um método de predição de vetor de movimento com base em modelo de movimento.
[0650] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0651] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Uma maneira de predizer o vetor de movimento do ponto de controle do bloco de codificação atual com base no vetor de movimento do ponto de controle do primeiro bloco de codificação afim vizinho varia com um modelo de parâmetro do bloco de codificação atual. Portanto, a seguir se fornece descrições para diferentes casos.
[0652] A: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 4 parâmetros. Uma maneira de derivação pode ser conforme a seguir (conforme mostrado na Figura 9D):
[0653] Independentemente da localização do primeiro bloco de codificação afim vizinho em relação ao bloco de codificação atual, vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são diretamente obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho pode ser obtidos (etapa S1501).
[0654] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e o vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho (etapa S1502).
[0655] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Detalhes são mostrados nas fórmulas (21) e (22) (etapa S1503). (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (21) 𝑣𝑣𝑣𝑣0 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥0 − 𝑥𝑥6 ) + × (𝑦𝑦0 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6 (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦4 −𝑦𝑦6 � (𝑣𝑣𝑣𝑣7 −𝑣𝑣𝑣𝑣6 ) (𝑣𝑣𝑣𝑣4 −𝑣𝑣𝑣𝑣6 ) (22) 𝑣𝑣𝑣𝑣1 = 𝑣𝑣𝑣𝑣6 + × (𝑥𝑥1 − 𝑥𝑥6 ) + × (𝑦𝑦1 − 𝑦𝑦6 ) 𝑥𝑥7 −𝑥𝑥6 𝑦𝑦7 −𝑦𝑦6
[0656] Nas fórmulas (21) e (22), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, e (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual.
[0657] Opcionalmente, tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo quanto as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são calculadas com base em coordenadas de localização (x4 , y4 ) de um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho. As coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são (x4 + cuW, y4 + cuH), onde cuW é a largura do primeiro bloco de codificação afim vizinho, e cuH é a altura do primeiro bloco de codificação afim vizinho. Além disso, o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho. Pode ser constatado que nesse caso, uma distância horizontal entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é cuW, e uma distância horizontal entre o ponto de controle superior esquerdo e o ponto de controle superior direito do primeiro bloco de codificação afim vizinho é cuW. Porque cuW é normalmente uma potência de 2, em um processo de derivar o vetor de movimento do ponto de controle do bloco de codificação atual, uma maneira de deslocamento para a direita pode ser usada em vez de uma operação de divisão, para reduzir a complexidade de implantação. Pode ser constatado que tanto as coordenadas de localização do ponto de controle inferior esquerdo quanto as coordenadas de localização do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são obtidas através de derivação, em vez de serem lidas a partir da memória. Portanto, de acordo com esse método, uma quantidade de vezes de leitura a partir da memória pode ser ainda mais reduzida e o desempenho de decodificação pode ser aperfeiçoado. Em uma outra solução opcional, as coordenadas de localização do ponto de controle inferior esquerdo e as coordenadas de localização do ponto de controle inferior direito podem ser alternativamente pré-armazenadas na memória, e lidas a partir da memória para uso quando necessário.
[0658] Nesse caso, nas fórmulas (21) e (22), (x7 − x6 ) é igual a cuW, (𝑣𝑣𝑣𝑣7 , 𝑣𝑣𝑣𝑣7 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 + cuW – 1, y4 + cuH – 1) em uma imagem, e (𝑣𝑣𝑣𝑣6 , 𝑣𝑣𝑣𝑣6 ) pode ser obtido por leitura de um vetor de movimento de uma localização (x4 , y4 + cuH – 1) na imagem.
[0659] Opcionalmente, a lista de preditores de vetor de movimento MVP candidatos adicionalmente inclui um segundo grupo de vetores de movimento candidatos, o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho, e o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho.
[0660] B: O modelo de parâmetro do bloco de codificação atual é um modelo de transformação afim de 6 parâmetros. A maneira de derivação pode ser conforme a seguir:
[0661] Independentemente da localização do primeiro bloco de codificação afim vizinho em relação ao bloco de codificação atual, coordenadas de localização e vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são diretamente obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0662] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e o vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0663] O vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Detalhes são mostrados nas fórmulas (21), (22), e (23).
[0664] Nas fórmulas (21), (22), e (23), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0665] Opcionalmente, a lista de preditores de vetor de movimento MVP candidatos adicionalmente inclui um segundo grupo de vetores de movimento candidatos, o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho, e o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho.
[0666] Maneira 2: A lista de preditores de vetor de movimento MVP candidatos é construída usando-se uma combinação de ponto de controle– método de predição de vetor de movimento com base.
[0667] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S1211. Portanto, detalhes não são descritos no presente documento novamente.
[0668] Etapa S1512: O decodificador de vídeo analisa um fluxo de bits, para obter um índice e um vetor de movimento diferencial MVD.
[0669] Para detalhes, fazer referência à descrição da etapa S1212. Detalhes não são descritos no presente documento novamente.
[0670] Etapa S1513: O decodificador de vídeo determina o grupo de vetores de movimento alvo na lista de preditores de vetor de movimento MVP candidatos com base no índice.
[0671] Para detalhes, fazer referência à descrição da etapa S1213. Detalhes não são descritos no presente documento novamente.
[0672] Etapa S1514: O decodificador de vídeo determina o vetor de movimento do ponto de controle do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos e o vetor de movimento diferencial MVD que é obtido a partir do fluxo de bits através de análise.
[0673] Para detalhes, fazer referência à descrição da etapa S1214. Detalhes não são descritos no presente documento novamente.
[0674] Etapa S1515: O decodificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim com base em parâmetro.
[0675] Para detalhes, fazer referência à descrição da etapa S1215. Detalhes não são descritos no presente documento novamente.
[0676] Etapa S1516: O decodificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco.
[0677] Para detalhes, fazer referência à descrição da etapa S1216. Detalhes não são descritos no presente documento novamente.
[0678] Modo de fusão:
[0679] Etapa S1521: O decodificador de vídeo constrói a lista de informações de movimento candidatas.
[0680] Especificamente, o decodificador de vídeo constrói a lista de informações de movimento candidatas (também referida como uma lista de vetores de movimento candidatos afins) usando-se a unidade de predição inter (também referida como um módulo de predição inter). A construção pode ser realizada em qualquer uma das duas maneiras seguintes ou ser uma combinação das duas maneiras. A lista de informações de movimento candidatas construída é uma lista tríplex de informações de movimento candidatas. As duas maneiras são especificamente conforme a seguir:
[0681] Maneira 1: A lista de informações de movimento candidatas é construída usando-se um modelo de movimento método de predição de vetor de movimento com base em método de predição de vetor de movimento com base.
[0682] Primeiramente, todos os ou alguns blocos vizinhos do bloco de codificação atual são atravessados em uma ordem pré-especificada, para determinar um bloco de codificação afim vizinho nos blocos vizinhos. Pode haver um ou mais blocos de codificação afins vizinhos determinados. Por exemplo, blocos vizinhos A, B, C, D, e E mostrados na Figura 7A podem ser atravessados sequencialmente, para determinar um bloco de codificação afim vizinho nos blocos vizinhos A, B, C, D, e E. A unidade de predição inter determina um grupo de preditores de vetor de movimento candidatos (cada grupo de preditores de vetor de movimento candidatos é uma tupla de 2 ou um tríplex) com base em pelo menos um bloco de codificação afim vizinho. A seguir se usa um bloco de codificação afim vizinho como um exemplo para descrição. Para facilitar a descrição, o bloco de codificação afim vizinho é referido como um primeiro bloco de codificação afim vizinho. Os detalhes são conforme a seguir:
[0683] Um primeiro modelo afim é determinado com base em um vetor de movimento de um ponto de controle do primeiro bloco de codificação afim vizinho. Além disso, um vetor de movimento de um ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Os detalhes são conforme a seguir:
[0684] Independentemente da localização do primeiro bloco de codificação afim vizinho em relação ao bloco de codificação atual, coordenadas de localização e vetores de movimento de um ponto de controle superior esquerdo e dois pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho são diretamente obtidos. Por exemplo, coordenadas de localização (x4 , y4 ) e um vetor de movimento (vx4 , vy4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, coordenadas de localização (x6 , y6 ) e um vetor de movimento (vx6 , vy6 ) de um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e coordenadas de localização (x7 , y7 ) e um vetor de movimento (vx7 , vy7 ) de um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho podem ser obtidos.
[0685] Um primeiro modelo afim (o primeiro modelo afim obtido nesse caso é um modelo afim de 6 parâmetros) é formado com base nas coordenadas de localização e o vetor de movimento do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização e o vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho, e as coordenadas de localização e o vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
[0686] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual, coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual, e coordenadas de localização de um ponto de controle inferior esquerdo do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual, um vetor de movimento do ponto de controle superior direito do bloco de codificação atual, e um vetor de movimento do ponto de controle inferior esquerdo do bloco de codificação atual. Um vetor de movimento candidato tríplex é formado e é adicionado à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (21), (22), e (23).
[0687] Opcionalmente, o vetor de movimento do ponto de controle do bloco de codificação atual é predito com base no primeiro modelo afim. Por exemplo, coordenadas de localização de um ponto de controle superior esquerdo do bloco de codificação atual e coordenadas de localização de um ponto de controle superior direito do bloco de codificação atual podem ser substituídas no primeiro modelo afim, para predizer um vetor de movimento do ponto de controle superior esquerdo do bloco de codificação atual e um vetor de movimento do ponto de controle superior direito do bloco de codificação atual. Uma tupla de 2 de vetor de movimento candidato é formada e é adicionada à lista de informações de movimento candidatas. Detalhes são mostrados nas fórmulas (21) e (22).
[0688] Nas fórmulas (21), (22), e (23), (𝑥𝑥0 , 𝑦𝑦0 ) são as coordenadas do ponto de controle superior esquerdo do bloco de codificação atual, (𝑥𝑥1 , 𝑦𝑦1 ) são as coordenadas do ponto de controle superior direito do bloco de codificação atual, e (𝑥𝑥2 , 𝑦𝑦2 ) são as coordenadas do ponto de controle inferior esquerdo do bloco de codificação atual. Além disso, (𝑣𝑣𝑣𝑣0 , 𝑣𝑣𝑣𝑣0 ) é o vetor de movimento predito do ponto de controle superior esquerdo do bloco de codificação atual, (𝑣𝑣𝑣𝑣1 , 𝑣𝑣𝑣𝑣1 ) é o vetor de movimento predito do ponto de controle superior direito do bloco de codificação atual, e (𝑣𝑣𝑣𝑣2 , 𝑣𝑣𝑣𝑣2 ) é o vetor de movimento predito do ponto de controle inferior esquerdo do bloco de codificação atual.
[0689] Opcionalmente, a lista de informações de movimento candidatas adicionalmente inclui um segundo grupo de vetores de movimento candidatos, o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho, e o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho inclui um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho.
[0690] Maneira 2: A lista de informações de movimento candidatas é construída usando-se um método de predição de vetor de movimento com base em combinação de ponto de controle.
[0691] Especificamente, um fundamento da maneira 2 é igual àquele da maneira 2 na etapa S1221. Portanto, detalhes não são descritos no presente documento novamente.
[0692] Etapa S1522: O decodificador de vídeo analisa um fluxo de bits, para obter um índice.
[0693] Para detalhes, fazer referência à descrição da etapa S1222. Detalhes não são descritos no presente documento novamente.
[0694] Etapa S1523: O decodificador de vídeo determina o grupo de vetores de movimento alvo na lista de informações de movimento candidatas com base no índice.
[0695] Para detalhes, fazer referência à descrição da etapa S1223. Detalhes não são descritos no presente documento novamente.
[0696] Etapa S1524: O decodificador de vídeo obtém um vetor de movimento de cada sub-bloco do bloco de codificação atual com base no vetor de movimento determinado do ponto de controle do bloco de codificação atual usando-se um modelo de transformação afim com base em parâmetro.
[0697] Para detalhes, fazer referência à descrição da etapa S1224. Detalhes não são descritos no presente documento novamente.
[0698] Etapa S1525: O decodificador de vídeo realiza compensação de movimento com base no vetor de movimento de cada sub-bloco do bloco de codificação atual, para obter um valor de amostra predito de cada sub-bloco.
[0699] Para detalhes, fazer referência à descrição da etapa S1225. Detalhes não são descritos no presente documento novamente.
[0700] Pode ser entendido que, quando a unidade de árvore de codificação CTU na qual o primeiro bloco de codificação afim vizinho está localizado está acima do bloco de codificação atual, informações sobre pontos de controle mais inferiores do primeiro bloco de codificação afim vizinho foram lidas a partir da memória. Portanto, na supracitada solução, em um processo de construir um vetor de movimento candidato com base no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle inclui o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, em vez de usar fixamente um ponto de controle superior esquerdo, um ponto de controle superior direito, e um ponto de controle inferior esquerdo de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle (ou usar fixamente um ponto de controle superior esquerdo e um ponto de controle superior direito de um primeiro bloco de codificação vizinho como um primeiro grupo de pontos de controle) no estado da técnica. Portanto, de acordo com o método de determinar o primeiro grupo de pontos de controle nesse pedido, existe uma probabilidade muito alta de que as informações que foram lidas a partir da memória podem ser diretamente reutilizadas como informações (por exemplo, coordenadas de localização e vetores de movimento) sobre o primeiro grupo de pontos de controle, desse modo reduzindo uma quantidade de vezes de leitura a partir da memória e aperfeiçoando desempenho de decodificação.
[0701] A Figura 10 é um diagrama de blocos esquemático de uma implantação de um dispositivo de codificação ou um dispositivo de decodificação (resumidamente referido como um dispositivo de codificação 1000) de acordo com uma modalidade desse pedido. O dispositivo de codificação 1000 pode incluir um processador 1010, uma memória 1030, e um sistema de barramento
1050. O processador e a memória são conectados através do sistema de barramento. A memória é configurada para armazenar uma instrução. O processador é configurado para executar a instrução armazenada na memória. A memória do dispositivo de codificação armazena código de programa. O processador pode invocar o código de programa armazenado na memória, para realizar os métodos de codificação ou decodificação de vídeo descritos nesse pedido, e em particular, métodos de codificação ou decodificação de vídeo em vários novos modos de predição inter e informações de movimento predição métodos em vários novos modos de predição inter. Para evitar repetição, detalhes não são descritos no presente documento novamente.
[0702] Nessa modalidade desse pedido, o processador 1010 pode ser uma unidade de processamento central (Central Processing Unit, "CPU",
abreviadamente), ou o processador 1010 pode ser um outro processador de propósito geral, um processador de sinal digital (DSP), um circuito integrado de aplicação específica (ASIC), um arranjo de porta programável em campo (FPGA) ou um outro dispositivo de lógica programável, uma porta discreta ou a dispositivo de lógica de transistor, um componente de hardware discreto, ou semelhantes. O processador de propósito geral pode ser um microprocessador, ou o processador pode ser qualquer processador convencional ou semelhantes.
[0703] A memória 1030 pode incluir uma memória apenas para leitura (ROM) dispositivo ou um dispositivo de memória de acesso aleatório (RAM). Qualquer outro dispositivo de armazenamento de um tipo apropriado pode também ser usado como a memória 1030. A memória 1030 pode incluir código e dados 1031 acessados pelo processador 1010 através do barramento 1050. A memória 1030 pode adicionalmente incluir um sistema operante 1033 e um programa de aplicação 1035. O programa de aplicação 1035 inclui pelo menos um programa que permite que o processador 1010 realize método de codificação ou decodificação de vídeo descrito nesse pedido (particularmente o método de predição inter ou as informações de movimento método de predição descritos nesse pedido). Por exemplo, o programa de aplicação 1035 pode incluir aplicações 1 a N, e adicionalmente incluir um aplicação de codificação ou decodificação de vídeo (resumidamente referido como um aplicação de codificação de vídeo) para realizar o método de codificação ou decodificação de vídeo descrito nesse pedido.
[0704] O sistema de barramento 1050 pode adicionalmente incluir um barramento de potência, um barramento de controle, um barramento de sinal de status, e semelhantes, além de um barramento de dados. No entanto, para descrição clara, vários tipos de barramentos na figura são todos marcados como o sistema de barramento 1050.
[0705] Opcionalmente, o dispositivo de codificação 1000 pode adicionalmente incluir um ou mais dispositivos de emissão, por exemplo, um visor 1070. Em um exemplo, o visor 1070 pode ser um visor sensível ao toque que integra um visor com uma unidade sensível ao toque que pode operacionalmente captar uma entrada sensível ao toque. O visor 1070 pode ser conectado ao processador 1010 através do barramento 1050.
[0706] A Figura 11 é um diagrama ilustrativo de um exemplo de um sistema de codificação de vídeo 1100 incluindo o codificador 100 na Figura 2A e/ou o decodificador 200 na Figura 2B de acordo com uma modalidade exemplificativa. O sistema 1100 pode implementar uma combinação de várias tecnologias desse pedido. Em uma implantação descrita, o sistema de codificação de vídeo 1100 pode incluir um dispositivo de geração de imagem 1101, um codificador de vídeo 100, um decodificador de vídeo 200 (e/ou um codificador de vídeo implementado usando-se um circuito lógico 1107 de uma unidade de processamento 1106), uma antena 1102, um ou mais processadores 1103, uma ou mais memórias 1104, e/ou um dispositivo de exibição 1105.
[0707] Conforme mostrado na figura, o dispositivo de geração de imagem 1101, a antena 1102, a unidade de processamento 1106, o circuito lógico 1107, o codificador de vídeo 100, o decodificador de vídeo 200, o processador 1103, a memória 1104, e/ou o dispositivo de exibição 1105 podem se comunicar entre si. Conforme descrito, embora o sistema de codificação de vídeo 1100 seja ilustrado usando-se o codificador de vídeo 100 e o decodificador de vídeo 200, em diferentes exemplos, o sistema de codificação de vídeo 1100 pode incluir somente o codificador de vídeo 100 ou somente o decodificador de vídeo 200.
[0708] Em alguns exemplos, conforme mostrado na figura, o sistema de codificação de vídeo 1100 pode incluir a antena 1102. Por exemplo, a antena 1102 pode ser configurada para transmitir ou receber um fluxo de bits codificado de dados de vídeo. Além disso, em alguns exemplos, o sistema de codificação de vídeo 1100 pode incluir o dispositivo de exibição 1105. O dispositivo de exibição 1105 pode ser configurado para apresentar dados de vídeo. Em alguns exemplos, conforme mostrado na figura, o circuito lógico 1107 pode ser implementado pela unidade de processamento 1106. A unidade de processamento 1106 pode incluir lógica de circuito integrado de aplicação específica (application-specific integrated circuit, ASIC), um processador gráfico, um processador de propósito geral, ou semelhantes. O sistema de codificação de vídeo 1100 pode adicionalmente incluir um processador opcional 1103. O processador opcional 1103 pode similarmente incluir lógica de circuito integrado de aplicação específica (application-specific integrated circuit, ASIC), um processador gráfico, um processador de propósito geral, ou semelhantes. Em alguns exemplos, o circuito lógico 1107 pode ser implementado usando-se hardware, por exemplo, hardware dedicado para codificação de vídeo. O processador 1103 pode ser implementado usando-se software de propósito geral, um sistema operante, ou semelhantes. Além disso, a memória 1104 pode ser uma memória de qualquer tipo, por exemplo, uma memória volátil (por exemplo, uma memória de acesso aleatório estática (Static Random Access Memory, SRAM) ou uma memória de acesso aleatório dinâmica (Dynamic Random Access Memory, DRAM)) ou uma memória não volátil (por exemplo, uma memória flash). Em um exemplo não restritivo, a memória 1104 pode ser implementada por memória cache. Em alguns exemplos, o circuito lógico 1107 pode acessar a memória 1104 (por exemplo, para implementar um buffer de imagem). Em outros exemplos, o circuito lógico 1107 e/ou a unidade de processamento 1106 pode incluir uma memória (por exemplo, um cache) para implementar um buffer de imagem.
[0709] Em alguns exemplos, o codificador de vídeo 100 implementado usando-se o circuito lógico pode incluir um buffer de imagem (o qual é implementado, por exemplo, pela unidade de processamento 1106 ou a memória 1104) e uma unidade de processamento gráfico (a qual é implementada, por exemplo, pela unidade de processamento 1106). A unidade de processamento gráfico pode ser comunicativamente acoplada ao buffer de imagem. A unidade de processamento gráfico pode incluir o codificador de vídeo 100 implementado usando-se o circuito lógico 1107, para implementar vários módulos descritos com referência à Figura 1A e/ou qualquer outro sistema ou subsistema codificador descrito nesse relatório. O circuito lógico pode ser configurado para realizar várias operações descritas nesse relatório.
[0710] O decodificador de vídeo 200 pode ser implementado pelo circuito lógico 1107 em uma maneira similar, para implementar vários módulos descritos com referência para o decodificador 200 na Figura 1B e/ou qualquer outro sistema ou subsistema decodificador descrito nesse relatório. Em alguns exemplos, o decodificador de vídeo 200 implementado usando-se o circuito lógico pode incluir um buffer de imagem (o qual é implementado pela unidade de processamento 1106 ou pela memória 1104) e uma unidade de processamento gráfico (a qual é implementada, por exemplo, pela unidade de processamento 1106). A unidade de processamento gráfico pode ser comunicativamente acoplada ao buffer de imagem. A unidade de processamento gráfico pode incluir o decodificador de vídeo 200 implementado usando-se o circuito lógico 1107,
para implementar vários módulos descritos com referência à Figura 1B e/ou qualquer outro sistema ou subsistema decodificador descrito nesse relatório.
[0711] Em alguns exemplos, a antena 1102 do sistema de codificação de vídeo 1100 pode ser configurado para receber um fluxo de bits codificado de dados de vídeo. Conforme descrito, o fluxo de bits codificado pode incluir dados, um indicador, um valor de índice, modo de dados de seleção, ou semelhantes que são relacionados a codificação de quadro de vídeo e que são descritos nesse relatório, por exemplo, dados relacionados à divisão para codificação (por exemplo, um coeficiente de transformada ou um coeficiente de transformada quantizado, um indicador opcional (conforme descrito), e/ou dados definindo a divisão para codificação). O sistema de codificação de vídeo 1100 pode adicionalmente incluir o decodificador de vídeo 200 que é acoplado à antena 1102 e que é configurado para decodificar o fluxo de bits codificado. O dispositivo de exibição 1105 é configurado para apresentar um quadro de vídeo.
[0712] Nas etapas do supracitado procedimento de método, uma ordem de descrição das etapas não representa uma ordem de execução das etapas. As etapas podem ou não ser realizadas de acordo com a supracitada ordem de descrição. Por exemplo, a etapa S1211 pode ser realizada depois da etapa S1212, ou pode ser realizada antes da etapa S1212, e a etapa S1221 pode ser realizada depois da etapa S1222, ou pode ser realizada antes da etapa S1222. Outras etapas não são enumeradas uma a uma no presente documento.
[0713] Uma pessoa versada na técnica pode entender que as funções descritas com referência a vários blocos lógicos, módulos, e etapas de algoritmo ilustrativas reveladas e descritas nesse relatório podem ser implementados por hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas por software, as funções descritas com referência aos blocos lógicos, módulos, e etapas ilustrativas podem ser armazenadas no ou transmitidas em uma mídia legível por computador como uma ou mais instruções ou código e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir uma mídia de armazenamento legível por computador, o qual corresponde a uma mídia tangível tal como uma mídia de armazenamento de dados, ou pode incluir qualquer mídia de comunicações que facilite transmissão de um programa de computador de um lugar para outro (por exemplo, de acordo com um protocolo de comunicações). Dessa maneira, a mídia legível por computador pode em geral corresponder a: (1) uma mídia de armazenamento legível por computador tangível não transitório, ou (2) uma mídia de comunicações tal como um sinal ou um portador. A mídia de armazenamento de dados pode ser qualquer mídia utilizável que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código, e/ou estruturas de dados para implementar as tecnologias descritas nesse pedido. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0714] A título de exemplo, porém, sem limitação, tal mídia de armazenamento legível por computador pode incluir uma RAM, uma ROM, uma EEPROM, um CD-ROM ou um outro aparelho de armazenamento de disco compacto, a aparelho de armazenamento disco magnético ou um outro aparelho de armazenamento magnético, a memória flash, ou qualquer outra mídia que pode ser usado para armazenar código de programa desejado em uma forma de uma instrução ou uma estrutura de dados e que pode ser acessado por um computador. Além disso, qualquer conexão é apropriadamente referida como uma mídia legível por computador. Por exemplo, se uma instrução é transmitida a partir de um site da web, um servidor, ou uma outra fonte remota através de um cabo coaxial, uma fibra óptica, um par trançado, uma linha de assinante digital (DSL), ou a tecnologia sem fio tal como infravermelho, rádio, ou micro- onda, o cabo coaxial, a fibra óptica, o par trançado, a DSL, ou a tecnologia sem fio tal como infravermelho, rádio, ou micro-onda é incluída em uma definição da mídia. No entanto, deve ser entendido que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem conexões, portadores, sinais, ou outra mídia transitória, mas na verdade significam mídia de armazenamento tangível não transitória. Discos magnéticos e discos ópticos usados nesse relatório incluem um disco compacto (CD), um disco laser, um disco óptico, um disco versátil digital (DVD), e um disco Blu-ray. Os discos magnéticos normalmente reproduzem dados magneticamente, enquanto que os discos ópticos reproduzem dados opticamente com lasers. Combinações dos supracitados devem também ser incluídas no escopo das mídias legíveis por computador.
[0715] Uma instrução pode ser executada por um ou mais processadores tais como um ou mais processadores de sinal digital (DSP),
microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASIC), arranjos lógicos programáveis por campo (FPGA), ou outros circuitos integrados ou discretos lógicos equivalentes. Portanto, o termo "processador" usado nesse relatório pode ser qualquer das estruturas supracitadas ou qualquer outra estrutura adequada para implantar as tecnologias descritas nesse relatório. Além disso, em alguns aspectos, as funções descritas com referência aos blocos lógicos, módulos, e etapas ilustrativas descritas nesse relatório podem ser fornecidas dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou podem ser incorporadas em um codec combinado. Além disso, as tecnologias podem ser completamente implantadas em um ou mais circuitos ou elementos lógicos.
[0716] As tecnologias nesse pedido podem ser implantadas em vários aparelhos ou dispositivos, incluindo um aparelho de mão 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 descritas nesse pedido para enfatizar aspectos funcionais dos aparelhos configurados para realizar as tecnologias reveladas, mas não são necessariamente implantadas por diferentes unidades de hardware. Na verdade, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec em combinação com software e/ou firmware apropriado(s), ou podem ser fornecidas por unidades de hardware operáveis interativamente (incluindo um ou mais processadores descritos acima).
[0717] As supracitadas descrições são meramente exemplos de implantações específicas desse pedido, mas não são destinadas a limitar o escopo de proteção desse pedido. Qualquer variação ou substituição prontamente concebida por uma pessoa versada na técnica dentro do escopo técnico revelado nesse pedido estará abrangida pelo escopo de proteção desse pedido. Portanto, o escopo de proteção desse pedido será sujeito ao escopo de proteção das reivindicações.

Claims (33)

REIVINDICAÇÕES
1. Método de codificação, compreendendo: determinar um grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins de acordo com um critério de custo de distorção de taxa, em que o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle de um bloco de codificação atual, a lista de vetores de movimento candidatos afins compreende pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada com relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU; e codificar um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido.
2. Método, de acordo com a reivindicação 1, em que o primeiro grupo de vetores de movimento candidatos ser obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho é especificamente: o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro modelo afim, e o primeiro modelo afim é determinado com base em vetores de movimento e em coordenadas de localização do primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho.
3. Método, de acordo com a reivindicação 1 ou 2, em que a lista de vetores de movimento candidatos afins compreende adicionalmente um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho; em que localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes de localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho, ou o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho compreende um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, em que o método compreende adicionalmente: buscar, dentro de uma faixa de busca predefinida de acordo com o critério de custo de distorção de taxa usando-se o grupo de vetores de movimento candidatos alvos como um ponto de busca inicial, por vetores de movimento que são de um grupo de pontos de controle e que têm custos mais baixos; e determinar vetores de movimento diferenciais MVDs entre o grupo de vetores de movimento candidatos alvos e os vetores de movimento do grupo de pontos de controle; e a codificação de um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido compreende: codificar os MVDs e o índice correspondente ao grupo de vetores de movimento candidatos alvos no fluxo de bits a ser transmitido.
5. Método, de acordo com qualquer uma das reivindicações 1 a 3, em que a codificação de um índice correspondente ao grupo de vetores de movimento candidatos alvos em um fluxo de bits a ser transmitido compreende: codificar o índice correspondente ao grupo de vetores de movimento candidatos alvos, um índice de quadro de referência, e um índice correspondente a uma direção de predição no fluxo de bits a ser transmitido.
6. Método, de acordo com qualquer uma das reivindicações 1 a 5, em que o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU compreende: se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação CTU acima do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
7. Método, de acordo com a reivindicação 6, em que se o primeiro bloco de codificação afim vizinho estiver localizado na CTU acima do bloco atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende adicionalmente um ponto de controle superior esquerdo ou um ponto de controle superior direito do primeiro bloco de codificação afim vizinho.
8. Método, de acordo com qualquer uma das reivindicações 1 a 5, em que o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU compreende: se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende um ponto de controle superior direito e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
9. Método, de acordo com a reivindicação 8, em que se o primeiro bloco de codificação afim vizinho estiver localizado na CTU à esquerda do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende adicionalmente um ponto de controle superior esquerdo ou um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho.
10. Método, de acordo com qualquer uma das reivindicações 1 a 5, em que quando o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreender o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende adicionalmente um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho.
11. Método, de acordo com qualquer uma das reivindicações 1 a 10, em que tanto as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho quanto coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são derivadas com base em coordenadas de localização (x4 , y4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são representadas por (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são representadas por (x4 + cuW, y4 + cuH), em que cuW é uma largura do primeiro bloco de codificação afim vizinho, e cuH é uma altura do primeiro bloco de codificação afim vizinho.
12. Método, de acordo com a reivindicação 11, em que um vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e um vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho.
13. Método, de acordo com qualquer uma das reivindicações 1 a 12, em que o primeiro grupo de vetores de movimento candidato são preditores de vetor de movimento candidatos de um grupo de pontos de controle do bloco de codificação atual obtidos com base em vetores de movimento do primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho.
14. Método, de acordo com qualquer uma das reivindicações 3 a 12, em que o segundo grupo de vetores de movimento candidatos são preditores de vetor de movimento candidatos de um grupo de pontos de controle do bloco de codificação atual obtidos com base em vetores de movimento do segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho.
15. Método de decodificação, compreendendo: analisar um fluxo de bits para obter um índice, em que o índice é usado para indicar um grupo de vetores de movimento candidatos alvos de um bloco de codificação atual; determinar o grupo de vetores de movimento candidatos alvos em uma lista de vetores de movimento candidatos afins com base no índice, em que o grupo de vetores de movimento candidatos alvos representa preditores de vetor de movimento de um grupo de pontos de controle do bloco de codificação atual, a lista de vetores de movimento candidatos afins compreende pelo menos um primeiro grupo de vetores de movimento candidatos, o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho, e o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU; obter vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos; e predizer um valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual.
16. Método, de acordo com a reivindicação 15, em que o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro grupo de pontos de controle de um primeiro bloco de codificação afim vizinho é especificamente: o primeiro grupo de vetores de movimento candidatos é obtido com base em um primeiro modelo afim, e o primeiro modelo afim é determinado com base em vetores de movimento e em coordenadas de localização do primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho; e a obtenção de vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvos é especificamente: obter os vetores de movimento do um ou mais sub-blocos do bloco de codificação atual com base em um segundo modelo afim, em que o segundo modelo afim é determinado com base no grupo de vetores de movimento candidatos alvos e em coordenadas de localização de um grupo de pontos de controle do bloco de codificação atual.
17. Método, de acordo com a reivindicação 15 ou 16, em que a lista de vetores de movimento candidatos afins compreende adicionalmente um segundo grupo de vetores de movimento candidatos, e o segundo grupo de vetores de movimento candidatos é obtido com base em um segundo grupo de pontos de controle de um segundo bloco de codificação afim vizinho; em que localizações de um ou mais pontos de controle no segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho em relação ao segundo bloco de codificação afim vizinho são diferentes de localizações de um ou mais pontos de controle no primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho em relação ao primeiro bloco de codificação afim vizinho, ou o segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho compreende um ponto de controle inferior esquerdo e um ponto de controle inferior direito do segundo bloco de codificação afim vizinho.
18. Método, de acordo com qualquer uma das reivindicações 15 a 17, em que a obtenção de vetores de movimento de um ou mais sub-blocos do bloco de codificação atual com base no grupo de vetores de movimento candidatos alvo compreende: obter um novo grupo de vetores de movimento candidatos com base em um vetor de movimento diferencial MVD obtido a partir do fluxo de bits através de análise e no grupo de vetores de movimento candidatos alvos indicado pelo índice; e obter os vetores de movimento do um ou mais sub-blocos do bloco de codificação atual com base no novo grupo de vetores de movimento candidatos.
19. Método, de acordo com qualquer uma das reivindicações 15 a 17, em que a predição de um valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual compreende: predizer o valor de amostra predito do bloco de codificação atual com base nos vetores de movimento do um ou mais sub-blocos do bloco de codificação atual e em um índice de quadro de referência e em uma direção de predição que é indicada pelo índice.
20. Método, de acordo com qualquer uma das reivindicações 15 a 19, em que o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU compreende:
se o primeiro bloco de codificação afim vizinho estiver localizado em uma unidade de árvore de codificação CTU acima do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende um ponto de controle inferior esquerdo e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
21. Método, de acordo com a reivindicação 20, em que se o primeiro bloco de codificação afim vizinho estiver localizado na CTU acima do bloco atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende adicionalmente um ponto de controle superior esquerdo ou um ponto de controle superior direito do primeiro bloco de codificação afim vizinho.
22. Método, de acordo com qualquer uma das reivindicações 15 a 19, em que o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho são pontos de controle determinados com base em uma unidade de árvore de codificação CTU localizada em relação ao bloco de codificação atual, em que o primeiro bloco de codificação afim vizinho está localizado na CTU compreende: se o primeiro bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende um ponto de controle superior direito e um ponto de controle inferior direito do primeiro bloco de codificação afim vizinho.
23. Método, de acordo com a reivindicação 22, em que se o primeiro bloco de codificação afim vizinho estiver localizado na CTU à esquerda do bloco de codificação atual, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende adicionalmente um ponto de controle superior esquerdo ou um ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho.
24. Método, de acordo com qualquer uma das reivindicações 15 a 19, em que quando o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende o ponto de controle inferior esquerdo e o ponto de controle inferior direito do primeiro bloco de codificação afim vizinho, o primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho compreende adicionalmente um ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho.
25. Método, de acordo com qualquer uma das reivindicações 15 a 24, em que tanto coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho quanto coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são derivadas com base em coordenadas de localização (x4 , y4 ) do ponto de controle superior esquerdo do primeiro bloco de codificação afim vizinho, as coordenadas de localização (x6 , y6 ) do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho são representadas por (x4 , y4 + cuH), e as coordenadas de localização (x7 , y7 ) do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho são representadas por (x4 + cuW, y4 + cuH), em que cuW é uma largura do primeiro bloco de codificação afim vizinho, e cuH é uma altura do primeiro bloco de codificação afim vizinho.
26. Método, de acordo com a reivindicação 25, em que um vetor de movimento do ponto de controle inferior esquerdo do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior esquerdo do primeiro bloco de codificação afim vizinho, e um vetor de movimento do ponto de controle inferior direito do primeiro bloco de codificação afim vizinho é um vetor de movimento de um sub-bloco inferior direito do primeiro bloco de codificação afim vizinho.
27. Método, de acordo com qualquer uma das reivindicações 15 a 26, em que o primeiro grupo de vetores de movimento candidatos são preditores de vetor de movimento candidatos de um grupo de pontos de controle do bloco de codificação atual obtidos com base em vetores de movimento do primeiro grupo de pontos de controle do primeiro bloco de codificação afim vizinho.
28. Método, de acordo com qualquer uma das reivindicações 17 a 26, em que o segundo grupo de vetores de movimento candidatos são preditores de vetor de movimento candidatos de um grupo de pontos de controle do bloco de codificação atual obtidos com base em vetores de movimento do segundo grupo de pontos de controle do segundo bloco de codificação afim vizinho.
29. Dispositivo de codificação de dados de vídeo, compreendendo: uma memória, configurada para armazenar dados de vídeo em uma forma de um fluxo de bits; e um codificador de vídeo, configurado para realizar qualquer um dos métodos conforme definido em qualquer uma das reivindicações 1 a 14.
30. Dispositivo de decodificação de dados de vídeo, compreendendo: uma memória, configurada para armazenar dados de vídeo em uma forma de um fluxo de bits; e um decodificador de vídeo, configurado para realizar qualquer um dos métodos conforme definido em qualquer uma das reivindicações 15 a 28.
31. Mídia legível por computador não transitória armazenando instruções de computador, que quando executadas por um ou mais processadores, fazem com que o um ou mais processadores realizem qualquer um dos métodos conforme definidos em qualquer uma das reivindicações 1 a 28.
32. Dispositivo de codificação de dados de vídeo, compreendendo: uma memória contendo instruções; e um processador em comunicação com a memória e mediante execução das instruções, é configurado para realizar qualquer um dos métodos conforme definido em qualquer uma das reivindicações 1 a 14.
33. Dispositivo de decodificação de dados de vídeo, compreendendo: uma memória contendo instruções; e um processador em comunicação com a memória e mediante execução das instruções, é configurado para realizar qualquer um dos métodos conforme definido em qualquer uma das reivindicações 15 a 28.
BR112021000349-5A 2018-07-11 2018-10-16 Codificador de vídeo, decodificador de vídeo, e método correspondente BR112021000349A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862696832P 2018-07-11 2018-07-11
US62/696,832 2018-07-11
US201862737858P 2018-09-27 2018-09-27
US62/737,858 2018-09-27
PCT/CN2018/110436 WO2020010741A1 (zh) 2018-07-11 2018-10-16 视频编码器、视频解码器及相应方法

Publications (1)

Publication Number Publication Date
BR112021000349A2 true BR112021000349A2 (pt) 2021-04-06

Family

ID=69142148

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021000349-5A BR112021000349A2 (pt) 2018-07-11 2018-10-16 Codificador de vídeo, decodificador de vídeo, e método correspondente

Country Status (9)

Country Link
US (2) US11575928B2 (pt)
EP (1) EP3817382A4 (pt)
JP (2) JP7488249B2 (pt)
KR (2) KR20240027856A (pt)
CN (1) CN112400318B (pt)
BR (1) BR112021000349A2 (pt)
MX (1) MX2021000351A (pt)
SG (1) SG11202100253XA (pt)
WO (1) WO2020010741A1 (pt)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11582458B2 (en) * 2018-08-29 2023-02-14 Vid Scale, Inc. Adaptive motion vector precision for affine motion model based video coding
WO2023055138A1 (ko) * 2021-09-29 2023-04-06 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6258212B2 (ja) * 2012-10-02 2018-01-10 シャープ株式会社 画像復号装置
US10785501B2 (en) * 2012-11-27 2020-09-22 Squid Design Systems Pvt Ltd System and method of performing motion estimation in multiple reference frame
CN103338372A (zh) * 2013-06-15 2013-10-02 浙江大学 一种视频处理方法及装置
CN112087630B (zh) * 2014-09-30 2022-04-08 华为技术有限公司 图像预测方法、装置、解码器及存储介质
CN104363451B (zh) * 2014-10-27 2019-01-25 华为技术有限公司 图像预测方法及相关装置
CN107809642B (zh) * 2015-02-16 2020-06-16 华为技术有限公司 用于视频图像编码和解码的方法、编码设备和解码设备
CN104935938B (zh) * 2015-07-15 2018-03-30 哈尔滨工业大学 一种混合视频编码标准中帧间预测方法
CN108600749B (zh) * 2015-08-29 2021-12-28 华为技术有限公司 图像预测的方法及设备
US10560712B2 (en) * 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
US10798394B2 (en) * 2018-06-27 2020-10-06 Avago Technologies International Sales Pte. Limited Low complexity affine merge mode for versatile video coding
US11057636B2 (en) * 2018-09-17 2021-07-06 Qualcomm Incorporated Affine motion prediction
IL304953A (en) * 2018-09-21 2023-10-01 Guangdong Oppo Mobile Telecommunications Corp Ltd A method of encoding/decoding image signals and a device therefor

Also Published As

Publication number Publication date
JP7488249B2 (ja) 2024-05-21
US11575928B2 (en) 2023-02-07
CN112400318B (zh) 2024-04-12
KR20240027856A (ko) 2024-03-04
EP3817382A4 (en) 2021-07-28
JP2021524708A (ja) 2021-09-13
KR20210027475A (ko) 2021-03-10
US20230239494A1 (en) 2023-07-27
US20210136404A1 (en) 2021-05-06
MX2021000351A (es) 2021-05-12
JP2023089018A (ja) 2023-06-27
WO2020010741A1 (zh) 2020-01-16
CN112400318A (zh) 2021-02-23
EP3817382A1 (en) 2021-05-05
KR102639425B1 (ko) 2024-02-21
SG11202100253XA (en) 2021-02-25

Similar Documents

Publication Publication Date Title
US11252436B2 (en) Video picture inter prediction method and apparatus, and codec
KR102288178B1 (ko) 움직임 벡터 예측 방법 및 장치
BR112020014654A2 (pt) compensação de movimento afim em codificação de vídeo
BR112020012732A2 (pt) método e aparelho para predição de informações de movimento de bloco de imagens, codificador, e decodificador
BR122021011303B1 (pt) Método e aparelho de decodificação de imagem, método e aparelho de codificação de imagem e mídias de armazenamento não transitória legíveis por computador
ES2972326T3 (es) Un codificador, un decodificador y métodos correspondientes para el modo de fusión
KR102606146B1 (ko) 모션 벡터 예측 방법 및 관련 장치
AU2023200956B2 (en) Video data inter prediction method and apparatus
BR112021007865A2 (pt) método e aparelho de predição de imagem
BR112021004505A2 (pt) método de predição de vetor de movimento baseado em modelo de movimento afim e dispositivo
US20230239494A1 (en) Video encoder, video decoder, and corresponding method
BR122023020161A2 (pt) Processo de codificação para modo de partição geométrica
KR20210019556A (ko) 움직임 벡터 예측 방법 및 장치, 인코더, 그리고 디코더
BR112020018923A2 (pt) Método e aparelho de predição inter bidirecional
CN110868602B (zh) 视频编码器、视频解码器及相应方法
BR112021011307A2 (pt) Método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória
BR112020024666A2 (pt) método e aparelho de obtenção de vetor de movimento
BR112021005875B1 (pt) Dispositivo de decodificação de imagem, método de decodificação de imagem, dispositivo de codificação de imagem e método de codificação de imagem
US12028527B2 (en) Video encoder, video decoder, and corresponding method
CN118301333A (en) Video encoder, video decoder and corresponding methods
CN118301334A (en) Video encoder, video decoder and corresponding methods
CN118301332A (en) Video encoder, video decoder and corresponding methods
BR122023022737A2 (pt) Método para determinar segunda informação de movimento candidata, dispositivo e mídia de armazenamento legível por computador