BR112021007919A2 - método e aparelho de predição de imagem de vídeo - Google Patents

método e aparelho de predição de imagem de vídeo Download PDF

Info

Publication number
BR112021007919A2
BR112021007919A2 BR112021007919-0A BR112021007919A BR112021007919A2 BR 112021007919 A2 BR112021007919 A2 BR 112021007919A2 BR 112021007919 A BR112021007919 A BR 112021007919A BR 112021007919 A2 BR112021007919 A2 BR 112021007919A2
Authority
BR
Brazil
Prior art keywords
block
indicator
list
value
motion vector
Prior art date
Application number
BR112021007919-0A
Other languages
English (en)
Inventor
Huanbang Chen
Haitao Yang
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 BR112021007919A2 publication Critical patent/BR112021007919A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

MÉTODO E APARELHO DE PREDIÇÃO DE IMAGEM DE VÍDEO. Um método e aparelho de predição de imagem de vídeo são fornecidos, para fornecer uma maneira de determinar um comprimento máximo de uma lista de vetores de movimento candidatos correspondentes a um modo de fusão de sub-bloco. O método compreende: analisar um primeiro indicador a partir de um fluxo de bits; quando o primeiro indicador indicar que um modo candidato usado para predizer de modo inter o bloco a ser processado compreende um modo afim, analisar um segundo indicador a partir do fluxo de bits, em que o segundo indicador é usado para indicar um comprimento máximo de uma primeira lista de vetores de movimento candidatos, e a primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para o bloco a ser processado, um modo de predição de fusão de sub-bloco é usado para o bloco a ser processado; e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador.

Description

“MÉTODO E APARELHO DE PREDIÇÃO DE IMAGEM DE VÍDEO” CAMPO DA TÉCNICA
[0001] Esse pedido se relaciona ao campo de tecnologias de codificação de imagem, e em particular, a um método e aparelho de predição de imagem de vídeo.
FUNDAMENTOS
[0002] Com o desenvolvimento das tecnologias das informações, serviços de vídeo tais como televisão de alta definição, conferência por rede, IPTV, e televisão 3D se desenvolvem rapidamente. Por causa de vantagens tais como intuitividade e alta eficiência, sinais de vídeo se tornam uma maneira principal de obter informações no dia a dia das pessoas. Os sinais de vídeo compreendem um grande montante de dados, e, portanto, ocupam um grande montante de largura de banda de transmissão e espaço de armazenamento. Para transmitir e armazenar os sinais de vídeo eficazmente, codificação por compressão precisa ser realizada nos sinais de vídeo. Uma tecnologia de compressão de vídeo se tornou gradualmente uma indispensável tecnologia chave no campo de aplicativo de vídeo.
[0003] Um princípio básico de compressão de codificação de vídeo é reduzir ao máximo a redundância usando-se correlações entre um domínio de espaço, um domínio de tempo, e uma palavra-código. Atualmente, um método que prevalece é implantar compressão de codificação de vídeo usando-se uma disposição de codificação de vídeo híbrida com base em bloco de imagem e realizando-se etapas tais como predição (incluindo predição intra e predição inter), transformada, quantização, e codificação por entropia.
[0004] Em várias soluções de codificação/decodificação de vídeo, estimativa de movimento/compensação de movimento em predição inter é a tecnologia chave que afeta o desempenho de codificação/decodificação. Na predição inter existente, predição de vetor de movimento de fusão com base em sub-bloco é adicionada com base em predição de compensação de movimento (motion compensation, MC) com base em bloco na qual um modelo de movimento translacional é usado. Na tecnologia existente, não há maneira viável de determinar um comprimento máximo de uma lista de vetores de movimento candidatos correspondentes a um modo de fusão de sub-bloco.
SUMÁRIO
[0005] Esse pedido fornece um método e aparelho de predição de imagem de vídeo, para fornecer uma maneira de determinar um comprimento máximo de uma lista de vetores de movimento candidatos em um modo de fusão de sub-bloco.
[0006] De acordo com um primeiro aspecto, uma modalidade desse pedido fornece um método de predição de imagem de vídeo, incluindo: analisar um primeiro indicador (por exemplo, sps_affine_enable_flag) a partir de um fluxo de bits; Quando o primeiro indicador indicar que um modo candidato usado para predizer de modo inter um bloco a ser processado compreende um modo afim, analisar um segundo indicador (por exemplo, five_minus_max_num_subblock_merge_cand ou six_minus_max_num_subblock_merge_cand) a partir do fluxo de bits, onde o segundo indicador é usado para indicar um comprimento máximo de uma primeira lista de vetores de movimento candidatos, e a primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para o bloco a ser processado, um modo de predição de fusão de sub-bloco é usado para o bloco a ser processado; e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador.
[0007] O método supracitado fornece uma maneira de determinar um comprimento máximo de uma lista de vetores de movimento candidatos no modo de fusão de sub-bloco. Isso é simples e fácil de implantar.
[0008] Em um possível projeto, antes da determinação do comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador, o método adicionalmente compreende: analisar um terceiro indicador (por exemplo, sps_sbtmvp_enabled_flag) a partir do fluxo de bits, onde o terceiro indicador é usado para indicar um estado de presença de um modo de predição de vetor de movimento temporal avançada no modo de predição de fusão de sub-bloco.
[0009] Em um possível projeto, o modo de predição de fusão de sub- bloco compreende pelo menos um dentre um modo de predição de vetor de movimento planar, o modo de predição de vetor de movimento temporal avançada, ou o modo afim; e quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, a determinação do comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador compreende: determinar um primeiro número com base no terceiro indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador e no primeiro número.
[0010] Por exemplo, quando sps_sbtmvp_enabled_flag = 0, isso indica que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco. Por exemplo, o primeiro número é igual ao número de vetores de movimento que são suportados em predição realizada usando-se o modo de predição de vetor de movimento temporal avançada. Quando sps_sbtmvp_enabled_flag = 0, o primeiro número é igual ao número de vetores de movimento que são suportados em predição realizada usando-se o modo de predição de vetor de movimento temporal avançada.
[0011] Em um possível projeto, antes da determinação do comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador, o método adicionalmente compreende: analisar um quarto indicador (por exemplo, sps_planar_enabled_flag) a partir do fluxo de bits, onde o quarto indicador é usado para indicar um estado de presença do modo de predição de vetor de movimento planar no modo de predição de fusão de sub- bloco.
[0012] Em um possível projeto, quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub-bloco, a determinação do comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador compreende: determinar um segundo número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador e no segundo número.
[0013] Por exemplo, quando sps_planar_enabled_flag = 0, isso indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub-bloco. Por exemplo, o segundo número é igual ao número de vetores de movimento que são suportados em predição realizada usando-se o modo de predição de vetor de movimento planar.
[0014] Em um possível projeto, quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar está presente no modo de predição de fusão de sub-bloco, a determinação do comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador compreende: determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador e no primeiro número.
[0015] Em um possível projeto, quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub-bloco, a determinação do comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador compreende: determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador, no primeiro número, e no segundo número.
[0016] Em um possível projeto, o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand, onde MaxNumSub-blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, e K é um número inteiro não negativo pré-estabelecido.
[0017] Em um possível projeto, quando o comprimento máximo da primeira lista de vetores de movimento candidatos for determinado com base no segundo indicador e no primeiro número, o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula:
MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand – L1, onde MaxNumSub-blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, L1 representa o primeiro número, e K é um número inteiro não negativo pré- estabelecido.
[0018] Em um possível projeto, quando o comprimento máximo da primeira lista de vetores de movimento candidatos for determinado com base no segundo indicador e no segundo número, o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand – L2, onde MaxNumSub-blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, L2 representa o segundo número, e K é um número inteiro não negativo pré- estabelecido.
[0019] Em um possível projeto, quando o comprimento máximo da primeira lista de vetores de movimento candidatos for determinado com base no segundo indicador, no primeiro número, e no segundo número, o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand – L1 – L2, onde MaxNumSub- blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, L1 representa o primeiro número, L2 representa o segundo número, e K é um número inteiro não negativo pré-estabelecido.
[0020] Em um possível projeto, a análise de um segundo indicador a partir do fluxo de bits compreende: analisar o segundo indicador a partir de um conjunto de parâmetros de sequência no fluxo de bits, ou analisar o segundo indicador a partir de um cabeçalho de fatia de uma fatia no fluxo de bits, o bloco a ser processado está compreendido na fatia.
[0021] Em um possível projeto, o método adicionalmente compreende: Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, e o terceiro indicador (por exemplo, sps_sbtmvp_enabled_flag) indica que o modo de predição de vetor de movimento temporal avançada está presente no modo de predição de fusão de sub-bloco, determinar um terceiro número com base no terceiro indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no terceiro número. Por exemplo, quando sps_sbtmvp_enabled_flag = 1, isso indica que o modo de predição de vetor de movimento temporal avançada está presente no modo de predição de fusão de sub-bloco. O terceiro número é igual ao número de vetores de movimento que são suportados em predição realizada usando-se o modo de predição de vetor de movimento temporal avançada. Por exemplo, o comprimento máximo da primeira lista de vetores de movimento candidatos é igual ao terceiro número.
[0022] Em um possível projeto, quando o quarto indicador (por exemplo, sps_planar_enabled_flag) indicar que o modo de predição de vetor de movimento planar está presente no modo de predição de fusão de sub-bloco, a determinação do comprimento máximo da primeira lista de vetores de movimento candidatos com base no primeiro número compreende: determinar um quarto número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no terceiro número e no quarto número. Por exemplo, o comprimento máximo da primeira lista de vetores de movimento candidatos é igual a uma soma do terceiro número com o quarto número.
[0023] Por exemplo, quando sps_planar_enabled_flag = 1, isso indica que o modo de predição de vetor de movimento planar está presente no modo de predição de fusão de sub-bloco. O quarto número é igual ao número de vetores de movimento que são suportados em predição realizada usando-se a lista de vetores de movimento planar.
[0024] Em um possível projeto, o método adicionalmente compreende: Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, o terceiro indicador indica que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar está presente no modo de predição de fusão de sub-bloco, determinar um quarto número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no quarto número. Por exemplo, o comprimento máximo da primeira lista de vetores de movimento candidatos é igual ao quarto número.
[0025] Em um possível projeto, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, e o terceiro indicador indica que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, o comprimento máximo da primeira lista de vetores de movimento candidatos é zero.
[0026] Em um possível projeto, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, o terceiro indicador indica que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub- bloco, o comprimento máximo da primeira lista de vetores de movimento candidatos é zero.
[0027] Em um possível projeto, o terceiro indicador é igual a um primeiro valor, e o primeiro número é igual a 1.
[0028] Em um possível projeto, o quarto indicador é igual a um terceiro valor, e o segundo número é igual a 1.
[0029] Em um possível projeto, o terceiro indicador é igual a um segundo valor, e o terceiro número é igual a 1.
[0030] Em um possível projeto, o quarto indicador é igual a um quarto valor, e o quarto número é igual a 1.
[0031] De acordo com um segundo aspecto, uma modalidade desse pedido fornece um aparelho de predição de imagem de vídeo, incluindo: uma unidade de análise, configurada para: analisar um primeiro indicador a partir de um fluxo de bits; e Quando o primeiro indicador indicar que um modo candidato usado para predizer de modo inter o bloco a ser processado compreende um modo afim, analisar um segundo indicador a partir do fluxo de bits, onde o segundo indicador é usado para indicar um comprimento máximo de uma primeira lista de vetores de movimento candidatos, e a primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para o bloco a ser processado, um modo de predição de fusão de sub-bloco é usado para o bloco a ser processado; e uma unidade de determinação, configurada para determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador.
[0032] Em um possível projeto, a unidade de análise é adicionalmente configurada para analisar um terceiro indicador a partir do fluxo de bits antes que o comprimento máximo da primeira lista de vetores de movimento candidatos seja determinado com base no segundo indicador, onde o terceiro indicador é usado para indicar um estado de presença de um modo de predição de vetor de movimento temporal avançada no modo de predição de fusão de sub-bloco.
[0033] Em um possível projeto, o modo de predição de fusão de sub- bloco compreende pelo menos um dentre um modo de predição de vetor de movimento planar, o modo de predição de vetor de movimento temporal avançada, ou o modo afim; e quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, a unidade de determinação é especificamente configurada para: determinar um primeiro número com base no terceiro indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador e no primeiro número.
[0034] Em um possível projeto, antes que o comprimento máximo da primeira lista de vetores de movimento candidatos seja determinado com base no segundo indicador, a unidade de análise é adicionalmente configurada para: analisar um quarto indicador a partir do fluxo de bits, onde o quarto indicador é usado para indicar um estado de presença do modo de predição de vetor de movimento planar no modo de predição de fusão de sub-bloco.
[0035] Em um possível projeto, quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub-bloco, a unidade de determinação é especificamente configurada para: determinar um segundo número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador e no segundo número.
[0036] Em um possível projeto, quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar está presente no modo de predição de fusão de sub-bloco, a unidade de determinação é especificamente configurada para: determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador e no primeiro número.
[0037] Em um possível projeto, quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub-bloco, a unidade de determinação é especificamente configurada para: determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador, no primeiro número, e no segundo número.
[0038] Em um possível projeto, o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand, onde MaxNumSub-blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos,
K_minus_max_num_subblock_merge_cand representa o segundo indicador, e K é um número inteiro não negativo pré-estabelecido.
[0039] Em um possível projeto, o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand – L1, onde MaxNumSub-blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, L1 representa o primeiro número, e K é um número inteiro não negativo pré- estabelecido.
[0040] Em um possível projeto, o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand – L2, onde MaxNumSub-blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, L2 representa o segundo número, e K é um número inteiro não negativo pré- estabelecido.
[0041] Em um possível projeto, o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand – L1 – L2, onde MaxNumSub-blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, L1 representa o primeiro número, L2 representa o segundo número, e K é um número inteiro não negativo pré-estabelecido.
[0042] Em um possível projeto, quando analisando o segundo indicador a partir do fluxo de bits, a unidade de análise é especificamente configurada para: analisar o segundo indicador a partir de um conjunto de parâmetros de sequência no fluxo de bits, ou analisar o segundo indicador a partir de um cabeçalho de fatia de uma fatia no fluxo de bits, o bloco a ser processado está compreendido na fatia.
[0043] Em um possível projeto, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, e o terceiro indicador indica que o modo de predição de vetor de movimento temporal avançada está presente no modo de predição de fusão de sub-bloco, a unidade de determinação é adicionalmente configurada para: determinar um terceiro número com base no terceiro indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no terceiro número.
[0044] Em um possível projeto, quando o quarto indicador indicar que o modo de predição de vetor de movimento planar está presente no modo de predição de fusão de sub-bloco, quando determinando o comprimento máximo da primeira lista de vetores de movimento candidatos com base no primeiro número, a unidade de determinação é especificamente configurada para: determinar um quarto número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no primeiro número e no quarto número.
[0045] Em um possível projeto, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, o terceiro indicador indica que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar está presente no modo de predição de fusão de sub-bloco, a unidade de determinação é adicionalmente configurada para: determinar um quarto número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no quarto número.
[0046] Em um possível projeto, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, e o terceiro indicador indica que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, o comprimento máximo da primeira lista de vetores de movimento candidatos é zero.
[0047] Em um possível projeto, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, o terceiro indicador indica que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub- bloco, o comprimento máximo da primeira lista de vetores de movimento candidatos é zero.
[0048] Em um possível projeto, o comprimento máximo da primeira lista de vetores de movimento candidatos é igual ao terceiro número.
[0049] Em um possível projeto, o comprimento máximo da primeira lista de vetores de movimento candidatos é igual a uma soma do terceiro número com o quarto número.
[0050] Em um possível projeto, o comprimento máximo da primeira lista de vetores de movimento candidatos é igual ao quarto número.
[0051] Em um possível projeto, o terceiro indicador é igual a um primeiro valor, e o primeiro número é igual a 1.
[0052] Em um possível projeto, o quarto indicador é igual a um terceiro valor, e o segundo número é igual a 1.
[0053] Em um possível projeto, o terceiro indicador é igual a um segundo valor, e o terceiro número é igual a 1.
[0054] Em um possível projeto, o quarto indicador é igual a um quarto valor, e o quarto número é igual a 1.
[0055] De acordo com um terceiro aspecto, uma modalidade desse pedido fornece um aparelho. O aparelho pode ser um decodificador e compreende um processador e uma memória. A memória é configurada para armazenar uma instrução. Quando o aparelho roda, o processador executa a instrução armazenada na memória, para habilitar o aparelho a realizar o método de acordo com qualquer um dentre o primeiro aspecto ou os projetos do primeiro aspecto. Deve ser notado que a memória pode ser integrada no processador, ou pode ser independente do processador.
[0056] De acordo com um quarto aspecto, uma modalidade desse pedido fornece um método de predição de imagem de vídeo, usado em um lado de codificador, e incluindo: codificar um primeiro indicador em um fluxo de bits; e Quando o primeiro indicador indicar que um modo candidato usado para predizer de modo inter o bloco a ser processado compreende um modo afim, codificar um segundo indicador no fluxo de bits, onde o segundo indicador é usado para indicar um comprimento máximo de uma primeira lista de vetores de movimento candidatos, e z primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para o bloco a ser processado, um modo de predição de fusão de sub-bloco é usado para o bloco a ser processado.
[0057] De acordo com um quinto aspecto, uma modalidade desse pedido fornece um aparelho de predição de imagem de vídeo. O aparelho pode ser um codificador e compreende um processador e uma memória. A memória é configurada para armazenar uma instrução. Quando o aparelho roda, o processador executa a instrução armazenada na memória, para habilitar o aparelho a realizar o método de acordo com o quarto aspecto. Deve ser notado que a memória pode ser integrada no processador, ou pode ser independente do processador.
[0058] De acordo com um sexto aspecto desse pedido, um meio de armazenamento legível por computador é fornecido. O meio de armazenamento legível por computador armazena uma instrução. Quando a instrução é rodada em um computador, o computador é habilitado para realizar o método de acordo com cada um dos aspectos supracitados.
[0059] De acordo com um sétimo aspecto desse pedido, um produto de programa de computador incluindo uma instrução é fornecido. Quando o produto de programa de computador roda em um computador, o computador é habilitado para realizar o método de acordo com cada um dos aspectos supracitados.
[0060] Deve ser entendido que as soluções técnicas descritas no segundo aspecto ao sétimo aspecto desse pedido são consistentes com soluções técnicas descritas no primeiro aspecto desse pedido, e efeitos benéficos alcançados em todos os aspectos e correspondentes projetos de implantação são similares. Portanto, detalhes não são descritos novamente.
BREVE DESCRIÇÃO DOS DESENHOS
[0061] A Figura 1A é um diagrama de blocos de um exemplo de um sistema de codificação e decodificação de vídeo 10 para implantar modalidades desse pedido;
[0062] A Figura 1B é um diagrama de blocos de um exemplo de um sistema de codificação de vídeo 40 para implantar modalidades desse pedido;
[0063] A Figura 2 é um diagrama de blocos de um exemplo de estrutura de um codificador 20 para implantar modalidades desse pedido;
[0064] A Figura 3 é um diagrama de blocos de um exemplo de estrutura de um decodificador 30 para implantar modalidades desse pedido;
[0065] A Figura 4 é um diagrama de blocos de um exemplo de um dispositivo de codificação de vídeo 400 para implantar modalidades desse pedido;
[0066] A Figura 5 é um diagrama de blocos de um exemplo de um outro aparelho de codificação ou aparelho de decodificação para implantar modalidades desse pedido;
[0067] A Figura 6A é um diagrama esquemático de uma localização candidata para informações de movimento para implantar modalidades desse pedido;
[0068] A Figura 6B é um diagrama esquemático de predição de vetor de movimento de ponto de controle herdado para implantar modalidades desse pedido;
[0069] A Figura 6C é um diagrama esquemático de predição de vetor de movimento de ponto de controle construído para implantar modalidades desse pedido;
[0070] A Figura 6D é um diagrama esquemático de um procedimento de combinar informações de movimento de ponto de controle para obter informações de movimento de ponto de controle construídas para implantar modalidades desse pedido;
[0071] A Figura 6E é um diagrama esquemático de uma maneira de predição ATMVP para implantar modalidades desse pedido;
[0072] A Figura 7 é um diagrama esquemático de uma maneira de predição de vetor de movimento planar para implantar modalidades desse pedido;
[0073] A Figura 8A é um fluxograma de um método de predição inter para implantar modalidades desse pedido;
[0074] A Figura 8B é um diagrama esquemático de construção de uma lista de vetores de movimento candidatos para implantar modalidades desse pedido;
[0075] A Figura 8C é um diagrama esquemático de uma unidade de compensação de movimento para implantar modalidades desse pedido;
[0076] A Figura 9 é um fluxograma esquemático de um método de predição de imagem de vídeo para implantar modalidades desse pedido;
[0077] A Figura 10 é um fluxograma esquemático de um outro método de predição de imagem de vídeo para implantar modalidades desse pedido;
[0078] A Figura 11 é um fluxograma esquemático ainda de um outro método de predição de imagem de vídeo para implantar modalidades desse pedido;
[0079] A Figura 12A e a Figura 12B é um fluxograma esquemático de mais um outro método de predição de imagem de vídeo para implantar modalidades desse pedido;
[0080] A Figura 13 é um diagrama esquemático de um aparelho 1300 para implantar modalidades desse pedido;
[0081] A Figura 14 é um diagrama esquemático de um aparelho 1400 para implantar modalidades desse pedido; e
[0082] A Figura 15 é um diagrama esquemático de um aparelho 1500 para implantar modalidades desse pedido.
DESCRIÇÃO DE MODALIDADES
[0083] A seguir se descreve as modalidades desse pedido com referência aos desenhos anexos nas modalidades desse pedido. Na seguinte descrição, referência é feita aos desenhos anexos que formam uma parte dessa revelação e mostram, a título de ilustração, aspectos específicos das modalidades desse pedido ou aspectos específicos nos quais as modalidades desse pedido podem ser usadas. Deve ser entendido que as modalidades desse pedido podem ser usadas em outros aspectos, e podem compreender mudanças estruturais ou lógicas não representadas nos desenhos anexos. Portanto, as descrições detalhadas a seguir não serão tomadas em um sentido limitante, e o escopo desse pedido é definido pelas reivindicações anexas. Por exemplo, deve ser entendido que uma revelação ligada ao método descrito pode também se aplicar a um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se uma ou mais etapas de método específicas são descritas, um dispositivo correspondente pode compreender uma ou mais unidades tais como unidades funcionais, para realizar a uma ou mais etapas de método descritas (por exemplo, uma unidade realizando a uma ou mais etapas; ou uma pluralidade de unidades cada uma realizando uma ou mais da pluralidade de etapas), mesmo se tais uma ou mais unidades não são explicitamente descritas ou ilustradas nos desenhos anexos. Por outro lado, por exemplo, se um aparelho específico é descrito com base em uma ou mais unidades tais como unidades funcionais, um método correspondente pode compreender uma etapa usada para realizar a funcionalidade da uma ou mais unidades (por exemplo, um etapa usada para realizar a funcionalidade da uma ou mais unidades, ou uma pluralidade de etapas, cada uma usada para realizar a funcionalidade de uma ou mais de uma pluralidade de unidades), mesmo se tais uma ou mais etapas não são explicitamente descritas ou ilustradas nos desenhos anexos. Além disso, deve ser entendido que recursos das várias modalidades de exemplo e/ou aspectos descritos nesse relatório podem ser combinados entre si, a menos que especificamente indicado de outra maneira.
[0084] As soluções técnicas nas modalidades desse pedido não são somente aplicáveis para um padrão de codificação de vídeo existente (por exemplo, o padrão tal como H.264 ou HEVC), mas também aplicáveis para um padrão de codificação de vídeo futuro (por exemplo, o padrão H.266). Termos usados na DESCRIÇÃO DAS MODALIDADES desse pedido são somente usados para explicar modalidades específicas desse pedido, mas não são destinados a limitar esse pedido. A seguir se descreve primeiro resumidamente conceitos relacionados nas modalidades desse pedido.
[0085] Codificação de vídeo normalmente se refere a processamento de uma sequência de imagens que formam um vídeo ou uma sequência de vídeo. Os termos "imagem (picture)", "quadro (frame)", ou "imagem (image)" podem ser usados como sinônimos no campo de codificação de vídeo. Codificação de vídeo nesse relatório representa codificação ou decodificação de vídeo de vídeo. Codificação de vídeo é realizada em um lado de fonte, e normalmente compreende processar (por exemplo, por compressão) uma imagem de vídeo original para reduzir um montante de dados exigido para representar a imagem de vídeo, para armazenamento e/ou transmissão mais eficiente. Decodificação de vídeo é realizada em um lado de destino, e normalmente compreende processamento inverso comparado a um codificador para reconstruir uma imagem de vídeo. "Codificação" de uma imagem de vídeo nas modalidades deve ser entendido como "codificação" ou "decodificação" de uma sequência de vídeo. Uma combinação de uma parte de codificação e uma parte de decodificação é também referida como codec (codificação e decodificação).
[0086] Uma sequência de vídeo compreende uma série de imagens (picture), uma imagem é adicionalmente dividida em fatias (slice), e uma fatia é adicionalmente dividida em blocos (block). A codificação de processamento de vídeo é realizada por bloco. Em alguns novos padrões de codificação de vídeo, um conceito de bloco é mais estendido. Por exemplo, um macrobloco (macroblock, MB) é introduzido no padrão H.264. O macrobloco pode ser adicionalmente dividido em uma pluralidade de blocos (partições) de predição que podem ser usados para predizer codificação. No padrão de codificação de vídeo de alta eficiência (high efficiency video coding, HEVC), conceitos básicos tais como unidade de codificação (coding unit, CU), unidade de predição (prediction unit, PU), e unidade de transformada (transform unit, TU) são usados. Uma pluralidade de unidades de bloco é obtida através de divisão funcional, e são descritas usando-se uma nova estrutura com base em árvore. Por exemplo, uma CU pode ser dividida em CUs menores com base em uma árvore quaternária, e uma CU menor pode ser adicionalmente dividida, para gerar uma estrutura de árvore quaternária. A CU é uma unidade básica usada para dividir e codificar uma imagem codificada. Uma PU e uma TU também têm estruturas de árvore similares. A PU pode corresponder a um bloco de predição, e é uma unidade básica usada para predizer codificação. A CU é adicionalmente dividida em uma pluralidade de PUs com base em um padrão de divisão. A TU pode corresponder a um bloco de transformada, e é uma unidade básica usada para transformar uma predição residual. No entanto, na essência, todas dentre a CU, a PU, e a TU são conceitualmente blocos (ou blocos de imagem).
[0087] Por exemplo, em HEVC, uma CTU é dividida em uma pluralidade de CUs usando-se uma estrutura de árvore quaternária representada como uma árvore de codificação. Uma decisão sobre se codifica uma área de imagem usando-se predição de imagem inter (temporal) ou de imagem intra (espacial) é feita a um nível de CU. Cada CU pode ser adicionalmente dividida em uma, duas, ou quatro PUs com base em um padrão de divisão de PU. Dentro de uma PU, um mesmo processo de predição é aplicado, e informações relacionadas são transmitidas para um decodificador em uma base de PU. Depois de obter um bloco residual aplicando-se o processo de predição com base no padrão de divisão de PU, a CU pode ser partida em unidades de transformada (transform unit, TU) com base em uma outra estrutura de árvore quaternária similar à árvore de codificação usada para a CU. No recente desenvolvimento de tecnologias de compressão de vídeo, um quadro de partição de uma árvore quaternária mais árvore binária (Quad-tree and binary tree, QTBT) é usado para partir um bloco de codificação. Em uma estrutura de bloco QTBT, a CU pode ser quadrada ou retangular.
[0088] Nesse relatório, para facilidade de descrição e entendimento, um bloco de imagem a ser codificado em uma imagem codificada atual pode ser referido como um bloco atual. Por exemplo, em codificação, um bloco atual é um bloco sendo codificado atualmente; e em decodificação, um bloco atual é um bloco sendo decodificado atualmente. Um bloco de imagem decodificado, em uma imagem de referência, usado para predizer um bloco atual é referido como um bloco de referência. Em outras palavras, um bloco de referência é um bloco que fornece um sinal de referência para um bloco atual. O sinal de referência representa um valor de pixel no bloco de imagem. Um bloco que fornece um sinal de predição para um bloco atual em uma imagem de referência pode ser referido como um bloco de predição. O sinal de predição representa um valor de pixel, um valor de amostragem, ou um sinal de amostragem no bloco de predição. Por exemplo, depois de atravessar uma pluralidade de blocos de referência, um bloco de referência ideal é encontrado, e o bloco de referência ideal fornece predição para o bloco atual, e esse bloco é referido como um bloco de predição.
[0089] Em um caso de codificação de vídeo sem perda, imagens de vídeo originais podem ser reconstruídas. Isto é, imagens de vídeo reconstruídas têm a mesma qualidade que as imagens de vídeo originais (assumindo que nenhuma perda de transmissão ou perda de outros dados é causada durante armazenamento ou transmissão). Em um caso de codificação com perda de vídeo, compressão adicional é realizada através, por exemplo, de quantização, para reduzir um montante de dados exigido para representar imagens de vídeo, e as imagens de vídeo não podem ser completamente reconstruídas em um lado de decodificador. Isto é, a qualidade de imagens de vídeo reconstruídas é inferior ou pior que a qualidade das imagens de vídeo originais.
[0090] Diversos padrões H.261 de codificação de vídeo são para "codecs de vídeo híbrido com perda" (isto é, predição espacial e temporal em um domínio de amostra são combinadas com codificação de transformada 2D para aplicar quantização em um domínio de transformada). Cada imagem de uma sequência de vídeo é normalmente partida em um conjunto de blocos não sobrepostos, e codificação é normalmente realizada a um nível de bloco. Em outras palavras, em um lado de codificador, um vídeo é normalmente processado, isto é, codificado, a um nível de bloco (bloco de vídeo). Por exemplo, um bloco de predição é gerado através de predição espacial (imagem intra) e predição temporal (imagem inter), o bloco de predição é subtraído a partir de um bloco atual (um bloco atualmente sendo processado ou a ser processado) para obter um bloco residual, e o bloco residual é transformado e quantizado no domínio de transformada para reduzir um montante de dados que deve ser transmitido (comprimido). Em um lado de decodificador, processamento inverso comparado para o codificador é realizado no bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica uma malha de processamento de decodificador, de modo que o codificador e o decodificador gerem mesmas predições (por exemplo, predição intra e predição inter) e/ou reconstrução para processamento, isto é, para codificar um bloco subsequente.
[0091] A seguir se descreve uma arquitetura de sistema usada nas modalidades desse pedido. A Figura 1A é um diagrama esquemático de blocos de um exemplo de um sistema de codificação e decodificação de vídeo 10 usado nas modalidades desse pedido. Como mostrado na Figura 1A, o sistema de codificação e decodificação de vídeo 10 pode compreender um dispositivo de origem 12 e um dispositivo de destino 14. O dispositivo de origem 12 gera dados de vídeo codificados, e, portanto, o dispositivo de origem 12 pode ser referido como um aparelho de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados gerados pelo dispositivo de origem 12, e, portanto, o dispositivo de destino 14 pode ser referido como um aparelho de decodificação de vídeo. Em várias soluções de implantação, o dispositivo de origem 12, o dispositivo de destino 14, ou tanto o dispositivo de origem 12 quanto o dispositivo de destino 14 podem compreender um ou mais processadores e uma memória acoplada ao um ou mais processadores. A memória pode compreender, porém, sem limitação, uma RAM, uma ROM, uma EEPROM, uma memória flash, ou qualquer outro meio que possa ser usado para armazenar código de programa desejado em uma forma de uma instrução ou uma estrutura de dados accessível para um computador, conforme descrito nesse relatório. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender vários aparelhos, incluindo um computador de mesa, um aparelho de computação móvel, um computador tipo notebook (por exemplo, um laptop), um computador tipo tablet, um conversor, um aparelho telefônico tal como o chamado telefone "inteligente", uma televisão, uma câmera, um aparelho visor, um aparelho de reprodução de mídia digital, um console para videogame, um computador montado em veículo, um dispositivo para comunicações sem fio, ou semelhantes.
[0092] Embora a Figura 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, uma modalidade de dispositivo pode alternativamente compreender tanto o dispositivo de origem 12 quanto o dispositivo de destino 14 ou funcionalidades tanto do dispositivo de origem 12 quanto do dispositivo de destino 14, isto é, o dispositivo de origem 12 ou uma funcionalidade correspondente e o dispositivo de destino 14 ou uma funcionalidade correspondente. Em uma modalidade como essa, o dispositivo de origem 12 ou a funcionalidade correspondente e o dispositivo de destino 14 ou a funcionalidade correspondente podem ser implantados usando-se o mesmo hardware e/ou software, hardware e/ou software separados, ou qualquer combinação dos mesmos.
[0093] Uma conexão de comunicação entre o dispositivo de origem
12 e o dispositivo de destino 14 pode ser implantada por um enlace 13, e o dispositivo de destino 14 pode receber dados de vídeo codificados a partir do dispositivo de origem 12 pelo enlace 13. O enlace 13 pode compreender um ou mais meios ou aparelhos que podem transferir os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o enlace 13 pode compreender um ou mais meios de comunicações que habilitam o dispositivo de origem 12 para transmitir diretamente os dados de vídeo codificados para o dispositivo de destino 14 em tempo real. Nesse exemplo, o dispositivo de origem 12 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 dados de vídeo modulados para o dispositivo de destino 14. O um ou mais meios de comunicações podem compreender um meio de comunicações sem fio e/ou um meio de comunicações com fio, por exemplo, um espectro de radiofrequência (RF) ou um ou mais cabos de transmissão física. O um ou mais meios de comunicações pode 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 global rede (por exemplo, a internet). O um ou mais meios de comunicações podem compreender um roteador, um comutador, uma estação base, ou um outro dispositivo que facilite a comunicação a partir do dispositivo de origem 12 para o dispositivo de destino
14.
[0094] O dispositivo de origem 12 compreende um codificador 20. Opcionalmente, o dispositivo de origem 12 pode adicionalmente compreender uma fonte de imagem 16, um pré-processador de imagem 18, e uma interface de comunicações 22. Em uma implantação específica, o codificador 20, a fonte de imagem 16, o pré-processador de imagem 18, e a interface de comunicações 22 podem ser componentes de hardware no dispositivo de origem 12, ou podem ser programas de software no dispositivo de origem 12. Descrições são fornecidas separadamente como a seguir:
[0095] A fonte de imagem 16 pode compreender ou pode ser qualquer tipo de imagem que captura dispositivo configurado para, por exemplo, capturar uma imagem do mundo real; e/ou qualquer tipo de dispositivo para gerar uma imagem ou um comentário (para codificação de conteúdo de tela, algum texto em uma tela é também considerado como uma parte de uma imagem ou imagem a ser codificada), por exemplo, um processador de computação gráfica configurado para gerar uma imagem animada em computador; ou qualquer tipo de dispositivo configurado para obter e/ou fornecer uma imagem do mundo real ou uma imagem animada em computador (por exemplo, conteúdo de tela ou uma imagem de realidade virtual (virtual reality, VR)); e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (augmented reality, AR)). A fonte de imagem 16 pode ser uma câmera configurada para capturar uma imagem ou uma memória configurada para armazenar uma imagem. A fonte de imagem 16 pode adicionalmente compreender qualquer tipo de interface (interna ou externa) através da qual uma imagem previamente capturada ou gerada é armazenada e/ou uma imagem é obtida ou recebida. Quando a fonte de imagem 16 é uma câmera, a fonte de imagem 16 pode ser, por exemplo, uma câmera local, ou uma câmera integrada que é integrada no dispositivo de origem. Quando a fonte de imagem 16 é uma memória, a fonte de imagem 16 pode ser uma memória local ou, por exemplo, uma memória integrada que é integrada no dispositivo de origem. Quando a fonte de imagem 16 compreende uma interface, a interface pode ser, por exemplo, uma interface externa para receber uma imagem a partir de uma fonte de vídeo externa. A fonte de vídeo externa é, por exemplo, um dispositivo de captura de imagem externa tal como uma câmera, uma memória externa, ou um dispositivo que gera imagem externa. O dispositivo que gera imagem externa é, por exemplo, um processador de computação gráfica externo, um computador, ou um servidor. A interface pode ser qualquer tipo de interface, por exemplo, uma interface com fio ou sem fio ou uma interface óptica, de acordo com qualquer protocolo de interface próprio ou padronizado.
[0096] Uma imagem pode ser considerada como um arranjo ou matriz bidimensional de elementos de pixel (elemento de imagem). O elemento de pixel no arranjo pode também ser referido como uma amostra. Uma quantidade de amostras em direções (ou eixos) horizontais e verticais do arranjo ou da imagem define um tamanho e/ou resolução da imagem. Para representação de cor, três componentes de cor são normalmente empregados, para ser específico, a imagem pode ser representada por ou compreender três arranjos de amostra. Por exemplo, em um formato RBG ou um espaço de cores, uma imagem compreende correspondentes arranjos de amostra em vermelho, verde e azul. No entanto, em codificação de vídeo, cada pixel é normalmente representado em um formato luminância/crominância ou um espaço de cores. Por exemplo, uma imagem em a formato YUV compreende um componente de luminância indicado por Y (algumas vezes indicado por L alternativamente) e dois componentes de crominância indicados por U e V. O componente de luminância (luma) Y representa nível de intensidade de brilho ou de cinza (por exemplo, ambos são iguais em uma imagem em escala de cinza), e os dois componentes de crominância (croma) U e V representam componentes de informações de crominância ou cor. De modo correspondente, a imagem no formato YUV compreende um arranjo de amostra de luminância de valores de amostra de luminância (Y) e dois arranjos de amostra de crominância de valores de crominância (U e V). Imagens em um formato RGB podem ser transformadas ou convertidas para um formato YUV e vice-versa. Esse processo é também referido como conversão ou transformação de cor. Se uma imagem é monocromática, a imagem pode compreender somente um arranjo de amostra de luminância. Nessa modalidade desse pedido, uma imagem transmitida pela fonte de imagem 16 para o processador de imagem pode também ser referida como dados de imagem brutos 17.
[0097] O pré-processador de imagem 18 é configurado para receber os dados de imagem brutos 17 e realizar pré-processamento nos dados de imagem brutos 17 para obter uma imagem pré-processada 19 ou dados de imagem pré-processados 19. Por exemplo, o pré-processamento realizado pelo pré-processador de imagem 18 pode compreender corte, conversão de formato de cor (por exemplo, de um formato RGB para um formato YUV), correção de cor, ou supressão de ruído.
[0098] O codificador 20 (ou referido como um codificador de vídeo 20) é configurado para receber os dados de imagem pré-processados 19, e processar os dados de imagem pré-processados 19 usando-se um modo de predição relacionado (por exemplo, um modo de predição em cada modalidade desse relatório), para fornecer dados de imagem codificados 21 (detalhes estruturais do codificador 20 são adicionalmente descritos abaixo com base na Figura 2, na Figura 4, ou na Figura 5). Em algumas modalidades, o codificador 20 pode ser configurado para realizar cada modalidade descrita abaixo, para implantar aplicação em lado de codificador de um método de predição de bloco de croma descrito nesse pedido.
[0099] A interface de comunicações 22 pode ser configurada para receber os dados de imagem codificados 21, e transmitir os dados de imagem codificados 21 para o dispositivo de destino 14 ou qualquer outro dispositivo (por exemplo, uma memória) pelo enlace 13, para armazenamento ou reconstrução direta. O outro dispositivo pode ser qualquer dispositivo usado para decodificação ou armazenamento. A interface de comunicações 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, um pacote de dados, para transmissão pelo enlace 13.
[0100] O dispositivo de destino 14 compreende um decodificador 30. Opcionalmente, o dispositivo de destino 14 pode adicionalmente compreender uma interface de comunicações 28, uma imagem pós-processador 32, e um dispositivo de exibição 34. Descrições são fornecidas separadamente como a seguir:
[0101] A interface de comunicações 28 pode ser configurada para receber os dados de imagem codificados 21 a partir do dispositivo de origem 12 ou de outra fonte qualquer. A outra fonte qualquer é, por exemplo, um dispositivo de armazenamento. O dispositivo de armazenamento é, por exemplo, um dispositivo de armazenamento de dados de imagem codificados. A interface de comunicações 28 pode ser configurada para transmitir ou receber os dados de imagem codificados 21 pelo enlace 13 entre o dispositivo de origem 12 e o dispositivo de destino 14 ou por qualquer tipo de rede. O enlace 13 é, por exemplo, uma conexão direta com fio ou sem fio. O tipo de rede qualquer é, por exemplo, uma rede com fio ou sem fio ou qualquer combinação das mesmas, ou qualquer tipo de rede privada ou pública, ou qualquer combinação das mesmas. A interface de comunicações 28 pode ser, por exemplo, configurada para desempacotar os pacotes de dados transmitidos através da interface de comunicações 22, para obter os dados de imagem codificados 21.
[0102] Tanto a interface de comunicações 28 quanto a interface de comunicações 22 podem ser configuradas como interfaces de comunicações unidirecionais ou interfaces de comunicações bidirecionais, e podem ser configuradas para, por exemplo, enviar e receber mensagens para configurar uma conexão, e confirmar e trocar quaisquer outras informações relacionadas a um enlace de comunicação e/ou transmissão de dados tal como transmissão de dados de imagem codificados.
[0103] O decodificador 30 (ou referido como um decodificador 30) é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (detalhes estruturais do decodificador 30 são adicionalmente descritos abaixo com base na Figura 3, Figura 4, ou Figura 5). Em algumas modalidades, o decodificador 30 pode ser configurado para realizar cada modalidade descrita abaixo, para implantar aplicação em lado de decodificador de um método de predição de bloco de croma descrito nesse pedido.
[0104] O pós-processador de imagem 32 é configurado para pós- processar os dados de imagem decodificados 31 (também referidos como dados de imagem reconstruídos) para obter dados de imagem pós-processados 33. O pós-processamento realizado pelo pós-processador de imagem 32 pode compreender conversão de formato de cor (por exemplo, a partir de um formato YUV para um formato RGB), correção de cor, corte, reamostragem, ou qualquer outro processamento. O pós-processador de imagem 32 pode ser adicionalmente configurado para transmitir os dados de imagem pós- processados 33 para o dispositivo de exibição 34.
[0105] O dispositivo de exibição 34 é configurado para receber os dados de imagem pós-processados 33 para exibir uma imagem, por exemplo, para um usuário ou um espectador. O dispositivo de exibição 34 pode ser ou pode compreender qualquer tipo de visor para apresentar uma imagem reconstruída, por exemplo, um visor ou monitor integrado ou externo. Por exemplo, o visor pode compreender um visor de cristal líquido (liquid crystal display, LCD), um visor de diodo emissor de luz orgânico (organic light emitting diode, OLED), um visor de plasma, um projetor, um visor de micro LED, um cristal líquido em silício (liquid crystal on silicon, LCoS), um processador de luz digital (digital light processor, DLP), ou qualquer outro tipo de visor.
[0106] Embora a Figura 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, uma modalidade de dispositivo pode alternativamente compreender tanto o dispositivo de origem 12 quanto o dispositivo de destino 14 ou funcionalidades tanto do dispositivo de origem 12 quanto do dispositivo de destino 14, isto é, o dispositivo de origem 12 ou uma funcionalidade correspondente e o dispositivo de destino 14 ou uma funcionalidade correspondente. Em uma modalidade como essa, o dispositivo de origem 12 ou a funcionalidade correspondente e o dispositivo de destino 14 ou a funcionalidade correspondente podem ser implantados usando-se o mesmo hardware e/ou software, hardware e/ou software separados, ou qualquer combinação dos mesmos.
[0107] Como será evidente para uma pessoa habilitada na técnica com base nas descrições, a existência e divisão (exata) de funcionalidades de diferentes unidades ou funcionalidades do dispositivo de origem 12 e/ou do dispositivo de destino 14 mostrados na Figura 1A pode variar dependendo de um dispositivo e aplicativo efetivos. O dispositivo de origem 12 e o dispositivo de destino 14 pode compreender qualquer um dentre uma larga faixa de dispositivos, incluindo qualquer tipo de dispositivo que cabe na mão ou estacionário, por exemplo, um computador tipo notebook ou laptop, um telefone móvel, um smartphone, um tablet ou computador tipo tablet, uma câmera de vídeo, um computador de mesa, um conversor, uma televisão, uma câmera, um dispositivo montado em veículo, um dispositivo de exibição, um aparelho de reprodução de mídia digital, um console para videogame, um dispositivo de streaming de vídeo (tal como um servidor de serviço de conteúdo ou um servidor de entrega de conteúdo), um dispositivo de recebimento de broadcast, ou um dispositivo transmissor de broadcast, e pode usar ou não usar qualquer tipo de sistema operacional.
[0108] O codificador 20 e o decodificador 30 podem, cada um deles, ser implantado como qualquer um dentre vários circuitos apropriados, por exemplo, um ou mais microprocessadores, processadores de sinal digital (digital signal processor, DSP), circuitos integrados de aplicação específica (application- specific integrated circuit, ASIC), arranjos de porta programáveis em campo (field-programmable gate array, FPGA), lógica discreta, hardware, ou qualquer combinação dos mesmos. Se as tecnologias são implantadas parcialmente usando-se software, um dispositivo pode armazenar uma instrução de software em um meio de armazenamento não transitório legível por computador adequado e pode executar a instrução usando-se hardware tal como um ou mais processadores, para realizar as tecnologias dessa revelação. Qualquer um dentre os supracitados itens (incluindo hardware, software, uma combinação de hardware e software, e semelhantes) pode ser considerado como um ou mais processadores.
[0109] Em alguns casos, o sistema de codificação e decodificação de vídeo 10 mostrado na Figura 1A é meramente um exemplo, e as tecnologias desse pedido são aplicáveis para configurações de codificação de vídeo (por exemplo, codificação ou decodificação de vídeo de vídeo) que não necessariamente compreendem qualquer comunicação de dados entre um dispositivo de codificação e um dispositivo de decodificação. Em um outro exemplo, dados podem ser recuperados a partir de uma memória local, transmitidos em streaming por uma rede, ou semelhantes. Um dispositivo de codificação de vídeo pode codificar dados e armazenar os dados para uma memória, e/ou um dispositivo de decodificação de vídeo pode recuperar dados a partir da memória e decodificar os dados. Em alguns exemplos, codificação e decodificação são realizadas por dispositivos que não se comunicam entre si, mas simplesmente codificam dados para uma memória e/ou recuperam dados a partir da memória e decodificam os dados.
[0110] A Figura 1B é um diagrama que ilustra um exemplo de um sistema de codificação de vídeo 40 incluindo o codificador 20 na Figura 2 e/ou o decodificador 30 na Figura 3 de acordo com uma modalidade de exemplo. O sistema de codificação de vídeo 40 pode implantar uma combinação de várias tecnologias nas modalidades desse pedido. Em uma implantação ilustrada, o sistema de codificação de vídeo 40 pode compreender um dispositivo de geração de imagem 41, o codificador 20, o decodificador 30 (e/ou um codificador/decodificador de vídeo implantado por um circuito lógico 47 de uma unidade de processamento 46), uma antena 42, um ou mais processadores 43, uma ou mais memórias 44, e/ou um dispositivo de exibição 45.
[0111] Como mostrado na Figura 1B, o dispositivo de geração de imagem 41, a antena 42, a unidade de processamento 46, o circuito lógico 47, o codificador 20, o decodificador 30, o processador 43, a memória 44, e/ou o dispositivo de exibição 45 podem se comunicar entre si. Como descrito, embora o sistema de codificação de vídeo 40 seja ilustrado tanto com o codificador 20 quanto o decodificador 30, em diferentes exemplos, o sistema de codificação de vídeo 40 pode compreender somente o codificador 20 ou somente o decodificador 30.
[0112] Em alguns exemplos, a antena 42 pode ser configurada para transmitir ou receber um fluxo de bits de dados de vídeo codificados. Além disso, em alguns exemplos, o dispositivo de exibição 45 pode ser configurado para apresentar os dados de vídeo. Em alguns exemplos, o circuito lógico 47 pode ser implantado pela unidade de processamento 46. A unidade de processamento 46 pode compreender uma 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 40 pode também compreender o processador opcional 43. Do mesmo modo, o processador opcional 43 pode compreender 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 47 pode ser implantado por hardware, por exemplo, hardware dedicado de codificação de vídeo, e o processador 43 pode ser implantado usando-se software de propósito geral, um sistema operacional, ou semelhantes. Além disso, a memória 44 pode ser qualquer tipo de memória, por exemplo, uma memória volátil (por exemplo, a 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 limitativo, a memória 44 pode ser implantada por uma memória cache. Em alguns exemplos, o circuito lógico 47 pode acessar a memória 44 (por exemplo, para implantação de um buffer (buffer) de imagem). Em outros exemplos, o circuito lógico 47 e/ou a unidade de processamento 46 pode compreender uma memória (por exemplo, um cache) para implantação de um buffer de imagem ou semelhantes.
[0113] Em alguns exemplos, o codificador 20 implantado pelo circuito lógico pode compreender um buffer de imagem (por exemplo, implantado pela unidade de processamento 46 ou pela memória 44) e uma unidade de processamento gráfico (por exemplo, implantada pela unidade de processamento 46). A unidade de processamento gráfico pode ser comunicativamente acoplada ao buffer de imagem. A unidade de processamento gráfico pode compreender o codificador 20 implantado pelo circuito lógico 47, para implantar vários módulos que são descritos com referência à Figura 2 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.
[0114] Em alguns exemplos, o decodificador 30 pode ser implantado pelo circuito lógico 47 em uma maneira similar, para implantar vários módulos que são descritos com referência a um decodificador 30 na Figura 3 e/ou qualquer outro sistema ou subsistema decodificador descrito nesse relatório. Em alguns exemplos, o decodificador 30 implantado pelo circuito lógico pode compreender um buffer de imagem (por exemplo, implantado pela unidade de processamento 2820 ou pela memória 44) e uma unidade de processamento gráfico (por exemplo, implantada pela unidade de processamento 46). A unidade de processamento gráfico pode ser comunicativamente acoplada ao buffer de imagem. A unidade de processamento gráfico pode compreender o decodificador 30 implantado pelo circuito lógico 47, para implantar vários módulos que são descritos com referência à Figura 3 e/ou qualquer outro sistema ou subsistema decodificador descrito nesse relatório.
[0115] Em alguns exemplos, a antena 42 pode ser configurada para receber um fluxo de bits de dados de vídeo codificados. Como descrito, o fluxo de bits codificados pode compreender dados, um indicador, um valor índice, dados de seleção de modo, e semelhantes relacionados a codificação de quadro de vídeo descritos nesse relatório, por exemplo, dados relacionados a partição de codificação (por exemplo, um coeficiente de transformada ou um coeficiente de transformada quantizado, um indicador opcional (como descrito), e/ou dados que definem a partição de codificação). O sistema de codificação de vídeo 40 pode adicionalmente compreender o decodificador 30 acoplado à antena 42 e configurado para decodificar o fluxo de bits codificados. O dispositivo de exibição 45 é configurado para apresentar um quadro de vídeo.
[0116] Deve ser entendido que, nessa modalidade desse pedido, para o exemplo descrito com referência ao codificador 20, o decodificador 30 pode ser configurado para realizar um processo inverso. Com relação a sinalizar um elemento de sintaxe, o decodificador 30 pode ser configurado para receber e analisar um elemento de sintaxe como esse e de modo correspondente decodificar dados de vídeo relacionados. Em alguns exemplos, o codificador 20 pode codificar por entropia o elemento de sintaxe em um fluxo de bits de vídeo codificados. Em tais exemplos, o decodificador 30 pode analisar o elemento de sintaxe e de modo correspondente decodificar dados de vídeo relacionados.
[0117] Deve ser notado que um método descrito nas modalidades desse pedido é principalmente usado em um processo de predição inter. Esse processo é realizado tanto pelo codificador 20 quanto pelo decodificador 30. O codificador 20 e o decodificador 30 nas modalidades desse pedido podem ser, por exemplo, um codificador e um decodificador correspondentes a um protocolo de padrão de vídeo tal como H.263, H.264, HEVC, MPEG-2, MPEG-4, VP8, ou VP9, ou um protocolo de padrão de vídeo de próxima geração (tal como H.266).
[0118] A Figura 2 é um diagrama de blocos esquemático/conceitual de um exemplo de um codificador 20 para implantar modalidades desse pedido. No exemplo na Figura 2, o codificador 20 compreende uma unidade de cálculo residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210, uma unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214, um buffer 216, uma unidade de filtro loop 220, um buffer de imagem decodificada (decoded picture buffer, DPB) 230, uma unidade de processamento de predição 260, e uma unidade de codificação por entropia 270. A unidade de processamento de predição 260 pode compreender uma unidade de predição inter 244, uma unidade de predição intra 254, e uma unidade de seleção de modo 262. A unidade de predição inter 244 pode compreender uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada). O codificador 20 mostrado na Figura 2 pode também ser referido como um codificador de vídeo híbrido ou um codificador de vídeo de acordo com um codec de vídeo híbrido.
[0119] Por exemplo, a unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de processamento de predição 260, e uma unidade de codificação por entropia 270 formam um percurso de sinal de encaminhamento do codificador 20, enquanto, por exemplo, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro loop 220, o buffer de imagem decodificada (decoded picture buffer, DPB) 230, e uma unidade de processamento de predição 260 formam um percurso para trás de sinal do codificador. O percurso para trás de sinal do codificador corresponde a um percurso de sinal de um decodificador (com referência a um decodificador 30 na Figura 3).
[0120] O codificador 20 recebe, por exemplo, por meio de uma entrada 202, uma imagem 201 ou um bloco de imagem 203 de uma imagem 201, por exemplo, uma imagem em uma sequência de imagens formando um vídeo ou uma sequência de vídeo. O bloco de imagem 203 pode também ser referido como um bloco de imagem atual ou um bloco de imagem a ser codificado. A imagem 201 pode ser referida como uma imagem atual ou uma imagem a ser codificada (em particular em codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagem codificadas e/ou decodificadas previamente de uma mesma sequência de vídeo, isto é, a sequência de vídeo que também compreende a imagem atual).
[0121] Uma modalidade do codificador 20 pode compreender uma unidade de partição (a qual não é representada na Figura 2), configurada para partir a imagem 201 em uma pluralidade de blocos tais como blocos de imagem
203. A imagem 201 é normalmente partida em uma pluralidade de blocos não sobrepostos. A unidade de partição pode ser configurada para usar um mesmo tamanho de bloco para todas as imagens em uma sequência de vídeo e uma grade correspondente definindo o tamanho de bloco, ou mudar um tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens, e partir cada imagem em blocos correspondentes.
[0122] Em um exemplo, a unidade de processamento de predição 260 no codificador 20 pode ser configurada para realizar qualquer combinação das tecnologias de partição descritas acima.
[0123] Da mesma forma que a imagem 201, o bloco de imagem 203 também é ou pode ser considerado como um arranjo ou matriz bidimensional de amostras com valores de amostra, embora um tamanho do bloco de imagem 203 é menor que um tamanho da imagem 201. Em outras palavras, o bloco de imagem 203 pode compreender, por exemplo, um arranjo de amostra (por exemplo, um arranjo de luma em um caso de uma imagem monocromática 201), três arranjos de amostra (por exemplo, um arranjo de luma e dois arranjos de croma em um caso de uma imagem a cores), ou qualquer outra quantidade e/ou tipo de arranjos dependentes de um formato de cor aplicado. Uma quantidade de amostras em direções (ou eixos) horizontais e verticais do bloco de imagem 203 define um tamanho do bloco de imagem 203.
[0124] O codificador 20 mostrado na Figura 2 é configurado para codificar a imagem 201 bloco por bloco. Por exemplo, codificação e predição são realizadas por cada bloco de imagem 203.
[0125] A unidade de cálculo residual 204 é configurada para calcular um bloco residual 205 com base no bloco de imagem 203 e um bloco de predição 265 (detalhes adicionais sobre o bloco de predição 265 são fornecidos abaixo), por exemplo, subtraindo-se valores de amostra do bloco de predição 265 a partir de valores de amostra do bloco de imagem 203 amostra por amostra (pixel por pixel), para obter o bloco residual 205 em um domínio de amostra.
[0126] A unidade de processamento de transformada 206 é configurada para aplicar uma transformada, por exemplo, uma transformada discreta de cosseno (discrete cosine transform, DCT) ou uma transformada discreta de seno (discrete sine transform, DST), para valores de amostra do bloco residual 205 para obter coeficientes de transformada 207 em um domínio de transformada. O coeficiente de transformada 207 pode também ser referido como um coeficiente residual de transformada e representa o bloco residual 205 no domínio de transformada.
[0127] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações de número inteiro de DCT/DST, tais como transformadas especificadas em HEVC/H.265. Comparada com uma transformada DCT ortogonal, tais aproximações de número inteiro são normalmente escalonadas com base em um fator. Para preservar uma norma de um bloco residual o qual é processado usando-se transformadas direta e inversa, um fator de escala adicional é aplicado como uma parte do processo de transformada. O fator de escala é normalmente selecionado com base em algumas restrições, por exemplo, o fator de escala sendo uma potência de dois para uma operação de deslocamento, uma profundidade de bit do coeficiente de transformada, e uma compensação entre exatidão e custos de implantação. Por exemplo, um fator de escala específico é especificado para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 no lado de decodificador 30 (e uma transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 212 no lado de codificador 20), e de modo correspondente, um fator de escala correspondente pode ser especificado para a transformada direta pela unidade de processamento de transformada 206 no lado de codificador 20.
[0128] A unidade de quantização 208 é configurada para quantizar os coeficientes de transformada 207 para obter coeficientes de transformada quantizados 209, por exemplo, aplicando-se quantização em escala ou quantização de vetor. O coeficiente de transformada quantizado 209 pode também ser referido como um coeficiente residual quantizado 209. Um processo de quantização pode reduzir uma profundidade de bit relacionada a alguns dos ou todos os coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante quantização, onde n é maior que m. Um grau de quantização pode ser modificado ajustando-se um parâmetro de quantização (quantization parameter, QP). Por exemplo, para quantização em escala, diferentes escalas podem ser usadas para alcançar quantização mais fina ou mais grossa. Um tamanho de etapa de quantização menor corresponde a quantização mais fina, e um tamanho de etapa de quantização maior corresponde a quantização mais grossa. Um tamanho de etapa de quantização apropriado pode ser indicado por um parâmetro de quantização (quantization parameter, QP). Por exemplo, o parâmetro de quantização pode ser um índice para um conjunto predefinido de tamanhos de etapa de quantização apropriados. Por exemplo, um parâmetro de quantização menor pode corresponder a quantização mais fina (um tamanho de etapa de quantização menor) e um parâmetro de quantização maior pode corresponder a quantização mais grossa (um tamanho de etapa de quantização maior), ou vice-versa. A quantização pode compreender divisão por um tamanho de etapa de quantização e quantização correspondente ou quantização inversa, por exemplo, realizada pela unidade de quantização inversa 210, ou pode compreender multiplicação por um tamanho de etapa de quantização. Em modalidades de acordo com alguns padrões tais como HEVC, um parâmetro de quantização pode ser usado para determinar o tamanho de etapa de quantização. Em geral, o tamanho de etapa de quantização pode ser calculado com base em um parâmetro de quantização usando-se uma aproximação de ponto fixo de uma equação incluindo divisão. Fatores de escala adicionais podem ser introduzidos na quantização e desquantização para restaurar a norma do bloco residual, onde a norma do bloco residual pode ser modificada por causa de uma escala usada na aproximação de ponto fixo da equação para o tamanho de etapa de quantização e o parâmetro de quantização. Em um exemplo de implantação, a escala da transformada inversa pode ser combinada com uma escala da desquantização. Alternativamente, uma tabela de quantização personalizada pode ser usada e sinalizada de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perda, onde a perda aumenta com aumento do tamanho de etapa de quantização.
[0129] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 a um coeficiente quantizado para obter um coeficiente desquantizado 211, por exemplo, aplicar, com base no ou usando-se um mesmo tamanho de etapa de quantização como a unidade de quantização 208, a inversa de um esquema de quantização aplicado pela unidade de quantização 208. O coeficiente desquantizado 211 pode também ser referido como um coeficiente residual desquantizado 211, e corresponder ao coeficiente de transformada 207, embora o coeficiente desquantizado 211 seja normalmente diferente do coeficiente de transformada devido a uma perda causada por quantização.
[0130] A unidade de processamento de transformada inversa 212 é configurada para aplicar uma transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada inversa discreta de cosseno (discrete cosine transform, DCT) ou uma transformada inversa discreta de seno (discrete sine transform, DST), para obter um bloco de transformada inversa 213 no domínio de amostra. O bloco de transformada inversa 213 pode também ser referido como um bloco desquantizado de transformada inversa 213 ou um bloco de transformada inversa residual 213.
[0131] A unidade de reconstrução 214 (por exemplo, um somador 214) é configurado para adicionar o bloco de transformada inversa 213 (a saber, o bloco residual reconstruído 213) ao bloco de predição 265, por exemplo, adicionando-se valores de amostra do bloco residual reconstruído 213 e os valores de amostra do bloco de predição 265, para obter um bloco reconstruído 215 no domínio de amostra.
[0132] Opcionalmente, uma unidade de buffer 216 ("buffer" 216 abreviadamente), por exemplo, do buffer de linha 216, é configurada para armazenar temporariamente ou armazenar o bloco reconstruído 215 e um valor de amostra correspondente, por exemplo, para predição intra. Em outras modalidades, o codificador pode ser configurado para usar um bloco reconstruído não filtrado e/ou um valor de amostra correspondente que são armazenados na unidade de buffer 216 para realizar qualquer tipo de estimativa e/ou predição, por exemplo, predição intra.
[0133] Por exemplo, em uma modalidade, o codificador 20 pode ser configurado de modo que uma unidade de buffer 216 seja configurada para armazenar o bloco reconstruído 215 não somente usado para a unidade de predição intra 254 mas também usado para a unidade de filtro loop 220 (a qual não é mostrada na Figura 2), e/ou de modo que, por exemplo, a unidade de buffer 216 e o buffer de imagem decodificada unidade 230 formem um buffer. Em outras modalidades, um bloco filtrado 221 e/ou um bloco ou amostra (a qual não é mostrada na Figura 2) a partir do buffer de imagem decodificada 230 é usado como uma entrada ou uma base para a unidade de predição intra 254.
[0134] A unidade de filtro loop 220 ("filtro loop" 220 abreviadamente) é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221, para transições de pixel suaves ou aperfeiçoar qualidade de vídeo. A unidade de filtro loop 220 é destinada a representar um ou mais filtros loop tais como um filtro de desbloqueio, um filtro de desvio adaptável a amostra (sample- adaptive offset, SAO), ou outros filtros, por exemplo, um filtro bilateral, um filtro loop adaptável (adaptive loop filter, ALF), um filtro de nitidez ou suavização, ou um filtro colaborativo. Embora a unidade de filtro loop 220 seja mostrada como um filtro in-loop na Figura 2, em uma outra implantação, a unidade de filtro loop 220 pode ser implantada as a filtro post-loop. O bloco filtrado 221 pode também ser referido como um bloco filtrado reconstruído 221. O buffer de imagem decodificada 230 pode armazenar um bloco codificado reconstruído depois que uma unidade de filtro loop 220 realiza uma operação de filtragem no bloco codificado reconstruído.
[0135] Em uma modalidade, o codificador 20 (de modo correspondente, a unidade de filtro loop 220) pode ser configurado para emitir um parâmetro de filtro loop (por exemplo, informações de desvio adaptáveis a amostra), por exemplo, diretamente ou depois de codificação por entropia realizada pela unidade de codificação por entropia 270 ou qualquer outra unidade de codificação por entropia, de modo que o decodificador 30 possa receber e aplicar o mesmo parâmetro de filtro loop para decodificação.
[0136] O buffer de imagem decodificada (decoded picture buffer, DPB) 230 pode ser uma memória de imagem de referência que armazena dados de imagem de referência para usar em codificação de dados de vídeo pelo codificador 20. O DPB 230 pode ser formado por qualquer um dentre uma variedade de dispositivos de armazenamento tais como uma memória de acesso aleatório dinâmica (dynamic random access memory, DRAM) (incluindo uma DRAM síncrona (synchronous DRAM, SDRAM), uma RAM magnetorresistiva (magnetoresistive RAM, MRAM), uma RAM resistiva (resistive RAM, RRAM)), ou outros tipos de dispositivos de armazenamento. O DPB 230 e o buffer 216 podem ser fornecidos por um mesmo dispositivo de armazenamento ou dispositivos de armazenamento separados. Em um exemplo, o buffer de imagem decodificada (decoded picture buffer, DPB) 230 é configurado para armazenar o bloco filtrado
221. O buffer de imagem decodificada 230 pode ser adicionalmente configurado para armazenar outros blocos filtrados previamente, por exemplo, blocos reconstruídos e filtrados previamente 221, da mesma imagem atual ou de diferentes imagens, por exemplo, imagens reconstruídas previamente, e pode fornecer imagens completas previamente reconstruídas, isto é, decodificadas (e blocos de referência e amostras correspondentes) e/ou uma imagem atual reconstruída parcialmente (e blocos de referência e amostras correspondentes), por exemplo, para predição inter. Em um exemplo, se o bloco reconstruído 215 é reconstruído sem filtragem in-loop, o buffer de imagem decodificada (decoded picture buffer, DPB) 230 é configurado para armazenar o bloco reconstruído 215.
[0137] A unidade de processamento de predição 260, também referida como uma unidade de processamento de predição de bloco 260, é configurada para receber ou obter o bloco de imagem 203 (um bloco de imagem atual 203 da imagem atual 201) e dados de imagem reconstruídos, por exemplo, amostras de referência da mesma imagem (atual) a partir do buffer 216 e/ou dados de imagem de referência 231 de uma ou mais imagens decodificadas previamente a partir do buffer de imagem decodificada 230, e processar esses dados para predição, a saber, para fornecer o bloco de predição 265 que pode ser um bloco de predição inter 245 ou um bloco de predição intra 255.
[0138] A unidade de seleção de modo 262 pode ser configurada para selecionar um modo de predição (por exemplo, um modo de predição intra ou inter) e/ou um bloco de predição 245 ou 255 correspondente para ser usado como o bloco de predição 265, para cálculo do bloco residual 205 e para reconstrução do bloco reconstruído 215.
[0139] Em uma modalidade, a unidade de seleção de modo 262 pode ser configurada para selecionar o modo de predição (por exemplo, a partir de modos de predição suportados pela unidade de processamento de predição 260), onde o modo de predição fornece um melhor par ou em outras palavras um residual mínimo (o residual mínimo significa melhor compressão para transmissão ou armazenamento), ou fornece sobrecargas de sinalização mínimas (as sobrecargas de sinalização mínimas significam melhor compressão para transmissão ou armazenamento), ou considera ou equilibra ambos. A unidade de seleção de modo 262 pode ser configurada para determinar o modo de predição com base em otimização de distorção de taxa (rate distortion optimization, RDO), isto é, selecionar um modo de predição que fornece uma distorção de taxa mínima ou selecionar um modo de predição para o qual a distorção de taxa relacionada pelo menos satisfaça um critério de seleção de modo de predição.
[0140] A seguir se descreve em detalhe processo de predição (por exemplo, realizado pela unidade de processamento de predição 260) e seleção de modo (por exemplo, realizado pela unidade de seleção de modo 262) que são realizados por um exemplo do codificador 20.
[0141] Como descrito acima, o codificador 20 é configurado para determinar ou selecionar o modo de predição melhor ou ideal a partir de um conjunto de modos de predição (predeterminados). O conjunto de modos de predição pode compreender, por exemplo, um modo de predição intra e/ou um modo de predição inter.
[0142] Um conjunto de modos de predição intra pode compreender 35 diferentes modos de predição intra, por exemplo, modos não direcionais tais como um modo DC (ou médio) e um modo planar, ou modos direcionais tais como aqueles definidos em H.265, ou pode compreender 67 diferentes modos de predição intra, por exemplo, modos não direcionais tais como um modo DC (ou médio) e um modo planar, ou modos direcionais tais como aqueles definidos em H.266 em desenvolvimento.
[0143] Em uma possível implantação, um conjunto de modos de predição inter depende de imagens de referência disponíveis (a saber, por exemplo, pelo menos imagens decodificadas parcialmente armazenadas no DBP 230, como descrito acima) e outros parâmetros de predição inter, por exemplo, depende de se uma imagem de referência inteira ou somente uma parte de uma imagem de referência, por exemplo, uma área de janela de busca ao redor de uma área de um bloco atual, é usada para buscar um melhor bloco de referência de pareamento, e/ou por exemplo, depende de se interpolação de pixel tal como interpolação meio pel e/ou quarto de pel é aplicada. O conjunto de modos de predição inter pode compreender, por exemplo, um modo de predição de vetor de movimento avançada (Advanced Motion Vector Prediction, AMVP) e um modo de fusão. Em uma implantação específica, o conjunto de modos de predição inter pode compreender um modo AMVP com base em ponto de controle refinado e um ponto de controle refinado com base em modo de fusão nas modalidades desse pedido. Em um exemplo, a unidade de predição intra 254 pode ser configurada para realizar qualquer combinação das tecnologias de predição inter descritas abaixo.
[0144] Além dos supracitados modos de predição, um modo de pulo e/ou um modo direto podem também ser aplicados nas modalidades desse pedido.
[0145] A unidade de processamento de predição 260 pode ser adicionalmente configurada para partir o bloco de imagem 203 em partições de bloco ou sub-blocos menores, por exemplo, por usar iterativamente a partição de árvore quaternária (quad-tree, QT), partição de árvore binária (binary-tree, BT), partição de árvore ternária (triple-tree, TT), ou qualquer combinação das mesmas, e realizar, por exemplo, predição em cada uma das partições de bloco ou sub-blocos. A seleção de modo compreende seleção de uma estrutura de árvore do bloco de imagem partido 203 e seleção de um modo de predição usado para cada uma das partições de bloco ou sub-blocos.
[0146] A unidade de predição inter 244 pode compreender uma unidade de estimativa de movimento (motion estimation, ME) (que não é mostrada na Figura 2) e uma unidade de compensação de movimento (motion compensation, MC) (a qual não é mostrada na Figura 2). A unidade de estimativa de movimento é configurada para receber ou obter um bloco de imagem 203 (o bloco de imagem atual 203 da imagem atual 201) e uma imagem decodificada 231, ou pelo menos um ou mais blocos reconstruídos previamente, por exemplo, um ou mais blocos reconstruídos de outras/diferentes imagens decodificadas previamente 231, para estimativa de movimento. Por exemplo, uma sequência de vídeo pode compreender a imagem atual e a imagem decodificada previamente 31. Em outras palavras, a imagem atual e a imagem decodificada previamente 31 pode ser uma parte de ou formar uma sequência de imagens formando uma sequência de vídeo.
[0147] Por exemplo, o codificador 20 pode ser configurado para selecionar um bloco de referência a partir de uma pluralidade de blocos de referência de uma mesma imagem ou diferentes imagens de uma pluralidade de outras imagens, e fornecer uma imagem de referência e/ou um desvio (um desvio espacial) entre uma localização (coordenadas X, Y) do bloco de referência e uma localização do bloco atual como um parâmetro de predição inter para a unidade de estimativa de movimento (a qual não é mostrada na Figura 2). Esse desvio é também chamado um vetor de movimento (motion vector, MV).
[0148] A unidade de compensação de movimento é configurada para obter um parâmetro de predição inter, e realizar predição inter com base no ou usando-se o parâmetro de predição inter para obter um bloco de predição inter
245. Compensação de movimento realizada pela unidade de compensação de movimento (a qual não é mostrada na Figura 2) pode compreender procurar ou gerar o bloco de predição com base em um vetor de movimento/de bloco determinado através da estimativa de movimento (possivelmente realizando interpolação em precisão de subpixel). Filtragem por interpolação pode gerar amostras de pixel adicionais a partir de amostras de pixel conhecidas. Isso potencialmente aumenta uma quantidade de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Mediante recebimento de um vetor de movimento para uma PU do bloco de imagem atual, a unidade de compensação de movimento 246 pode localizar um bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagem de referência. A unidade de compensação de movimento 246 pode também gerar um elemento de sintaxe associado a um bloco e uma fatia de vídeo, de modo que o decodificador 30 use o elemento de sintaxe para decodificar o bloco de imagem na fatia de vídeo.
[0149] Especificamente, a unidade de predição inter 244 pode transmitir um elemento de sintaxe para a unidade de codificação por entropia
270. O elemento de sintaxe compreende o parâmetro de predição inter (tal como informações de indicação de seleção de um modo de predição inter usado para predição do bloco atual depois que uma pluralidade de modos de predição inter são atravessados). Em um possível cenário de aplicação, se há somente um modo de predição inter, o parâmetro de predição inter pode não ser portado no elemento de sintaxe. Nesse caso, o lado de decodificador 30 pode realizar diretamente decodificação usando-se um modo de predição padrão. Pode ser entendido que uma unidade de predição inter 244 pode ser configurada para realizar qualquer combinação das tecnologias de predição inter.
[0150] A unidade de predição intra 254 é configurada para obter, por exemplo, receber, um bloco de imagem 203 (o bloco de imagem atual) e um ou mais blocos reconstruídos previamente, por exemplo, blocos vizinhos reconstruídos, de uma mesma imagem para estimativa intra. Por exemplo, o codificador 20 pode ser configurado para selecionar um modo de predição intra a partir de uma pluralidade de modos de predição intra (predeterminados).
[0151] Em uma modalidade, o codificador 20 pode ser configurado para selecionar o modo de predição intra de acordo com um critério de otimização, por exemplo, com base em um residual mínimo (por exemplo, um modo de predição intra fornecendo o bloco de predição 255 que é mais similar ao bloco de imagem atual 203) ou distorção de taxa mínima.
[0152] A unidade de predição intra 254 é adicionalmente configurada para determinar o bloco de predição intra 255 com base em, por exemplo, um parâmetro de predição intra no modo de predição intra selecionado. Em qualquer caso, depois de selecionar um modo de predição intra para um bloco, a unidade de predição intra 254 é adicionalmente configurada para fornecer um parâmetro de predição intra, isto é, informações indicando o modo de predição intra selecionado para o bloco, para a unidade de codificação por entropia 270. Em um exemplo, a unidade de predição intra 254 pode ser configurada para realizar qualquer combinação de tecnologias de predição intra.
[0153] Especificamente, a unidade de predição intra 254 pode transmitir o elemento de sintaxe para a unidade de codificação por entropia 270. O elemento de sintaxe compreende o parâmetro de predição intra (tal como informações de indicação de seleção de um modo de predição intra usado para predição do bloco atual depois que uma pluralidade de modos de predição intra são atravessados). Em um possível cenário de aplicação, se há somente um modo de predição intra, o parâmetro de predição intra pode não ser portado no elemento de sintaxe. Nesse caso, o lado de decodificador 30 pode realizar diretamente decodificação usando-se um modo de predição padrão.
[0154] A unidade de codificação por entropia 270 é configurada para aplicar (ou não aplicar) um algoritmo ou esquema de codificação por entropia (por exemplo, um esquema de codificação de comprimento variável (variable length coding, VLC), um esquema adaptável a contexto VLC (context adaptive VLC, CAVLC), um esquema de codificação aritmética, um esquema de codificação aritmética binária adaptável a contexto (context adaptive binary arithmetic coding, CABAC), um esquema de codificação aritmética binária adaptável a contexto com base em sintaxe (syntax-based context-adaptive binary arithmetic coding, SBAC), um esquema de codificação por entropia por partição de intervalo de probabilidade (probability interval partition entropy, PIPE), ou uma outra metodologia ou tecnologia de codificação por entropia) para um dos ou todos dentre o coeficiente residual quantizado 209, o parâmetro de predição inter, o parâmetro de predição intra, e/ou o parâmetro de filtro loop, para obter dados de imagem codificados 21 que podem ser emitidos por meio de uma saída 272, por exemplo, em uma forma de um fluxo de bits codificados 21. O fluxo de bits codificados pode ser transmitido para o decodificador de vídeo 30, ou armazenado para subsequente transmissão ou recuperação pelo decodificador de vídeo 30. A unidade de codificação por entropia 270 pode ser adicionalmente configurada para codificar por entropia um outro elemento de sintaxe para uma fatia de vídeo atual que está sendo codificada.
[0155] Outras variações de estrutura do codificador de vídeo 20 podem ser usadas para codificar um fluxo de vídeo. Por exemplo, a não transformada com base em codificador 20 pode quantizar um sinal residual diretamente sem a unidade de processamento de transformada 206 para alguns blocos ou quadros. Em uma outra implantação, o codificador 20 pode ter a unidade de quantização 208 e uma unidade de quantização inversa 210 combinadas em uma única unidade.
[0156] Especificamente, nessa modalidade desse pedido, o codificador 20 pode ser configurado para implantar um método de predição inter descrito nas modalidades a seguir.
[0157] Deve ser entendido que outras variações de estrutura do codificador de vídeo 20 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 20 pode quantizar diretamente um sinal residual. Nesse caso, o processamento pela unidade de processamento de transformada 206 não é exigido, e de modo correspondente, o processamento pela unidade de processamento de transformada inversa 212 também não é exigido. Alternativamente, para alguns blocos de imagem ou quadros de imagem, o codificador de vídeo 20 não gera dados residuais. De modo correspondente, nesse caso, processamento pela unidade de processamento de transformada 206, pela unidade de quantização 208, pela unidade de quantização inversa 210, e pela unidade de processamento de transformada inversa 212 não é exigido. Alternativamente, o codificador de vídeo 20 pode armazenar diretamente um bloco de imagem reconstruído como um bloco de referência. Nesse caso, processamento pelo filtro 220 não é exigido. Alternativamente, a unidade de quantização 208 e uma unidade de quantização inversa 210 no codificador de vídeo 20 podem ser combinadas. O filtro loop 220 é opcional. Além disso, em um caso de codificação por compressão sem perda, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de quantização inversa 210, e uma unidade de processamento de transformada inversa 212 são também opcionais. Deve ser entendido que, em diferentes cenários de aplicação, a unidade de predição inter 244 e uma unidade de predição intra 254 podem ser usadas seletivamente.
[0158] A Figura 3 é um diagrama de blocos esquemático/conceitual de um exemplo de um decodificador 30 para implantar modalidades desse pedido. O decodificador de vídeo 30 é configurado para receber, por exemplo, dados de imagem codificados (por exemplo, um fluxo de bits codificados) 21 obtidos através de codificação por um codificador 20, para obter uma imagem decodificada 231. Em um processo de decodificação, o decodificador de vídeo 30 recebe, a partir do codificador de vídeo 20, dados de vídeo, por exemplo, um fluxo de bits de vídeo codificados que representa um bloco de imagem em uma fatia de vídeo codificada e um elemento de sintaxe associado.
[0159] No exemplo na Figura 3, o decodificador 30 compreende uma unidade de decodificação por entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um buffer 316, um filtro loop 320, um buffer de imagem decodificada 330, e uma unidade de processamento de predição 360. A unidade de processamento de predição 360 pode compreender uma unidade de predição inter 344, uma unidade de predição intra 354, e uma unidade de seleção de modo 362. Em alguns exemplos, o decodificador de vídeo 30 pode realizar um passo de decodificação que é em geral inversa a um passo de codificação descrito com referência ao codificador de vídeo 20 na Figura 2.
[0160] A unidade de decodificação por entropia 304 é configurada para decodificar por entropia os dados de imagem codificados 21 para obter, por exemplo, um coeficiente quantizado 309 e/ou um parâmetro de codificação decodificado (o qual não é mostrado na Figura 3), por exemplo, qualquer um ou todos dentre um parâmetro de predição inter, um parâmetro de predição intra, um parâmetro de filtro loop, e/ou um outro elemento de sintaxe (que são decodificados). A unidade de decodificação por entropia 304 é adicionalmente configurada para encaminhar o parâmetro de predição inter, o parâmetro de predição intra, e/ou o outro elemento de sintaxe para a unidade de processamento de predição 360. O decodificador de vídeo 30 pode receber um elemento de sintaxe em um nível de fatia de vídeo e/ou um nível de bloco de imagem.
[0161] A unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o buffer 316 pode ser idêntico em função ao buffer 216, o filtro loop 320 pode ser idêntico em função ao filtro loop 220, e o buffer de imagem decodificada 330 pode ser idêntico em função ao buffer de imagem decodificada 230.
[0162] A unidade de processamento de predição 360 pode compreender a unidade de predição inter 344 e a unidade de predição intra 354. A unidade de predição inter 344 pode ser similar em função à unidade de predição inter 244, e a unidade de predição intra 354 pode ser similar em função à unidade de predição intra 254. A unidade de processamento de predição 360 é normalmente configurada para realizar predição de bloco e/ou obter um bloco de predição 365 a partir dos dados codificados 21, e receber ou obter (explicitamente ou implicitamente) um parâmetro relacionado à predição e/ou informações sobre um modo de predição selecionado, por exemplo, a partir da unidade de decodificação por entropia 304.
[0163] Quando a fatia de vídeo é codificada em uma fatia codificada de modo intra (I), a unidade de predição intra 354 na unidade de processamento de predição 360 é configurada para gerar um bloco de predição 365 de um bloco de imagem na 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 o quadro de vídeo é codificado em uma fatia codificada de modo inter (a saber, B ou P), a unidade de predição inter 344 (por exemplo, uma unidade de compensação de movimento) na unidade de processamento de predição 360 é configurada para gerar um bloco de predição 365 de um bloco de vídeo na fatia de vídeo atual com base em um vetor de movimento e o outro elemento de sintaxe que é recebido a partir da unidade de decodificação por entropia 304. Em predição inter, um bloco de predição pode ser gerado a partir de uma imagem de referência em uma lista de imagem de referência. O decodificador de vídeo 30 pode construir listas de quadros de referência, uma lista 0 e uma lista 1, usando-se uma tecnologia de construção padrão e com base em imagens de referência armazenadas no DPB 330.
[0164] A unidade de processamento de predição 360 é configurada para determinar informações de predição do bloco de vídeo na fatia de vídeo atual analisando-se o vetor de movimento e o outro elemento de sintaxe, e gerar, usando-se as informações de predição, o bloco de predição do bloco de vídeo atual que está sendo decodificado. Em um exemplo desse pedido, a unidade de processamento de predição 360 determina, usando-se alguns elementos de sintaxe recebidos, um modo de predição (por exemplo, predição intra ou predição inter) para codificar o bloco de vídeo na fatia de vídeo, um tipo de fatia de predição inter (por exemplo, uma fatia B, uma fatia P, ou uma fatia GPB), informações de construção de uma ou mais das listas de imagem de referência para a fatia, um vetor de movimento de cada bloco de vídeo codificado de modo inter na fatia, um status predição inter de cada bloco de vídeo codificado de modo inter na fatia, e outras informações, para decodificar o bloco de vídeo na fatia de vídeo atual. Em um outro exemplo dessa revelação, o elemento de sintaxe recebido pelo decodificador de vídeo 30 a partir do fluxo de bits compreende um elemento de sintaxe em um ou mais dentre um conjunto de parâmetros adaptáveis (adaptative parameter set, APS), um conjunto de parâmetros de sequência (sequence parameter set, SPS), um conjunto de parâmetros de imagem (picture parameter set, PPS), ou um cabeçalho de fatia.
[0165] A unidade de quantização inversa 310 pode ser configurada para realizar quantização inversa (a saber, desquantização) em um coeficiente de transformada quantizado fornecido no fluxo de bits e decodificado pela unidade de decodificação por entropia 304. Um processo de quantização inversa pode compreender uso de um parâmetro de quantização calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo, para determinar um grau de quantização que deve ser aplicado e do mesmo modo, um grau de quantização inversa que deve ser aplicado.
[0166] A unidade de processamento de transformada inversa 312 é configurada para aplicar uma transformada inversa (por exemplo, uma DCT inversa, uma transformada de número inteiro inversa, ou um processo de transformada inversa conceitualmente similar) em um coeficiente de transformada, para gerar um bloco residual em um domínio de pixel.
[0167] A unidade de reconstrução 314 (por exemplo, o somador 314) é configurada para adicionar um bloco de transformada inversa 313 (a saber, um bloco residual reconstruído 313) ao bloco de predição 365, por exemplo, adicionando-se valores de amostra do bloco residual reconstruído 313 e valores de amostra do bloco de predição 365, para obter um bloco reconstruído 315 em um domínio de amostra.
[0168] A unidade de filtro loop 320 (ou em uma malha de codificação ou depois de uma malha de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, para transições de pixel suaves ou para aperfeiçoar qualidade de vídeo. Em um exemplo, a unidade de filtro loop 320 pode ser configurada para realizar qualquer combinação de tecnologias de filtragem descritas abaixo. A unidade de filtro loop 320 se destina a representar um ou mais filtros loop tais como um filtro de desbloqueio, um filtro de desvio adaptável a amostra (sample-adaptative offset, SAO), ou outros filtros, por exemplo, um filtro bilateral, um filtro loop adaptável (adaptative loop filter, ALF), um filtro de nitidez ou suavização, ou um filtro colaborativo. Embora a unidade de filtro loop 320 seja mostrada como um filtro in-loop na Figura 3, em uma outra implantação, a unidade de filtro loop 320 pode ser implantada como um filtro post-loop.
[0169] Então, um bloco de vídeo decodificado 321 em um dado quadro ou imagem é armazenado no buffer de imagem decodificada 330 que armazena uma imagem de referência usada para subsequente compensação de movimento.
[0170] O decodificador 30 é configurado para emitir, por exemplo, a imagem decodificada 31 por meio de uma saída 332, para apresentar ou visualizar para um usuário.
[0171] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar um fluxo de bits comprimidos. Por exemplo, o decodificador 30 pode gerar um fluxo de vídeo emitido sem a unidade de filtro loop 320. Por exemplo, o decodificador com base em não transformada 30 pode quantizar inversamente um sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para alguns blocos ou quadros. Em uma outra implantação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[0172] Especificamente, nessa modalidade desse pedido, o decodificador 30 pode ser configurado para implantar um método de predição inter descrito nas modalidades a seguir.
[0173] Deve ser entendido que outras variações de estrutura do decodificador de vídeo 30 podem ser usadas para decodificar um fluxo de bits de vídeo codificados. Por exemplo, o decodificador de vídeo 30 pode gerar um fluxo de vídeo emitido sem processamento pelo filtro 320. Alternativamente, para alguns blocos de imagem ou quadros de imagem, a unidade de decodificação por entropia 304 no decodificador de vídeo 30 não obtém um coeficiente quantizado através de decodificação. De modo correspondente, nesse caso, processamento pela unidade de quantização inversa 310 e pela unidade de processamento de transformada inversa 312 não é exigido. O filtro loop 320 é opcional. Além disso, em um caso de compressão sem perda, a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 são também 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 usadas seletivamente.
[0174] Deve ser entendido que, no codificador 20 e no decodificador 30 nesse pedido, um resultado de processamento de uma etapa pode ser adicionalmente processado e então emitido para uma próxima etapa. Por exemplo, depois de uma etapa tal como filtragem por interpolação, derivação de vetor de movimento, ou filtragem loop, uma operação adicional, tal como recorte ou deslocamento, é realizada em um resultado de processamento da etapa correspondente.
[0175] Por exemplo, um vetor de movimento que é de um ponto de controle de um bloco de imagem atual e que é derivado com base em um vetor de movimento de um bloco codificado afim vizinho pode ser adicionalmente processado. Não há limitação quanto a isso nesse pedido. Por exemplo, um valor do vetor de movimento é restrito a estar dentro de uma faixa de largura de bit específica. Assumindo que uma largura de bit permitida do vetor de movimento é bitDepth, o valor do vetor de movimento está na faixa de –2^(bitDepth – 1) a 2^(bitDepth – 1) – 1, onde o símbolo "^" representa exponenciação. Se bitDepth é 16, o valor está na faixa de –32768 a 32767. Se bitDepth é 18, o valor está na faixa de –131072 a 131071. O valor do vetor de movimento pode ser restrito em qualquer das duas seguintes maneiras:
[0176] Maneira 1: Um bit mais significativo excedente do vetor de movimento é removido: ux = (vx + 2bitDepth)%2bitDepth vx = (ux >= 2bitDepth – 1) ? (ux − 2bitDepth) : ux uy = (vy + 2bitDepth)%2bitDepth vy = (uy >= 2bitDepth – 1) ? (uy − 2bitDepth) : uy
[0177] Por exemplo, um valor de vx é –32769, e 32767 é derivado de acordo com as supracitadas fórmulas. Um valor é armazenado em um computador em uma representação de complemento de dois, uma representação de complemento de dois de –32769 é 1,0111,1111,1111,1111 (17 bits), e o processamento realizado pelo computador por causa de excesso é descartar um bit mais significativo. Portanto, um valor de vx é 0111,1111,1111,1111, isto é, 32767. Esse valor é consistente com o resultado derivado através de processamento de acordo com as fórmulas.
[0178] Maneira 2: Recorte é realizado no vetor de movimento, e as seguintes fórmulas são usadas: vx = Clip3(–2bitDepth – 1, 2bitDepth – 1 – 1, vx) vy = Clip3(–2bitDepth – 1, 2bitDepth – 1 – 1, vy)
[0179] Nas supracitadas fórmulas, Clip3 é definido como recortar um valor de z para uma faixa [x, y]. x ; z<x Clip3(x, y, z) = {y ; z>y z ; de outra maneira
[0180] A Figura 4 é um diagrama estrutural esquemático de um dispositivo de codificação de vídeo 400 (por exemplo, um dispositivo de codificação de vídeo 400 ou um dispositivo de decodificação de vídeo 400) de acordo com uma modalidade desse pedido. O dispositivo de codificação de vídeo 400 é adequado para implantar as modalidades descritas nesse relatório. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador de vídeo (por exemplo, o decodificador 30 na Figura 1A) ou um codificador de vídeo (por exemplo, o codificador 20 na Figura 1A). Em uma outra modalidade, o dispositivo de codificação de vídeo 400 pode ser um ou mais componentes do decodificador 30 na Figura 1A ou o codificador 20 na Figura 1A.
[0181] O dispositivo de codificação de vídeo 400 compreende: portas de ingresso 410 e um receptor (Rx) 420 que são configuradas para receber dados; um processador, uma unidade lógica, ou uma unidade de processamento central (CPU) 430 que é configurada para processar dados; um transmissor (Tx) 440 e portas de emissão 450 que são configuradas para transmitir dados; e uma memória 460 configurada para armazenar dados. O dispositivo de codificação de vídeo 400 pode adicionalmente compreender componentes ópticos para elétricos e componentes elétricos para ópticos (EO) que são acoplados às portas de ingresso 410, ao receptor 420, o transmissor 440, e as portas de emissão 450, para emissão ou ingresso de um sinal óptico ou elétrico.
[0182] O processador 430 é implantado por hardware e software. O processador 430 pode ser implantado como um ou mais chips de CPU, núcleos
(por exemplo, um processador de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 se comunica com as portas de ingresso 410, o receptor 420, o transmissor 440, as portas de emissão 450, e a memória 460. O processador 430 compreende um módulo de codificação 470 (por exemplo, um módulo de codificação 470 ou um módulo de decodificação 470). O módulo de codificação/decodificação 470 implanta as modalidades reveladas nesse relatório, para implantar um método de predição de bloco de croma fornecido nas modalidades desse pedido. Por exemplo, o módulo de codificação/decodificação 470 implanta, processa, ou fornece várias operações de codificação. Portanto, o módulo de codificação/decodificação 470 fornece um aperfeiçoamento substancial para uma função do dispositivo de codificação de vídeo 400, e afeta a transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação/decodificação 470 é implantado como uma instrução que é armazenada na memória 460 e executada pelo processador 430.
[0183] A memória 460 compreende um ou mais discos, unidades de fita, e unidades de estado sólido, e pode ser usada como um dispositivo de armazenamento de dados excedentes, para armazenar programas quando tais programas são selecionados para execução, e para armazenar uma instrução e dados que são lidos durante execução de programa. A memória 460 pode ser volátil e/ou não volátil, e pode ser uma memória somente leitura (ROM), a memória de acesso aleatório (RAM), uma memória endereçável de conteúdo ternário (ternary content-addressable memory, TCAM), e/ou uma memória de acesso aleatório estática (SRAM).
[0184] A Figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como dispositivo de origem 12 ou dispositivo de destino 14 ou como ambos na Figura 1A de acordo com uma modalidade de exemplo. O aparelho 500 pode implantar as tecnologias desse pedido. Em outras palavras, a Figura 5 é um diagrama esquemático de blocos de uma implantação de um dispositivo de codificação ou um dispositivo de decodificação (referido como um dispositivo de codificação 500 abreviadamente) de acordo com uma modalidade desse pedido. O dispositivo de codificação 500 pode compreender um processador 510, uma memória 530, e a sistema de barramento 550. 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 vários métodos de codificação ou decodificação de vídeo descritos nesse pedido. Para evitar repetição, detalhes não são descritos no presente documento.
[0185] Nessa modalidade desse pedido, o processador 510 pode ser uma unidade de processamento central (Central Processing Unit, "CPU" abreviadamente). Alternativamente, o processador 510 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 lógico programável, uma porta discreta ou dispositivo lógico transistor, um componente de hardware discreto, ou semelhantes. O processador de propósito geral pode ser um microprocessador, qualquer processador convencional, ou semelhantes.
[0186] A memória 530 pode compreender um dispositivo de memória somente leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM). Qualquer outro tipo de dispositivo de armazenamento adequado pode alternativamente ser usado como a memória 530. A memória 530 pode compreender código e dados 531 acessados pelo processador 510 através do barramento 550. A memória 530 pode adicionalmente compreender um sistema operacional 533 e um programa de aplicativo 535. O programa de aplicativo 535 compreende pelo menos um programa que permite ao processador 510 realizar um método de codificação ou decodificação de vídeo descrito nesse pedido. Por exemplo, os programas de aplicativo 535 podem compreender aplicativos 1 a N. Os pedidos adicionalmente compreendem um aplicativo de codificação ou decodificação de vídeo (referido como um aplicativo de codificação de vídeo abreviadamente) que realiza o método de codificação ou decodificação de vídeo descrito nesse pedido.
[0187] O sistema de barramento 550 pode não compreender somente um barramento de dados, mas também compreender um barramento de potência, um barramento de controle, um barramento de sinal de status, e semelhantes. No entanto, para uma descrição clara, vários tipos de barramentos na figura são marcados como o sistema de barramento 550.
[0188] Opcionalmente, o dispositivo de codificação 500 pode adicionalmente compreender um ou mais dispositivos de saída, por exemplo, um visor 570. Em um exemplo, o visor 570 pode ser um visor sensível ao toque que combine um visor e uma unidade sensível ao toque que é operável para captar uma entrada por toque. O visor 570 pode ser conectado ao processador 510 através do barramento 550.
[0189] A seguir se descreve primeiramente conceitos nesse pedido.
[0190] 1. Modo de predição inter:
[0191] Em HEVC, dois modos de predição inter são usados: um modo de predição de vetor de movimento avançada (advanced motion vector prediction, AMVP) e um modo de fusão.
[0192] No modo AMVP, blocos codificados vizinhos espaciais ou temporais (indicados como blocos adjacentes) de um bloco atual são primeiramente atravessados; uma lista de vetores de movimento candidatos (a qual também pode ser referida como uma lista candidata de informações de movimento) é construída com base em informações de movimento dos blocos vizinhos; e então um vetor de movimento ideal é determinado a partir da lista de vetores de movimento candidatos com base em um custo de distorção de taxa. Informações de movimento candidatas correspondentes a um custo de distorção de taxa mínimo são usadas como um preditor de vetor de movimento (motion vector predictor, MVP) do bloco atual. Ambas as localizações dos blocos vizinhos e uma ordem de atravessamento dos mesmos são predefinidos. O custo de distorção de taxa é calculado de acordo com a Fórmula (1), onde J representa o custo de distorção de taxa (custo RD), SAD é uma soma de diferenças absolutas (sum of absolute differences, SAD) entre valores de amostra originais e valores de amostra de predição obtidos através de estimativa de movimento usando-se um preditor de vetor de movimento candidato, R representa uma taxa de bit, e λ representa um multiplicador Lagrange. Um lado de codificador transfere um valor índice do preditor de vetor de movimento selecionado na lista de vetores de movimento candidatos e um valor índice de quadro de referência para um lado de decodificador. Além disso, busca de movimento é realizada em uma vizinhança centrada no MVP, para obter um vetor de movimento real do bloco atual. O lado de codificador transfere uma diferença (diferença de vetor de movimento) entre a MVP e o vetor de movimento real para o lado de decodificador. J=SAD+ λ (1)
[0193] No modo de fusão, uma lista de vetores de movimento candidatos é primeiramente construída com base em informações de movimento de blocos codificados vizinhos espaciais ou temporais de um bloco atual. Então, informações de movimento ideais são determinadas a partir da lista de vetores de movimento candidatos como informações de movimento do bloco atual com base em um custo de distorção de taxa. Um valor índice (doravante indicado como um índice de fusão) de uma localização das informações de movimento ideais na lista de vetores de movimento candidatos é transferido para um lado de decodificador. Informações de movimento candidatas espaciais e temporais do bloco atual são mostradas na Figura 6A. As informações de movimento candidatas espaciais são de cinco blocos vizinhos espaciais (A0, A1, B0, B1 e B2). Se um bloco vizinho está indisponível (o bloco vizinho não existe, ou o bloco vizinho não é codificado, ou um modo de predição usado para o bloco vizinho não é um modo de predição inter), informações de movimento do bloco vizinho não são adicionadas à lista de vetores de movimento candidatos. As informações de movimento candidatas temporais do bloco atual são obtidas escalonando-se um MV de um bloco em uma localização correspondente em um quadro de referência com base em contagens de ordem de imagem (picture order count, POC) do quadro de referência e um quadro atual. Se um bloco em uma localização T no quadro de referência está disponível é primeiramente determinado. Se o bloco está indisponível, um bloco em uma localização C é selecionado.
[0194] Similar ao modo AMVP, no modo de fusão, ambas as localizações dos blocos vizinhos e uma ordem de atravessamento dos mesmos também são predefinidas. Além disso, as localizações dos blocos vizinhos e a ordem transversal dos mesmos podem ser diferentes em diferentes modos.
[0195] Pode ser constatado que uma lista de vetores de movimento candidatos precisa ser mantida tanto no modo AMVP quanto no modo de fusão. Antes que novas informações de movimento sejam adicionadas à lista de candidatos a cada vez, se informações de movimento iguais existem na lista é verificado primeiramente. Se as mesmas informações de movimento existem na lista, as informações de movimento não são adicionadas à lista. Esse processo de verificação é referido como remoção da lista de vetores de movimento candidatos. Remoção da lista é para evitar existência das mesmas informações de movimento na lista, para evitar cálculo de custo de distorção de taxa redundante.
[0196] Em predição inter em HEVC, informações de movimento são usadas para todas as amostras de um bloco de codificação, 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 bloco de codificação, no entanto, nem todas as amostras têm os mesmos recursos de movimento. Usar as mesmas informações de movimento pode resultar em predição de compensação de movimento inexata e mais informações residuais.
[0197] Em padrões de codificação de vídeo existentes, estimativa de movimento em pareamento de bloco com base em modelo de movimento translacional é usada, e é assumido que o movimento de todas as amostras em um bloco é consistente. No entanto, no mundo real, há uma variedade de movimentos. Muitos objetos não estão em movimento translacional, por exemplo, um objeto que está rodando, uma montanha russa girando em diferentes direções, uma exibição de fogos de artifício, e alguns movimentos acrobáticos em filmes, especialmente um objeto que se move em um cenário UGC. Para esses objetos que se movem, se uma tecnologia de compensação de movimento de bloco com base em modelo de movimento translacional nos padrões de codificação existentes é usada para codificação, a eficiência de codificação pode ser grandemente afetada. Em vista disso, um modelo de movimento não translacional, por exemplo, um modelo de movimento afim, é introduzido para aperfeiçoar a eficiência de codificação.
[0198] Com base nisso, em termos de modelos de movimento diferentes, o modo AMVP pode ser classificado em um modelo de translação com base em modo AMVP e um modelo não translacional com base em modo AMVP, e o modo de fusão pode ser classificado em um modelo de translação com base em modo de fusão e um modelo não translacional com base em modo de fusão.
[0199] 2. Modelo de movimento não translacional:
[0200] Modelo de movimento não translacional com base em predição significa que um mesmo modelo de movimento é usado tanto no lado de codificador quanto no lado de decodificador para derivar informações de movimento de cada sub-bloco de um bloco atual, e compensação de movimento é realizada com base nas informações de movimento do sub-bloco para obter um bloco de predição. Desse modo, a eficiência de predição é aperfeiçoada. Modelos de movimento não translacional comuns compreendem um modelo de movimento afim de 4 parâmetros e um modelo de movimento afim de 6 parâmetros.
[0201] Um sub-bloco nas modalidades desse pedido pode ser uma amostra ou um bloco de amostra N1 × N2 obtido usando-se um método de partição particular, onde tanto N1 quanto N2 são números inteiros positivos, e N1 pode ser igual a N2 ou pode não ser igual a N2 .
[0202] O modelo de movimento afim de 4 parâmetros é expresso de acordo com a Fórmula (2): 𝑣𝑥 = 𝑎1 + 𝑎3 𝑥 + 𝑎4 𝑦 { (2) 𝑣𝑦 = 𝑎2 − 𝑎4 𝑥 + 𝑎3 𝑦
[0203] O modelo de movimento afim de 4 parâmetros pode ser representado por vetores de movimento de duas amostras e suas coordenadas relativas à amostra superior à esquerda do bloco atual. Uma amostra usada para representar um parâmetro de modelo de movimento é referida como um ponto de controle. Se a amostra superior à esquerda (0, 0) e a amostra superior à direita (W, 0) são usadas como pontos de controle, respectivos vetores de movimento (vx0, vy0) e (vx1, vy1) do vértice superior à esquerda e do vértice superior à direita do bloco atual são primeiramente determinados. Então, informações de movimento de cada sub-bloco do bloco atual são obtidas de acordo com a Fórmula (3), onde (x, y) representa coordenadas do sub-bloco relativas à amostra superior à esquerda do bloco atual, e W representa a largura do bloco atual. 𝑣𝑥1 −𝑣𝑥0 𝑣𝑦1 −𝑣𝑦0 𝑣𝑥 = 𝑥− 𝑦 + 𝑣𝑥0
𝑊 𝑊 { 𝑣𝑦1 −𝑣𝑦0 𝑣𝑥1 −𝑣𝑥0 (3) 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦0
𝑊 𝑊
[0204] O modelo de movimento afim de 6 parâmetros é expresso de acordo com a Fórmula (4): 𝑣𝑥 = 𝑎1 + 𝑎3 𝑥 + 𝑎4 𝑦 { (4) 𝑣𝑦 = 𝑎2 + 𝑎5 𝑥 + 𝑎6 𝑦
[0205] O modelo de movimento afim de 6 parâmetros pode ser representado por vetores de movimento de três amostras e suas coordenadas relativas à amostra superior à esquerda do bloco atual. Se a amostra superior à esquerda (0, 0), a amostra superior à direita (W, 0), e a amostra inferior à esquerda (0, H) do bloco atual são usadas como pontos de controle, respectivos vetores de movimento (vx0, vy0), (vx1, vy1), e (vx2, vy2) do ponto de controle superior à esquerda, do ponto de controle superior à direita, e do ponto de controle inferior à esquerda do bloco atual são primeiramente determinados. Então, informações de movimento de cada sub-bloco do bloco atual são obtidas de acordo com a Fórmula (5), onde (x, y) representa coordenadas do sub-bloco relativas à amostra superior à esquerda do bloco atual, e W e H representam a largura e a altura do bloco atual, respectivamente. 𝑣𝑥1−𝑣𝑥0 𝑣𝑥2 −𝑣𝑦0 𝑣𝑥 = 𝑥+ 𝑦 + 𝑣𝑥0
𝑊 𝐻 { 𝑣𝑦1 −𝑣𝑦0 𝑣𝑦2 −𝑣𝑥0 (5) 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦0
𝑊 𝐻
[0206] Um bloco de codificação que é predito usando-se um modelo de movimento afim é referido como um bloco codificado afim.
[0207] Em geral, informações de movimento de um ponto de controle de um bloco codificado afim podem ser obtidas usando-se um modo de predição de vetor de movimento avançada (advanced motion vector prediction, AMVP) com base em modelo de movimento afim ou um modelo de movimento afim com base em modo de fusão.
[0208] As informações de movimento do ponto de controle do bloco de codificação atual podem ser obtidas usando-se um método de predição de vetor de movimento de ponto de controle herdado ou um método de predição de vetor de movimento de ponto de controle construído.
[0209] 3. Método de predição de vetor de movimento de ponto de controle herdado:
[0210] O método de predição de vetor de movimento de ponto de controle herdado é usar um modelo de movimento de um bloco codificado afim codificado vizinho para determinar vetores de movimento de ponto de controle candidatos de um bloco atual.
[0211] Um bloco atual mostrado na Figura 6B é usado como um exemplo. Blocos em localizações vizinhas ao redor do bloco atual são atravessados em uma ordem especificada, por exemplo, A1->B1->B0->A0->B2, para encontrar um bloco codificado afim incluindo um bloco em uma localização vizinha do bloco atual, e para obter informações de movimento de ponto de controle do bloco codificado afim. Além disso, um vetor de movimento de ponto de controle (usado no modo de fusão) ou um preditor de vetor de movimento de ponto de controle (usado no modo AMVP) do bloco atual é derivado usando-se um modelo de movimento construído com base nas informações de movimento de ponto de controle do bloco codificado afim. A ordem A1->B1->B0->A0->B2 é usada meramente como um exemplo. Uma outra ordem de combinação pode também ser usada nesse pedido. Além disso, os blocos nas localizações vizinhas não são limitados a A1, B1, B0, A0 e B2.
[0212] O bloco na localização vizinha pode ser uma amostra ou um bloco de amostra de um tamanho pré-estabelecido obtido usando-se um método de partição particular. Por exemplo, o bloco de amostra pode ser um bloco de amostra 4x4, um bloco de amostra 4x2, ou um bloco de amostra de um outro tamanho. Não há limitação quanto a isso no presente documento.
[0213] A seguir se descreve um processo de determinação usando-se A1 como um exemplo, e processos similares podem ser empregados para outros casos.
[0214] Como mostrado na Figura 4, se um bloco de codificação no qual A1 está localizado é um bloco codificado afim de 4 parâmetros, um vetor de movimento (vx4, vy4) do vértice superior à esquerda (x4, y4) e um vetor de movimento (vx5, vy5) do vértice superior à direita (x5, y5) do bloco codificado afim são obtidos. Um vetor de movimento (vx0, vy0) do vértice superior à esquerda (x0, y0) do bloco codificado afim atual é calculado de acordo com a Fórmula (6), e um vetor de movimento (vx1, vy1) do vértice superior à direita (x1, y1) do bloco codificado afim atual é calculado de acordo com a Fórmula (7). (𝑣𝑥5 −𝑣𝑥4 ) (𝑣𝑦5 −𝑣𝑦4 ) 𝑣𝑥0 = 𝑣𝑥4 + × (𝑥0 − 𝑥4 ) − × (𝑦0 − 𝑦4 ) 𝑥5 −𝑥4 𝑥5 −𝑥4 { (𝑣𝑦5 −𝑣𝑦4 ) (𝑣𝑥5−𝑣𝑥4 ) (6) 𝑣𝑦0 = 𝑣𝑦4 + × (𝑥0 − 𝑥4 ) + × (𝑦0 − 𝑦4 ) 𝑥5 −𝑥4 𝑥5−𝑥4 (𝑣𝑥5 −𝑣𝑥4 ) (𝑣𝑦5 −𝑣𝑦4 ) 𝑣𝑥1 = 𝑣𝑥4 + × (𝑥1 − 𝑥4 ) − × (𝑦1 − 𝑦4 ) 𝑥5 −𝑥4 𝑥5 −𝑥4 { (𝑣𝑦5 −𝑣𝑦4 ) (𝑣𝑥5−𝑣𝑥4 ) (7) 𝑣𝑦1 = 𝑣𝑦4 + × (𝑥1 − 𝑥4 ) + × (𝑦1 − 𝑦4 ) 𝑥5 −𝑥4 𝑥5−𝑥4
[0215] Uma combinação do vetor de movimento (vx0, vy0) do vértice superior à esquerda (x0, y0) com o vetor de movimento (vx1, vy1) do vértice superior à direita (x1, y1) do bloco atual que são obtidos com base no bloco codificado afim no qual A1 está localizado são os vetores de movimento de ponto de controle candidatos do bloco atual.
[0216] Se um bloco de codificação no qual A1 está localizado é um bloco codificado afim de 6 parâmetros, um vetor de movimento (vx4, vy4) do vértice superior à esquerda (x4, y4), um vetor de movimento (vx5, vy5) do vértice superior à direita (x5, y5), e um vetor de movimento (vx6, vy6) do vértice inferior à esquerda (x6, y6) do bloco codificado afim são obtidos. Um vetor de movimento (vx0, vy0) do vértice superior à esquerda (x0, y0) do bloco atual é calculado de acordo com a Fórmula (8), um vetor de movimento (vx1, vy1) do vértice superior à direita (x1, y1) do bloco atual é calculado de acordo com a Fórmula (9), e um vetor de movimento (vx2, vy2) do vértice inferior à esquerda (x2, y2) do bloco atual é calculado de acordo com a Fórmula (10). (𝑣𝑥5 −𝑣𝑥4 ) (𝑣𝑥6−𝑣𝑥4 ) 𝑣𝑥0 = 𝑣𝑥4 + × (𝑥 0 − 𝑥 4 ) + × (𝑦0 − 𝑦4 ) 𝑥5 −𝑥4 𝑦6 −𝑦4 { (𝑣𝑦5 −𝑣𝑦4 ) (𝑣𝑦6 −𝑣𝑦4 ) (8) 𝑣𝑦0 = 𝑣𝑦4 + × (𝑥0 − 𝑥4 ) + × (𝑦0 − 𝑦4 ) 𝑥5 −𝑥4 𝑦6 −𝑦4 (𝑣𝑥5 −𝑣𝑥4 ) (𝑣𝑥6−𝑣𝑥4 ) 𝑣𝑥1 = 𝑣𝑥4 + × (𝑥1 − 𝑥4 ) + × (𝑦1 − 𝑦4 ) 𝑥5 −𝑥4 𝑦6 −𝑦4 { (𝑣𝑦5 −𝑣𝑦4 ) (𝑣𝑦6 −𝑣𝑦4 ) (9) 𝑣𝑦1 = 𝑣𝑦4 + × (𝑥1 − 𝑥4 ) + × (𝑦1 − 𝑦4 ) 𝑥5 −𝑥4 𝑦6 −𝑦4 (𝑣𝑥5 −𝑣𝑥4 ) (𝑣𝑥6−𝑣𝑥4 ) 𝑣𝑥2 = 𝑣𝑥4 + × (𝑥 2 − 𝑥 4 ) + × (𝑦2 − 𝑦4 ) 𝑥5 −𝑥4 𝑦6 −𝑦4 { (𝑣𝑦5 −𝑣𝑦4 ) (𝑣𝑦6 −𝑣𝑦4 ) (10) 𝑣𝑦2 = 𝑣𝑦4 + × (𝑥2 − 𝑥4 ) + × (𝑦2 − 𝑦4 ) 𝑥5 −𝑥4 𝑦6 −𝑦4
[0217] Uma combinação do vetor de movimento (vx0, vy0) do vértice superior à esquerda (x0, y0), com o vetor de movimento (vx1, vy1) do vértice superior à direita (x1, y1), e com o vetor de movimento (vx2, vy2) do vértice inferior à esquerda (x2, y2) do bloco atual que são obtidos com base no bloco codificado afim no qual A1 está localizado é o vetor de movimento de ponto de controle candidato do bloco atual.
[0218] Deve ser notado que outros modelos de movimento, localizações candidatas, e ordens de busca e atravessamento podem também ser usadas nesse pedido. Detalhes não são descritos nas modalidades desse pedido.
[0219] Deve ser notado que métodos para representar modelos de movimento de blocos de codificação vizinhos e atuais com base em outros pontos de controle podem também ser usados nesse pedido. Detalhes não são descritos no presente documento.
[0220] 4. Método de predição de vetor de movimento de ponto de controle construído (vetores de movimento de ponto de controle construídos) 1:
[0221] O método de predição de vetor de movimento de ponto de controle construído é combinar vetores de movimento de blocos codificados vizinhos ao redor de um ponto de controle de um bloco atual como um vetor de movimento de ponto de controle de um bloco codificado afim atual, sem considerar se os blocos codificados vizinhos são blocos codificados afins.
[0222] Vetores de movimento do vértice superior à esquerda e do vértice superior à direita do bloco atual são determinados com base em informações de movimento dos blocos codificados vizinhos ao redor do bloco de codificação atual. A Figura 6C é usada como um exemplo para descrever o método de predição de vetor de movimento de ponto de controle construído. Deve ser notado que a Figura 6C é meramente um exemplo usado.
[0223] Como mostrado na Figura 6C, vetores de movimento de blocos codificados vizinhos A2, B2, e B3 no canto superior à esquerda são usados como vetores de movimento candidatos para um vetor de movimento do vértice superior à esquerda do bloco atual; e vetores de movimento de blocos codificados vizinhos B1 e B0 no canto superior à direita são usados como vetores de movimento candidatos para um vetor de movimento do vértice superior à direita do bloco atual. Os vetores de movimento candidatos do vértice superior à esquerda e do vértice superior à direita são combinados para constituir uma pluralidade de tuplas de 2. Vetores de movimento de dois blocos codificados compreendidos em uma tupla de 2 podem ser usados como vetores de movimento de ponto de controle candidatos do bloco atual, como mostrado na seguinte Fórmula (11A): {𝑣𝐴2 , 𝑣𝐵1 }, {𝑣𝐴2 , 𝑣𝐵0 }, {𝑣𝐵2 , 𝑣𝐵1 }, {𝑣𝐵2 , 𝑣𝐵0 }, {𝑣𝐵3 , 𝑣𝐵1 }, {𝑣𝐵3 , 𝑣𝐵0 } (11A) onde vA2 representa o vetor de movimento de A2, vB1 representa o vetor de movimento de B1, vB0 representa o vetor de movimento de B0, vB2 representa o vetor de movimento de B2, e vB3 representa o vetor de movimento de B3.
[0224] Como mostrado na Figura 6C, vetores de movimento de blocos codificados vizinhos A2, B2, e B3 no canto superior à esquerda são usados como vetores de movimento candidatos para um vetor de movimento do vértice superior à esquerda do bloco atual; vetores de movimento de blocos codificados vizinhos B1 e B0 no canto superior à direita são usados como vetores de movimento candidatos para um vetor de movimento do vértice superior à direita do bloco atual; e vetores de movimento de blocos codificados vizinhos A0 e A1 no canto inferior à esquerda são usados como vetores de movimento candidatos para um vetor de movimento do vértice inferior à esquerda do bloco atual. Os vetores de movimento candidatos do vértice superior à esquerda, o vértice superior à direita, e o vértice inferior à esquerda são combinados para constituir tuplas de 3. Vetores de movimento de três blocos codificados compreendidos em uma tupla de 3 podem ser usados como vetores de movimento de ponto de controle candidatos do bloco atual, como mostrado nas seguintes fórmulas (11B) e (11C): {𝑣𝐴2 , 𝑣𝐵1 , 𝑣𝐴0 }, {𝑣𝐴2 , 𝑣𝐵0 , 𝑣𝐴0 }, {𝑣𝐵2 , 𝑣𝐵1 , 𝑣𝐴0 }, {𝑣𝐵2 , 𝑣𝐵0 , 𝑣𝐴0 }, {𝑣𝐵3 , 𝑣𝐵1 , 𝑣𝐴0 }, {𝑣𝐵3 , 𝑣𝐵0 , 𝑣𝐴0 } (11B) {𝑣𝐴2 , 𝑣𝐵1 , 𝑣𝐴1 }, {𝑣𝐴2 , 𝑣𝐵0 , 𝑣𝐴1 }, {𝑣𝐵2 , 𝑣𝐵1 , 𝑣𝐴1 }, {𝑣𝐵2 , 𝑣𝐵0 , 𝑣𝐴1 }, {𝑣𝐵3 , 𝑣𝐵1 , 𝑣𝐴1 }, {𝑣𝐵3 , 𝑣𝐵0 , 𝑣𝐴1 } (11C) onde vA2 representa o vetor de movimento de A2, vB1 representa o vetor de movimento de B1, vB0 representa o vetor de movimento de B0, vB2 representa o vetor de movimento de B2, vB3 representa o vetor de movimento de B3, vA0 representa o vetor de movimento de A0, e vA1 representa o vetor de movimento de A1.
[0225] Deve ser notado que outros métodos para combinar vetores de movimento de ponto de controle podem também ser usados nesse pedido. Detalhes não são descritos no presente documento.
[0226] Deve ser notado que métodos para representar modelos de movimento de blocos de codificação vizinhos e atuais com base em outros pontos de controle podem também ser usados nesse pedido. Detalhes não são descritos no presente documento.
[0227] 5. Método de predição de vetor de movimento de ponto de controle construído (vetores de movimento de ponto de controle construídos) 2, como mostrado na Figura 6D:
[0228] Etapa 601: Obter informações de movimento de pontos de controle de um bloco atual.
[0229] Por exemplo, na Figura 6C, CPk (k = 1, 2, 3, 4) representa um késimo ponto de controle. A0, A1, A2, B0, B1, B2, e B3 são localizações espaciais vizinhas do bloco atual e são usadas para predizer CP1, CP2 ou CP3. T é uma localização vizinha temporal do bloco atual e é usada para predizer CP4.
[0230] É assumido que coordenadas de CP1, CP2, CP3, e CP4 são (0, 0), (W, 0), (H, 0), e (W, H), respectivamente, onde W e H representam a largura e a altura do bloco atual.
[0231] Para cada ponto de controle, informações de movimento do ponto de controle são obtidas na seguinte ordem:
[0232] (1) Para CP1, uma ordem de verificação é B2->A2->B3. Se B2 está disponível, informações de movimento de B2 são usadas para CP1. De outra maneira, A2 e B3 são verificadas. Se informações de movimento de todas as três localizações estão indisponíveis, informações de movimento de CP1 não podem ser obtidas.
[0233] (2) Para CP2, uma ordem de verificação é B0->B1. Se B0 está disponível, informações de movimento de B0 são usadas para CP2. Caso contrário, B1 é verificado. Se informações de movimento de ambas as localizações estão indisponíveis, informações de movimento de CP2 não podem ser obtidas.
[0234] (3) Para CP3, a ordem de verificação é A0->A1.
[0235] (4) Para CP4, informações de movimento de T são usadas.
[0236] No presente documento, X estar disponível significa que um bloco em X (X é A0, A1, A2, B0, B1, B2, B3 ou T) já está codificado e um modo de predição inter é usado para o bloco. De outra maneira, X está indisponível.
[0237] Deve ser notado que outros métodos para obter informações de movimento de ponto de controle podem também ser usados nesse pedido. Detalhes não são descritos no presente documento.
[0238] Etapa 602: Combinar as informações de movimento dos pontos de controle para obter informações de movimento de ponto de controle construídas.
[0239] Informações de movimento de dois pontos de controle são combinadas para constituir uma tupla de 2, para construir um modelo de movimento afim de 4 parâmetros. Combinações de dois pontos de controle podem ser {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, e
{CP3, CP4}. Por exemplo, um modelo de movimento afim de 4 parâmetros construído usando-se uma tupla de 2 incluindo os pontos de controle CP1 e CP2 pode ser indicado como (CP1, CP2) Afim.
[0240] Informações de movimento de três pontos de controle são combinadas para constituir uma tupla de 3, para construir um modelo de movimento afim de 6 parâmetros. Combinações de três pontos de controle podem ser {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, e {CP1, CP3, CP4}. Por exemplo, um modelo de movimento afim de 6 parâmetros construído usando-se uma tupla de 3 incluindo os pontos de controle CP1, CP2, e CP3 pode ser indicado como (CP1, CP2, CP3) Afim.
[0241] Informações de movimento de quatro pontos de controle são combinadas para constituir uma tupla de 4, para construir um modelo de movimento bilinear de 8 parâmetros. Um modelo bilinear de 8 parâmetros construído usando-se uma tupla de 4 incluindo os pontos de controle CP1, CP2, CP3, e CP4 pode ser indicado como Bilinear (CP1, CP2, CP3, CP4).
[0242] Nas modalidades desse pedido, para facilidade de descrição, uma combinação de informações de movimento de dois pontos de controle (ou dois blocos codificados) é simplesmente referida como uma tupla de 2, uma combinação de informações de movimento de três pontos de controle (ou três blocos codificados) é simplesmente referida como uma tupla de 3, e uma combinação de informações de movimento de quatro pontos de controle (ou quatro blocos codificados) é simplesmente referida como uma tupla de 4.
[0243] Esses modelos são atravessados em uma ordem pré- estabelecida. Se informações de movimento de um ponto de controle correspondente a uma combinação modelo estão indisponíveis, é considerado que o modelo está indisponível. Caso contrário, um índice de quadro de referência do modelo é determinado, e um vetor de movimento do ponto de controle é escalonado. Se as informações de movimento de todos os pontos de controle depois do escalonamento são consistentes, o modelo é inválido. Se todas as informações de movimento de pontos de controle que controlam o modelo estão disponíveis, e o modelo é válido, as informações de movimento dos pontos de controle usados para construir o modelo são adicionadas a uma lista candidata de informações de movimento.
[0244] Um método de escalonamento de vetor de movimento de ponto de controle é mostrado na Fórmula (12): 𝐶𝑢𝑟𝑃𝑜𝑐−𝐷𝑒𝑠𝑃𝑜𝑐 MV𝑠 = × 𝑀𝑉 (12) 𝐶𝑢𝑟𝑃𝑜𝑐−𝑆𝑟𝑐𝑃𝑜𝑐 onde 𝐶𝑢𝑟𝑃𝑜𝑐 representa um número de POC de um quadro atual, 𝐷𝑒𝑠𝑃𝑜𝑐 representa um número de POC de um quadro de referência de um bloco atual, 𝑆𝑟𝑐𝑃𝑜𝑐 representa um número de POC de um quadro de referência de um ponto de controle, MV𝑠 representa um vetor de movimento obtido depois de escalonamento, e MV representa um vetor de movimento de um ponto de controle.
[0245] Deve ser notado que diferentes combinações de pontos de controle podem ser convertidas em pontos de controle em uma mesma localização.
[0246] Por exemplo, um modelo de movimento afim de 4 parâmetros obtido com base em uma combinação de {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, ou {CP3, CP4} é representado por {CP1, CP2} ou {CP1, CP2, CP3} depois da conversão. Um método de conversão compreende: substituir vetores de movimento e coordenar informações de pontos de controle na Fórmula (2) para obter parâmetros de modelo; e então substituir as informações de coordenada de {CP1, CP2} na Fórmula (3) para obter vetores de movimento de {CP1, CP2}.
[0247] Mais diretamente, conversão pode ser realizada de acordo com as Fórmulas (13) a (21), onde W representa a largura do bloco atual, e H representa a altura do bloco atual. Nas Fórmulas (13) a (21), (𝑣𝑥0 , 𝑣𝑦0 ) representa um vetor de movimento de CP1, (𝑣𝑥1 , 𝑣𝑦1 ) representa um vetor de movimento de CP2, (𝑣𝑥2 , 𝑣𝑦2 ) representa um vetor de movimento de CP3, e (𝑣𝑥3 , 𝑣𝑦3 ) representa um vetor de movimento de CP4.
[0248] {CP1, CP2} pode ser convertido em {CP1, CP2, CP3} de acordo com a Fórmula (13). Em outras palavras, o vetor de movimento de CP3 em {CP1, CP2, CP3} pode ser determinado de acordo com a Fórmula (13): 𝑣𝑦1 −𝑣𝑦0 𝑣𝑥2 = − 𝐻 + 𝑣𝑥0
𝑊 { 𝑣𝑥1 −𝑣𝑥0 (13) 𝑣𝑦2 = + 𝐻 + 𝑣𝑦0
𝑊
[0249] {CP1, CP3} pode ser convertido para {CP1, CP2} ou {CP1, CP2, CP3} de acordo com a Fórmula (14):
𝑣𝑦2 −𝑣𝑦0 𝑣𝑥1 = + 𝑊 + 𝑣𝑥0
𝐻 { 𝑣𝑥2 −𝑣𝑥0 (14) 𝑣𝑦1 = − 𝑊 + 𝑣𝑦0
𝐻
[0250] {CP2, CP3} pode ser convertido em {CP1, CP2} ou {CP1, CP2, CP3} de acordo com a Fórmula (15): 2 𝑣𝑥 −𝑣𝑥 1 2 1 𝑣𝑦 −𝑣𝑦 𝑣𝑥0 = 𝑊∗𝑊+𝐻∗𝐻 𝑊 ∗ 𝑊 − 𝑊∗𝑊+𝐻∗𝐻 𝐻 ∗ 𝑊 + 𝑣𝑥1 { 2 𝑣𝑦 −𝑣𝑦 1 2 1 𝑣𝑥 −𝑣𝑥 (15) 𝑣𝑦0 = 𝑊∗𝑊+𝐻∗𝐻 𝑊 ∗ 𝑊 + 𝑊∗𝑊+𝐻∗𝐻 𝐻 ∗ 𝑊 + 𝑣𝑦1
[0251] {CP1, CP4} pode ser convertido em {CP1, CP2} ou {CP1, CP2, CP3} de acordo com a Fórmula (16) ou (17): 3 𝑣𝑥 −𝑣𝑥 0 3 0 𝑣𝑦 −𝑣𝑦 𝑣𝑥1 = 𝑊∗𝑊+𝐻∗𝐻 𝑊 ∗ 𝑊 + 𝑊∗𝑊+𝐻∗𝐻 𝐻 ∗ 𝑊 + 𝑣𝑥0 { 3 𝑣𝑦 −𝑣𝑦 0 3 0 𝑣𝑥 −𝑣𝑥 (16) 𝑣𝑦1 = 𝑊∗𝑊+𝐻∗𝐻 𝑊 ∗ 𝑊 − 𝑊∗𝑊+𝐻∗𝐻 𝐻 ∗ 𝑊 + 𝑣𝑦0 3 𝑣𝑥 −𝑣𝑥 0 3 0 𝑣𝑦 −𝑣𝑦 𝑣𝑥2 = 𝑊∗𝑊+𝐻∗𝐻 𝐻 ∗ 𝐻 − 𝑊∗𝑊+𝐻∗𝐻 𝐻 ∗ 𝑊 + 𝑣𝑥0 { 3 𝑣𝑦 −𝑣𝑦 0 3 0 𝑣𝑥 −𝑣𝑥 (17) 𝑣𝑦2 = 𝑊∗𝑊+𝐻∗𝐻 𝑊 ∗ 𝐻 + 𝑊∗𝑊+𝐻∗𝐻 𝐻 ∗ 𝐻 + 𝑣𝑦0
[0252] {CP2, CP4} pode ser convertido em {CP1, CP2} de acordo com a Fórmula (18), e {CP2, CP4} pode ser convertido em {CP1, CP2, CP3} de acordo com as Fórmulas (18) e (19): 𝑣𝑦3 −𝑣𝑦1 𝑣𝑥0 = − 𝑊 + 𝑣𝑥1
𝐻 { 𝑣𝑥3 −𝑣𝑥1 (18) 𝑣𝑦0 = + 𝑊 + 𝑣𝑦1
𝐻 𝑣𝑦3 −𝑣𝑦1 𝑣𝑥2 = − 𝑊 + 𝑣𝑥3
𝐻 { 𝑣𝑥3 −𝑣𝑥1 (19) 𝑣𝑦2 = + 𝑊 + 𝑣𝑦3
𝐻
[0253] {CP3, CP4} pode ser convertido em {CP1, CP2} de acordo com a Fórmula (20), e {CP3, CP4} pode ser convertido em {CP1, CP2, CP3} de acordo com as Fórmulas (20) e (21): 𝑣𝑦3 −𝑣𝑦2 𝑣𝑥0 = + 𝐻 + 𝑣𝑥2
𝑊 { 𝑣𝑥3 −𝑣𝑥2 (20) 𝑣𝑦0 = − 𝐻 + 𝑣𝑦2
𝑊 𝑣𝑦3 −𝑣𝑦2 𝑣𝑥1 = + 𝐻 + 𝑣𝑥3
𝑊 { 𝑣𝑥3 −𝑣𝑥2 (21) 𝑣𝑦1 = − 𝐻 + 𝑣𝑦3
𝑊
[0254] Por exemplo, um modelo de movimento afim de 6 parâmetros obtido com base em uma combinação {CP1, CP2, CP4}, {CP2, CP3, CP4}, ou {CP1, CP3, CP4} é convertido e representado usando-se {CP1, CP2, CP3}. Um método de conversão compreende: substituir vetores de movimento e coordenar informações de pontos de controle na Fórmula (4) para obter parâmetros de modelo; e então substituir as informações de coordenada de {CP1, CP2, CP3} na Fórmula (5) para obter vetores de movimento de {CP1, CP2, CP3}.
[0255] Mais diretamente, conversão pode ser realizada de acordo com as Fórmulas (22) a (24), onde W representa a largura do bloco atual, e H representa a altura do bloco atual. Nas Fórmulas (13) a (21), (vx0 , vy0 ) representa um vetor de movimento de CP1, (vx1 , vy1 ) representa um vetor de movimento de CP2, (vx2 , vy2 ) representa um vetor de movimento de CP3, e (vx3 , vy3 ) representa um vetor de movimento de CP4.
[0256] {CP1, CP2, CP4} pode ser convertido em {CP1, CP2, CP3} de acordo com a Fórmula (22): 𝑣𝑥 = 𝑣𝑥3 + 𝑣𝑥0 − 𝑣𝑥1 { 2 (22) 𝑣𝑦2 = 𝑣𝑦3 + 𝑣𝑦0 − 𝑣𝑦1
[0257] {CP2, CP3, CP4} pode ser convertido em {CP1, CP2, CP3} de acordo com a Fórmula (23): 𝑣𝑥 = 𝑣𝑥1 + 𝑣𝑥2 − 𝑣𝑥3 { 0 (23) 𝑣𝑦0 = 𝑣𝑦1 + 𝑣𝑦2 − 𝑣𝑦3
[0258] {CP1, CP3, CP4} pode ser convertido em {CP1, CP2, CP3} de acordo com a Fórmula (24): 𝑣𝑥 = 𝑣𝑥3 + 𝑣𝑥0 − 𝑣𝑥2 { 1 (24) 𝑣𝑦1 = 𝑣𝑦3 + 𝑣𝑦0 − 𝑣𝑦2
[0259] 6. Predição de vetor de movimento temporal avançada (advanced temporal motion vector prediction, ATMVP):
[0260] Em predição inter em HEVC, compensação de movimento é realizada em todas as amostras de um bloco atual com base em informações de movimento iguais para obter preditores das amostras do bloco a ser processado. No entanto, nem todas as amostras do bloco a ser processado têm recursos de movimento iguais. Usar as mesmas informações de movimento para predizer todas as amostras do bloco a ser processado pode reduzir a exatidão de compensação de movimento e aumentar as informações residuais.
[0261] Para resolver os problemas supracitados, uma tecnologia de predição de vetor de movimento temporal avançada (advanced temporal motion vector prediction, ATMVP) é fornecida em uma solução existente.
[0262] Um processo de realizar predição usando-se a tecnologia ATMVP compreende principalmente as seguintes etapas, como mostrado na Figura 6E:
[0263] (1) Determinar um vetor de desvio do bloco a ser processado.
[0264] (2) Determinar, em uma imagem alvo correspondente com base em uma localização de um sub-bloco a ser processado do bloco a ser processado e no vetor de desvio, um sub-bloco correspondente ao sub-bloco a ser processado, onde a imagem alvo é uma dentre imagens codificadas.
[0265] (3) Determinar um vetor de movimento do sub-bloco a ser processado com base em um vetor de movimento do sub-bloco correspondente.
[0266] Por exemplo, o vetor de movimento do sub-bloco a ser processado atual pode ser determinado usando-se um método de escalonamento. Por exemplo, o método de escalonamento é implantado de acordo com a Fórmula (25): 𝐶𝑃𝑜𝑐−𝐷𝑃𝑜𝑐 MV𝑐 = 𝐷𝑃𝑜𝑐−𝑆𝑃𝑜𝑐 × MV𝑔 (25) onde CPoc representa um número de POC de um quadro no qual o bloco a ser processado está localizado, DPoc representa um número de POC de um quadro no qual o sub-bloco correspondente está localizado, SrcPoc representa um número de POC de um quadro de referência do sub-bloco correspondente, MVc representa um vetor de movimento obtido através de escalonamento, e MVg representa o vetor de movimento do sub-bloco correspondente.
[0267] (4) Realizar predição de compensação de movimento no sub- bloco a ser processado com base no vetor de movimento do sub-bloco a ser processado, para obter um valor de amostra de predição do sub-bloco a ser processado.
[0268] 7. Predição de vetor de movimento planar (PLANAR):
[0269] Em predição de vetor de movimento planar, informações de movimento em uma localização espacial vizinha superior, uma localização espacial vizinha à esquerda, uma localização à direita, e uma localização inferior de cada sub-bloco a ser processado do bloco a ser processado são obtidas, e uma média das informações de movimento é calculada, e convertida em informações de movimento do sub-bloco a ser processado atual.
[0270] Para um sub-bloco a ser processado cujas coordenadas são (x, y), um vetor de movimento P(x, y) do sub-bloco a ser processado é calculado com base em um vetor de movimento de interpolação horizontal Ph (x, y) e um vetor de movimento de interpolação horizontal Pv (x, y) de acordo com a Fórmula (26): 𝑃(𝑥, 𝑦) = (𝐻 × 𝑃ℎ (𝑥, 𝑦) + 𝑊 × 𝑃𝑣 (𝑥, 𝑦) + 𝐻 × 𝑊)/(2 × 𝐻 × 𝑊) (26) onde H representa a altura do bloco a ser processado, e W representa a largura do bloco a ser processado.
[0271] O vetor de movimento de interpolação horizontal Ph (x, y) e o vetor de movimento de interpolação horizontal Pv (x, y) podem ser calculados com base em vetores de movimento de sub-blocos à esquerda, à direita, na parte superior, e na parte inferior do sub-bloco a ser processado atual de acordo com as Fórmulas (27) e (28): 𝑃ℎ (𝑥, 𝑦) = (𝑊 − 1 − 𝑥) × 𝐿(−1, 𝑦) + (𝑥 + 1) × 𝑅(𝑤, 𝑦) (27) 𝑃𝑣 (𝑥, 𝑦) = (𝐻 − 1 − 𝑦) × 𝐴(𝑥, −1) + (𝑦 + 1) × 𝐵(𝑥, 𝐻) (28) onde L(−1, y) representa um vetor de movimento de um sub-bloco à esquerda do sub-bloco a ser processado, R(w, y) representa um vetor de movimento de um sub-bloco à direita do sub-bloco a ser processado, A(x, −1) representa um vetor de movimento de um sub-bloco na parte superior do sub- bloco a ser processado, e B(x, H) representa um vetor de movimento de um sub- bloco na parte inferior do sub-bloco a ser processado.
[0272] Um vetor de movimento L de um bloco à esquerda e um vetor de movimento A de um bloco superior são obtidos com base em um bloco vizinho espacial de um bloco de codificação atual. Vetores de movimento L(−1, y) e A(x, −1) de blocos de codificação em localizações pré-estabelecidas (–1, y) e (x, –1) são obtidos com base nas coordenadas (x, y) do sub-bloco a ser processado.
[0273] Como mostrado na Figura 7, um vetor de movimento R(w, y) de um bloco à direita e um vetor de movimento B(x, H) de um bloco inferior podem ser extraídos usando-se o seguinte método:
[0274] (1) Extrair informações de movimento temporal BR em uma localização espacial vizinha inferior à direita do bloco a ser processado.
[0275] (2) Obter o vetor de movimento R(w, y) do bloco à direita realizando-se cálculo ponderado com base em vetor de movimento extraído AR em uma localização espacial vizinha superior à direita e as informações de movimento temporal extraídas BR na localização espacial vizinha inferior à direita, como mostrado na Fórmula (29): 𝑅(𝑤, 𝑦) = ((𝐻 − 𝑦 − 1) ∗ 𝐴𝑅 + (𝑦 + 1) ∗ 𝐵𝑅)/H (29)
[0276] (3) Obter o vetor de movimento B(x, H) do bloco inferior realizando-se cálculo ponderado com base em vetor de movimento extraído BL em uma localização espacial vizinha inferior à esquerda e nas informações de movimento temporal extraídas BR na localização espacial vizinha inferior à direita, como mostrado na Fórmula (30): 𝐵(𝑥, 𝐻) = ((𝑊 − 𝑥 − 1) ∗ 𝐵𝐿 + (𝑥 + 1) ∗ 𝐵𝑅)/H (30)
[0277] Deve ser notado que o vetor de movimento usado no cálculo é um vetor de movimento obtido através de escalonamento depois que o vetor de movimento é escalonado para apontar para o primeiro quadro de referência em uma fila de quadro de referência específica.
[0278] 8. Modelo de movimento afim com base em modo de predição de vetor de movimento avançada (modo AMVP Afim):
[0279] (1) Construir uma lista de vetores de movimento candidatos.
[0280] Uma lista de vetores de movimento candidatos correspondentes ao modo AMVP com base em modelo de movimento afim é construída usando-se o método de predição de vetor de movimento de ponto de controle herdado e/ou o método de predição de vetor de movimento de ponto de controle construído. Nas modalidades desse pedido, a lista de vetores de movimento candidatos correspondentes ao modo AMVP com base em modelo de movimento afim pode ser referida como uma lista de candidatos a preditor de vetor de movimento de ponto de controle (lista de candidatos a preditor de vetores de movimento de ponto de controle). Um preditor de vetor de movimento de cada ponto de controle compreende vetores de movimento de dois pontos de controle (para um modelo de movimento afim de 4 parâmetros) ou vetores de movimento de três pontos de controle (para um modelo de movimento afim de 6 parâmetros).
[0281] Opcionalmente, a lista de candidatos a preditor de vetor de movimento de ponto de controle é removida e classificada de acordo com uma regra em particular, e pode ser truncada ou preenchida até uma quantidade em particular.
[0282] (2) Determinar um preditor de vetor de movimento de ponto de controle ideal.
[0283] Em um lado de codificador, um vetor de movimento de cada sub-bloco de um bloco de codificação atual é obtido com base em cada preditor de vetor de movimento de ponto de controle na lista de candidatos a preditor de vetor de movimento de ponto de controle de acordo com a Fórmula (3) ou (5). O vetor de movimento obtido é usado para obter um valor de amostra em uma localização correspondente em um quadro de referência para o qual o vetor de movimento do sub-bloco aponta. O valor de amostra obtido é usado como um preditor para realizar compensação de movimento usando um modelo de movimento afim. Uma média de diferença entre um valor original e um valor de predição de cada amostra do bloco de codificação atual é calculada. Um preditor de vetor de movimento de ponto de controle correspondente a uma média de diferença mínima é selecionado como o preditor de vetor de movimento de ponto de controle ideal, e usado como preditores de vetor de movimento de dois ou três pontos de controle do bloco de codificação atual. Um número índice representando uma localização do preditor de vetor de movimento de ponto de controle na lista de candidatos a preditor de vetor de movimento de ponto de controle é codificado em um fluxo de bits e enviado para um decodificador.
[0284] No lado de decodificador, o número índice é analisado, e o preditor de vetor de movimento de ponto de controle (preditor de vetores de movimento de ponto de controle, control point motion vectors predictor CPMVP) é determinado a partir da lista de candidatos a preditor de vetor de movimento de ponto de controle com base no número índice.
[0285] (3) Determinar um vetor de movimento de ponto de controle
[0286] No lado de codificador, um preditor de vetor de movimento de ponto de controle é usado como um ponto de partida de busca para busca de movimento dentro de uma faixa de busca específica, para obter um vetor de movimento de ponto de controle (vetores de movimento de ponto de controle, control point motion vectors, CPMV). Uma diferença entre o vetor de movimento de ponto de controle e o preditor de vetor de movimento de ponto de controle (diferenças de vetores de movimento de ponto de controle, control point motion vectors differences, CPMVD) é transferida para o lado de decodificador.
[0287] No lado de decodificador, a diferença de vetor de movimento de ponto de controle é analisada e adicionada ao preditor de vetor de movimento de ponto de controle, para obter o vetor de movimento de ponto de controle.
[0288] 9. Modo de fusão de sub-bloco (modo de fusão com base em sub-bloco):
[0289] Uma lista de candidatos a fusão com base em sub-bloco é construída usando-se pelo menos um dentre a predição de vetor de movimento temporal avançada, o método de predição de vetor de movimento de ponto de controle herdado, o método de predição de vetor de movimento de ponto de controle construído, e o método de predição planar.
[0290] Opcionalmente, a lista de candidatos a fusão com base em sub-bloco é removida e classificada de acordo com uma regra em particular, e pode ser truncada ou preenchida até uma quantidade em particular.
[0291] Em um lado de codificador, se a predição de vetor de movimento temporal avançada é usada, um vetor de movimento de cada sub- bloco (uma amostra ou um bloco de amostra N1 × N2 obtido usando-se um método de partição particular) é obtido usando-se o método descrito nas supracitadas descrições em "7. Predição de vetor de movimento planar". Se o método de predição planar é usado, um vetor de movimento de cada sub-bloco é obtido usando-se o método descrito nas supracitadas descrições em "8. Modelo de movimento afim com base em modo de predição de vetor de movimento avançada".
[0292] Se o método de predição de vetor de movimento de ponto de controle herdado ou o método de predição de vetor de movimento de ponto de controle construído é usado, um vetor de movimento de cada sub-bloco (uma amostra ou um bloco de amostra N1 × N2 obtido usando-se um método de partição particular) de um bloco atual é obtido de acordo com a Fórmula (3) ou (5). Depois que o vetor de movimento de cada sub-bloco é obtido, um valor de amostra em uma localização em um quadro de referência para o qual o vetor de movimento do sub-bloco aponta é adicionalmente obtido, e o valor de amostra é usado como um preditor do sub-bloco para compensação de movimento afim. Uma média de diferença entre um valor original e um preditor de cada amostra de um bloco de codificação atual é calculada. Um vetor de movimento de ponto de controle correspondente a uma média de diferença mínima é selecionado como vetores de movimento de dois ou três pontos de controle do bloco de codificação atual. Um número índice representando uma localização do vetor de movimento de ponto de controle na lista de candidatos é codificado em um fluxo de bits e enviado para um decodificador.
[0293] No lado de decodificador, o número índice é analisado, e o vetor de movimento de ponto de controle (vetores de movimento de ponto de controle, control point motion vectors, CPMV) é determinado a partir da lista de candidatos a fusão de vetor de movimento de ponto de controle com base no número índice.
[0294] Além disso, deve ser notado que nesse pedido, "pelo menos um(a)" significa um(a) ou mais, e "uma pluralidade de" significa dois ou mais que dois. O termo "e/ou" descreve uma relação de associação para descrever objetos associados e representa que três relações podem existir. Por exemplo, A e/ou B podem representar os seguintes casos: somente A existe, tanto A quanto B existem, e somente B existe, onde A e B podem ser singulares ou plurais. O caractere "/" em geral representa uma relação "ou" entre os objetos associados. "Pelo menos um item (pedaço) dos seguintes" ou uma expressão similar à mesma significa qualquer combinação desses itens, incluindo um item (pedaço) singular ou qualquer combinação de diversos itens (pedaços). Por exemplo, pelo menos um item (pedaço) de a, b, ou c pode representar: a, b, c, a-b, a-c, b-c, ou a-b-c, onde a, b, e c podem ser singulares ou plurais.
[0295] Nesse pedido, quando um modo de predição inter é usado para decodificar um bloco atual, um elemento de sintaxe pode ser usado para sinalizar o modo de predição inter.
[0296] Para algumas estruturas de sintaxe atualmente usadas do modo de predição inter usado para analisar o bloco atual, fazer referência à Tabela 1. Deve ser notado que um elemento de sintaxe em uma estrutura de sintaxe pode alternativamente ser representado por outros indicadores. Isso não é especificamente limitado nesse pedido. Tabela 1 coding_unit(x0, y0, cbWidth, cbHeight, treeType) { Descritor if(slice_type != I) { uc_skip_flag[x0][y0] ae(v) if(uc_skip_flag[x0][y0] == 0) pred_mode_flag[x0][y0] ae(v)
coding_unit(x0, y0, cbWidth, cbHeight, treeType) { Descritor
}
if(UcPredMode[x0][y0] == MODE_INTRA) {
if(treeType == SINGLE_TREE | | treeType == DUAL_TREE_LUMA) {
intra_luma_mpm_flag[x0][y0] ae(v)
if(intra_luma_mpm_flag[x0][y0])
intra_luma_mpm_idx[x0][y0] ae(v)
else intra_luma_mpm_remainder[x0][y0] ae(v)
}
if(treeType == SINGLE_TREE | | treeType == DUAL_TREE_CHROMA)
intra_chroma_pred_mode[x0][y0] ae(v)
} else { /* MODE_INTER (inter mode) */
if(uc_skip_flag[x0][y0]) {
if(MaxNumSubblockMergeCand > 0 && cbWidth >= 8 && cbHeight >= 8)
merge_subblock_flag[x0][y0] ae(v)
if(merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1)
merge_idx[x0][y0] ae(v)
if(merge_subblock_flag[x0][y0] == 1 && MaxNumSubblockMergeCand > 1)
merge_subblock_idx[x0][y0] ae(v)
} else {
merge_flag[x0][y0] ae(v)
if(merge_flag[x0][y0]) {
if((sps_affine_enabled_flag | | sps_sbtmvp_enabled_flag) && cbWidth >= 8 && cbHeight >= 8)
merge_subblock_flag[x0][y0] ae(v)
if(merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1)
merge_idx[x0][y0] ae(v)
if(merge_subblock_flag[x0][y0] == 1)
merge_subblock_idx[x0][y0] ae(v)
} else {
coding_unit(x0, y0, cbWidth, cbHeight, treeType) { Descritor if(slice_type == B)
inter_pred_idc[x0][y0] ae(v)
se(sps_affine_enabled_flag && cbWidth >= 16 && cbHeight >= 16) {
inter_affine_flag[x0][y0] ae(v)
if(sps_affine_type_flag && inter_affine_flag[x0][y0])
uc_affine_type_flag[x0][y0] ae(v)
}
if(inter_pred_idc[x0][y0] != PRED_L1) {
if(num_ref_idx_l0_active_minus1 > 0)
ref_idx_l0[x0][y0] ae(v)
mvd_coding(x0, y0, 0, 0)
if(MotionModelIdc[x0][y0] > 0)
mvd_coding(x0, y0, 0, 1)
if(MotionModelIdc[x0][y0] > 1)
mvd_coding(x0, y0, 0, 2)
mvp_l0_flag[x0][y0] ae(v)
} else {
MvdL0[x0][y0][0] = 0
MvdL0[x0][y0][1] = 0
}
if(inter_pred_idc[x0][y0] != PRED_L0) {
if(num_ref_idx_l1_active_minus1 > 0)
ref_idx_l1[x0][y0] ae(v)
if(mvd_l1_zero_flag && inter_pred_idc[x0][y0] == PRED_BI) {
MvdL1[x0][y0][0] = 0
MvdL1[x0][y0][1] = 0
MvdCpL1[x0][y0][0][0] = 0
MvdCpL1[x0][y0][0][1] = 0
MvdCpL1[x0][y0][1][0] = 0
MvdCpL1[x0][y0][1][1] = 0 coding_unit(x0, y0, cbWidth, cbHeight, treeType) { Descritor MvdCpL1[x0][y0][2][0] = 0 MvdCpL1[x0][y0][2][1] = 0 } else { mvd_coding(x0, y0, 1, 0) if(MotionModelIdc[x0][y0] > 0) mvd_coding(x0, y0, 1, 1) if(MotionModelIdc[x0][y0] > 1) mvd_coding(x0, y0, 1, 2) mvp_l1_flag[x0][y0] ae(v) } else { MvdL1[x0][y0][0] = 0 MvdL1[x0][y0][1] = 0 } if(sps_amvr_enabled_flag && inter_affine_flag == 0 && (MvdL0[x0][y0][0] != 0 | | MvdL0[x0][y0][1] != 0 | | MvdL1[x0][y0][0] != 0 | | MvdL1[x0][y0][1] != 0)) amvr_mode[x0][y0] ae(v) } } } if(UcPredMode[x0][y0] != MODE_INTRA && uc_skip_flag[x0][y0] == 0) uc_cbf ae(v) if(uc_cbf) { transform_tree(x0, y0, cbWidth, cbHeight, treeType) }
[0297] O treeType variável especifica um tipo de árvore de codificação usada para codificar um bloco atual.
[0298] O slice_type variável é usado para especificar um tipo de uma fatia na qual um bloco atual está localizado, por exemplo, um tipo P, um tipo B, ou um tipo I.
[0299] O elemento de sintaxe uc_skip_flag[x0][y0] pode ser usado para especificar se um bloco atual tem um residual. Por exemplo, quando uc_skip_flag[x0][y0] = 1, isso indica que o bloco atual tem o residual; ou quando uc_skip_flag[x0][y0] = 0, isso indica que o bloco atual não tem residual.
[0300] Deve ser notado que um modo de pulo é um modo especial de fusão. Depois que um modo de fusão é usado para encontrar um vetor de movimento, se um codificador determina, usando-se um método, que o bloco atual é basicamente igual a um bloco de referência, dados residuais não precisam ser transmitidos, e somente um índice do vetor de movimento e um uc_skip_flag precisam ser transmitidos. Portanto, se uc_skip_flag[x0][y0] = 0, isso indica que o bloco atual não tem residual e dados residuais não precisam ser analisados.
[0301] O elemento de sintaxe pred_mode_flag[x0][y0] é usado para especificar se um modo de predição para um bloco atual é um modo de predição inter ou de predição intra.
[0302] A variável UcPredMode[x0][y0] é determinada com base em pre_mode_flag[x0][y0]. MODE_INTRA especifica um modo de predição intra.
[0303] O elemento de sintaxe merge_flag[x0][y0] pode ser usado para especificar se um modo de fusão é usado para um bloco atual. Por exemplo, quando merge_flag[x0][y0] = 1, isso indica que o modo de fusão é usado para o bloco atual; ou quando merge_flag[x0][y0] = 0, isso indica que o modo de fusão não é usado para o bloco atual, onde x0 e y0 representam coordenadas do bloco atual em uma imagem de vídeo.
[0304] cbWidth especifica a largura do bloco atual, e cbHeight especifica a altura do bloco atual.
[0305] O elemento de sintaxe sps_affine_enabled_flag pode ser usado para especificar se um modelo de movimento afim pode ser usado para predizer de modo inter em um bloco de imagem compreendido em uma imagem de vídeo. Por exemplo, quando sps_affine_enabled_flag = 0, isso indica que o modelo de movimento afim não pode ser usado para predizer de modo inter o bloco de imagem compreendido na imagem de vídeo; ou quando sps_affine_enabled_flag = 1, isso indica que o modelo de movimento afim pode ser usado para predizer de modo inter o bloco de imagem compreendido na imagem de vídeo.
[0306] O elemento de sintaxe merge_subblock_flag[x0][y0] pode ser usado para especificar se um sub-bloco com base em modo de fusão é usado para um bloco atual. Um tipo (slice_type) de uma fatia na qual o bloco atual está localizado é um tipo P ou um tipo B. Por exemplo, quando merge_subblock_flag[x0][y0] = 1, isso indica que o sub-bloco com base em modo de fusão é usado para o bloco atual; ou quando merge_subblock_flag[x0][y0] = 0, isso indica que o sub-bloco com base em modo de fusão não é usado para o bloco atual, mas um modelo de movimento translacional com base em modo de fusão pode ser usado.
[0307] O elemento de sintaxe merge_idx[x0][y0] pode ser usado para especificar um índice de uma lista candidata a fusão.
[0308] O elemento de sintaxe merge_subblock_idx[x0][y0] pode ser usado para especificar um índice de uma lista de candidatos a fusão com base em sub-bloco.
[0309] sps_sbtmvp_enabled_flag pode ser usado para especificar se um modo ATMVP pode ser usado para predizer de modo inter um bloco de imagem compreendido em uma imagem de vídeo. Por exemplo, quando sps_sbtmvp_enabled_flag = 1, isso indica que o modo ATMVP pode ser usado para predizer de modo inter o bloco de imagem compreendido na imagem de vídeo; ou quando sps_sbtmvp_enabled_flag = 0, isso indica que o modo ATMVP não pode ser usado para predizer de modo inter o bloco de imagem compreendido na imagem de vídeo.
[0310] O elemento de sintaxe inter_affine_flag[x0][y0] pode ser usado para especificar se um modo AMVP com base em modelo de movimento afim é usado para um bloco atual quando uma fatia na qual o bloco atual está localizado é uma fatia tipo P ou uma fatia tipo B. Por exemplo, quando inter_affine_flag[x0][y0] = 0, isso indica que o modo AMVP com base em modelo de movimento afim é usado para o bloco atual; ou quando inter_affine_flag[x0][y0] = 1, isso indica que o modo AMVP com base em modelo de movimento afim não é usado para o bloco atual, mas um modelo de movimento translacional com base em modo AMVP pode ser usado.
[0311] O elemento de sintaxe uc_affine_type_flag[x0][y0] pode ser usado para especificar se um modelo de movimento afim de 6 parâmetros é usado para realizar compensação de movimento para um bloco atual quando uma fatia na qual o bloco atual está localizado é uma fatia tipo P ou uma fatia tipo B. Quando uc_affine_type_flag[x0][y0] = 0, isso indica que o modelo de movimento afim de 6 parâmetros não é usado para realizar compensação de movimento para o bloco atual, mas somente um modelo de movimento afim de 4 parâmetros pode ser usado para realizar compensação de movimento; ou quando uc_affine_type_flag[x0][y0] = 1, isso indica que o modelo de movimento afim de 6 parâmetros é usado para realizar compensação de movimento para o bloco atual.
[0312] Como mostrado na Tabela 2, quando Motion_ModelIdc[x0][y0] = 1, isso indica que um modelo de movimento afim de 4 parâmetros é usado; quando Motion_ModelIdc[x0][y0] = 2, isso indica que um modelo de movimento afim de 6 parâmetros é usado; ou quando Motion_ModelIdc[x0][y0] = 0, isso indica que um modelo de movimento translacional é usado. Tabela 2 Motion_ModelIdc[x0][y0] Modelo de movimento para compensação de movimento 0 Movimento translacional 1 Movimento afim de 4 parâmetros 2 Movimento afim de 6 parâmetros
[0313] A variável MaxNumMergeCand é usada para especificar um comprimento máximo de uma lista de vetores de movimento candidatos a fusão, a variável MaxNumSub-blockMergeCand é usada para especificar um comprimento máximo de uma lista de vetores de movimento candidatos a fusão com base em sub-bloco, inter_pred_idc[x0][y0] é usado para especificar uma direção de predição, PRED_L0 especifica predição antecipada, num_ref_idx_l0_active_minus1 especifica o número de quadros de referência em uma lista de quadros de referência dianteiros, ref_idx_l0[x0][y0] especifica um valor índice para um quadro de referência dianteiro de um bloco atual, mvd_coding(x0, y0, 0, 0) especifica a primeira diferença de vetor de movimento, mvp_l0_flag[x0][y0] especifica um valor índice para uma lista de MVP dianteiros candidatos, PRED_L1 é usado para indicar predição retroativa, num_ref_idx_l1_active_minus1 indica o número de quadros de referência em uma lista de quadros de referência posteriores, ref_idx_l1[x0][y0] especifica um valor índice para um quadro de referência do bloco atual, e mvp_l1_flag[x0][y0] especifica um valor índice para uma lista de MVP posteriores candidatos.
[0314] Na Tabela 1, ae(v) representa um elemento de sintaxe codificado usando-se a codificação aritmética binária adaptável com base em contexto (codificação aritmética binária adaptável com base em contexto, CABAC).
[0315] A seguir se descreve um processo de predição inter em detalhe, como mostrado na Figura 8A.
[0316] Etapa 801: Analisar um fluxo de bits com base em uma estrutura de sintaxe mostrada na Tabela 1, e determinar um modo de predição inter para um bloco atual.
[0317] Se é determinado que o modo de predição inter para o bloco atual é um modo AMVP com base em modelo de movimento afim, a etapa 802a é realizada.
[0318] Os elementos de sintaxe sps_affine_enabled_flag = 1, merge_flag = 0, e inter_affine_flag = 1 indicam que o modo de predição inter para o bloco atual é o modo AMVP com base em modelo de movimento afim.
[0319] Se é determinado que o modo de predição inter para o bloco atual é um modo de fusão de sub-bloco, a etapa 802b é realizada.
[0320] O elemento de sintaxe sps_affine_enabled_flag = 1 ou o elemento de sintaxe sps_sbtmvp_enabled_flag = 1, e os elementos de sintaxe merge_flag = 1 e merge_subblock_flag = 1 indicam que o modo de predição inter para o bloco atual é o modo de fusão de sub-bloco.
[0321] Etapa 802a: Construir uma lista de vetores de movimento candidatos correspondentes ao modo AMVP com base em modelo de movimento afim. Realizar a etapa 803a.
[0322] Um vetor de movimento de ponto de controle candidato do bloco atual é derivado usando-se um método de predição de vetor de movimento de ponto de controle herdado e/ou um método de predição de vetor de movimento de ponto de controle construído, e é adicionado à lista de vetores de movimento candidatos.
[0323] A lista de vetores de movimento candidatos pode compreender uma lista de tuplas de 2 (um modelo de movimento afim de 4 parâmetros é usado para o bloco de codificação atual) ou uma lista de tuplas de 3. A lista de tuplas de 2 compreende uma ou mais tuplas de 2 usadas para construir um modelo de movimento afim de 4 parâmetros. A lista de tuplas de 3 compreende uma ou mais tuplas de 3 usadas para construir um modelo de movimento afim de 6 parâmetros.
[0324] Opcionalmente, a lista de tuplas de 2/ tuplas de 3 de vetores de movimento candidatos é removida e classificada de acordo com uma regra em particular, e pode ser truncada ou preenchida até uma quantidade em particular.
[0325] A1: Um processo de construção da lista de vetores de movimento candidatos usando-se o método de predição de vetor de movimento de ponto de controle herdado é descrito.
[0326] A Figura 4 é usada como um exemplo. No exemplo na Figura 4, blocos em localizações vizinhas ao redor do bloco atual são atravessados em uma ordem A1->B1->B0->A0->B2, para encontrar um bloco codificado afim incluindo um bloco em uma localização vizinha do bloco atual, e para obter informações de movimento de ponto de controle do bloco codificado afim. Além disso, as informações de movimento de ponto de controle do bloco codificado afim são usadas para construir um modelo de movimento, para derivar informações de movimento candidatas de ponto de controle do bloco atual. Para detalhes, se referir às supracitadas descrições em "3. Método de predição de vetor de movimento de ponto de controle herdado". Detalhes não são descritos no presente documento novamente.
[0327] Por exemplo, um modelo de movimento afim usado para o bloco atual é um modelo de movimento afim de 4 parâmetros (Isto é, Motion_ModelIdc = 1). Se um modelo de movimento afim de 4 parâmetros é usado para um bloco de decodificação afim vizinho, vetores de movimento de dois pontos de controle do bloco de decodificação afim são obtidos: um vetor de movimento (vx4, vy4) do ponto de controle superior à esquerda (x4, y4) e um vetor de movimento (vx5, vy5) do ponto de controle superior à direita (x5, y5). O bloco de decodificação afim é um bloco codificado afim ao qual predição é realizada usando-se um modelo de movimento afim durante codificação.
[0328] Vetores de movimento de dois pontos de controle, a saber, os pontos de controle superior à esquerda e superior à direita do bloco atual são derivados respectivamente de acordo com as Fórmulas (6) e (7) correspondentes ao modelo de movimento afim de 4 parâmetros, usando-se o modelo de movimento afim de 4 parâmetros incluindo os dois pontos de controle do bloco de decodificação afim vizinho.
[0329] Se um modelo de movimento afim de 6 parâmetros é usado para o bloco de decodificação afim vizinho, vetores de movimento de três pontos de controle do bloco de decodificação afim vizinho são obtidos, por exemplo, um vetor de movimento (vx4, vy4) do ponto de controle superior à esquerda (x4, y4), um vetor de movimento (vx5, vy5) do ponto de controle superior à direita (x5, y5), e um vetor de movimento (vx6, vy6) do vértice inferior à esquerda (x6, y6) na Figura 4.
[0330] Vetores de movimento de dois pontos de controle, a saber, os pontos de controle superior à esquerda e superior à direita do bloco atual são derivados respectivamente de acordo com as Fórmulas (8) e (9) correspondentes ao modelo de movimento afim de 6 parâmetros, usando-se o modelo de movimento afim de 6 parâmetros incluindo os três pontos de controle do bloco de decodificação afim vizinho.
[0331] Por exemplo, um modelo de movimento afim usado para um bloco de decodificação atual é um modelo de movimento afim de 6 parâmetros (Isto é, Motion_ModelIdc = 2). Se um modelo de movimento afim usado para um bloco de decodificação afim vizinho é um modelo de movimento afim de 6 parâmetros, vetores de movimento de três pontos de controle do bloco de decodificação afim vizinho são obtidos, por exemplo, um vetor de movimento (vx4, vy4) do ponto de controle superior à esquerda (x4, y4), um vetor de movimento (vx5, vy5) do ponto de controle superior à direita (x5, y5), e um vetor de movimento (vx6, vy6) do vértice inferior à esquerda (x6, y6) na Figura 4.
[0332] Vetores de movimento de três pontos de controle, a saber, os pontos de controle superior à esquerda, superior à direita, e inferior à esquerda do bloco atual são derivados respectivamente de acordo com as Fórmulas (8), (9), e (10) correspondentes ao modelo de movimento afim de 6 parâmetros, usando-se o modelo de movimento afim de 6 parâmetros incluindo os três pontos de controle do bloco de decodificação afim vizinho.
[0333] Se um modelo de movimento afim usado para o bloco de decodificação afim vizinho é um modelo de movimento afim de 4 parâmetros, vetores de movimento de dois pontos de controle do bloco de decodificação afim vizinho são obtidos: um vetor de movimento (vx4, vy4) do ponto de controle superior à esquerda (x4, y4) e um vetor de movimento (vx5, vy5) do ponto de controle superior à direita (x5, y5).
[0334] Vetores de movimento de três pontos de controle, a saber, os pontos de controle superior à esquerda, superior à direita, e inferior à esquerda do bloco atual são derivados respectivamente de acordo com as Fórmulas (6) e (7) correspondentes ao modelo de movimento afim de 4 parâmetros, usando-se o modelo de movimento afim de 4 parâmetros incluindo os dois pontos de controle do bloco de decodificação afim vizinho.
[0335] Deve ser notado que outros modelos de movimento, localizações candidatas, e ordens de busca podem também ser usados nesse pedido. Detalhes não são descritos no presente documento. Deve ser notado que métodos para representar modelos de movimento de blocos de codificação vizinhos e atuais com base em outros pontos de controle podem também ser usados nesse pedido. Detalhes não são descritos no presente documento.
[0336] A2: Um processo de construir a lista de vetores de movimento candidatos usando-se o método de predição de vetor de movimento de ponto de controle construído é descrito.
[0337] Por exemplo, um modelo de movimento afim usado para um bloco de decodificação atual é um modelo de movimento afim de 4 parâmetros (Isto é, Motion_ModelIdc = 1), e vetores de movimento do vértice superior à esquerda e do vértice superior à direita do bloco de codificação atual são determinados com base em informações de movimento de um bloco vizinho codificado do bloco de codificação atual. Especificamente, a lista de vetores de movimento candidatos pode ser construída usando-se o método de predição de vetor de movimento de ponto de controle construído 1 ou o método de predição de vetor de movimento de ponto de controle construído 2. Para o método específico, se referir às supracitadas descrições em "4. Método de predição de vetor de movimento de ponto de controle construído 1" e "5. Método de predição de vetor de movimento de ponto de controle construído 2". Detalhes não são descritos no presente documento novamente.
[0338] Por exemplo, um modelo de movimento afim usado para um bloco de decodificação atual é um modelo de movimento afim de 6 parâmetros (Isto é, Motion_ModelIdc = 2), e vetores de movimento do vértice superior à esquerda, do vértice superior à direita, e do vértice inferior à esquerda do bloco de codificação atual são determinados com base em informações de movimento de um bloco vizinho codificado do bloco de codificação atual. Especificamente, a lista de vetores de movimento candidatos pode ser construída usando-se o método de predição de vetor de movimento de ponto de controle construído 1 ou o método de predição de vetor de movimento de ponto de controle construído 2. Para o método específico, se referir às supracitadas descrições em "4. Método de predição de vetor de movimento de ponto de controle construído 1" e "5. Método de predição de vetor de movimento de ponto de controle construído 2". Detalhes não são descritos no presente documento novamente.
[0339] Deve ser notado que outras combinações de informações de movimento de ponto de controle podem também ser usadas nesse pedido. Detalhes não são descritos no presente documento.
[0340] Etapa 803a: Analisar o fluxo de bits e determinar um preditor de vetor de movimento de ponto de controle ideal. Realizar a etapa 804a.
[0341] B1: Se o modelo de movimento afim usado para o bloco de decodificação atual é o modelo de movimento afim de 4 parâmetros (Motion_ModelIdc = 1), um número índice é analisado, e um vetor de movimento ideal preditor para os dois pontos de controle são determinados a partir da lista de vetores de movimento candidatos com base no número índice.
[0342] Por exemplo, o número índice é mvp_l0_flag ou mvp_l1_flag.
[0343] B2: Se o modelo de movimento afim usado para o bloco de decodificação atual é o modelo de movimento afim de 6 parâmetros (Motion_ModelIdc = 2), um número índice é analisado, e um vetor de movimento ideal preditor para os três pontos de controle são determinados a partir da lista de vetores de movimento candidatos com base no número índice.
[0344] Etapa 804a: Analisar o fluxo de bits e determinar um vetor de movimento de ponto de controle.
[0345] C1: Se o modelo de movimento afim usado para o bloco de decodificação atual é o modelo de movimento afim de 4 parâmetros (Motion_ModelIdc = 1), diferenças de vetor de movimento dos dois pontos de controle do bloco atual são obtidas decodificando-se o fluxo de bits, e vetores de movimento dos dois pontos de controle são então obtidos com base nas diferenças de vetor de movimento e nos preditores de vetor de movimento dos pontos de controle. Usando predição antecipada como um exemplo, as diferenças de vetor de movimento dos dois pontos de controle são mvd_coding(x0, y0, 0, 0) e mvd_coding(x0, y0, 0, 1), respectivamente.
[0346] Por exemplo, diferenças de vetor de movimento do ponto de controle superior à esquerda e do ponto de controle superior à direita são obtidas decodificando-se o fluxo de bits, e são adicionadas a respectivos preditores de vetor de movimento, para obter vetores de movimento do ponto de controle superior à esquerda e do ponto de controle superior à direita do bloco atual.
[0347] C2: Se o modelo de movimento afim usado para o bloco de decodificação atual é o modelo de movimento afim de 6 parâmetros (Motion_ModelIdc = 2), diferenças de vetor de movimento dos três pontos de controle do bloco atual são obtidas decodificando-se o fluxo de bits, e vetores de movimento dos três pontos de controle são então obtidos com base nas diferenças de vetor de movimento e nos preditores de vetor de movimento dos pontos de controle. Usando predição antecipada como um exemplo, diferenças de vetor de movimento de três pontos de controle são mvd_coding(x0, y0, 0, 0), mvd_coding(x0, y0, 0, 1), e mvd_coding(x0, y0, 0, 2), respectivamente.
[0348] Por exemplo, diferenças de vetor de movimento do ponto de controle superior à esquerda, do ponto de controle superior à direita, e do ponto de controle inferior à esquerda são obtidas decodificando-se o fluxo de bits, e são adicionadas a respectivos preditores de vetor de movimento, para obter vetores de movimento do ponto de controle superior à esquerda, do ponto de controle superior à direita, e do ponto de controle inferior à esquerda do bloco atual.
[0349] Etapa 805a: Obter um vetor de movimento de cada sub-bloco do bloco atual com base em informações de movimento de ponto de controle e no modelo de movimento afim usado para o bloco de decodificação atual.
[0350] Um sub-bloco no bloco de decodificação atual afim pode ser equivalente a uma unidade de compensação de movimento, e a largura e a altura do sub-bloco são menores que a largura e a altura do bloco atual. Informações de movimento de uma amostra em uma localização pré-estabelecida em uma unidade de compensação de movimento podem ser usadas para representar informações de movimento de todas as amostras da unidade de compensação de movimento. Assumindo que o tamanho da unidade de compensação de movimento é M × N, a amostra na localização pré-estabelecida pode ser uma amostra de centro (M/2, N/2), a amostra superior à esquerda (0, 0), a amostra superior à direita (M–1, 0), ou uma amostra em uma outra localização na unidade de compensação de movimento. A amostra de centro da unidade de compensação de movimento é usada como um exemplo para descrição abaixo, como mostrado na Figura 8C. Na Figura 8C, V0 representa um vetor de movimento do ponto de controle superior à esquerda, e V1 representa um vetor de movimento do ponto de controle superior à direita. Cada pequena caixa representa uma unidade de compensação de movimento.
[0351] Coordenadas de uma amostra de centro de uma unidade de compensação de movimento relativa à amostra superior à esquerda do bloco de decodificação atual afim são calculadas de acordo com a Fórmula (31). Na Fórmula (31), i representa a iésima unidade de compensação de movimento na direção horizontal (da esquerda para a direita), j representa a jésima unidade de compensação de movimento na direção vertical (de cima para baixo), e (x(i,j) , y(i,j)) representa coordenadas da amostra de centro da (i, j)ésima unidade de compensação de movimento relativa à amostra de ponto de controle superior à esquerda do bloco de decodificação atual afim.
[0352] Se o modelo de movimento afim usado para o bloco de decodificação atual afim é o modelo de movimento afim de 6 parâmetros, (x (i,j), y(i,j)) é substituído na Fórmula (32) correspondente ao modelo de movimento afim de 6 parâmetros para obter um vetor de movimento (vx(i,j) , vy(i,j) ) de uma amostra de centro de cada unidade de compensação de movimento, e o vetor de movimento é usado como vetores de movimento de todas as amostras da unidade de compensação de movimento.
[0353] Se o modelo de movimento afim usado para o bloco de decodificação atual afim é o modelo de movimento afim de 4 parâmetros, (x (i,j), y(i,j)) é substituído na Fórmula (33) correspondente ao modelo de movimento afim de 4 parâmetros para obter um vetor de movimento (vx(i,j) , vy(i,j) ) de uma amostra de centro de cada unidade de compensação de movimento, e o vetor de movimento é usado como vetores de movimento de todas as amostras da unidade de compensação de movimento.
𝑀 𝑥(𝑖,𝑗) = 𝑀 × 𝑖 + , 𝑖 = 0,1. . 2 { 𝑁 (31) 𝑦(𝑖,𝑗) = 𝑁 × 𝑗 + 2 , 𝑗 = 0,1. .
𝑣𝑥1−𝑣𝑥0 𝑣𝑥2 −𝑣𝑦0 𝑣𝑥 = 𝑥+ 𝑦 + 𝑣𝑥0
𝑊 𝐻 { 𝑣𝑦1 −𝑣𝑦0 𝑣𝑦2 −𝑣𝑥0 (32) 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦0
𝑊 𝐻 𝑣𝑥1 −𝑣𝑥0 𝑣𝑦1 −𝑣𝑦0 𝑣𝑥 = 𝑥− 𝑦 + 𝑣𝑥0
𝑊 𝑊 { 𝑣𝑦1 −𝑣𝑦0 𝑣𝑥1 −𝑣𝑥0 (33) 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦0
𝑊 𝑊
[0354] Etapa 806a: Realizar compensação de movimento para cada sub-bloco com base no vetor de movimento determinado do sub-bloco, para obter um valor de amostra de predição do sub-bloco.
[0355] Etapa 802b: Construir uma lista candidata de informações de movimento correspondente a um modo de fusão de sub-bloco.
[0356] Especificamente, a lista candidata de informações de movimento correspondente ao modo de fusão de sub-bloco (lista candidata a fusão com base em sub-bloco) pode ser construída usando-se um ou mais dentre predição de vetor de movimento temporal avançada, um método de predição de vetor de movimento de ponto de controle herdado, um método de predição de vetor de movimento de ponto de controle construído, ou um método planar. Nessa modalidade desse pedido, a lista candidata de informações de movimento correspondente ao modo de fusão de sub-bloco pode ser referida abreviadamente como uma lista de candidatos a fusão com base em sub-bloco.
[0357] Opcionalmente, a lista candidata de informações de movimento é removida e classificada de acordo com uma regra em particular, e pode ser truncada ou preenchida até uma quantidade em particular.
[0358] D0: Se sps_sbtmvp_enabled_flag = 1, um vetor de movimento candidato é obtido usando-se a ATMVP, e adicionado à lista de candidatos a fusão com base em sub-bloco. Para detalhes, se referir às supracitadas descrições em "6. Predição de vetor de movimento temporal avançada".
[0359] D1: Se sps_affine_enabled_flag = 1, informações candidatas de movimento de ponto de controle do bloco atual são derivadas usando-se o método de predição de vetor de movimento de ponto de controle herdado, e são adicionadas à lista de candidatos a fusão com base em sub-bloco. Para detalhes, se referir às supracitadas descrições em "3. Método de predição de vetor de movimento de ponto de controle herdado".
[0360] Por exemplo, na Figura 6C, blocos em localizações vizinhas ao redor do bloco atual são atravessadas em uma ordem A1->B1->B0->A0->B2,
para encontrar um bloco codificado afim incluindo um bloco em uma localização vizinha do bloco atual, e para obter informações de movimento de ponto de controle do bloco codificado afim. Além disso, um modelo de movimento correspondente ao bloco codificado afim é usado para derivar informações candidatas de movimento de ponto de controle do bloco atual.
[0361] Se a lista de candidatos a fusão com base em sub-bloco está vazia, as informações candidatas de movimento de ponto de controle são adicionadas à lista de candidatos a fusão com base em sub-bloco. Caso contrário, informações de movimento na lista de candidatos a fusão com base em sub-bloco são atravessadas sequencialmente para verificar se informações de movimento que são iguais às informações candidatas de movimento de ponto de controle existem na lista de candidatos a fusão com base em sub-bloco. Se não existem informações de movimento que sejam iguais às informações candidatas de movimento de ponto de controle na lista de candidatos a fusão com base em sub-bloco, as informações candidatas de movimento de ponto de controle são adicionadas à lista de candidatos a fusão com base em sub-bloco.
[0362] Determinar se duas unidades de informações de movimento candidatas são iguais deve ser implantado a partir de uma determinação de se quadros de referência dianteiros e posteriores dos duas unidades de informações de movimento candidatas e componentes horizontal e vertical de cada vetor de movimento de avanço e vetor de movimento de retrocesso são iguais. Os duas unidades de informações de movimento candidatas são considerados como sendo diferentes somente quando todos esses elementos são diferentes.
[0363] Se uma quantidade de unidades de informações de movimento na lista de candidatos a fusão com base em sub-bloco atinge um máximo comprimento de lista MaxNumSub-blockMergeCand (MaxNumSub- blockMergeCand é um número inteiro positivo tal como 1, 2, 3, 4, ou 5, onde 5 é usado como um exemplo nas descrições a seguir, e detalhes não são descritos no presente documento), a construção da lista de candidatos é completada. De outra maneira, um bloco em uma próxima localização vizinha é atravessado.
[0364] D2: se sps_affine_enabled_flag = 1, informações candidatas de movimento de ponto de controle do bloco atual são derivadas usando-se o método de predição de vetor de movimento de ponto de controle construído, e são adicionadas à lista de candidatos a fusão com base em sub-bloco, como mostrado na Figura 8B.
[0365] Etapa 801c: Obter informações de movimento de pontos de controle do bloco atual. Por exemplo, para detalhes, se referir à etapa 601 nas supracitadas descrições em "5. Método de predição de vetor de movimento de ponto de controle construído 2". Os detalhes não são descritos no presente documento novamente.
[0366] Etapa 802c: Combinar as informações de movimento dos pontos de controle para obter informações de movimento de ponto de controle construídas. Para detalhes, se referir à etapa 602 na Figura 6D. Os detalhes não são descritos no presente documento novamente.
[0367] Etapa 803c: Adicionar as informações de movimento de ponto de controle construídas à lista de candidatos a fusão com base em sub-bloco.
[0368] Se o comprimento da lista de candidatos a fusão com base em sub-bloco é menor que um comprimento de lista máximo MaxNumSub- blockMergeCand, as combinações das informações de movimento dos pontos de controle são atravessadas em uma ordem pré-estabelecida, e uma combinação válida resultante é usada como as informações candidatas de movimento de ponto de controle. Nesse caso, se a lista de candidatos a fusão com base em sub-bloco estiver vazia, as informações candidatas de movimento de ponto de controle são adicionadas à lista de candidatos a fusão com base em sub-bloco. Caso contrário, informações de movimento na lista de vetores de movimento candidatos são atravessadas sequencialmente para verificar se informações de movimento que são iguais às informações candidatas de movimento de ponto de controle existem na lista de candidatos a fusão com base em sub-bloco. Se não existem informações de movimento que sejam iguais às informações candidatas de movimento de ponto de controle na lista de candidatos a fusão com base em sub-bloco, as informações candidatas de movimento de ponto de controle são adicionadas à lista de candidatos a fusão com base em sub-bloco.
[0369] Por exemplo, uma ordem pré-estabelecida é como a seguir: (CP1, CP2, CP3) Afim -> (CP1, CP2, CP4) Afim -> (CP1, CP3, CP4) Afim -> (CP2, CP3, CP4) Afim -> (CP1, CP2) Afim -> (CP1, CP3) Afim. Há seis combinações no total.
[0370] Por exemplo, se sps_affine_type_flag = 1, uma ordem pré- estabelecida é como a seguir: (CP1, CP2, CP3) Afim -> (CP1, CP2, CP4) Afim -> (CP1, CP3, CP4) Afim -> (CP2, CP3, CP4) Afim -> (CP1, CP2) Afim -> (CP1, CP3) Afim. Há seis combinações no total. Uma ordem para adicionar as seis combinações para a lista de vetores de movimento candidatos não é especificamente limitada nessa modalidade desse pedido.
[0371] Se sps_affine_type_flag = 0, uma ordem pré-estabelecida é como a seguir: (CP1, CP2) Afim -> (CP1, CP3) Afim. Há duas combinações no total. Uma ordem para adicionar as duas combinações à lista de vetores de movimento candidatos não é especificamente limitada nessa modalidade desse pedido.
[0372] Se informações de movimento de ponto de controle correspondente a uma combinação estão indisponíveis, a combinação é considerada indisponível. Se uma combinação está disponível, um índice de quadro de referência da combinação é determinado (quando há dois pontos de controle, um índice mínimo de quadro de referência é selecionado como o índice de quadro de referência da combinação; quando há mais de dois pontos de controle, um índice de quadro de referência com uma máxima frequência de presença é selecionado como o índice de quadro de referência da combinação; e se uma pluralidade de índices de quadro de referência têm uma mesma frequência de presença, um índice mínimo de quadro de referência é selecionado como o índice de quadro de referência da combinação). Vetores de movimento de ponto de controle são adicionalmente escalonados. Se as informações de movimento de todos os pontos de controle depois do escalonamento são iguais, a combinação é inválida.
[0373] D3: Opcionalmente, se sps_planar_enabled_flag = 1, informações de movimento construídas usando-se a ATMVP são adicionadas à lista de candidatos a fusão com base em sub-bloco. Para detalhes, se referir às supracitadas descrições em "7. Predição de vetor de movimento planar".
[0374] Opcionalmente, nessa modalidade desse pedido, a lista de vetores de movimento candidatos pode ser preenchida. Por exemplo, depois do supracitado processo de atravessamento, se o comprimento da lista de vetores de movimento candidatos é menor que o comprimento máximo de lista MaxNumSub-blockMergeCand, a lista de vetores de movimento candidatos pode ser preenchida até que o comprimento de lista seja igual a MaxNumSub- blockMergeCand.
[0375] O preenchimento pode ser realizado usando-se um método de preenchimento de vetor de movimento zero, ou usando-se um método para combinar ou obter uma média ponderada informações de movimento candidatas existentes na lista existente. Deve ser notado que outros métodos para preencher a lista de vetores de movimento candidatos podem também ser usados nesse pedido. Detalhes não são descritos no presente documento.
[0376] Etapa 803b: Analisar o fluxo de bits e determinar informações de movimento de ponto de controle ideal.
[0377] Um número índice merge_subblock_idx é analisado, e as informações de movimento ideais são determinadas a partir da lista de candidatos a fusão com base em sub-bloco com base no número índice.
[0378] merge_subblock_idx é normalmente binarizado usando-se um código TR (truncated unary, unário truncado, código unário truncado). Em outras palavras, merge_subblock_idx é mapeado para diferentes séries binárias com base em um valor índice máximo. O valor índice máximo é pré-configurado ou transmitido. Por exemplo, se o valor índice máximo é 4, merge_subblock_idx é binarizado de acordo com a Tabela 3. Tabela 3 Índice Série binária 0 0 1 1 0 2 1 1 0 3 1 1 1 0 4 1 1 1 1
[0379] Quando o valor índice máximo for 2, merge_subblock_idx é binarizado de acordo com a Tabela 4. Tabela 4 Índice Série binária 0 0 1 1 0 2 1 1 0
Índice Série binária 3 1 1 1 0 4 1 1 1 1
[0380] Se merge_subblock_idx é transmitido usando-se uma série binária, um lado de decodificador pode determinar o número índice com base no valor índice máximo e Tabela 2 ou Tabela 3. Por exemplo, o valor índice máximo é 4. Quando decodificação é realizada para obter o número índice, se 0 é obtido ou o número índice obtido através de decodificação é igual ao valor índice máximo, o número índice é determinado. Por exemplo, quando decodificação é realizada para obter o número índice, se o primeiro bit é 0, a decodificação que é realizada para obter o número índice termina, e o número índice é determinado em 0. Como um outro exemplo, se o primeiro bit é 1 e o segundo bit é 0, a decodificação que é realizada para obter o número índice termina, e o número índice é determinado em 1.
[0381] A configuração do valor índice máximo e uma tabela de binarização não é especificamente limitada nessa modalidade desse pedido.
[0382] Etapa 804b: Se as informações de movimento ideais são ATMVP ou informações de movimento planar, obter um vetor de movimento de cada sub-bloco usando-se diretamente a ATMVP ou método planar.
[0383] Se um modo de movimento indicado pelas informações de movimento ideais é um modo afim, o vetor de movimento de cada sub-bloco do bloco atual é obtido com base nas informações de movimento de ponto de controle ideal e um modelo de movimento afim usado para um bloco de decodificação atual. Esse processo é o mesmo da etapa 805a.
[0384] Etapa 805b: Realizar compensação de movimento para cada sub-bloco com base no vetor de movimento determinado do sub-bloco, para obter um valor de amostra de predição do sub-bloco.
[0385] Na tecnologia existente, não há maneira viável de determinar um comprimento máximo (MaxNumSub-blockMergeCand) da lista de vetores de movimento candidatos correspondentes ao modo de fusão de sub-bloco.
[0386] Em vista disso, as modalidades desse pedido fornecer um método e aparelho de predição de imagem de vídeo, para fornecer uma maneira de determinar um comprimento máximo (MaxNumSub-blockMergeCand) de uma lista de vetores de movimento candidatos correspondentes a um modo de fusão de sub-bloco. O método e o aparelho são com base em um mesmo conceito inventivo. Por ser um princípio de resolução do problema do método similar para àquele do aparelho, referência mútua pode ser feita entre implantações do aparelho e do método. Não são fornecidas descrições repetidas.
[0387] A maneira de determinar o comprimento máximo da lista de vetores de movimento candidatos correspondentes ao modo de fusão de sub- bloco é descrita abaixo em detalhe em dois casos.
[0388] Em um primeiro caso, o modo de fusão de sub-bloco pode compreender pelo menos um dentre um modo afim, um modo de predição de vetor de movimento temporal avançada, ou um modo de predição de vetor de movimento planar.
[0389] Em um segundo caso, não é considerado que um modo de predição de vetor de movimento planar esteja presente no modo de fusão de sub-bloco. Em outras palavras, o modo de fusão de sub-bloco pode compreender pelo menos um dentre um modo afim ou um modo de predição de vetor de movimento temporal avançada.
[0390] A seguir se descreve implantações desse pedido em detalhe a partir de uma perspectiva de um lado de decodificador com referência aos desenhos anexos. Especificamente, a maneira pode ser realizada por um decodificador de vídeo 30, ou pode ser implantada por uma compensação de módulo de movimento em um decodificador de vídeo, ou pode ser realizada por um processador.
[0391] Para o primeiro caso, diversas implantações possíveis, de uma primeira implantação a uma quinta implantação, são fornecidas como exemplos.
[0392] A Figura 9 mostra descrições da primeira implantação.
[0393] Etapa 901: Analisar um primeiro indicador a partir de um fluxo de bits. Realizar S902 ou S904.
[0394] O primeiro indicador é usado para indicar se um modo candidato usado para predizer de modo inter um bloco a ser processado compreende o modo afim. Em outras palavras, o indicador 1 é usado para indicar se o modo afim pode (ou tem permissão de) ser usado para realizar compensação de movimento em um bloco a ser processado.
[0395] Por exemplo, o primeiro indicador pode ser configurado em um
SPS no fluxo de bits. Com base nisso, análise do primeiro indicador a partir do fluxo de bits pode ser implantada da seguinte maneira: analisar o indicador 1 a partir do SPS no fluxo de bits. Alternativamente, o primeiro indicador pode ser configurado em um cabeçalho de fatia de uma fatia no fluxo de bits, o bloco a ser processado está compreendido na fatia. Com base nisso, a análise do primeiro indicador a partir do fluxo de bits pode ser implantada na seguinte maneira: analisar o primeiro indicador a partir do cabeçalho de fatia da fatia no fluxo de bits, o bloco a ser processado está compreendido na fatia.
[0396] Por exemplo, o primeiro indicador pode ser representado por um elemento de sintaxe sps_affine_enabled_flag, e sps_affine_enabled_flag é usado para especificar se um modo afim pode ser usado para predizer de modo inter um bloco de imagem compreendido em uma imagem de vídeo. Por exemplo, quando sps_affine_enabled_flag = 0, isso indica que o modo afim não poder ser usado para predizer de modo inter o bloco de imagem compreendido na imagem de vídeo. Quando sps_affine_enabled_flag = 1, isso indica que um modelo de movimento afim pode ser usado para predizer de modo inter o bloco de imagem compreendido na imagem de vídeo.
[0397] S902: Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende o modo afim, analisar um segundo indicador a partir do fluxo de bits, onde o segundo indicador é usado para indicar (ou determinar) um comprimento máximo de uma primeira lista de vetores de movimento candidatos, e a primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para o bloco a ser processado usando-se um modo de predição de fusão de sub-bloco. A primeira lista de vetores de movimento candidatos pode ser referida como MaxNumSub-blockMergeCand.
[0398] Por exemplo, o segundo indicador pode ser configurado no SPS, em um PPS, ou no cabeçalho de fatia. Com base nisso, a análise do segundo indicador a partir do fluxo de bits pode ser implantada na seguinte maneira: analisar o segundo indicador a partir do conjunto de parâmetros de sequência no fluxo de bits; ou analisar o segundo indicador a partir do cabeçalho de fatia da fatia, incluindo o bloco a ser processado, no fluxo de bits.
[0399] Por exemplo, o segundo indicador pode ser representado por K_minus_max_num_subblock_merge_cand.
[0400] Por exemplo, se permite que um valor de K_minus_max_num_subblock_merge_cand esteja em uma faixa de 0 a 4.
[0401] Por exemplo, se permite que um valor máximo de MaxNumSub-blockMergeCand que seja 5.
[0402] Quando se permite que o valor máximo de MaxNumSub- blockMergeCand seja 5, o segundo indicador pode ser representado por five_minus_max_num_subblock_merge_cand.
[0403] A Tabela 5 mostra um exemplo de uma estrutura de sintaxe para analisar o segundo indicador. Tabela 5 slice_header ( ) { Descritor ...
if(sps_affine_enable_flag) five_minus_max_num_subblock_merge_cand ue(v) ...
}
[0404] S903: Determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador.
[0405] Em um exemplo, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende o modo afim, o comprimento máximo (MaxNumSub- blockMergeCand) da primeira lista de vetores de movimento candidatos pode ser obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K K_minus_max_num_subblock_merge_cand, onde MaxNumSub-blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, e K é um número inteiro não negativo pré-estabelecido.
[0406] S904: Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, e o terceiro indicador é usado para indicar que o modo ATMVP está presente no modo de predição de fusão de sub-bloco, determinar um terceiro número com base no terceiro indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no terceiro número.
[0407] O modo candidato usado para predizer de modo inter o bloco a ser processado compreender somente o modo de predição de vetor de movimento translacional significa que o modo candidato usado para predizer de modo inter o bloco a ser processado não pode (não tem permissão para) compreender o modo afim. O terceiro indicador é usado para indicar se o modo ATMVP está presente no modo de predição de fusão de sub-bloco. Em outras palavras, o terceiro indicador é usado para indicar se é permitido que o modo ATMVP é seja usado para predizer de modo inter o bloco a ser processado. O terceiro indicador pode ser configurado no SPS, no PPS, ou no cabeçalho de fatia.
[0408] Em um exemplo, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, e o terceiro indicador é usado para indicar que o modo ATMVP está presente no modo de predição de fusão de sub-bloco, o comprimento máximo (MaxNumSub- blockMergeCand) da primeira lista de vetores de movimento candidatos é igual ao terceiro número.
[0409] Por exemplo, o terceiro indicador pode ser representado por sps_sbtmvp_enabled_flag. Por exemplo, quando sps_sbtmvp_enabled_flag é igual a um primeiro valor, isso indica que o modo ATMVP não está presente no modo de predição de fusão de sub-bloco; ou quando sps_sbtmvp_enabled_flag é igual a um segundo valor, isso indica que o modo ATMVP está presente no modo de predição de fusão de sub-bloco. Por exemplo, o primeiro valor é igual a 0, e o segundo valor é igual a 1.
[0410] Por exemplo, o terceiro número pode ser usado para indicar o número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo ATMVP. Por exemplo, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, se sps_sbtmvp_enabled_flag = 0, o terceiro número é igual a 0, ou se sps_sbtmvp_enabled_flag = 1, o terceiro número é igual ao número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo ATMVP. Além disso, quando o número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo ATMVP é 1, o terceiro número pode ser igual a um valor de sps_sbtmvp_enabled_flag. Por exemplo, se sps_sbtmvp_enabled_flag = 0, o terceiro número é igual a 0; ou se sps_sbtmvp_enabled_flag = 1, o terceiro número é igual a 1.
[0411] O fato de ser permitido que o valor máximo de MaxNumSub- blockMergeCand seja 5 é usado como um exemplo. Se sps_affine_enable_flag = 0, MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag.
[0412] Se sps_affine_enable_flag = 1, MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = 5 − five_minus_max_num_subblock_merge_cand.
[0413] Por exemplo, five_minus_max_num_subblock_merge_cand pode ser definido as subtraindo um comprimento máximo de lista de predição de vetor de movimento de fusão com base em sub-bloco em uma fatia a partir de 5 (five_minus_max_num_subblock_merge_cand especifica o número máximo de candidatos a predição de vetor de movimento (MVP) de fusão com base em sub- bloco suportados na fatia subtraída a partir de 5).
[0414] O número máximo de candidatos a MVP de fusão com base em sub-bloco, MaxNumSub-blockMergeCand, é derivado como a seguir: – Se sps_affine_enabled_flag é igual a 0: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag; – Caso contrário (sps_affine_enabled_flag é igual a 1): MaxNumSub-blockMergeCand = 5 − five_minus_max_num_subblock_merge_cand.
[0415] Um valor de MaxNumSub-blockMergeCand estará em uma faixa de 0 a 5, inclusive.
[0416] A Figura 10 mostra descrições da segunda implantação.
[0417] S1001: Para detalhes de S1001, se referir a S901. Os detalhes não são descritos no presente documento novamente. Realizar S1002 ou S1004.
[0418] S1002: Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende o modo afim, analisar um segundo indicador e um terceiro indicador a partir do fluxo de bits, onde o segundo indicador é usado para indicar (ou determinar) um comprimento máximo de uma primeira lista de vetores de movimento candidatos, e a primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para o bloco a ser processado usando-se um modo de predição de fusão de sub-bloco.
[0419] S1003: Quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, determinar um primeiro número com base no terceiro indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador e no primeiro número.
[0420] Para explicações do primeiro indicador, do segundo indicador, e do terceiro indicador, se referir à modalidade correspondente à Figura 9. Detalhes não são descritos no presente documento novamente.
[0421] Quando o terceiro indicador indicar que o modo ATMVP não está presente no modo de predição de fusão de sub-bloco, o primeiro número pode ser igual ao número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo ATMVP. Por exemplo, o terceiro indicador pode ser representado por sps_sbtmvp_enabled_flag. Quando sps_sbtmvp_enabled_flag = 0, isso indica que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco. Nesse caso, o primeiro número é igual ao número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo ATMVP. Ao contrário, quando sps_sbtmvp_enabled_flag = 1, isso indica que o modo de predição de vetor de movimento temporal avançada está presente no modo de predição de fusão de sub-bloco. Nesse caso, o primeiro número é igual a 0. Por exemplo, o número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo ATMVP pode ser
1. Nesse caso, o primeiro número pode ser igual a um valor do terceiro indicador. Para detalhes, se referir às descrições na modalidade correspondente a Figura
9. Os detalhes não são descritos no presente documento novamente.
[0422] Em um possível exemplo, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende o modo afim, o comprimento máximo da primeira lista de vetores de movimento candidatos pode ser obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand – L1, onde MaxNumSub-blockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, L1 representa o primeiro número, e K é um número inteiro não negativo pré- estabelecido.
[0423] Por exemplo, pode ser permitido que um valor de K_minus_max_num_subblock_merge_cand esteja em uma faixa de 0 a 3.
[0424] Por exemplo, é permitido que um valor máximo de MaxNumSub-blockMergeCand seja 5.
[0425] Quando é permitido que o valor máximo de MaxNumSub- blockMergeCand seja 5, o segundo indicador pode ser representado por five_minus_max_num_subblock_merge_cand.
[0426] Em um exemplo, L1 pode ser obtido de acordo com a seguinte fórmula: L1 = sps_sbtmvp_enabled_flag == 1 ? 0 : 1. Se sps_sbtmvp_enabled_flag = 1, L1 = 0. Se sps_sbtmvp_enabled_flag = 0, L1 = 1.
[0427] S1004: Para detalhes de S1004, se referir a S904. Os detalhes não são descritos no presente documento novamente.
[0428] Se permitir que o valor máximo de MaxNumSub- blockMergeCand seja 5 é usado como um exemplo. Se sps_affine_enable_flag = 0, MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag.
[0429] Se sps_affine_enable_flag = 1, MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = 5 − five_minus_max_num_subblock_merge_cand – (sps_sbtmvp_enabled_flag == 1 ? 0 : 1).
[0430] Por exemplo, five_minus_max_num_subblock_merge_cand pode ser definido como subtrair um comprimento máximo de uma lista de predição de vetor de movimento de fusão com base em sub-bloco em uma fatia a partir de 5 (five_minus_max_num_subblock_merge_cand especifica o número máximo de candidatos a predição de vetor de movimento (MVP) de fusão com base em sub-bloco suportados na fatia subtraída de 5). O número máximo de candidatos a MVP de fusão com base em sub-bloco, MaxNumSub- blockMergeCand, é derivado como a seguir: – Se sps_affine_enabled_flag é igual a 0: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag; – De outra maneira (sps_affine_enabled_flag é igual a 1): MaxNumSub-blockMergeCand = 5 − five_minus_max_num_subblock_merge_cand – (sps_sbtmvp_enabled_flag == 1 ? 0 : 1).
[0431] Um valor de MaxNumSub-blockMergeCand estará em uma faixa de 0 a 5, inclusive.
[0432] A Figura 11 mostra descrições da terceira implantação.
[0433] S1101 a S1103: Para detalhes de S1101 a S1103, se referir de S901 a S903. Os detalhes não são descritos no presente documento novamente.
[0434] Deve ser notado que, na terceira implantação, pode ser permitido que um valor máximo de MaxNumSub-blockMergeCand seja 5. Por exemplo, o segundo indicador pode ser representado por K_minus_max_num_subblock_merge_cand, onde é permitido que um valor de K_minus_max_num_subblock_merge_cand esteja em uma faixa de 0 a 4. Quando se permite que o valor máximo de MaxNumSub-blockMergeCand seja 5, o segundo indicador pode ser representado por five_minus_max_num_subblock_merge_cand.
[0435] S1104: Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, analisar um terceiro indicador e um quarto indicador a partir do fluxo de bits. Realizar S1105, S1106 ou S1107.
[0436] O terceiro indicador é usado para indicar um estado de presença do modo ATMVP no modo de predição de fusão de sub-bloco. Para descrições relacionadas do terceiro indicador, se referir às descrições na modalidade correspondente à Figura 9. Detalhes não são descritos no presente documento novamente.
[0437] O quarto indicador é usado para indicar um estado de presença do modo de predição de vetor de movimento de translação (PLANAR) no modo de predição de fusão de sub-bloco. Em outras palavras, o quarto indicador é usado para indicar se é permitido que o modo planar seja usado para predizer de modo inter o bloco a ser processado.
[0438] S1105: Quando o terceiro indicador indicar que o modo ATMVP está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo planar não está presente no modo de predição de fusão de sub-bloco, determinar um terceiro número com base no terceiro indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base somente no terceiro número.
[0439] Por exemplo, quando o quarto indicador for um terceiro valor, isso indica que o modo planar não está presente no modo de predição de fusão de sub-bloco; ou quando o quarto indicador for um quarto valor, isso indica que o modo planar está presente no modo de predição de fusão de sub-bloco. Por exemplo, o terceiro valor é igual a 0, e o quarto valor é igual a 1. Por exemplo, o quarto indicador pode ser configurado em um SPS, um PPS, ou um cabeçalho de fatia. O quarto indicador pode ser representado por sps_planar_enabled_flag.
[0440] S1106: Quando o terceiro indicador indicar que o modo ATMVP não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo planar está presente no modo de predição de fusão de sub-bloco, determinar um quarto número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no quarto número.
[0441] Por exemplo, quando o quarto indicador indicar que o modo planar está presente no modo de predição de fusão de sub-bloco, o quarto número é igual ao número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo planar.
[0442] Por exemplo, em S1106, o comprimento máximo da primeira lista de vetores de movimento candidatos é igual ao quarto número. Por exemplo, se o número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo planar é 1, o comprimento máximo da primeira lista de vetores de movimento candidatos é 1. Como um outro exemplo, quando o quarto indicador for 1, isso indica que o modo planar está presente no modo de predição de fusão de sub-bloco. Nesse caso, o comprimento máximo da primeira lista de vetores de movimento candidatos é igual ao quarto indicador.
[0443] S1107: Quando o terceiro indicador indicar que o modo ATMVP está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo planar está presente no modo de predição de fusão de sub- bloco, determinar um terceiro número com base no terceiro indicador, determinar um quarto número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no terceiro número e no quarto número.
[0444] Em um exemplo, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, o número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo planar é 1, e o número de vetores de movimento máximo que são suportados em predição realizada usando-se no modo ATMVP é 1, se o terceiro indicador é 1, isso indica que o modo ATMVP está presente no modo de predição de fusão de sub-bloco; ou se o terceiro indicador é 0, isso indica que o modo ATMVP não está presente no modo de predição de fusão de sub-bloco; e se o quarto indicador é 1, isso indica que o modo planar está presente no modo de predição de fusão de sub-bloco; ou se o quarto indicador é 0, isso indica que o modo planar está presente no modo de predição de fusão de sub-bloco. Nesse caso, o comprimento máximo da primeira lista de vetores de movimento candidatos pode ser igual a uma soma do terceiro indicador com o quarto indicador.
[0445] O terceiro indicador é representado por sps_sbtmvp_enabled_flag, e o quarto indicador é representado por sps_planar_enabled_flag. O comprimento máximo da primeira lista de vetores de movimento candidatos pode ser obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag + sps_planar_enabled_flag.
[0446] Quando sps_sbtmvp_enabled_flag = 1 (indicando que o modo ATMVP está presente no modo de predição de fusão de sub-bloco), e sps_planar_enabled_flag = 0 (indicando que o modo planar não está presente no modo de predição de fusão de sub-bloco), MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag = 1, que corresponde a S1105. Quando sps_sbtmvp_enabled_flag = 0 (indicando que o modo ATMVP não está presente no modo de predição de fusão de sub-bloco), e sps_planar_enabled_flag = 1 (indicando que o modo planar está presente no modo de predição de fusão de sub-bloco), MaxNumSub-blockMergeCand = sps_planar_enabled_flag = 1, que corresponde a S1106. Quando sps_sbtmvp_enabled_flag = 1, e sps_planar_enabled_flag = 1, MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag + sps_planar_enabled_flag = 2, que corresponde a S1107.
[0447] Certamente, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende somente o modo de predição de vetor de movimento translacional, o terceiro indicador indica que o modo ATMVP não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo planar não está presente no modo de predição de fusão de sub-bloco, MaxNumSub- blockMergeCand = 0.
[0448] Permitir que o valor máximo de MaxNumSub-blockMergeCand seja 5 é usado como um exemplo.
[0449] Se sps_affine_enable_flag = 0, MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag + sps_planar_enabled_flag.
[0450] Se sps_affine_enable_flag = 1, MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = 5 − five_minus_max_num_subblock_merge_cand.
[0451] Por exemplo, five_minus_max_num_subblock_merge_cand pode ser definido como subtrair um comprimento máximo de lista de predição de vetor de movimento de fusão com base em sub-bloco em uma fatia a partir de 5 (five_minus_max_num_subblock_merge_cand especifica o número máximo de candidatos a predição de vetor de movimento de fusão com base em sub-bloco (MVP) suportados na fatia subtraída de 5).
[0452] O número máximo de candidatos a MVP de fusão com base em sub-bloco, MaxNumSub-blockMergeCand, é derivado como a seguir: – Se sps_affine_enabled_flag é igual a 0: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag + sps_planar_enabled_flag; – De outra maneira (sps_affine_enabled_flag é igual a 1): MaxNumSub-blockMergeCand = 5 − five_minus_max_num_subblock_merge_cand.
[0453] Um valor de MaxNumSub-blockMergeCand estará em uma faixa de 0 a 5, inclusive.
[0454] A Figura 12A e a Figura 12B mostra descrições da quarta implantação.
[0455] S1201: Para detalhes de S1201, se referir a S901. Os detalhes não são descritos no presente documento novamente. Realizar S1202 ou S1206.
[0456] S1202: Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende o modo afim, analisar um segundo indicador, um terceiro indicador, e um quarto indicador a partir do fluxo de bits, onde o segundo indicador é usado para indicar (ou determinar) um comprimento máximo de uma primeira lista de vetores de movimento candidatos, e a primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para o bloco a ser processado usando-se um modo de predição de fusão de sub-bloco. Realizar S1203, S1204 ou S1205.
[0457] S1203: Quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub-bloco, determinar um segundo número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador e no segundo número.
[0458] S1204: Quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar está presente no modo de predição de fusão de sub-bloco, determinar um primeiro número com base no terceiro indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador e no primeiro número.
[0459] S1205: Quando o terceiro indicador indicar que o modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco, e o quarto indicador indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub-bloco, determinar o primeiro número com base no terceiro indicador, determinar um segundo número com base no quarto indicador, e determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador, no primeiro número, e no segundo número.
[0460] Quando o quarto indicador indicar que o modo planar não está presente no modo de predição de fusão de sub-bloco, o segundo número pode ser igual ao número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo planar. Por exemplo, o quarto indicador pode ser representado por sps_planar_enabled_flag. Quando sps_planar_enabled_flag = 0, isso indica que o modo de predição de vetor de movimento planar não está presente no modo de predição de fusão de sub- bloco. Nesse caso, o segundo número é igual ao número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo ATMVP. Ao contrário, quando sps_planar_enabled_flag = 1, isso indica que o modo de predição de vetor de movimento planar está presente no modo de predição de fusão de sub-bloco. Nesse caso, o segundo número é igual a 0. Por exemplo, o número de vetores de movimento máximo que são suportados em predição realizada usando-se o modo planar pode ser 1. Nesse caso, o segundo número pode ser igual a um valor de sps_planar_enabled_flag.
[0461] Em um possível exemplo, Quando o primeiro indicador indicar que o modo candidato usado para predizer de modo inter o bloco a ser processado compreende o modo afim, o comprimento máximo da primeira lista de vetores de movimento candidatos pode ser obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand – L1-L2,
[0462] Por exemplo, na quarta implantação, pode ser permitido que um valor de K_minus_max_num_subblock_merge_cand esteja em uma faixa de 0 para 2 ou 0 para 3.
[0463] Por exemplo, pode ser permitido que um valor máximo de MaxNumSub-blockMergeCand seja 5 ou 6.
[0464] Quando é permitido que o valor máximo de MaxNumSub- blockMergeCand seja 5, o segundo indicador pode ser representado por five_minus_max_num_subblock_merge_cand. Quando é permitido que o valor máximo de MaxNumSub-blockMergeCand seja 6, o segundo indicador pode ser representado por six_minus_max_num_subblock_merge_cand.
[0465] Em um exemplo, L1 pode ser obtido de acordo com a seguinte fórmula: L1 = sps_sbtmvp_enabled_flag == 1 ? 0 : 1. Se sps_sbtmvp_enabled_flag = 1, L1 = 0. Se sps_sbtmvp_enabled_flag = 0, L1 = 1.
[0466] Em um exemplo, L2 pode ser obtido de acordo com a seguinte fórmula: L2 = sps_planar_enabled_flag == 1 ? 0 : 1. Se sps_planar_enabled_flag = 1, L2 = 0. Se sps_sbtmvp_enabled_flag = 0, L2 = 1.
[0467] S1206 a S1209: para detalhes de S1206 a S1209, se referir de S1104 a S1107. Os detalhes não são descritos no presente documento novamente.
[0468] Por exemplo, o valor máximo de MaxNumSub- blockMergeCand pode ser permitido ser 5. Um valor de five_minus_max_num_subblock_merge_cand está em uma faixa de 0 a 2.
[0469] Se sps_affine_enable_flag = 0, MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag + sps_planar_enabled_flag.
[0470] De outra maneira, (se sps_affine_enable_flag = 1), MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = 5 − five_minus_max_num_subblock_merge_cand – (sps_sbtmvp_enabled_flag == 1 ? 0 : 1) − (sps_planar_enabled_flag == 1 ? 0 : 1), onde (five_minus_max_num_subblock_merge_cand especifica o número máximo de candidatos a predição de vetor de movimento de fusão com base em sub-bloco (MVP) suportados na fatia subtraída de 5), o número máximo de candidatos a MVP de fusão com base em sub-bloco, MaxNumSub- blockMergeCand, é derivado como a seguir: – Se sps_affine_enabled_flag é igual a 0: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag + sps_planar_enabled_flag; – De outra maneira (sps_affine_enabled_flag é igual a 1): MaxNumSub-blockMergeCand = 5 − five_minus_max_num_subblock_merge_cand – (sps_sbtmvp_enabled_flag == 1 ? 0 : 1) − (sps_planar_enabled_flag == 1 ? 0 : 1).
[0471] Um valor de MaxNumSub-blockMergeCand estará em uma faixa de 0 a 5, inclusive.
[0472] Por exemplo, pode ser permitido que o valor máximo de MaxNumSub-blockMergeCand seja 6. Um valor de five_minus_max_num_subblock_merge_cand está em uma faixa de 0 a 3.
[0473] Se sps_affine_enable_flag = 0, MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag + sps_planar_enabled_flag;
[0474] De outra maneira, (se sps_affine_enable_flag = 1), MaxNumSub-blockMergeCand é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = 6 − six_minus_max_num_subblock_merge_cand – (sps_sbtmvp_enabled_flag == 1 ? 0 : 1) − (sps_planar_enabled_flag == 1 ? 0 : 1). onde (six_minus_max_num_subblock_merge_cand especifica o número máximo de candidatos a predição de vetor de movimento de fusão com base em sub-bloco (MVP) suportados na fatia subtraída de 6), o número máximo de candidatos a MVP de fusão com base em sub-bloco, MaxNumSub- blockMergeCand, é derivado como a seguir: – Se sps_affine_enabled_flag é igual a 0: MaxNumSub-blockMergeCand = sps_sbtmvp_enabled_flag + sps_planar_enabled_flag; – Caso contrário (sps_affine_enabled_flag é igual a 1): MaxNumSub-blockMergeCand = 6 − six_minus_max_num_subblock_merge_cand – (sps_sbtmvp_enabled_flag == 1 ? 0 : 1) − (sps_planar_enabled_flag == 1 ? 0 : 1).
[0475] Um valor de MaxNumSub-blockMergeCand estará em uma faixa de 0 a 6, inclusive.
[0476] Para o segundo caso, não é considerado que o modo de predição de vetor de movimento planar esteja presente no modo de fusão de sub-bloco. Em outras palavras, quando o modo de fusão de sub-bloco pode compreender pelo menos um dentre o modo afim e o modo de predição de vetor de movimento temporal avançada, a primeira implantação ou a segunda implantação pode ser usada. Detalhes não são descritos no presente documento novamente.
[0477] Com base em um mesmo conceito inventivo como as modalidades de método, uma modalidade desse pedido fornece adicionalmente um aparelho. Como mostrado na Figura 13, o aparelho 1300 pode ser especificamente um processador em um decodificador de vídeo, um chip, um sistema de chip, ou um módulo em um decodificador de vídeo, por exemplo, a unidade de decodificação por entropia 304 e/ou a unidade de predição inter 344.
[0478] Por exemplo, o aparelho pode compreender uma unidade de análise 1301 e uma unidade de determinação 1302. A unidade de análise 1301 e a unidade de determinação 1302 realizam as etapas de método descritas nas modalidades correspondentes da Figura 9 à Figura 12A e à Figura 12B. Por exemplo, a unidade de análise 1301 pode ser configurada para analisar indicadores (por exemplo, um primeiro indicador, um segundo indicador, um terceiro indicador, ou um quarto indicador) compreendidos em um fluxo de bits, e a unidade de determinação 1302 é configurada para determinar um comprimento máximo de uma primeira lista de vetores de movimento candidatos.
[0479] Uma modalidade desse pedido fornece adicionalmente uma outra estrutura de um aparelho usado em um decodificador. Como mostrado na Figura 14, o aparelho 1400 pode compreender uma interface de comunicações 1410 e um processador 1420. Opcionalmente, o aparelho 1400 pode adicionalmente compreender uma memória 1430. A memória 1430 pode ser disposta dentro ou fora do aparelho. Tanto a unidade de análise 1301 quanto a unidade de determinação 1302 mostradas na Figura 13 podem ser implantadas pelo processador 1420. O processador 1420 envia ou recebe um fluxo de vídeo ou um fluxo de bits através da interface de comunicações 1410, e é configurado para implantar os métodos na Figura 9 à Figura 12A e à Figura 12B. Em um processo de implantação, etapas em um procedimento de processamento podem ser realizadas usando-se um circuito lógico integrado de hardware no processador 1420 ou uma instrução em uma forma de software, para completar os métodos na Figura 9 à Figura 12A e à Figura 12B.
[0480] A interface de comunicações 1410 nessa modalidade desse pedido pode ser um circuito, um barramento, um transceptor, ou qualquer outro aparelho que possa ser configurado para trocar informações. Por exemplo, o outro aparelho pode ser um dispositivo conectado ao aparelho 1400. Por exemplo, se o aparelho é um codificador de vídeo, o outro aparelho pode ser um decodificador de vídeo.
[0481] Nessa modalidade desse pedido, o processador 1420 pode ser um processador de propósito geral, um processador de sinal digital, um circuito integrado de aplicação específica, um arranjo de porta programável em campo ou um outro dispositivo lógico programável, uma porta discreta ou dispositivo lógico de transistor, ou um componente de hardware discreto, e pode implantar ou executar os métodos, etapas, e diagramas de blocos lógicos revelados nas modalidades desse pedido. O processador de propósito geral pode ser um microprocessador, qualquer processador convencional, ou semelhantes. As etapas dos métodos revelados com referência às modalidades desse pedido podem ser diretamente realizadas por um processador de hardware, ou podem ser realizadas usando-se uma combinação de hardware no processador e uma unidade de software. Código de programa executado pelo processador 1420 para implantar os métodos supracitados pode ser armazenado na memória
1430. A memória 1430 é acoplada ao processador 1420.
[0482] O acoplamento nessa modalidade desse pedido pode ser um acoplamento indireto ou uma conexão de comunicação entre aparelhos, unidades, ou módulos em uma forma elétrica, uma forma mecânica, ou uma outra forma, e é usado para trocar informações entre os aparelhos, as unidades, ou os módulos.
[0483] O processador 1420 pode operar em colaboração com a memória 1430. A memória 1430 pode ser uma memória não volátil, por exemplo, uma unidade de disco rígido (hard disk drive, HDD) ou uma unidade de estado sólido (solid-state drive, SSD), ou pode ser uma memória volátil, por exemplo, a memória de acesso aleatório (random-access memory, RAM). A memória 1430 é qualquer outro meio que pode ser configurado para portar ou armazenar código de programa esperado em uma forma de uma instrução ou uma estrutura de dados e que pode ser acessado por um computador, porém, sem limitação ao mesmo.
[0484] Nessa modalidade desse pedido, um meio de conexão específico entre a interface de comunicações 1410, o processador 1420, e a memória 1430 não é limitado. Nessa modalidade desse pedido, a memória 1430, o processador 1420, e a interface de comunicações 1410 são conectados através de um barramento na Figura 14. O barramento é representado por uma linha cheia na Figura 14. Um modo de conexão entre outros componentes é descrito meramente de modo esquemático, e não é limitado a esse. O barramento pode ser classificado em um barramento de endereço, um barramento de dados, um barramento de controle, e semelhantes. Para facilidade de representação, somente uma linha cheia é usada para representar o barramento na Figura 14, mas isso não significa que há somente um barramento ou somente um tipo de barramento.
[0485] As supracitadas implantações e modalidades específicas viáveis relacionadas da Figura 9 à Figura 12A e Figura 12B fornecem descrições de um ou mais aparelhos de decodificação de dados de vídeo nesse pedido. Deve ser entendido que, de acordo com as supracitadas descrições, um lado de codificador normalmente determina um modo de predição inter e codifica o modo de predição inter em um fluxo de bits. Depois que um modo de predição inter é finalmente selecionado, um indicador (por exemplo, o primeiro indicador, o segundo indicador, o terceiro indicador, ou o quarto indicador descrito acima) para o modo de predição inter é codificado no fluxo de bits usando-se um processo de codificação que é completamente o inverso do supracitado método de decodificação (o processo de codificação corresponde ao processo de decodificação de analisar o primeiro indicador, o segundo indicador, o terceiro indicador, ou o quarto indicador). Deve ser entendido que determinar um comprimento máximo de uma primeira lista de vetores de movimento candidatos pelo lado de codificador é completamente consistente com isso pelo lado de decodificador. Uma modalidade específica do lado de codificador não é descrita.
No entanto, deve ser entendido que o método de predição de imagem de vídeo descrito nesse pedido é também usado em um aparelho de codificação.
[0486] Uma modalidade desse pedido fornece adicionalmente um aparelho usado em um codificador. Como mostrado na Figura 15, o aparelho 1500 pode compreender uma interface de comunicações 1510 e um processador
1520. Opcionalmente, o aparelho 1500 pode adicionalmente compreender uma memória 1530. A memória 1530 pode ser disposta dentro ou fora do aparelho. O processador 1520 envia ou recebe um fluxo de vídeo ou um fluxo de bits através da interface de comunicações 1510.
[0487] Em um aspecto, o processador 1520 é configurado para: codificar um primeiro indicador em um fluxo de bits; e Quando o primeiro indicador indicar que um modo candidato usado para predizer de modo inter o bloco a ser processado compreende um modo afim, codificar um segundo indicador no fluxo de bits, onde o segundo indicador é usado para indicar um comprimento máximo de uma primeira lista de vetores de movimento candidatos, e a primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para o bloco a ser processado usando-se um modo de predição de fusão de sub-bloco.
[0488] A interface de comunicações 1510 nessa modalidade desse pedido pode ser um circuito, um barramento, um transceptor, ou qualquer outro aparelho que pode ser configurado para trocar informações. Por exemplo, o outro aparelho pode ser um dispositivo conectado ao aparelho 1500. Por exemplo, se o aparelho é um codificador de vídeo, o outro aparelho pode ser um decodificador de vídeo.
[0489] Nessa modalidade desse pedido, o processador 1520 pode ser um processador de propósito geral, um processador de sinal digital, um circuito integrado de aplicação específica, um arranjo de porta programável em campo ou um outro dispositivo lógico programável, uma porta discreta ou dispositivo lógico de transistor, ou um componente de hardware discreto, e pode implantar ou executar os métodos, etapas, e diagramas de blocos lógicos revelados nas modalidades desse pedido. O processador de propósito geral pode ser um microprocessador, qualquer processador convencional, ou semelhantes. As etapas dos métodos revelados com referência ás modalidades desse pedido podem ser diretamente realizadas por um processador de hardware, ou podem ser realizadas usando-se uma combinação de hardware no processador e uma unidade de software. O código de programa executado pelo processador 1520 para implantar os métodos supracitados pode ser armazenado na memória
1530. A memória 1530 é acoplada ao processador 1520.
[0490] O acoplamento nessa modalidade desse pedido pode ser um acoplamento indireto ou uma conexão de comunicação entre aparelhos, unidades, ou módulos em uma forma elétrica, uma forma mecânica, ou uma outra forma, e é usado para troca de informações entre os aparelhos, as unidades, ou os módulos.
[0491] O processador 1520 pode operar em colaboração com a memória 1530. A memória 1530 pode ser uma memória não volátil, por exemplo, uma unidade de disco rígido (hard disk drive, HDD) ou uma unidade de estado sólido (solid-state drive, SSD), ou pode ser uma memória volátil, por exemplo, uma memória de acesso aleatório (random-access memory, RAM). A memória 1530 é qualquer outro meio que pode ser configurado para portar ou armazenar código de programa esperado em uma forma de uma instrução ou uma estrutura de dados e que pode ser acessado por um computador, porém, sem limitação a esse.
[0492] Nessa modalidade desse pedido, um meio de conexão específico entre a interface de comunicações 1510, o processador 1520, e a memória 1530 não é limitado. Nessa modalidade desse pedido, a memória 1530, o processador 1520, e a interface de comunicações 1510 são conectados através de um barramento na Figura 15. O barramento é representado por uma linha cheia na Figura 15. Um modo de conexão entre outros componentes é descrito meramente de modo esquemático, e não há limitação ao mesmo. O barramento pode ser classificado em um barramento de endereço, um barramento de dados, um barramento de controle, e semelhantes. Para facilidade de representação, somente uma linha cheia é usada para representar o barramento na Figura 15, mas isso não significa que há somente um barramento ou somente um tipo de barramento.
[0493] Com base nas supracitadas modalidades, uma modalidade desse pedido fornece adicionalmente um meio de armazenamento de computador. O meio de armazenamento armazena um programa de software. Quando o programa de software é lido e executado por um ou mais processadores, o método fornecido em qualquer uma ou mais das supracitadas modalidades pode ser implantado. O meio de armazenamento de computador pode compreender qualquer meio que pode armazenar código de programa, tal como um pen drive USB, um disco rígido removível, uma memória somente leitura, uma memória de acesso aleatório, um disco magnético, ou um disco óptico.
[0494] Com base nas supracitadas modalidades, uma modalidade desse pedido fornece adicionalmente um chip. O chip compreende um processador, configurado para implantar as funções em qualquer uma ou mais dentre as supracitadas modalidades, por exemplo, obter ou processar informações ou uma mensagem usada nos métodos supracitados. Opcionalmente, o chip adicionalmente compreende uma memória. A memória é configurada para armazenar uma instrução de programa e dados que são necessários e executados pelo processador. O chip pode compreender um chip, ou pode compreender um chip e um outro dispositivo discreto.
[0495] Embora aspectos específicos desse pedido tenham sido descritos com referência ao codificador de vídeo 20 e ao decodificador de vídeo 30, deve ser entendido que as tecnologias desse pedido podem ser usadas por muitas outras unidades de codificação e/ou decodificação de vídeo, processadores, unidades de processamento, e unidades de decodificação com base em hardware e semelhantes, por exemplo, codificadores/decodificadores (CODEC). Além disso, deve ser entendido que as etapas descritas e mostradas na Figura 8A à Figura 12A e Figura 12B são meramente fornecidas como implantações viáveis. Em outras palavras, as etapas descritas nas implantações viáveis na Figura 8A à Figura 12A e Figura 12B não são necessariamente realizadas na ordem mostrada na Figura 8A à Figura 12A e Figura 12B, e menos etapas, adicionais, ou alternativas podem ser realizadas.
[0496] Além disso, deve ser entendido que dependendo das implantações viáveis, ações ou eventos específicos em qualquer dos métodos descritos nesse relatório podem ser realizados em ordens diferentes, uma ação ou evento pode ser adicionado, ou as ações ou eventos podem ser combinados, ou omitidos (por exemplo, não todas as ações ou eventos descritos são necessários para implantar os métodos). Além disso, em uma implantação particular viável, as ações ou eventos podem (por exemplo) passar por processamento de execução múltipla ou processamento de interrupção, ou podem ser processadas por uma pluralidade de processadores simultaneamente em vez de sequencialmente. Além disso, embora aspectos específicos desse pedido sejam descritos como sendo realizados por um único módulo ou unidade com o propósito de clareza, deve ser entendido que as tecnologias desse pedido podem ser realizadas por uma combinação de unidades ou módulos associados ao decodificador de vídeo.
[0497] Em uma ou mais implantações viáveis, as funções descritas podem ser implantadas usando-se hardware, software, firmware, ou qualquer combinação dos mesmos. Se as funções são implantadas usando-se software, as funções podem ser armazenadas em um meio legível por computador como uma ou mais instruções ou código, ou transmitidas através de um meio legível por computador e executadas por uma unidade de processamento com base em hardware. O meio legível por computador pode compreender um meio de armazenamento legível por computador ou um meio de comunicações. O meio de armazenamento legível por computador corresponde a um meio tangível tal como um meio de armazenamento de dados. O meio de comunicações compreende qualquer meio que facilite transmissão de um programa de computador (por exemplo) de uma localização para uma outra localização de acordo com um protocolo de comunicações.
[0498] Dessa maneira, o meio legível por computador pode corresponder, por exemplo, (1) a um meio de armazenamento legível por computador não transitório tangível, ou (2) a um meio de comunicações tal como um sinal ou um portador. O meio de armazenamento de dados pode ser qualquer meio disponível que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código, e/ou estruturas de dados para implantar as tecnologias descritas nesse pedido. Um produto de programa de computador pode compreender um meio legível por computador.
[0499] A título de uma implantação viável e não de uma limitação, o meio de armazenamento legível por computador pode compreender uma RAM, uma ROM, uma EEPROM, uma CD-ROM ou um outro aparelho de armazenamento de disco óptico, um aparelho de armazenamento de disco magnético ou um outro aparelho de armazenamento magnético, uma memória flash, ou qualquer outro meio que pode ser usado para armazenar código exigido em uma forma de uma instrução ou uma estrutura de dados e que pode ser acessado por um computador. Do mesmo modo, qualquer conexão pode ser apropriadamente referida como um meio legível por computador. Por exemplo, se uma instrução é transmitida a partir de um site da web, 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 tecnologias sem fio tais como infravermelho, rádio, e micro-onda, o cabo coaxial, fibra óptica, par trançado, DSL, ou tecnologias sem fio tais como infravermelho, rádio, e micro-onda são compreendidas em uma definição de meio.
[0500] No entanto, deve ser entendido que o meio de armazenamento legível por computador e o meio de armazenamento de dados podem não compreender uma conexão, um portador, um sinal, ou um outro meio transitório, mas alternativamente significam meios de armazenamento tangíveis não transitórios. Um disco magnético e um disco óptico descritos nesse relatório compreendem um disco compacto (CD), um disco a laser, um disco óptico, um disco versátil digital (DVD), um disquete, e um disco Blu-ray. O disco magnético normalmente reproduz dados magneticamente, e o disco óptico reproduz dados opticamente através de um laser. Uma combinação do supracitado disco magnético com disco óptico também estará compreendida em um escopo do meio legível por computador.
[0501] 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 de porta programáveis em campo (FPGA), ou outros circuitos lógicos integrados ou discretos equivalentes. Portanto, o termo "processador" usado nesse relatório pode ser qualquer uma dentre as supracitadas estruturas ou uma outra estrutura que é usada para implantar as tecnologias descritas nesse relatório. Além disso, em alguns aspectos, as funções 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. Do mesmo modo, as tecnologias podem todas ser implantadas em um ou mais circuitos ou elementos lógicos.
[0502] As tecnologias nesse pedido podem ser implantadas em vários aparelhos ou dispositivos, incluindo um telefone móvel sem fio, um circuito integrado (IC), ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos, ou unidades são descritos nesse pedido para enfatizar aspectos funcionais de um aparelho configurado para realizar as tecnologias reveladas, mas não são necessariamente implantados por diferentes unidades de hardware. Mais precisamente, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecida por unidades de hardware interoperáveis (incluindo um ou mais processadores descritos acima) em combinação com um conjunto de software e/ou firmware apropriado.
[0503] As supracitadas descrições são meramente exemplos de implantação 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 imaginada por uma pessoa habilitada na técnica dentro do escopo técnico revelado nesse pedido estará abrangido pelo escopo de proteção desse pedido. Portanto, o escopo de proteção desse pedido estará sujeito ao escopo de proteção das reivindicações.

Claims (19)

REIVINDICAÇÕES
1. Método de predição de imagem de vídeo, CARACTERIZADO pelo fato de que compreende: analisar, a partir de um conjunto de parâmetros de sequência, SPS, em um fluxo de bits, um valor de um primeiro indicador sps_affine_enabled_flag e um valor de um terceiro indicador sps_sbtmvp_enabled_flag; quando o valor do primeiro indicador for igual a um primeiro valor, analisar um valor de um segundo indicador a partir do SPS, determinar um comprimento máximo de uma primeira lista de vetores de movimento candidatos com base no valor do segundo indicador, em que a primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para um bloco a ser processado, um modo de predição de fusão de sub-bloco é usado para o bloco a ser processado; e quando o valor do primeiro indicador for igual a um segundo valor, determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no valor do terceiro indicador, o segundo valor é diferente do primeiro valor.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula: MaxNumSub-blockMergeCand = K − K_minus_max_num_subblock_merge_cand, em que MaxNumSubblockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, e K é um número inteiro não negativo pré-estabelecido.
3. Método, de acordo com a reivindicação 1 ou 2, CARACTERIZADO pelo fato de que a determinação de um comprimento máximo de uma primeira lista de vetores de movimento candidatos com base no valor do terceiro indicador compreende: determinar que o comprimento máximo da primeira lista de vetores de movimento candidatos é 0, quando o valor do terceiro indicador for 0.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3,
CARACTERIZADO pelo fato de que a determinação de um comprimento máximo de uma primeira lista de vetores de movimento candidatos com base no valor do terceiro indicador compreende: determinar que o comprimento máximo da primeira lista de vetores de movimento candidatos é 1, quando o valor do terceiro indicador for 1.
5. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que o valor do terceiro indicador ser 1 indica que um modo de predição de vetor de movimento temporal avançada está presente no modo de predição de fusão de sub-bloco.
6. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que o valor do terceiro indicador ser 0 indica que um modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco.
7. Método, de acordo com a reivindicação 5 ou 6, CARACTERIZADO pelo fato de que o modo de predição de vetor de movimento temporal avançada é um modo de predição com base em vetor de movimento temporal de sub-bloco.
8. Método, de acordo com qualquer uma das reivindicações 1 a 7, CARACTERIZADO pelo fato de que o valor do primeiro indicador indica se um modo candidato usado para predizer de modo inter o bloco a ser processado compreende um modo afim.
9. Método, de acordo com qualquer uma das reivindicações 1 a 8, CARACTERIZADO pelo fato de que o primeiro valor é 1, o segundo valor é 0.
10. Aparelho de predição de imagem de vídeo, CARACTERIZADO pelo fato de que compreende: uma unidade de análise, configurada para analisar, a partir de um conjunto de parâmetros de sequência, SPS, em um fluxo de bits, um valor de um primeiro indicador sps_affine_enabled_flag e um valor de um terceiro indicador sps_sbtmvp_enabled_flag; a unidade de análise é configurada para analisar um valor de um segundo indicador a partir do SPS, quando o valor do primeiro indicador for igual a um primeiro valor; uma unidade de determinação, configurada para determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no segundo indicador quando o valor do primeiro indicador for igual ao primeiro valor, em que a primeira lista de vetores de movimento candidatos é uma lista de vetores de movimento candidatos construída para um bloco a ser processado, um modo de predição de fusão de sub-bloco é usado para o bloco a ser processado; a unidade de determinação é configurada para determinar o comprimento máximo da primeira lista de vetores de movimento candidatos com base no valor do terceiro indicador quando o valor do primeiro indicador for igual a um segundo valor, o segundo valor é diferente do primeiro valor.
11. Aparelho, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que o comprimento máximo da primeira lista de vetores de movimento candidatos é obtido de acordo com a seguinte fórmula: MaxNumSubblockMergeCand = K − K_minus_max_num_subblock_merge_cand, em que MaxNumSubblockMergeCand representa o comprimento máximo da primeira lista de vetores de movimento candidatos, K_minus_max_num_subblock_merge_cand representa o segundo indicador, e K é um número inteiro não negativo pré-estabelecido.
12. Aparelho, de acordo com a reivindicação 10 ou 11, CARACTERIZADO pelo fato de que a determinação de um comprimento máximo de uma primeira lista de vetores de movimento candidatos com base no valor do terceiro indicador compreende: determinar que o comprimento máximo da primeira lista de vetores de movimento candidatos é 0, quando o valor do terceiro indicador for 0.
13. Aparelho, de acordo com qualquer uma das reivindicações 10 a 12, CARACTERIZADO pelo fato de que a determinação de um comprimento máximo de uma primeira lista de vetores de movimento candidatos com base no valor do terceiro indicador compreende: determinar que o comprimento máximo da primeira lista de vetores de movimento candidatos é 1, quando o valor do terceiro indicador for 1.
14. Aparelho, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que o valor do terceiro indicador ser 1 indica que um modo de predição de vetor de movimento temporal avançada está presente no modo de predição de fusão de sub-bloco.
15. Aparelho, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que o valor do terceiro indicador ser 0 indica que um modo de predição de vetor de movimento temporal avançada não está presente no modo de predição de fusão de sub-bloco.
16. Aparelho, de acordo com a reivindicação 14 ou 15, CARACTERIZADO pelo fato de que o modo de predição de vetor de movimento temporal avançada é um modo de predição com base em vetor de movimento temporal de sub-bloco.
17. Aparelho, de acordo com qualquer uma das reivindicações 10 a 16, CARACTERIZADO pelo fato de que o valor do primeiro indicador indica se um modo candidato usado para predizer de modo inter o bloco a ser processado compreende um modo afim.
18. Aparelho, de acordo com qualquer uma das reivindicações 10 a 17, CARACTERIZADO pelo fato de que o primeiro valor é 1, o segundo valor é
0.
19. Produto de programa de computador, CARACTERIZADO pelo fato de que compreende código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9 quando executado em um computador ou em um processador.
BR112021007919-0A 2018-10-29 2019-10-23 método e aparelho de predição de imagem de vídeo BR112021007919A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201811268188.2 2018-10-29
CN201811268188 2018-10-29
CN201811642717.0A CN111107354A (zh) 2018-10-29 2018-12-29 一种视频图像预测方法及装置
CN201811642717.0 2018-12-29
PCT/CN2019/112749 WO2020088324A1 (zh) 2018-10-29 2019-10-23 一种视频图像预测方法及装置

Publications (1)

Publication Number Publication Date
BR112021007919A2 true BR112021007919A2 (pt) 2021-07-27

Family

ID=70419856

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021007919-0A BR112021007919A2 (pt) 2018-10-29 2019-10-23 método e aparelho de predição de imagem de vídeo

Country Status (16)

Country Link
US (2) US11438578B2 (pt)
EP (1) EP3852370B1 (pt)
JP (2) JP7352625B2 (pt)
KR (1) KR20210057138A (pt)
CN (3) CN111107354A (pt)
AU (3) AU2019370424B9 (pt)
BR (1) BR112021007919A2 (pt)
CA (1) CA3113545C (pt)
HU (1) HUE065057T2 (pt)
MX (2) MX2021004843A (pt)
PH (1) PH12021550689A1 (pt)
PL (1) PL3852370T3 (pt)
PT (1) PT3852370T (pt)
SG (2) SG10202110925YA (pt)
WO (1) WO2020088324A1 (pt)
ZA (1) ZA202102152B (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020103944A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Sub-block based motion candidate selection and signaling
CN113287309A (zh) * 2018-12-27 2021-08-20 Oppo广东移动通信有限公司 编码预测方法、装置及计算机存储介质
CN114208184A (zh) 2019-08-13 2022-03-18 北京字节跳动网络技术有限公司 基于子块的帧间预测中的运动精度
CN114762330A (zh) 2019-09-22 2022-07-15 北京字节跳动网络技术有限公司 视频的子图片编码和解码
JP2023510846A (ja) * 2020-01-12 2023-03-15 エルジー エレクトロニクス インコーポレイティド マージ候補の最大個数情報を含むシーケンスパラメータセットを用いた画像符号化/復号化方法及び装置、並びにビットストリームを伝送する方法
US11405628B2 (en) * 2020-04-06 2022-08-02 Tencent America LLC Method and apparatus for video coding
CN112138394B (zh) * 2020-10-16 2022-05-03 腾讯科技(深圳)有限公司 图像处理方法、装置、电子设备及计算机可读存储介质
CN112541390B (zh) * 2020-10-30 2023-04-25 四川天翼网络股份有限公司 一种用于考试视频违规分析的抽帧动态调度方法及系统
CN115662346B (zh) * 2022-10-14 2024-01-19 格兰菲智能科技有限公司 Demura补偿值压缩方法和系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SI2636218T1 (sl) * 2010-11-04 2021-12-31 Ge Video Compression, Llc Kodiranje slike, ki podpira združevanje blokov in preskakovalni način
US9247249B2 (en) 2011-04-20 2016-01-26 Qualcomm Incorporated Motion vector prediction in video coding
US9485518B2 (en) * 2011-05-27 2016-11-01 Sun Patent Trust Decoding method and apparatus with candidate motion vectors
WO2014107066A1 (ko) 2013-01-04 2014-07-10 삼성전자 주식회사 위상차를 고려한 영상 업샘플링을 이용하는 스케일러블 비디오 부호화 방법 및 장치, 스케일러블 비디오 복호화 방법 및 장치
KR20140121315A (ko) * 2013-04-04 2014-10-15 한국전자통신연구원 참조 픽처 리스트를 이용한 다 계층 기반의 영상 부호화/복호화 방법 및 그 장치
WO2016008157A1 (en) * 2014-07-18 2016-01-21 Mediatek Singapore Pte. Ltd. Methods for motion compensation using high order motion model
WO2016078511A1 (en) * 2014-11-18 2016-05-26 Mediatek Inc. Method of bi-prediction video coding based on motion vectors from uni-prediction and merge candidate
CN108600749B (zh) 2015-08-29 2021-12-28 华为技术有限公司 图像预测的方法及设备
CN106559669B (zh) 2015-09-29 2018-10-09 华为技术有限公司 预测图像编解码方法及装置
US20190028731A1 (en) * 2016-01-07 2019-01-24 Mediatek Inc. Method and apparatus for affine inter prediction for video coding system
WO2017156705A1 (en) * 2016-03-15 2017-09-21 Mediatek Inc. Affine prediction for video coding
US20180310017A1 (en) * 2017-04-21 2018-10-25 Mediatek Inc. Sub-prediction unit temporal motion vector prediction (sub-pu tmvp) for video coding

Also Published As

Publication number Publication date
PL3852370T3 (pl) 2024-04-29
PH12021550689A1 (en) 2022-02-14
SG10202110925YA (en) 2021-11-29
JP2022511637A (ja) 2022-02-01
EP3852370A1 (en) 2021-07-21
JP7485839B2 (ja) 2024-05-16
CN111107354A (zh) 2020-05-05
CA3113545A1 (en) 2020-05-07
AU2021240264A1 (en) 2021-10-28
JP7352625B2 (ja) 2023-09-28
HUE065057T2 (hu) 2024-04-28
US11438578B2 (en) 2022-09-06
MX2021004843A (es) 2021-08-11
KR20210057138A (ko) 2021-05-20
AU2019370424A1 (en) 2021-04-29
CA3113545C (en) 2023-10-10
US20220279168A1 (en) 2022-09-01
MX2021011944A (es) 2021-11-03
ZA202102152B (en) 2023-01-25
SG11202102652QA (en) 2021-04-29
EP3852370B1 (en) 2023-12-20
CN112005551A (zh) 2020-11-27
CN115243039A (zh) 2022-10-25
WO2020088324A1 (zh) 2020-05-07
CN115243039B (zh) 2024-04-09
JP2023153178A (ja) 2023-10-17
US20210258570A1 (en) 2021-08-19
CN112005551B (zh) 2021-07-16
AU2019370424B2 (en) 2023-04-27
PT3852370T (pt) 2024-02-29
EP3852370A4 (en) 2021-12-01
AU2019370424B9 (en) 2023-05-11
AU2021240264B2 (en) 2023-08-10
RU2021128424A (ru) 2021-11-08
AU2023233136A1 (en) 2023-10-12

Similar Documents

Publication Publication Date Title
CN113039798B (zh) 解码设备实现的译码方法及解码器
BR112021007919A2 (pt) método e aparelho de predição de imagem de vídeo
BR112021006892A2 (pt) método e aparelho de predição inter
BR112021004505A2 (pt) método de predição de vetor de movimento baseado em modelo de movimento afim e dispositivo
ES2965276T3 (es) Método de decodificación de vídeo y decodificador de vídeo
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
JP7318007B2 (ja) インター予測方法および装置
CN111107373B (zh) 基于仿射预测模式的帧间预测的方法及相关装置
CN111698515A (zh) 帧间预测的方法及相关装置
BR112021013444A2 (pt) Método, aparelho e sistema de predição de imagem, dispositivo, e mídia de armazernamento
BR112021010896A2 (pt) Método e aparelho de codificação e decodificação de imagem de vídeo
CN112042197A (zh) 候选运动矢量列表获取方法、装置及编解码器
ES2966509T3 (es) Método y dispositivo de partición de imagen
CN112135137B (zh) 视频编码器、视频解码器及相应方法
CN111432219B (zh) 一种帧间预测方法及装置
BR112021011307A2 (pt) Método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória
WO2020182194A1 (zh) 帧间预测的方法及相关装置
RU2787812C2 (ru) Способ и аппаратура предсказания видеоизображений
RU2778993C2 (ru) Способ и аппаратура предсказания видеоизображений
CN111355961B (zh) 一种帧间预测的方法和装置
CN111726630A (zh) 基于三角预测单元模式的处理方法及装置