BR112021004505A2 - método de predição de vetor de movimento baseado em modelo de movimento afim e dispositivo - Google Patents

método de predição de vetor de movimento baseado em modelo de movimento afim e dispositivo Download PDF

Info

Publication number
BR112021004505A2
BR112021004505A2 BR112021004505-8A BR112021004505A BR112021004505A2 BR 112021004505 A2 BR112021004505 A2 BR 112021004505A2 BR 112021004505 A BR112021004505 A BR 112021004505A BR 112021004505 A2 BR112021004505 A2 BR 112021004505A2
Authority
BR
Brazil
Prior art keywords
block
processed
image block
motion vector
location
Prior art date
Application number
BR112021004505-8A
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 BR112021004505A2 publication Critical patent/BR112021004505A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

MÉTODO DE PREDIÇÃO DE VETOR DE MOVIMENTO BASEADO EM MODELO DE MOVIMENTO AFIM E DISPOSITIVO. Este pedido divulga um método de predição de vetor de movimento baseado em um modelo de movimento afim e um dispositivo. O método inclui: obter um bloco de referência espacial de um bloco de imagem a-ser-processado; determinar uma pluralidade de localizações de sub-bloco predefinidas do bloco de referência espacial; obter vetores de movimento correspondentes a localizações de pixel predefinidas do bloco de imagem a-ser-processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas; e obter vetores de movimento correspondentes a uma pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas. De acordo com este pedido, a precisão de predição na codificação pode ser melhorada, e a eficiência de codificação pode ser melhorada.

Description

MÉTODO DE PREDIÇÃO DE VETOR DE MOVIMENTO BASEADO EM MODELO DE MOVIMENTO AFIM E DISPOSITIVO CAMPO TÉCNICO
[001] A presente invenção se refere ao campo de codificação de vídeo e, em particular, a um método de predição de vetor de movimento baseado em um modelo de movimento afim e um dispositivo.
FUNDAMENTOS
[002] A codificação de vídeo (codificação e decodificação de vídeo) é aplicada a uma ampla gama de aplicativos de vídeo digital, por exemplo, difusão de TV digital, transmissão de vídeo pela Internet e redes móveis, aplicações de conversação em tempo real, como bate-papo de vídeo e videoconferência, discos DVD e Blu-ray e aplicações de segurança de sistemas de edição e coleta de conteúdo de vídeo e câmeras de vídeo.
[003] Com o desenvolvimento de um método de codificação de vídeo híbrido baseado em bloco no padrão H.261 em 1990, novas tecnologias e ferramentas de codificação de vídeo foram desenvolvidas e formam a base para novos padrões de codificação de vídeo. Outros padrões de codificação de vídeo incluem vídeo MPEG-1, vídeo MPEG-2, ITU-T H.262 / MPEG-2, ITU-T H.263, ITU-T H.264 / MPEG-4 Parte 10: codificação de vídeo avançada (Advanced Video Coding, AVC), ITU-T H.265 / codificação de vídeo de alta eficiência (High Efficiency Video Coding, HEVC) e extensões, por exemplo, escalabilidade e / ou extensões 3D (tridimensionais) desses padrões. À medida que a criação e o uso de vídeo se tornam cada vez mais difundidos, o tráfego de vídeo se tornou o maior fardo para as redes de comunicação e armazenamento de dados.
Portanto, em comparação com os padrões anteriores, um dos objetivos da maioria dos padrões de codificação de vídeo é reduzir a taxa de bits sem sacrificar a qualidade da imagem. Embora a mais recente codificação de vídeo de alta eficiência (High Efficiency Video Coding, HEVC) possa atingir uma taxa de compressão de vídeo cerca de duas vezes maior que em AVC sem sacrificar a qualidade da imagem, ainda há uma necessidade urgente de uma nova tecnologia para melhorar ainda mais a compressão de vídeo em comparação com HEVC.
SUMÁRIO
[004] As modalidades da presente invenção fornecem um método de predição de vetor de movimento baseado em um modelo de movimento afim e um dispositivo, para melhorar a precisão de predição na codificação de vídeo e melhorar a eficiência de codificação.
[005] De acordo com um primeiro aspecto, a presente invenção fornece um método de predição de vetor de movimento baseado em um modelo de movimento afim. O método é descrito a partir de uma perspectiva de um lado de codificador ou lado de decodificador, e inclui: obter um bloco de referência espacial de um bloco de imagem a-ser-processado, onde o bloco de imagem a-ser-processado é obtido por particionamento de uma imagem de vídeo, e o bloco de referência espacial é um bloco decodificado que é espacialmente vizinho ao bloco de imagem a-ser-processado. No lado de codificador, o bloco de imagem a-ser-processado é um bloco de codificação afim (affine coding block) atual e o bloco de referência espacial é um bloco de codificação afim (affine coding block) vizinho. No lado de decodificador, o bloco de imagem a-ser-processado é um bloco de decodificação afim (affine coding block) atual,
e o bloco de referência espacial é um bloco de decodificação afim (affine coding block) vizinho. Para facilidade de descrição, o bloco de imagem a-ser-processado pode ser geralmente referido como um bloco atual e o bloco de referência espacial pode ser geralmente referido como um bloco vizinho. Em seguida, são determinadas as localizações de sub-bloco predefinidas de dois ou mais sub-blocos do bloco de referência espacial. Cada sub-bloco tem uma localização de sub-bloco predefinida correspondente, e a localização de sub-bloco predefinida é consistente com uma localização usada para calcular um vetor de movimento do sub-bloco durante a codificação. Para ser específico, para um sub- bloco do bloco de codificação afim vizinho, um vetor de movimento de um pixel em uma localização predefinida no sub- bloco é usado para representar vetores de movimento de todos os pixels no sub-bloco. Posteriormente, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas dos dois ou mais sub-blocos do bloco de referência espacial, onde as localizações de pixel predefinidas são pontos de controle do bloco de imagem a-ser-processado. Em seguida, um modelo de movimento afim do bloco atual é formado com base nos vetores de movimento correspondentes às localizações de pixel predefinidas do bloco atual e os vetores de movimento correspondentes a uma pluralidade de localizações de sub- bloco do bloco de imagem a-ser-processado são interpolados.
[006] Os vetores de movimento interpolados correspondentes à pluralidade de localizações de sub-blocos são usados separadamente para prever uma pluralidade de sub- blocos.
[007] Pode ser aprendido que, de acordo com as modalidades da presente invenção, vetores de movimento de pontos de controle do bloco atual são derivados usando vetores de movimento de pelo menos dois sub-blocos do bloco vizinho, em vez de usar vetores de movimento de pontos de controle do bloco vizinho e, em seguida, os vetores de movimento dos sub-blocos do bloco atual são derivados com base nos vetores de movimento dos pontos de controle. Os vetores de movimento dos pontos de controle do bloco atual não precisam ser armazenados posteriormente. Para ser específico, os vetores de movimento dos pontos de controle do bloco atual são usados apenas para derivar os vetores de movimento dos sub-blocos do bloco de codificação atual, mas não são usados para a predição de vetor de movimento do bloco vizinho. Portanto, nas soluções da presente invenção, apenas os vetores de movimento dos sub-blocos precisam ser armazenados, e a compensação de movimento é realizada usando os vetores de movimento dos sub-blocos. Isso resolve um problema de armazenamento de vetor de movimento, e evita um caso em que um vetor de movimento inconsistente com aquele usado para outro sub-bloco é usado para realizar a compensação de movimento em um sub-bloco no qual um ponto de controle está localizado, de modo que a precisão de predição seja melhorada.
[008] Com base no primeiro aspecto, em uma possível implementação, dois sub-blocos no bloco de referência espacial podem ser determinados, e uma distância entre duas localizações de sub-blocos predefinidas correspondentes aos dois sub-blocos é S, onde S é 2 elevado à potência de K, e K é um número inteiro não negativo. Isso ajuda a implementar a derivação de vetor de movimento subsequente em uma maneira de deslocamento, de modo que a complexidade de implementação seja reduzida.
[009] Com base no primeiro aspecto, em uma possível implementação, a localização predefinida do sub-bloco pode ser uma localização de um pixel superior esquerdo no sub- bloco, uma localização de um centro geométrico do sub-bloco, uma localização de um pixel mais próximo de um centro geométrico no sub-bloco, uma localização de um pixel superior direito no sub-bloco, ou semelhantes.
[0010] Com base no primeiro aspecto, em uma possível implementação, a disponibilidade de um ou mais blocos de referência candidatos que são do bloco atual e que estão em localizações espaciais predefinidas pode ser determinada em uma ordem predefinida e, então, o primeiro bloco de referência candidato disponível na ordem predefinida é obtida e usada como bloco de referência espacial. Os blocos de referência candidatos nas localizações espaciais predefinidas incluem um bloco de imagem vizinho diretamente superior, um bloco de imagem vizinho diretamente esquerdo, um bloco de imagem vizinho superior direito, um bloco de imagem vizinho inferior esquerdo e um bloco de imagem vizinho superior esquerdo do bloco de imagem a-ser-processado. Por exemplo, a disponibilidade dos blocos de referência candidatos é verificada sucessivamente na seguinte ordem: o bloco de imagem vizinho diretamente esquerdo → o bloco de imagem vizinho diretamente superior → o bloco de imagem vizinho superior direito → o bloco de imagem vizinho inferior esquerdo → o bloco de imagem vizinho superior esquerdo, até que o primeiro bloco de referência candidato disponível seja determinado.
[0011] Especificamente, se o bloco de referência candidato está disponível pode ser determinado de acordo com o seguinte método: quando o bloco de referência candidato e o bloco de imagem a-ser-processado estão em uma mesma região de imagem, e o bloco de referência candidato é codificado com base no modelo de movimento afim, o bloco de referência candidato está determinado estar disponível.
[0012] Com base no primeiro aspecto, em uma possível implementação, se o modelo de movimento afim do bloco atual for um modelo de movimento afim de 4 parâmetros, a pluralidade de localizações de sub-bloco predefinidas do bloco de referência espacial inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2) e uma segunda localização predefinida (x4 + M / 2 + P, y4 + N / 2), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, P é 2 elevado à potência de K, K é um número inteiro não negativo, K é menor que U, e U é a largura do bloco de referência espacial. Isso pode ajudar a implementar a derivação de vetor de movimento subsequente em uma maneira de deslocamento, de modo que a complexidade de implementação seja reduzida.
[0013] Com base no primeiro aspecto, em uma possível implementação, se o modelo de movimento afim do bloco atual for um modelo de movimento afim de 4 parâmetros, a pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2) e uma terceira localização predefinida (x4 + M / 2, y4 + N / 2 + Q), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, Q é 2 elevado à potência de R, R é um número inteiro não negativo, Q é menor que V, e V é a altura do bloco de referência espacial. Isso ajuda a implementar a derivação de vetor de movimento subsequente em uma maneira de deslocamento, de modo que a complexidade de implementação seja reduzida.
[0014] Em um exemplo, se o modelo de movimento afim do bloco atual é um modelo de movimento afim de 6 parâmetros, a pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2), uma segunda localização predefinida (x4 + M / 2 + P, y4 + N / 2) e uma terceira localização predefinida (x4 + M / 2, y4 + N / 2 + Q), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, P é 2 elevado à potência de K, Q é 2 elevado para a potência de R, K e R são inteiros não negativos, P é menor que U, Q é menor que V, U é a largura do bloco de referência espacial, e V é a altura do bloco de referência espacial. Isso ajuda a implementar a derivação de vetor de movimento subsequente em uma maneira de deslocamento, de modo que a complexidade de implementação seja reduzida.
[0015] Em outro exemplo, quando um limite superior do bloco atual coincide com um limite superior de uma unidade de árvore de codificação (CTU) incluindo o bloco atual, e o bloco de referência espacial está diretamente acima do bloco de imagem a-ser-processado, no canto superior esquerdo do bloco de imagem a-ser-processado, ou no canto superior direito do bloco de imagem a-ser-processado, pelo menos dois dos sub-blocos correspondentes à pluralidade de localizações de sub-bloco predefinidas são adjacentes ao limite superior do bloco atual.
[0016] Com base no primeiro aspecto, em uma possível implementação, quando um limite esquerdo do bloco atual coincide com um limite esquerdo de uma unidade de árvore de codificação (CTU) incluindo o bloco atual, e o bloco de referência espacial está diretamente à esquerda do bloco atual, no canto superior esquerdo do bloco atual, ou no canto inferior esquerdo do bloco atual, pelo menos dois dos sub- blocos correspondentes à pluralidade de localizações de sub- bloco predefinidas são adjacentes ao limite esquerdo do bloco atual.
[0017] Com base no primeiro aspecto, em uma possível implementação, um vetor de movimento de ponto de controle candidato do bloco atual é determinado usando um método de predição de vetor de movimento de ponto de controle herdado aprimorado. Para ser específico, os vetores de movimento de localizações de pixel predefinidas do bloco atual são extrapolados a partir de vetores de movimento de pelo menos dois sub-blocos do bloco de codificação afim vizinho (ou o bloco de decodificação afim vizinho). As localizações de pixel predefinidas são pontos de controle do bloco atual.
Por exemplo, se o modelo de movimento afim do bloco atual é o modelo de movimento afim de 4 parâmetros, os pontos de controle do bloco atual podem ser um pixel superior esquerdo e um pixel superior direito no bloco atual. Se o modelo de movimento afim do bloco atual for o modelo de movimento afim de 6 parâmetros, os pontos de controle do bloco atual podem ser um pixel superior esquerdo, um pixel superior direito e um pixel inferior esquerdo no bloco atual.
[0018] Com base no primeiro aspecto, em uma possível implementação, se o modelo de movimento afim do bloco atual for o modelo de movimento afim de 4 parâmetros, os pontos de controle do bloco atual podem incluir pelo menos dois de uma localização de pixel superior esquerda do bloco de imagem a- ser-processado, uma localização de pixel superior direita do bloco de imagem a-ser-processado, e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e obter os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser- processado que são extrapolados a partir dos vetores de movimento correspondentes às localizações de sub-bloco predefinidas inclui: obter, por meio de cálculo de acordo com as seguintes fórmulas, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado: ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; e 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) . 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[0019] Aqui, vx0 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vy0 é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vx1 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, vy1 é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, vx2 é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, vy2 é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, vx4 é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, vy4 é um componente vertical do vetor de movimento correspondente à primeira localização predefinida, vx5 é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, vy5 é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser-processado, y0 é uma coordenada vertical do localização de pixel superior esquerda do bloco de imagem a- ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser- processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado,
x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
[0020] Com base no primeiro aspecto, em uma possível implementação, se o modelo de movimento afim do bloco atual for o modelo de movimento afim de 6 parâmetros, os pontos de controle do bloco atual podem incluir uma localização de pixel superior esquerda do bloco de imagem a-ser-processado, uma localização de pixel superior direita do bloco de imagem a-ser-processado, e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e obter os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado que são extrapolados a partir dos vetores de movimento correspondentes às localizações de sub-bloco predefinidas inclui: obter, por meio de cálculo de acordo com as seguintes fórmulas, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser- processado: ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; e 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) . 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[0021] Aqui, vx0 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vy0 é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vx1 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, vy1 é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, vx2 é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, vy2 é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, vx4 é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, vy4 é um componente vertical do vetor de movimento correspondente à primeira localização predefinida, vx5 é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, vy5 é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, vx6 é um componente horizontal de um vetor de movimento correspondente à terceira localização predefinida, vy6 é um componente vertical do vetor de movimento correspondente à terceira localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser- processado, y0 é uma coordenada vertical da localização de pixel superior esquerda do bloco de imagem a-ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser-processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado, x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
[0022] Com base no primeiro aspecto, em uma possível implementação, para cada sub-bloco do bloco atual (um sub- bloco pode ser equivalente a uma unidade de compensação de movimento, e a largura e a altura de sub-bloco são menores que a largura e a altura do bloco atual), as informações de movimento de um pixel em uma localização predefinida na unidade de compensação de movimento podem ser usadas para representar as informações de movimento de todos os pixels na unidade de compensação de movimento. Assume-se que o tamanho da unidade de compensação de movimento é M x N, o pixel na localização predefinida pode ser um pixel central (M / 2, N / 2), um pixel superior esquerdo (0, 0), um pixel superior direito (M - 1, 0), ou um pixel em outra localização na unidade de compensação de movimento. Neste caso, um vetor de movimento de cada sub-bloco no bloco atual pode ser obtido com base nas informações de movimento de ponto de controle do bloco atual e um modelo de movimento afim usado atualmente e, subsequentemente, a compensação de movimento pode ser realizada com base no vetor de movimento do sub-bloco para obter um valor de pixel previsto do sub-bloco.
[0023] Com base no primeiro aspecto, em uma possível implementação, se o modelo de movimento afim do bloco atual for o modelo de movimento afim de 4 parâmetros, as localizações de pixel predefinidas incluem a localização de pixel superior esquerda do bloco de imagem a-ser-processado e a localização de pixel superior direita do bloco de imagem a-ser-processado, e obter os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas inclui: obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado: 𝑣𝑥 = 𝑥− 𝑦 + 𝑣𝑥 . 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[0024] Aqui, W é a largura do bloco de imagem a-ser- processado, vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e vy é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
[0025] Com base no primeiro aspecto, em uma possível implementação, se o modelo de movimento afim do bloco atual for o modelo de movimento afim de 6 parâmetros, obter os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem a-ser- processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas inclui: obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado: 𝑣𝑥 = 𝑥+ 𝑦 + 𝑣𝑥 . 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[0026] Aqui, W é a largura do bloco de imagem a-ser-
processado, H é a altura do bloco de imagem a-ser-processado, vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e vy é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
[0027] De acordo com um segundo aspecto, uma modalidade da presente invenção fornece um dispositivo. O dispositivo inclui: um módulo de obtenção de bloco de referência, configurado para obter um bloco de referência espacial de um bloco de imagem a-ser-processado em dados de vídeo; um módulo de determinação de sub-bloco, configurado para determinar uma pluralidade de localizações de sub-bloco predefinidas do bloco de referência espacial; um primeiro módulo de cálculo, configurado para obter vetores de movimento correspondentes a localizações de pixel predefinidas do bloco de imagem a-ser-processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas; e um segundo módulo de cálculo, configurado para obter vetores de movimento correspondentes a uma pluralidade de localizações de sub-bloco do bloco de imagem a-ser- processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas.
[0028] Em uma modalidade específica, os módulos do dispositivo podem ser configurados para implementar o método descrito no primeiro aspecto.
[0029] De acordo com um terceiro aspecto, uma modalidade da presente invenção fornece um dispositivo de decodificação de vídeo. O dispositivo inclui: uma memória, configurada para armazenar dados de vídeo na forma de um fluxo de bits; e um decodificador, configurado para: obter um bloco de referência espacial de um bloco de imagem a-ser-processado nos dados de vídeo; determinar uma pluralidade de localizações de sub-bloco predefinidas do bloco de referência espacial; obter vetores de movimento correspondentes a localizações de pixel predefinidas do bloco de imagem a-ser-processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas; e obter vetores de movimento correspondentes a uma pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas, onde os vetores de movimento interpolados correspondentes à pluralidade de localizações de sub-bloco são usados separadamente para prever uma pluralidade de sub-blocos.
[0030] Com base no terceiro aspecto, em uma possível modalidade, o decodificador é especificamente configurado para: determinar, em uma ordem predefinida, disponibilidade de um ou mais blocos de referência candidatos que são do bloco de imagem a-ser-processado e que estão em localizações espaciais predefinidas; e obter o primeiro bloco de referência candidato disponível na ordem predefinida, onde o primeiro bloco de referência candidato disponível é usado como o bloco de referência espacial.
[0031] Com base no terceiro aspecto, em uma possível modalidade, quando o bloco de referência candidato e o bloco de imagem a-ser-processado estão em uma mesma região de imagem, e o bloco de referência candidato é codificado com base em um modelo de movimento afim, o bloco de referência candidato está determinado estar disponível.
[0032] Com base no terceiro aspecto, em uma possível modalidade, os blocos de referência candidatos nas localizações espaciais predefinidas incluem um bloco de imagem vizinho diretamente superior, um bloco de imagem vizinho diretamente esquerdo, um bloco de imagem vizinho superior direito, um bloco de imagem vizinho inferior esquerdo e um bloco de imagem vizinho superior esquerdo do bloco de imagem a-ser-processado.
[0033] O decodificador é especificamente configurado para verificar sucessivamente a disponibilidade dos blocos de referência candidatos na seguinte ordem: o bloco de imagem vizinho diretamente esquerdo → o bloco de imagem vizinho diretamente superior → o bloco de imagem vizinho superior direito → o bloco de imagem vizinho inferior esquerdo → o bloco de imagem vizinho superior esquerdo, até que o primeiro bloco de referência candidato disponível seja determinado.
[0034] A localização de sub-bloco do bloco de referência espacial ou do bloco de imagem a-ser-processado é uma localização de um pixel superior esquerdo em um sub- bloco; uma localização de um centro geométrico de um sub- bloco; ou a localização de um pixel mais próximo de um centro geométrico em um sub-bloco.
[0035] Com base no terceiro aspecto, em uma possível modalidade, uma distância entre duas da pluralidade de localizações de sub-bloco predefinidas é S, onde S é 2 elevado à potência de K, e K é um número inteiro não negativo.
[0036] Com base no terceiro aspecto, em uma possível modalidade, o modelo de movimento afim é um modelo de movimento afim de 4 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2) e uma segunda localização predefinida (x4 + M / 2 + P, y4 + N / 2), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub- bloco, P é 2 elevado à potência de K, K é um inteiro não negativo, K é menor que U, e U é a largura do bloco de referência espacial.
[0037] Com base no terceiro aspecto, em uma possível modalidade, o modelo de movimento afim é um modelo de movimento afim de 4 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2) e uma terceira localização predefinida (x4 + M / 2, y4 + N / 2 + Q), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub- bloco, Q é 2 elevado à potência de R, R é um inteiro não negativo, Q é menor que V, e V é a altura do bloco de referência espacial.
[0038] Com base no terceiro aspecto, em uma possível modalidade, o modelo de movimento afim é o modelo de movimento afim de 4 parâmetros, as localizações de pixel predefinidas incluem pelo menos duas de uma localização de pixel superior esquerda do bloco de imagem a-ser-processado, uma localização de pixel superior direita do bloco de imagem a-ser-processado, e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e o decodificador é especificamente configurado para obter, por meio de cálculo de acordo com as seguintes fórmulas, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado: ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; e 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) . 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[0039] Aqui, vx0 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vy0 é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vx1 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, vy1 é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, vx2 é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, vy2 é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, vx4 é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, vy4 é um componente vertical do vetor de movimento correspondente à primeira localização predefinida, vx5 é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, vy5 é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser-processado, y0 é uma coordenada vertical da localização de pixel superior esquerda do bloco de imagem a- ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser- processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado, x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
[0040] Com base no terceiro aspecto, em uma possível modalidade, o modelo de movimento afim é o modelo de movimento afim de 4 parâmetros, as localizações de pixel predefinidas incluem a localização de pixel superior esquerda do bloco de imagem a-ser-processado e a localização de pixel superior direita do bloco de imagem a-ser- processado, e o decodificador é especificamente configurado para obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado:
𝑣𝑥 = 𝑥− 𝑦 + 𝑣𝑥 . 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[0041] Aqui, W é a largura do bloco de imagem a-ser- processado, vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e vy é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
[0042] Com base no terceiro aspecto, em uma possível modalidade, o modelo de movimento afim é um modelo de movimento afim de 6 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2), uma segunda localização predefinida (x4 + M / 2 + P, y4 + N / 2), e uma terceira localização predefinida (x4 + M / 2, y4 + N / 2 + Q), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub- bloco, P é 2 elevado à potência de K, Q é 2 elevado à potência de R, K e R são inteiros não negativos, P é menor que U, Q é menor que V, U é a largura do bloco de referência espacial, e V é a altura do bloco de referência espacial.
[0043] Com base no terceiro aspecto, em uma possível modalidade, o modelo de movimento afim é o modelo de movimento afim de 6 parâmetros, as localizações de pixel predefinidas incluem uma localização de pixel superior esquerda do bloco de imagem a-ser-processado, uma localização de pixel superior direita do bloco de imagem a- ser-processado e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e o decodificador é especificamente configurado para obter, por meio de cálculo de acordo com as seguintes fórmulas, os vetores de movimento correspondentes a as localizações de pixel predefinidas do bloco de imagem a-ser-processado: ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; e 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) . 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[0044] Aqui, vx0 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vy0 é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vx1 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, vy1 é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, vx2 é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, vy2 é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, vx4 é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, vy4 é um componente vertical do vetor de movimento correspondente à primeira localização predefinida,
vx5 é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, vy5 é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, vx6 é um componente horizontal de um vetor de movimento correspondente à terceira localização predefinida, vy6 é um componente vertical do vetor de movimento correspondente à terceira localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser- processado, y0 é uma coordenada vertical da localização de pixel superior esquerda do bloco de imagem a-ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser-processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado, x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
[0045] Com base no terceiro aspecto, em uma possível modalidade, o modelo de movimento afim é o modelo de movimento afim de 6 parâmetros, e o decodificador é especificamente configurado para obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado: 𝑣𝑥 = 𝑥+ 𝑦 + 𝑣𝑥 . 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[0046] Aqui, W é a largura do bloco de imagem a-ser- processado, H é a altura do bloco de imagem a-ser-processado,
vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e vy é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
[0047] Com base no terceiro aspecto, em uma possível modalidade, quando um limite superior do bloco de imagem a- ser-processado coincide com um limite superior de uma unidade de árvore de codificação CTU incluindo o bloco de imagem a- ser-processado, e o bloco de referência espacial está diretamente acima do bloco de imagem a-ser-processado, no canto superior esquerdo do bloco de imagem a-ser-processado, ou no canto superior direito do bloco de imagem a-ser- processado, pelo menos dois dos sub-blocos correspondentes à pluralidade de localizações de sub-bloco predefinidas são adjacentes ao limite superior do bloco de imagem a-ser- processado.
[0048] Com base no terceiro aspecto, em uma possível modalidade, quando um limite esquerdo do bloco de imagem a- ser-processado coincide com um limite esquerdo de uma unidade de árvore de codificação CTU incluindo o bloco de imagem a- ser-processado, e o bloco de referência espacial está diretamente à esquerda do bloco de imagem a-ser-processado, no canto superior esquerdo do bloco de imagem a-ser- processado, ou no canto inferior esquerdo do bloco de imagem a-ser-processado, pelo menos dois dos sub-blocos correspondentes à pluralidade de localizações de sub-blocos predefinidas são adjacentes ao limite esquerdo do bloco de imagem a-ser-processado.
[0049] O método descrito no primeiro aspecto da presente invenção pode ser realizado pelo dispositivo de acordo com o terceiro aspecto da presente invenção. Outros recursos e implementações do método de acordo com o primeiro aspecto da presente invenção dependem diretamente das funcionalidades e diferentes implementações do dispositivo de acordo com o terceiro aspecto da presente invenção.
[0050] De acordo com um quarto aspecto, uma modalidade da presente invenção fornece um dispositivo de codificação de vídeo. O dispositivo inclui: uma memória, configurada para armazenar dados de vídeo na forma de um fluxo de bits; e um codificador, configurado para: obter um bloco de referência espacial de um bloco de imagem a-ser-processado nos dados de vídeo; determinar uma pluralidade de localizações de sub-bloco predefinidas do bloco de referência espacial; obter vetores de movimento correspondentes a localizações de pixel predefinidas do bloco de imagem a-ser-processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas; e obter vetores de movimento correspondentes a uma pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas, onde os vetores de movimento interpolados correspondentes à pluralidade de localizações de sub-bloco são usados separadamente para prever uma pluralidade de sub-blocos.
[0051] Para a implementação da função específica do codificador, consulte a descrição da função do decodificador descrita no terceiro aspecto. Os detalhes não são descritos aqui novamente.
[0052] O método de acordo com o primeiro aspecto da presente invenção pode ser realizado pelo dispositivo descrito no quarto aspecto da presente invenção. Outros recursos e implementações do método de acordo com o primeiro aspecto da presente invenção dependem diretamente das funcionalidades e diferentes implementações do dispositivo de acordo com o quarto aspecto da presente invenção.
[0053] De acordo com um quinto aspecto, a presente invenção se refere a um aparelho de decodificação de fluxo de vídeo, incluindo um processador e uma memória. A memória armazena uma instrução, e a instrução habilita o processador para realizar o método de acordo com o primeiro aspecto.
[0054] De acordo com um sexto aspecto, uma modalidade da presente invenção fornece um aparelho de decodificação de fluxo de vídeo, incluindo um processador e uma memória. A memória armazena uma instrução, e a instrução habilita o processador para realizar o método de acordo com o primeiro aspecto.
[0055] De acordo com um sétimo aspecto, uma modalidade da presente invenção fornece um aparelho de codificação de fluxo de vídeo, incluindo um processador e uma memória. A memória armazena uma instrução, e a instrução habilita o processador para realizar o método de acordo com o primeiro aspecto.
[0056] De acordo com um oitavo aspecto, uma modalidade da presente invenção fornece um meio de armazenamento legível por computador. O meio de armazenamento legível por computador armazena uma instrução e, quando a instrução é executada, um ou mais processadores são habilitados para codificar dados de vídeo. A instrução habilita o um ou mais processadores a realizarem o método descrito em qualquer modalidade possível do primeiro aspecto.
[0057] De acordo com um nono aspecto, uma modalidade da presente invenção fornece um programa de computador incluindo código de programa. Quando o código de programa é rodado em um computador, o método descrito em qualquer modalidade possível do primeiro aspecto é realizado.
[0058] Pode ser aprendido que o método de predição de vetor de movimento de ponto de controle herdado aprimorado é usado nas modalidades da presente invenção. No método de predição de vetor de movimento de ponto de controle herdado aprimorado, vetores de movimento de pontos de controle do bloco atual são derivados usando vetores de movimento de pelo menos dois sub-blocos do bloco vizinho, em vez de usar vetores de movimento de pontos de controle do bloco vizinho, então vetores de movimento de sub-blocos do bloco atual são derivados com base nos vetores de movimento dos pontos de controle, e predição para o bloco atual é implementada por meio de compensação de movimento. Os vetores de movimento dos pontos de controle do bloco atual não precisam ser armazenados posteriormente. Para ser específico, os vetores de movimento dos pontos de controle do bloco atual são usados apenas para derivar os vetores de movimento dos sub-blocos do bloco de codificação atual, mas não são usados para a predição de vetor de movimento do bloco vizinho. Portanto, nas soluções da presente invenção, apenas os vetores de movimento dos sub-blocos precisam ser armazenados, e a compensação de movimento é realizada usando os vetores de movimento dos sub-blocos. Isso resolve um problema de armazenamento de vetor de movimento, e evita um caso em que um vetor de movimento inconsistente com aquele usado para outro sub-bloco é usado para realizar a compensação de movimento em um sub-bloco no qual um ponto de controle está localizado, de modo que a precisão de predição seja melhorada.
BREVE DESCRIÇÃO DOS DESENHOS
[0059] Para descrever as soluções técnicas nas modalidades da presente invenção mais claramente, o seguinte descreve os desenhos anexos para descrever as modalidades da presente invenção.
[0060] A Figura 1A é um diagrama de blocos de um exemplo de um sistema de codificação e decodificação de vídeo 10 para implementar uma modalidade da presente invenção; a Figura 1B é um diagrama de blocos de um exemplo de um sistema de codificação de vídeo 40 para implementar uma modalidade da presente invenção; a Figura 2 é um diagrama de blocos de um exemplo de estrutura de um codificador 20 para implementar uma modalidade da presente invenção; a Figura 3 é um diagrama de blocos de um exemplo de estrutura de um decodificador 30 para implementar uma modalidade da presente invenção; a Figura 4 é um diagrama de blocos de um exemplo de um dispositivo de codificação de vídeo 400 para implementar uma modalidade da presente invenção; a Figura 5 é um diagrama de blocos de outro exemplo de um aparelho de codificação ou um aparelho de decodificação para implementar uma modalidade da presente invenção;
a Figura 6 é um diagrama esquemático de um cenário no qual uma operação de exemplo é realizada em um bloco atual; a Figura 7 é um diagrama esquemático de um cenário no qual outra operação de exemplo é realizada em um bloco atual; a Figura 8 é um diagrama esquemático de um cenário no qual outra operação de exemplo é realizada em um bloco atual; a Figura 9 é um diagrama esquemático de um cenário no qual outra operação de exemplo é realizada em um bloco atual; a Figura 10 é um diagrama esquemático de um cenário no qual outra operação de exemplo é realizada em um bloco atual; a Figura 11 é um fluxograma de um método de predição de vetor de movimento baseado em um modelo de movimento afim de acordo com uma modalidade da presente invenção; a Figura 12 é um fluxograma de outro método de predição de vetor de movimento baseado em um modelo de movimento afim de acordo com uma modalidade da presente invenção; a Figura 13 é um diagrama esquemático de um cenário no qual outra operação de exemplo é realizada em um bloco atual; a Figura 14 é um fluxograma de outro método de predição de vetor de movimento baseado em um modelo de movimento afim de acordo com uma modalidade da presente invenção; e a Figura 15 é um diagrama de blocos estrutural de um dispositivo para implementar uma modalidade da presente invenção.
DESCRIÇÃO DE MODALIDADES
[0061] O que segue descreve as modalidades da presente invenção com referência aos desenhos anexos nas modalidades da presente invenção. Na descrição a seguir, é feita referência aos desenhos anexos que fazem parte desta divulgação e mostram, a título de ilustração, aspectos específicos das modalidades da presente invenção ou aspectos específicos em que as modalidades da presente invenção podem ser usadas.
Deve ser entendido que as modalidades da presente invenção podem ser usadas em outros aspectos e podem incluir mudanças estruturais ou lógicas não representadas nos desenhos anexos.
Portanto, a seguinte descrição detalhada não deve ser entendida em um sentido limitante, e o escopo da presente invenção é definido pelas reivindicações anexas.
Por exemplo, deve ser entendido que o conteúdo divulgado em combinação com um método descrito também pode ser verdadeiro para um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa.
Por exemplo, se um ou mais passos de método específicos forem descritos, um dispositivo correspondente pode incluir uma ou mais unidades, como unidades de função, para realizar os um ou mais passos de método descritos (por exemplo, uma unidade realizando um ou mais passos, ou uma pluralidade de unidades, cada uma realizando uma ou mais da pluralidade de passos), mesmo se tal uma ou mais unidades não forem explicitamente descritas ou ilustradas nos desenhos anexos.
Além disso, por exemplo, se um aparelho específico é descrito com base em uma ou mais unidades, como unidades de função, um método correspondente pode incluir um passo usado para realizar a funcionalidade de uma ou mais unidades (por exemplo, um passo usado para realizar a funcionalidade de uma ou mais unidades, ou uma pluralidade de passos, cada um usado para realizar a funcionalidade de uma ou mais de uma pluralidade de unidades), mesmo se esses um ou mais passos não forem explicitamente descritos ou ilustrados nos desenhos anexos.
Além disso, deve ser entendido que os recursos dos vários exemplos de modalidades e / ou aspectos descritos neste relatório descritivo podem ser combinados uns com os outros, a menos que especificamente indicado de outra forma.
[0062] As soluções técnicas nas modalidades da presente invenção podem não apenas ser aplicadas aos padrões de codificação de vídeo existentes (por exemplo, padrões como H.264 e HEVC), mas também ser aplicadas a padrões de codificação de vídeo futuros (por exemplo, o padrão H.266). Os termos usados nas modalidades da presente invenção são usados apenas para explicar modalidades específicas da presente invenção, mas não se destinam a limitar a presente invenção. O seguinte primeiro descreve brevemente alguns conceitos que podem ser usados nas modalidades da presente invenção.
[0063] A codificação de vídeo geralmente se refere ao processamento de uma sequência de imagens que constituem um vídeo ou uma sequência de vídeo. No campo da codificação de vídeo, os termos "imagem (picture)", "quadro (frame)" e "imagem (image)" podem ser usados como sinônimos. A codificação de vídeo neste relatório descritivo refere-se à codificação ou decodificação de vídeo. A codificação de vídeo é realizada no lado de origem e geralmente inclui o processamento (por exemplo, por meio de compressão) de uma imagem de vídeo original para reduzir uma quantidade de dados para representar a imagem de vídeo, para armazenamento e / ou transmissão mais eficiente. A decodificação de vídeo é realizada em um lado de destino e geralmente inclui processamento inverso em relação a um codificador para reconstruir a imagem de vídeo. "Codificação" de uma imagem de vídeo nas modalidades deve ser entendida 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 é chamada de codificação (codificação e decodificação).
[0064] Uma sequência de vídeo inclui uma série de imagens (picture), uma imagem é ainda particionada em fatias (slice) e uma fatia é ainda dividida em blocos (block). A codificação de vídeo é realizada por bloco. Em alguns novos padrões de codificação de vídeo, o conceito de "bloco" é estendido ainda mais. Por exemplo, um macrobloco (macroblock, MB) é introduzido no padrão H.264. O macrobloco pode ainda ser particionado em uma pluralidade de blocos de predição que podem ser usados para codificação preditiva (partição). No padrão de codificação de vídeo de alta eficiência (High Efficiency Video Coding, HEVC), conceitos básicos como "unidade de codificação" (coding unit, CU), "unidade de predição" (predition unit, PU) e "unidade de transformada" (transform unit, TU) são usados. Uma pluralidade de unidades de bloco é obtida por divisão de função e são descritas usando uma nova estrutura baseada em árvore. Por exemplo, uma CU pode ser particionada em CUs menores com base em uma árvore quádrupla, e a CU menor pode ainda ser particionada, para gerar uma estrutura de árvore quádrupla. A CU é uma unidade básica para particionar e codificar uma imagem codificada. Uma PU e uma TU também têm estruturas de árvore semelhantes. A PU pode corresponder a um bloco de predição e é uma unidade básica para codificação preditiva. A CU é ainda particionada em uma pluralidade de PUs em um modo de particionamento. A TU pode corresponder a um bloco de transformada, e é uma unidade básica para transformar um resíduo de predição. No entanto, em essência, todas as CU, PU e TU são conceitualmente blocos (ou blocos de imagem).
[0065] Por exemplo, em HEVC, uma CTU é particionada em uma pluralidade de CUs usando uma estrutura de árvore quádrupla representada como uma árvore de codificação. A decisão de se codificar uma região de imagem por meio de interpredição (temporal) ou intrapredição (espacial) é feita em um nível de CU. Cada CU pode ser ainda particionada em uma, duas ou quatro PUs com base em um tipo de particionamento de PU. Em uma PU, um mesmo processo de predição é aplicado e as informações relacionadas são transmitidas a um decodificador com base em PU. Depois de obter um bloco residual aplicando o processo de predição com base no tipo de particionamento de PU, a CU pode ser particionada em unidades de transformada (transforma unit, TU) com base em outra estrutura de árvore quádrupla semelhante à árvore de codificação usada para a CU. No desenvolvimento recente de tecnologias de compressão de vídeo, um quadro de partição de árvore quádrupla mais árvore binária (quadtree plus binary tree, QTBT) é usado para particionar um bloco de codificação. Em uma estrutura de bloco QTBT, a CU pode ser quadrada ou retangular.
[0066] Neste relatório descritivo, para facilidade de descrição e compreensão, um bloco de imagem a-ser- codificado em uma imagem codificada atual pode ser referido como um bloco atual. Por exemplo, na codificação, o bloco atual é um bloco que está sendo codificado e, na decodificação, o bloco atual é um bloco que está sendo decodificado. Um bloco de imagem decodificado, em uma imagem de referência, usado para prever o bloco atual é referido como um bloco de referência. Para ser mais específico, o bloco de referência é um bloco que fornece um sinal de referência para o bloco atual e o sinal de referência representa um valor de pixel no bloco de imagem. Um bloco que está na imagem de referência e que fornece um sinal de predição para o bloco atual 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, após uma pluralidade de blocos de referência serem atravessados, um bloco de referência ideal é encontrado. O bloco de referência ideal fornece predição para o bloco atual e é referido como um bloco de predição.
[0067] Em um caso de codificação de vídeo sem perdas, uma imagem de vídeo original pode ser reconstruída. Para ser mais específico, uma imagem de vídeo reconstruída tem a mesma qualidade da imagem de vídeo original (assumindo que nenhuma perda de transmissão ou outra perda de dados ocorra durante o armazenamento ou transmissão). Em um caso de codificação de vídeo com perdas, a compressão adicional é realizada por meio de, por exemplo, quantização, para reduzir uma quantidade de dados para representar uma imagem de vídeo, mas a imagem de vídeo não pode ser completamente reconstruída no lado de decodificador. Para ser mais específico, a qualidade de uma imagem de vídeo reconstruída é inferior ou mais pobre do que a da imagem de vídeo original.
[0068] Vários padrões de codificação de vídeo H.261 são para "codificação de vídeo híbrida com perdas" (para ser específico, predição espacial e temporal em um domínio de amostra é combinada com a codificação de transformada 2D para aplicação de quantização em um domínio da transformada). Cada imagem de uma sequência de vídeo é geralmente particionada em um conjunto de blocos não sobrepostos, e a codificação geralmente é realizada em um nível de bloco. Para ser mais específico, em um lado de codificador, um vídeo é geralmente processado, ou seja, codificado, em um nível de bloco (bloco de vídeo). Por exemplo, um bloco de predição é gerado por meio de predição espacial (intra) e predição temporal (inter), o bloco de predição é subtraído de um bloco atual (bloco sendo processado ou a ser processado) para obter um bloco residual, e o bloco residual é transformado no domínio da transformada e quantizado para reduzir uma quantidade de dados que deve ser transmitida (compactada). No lado de decodificador, uma parte de processamento inversa em relação a um codificador é aplicada a um bloco codificado ou um bloco comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica um loop de processamento de um decodificador, de modo que o codificador e o decodificador geram a mesma predição (por exemplo, intra e interpredição) e / ou reconstrução, para processar, isto é, codificar, blocos subsequentes.
[0069] O seguinte descreve uma arquitetura de sistema à qual as modalidades da presente invenção são aplicadas. A Figura 1A é um diagrama de blocos esquemático de um exemplo de um sistema de codificação e decodificação de vídeo 10 ao qual as modalidades da presente invenção são aplicadas. Como mostrado na Figura 1A, o sistema de codificação e decodificação de vídeo 10 pode incluir 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 implementação, o dispositivo de origem 12, o dispositivo de destino 14 ou ambos o dispositivo de origem 12 e o dispositivo de destino 14 podem incluir um ou mais processadores e uma memória acoplada a um ou mais processadores. A memória pode incluir, mas não está limitada a, RAM, ROM, EEPROM, memória flash ou qualquer outro meio que possa ser usado para armazenar o código de programa desejado na forma de uma instrução ou estrutura de dados acessível a um computador, conforme descrito neste relatório descritivo. O dispositivo de origem 12 e o dispositivo de destino 14 podem incluir vários aparelhos, incluindo um computador desktop, um aparelho de computação móvel, um notebook (por exemplo, um laptop), um tablet, um decodificador, um aparelho de telefone, tal como um telefone denominado "inteligente", uma televisão, uma câmera, um aparelho de exibição, um reprodutor de mídia digital, um console de videogame, um computador no veículo, um dispositivo de comunicação sem fio ou semelhante.
[0070] 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, incluir 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 tal modalidade, o dispositivo de origem 12 ou a funcionalidade correspondente e o dispositivo de destino 14 ou a funcionalidade correspondente podem ser implementados usando o mesmo hardware e / ou software, hardware e / ou software separados ou qualquer combinação dos mesmos.
[0071] Uma conexão de comunicação entre o dispositivo de origem 12 e o dispositivo de destino 14 pode ser implementada por meio de um enlace 13 e o dispositivo de destino 14 pode receber os dados de vídeo codificados a partir do dispositivo de origem 12 por meio do enlace 13. O enlace 13 pode incluir um ou mais meios ou aparelhos capazes de mover os dados de vídeo codificados a partir do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o enlace 13 pode incluir um ou mais meios de comunicação que permitem ao dispositivo de origem 12 transmitir diretamente os dados de vídeo codificados para o dispositivo de destino 14 em tempo real. Neste exemplo, o dispositivo de origem 12 pode modular os dados de vídeo codificados de acordo com um padrão de comunicação (por exemplo, um protocolo de comunicação sem fio), e pode transmitir dados de vídeo modulados para o dispositivo de destino 14. O um ou mais meios de comunicação podem incluir um meio de comunicação sem fio e / ou um meio de comunicação com fio, por exemplo, um espectro de radiofrequência (RF) ou um ou mais cabos de transmissão físicos. Os um ou mais meios de comunicação podem fazer parte de uma rede baseada em pacotes, e a rede baseada em pacotes é, por exemplo, uma rede local, uma rede remota ou uma rede global (por exemplo, a internet). Os um ou mais meios de comunicação podem incluir um roteador, um comutador, uma estação base ou outro dispositivo que facilita a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0072] O dispositivo de origem 12 inclui um codificador 20. Opcionalmente, o dispositivo de origem 12 pode incluir ainda uma fonte de imagem 16, um pré-processador de imagem 18 e uma interface de comunicações 22. Em uma forma de implementaçã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. As descrições são fornecidas separadamente como segue: a fonte de imagem 16 pode incluir ou ser qualquer tipo de dispositivo de captura de imagem configurado para, por exemplo, capturar uma imagem do mundo real; e / ou qualquer tipo de dispositivo para gerar uma imagem ou comentário (para codificação de conteúdo de tela, algum texto em uma tela também é considerado como parte de uma imagem ou imagem a- ser-codificada), por exemplo, um processador gráfico de computador configurado para gerar uma imagem de animação por computador; ou qualquer tipo de dispositivo configurado para obter e / ou fornecer uma imagem do mundo real ou uma imagem de animação de 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 ainda incluir 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, 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, integrada no dispositivo de origem. Quando a fonte de imagem 16 inclui uma interface, a interface pode ser, por exemplo, uma interface externa para receber uma imagem de uma fonte de vídeo externa. A fonte de vídeo externa é, por exemplo, um dispositivo de captura de imagem externo, como uma câmera, uma memória externa ou um dispositivo de geração de imagem externo. O dispositivo de geração de imagem externo é, por exemplo, um processador gráfico de computador 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 ótica, de acordo com qualquer protocolo de interface patenteado ou padronizado.
[0073] Uma imagem pode ser considerada um arranjo bidimensional ou matriz de elementos de imagem (Picture element). O elemento de imagem no arranjo também pode ser referido como uma amostra. Quantidades de amostras nas direções horizontal e vertical (ou eixos) do arranjo ou da imagem definem um tamanho e / ou resolução da imagem. Para representação da cor, três componentes de cor são normalmente usados. Para ser específico, a imagem pode ser representada como ou incluir três arranjos de amostra. Por exemplo, em um formato RBG ou espaço de cor, a imagem inclui arranjos de amostra vermelhas, verdes e azuis correspondentes. No entanto, na codificação de vídeo, cada pixel é geralmente representado em um formato de luminância / crominância ou espaço de cor. Por exemplo, uma imagem em um formato YUV inclui um componente de luminância indicado por Y (às vezes indicado por L alternativamente) e dois componentes de crominância indicados por U e V. O componente de luminância (luma) Y representa o brilho ou intensidade do nível de cinza (por exemplo, ambos são iguais em uma imagem de escala de cinza), e os dois componentes de crominância (croma) U e V representam crominância ou componentes de informação de cor. Correspondentemente, a imagem no formato YUV inclui uma 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). Uma imagem em formato RGB pode ser transformada ou convertida em formato YUV e vice- versa. Esse processo também é conhecido como conversão ou transformação de cores. Se uma imagem for monocromática, a imagem pode incluir apenas um arranjo de amostra de luminância. Nesta modalidade da presente invenção, uma imagem transmitida pela fonte de imagem 16 para o processador de imagem também pode ser referida como dados de imagem brutos 17.
[0074] O pré-processador de imagem 18 é configurado para receber os dados de imagem brutos 17 e realizar o 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 incluir corte, conversão de formato de cor (por exemplo, de um formato RGB para um formato YUV), correção de cor ou redução de ruído.
[0075] 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 em um modo de predição relacionado (tal como um modo de predição nas modalidades deste relatório descritivo), para fornecer dados de imagem codificados 21 (detalhes estruturais do codificador 20 são ainda descritos abaixo com base na Figura 2, Figura 4 ou Figura 5). Em algumas modalidades, o codificador 20 pode ser configurado para realizar várias modalidades descritas abaixo, para implementar a aplicação do lado de codificador de um método de predição de vetor de movimento descrito na presente invenção.
[0076] 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) através do 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 encapsular os dados de imagem codificados 21 em um formato apropriado, por exemplo, um pacote de dados, para transmissão através do enlace 13.
[0077] O dispositivo de destino 14 inclui um decodificador 30. Opcionalmente, o dispositivo de destino 14 pode incluir ainda uma interface de comunicações 28, um pós-
processador de imagem 32 e um dispositivo de exibição 34. As descrições são fornecidas separadamente como segue: 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 qualquer outra fonte. Qualquer outra fonte é, 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 através do enlace 13 entre o dispositivo de origem 12 e o dispositivo de destino 14 ou através de qualquer tipo de rede. O enlace 13 é, por exemplo, uma conexão direta com ou sem fio. Qualquer tipo de rede é, por exemplo, uma rede com fio ou sem fio ou qualquer combinação delas, ou qualquer tipo de rede pública ou privada ou qualquer combinação das mesmas. A interface de comunicações 28 pode ser, por exemplo, configurada para desencapsular o pacote de dados transmitido através da interface de comunicações 22, para obter os dados de imagem codificados 21.
[0078] Tanto a interface de comunicações 28 quanto a interface de comunicações 22 podem ser configuradas como interfaces de comunicação unidirecionais ou interfaces de comunicação bidirecionais, e podem ser configuradas para, por exemplo, enviar e receber mensagens para estabelecer uma conexão e reconhecer e trocar quaisquer outras informações relacionadas a um enlace de comunicação e / ou transmissão de dados, como transmissão de dados de imagem codificada.
[0079] O decodificador 30 (ou referido como um decodificador de vídeo 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 descritos abaixo com base na Figura 3, Figura 4 ou Figura 5). Em algumas modalidades, o decodificador 30 pode ser configurado para realizar várias modalidades descritas abaixo, para implementar a aplicação do lado de decodificador de um método de predição de vetor de movimento descrito na presente invenção.
[0080] 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 incluir conversão de formato de cor (por exemplo, de um formato YUV para um formato RGB), correção de cor, recorte, reamostragem, ou qualquer outro processamento. O pós- processador de imagem 32 pode ser ainda configurado para transmitir os dados de imagem pós-processados 33 para o dispositivo de exibição 34.
[0081] O dispositivo de exibição 34 é configurado para receber os dados de imagem pós-processados 33 para exibir uma imagem para, por exemplo, um usuário ou um visualizador. O dispositivo de exibição 34 pode ser ou pode incluir qualquer tipo de tela de exibição para apresentar uma imagem reconstruída, por exemplo, uma tela de exibição ou monitor integrado ou externo. Por exemplo, a tela de exibição pode incluir uma tela de exibição de cristal líquido (liquid crystal display, LCD), uma tela de exibição de diodo orgânico emissor de luz (organic light-emitting diode,
OLED), uma tela de exibição de plasma, um projetor, uma tela de exibição de LED micro, um líquido cristal em silício (liquid crystal on silicon, LCoS), um processador de luz digital (digital light processor, DLP) ou qualquer outro tipo de tela de exibição.
[0082] 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, incluir 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 tal modalidade, o dispositivo de origem 12 ou a funcionalidade correspondente e o dispositivo de destino 14 ou a funcionalidade correspondente podem ser implementados usando o mesmo hardware e / ou software, hardware e / ou software separados ou qualquer combinação dos mesmos.
[0083] Com base nas descrições, uma pessoa versada na técnica pode definitivamente aprender que 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 mostrado na Figura 1A podem variar dependendo do dispositivo e aplicação reais. O dispositivo de origem 12 e o dispositivo de destino 14 podem incluir qualquer um de uma ampla gama de dispositivos, incluindo qualquer tipo de dispositivo portátil ou estacionário, por exemplo, um notebook ou laptop, um telefone móvel, um smartphone, um tablet, uma câmera de vídeo, um computador desktop, um decodificador, uma televisão, uma câmera, um dispositivo montado em um veículo, um dispositivo de exibição, um reprodutor de mídia digital, um console de videogame, um dispositivo de fluxo contínuo (“streaming”) de vídeo (como um servidor de serviço de conteúdo ou um servidor de entrega de conteúdo), um dispositivo de receptor de difusão ou um dispositivo de transmissor de difusão, e pode usar ou não usar qualquer tipo de sistema operacional.
[0084] O codificador 20 e o decodificador 30, cada um, podem ser implementados como qualquer um dos vários circuitos adequados, 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 portas programáveis em campo (field-programmable gate array, FPGA), lógica discreta, hardware ou qualquer combinação dos mesmos. Se as tecnologias forem implementadas parcialmente usando software, um dispositivo pode armazenar uma instrução de software em um meio de armazenamento legível por computador não transitório adequado e pode executar a instrução usando hardware, como um ou mais processadores, para executar as tecnologias desta divulgação. Qualquer um dos conteúdos anteriores (incluindo hardware, software, uma combinação de hardware e software e semelhantes) pode ser considerado como um ou mais processadores.
[0085] Em alguns casos, o sistema de codificação e decodificação de vídeo 10 mostrado na Figura 1A é apenas um exemplo e as técnicas deste pedido podem ser aplicadas às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre um dispositivo de codificação e um dispositivo de decodificação. Em outro exemplo, os dados podem ser recuperados de uma memória local, transmitidos por uma rede ou semelhantes. Um dispositivo de codificação de vídeo pode codificar os dados e armazenar os dados em uma memória e / ou um dispositivo de decodificação de vídeo pode recuperar os dados da memória e decodificar os dados. Em alguns exemplos, dispositivos que apenas codificam dados e armazenam os dados na memória e / ou recuperam os dados da memória e decodificam os dados e que não se comunicam entre si realizam codificação e decodificação.
[0086] A Figura 1B é um diagrama ilustrativo de um exemplo de um sistema de codificação de vídeo 40 incluindo um codificador 20 na Figura 2 e / ou um decodificador 30 na Figura 3 de acordo com uma modalidade de exemplo. O sistema de codificação de vídeo 40 pode implementar uma combinação de várias tecnologias nas modalidades da presente invenção. Na implementação ilustrada, o sistema de codificação de vídeo 40 pode incluir um dispositivo de imagiologia 41, o codificador 20, o decodificador 30 (e / ou um codificador / decodificador de vídeo implementado 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.
[0087] Como mostrado na Figura 1B, o dispositivo de imagiologia 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 uns com os outros. Conforme descrito, embora o sistema de codificação de vídeo 40 seja ilustrado com o codificador 20 e o decodificador 30, o sistema de codificação de vídeo 40 pode incluir apenas o codificador 20 ou apenas o decodificador 30 em diferentes exemplos.
[0088] Em alguns exemplos, a antena 42 pode ser configurada para transmitir ou receber um fluxo de bits codificado de dados de vídeo. 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 implementado pela unidade de processamento
46. A unidade de processamento 46 pode incluir lógica de circuito integrado de aplicação específica (application- specific integrated circuit, ASIC), um processador gráfico, um processador de propósito geral ou semelhantes. O sistema de codificação de vídeo 40 também pode incluir o processador opcional 43. O processador opcional 43 pode incluir de forma semelhante 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 implementado por hardware, por exemplo, hardware dedicado de codificação de vídeo, e o processador 43 pode ser implementado por 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, uma memória de acesso aleatório estática (Static Random Access Memory, SRAM) ou uma memória de acesso aleatório dinâmica (Dynamic Random Access Memory, DRAM)) ou uma memória não volátil (por exemplo, uma memória flash). Em um exemplo não restritivo, a memória 44 pode ser implementada pela memória cache. Em alguns exemplos, o circuito lógico 47 pode acessar a memória 44 (por exemplo, para implementar um buffer de imagem). Em outros exemplos, o circuito lógico 47 e / ou a unidade de processamento 46 podem incluir uma memória (por exemplo, um cache) para implementar um buffer de imagem.
[0089] Em alguns exemplos, o codificador 20 implementado usando o circuito lógico pode incluir um buffer de imagem (que é implementado, por exemplo, pela unidade de processamento 46 ou a memória 44) e uma unidade de processamento gráfico (que é implementada por, por exemplo, a unidade de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao buffer de imagem. A unidade de processamento gráfico pode incluir o codificador 20 implementado usando o circuito lógico 47, para implementar vários módulos que são descritos com referência à Figura 2 e / ou qualquer outro sistema ou subsistema de codificador descrito neste relatório descritivo. O circuito lógico pode ser configurado para realizar várias operações descritas neste relatório descritivo.
[0090] Em alguns exemplos, o decodificador 30 pode ser implementado pelo circuito lógico 47 de uma maneira semelhante, para implementar vários módulos que são descritos com referência ao decodificador 30 na Figura 3 e / ou qualquer outro sistema ou subsistema de decodificador descrito neste relatório descritivo. Em alguns exemplos, o decodificador 30 implementado usando o circuito lógico pode incluir um buffer de imagem (que é implementado pela unidade de processamento 46 ou a memória 44) e uma unidade de processamento gráfico (que é implementada, por exemplo, pela unidade de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao buffer de imagem. A unidade de processamento gráfico pode incluir o decodificador 30 implementado usando o circuito lógico 47, para implementar vários módulos que são descritos com referência à Figura 3 e / ou qualquer outro sistema ou subsistema de decodificador descrito neste relatório descritivo.
[0091] Em alguns exemplos, a antena 42 pode ser configurada para receber um fluxo de bits codificado de dados de vídeo. Conforme descrito, o fluxo de bits codificado pode incluir dados, um indicador, um valor de índice, dados de seleção de modo, ou semelhantes que estão relacionados à codificação de quadro de vídeo e que são descritos neste relatório descritivo, por exemplo, dados relacionados ao particionamento 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 o particionamento de codificação). O sistema de codificação de vídeo 40 pode incluir ainda o decodificador 30 que é acoplado à antena 42 e que é configurado para decodificar o fluxo de bits codificado. O dispositivo de exibição 45 é configurado para apresentar um quadro de vídeo.
[0092] Deve ser entendido que, nesta modalidade da presente invenção, para o exemplo descrito com referência ao codificador 20, o decodificador 30 pode ser configurado para executar um processo inverso. No que diz respeito à sinalização de um elemento de sintaxe, o decodificador 30 pode ser configurado para receber e analisar tal elemento de sintaxe e, de forma correspondente, decodificar dados de vídeo relacionados. Em alguns exemplos, o codificador 20 pode codificar por entropia o elemento de sintaxe para um fluxo de bits de vídeo codificado. Em tais exemplos, o decodificador 30 pode analisar o elemento de sintaxe e decodificar correspondentemente os dados de vídeo relacionados.
[0093] Deve ser notado que, um método de predição de vetor de movimento baseado em um modelo de movimento afim de acordo com as modalidades da presente invenção é usado principalmente em um processo de interpredição. Este processo existe para o codificador 20 e o decodificador 30. O codificador 20 e o decodificador 30 nas modalidades da presente invenção podem ser um codificador e um decodificador correspondente a protocolos de padrão de vídeo, como H.263, H.264, HEVV, MPEG-2, MPEG-4, VP8 e VP9 ou protocolos de padrão de vídeo de próxima geração (como H.266).
[0094] A Figura 2 é um diagrama de blocos esquemático / conceitual de um exemplo de um codificador 20 para implementar uma modalidade da presente invenção. No exemplo da Figura 2, o codificador 20 inclui 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 de loop 220, um buffer de imagens decodificadas (decoded picture buffer, DPB) 230, uma unidade de processamento de predição 260 e uma unidade de codificação de entropia 270. A unidade de processamento de predição 260 pode incluir uma unidade de interpredição 244, uma unidade de intrapredição 254 e uma unidade de seleção de modo 262. A unidade de interpredição 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada na figura). O codificador 20 mostrado na Figura 2 também pode ser referido como um codificador de vídeo híbrido ou um codificador de vídeo baseado em um codec de vídeo híbrido.
[0095] 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 a unidade de codificação de entropia 270 formam um percurso de sinal para frente 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 de loop 220, o buffer de imagens decodificadas (decoded picture buffer, DPB) 230 e a unidade de processamento de predição 260 formam um percurso de sinal para trás do codificador. O percurso de sinal para trás do codificador corresponde a um percurso de sinal de um decodificador (consulte um decodificador 30 na Figura 3).
[0096] O codificador 20 recebe, por exemplo, através de uma entrada 202, uma imagem 201 ou um bloco de imagem 203 da 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 também pode ser referido como um bloco de imagem atual ou um bloco de imagem a-ser-codificado, e a imagem 201 pode ser referida como uma imagem atual ou uma imagem a-ser-codificada (particularmente na codificação de vídeo, para distinguir a imagem atual de outras imagens, por exemplo, imagens previamente codificadas e / ou decodificadas em uma mesma sequência de vídeo, ou seja, a sequência de vídeo que também inclui a imagem atual).
[0097] Uma modalidade do codificador 20 pode incluir uma unidade de particionamento (não representada na Figura 2), configurada para particionar a imagem 201 em uma pluralidade de blocos, como o bloco de imagem 203. A imagem 201 é geralmente particionada em uma pluralidade de blocos não sobrepostos. A unidade de particionamento pode ser configurada para usar um mesmo tamanho de bloco para todas as imagens na sequência de vídeo e uma grade correspondente definindo o tamanho do bloco, ou alterar um tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens e particionar cada imagem em blocos correspondentes.
[0098] Em um exemplo, a unidade de processamento de predição 260 do codificador 20 pode ser configurada para realizar qualquer combinação das tecnologias de particionamento descritas acima.
[0099] Como a imagem 201, o bloco de imagem 203 também é ou pode ser considerado como um arranjo bidimensional ou matriz de amostras com valores de amostra, embora um tamanho do bloco de imagem 203 seja menor do que um tamanho da imagem 201. Em outras palavras, o bloco de imagem 203 pode incluir, 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 colorida), ou qualquer outra quantidade e / ou tipo de arranjos dependendo de um formato de cor aplicado. Quantidades de amostras nas direções horizontal e vertical (ou eixos) do bloco de imagem 203 definem um tamanho do bloco de imagem 203.
[00100] O codificador 20 mostrado na Figura 2 é configurado para codificar a imagem 201 bloco a bloco, por exemplo, realizar codificação e predição em cada bloco de imagem 203.
[00101] 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 (mais detalhes sobre o bloco de predição 265 são fornecidos abaixo), por exemplo, subtraindo 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.
[00102] 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 amostrar valores do bloco residual 205 para obter coeficientes de transformada 207 em um domínio da transformada. O coeficiente de transformada 207 também pode ser referido como um coeficiente residual de transformada e representa o bloco residual 205 no domínio da transformada.
[00103] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações de inteiro de DCT / DST, como as transformadas especificadas em HEVC / H.265. Comparado com uma transformada DCT ortogonal, tais aproximações de inteiro são geralmente dimensionadas com base em um fator. Para preservar uma norma de um bloco residual que é processado usando as transformadas direta e inversa, um fator de escala adicional é aplicado como parte do processo de transformada. O fator de escala geralmente é selecionado com base em algumas restrições. Por exemplo, o fator de escala é uma potência de dois para uma operação de deslocamento, uma profundidade de bits do coeficiente de transformada e uma compensação entre precisão e custos de implementação. Por exemplo, um fator de escala específico é especificado para a transformada inversa, por exemplo, a unidade de processamento de transformada inversa 212 em um lado de decodificador 30 (e para uma transformada inversa correspondente por, por exemplo, a unidade de processamento de transformada inversa 212 em um lado de codificador 20), e correspondentemente, um fator de escala correspondente pode ser especificado para a transformada direta pela unidade de processamento de transformada 206 no lado de codificador
20.
[00104] A unidade de quantização 208 é configurada para quantizar os coeficientes de transformada 207 para obter coeficientes de transformada quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial. O coeficiente de transformada quantizado 209 também pode ser referido como um coeficiente residual quantizado 209. Um processo de quantização pode reduzir uma profundidade de bits relacionada a alguns 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 a quantização, onde n é maior que m.
Um grau de quantização pode ser modificado ajustando um parâmetro de quantização (quantization parameter, QP). Por exemplo, para a quantização escalar, diferentes escalas podem ser aplicadas para alcançar a quantização mais fina ou mais grosseira.
Um tamanho de passo de quantização menor corresponde a uma quantização mais fina, e um tamanho de passo de quantização maior corresponde a uma quantização mais grosseira.
Um tamanho de passo 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 passos de quantização apropriados.
Por exemplo, um parâmetro de quantização menor pode corresponder a uma quantização mais fina (um tamanho de passo de quantização menor), e um parâmetro de quantização maior pode corresponder a uma quantização mais grosseira (um tamanho de passo de quantização maior) e vice-versa.
A quantização pode incluir divisão por um tamanho de passo de quantização e quantização correspondente ou quantização inversa, por exemplo, realizada pela unidade de quantização inversa 210, ou pode incluir multiplicação por um tamanho de passo de quantização.
Em modalidades de acordo com alguns padrões, como HEVC, um parâmetro de quantização pode ser usado para determinar o tamanho de passo de quantização.
Geralmente, o tamanho de passo de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão.
Fatores de escala adicionais podem ser introduzidos para quantização e desquantização para restaurar uma norma de um 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 passo de quantização e o parâmetro de quantização. Em uma implementação de exemplo, uma 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 perdas, onde um tamanho de passo de quantização maior indica uma perda maior.
[00105] 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 em ou usando um mesmo tamanho de passo de quantização que a unidade de quantização 208, o inverso de um esquema de quantização aplicado pela unidade de quantização 208. O coeficiente desquantizado 211 também pode ser referido como um coeficiente residual desquantizado 211 e corresponde ao coeficiente de transformada 207, embora o coeficiente desquantizado 211 seja geralmente diferente do coeficiente de transformada devido a uma perda causada pela quantização.
[00106] 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 discreta de cosseno inversa (discrete cosine transform, DCT) ou uma transformada discreta de seno inversa (discrete sine transform, DST), para obter um bloco de transformada inversa 213 no domínio de amostra. O bloco de transformada inversa 213 também pode ser referido como um bloco desquantizado de transformada inversa 213 ou um bloco residual de transformada inversa 213.
[00107] A unidade de reconstrução 214 (por exemplo, um somador 214) é configurada para adicionar o bloco de transformada inversa 213 (isto é, um bloco residual reconstruído 213) ao bloco de predição 265, por exemplo, adicionando 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.
[00108] Opcionalmente, uma unidade de buffer 216 (ou brevemente referida como um "buffer" 216) de, por exemplo, um buffer de linha 216, é configurada para armazenar em buffer ou armazenar o bloco reconstruído 215 e um valor de amostra correspondente, por exemplo, para intrapredição. Em outras modalidades, o codificador pode ser configurado para usar blocos reconstruídos não filtrados e / ou valores de amostra correspondentes armazenados na unidade de buffer 216 para qualquer tipo de estimativa e / ou predição, por exemplo, intrapredição.
[00109] Por exemplo, em uma modalidade, o codificador 20 pode ser configurado de modo que a unidade de buffer 216 seja configurada para armazenar não apenas o bloco reconstruído 215 usado para a unidade de intrapredição 254, mas também um bloco reconstruído (não mostrado na Figura 2) usado para a unidade de filtro de loop 220 e / ou de modo que, por exemplo, a unidade de buffer 216 e o buffer de imagens decodificadas 230 formem um buffer. Em outra modalidade, um bloco filtrado 221 e / ou um bloco ou amostra
(não mostrado na Figura 2) do buffer de imagens decodificadas 230 são / é usado como uma entrada ou uma base para a unidade de intrapredição 254.
[00110] A unidade de filtro de loop 220 (ou brevemente referida como um "filtro de loop" 220) é configurada para filtrar o bloco reconstruído 215 para obter o bloco filtrado 221, para suavizar a transição de pixel ou melhorar a qualidade de vídeo. A unidade de filtro de loop 220 se destina a representar um ou mais filtros de loop, como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (sample-adaptive offset, SAO) ou outro filtro, por exemplo, um filtro bilateral, um filtro de loop adaptativo (adaptive loop filter, ALF), um filtro de nitidez ou suavização ou um filtro colaborativo. Embora a unidade de filtro de loop 220 seja mostrada como um filtro de loop na Figura 2, em outra configuração, a unidade de filtro de loop 220 pode ser implementada como um pós-filtro. O bloco 221 filtrado também pode ser referido como um bloco reconstruído filtrado 221. O buffer de imagens decodificadas 230 pode armazenar um bloco codificado reconstruído após a unidade de filtro de loop 220 realizar uma operação de filtragem no bloco codificado reconstruído.
[00111] Em uma modalidade, o codificador 20 (correspondentemente, a unidade de filtro de loop 220) pode ser configurado para emitir um parâmetro de filtro de loop (por exemplo, informação de deslocamento adaptativo de amostra), por exemplo, diretamente ou após codificação de entropia realizada pela unidade de codificação de entropia 270 ou qualquer outra unidade de codificação de entropia, de modo que o decodificador 30 possa receber e aplicar o mesmo parâmetro de filtro de loop para decodificação.
[00112] O buffer de imagens decodificadas (decoded picture buffer, DPB) 230 pode ser uma memória de imagem de referência que armazena dados de imagem de referência para uso na codificação de dados de vídeo pelo codificador 20. O DPB 230 pode incluir qualquer um de uma variedade de dispositivos de memória tal 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) ou uma RAM resistiva (resistive RAM, RRAM)), ou outros tipos de dispositivos de memória. O DPB 230 e o buffer 216 podem ser fornecidos por um mesmo dispositivo de memória ou dispositivos de memória separados. Em um exemplo, o buffer de imagens decodificadas (decoded picture buffer, DPB) 230 é configurado para armazenar o bloco filtrado 221. O buffer de imagens decodificadas 230 pode ainda ser configurado para armazenar outros blocos previamente filtrados, por exemplo, blocos previamente reconstruídos e filtrados 221, da mesma imagem atual ou de imagens diferentes, por exemplo, imagens previamente reconstruídas, e pode fornecer imagens completas previamente reconstruídas, isto é, decodificadas, (e blocos de referência e amostras correspondentes) e / ou uma imagem atual parcialmente reconstruída (e correspondentes blocos de referência e amostras), por exemplo, para interpredição. Em um exemplo, se o bloco reconstruído 215 for reconstruído sem filtragem em loop, o buffer de imagens decodificadas (decoded picture buffer, DPB) 230 é configurado para armazenar o bloco reconstruído 215.
[00113] 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) do buffer 216 e / ou dados de imagem de referência 231 de uma ou mais imagens previamente decodificadas do buffer de imagens decodificadas 230, e para processar tais dados para predição, isto é, para fornecer o bloco de predição 265 que pode ser um bloco de interpredição 245 ou um bloco de intrapredição 255.
[00114] A unidade de seleção de modo 262 pode ser configurada para selecionar um modo de predição (por exemplo, um modo de intrapredição ou interpredição) e / ou um bloco de predição correspondente 245 ou 255 para ser usado como o bloco de predição 265, para o cálculo do bloco residual 205 e para reconstrução do bloco reconstruído 215.
[00115] 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 uma melhor correspondência ou um resíduo mínimo (o resíduo mínimo significa melhor compressão para transmissão ou armazenamento), ou fornece sobrecargas mínimas de sinalização (os sobrecargas mínimas de sinalização 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 na otimização de taxa de distorção (rate distortion optimization, RDO), isto é, selecionar um modo de predição que fornece otimização de taxa de distorção mínima ou selecionar um modo de predição para a qual taxa de distorção relacionada pelo menos satisfaz um critério de seleção de modo de predição.
[00116] O seguinte descreve em detalhes o processamento de predição (por exemplo, realizado pela unidade de processamento de predição 260) e a seleção de modo (por exemplo, realizada pela unidade de seleção de modo 262) realizada por um exemplo do codificador 20.
[00117] Conforme descrito acima, o codificador 20 é configurado para determinar ou selecionar um modo de predição ideal ou ótimo a partir de um conjunto de modos de predição (predeterminados). O conjunto de modos de predição pode incluir, por exemplo, um modo de intrapredição e / ou um modo de interpredição.
[00118] Um conjunto de modos de intrapredição pode incluir 35 modos de intrapredição diferentes, por exemplo, modos não direcionais, como um modo DC (ou médio) e um modo planar, ou modos direcionais, como aqueles definidos em H.265, ou pode incluir 67 modos de intrapredição diferentes, por exemplo, modos não direcionais, como um modo DC (ou médio) e um modo planar, ou modos direcionais, tais como aqueles definidos em H.266 em desenvolvimento.
[00119] Em uma possível implementação, um conjunto de modos de interpredição depende de imagens de referência disponíveis (isto é, por exemplo, pelo menos algumas imagens decodificadas armazenadas no DPB 230, como descrito acima) e outros parâmetros de interpredição, por exemplo, depende se toda a imagem de referência ou apenas uma parte da imagem de referência, por exemplo, uma região de janela de pesquisa em torno de uma região do bloco atual, é usada para pesquisar um bloco de referência de correspondência ideal e / ou, por exemplo, depende de se a interpolação de pixel, como interpolação de meio pixel e / ou um quarto de pixel, é aplicada. O conjunto de modos de interpredição pode incluir, por exemplo, um modo de predição de vetor de movimento avançado (Advanced Motion Vector Prediction, AMVP) e um modo de mesclagem (merge). Durante a implementação específica, o conjunto de modos de interpredição pode incluir um modo de AMVP com base em um ponto de controle e um modo de mesclagem com base em um ponto de controle que são aprimorados nas modalidades da presente invenção. Em um exemplo, a unidade de intrapredição 254 pode ser configurada para realizar qualquer combinação de tecnologias de interpredição descritas abaixo.
[00120] Além dos modos de predição anteriores, um modo de salto e / ou um modo direto também pode ser aplicado nas modalidades da presente invenção.
[00121] A unidade de processamento de predição 260 pode ser ainda configurada para particionar o bloco de imagem 203 em partições de bloco menores ou sub-blocos, por exemplo, usando iterativamente particionamento de árvore quádrupla (quadtree, QT), particionamento de árvore binária (binary tree, BT), particionamento de árvore ternária (ternary tree, TT), ou qualquer combinação destes, e realizar, por exemplo, predição em cada uma das partições de bloco ou sub-blocos. A seleção de modo inclui a seleção de uma estrutura de árvore do bloco de imagem particionado 203 e a seleção de um modo de predição usado para cada uma das partições de bloco ou sub-blocos.
[00122] A unidade de interpredição 244 pode incluir uma unidade de estimativa de movimento (motion estimation, ME) (não mostrada na Figura 2) e uma unidade de compensação de movimento (motion compensation, MC) (não mostrada na Figura 2). A unidade de estimativa de movimento é configurada para receber ou obter o 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 anteriormente, por exemplo, um ou mais blocos reconstruídos de outras / diferentes imagens previamente decodificadas 231, para estimativa de movimento. Por exemplo, uma sequência de vídeo pode incluir a imagem atual e as imagens previamente decodificadas 231, ou em outras palavras, a imagem atual e as imagens previamente decodificadas 231 podem ser uma parte ou formar uma sequência de imagens que formam a sequência de vídeo.
[00123] Por exemplo, o codificador 20 pode ser configurado para selecionar um bloco de referência de uma pluralidade de blocos de referência de uma mesma imagem ou imagens diferentes em uma pluralidade de outras imagens e fornecer, para a unidade de estimativa de movimento (não mostrada na Figura 2), uma imagem de referência e / ou fornecer um deslocamento (um deslocamento espacial) entre uma localização (coordenadas X e Y) do bloco de referência e uma localização do bloco atual como um parâmetro de interpredição. O deslocamento também é conhecido como vetor de movimento (motion vector, MV).
[00124] A unidade de compensação de movimento é configurada para obter o parâmetro de interpredição, e realizar interpredição com base em ou usando o parâmetro de interpredição, para obter o bloco de interpredição 245.
Compensação de movimento realizada pela unidade de compensação de movimento (não mostrada em Figura 2) pode incluir buscar ou gerar o bloco de predição com base em um vetor de movimento / bloco determinado através da estimativa de movimento (possivelmente realizando interpolação em precisão de subpixel). A filtragem de interpolação pode gerar uma amostra de pixel adicional a partir de uma amostra de pixel conhecida, aumentando assim potencialmente uma quantidade de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Ao receber um vetor de movimento para uma PU do bloco de imagem atual, uma unidade de compensação de movimento 246 pode localizar um bloco de predição para o qual o vetor de movimento aponta em uma lista de imagens de referência. A unidade de compensação de movimento 246 pode ainda gerar elementos de sintaxe associados a um bloco e uma fatia de vídeo, para decodificar um bloco de imagem da fatia de vídeo pelo decodificador 30.
[00125] Especificamente, a unidade de interpredição 244 pode transmitir os elementos de sintaxe para a unidade de codificação de entropia 270 e os elementos de sintaxe incluem o parâmetro de interpredição (tal como informação de indicação de seleção de um modo de interpredição usado para predição do bloco atual após a travessia de uma pluralidade de modos de interpredição). Em um cenário de aplicação possível, se houver apenas um modo de interpredição, o parâmetro de interpredição pode alternativamente não ser transportado no elemento de sintaxe. Neste caso, o decodificador 30 pode realizar diretamente a decodificação em um modo de predição padrão. Pode ser entendido que a unidade de interpredição 244 pode ser configurada para realizar qualquer combinação de tecnologias de interpredição.
[00126] A unidade de intrapredição 254 é configurada para obter, por exemplo, receber, o bloco de imagem 203 (o bloco de imagem atual) e um ou mais blocos reconstruídos anteriormente, por exemplo, blocos vizinhos reconstruídos, de uma mesma imagem para intraestimativa. Por exemplo, o codificador 20 pode ser configurado para selecionar um modo de intrapredição a partir de uma pluralidade de modos de intrapredição (predeterminados).
[00127] Em uma modalidade, o codificador 20 pode ser configurado para selecionar o modo de intrapredição de acordo com um critério de otimização, por exemplo, com base em um resíduo mínimo (por exemplo, um modo de intrapredição fornecendo o bloco de predição 255 que é mais semelhante para o bloco de imagem atual 203) ou distorção de taxa mínima.
[00128] A unidade de intrapredição 254 é ainda configurada para determinar o bloco de intrapredição 255 com base, por exemplo, em um parâmetro de intrapredição no modo de intrapredição selecionado. Em qualquer caso, depois de selecionar um modo de intrapredição para um bloco, a unidade de intrapredição 254 é ainda configurada para fornecer um parâmetro de intrapredição, isto é, informação indicando o modo de intrapredição selecionado para o bloco, para a unidade de codificação de entropia 270. Em um exemplo, a unidade de intrapredição 254 pode ser configurada para realizar qualquer combinação de tecnologias de intrapredição.
[00129] Especificamente, a unidade de intrapredição
254 pode transmitir elementos de sintaxe para a unidade de codificação de entropia 270, e os elementos de sintaxe incluem o parâmetro de intrapredição (tal como informação de indicação de seleção de um modo de intrapredição usado para predição do bloco atual após travessia de uma pluralidade de modos de intrapredição). Em um possível cenário de aplicação, se houver apenas um modo de intrapredição, o parâmetro de intrapredição pode, alternativamente, não ser transportado no elemento de sintaxe. Neste caso, o decodificador 30 pode realizar diretamente a decodificação em um modo de predição padrão.
[00130] A unidade de codificação de entropia 270 é configurada para aplicar (ou evitar a aplicação) de um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (variable- length coding, VLC), um VLC adaptativa ao contexto (context- adaptive VLC, CAVLC), um esquema de codificação aritmética, codificação aritmética binária adaptativa ao contexto (context-adaptive binary arithmetic coding, CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (syntax-based context-adaptive binary arithmetic coding, SBAC), codificação de entropia de particionamento de intervalo de probabilidade (probability interval partitioning entropy, PIPE), ou outra metodologia ou técnica de codificação de entropia) em um ou todos os seguintes: o coeficiente residual quantizado 209, o parâmetro de interpredição, o parâmetro de intrapredição e / ou o parâmetro de filtro de loop, para obter dados de imagem codificados 21 que podem ser emitidos através de uma saída 272, por exemplo, na forma de um fluxo de bits codificado 21. O fluxo de bits codificado pode ser transmitido para o decodificador de vídeo 30, ou arquivado para posterior transmissão ou recuperação pelo decodificador de vídeo 30. A unidade de codificação de entropia 270 pode ainda ser configurada para codificar por entropia outro elemento de sintaxe para uma fatia de vídeo atual sendo codificada.
[00131] Outra variante estrutural do codificador de vídeo 20 pode ser usada para codificar um fluxo de vídeo. Por exemplo, um codificador não baseado em transformação 20 pode quantizar diretamente um sinal residual sem a unidade de processamento de transformada 206 para alguns blocos ou quadros. Em outra implementação, o codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade.
[00132] Especificamente, nas modalidades da presente invenção, o codificador 20 pode ser configurado para implementar um método de predição de vetor de movimento baseado em um modelo de movimento afim nas seguintes modalidades.
[00133] A Figura 3 é um diagrama de blocos esquemático / conceitual de um exemplo de um decodificador 30 para implementar uma modalidade da presente invenção. O decodificador de vídeo 30 é configurado para receber dados de imagem codificados (por exemplo, um fluxo de bits codificado) 21 codificados, por exemplo, pelo codificador 20, para obter uma imagem decodificada 331. Em um processo de decodificação, o decodificador de vídeo 30 recebe dados de vídeo do codificador de vídeo 20, por exemplo, um fluxo de bits de vídeo codificado que representa um bloco de imagem de uma fatia de vídeo codificada e um elemento de sintaxe associado.
[00134] No exemplo da Figura 3, o decodificador 30 inclui uma unidade de decodificação de 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 de loop 320, um buffer de imagens decodificadas 330 e uma unidade de processamento de predição
360. A unidade de processamento de predição 360 pode incluir uma unidade de interpredição 344, uma unidade de intrapredição 354 e uma unidade de seleção de modo 362. Em alguns exemplos, o decodificador de vídeo 30 pode realizar um processo de decodificação que é aproximadamente inverso ao processo de codificação descrito em relação ao codificador de vídeo 20 na Figura 2.
[00135] A unidade de decodificação de entropia 304 é configurada para realizar a decodificação de entropia nos dados de imagem codificados 21 para obter, por exemplo, um coeficiente quantizado 309 e / ou um parâmetro de codificação decodificado (não mostrado na Figura 3), por exemplo, qualquer um ou todos de um parâmetro de interpredição, um parâmetro de intrapredição, um parâmetro de filtro de loop e / ou outro elemento de sintaxe (que são decodificados). A unidade de decodificação de entropia 304 é ainda configurada para encaminhar o parâmetro de interpredição, o parâmetro de intrapredição e / ou o outro elemento de sintaxe para a unidade de processamento de predição 360. O decodificador de vídeo 30 pode receber elementos de sintaxe em um nível de fatia de vídeo e / ou um nível de bloco de vídeo.
[00136] A unidade de quantização inversa 310 pode ter a mesma função que a unidade de quantização inversa 210. A unidade de processamento de transformada inversa 312 pode ter a mesma função que a unidade de processamento de transformada inversa 212. A unidade de reconstrução 314 pode ter a mesma função que a unidade de reconstrução 214. O buffer 316 pode ter a mesma função que o buffer 216. O filtro de loop 320 pode ter a mesma função que o filtro de loop
220. O buffer de imagens decodificadas 330 pode ter a mesma função que o buffer de imagens decodificadas 230.
[00137] A unidade de processamento de predição 360 pode incluir a unidade de interpredição 344 e a unidade de intrapredição 354. A unidade de interpredição 344 pode se assemelhar à unidade de interpredição 244 em função, e a unidade de intrapredição 354 pode se assemelhar à unidade de intrapredição 254 em função. A unidade de processamento de predição 360 é geralmente 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 de entropia
304.
[00138] Quando a fatia de vídeo é codificada em uma fatia intracodificada (I), a unidade de intrapredição 354 da unidade de processamento de predição 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados de um bloco previamente decodificado de um quadro ou imagem atual. Quando o quadro de vídeo é codificado em uma fatia intercodificada (ou seja, B ou P), a unidade de interpredição 344 (por exemplo, uma unidade de compensação de movimento) da unidade de processamento de predição 360 é configurada para gerar o bloco de predição 365 para um bloco de vídeo da 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 de entropia
304. Para interpredição, o bloco de predição pode ser gerado a partir de uma das imagens de referência em uma lista de imagens 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 uma tecnologia de construção padrão com base em imagens de referência armazenadas no DPB 330.
[00139] A unidade de processamento de predição 360 é configurada para determinar as informações de predição para o bloco de vídeo da fatia de vídeo atual por analisar o vetor de movimento e o outro elemento de sintaxe, e usar as informações de predição para gerar o bloco de predição para o bloco de vídeo atual sendo decodificado. Em um exemplo da presente invenção, a unidade de processamento de predição 360 determina, usando alguns elementos de sintaxe recebidos, um modo de predição (por exemplo, intrapredição ou interpredição) para codificar o bloco de vídeo na fatia de vídeo, um tipo de fatia de interpredição (por exemplo, uma fatia B, uma fatia P ou uma fatia GPB), informações de construção de uma ou mais das listas de imagens de referência para a fatia, um vetor de movimento para cada bloco de vídeo intercodificado na fatia, um status de interpredição de cada bloco de vídeo codificado na fatia, e outras informações, para decodificar o bloco de vídeo na fatia de vídeo atual.
Em outro exemplo desta divulgação, os elementos de sintaxe recebidos pelo decodificador de vídeo 30 a partir de um fluxo de bits incluem elementos de sintaxe em um ou mais de um conjunto de parâmetros adaptativos (adaptive 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.
[00140] A unidade de quantização inversa 310 pode ser configurada para realizar a quantização inversa (ou seja, desquantização) em um coeficiente de transformada quantizado fornecido no fluxo de bits e decodificado pela unidade de decodificação de entropia 304. Um processo de quantização inversa pode incluir: usando 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 um grau de quantização inversa que deve ser aplicado.
[00141] A unidade de processamento de transformada inversa 312 é configurada para aplicar uma transformada inversa (por exemplo, um DCT inverso, uma transformada de inteiro inverso, ou um processo de transformada inversa conceitualmente semelhante) a um coeficiente de transformada, para gerar um bloco residual em um domínio de pixel.
[00142] A unidade de reconstrução 314 (por exemplo, o somador 314) é configurada para adicionar um bloco de transformada inversa 313 (ou seja, um bloco residual reconstruído 313) ao bloco de predição 365, por exemplo, adicionando 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.
[00143] A unidade de filtro de loop 320 (em um loop de codificação ou após um loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, para suavizar a transição de pixel ou melhorar a qualidade de vídeo. Em um exemplo, a unidade de filtro de loop 320 pode ser configurada para realizar qualquer combinação de tecnologias de filtragem descritas abaixo. A unidade de filtro de loop 320 se destina a representar um ou mais filtros de loop, como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (sample- adaptive offset, SAO) ou outro filtro, por exemplo, um filtro bilateral, um filtro de loop adaptativo (adaptive loop filter, ALF), um filtro de nitidez ou suavização ou um filtro colaborativo. Embora a unidade de filtro de loop 320 seja mostrada como um filtro de loop na Figura 3, em outra configuração, a unidade de filtro de loop 320 pode ser implementada como um pós-filtro.
[00144] Então, um bloco de vídeo decodificado 321 em um determinado quadro ou imagem é armazenado no buffer de imagens decodificadas 330 que armazena uma imagem de referência usada para compensação de movimento subsequente.
[00145] O decodificador 30 é configurado para, por exemplo, emitir a imagem decodificada 331 através de uma saída 332, para apresentação ou visualização a um usuário.
[00146] Outra variante do decodificador de vídeo 30 pode ser usada para decodificar um fluxo de bits compactado. Por exemplo, o decodificador 30 pode gerar um fluxo de vídeo de saída sem a unidade de filtro de loop 320. Por exemplo,
um decodificador não baseado em transformada 30 pode quantificar inversamente um sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para alguns blocos ou quadros. Em outra implementaçã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.
[00147] Especificamente, nas modalidades da presente invenção, o decodificador 30 é configurado para implementar um método de predição de vetor de movimento baseado em um modelo de movimento afim nas seguintes modalidades.
[00148] 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 da presente invenção. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades descritas neste relatório descritivo. 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 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.
[00149] O dispositivo de codificação de vídeo 400 inclui: uma porta de entrada 410 e uma unidade de recepção (Rx) 420 para receber dados; um processador, uma unidade lógica ou uma unidade de processamento central (CPU) 430 para processar dados; uma unidade de transmissor (Tx) 440 e uma porta de saída 450 para transmitir dados; e uma memória 460 para armazenar dados. O dispositivo de codificação de vídeo 400 pode incluir ainda um componente de conversão ótico-para-elétrico e um componente elétrico-para-ótico (EO) acoplado à porta de entrada 410, a unidade de recepção 420, a unidade de transmissor 440 e a porta de saída 450 para saída ou entrada de sinais óticos ou elétricos.
[00150] O processador 430 é implementado por hardware e software. O processador 430 pode ser implementado 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 a porta de entrada 410, a unidade de recepção 420, a unidade de transmissor 440, a porta de saída 450 e a memória 460. O processador 430 inclui 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 implementa as modalidades divulgadas neste relatório descritivo, para implementar o método de predição de vetor de movimento fornecido nas modalidades da presente invenção. Por exemplo, o módulo de codificação / decodificação 470 implementa, processa ou fornece várias operações de codificação. Portanto, o módulo de codificação / decodificação 470 melhora substancialmente as funções do dispositivo de codificação de vídeo 400 e afeta a transformada do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação / decodificação 470 é implementado como uma instrução armazenada na memória 460 e executada pelo processador 430.
[00151] A memória 460 inclui um ou mais discos,
unidades de fita e unidades de estado sólido, e pode ser usada como um dispositivo de armazenamento de dados em excesso, para armazenar programas quando tais programas são selecionados para execução e para armazenar instruções e dados que são lidos durante execução do programa. A memória 460 pode ser volátil e / ou não volátil, e pode ser uma memória somente de leitura (ROM), uma 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).
[00152] A Figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou dois do dispositivo de origem 12 e o dispositivo de destino 14 na Figura 1A de acordo com uma modalidade de exemplo. O aparelho 500 pode implementar as tecnologias neste pedido. O aparelho 500 configurado para implementar a predição de vetor de movimento pode estar na forma de um sistema de computação, incluindo uma pluralidade de dispositivos de computação, ou pode estar na forma de um único dispositivo de computação, como um telefone móvel, um tablet, um laptop, um notebook ou um computador desktop.
[00153] Um processador 502 no aparelho 500 pode ser uma unidade de processamento central. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo ou uma pluralidade de dispositivos que podem controlar ou processar informações e que existem ou serão desenvolvidos no futuro. Como mostrado na figura, embora as implementações divulgadas possam ser praticadas usando um único processador, como o processador 502, vantagens em velocidade e eficiência podem ser alcançadas usando mais de um processador.
[00154] Em uma implementação, uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente de leitura (Read-Only Memory, ROM) ou um dispositivo de memória de acesso aleatório (random access memory, RAM). Qualquer outro tipo adequado de dispositivo de armazenamento pode ser usado como a memória 504. A memória 504 pode incluir código e dados 506 acessados pelo processador 502 através de um barramento 512. A memória 504 pode incluir ainda um sistema operacional 508 e um programa de aplicação 510. O programa de aplicação 510 inclui pelo menos um programa que permite ao processador 502 executar o método descrito neste relatório descritivo. Por exemplo, o programa de aplicação 510 pode incluir aplicações 1 a N e as aplicações 1 a N incluem ainda uma aplicação de codificação de vídeo que executa o método descrito neste relatório descritivo. O aparelho 500 pode ainda incluir uma memória adicional na forma de uma memória secundária 514. A memória secundária 514 pode ser, por exemplo, um cartão de memória usado em conjunto com um dispositivo de computação móvel. Como uma sessão de comunicação de vídeo pode incluir uma grande quantidade de informações, as informações podem ser total ou parcialmente armazenadas na memória secundária 514 e carregadas na memória 504 para processamento conforme necessário.
[00155] O aparelho 500 pode incluir ainda um ou mais dispositivos de saída, por exemplo, uma tela de exibição
518. Em um exemplo, a tela de exibição 518 pode ser uma tela de exibição sensível ao toque que combina uma tela de exibição com um elemento sensível ao toque que é operável para detectar uma entrada de toque. A tela de exibição 518 pode ser acoplada ao processador 502 através do barramento
512. Além da tela de exibição 518, outro dispositivo de saída que permite a um usuário programar o aparelho 500 ou usar o aparelho 500 pode ainda ser fornecido, ou outro dispositivo de saída pode ser fornecido como uma alternativa à tela de exibição 518. Quando o dispositivo de saída é ou inclui uma tela de exibição, a tela de exibição pode ser implementada de diferentes maneiras, incluindo uma tela de exibição de cristal líquido (liquid crystal display, LCD), uma tela de exibição de tubo de raios catódicos (cathode-ray tube, CRT), e uma tela de exibição de plasma ou tela de exibição de diodo emissor de luz (light-emitting diode, LED), como tela de exibição de LED orgânico (organic LED, OLED).
[00156] O aparelho 500 pode ainda incluir ou ser conectado a um dispositivo de detecção de imagem 520. O dispositivo de detecção de imagem 520 é, por exemplo, uma câmera ou qualquer outro dispositivo de detecção de imagem 520 que pode detectar uma imagem e que existe ou será desenvolvido no futuro. A imagem é, por exemplo, uma imagem de um usuário que opera o aparelho 500. O dispositivo de detecção de imagem 520 pode ser colocado diretamente de frente para o usuário que opera o aparelho 500. Em um exemplo, uma localização e um eixo ótico do dispositivo de detecção de imagem 520 podem ser configurados, de modo que um campo de visão do dispositivo de detecção de imagem 520 inclua uma região adjacente à tela de exibição 518 e a tela de exibição 518 que pode ser vista a partir da região.
[00157] O aparelho 500 pode ainda incluir ou ser conectado a um dispositivo de detecção de som 522. O dispositivo de detecção de som 522 é, por exemplo, um microfone ou qualquer outro dispositivo de detecção de som que pode detectar um som perto do aparelho 500 e que existe ou será desenvolvido no futuro. O dispositivo de detecção de som 522 pode ser colocado diretamente de frente para o usuário que opera o aparelho 500 e pode ser configurado para receber um som, por exemplo, uma voz ou outro som, feito pelo usuário quando o usuário opera o aparelho 500.
[00158] Embora o processador 502 e a memória 504 do aparelho 500 estejam representados na Figura 5 como sendo integrados em uma única unidade, outra configuração pode ser usada alternativamente. O funcionamento do processador 502 pode ser distribuído em uma pluralidade de máquinas (cada máquina tem um ou mais processadores) que podem ser diretamente acopladas ou distribuídas em uma região local ou outra rede. A memória 504 pode ser distribuída em uma pluralidade de máquinas. Por exemplo, a memória 504 é uma memória baseada em rede ou memórias em uma pluralidade de máquinas que executam o aparelho 500. Embora representado como um único barramento neste documento, o barramento 512 do aparelho 500 pode incluir uma pluralidade de barramentos. Além disso, a memória secundária 514 pode ser diretamente acoplada a outro componente do aparelho 500 ou pode ser acessada por meio de uma rede. Além disso, a memória secundária 514 pode incluir uma única unidade integrada, por exemplo, um cartão de memória ou uma pluralidade de unidades, por exemplo, uma pluralidade de cartões de memória. Portanto, o aparelho 500 pode ser implementado em uma pluralidade de configurações.
[00159] Para entender melhor as soluções técnicas nas modalidades da presente invenção, o que segue descreve ainda um modo de interpredição, um modelo de movimento não translacional, um método de predição de vetor de movimento de ponto de controle herdado, e um método de predição de vetor de movimento de ponto de controle construído nas modalidades da presente invenção.
[00160] (1) Modo de interpredição. Em HEVC, são usados dois modos de interpredição: um modo de predição de vetor de movimento avançado (advanced motion vector prediction, AMVP) e um modo de mesclagem (merge).
[00161] No modo de AMVP, blocos codificados espacialmente ou temporalmente vizinhos (denotados como blocos vizinhos) de um bloco atual são primeiro atravessados. Uma lista de vetores de movimento candidatos (que também pode ser referida como uma lista de candidatos de informações de movimento) é construída com base nas informações de movimento dos blocos vizinhos. Em seguida, um vetor de movimento ideal é determinado na lista de vetores de movimento candidatos com base nos custos de distorção de taxa, e as informações de movimento candidatas com custos de distorção de taxa mínimos são usadas como um preditor de vetor de movimento (motion vector predictor, MVP) do bloco atual. As localizações e a ordem de travessia dos blocos vizinhos são predefinidas. Os custos de distorção de taxa são obtidos por cálculo de acordo com uma fórmula (1), onde J representa os custos de distorção de taxa custos de RD, SAD é a soma das diferenças absolutas (sum of absolute differences, SAD) entre um valor de pixel original e um valor de pixel previsto obtido através da estimativa de movimento usando um preditor de vetor de movimento candidato, R representa uma taxa de bits, e λ representa um multiplicador de Lagrange. Um lado de codificador transfere um valor de índice do preditor de vetor de movimento selecionado na lista de vetores de movimento candidatos e um valor de índice de quadro de referência para um lado de decodificador. Além disso, pesquisa de movimento é realizada em um domínio vizinho centrado em 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 o MVP e o vetor de movimento real para o lado de decodificador; J = SAD + λR (1).
[00162] No modo de mesclagem, uma lista de vetores de movimento candidatos é primeiro construída com base nas informações de movimento de blocos codificados espacialmente ou temporalmente vizinhos de um bloco atual. Em seguida, os custos de distorção de taxa são calculados para determinar as informações de movimento ideais na lista de vetores de movimento candidatos como informações de movimento do bloco atual e um valor de índice (denotado como um índice de mesclagem, o mesmo abaixo) de uma localização das informações de movimento ideais na lista de vetores de movimento candidatos é transferido para o lado de decodificador. As informações de movimento candidatas espaciais e informações de movimento candidatas temporais do bloco atual são mostradas na Figura 6. As informações de movimento candidatas espaciais são de cinco blocos espacialmente vizinhos (A0, A1, B0, B1 e B2). Se um bloco vizinho não estiver disponível (o bloco vizinho não existe, ou o bloco vizinho não está codificado, ou um modo de predição usado para o bloco vizinho não é o modo de interpredição), as informações de movimento do bloco vizinho não são adicionadas à lista de vetores de movimento candidatos. A informações de movimento candidatas temporais do bloco atual são obtidas após um MV de um bloco colocalizado em um quadro de referência ser escalado com base nas 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 é determinado primeiro. Se o bloco não estiver disponível, um bloco no local C é selecionado.
[00163] Semelhante ao modo de AMVP, no modo de mesclagem, as localizações e uma ordem de travessia dos blocos vizinhos também são predefinidas. Além disso, as localizações e a ordem de travessia dos blocos vizinhos podem ser diferentes em modos diferentes.
[00164] Pode ser aprendido que uma lista de vetores de movimento candidatos precisa ser mantida tanto no modo de AMVP quanto no modo de mesclagem. Antes que novas informações de movimento sejam adicionadas à lista de candidatos a cada vez, se as mesmas informações de movimento já existem na lista é verificado primeiro. Se as mesmas informações de movimento existirem na lista, as informações de movimento não serão adicionadas à lista. Este processo de verificação é conhecido como poda da lista de vetores de movimento candidatos. A poda da lista é para evitar as mesmas informações de movimento na lista, para evitar o cálculo de custo de distorção de taxa redundante.
[00165] Durante a interpredição em HEVC, as mesmas informações de movimento são usadas para todos os pixels em um bloco de codificação (em outras palavras, o movimento de todos os pixels no bloco de codificação é consistente) e, em seguida, a compensação de movimento é realizada com base nas informações de movimento, para obter valores previstos dos pixels no bloco de codificação. No entanto, no bloco de codificação, nem todos os pixels têm a mesma característica de movimento. Usar as mesmas informações de movimento pode resultar em predição de compensação de movimento imprecisa e mais informações residuais.
[00166] Em outras palavras, em um padrão de codificação de vídeo existente, a estimativa de movimento de combinação de blocos com base em um modelo de movimento translacional é usada. No entanto, no mundo real, há uma variedade de movimentos. Muitos objetos, por exemplo, um objeto giratório, uma montanha-russa girando em diferentes direções, fogos de artifício e algumas acrobacias em filmes, não estão em movimento translacional. Se esses objetos em movimento, especialmente aqueles em um cenário UGC, forem codificados usando uma tecnologia de compensação de movimento de bloco com base no modelo de movimento translacional no padrão de codificação existente, a eficiência de codificação será bastante afetada. Portanto, o modelo de movimento não translacional, por exemplo, um modelo de movimento afim, é introduzido para melhorar ainda mais a eficiência de codificação.
[00167] Com base nisso, em termos de modelos de movimento diferentes, o modo de AMVP pode ser dividido em um modo de AMVP baseado em modelo translacional e um modo de AMVP baseado em modelo não translacional, e o modo de mesclagem pode ser dividido em um modo de AMVP baseado em modelo translacional e um modo de mesclagem baseado em modelo de movimento não translacional.
[00168] (2) Modelo de movimento não translacional. Na predição baseada em modelo de movimento não translacional, um mesmo modelo de movimento é usado em um lado de codificador e um lado de decodificador para derivar informações de movimento de cada subunidade de compensação de movimento em um bloco atual, e a compensação de movimento é realizada com base nas informações de movimento da subunidade de compensação de movimento para obter um bloco de predição, de modo a melhorar a eficiência de predição. A subunidade de compensação de movimento nas modalidades da presente invenção pode ser um pixel ou um bloco de pixel que é obtido através do particionamento de acordo com um método específico e cujo tamanho é N1 × N2, onde N1 e N2 são números inteiros positivos, e N1 pode ser igual a N2 ou pode não ser igual a N2.
[00169] Modelos de movimento não translacionais comuns incluem um modelo de movimento afim de 4 parâmetros e um modelo de movimento afim de 6 parâmetros e, em um possível cenário de aplicação, também há um modelo bilinear de 8 parâmetros. As descrições são fornecidas separadamente abaixo.
[00170] O modelo de movimento afim de 4 parâmetros é mostrado na seguinte fórmula (2): 𝑣𝑥 = 𝑎 + 𝑎 𝑥 + 𝑎 𝑦 𝑣𝑦 = 𝑎 − 𝑎 𝑥 + 𝑎 𝑦 (2).
[00171] O modelo de movimento afim de 4 parâmetros pode ser representado por vetores de movimento de dois pixels e coordenadas dos dois pixels em relação a um pixel superior esquerdo de um bloco atual. Um pixel usado para representar um parâmetro de modelo de movimento é conhecido como um ponto de controle. Se os pixels no canto superior esquerdo (0, 0) e no canto superior direito (W, 0) forem usados como pontos de controle, vetores de movimento (vx0, vy0) e (vx1, vy1) dos pontos de controle no canto superior esquerdo e o canto superior direito do bloco atual são determinados primeiro. Em seguida, as informações de movimento de cada subunidade de compensação de movimento do bloco atual são obtidas de acordo com a seguinte fórmula (3), onde (x, y) são as coordenadas da subunidade de compensação de movimento em relação ao pixel superior esquerdo do bloco atual, e W representa a largura do bloco atual; 𝑣𝑥 = 𝑥− 𝑦 + 𝑣𝑥 (3). 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[00172] O modelo de movimento afim de 6 parâmetros é mostrado na seguinte fórmula (4): 𝑣𝑥 = 𝑎 + 𝑎 𝑥 + 𝑎 𝑦 𝑣𝑦 = 𝑎 + 𝑎 𝑥 + 𝑎 𝑦 (4).
[00173] O modelo de movimento afim de 6 parâmetros pode ser representado por vetores de movimento de três pixels e coordenadas dos três pixels em relação a um pixel superior esquerdo de um bloco atual. Se os pixels no canto superior esquerdo (0, 0), no canto superior direito (W, 0) e no canto inferior esquerdo (0, H) forem usados como pontos de controle, vetores de movimento (vx0, vy0), (vx1, vy1) e (vx2, vy2) dos pontos de controle na parte superior esquerda, no canto superior direito e no canto inferior esquerdo do bloco atual são determinados primeiro. Então, as informações de movimento de cada subunidade de compensação de movimento do bloco atual são obtidas de acordo com a seguinte fórmula (5), onde (x, y) são as coordenadas da subunidade de compensação de movimento em relação ao pixel superior esquerdo do bloco atual, e W e H representam respectivamente a largura e a altura do bloco atual;
𝑣𝑥 = 𝑥+ 𝑦 + 𝑣𝑥 (5). 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[00174] O modelo bilinear de 8 parâmetros é mostrado na seguinte fórmula (6): 𝑣𝑥 = 𝑎 + 𝑎 𝑥 + 𝑎 𝑦 + 𝑎 𝑥𝑦 𝑣𝑦 = 𝑎 + 𝑎 𝑥 + 𝑎 𝑦 + 𝑎 𝑥𝑦 (6).
[00175] O modelo bilinear de 8 parâmetros pode ser representado por vetores de movimento de quatro pixels e coordenadas dos quatro pixels em relação a um pixel superior esquerdo de um bloco de codificação atual. Se os pixels no canto superior esquerdo (0, 0), o canto superior direito (W, 0), o canto inferior esquerdo (0, H) e o canto inferior direito (W, H) são usados como pontos de controle, vetores de movimento (vx0, vy0), (vx1, vy1), (vx2, vy2) e (vx3, vy3) dos pontos de controle no canto superior esquerdo, canto superior direito, canto inferior esquerdo e o canto inferior direito do bloco de codificação atual são determinados primeiro. Então, as informações de movimento de cada subunidade de compensação de movimento do bloco de codificação atual são derivadas de acordo com a seguinte fórmula (7), onde (x, y) são coordenadas da subunidade de compensação de movimento em relação ao pixel superior esquerdo do bloco de codificação atual, e W e H representam respectivamente a largura e a altura do bloco de codificação atual; 𝑣 = 𝑥+ 𝑦+ 𝑦+𝑣 (7). 𝑣 = 𝑥+ 𝑦+ 𝑦+𝑣
[00176] Um bloco de codificação previsto usando um modelo de movimento afim também pode ser referido como um bloco de codificação afim. Pode ser aprendido a partir da descrição anterior que o modelo de movimento afim está diretamente relacionado às informações de movimento de um ponto de controle do bloco de codificação afim.
[00177] Normalmente, as informações de movimento de ponto de controle do bloco de codificação afim podem ser obtidas em um modo de AMVP baseado em modelo de movimento afim ou um modo de mesclagem baseado em modelo de movimento afim. Além disso, no modo de AMVP baseado em modelo de movimento afim ou no modo de mesclagem baseado em modelo de movimento afim, as informações de movimento de ponto de controle do bloco de codificação atual podem ser obtidas de acordo com 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. O seguinte descreve melhor os dois métodos.
[00178] (3) Método de predição de vetor de movimento de ponto de controle herdado. No método de predição de vetor de movimento de ponto de controle herdado, um vetor de movimento de ponto de controle candidato de um bloco atual é determinado usando um modelo de movimento de um bloco de codificação afim codificado vizinho do bloco atual.
[00179] Um bloco atual mostrado na Figura 7 é usado como exemplo. Blocos de localização vizinha do bloco atual são atravessados na ordem especificada, por exemplo, A1 → B1 → B0 → A0 → B2, para encontrar um bloco de codificação afim no qual um bloco de localização vizinha do bloco atual está localizado, e obter informações de movimento de um ponto de controle do bloco de codificação afim. Além disso, um vetor de movimento de ponto de controle (para um modo de mesclagem) ou um preditor de vetor de movimento de ponto de controle (para um modo de AMVP) é derivado para o bloco atual usando um modelo de movimento construído com base nas informações de movimento de ponto de controle do bloco de codificação afim. A ordem A1 → B1 → B0 → A0 → B2 é apenas usada como exemplo. Uma ordem de outra combinação também é aplicável às modalidades da presente invenção. Além disso, os blocos de localização vizinha não estão limitados a A1, B1, B0, A0 e B2. O bloco de localização vizinha pode ser um pixel, ou pode ser um bloco de pixel que tem um tamanho predefinido e que é obtido através do particionamento de acordo com um método específico, por exemplo, um bloco de 4 x 4 pixels, um bloco de 4 x 2 pixels ou um bloco de pixels de outro tamanho. Isso não é limitado. O bloco de codificação afim é um bloco codificado que é vizinho ao bloco atual e que é previsto usando o modelo de movimento afim em uma fase de codificação (que também pode ser brevemente referido como um bloco de codificação afim vizinho).
[00180] O seguinte usa A1 mostrado na Figura 7 como um exemplo para descrever um processo de determinação do vetor de movimento de ponto de controle candidato do bloco atual. Outros casos são deduzidos por analogia.
[00181] Se um bloco de codificação em que A1 está localizado é um bloco de codificação afim de 4 parâmetros (isto é, o bloco de codificação afim é previsto usando um modelo de movimento afim de 4 parâmetros), um vetor de movimento (vx4, vy4) do canto superior esquerdo (x4, y4) do bloco de codificação afim e um vetor de movimento (vx5, vy5) do canto superior direito (x5, y5) do bloco de codificação afim são obtidos.
[00182] Em seguida, um vetor de movimento (vx0, vy0) do canto superior esquerdo (x0, y0) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (8): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 ) − × (𝑦 − 𝑦 ) ( ) ( ) (8). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 ) + × (𝑦 − 𝑦 )
[00183] Um vetor de movimento (vx1, vy1) do canto superior direito (x1, y1) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (9): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 ) − × (𝑦 − 𝑦 ) ( ) ( ) (9). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 ) + × (𝑦 − 𝑦 )
[00184] Uma combinação do vetor de movimento (vx0, vy0) do canto superior esquerdo (x0, y0) do bloco atual e o vetor de movimento (vx1, vy1) do canto superior direito (x1, y1) do bloco atual que são obtidos com base no bloco de codificação afim no qual A1 está localizado é o vetor de movimento de ponto de controle candidato do bloco atual.
[00185] Se um bloco de codificação em que A1 está localizado é um bloco de codificação afim de 6 parâmetros (isto é, o bloco de codificação afim é previsto usando um modelo de movimento afim de 6 parâmetros), um vetor de movimento (vx4, vy4) do canto superior esquerdo (x4, y4) do bloco de codificação afim, um vetor de movimento (vx5, vy5) do canto superior direito (x5, y5) do bloco de codificação afim e um vetor de movimento (vx6, vy6) do canto inferior esquerdo (x6, y6) do bloco de codificação afim são obtidos.
[00186] Em seguida, um vetor de movimento (vx0, vy0) do canto superior esquerdo (x0, y0) do bloco atual é obtido através do cálculo de acordo com a seguinte fórmula (10): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 ) + × (𝑦 − 𝑦 ) ( ) ( ) (10). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 ) + × (𝑦 − 𝑦 )
[00187] Um vetor de movimento (vx1, vy1) do canto superior direito (x1, y1) do bloco atual é obtido através do cálculo de acordo com a seguinte fórmula (11): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 ) + × (𝑦 − 𝑦 ) ( ) ( ) (11). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 ) + × (𝑦 − 𝑦 )
[00188] Um vetor de movimento (vx2, vy2) do canto inferior esquerdo (x2, y2) do bloco atual é obtido através do cálculo de acordo com a seguinte fórmula (12): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 ) + × (𝑦 − 𝑦 ) ( ) ( ) (12). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 ) + × (𝑦 − 𝑦 )
[00189] Uma combinação do vetor de movimento (vx0, vy0) do canto superior esquerdo (x0, y0) do bloco atual, o vetor de movimento (vx1, vy1) do canto superior direito (x1, y1) do bloco atual, e o vetor de movimento (vx2, vy2) do canto inferior esquerdo (x2, y2) do bloco atual que são obtidos com base no bloco de codificação afim no qual A1 está localizado é o vetor de movimento de ponto de controle candidato do bloco atual.
[00190] Deve ser notado que outro modelo de movimento, localização candidata e ordem de pesquisa e travessia também são aplicáveis às modalidades da presente invenção. Os detalhes não são descritos nas modalidades da presente invenção.
[00191] Deve ser notado que um método para representar modelos de movimento de um bloco de codificação vizinho e um bloco de codificação atual usando outros pontos de controle também é aplicável às modalidades da presente invenção. Os detalhes não são descritos aqui.
[00192] (4) Método de predição de vetor de movimento de ponto de controle construído (constructed control point motion vector). No método de predição de vetor de movimento de ponto de controle construído, vetores de movimento de blocos codificados vizinhos de um ponto de controle de um bloco atual são combinados em um vetor de movimento do ponto de controle do bloco de codificação afim atual, e não há necessidade de considerar se os blocos codificados vizinhos são blocos de codificação afins. Métodos de predição de vetor de movimento de ponto de controle construídos em diferentes modos de predição (um modo de AMVP baseado em modelo de movimento afim e um modo de mesclagem baseado em modelo de movimento afim) são diferentes e são descritos separadamente abaixo.
[00193] Um método de predição de vetor de movimento de ponto de controle construído com base no modo de AMVP baseado em modelo de movimento afim é primeiro descrito.
[00194] A Figura 8 é usado como um exemplo para descrever o método de predição de vetor de movimento de ponto de controle construído, para determinar vetores de movimento do canto superior esquerdo e do canto superior direito de um bloco atual usando informações de movimento de um bloco codificado vizinho do bloco de codificação atual. Deve ser notado que a Figura 8 é apenas um exemplo.
[00195] Se o bloco atual é um bloco de codificação afim de 4 parâmetros (isto é, o bloco atual é previsto usando um modelo de movimento afim de 4 parâmetros), um vetor de movimento de um bloco codificado A2, B2 ou B3 vizinho ao canto esquerdo pode ser usado como um vetor de movimento candidato do vetor de movimento do canto superior esquerdo do bloco atual, e um vetor de movimento de um bloco codificado B1 ou B0 vizinho ao canto superior direito pode ser usado como um vetor de movimento candidato do vetor de movimento do canto superior direito do bloco atual. Os vetores de movimento candidatos do canto superior esquerdo e do canto superior direito são combinados para constituir uma pluralidade de 2-tuplas. Vetores de movimento, de dois blocos codificados, incluídos em uma 2-tupla podem ser usados como vetores de movimento de ponto de controle candidatos do bloco atual. Para a pluralidade de 2-tuplas, consulte o seguinte (13A): {𝑣 , 𝑣 }, {𝑣 , 𝑣 }, {𝑣 , 𝑣 }, {𝑣 , 𝑣 }, {𝑣 , 𝑣 }, {𝑣 , 𝑣 } (13A).
[00196] Aqui, vA2 representa o vetor de movimento de A2, vB1 representa o vetor de movimento de B1, v_B0 representa o vetor de movimento de B0, vB2 representa o vetor de movimento de B2 e vB3 representa o vetor de movimento de B3.
[00197] Se o bloco atual for um bloco de codificação afim de 6 parâmetros (isto é, o bloco atual é previsto usando um modelo de movimento afim de 6 parâmetros), um vetor de movimento de um bloco codificado A2, B2 ou B3 vizinho ao canto esquerdo pode ser usado como um vetor de movimento candidato do vetor de movimento do canto superior esquerdo do bloco atual, um vetor de movimento de um bloco codificado B1 ou B0 vizinho ao canto superior direito pode ser usado como um vetor de movimento candidato do vetor de movimento do canto superior direito do bloco atual, e um vetor de movimento de um bloco codificado A0 ou A1 vizinho ao canto inferior esquerdo pode ser usado como um vetor de movimento candidato de um vetor de movimento do canto inferior esquerdo do bloco atual. Os vetores de movimento candidatos do canto superior esquerdo, do canto superior direito e do canto inferior esquerdo são combinados para constituir uma pluralidade de tripletos. Vetores de movimento, de três blocos codificados, incluídos em um tripleto podem ser usados como vetores de movimento de ponto de controle candidatos do bloco atual. Para a pluralidade de tripletos, consulte as seguintes fórmulas (13B) e (13C): {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 } (13B) {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 }, {𝑣 , 𝑣 , 𝑣 } (13C).
[00198] Aqui, vA2 representa o vetor de movimento de A2, vB1 representa o vetor de movimento de B1, v_B0 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.
[00199] Deve ser notado que outro método de combinação de vetor de movimento de ponto de controle também é aplicável às modalidades da presente invenção e os detalhes não são descritos neste documento.
[00200] Deve ser notado que um método para representar modelos de movimento de um bloco de codificação vizinho e um bloco de codificação atual usando outros pontos de controle também é aplicável às modalidades da presente invenção. Os detalhes não são descritos aqui.
[00201] Um método de predição de vetor de movimento de ponto de controle construído com base no modo de mesclagem baseado em modelo de movimento afim é descrito abaixo.
[00202] A Figura 9 é usada como um exemplo para descrever o método de predição de vetor de movimento de ponto de controle construído, para determinar vetores de movimento do canto superior esquerdo e do canto superior direito de um bloco atual usando informações de movimento de um bloco codificado vizinho do bloco de codificação atual. Deve ser notado que a Figura 9 é apenas um exemplo.
[00203] Como mostrado na Figura 9, CPk (k = 1, 2, 3 ou 4) representa o 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 prever CP1, CP2 ou CP3. T é uma localização temporal vizinha do bloco atual e é usada para prever CP4. Supõe-se que as 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. Neste caso, as informações de movimento de cada ponto de controle do bloco atual são obtidas na seguinte ordem:
1. Para CP1, uma ordem de verificação é B2 → A2 → B3. Se B2 estiver disponível, as informações de movimento de B2 serão usadas. Se B2 não estiver disponível, A2 e B3 são verificados. Se as informações de movimento de todas as três localizações não estiverem disponíveis, as informações de movimento do CP1 não podem ser obtidas.
[00204] 2. Para CP2, uma ordem de verificação é B0 → B1. Se B0 estiver disponível, as informações de movimento de B0 são usadas para CP2. Se B0 não estiver disponível, B1 é verificado. Se as informações de movimento de ambas as localizações não estiverem disponíveis, as informações de movimento do CP2 não podem ser obtidas.
[00205] 3. Para CP3, uma ordem de verificação é A0 → A1.
[00206] 4. Para CP4, as informações de movimento de T são usadas.
[00207] Aqui, o fato de X estar disponível significa que um bloco em uma localização X (X é A0, A1, A2, B0, B1, B2, B3 ou T) já está codificado e um modo de interpredição é usado para o bloco. Caso contrário, o local X não estará disponível. Deve ser notado que outro método para obter informações de movimento de ponto de controle também é aplicável às modalidades da presente invenção. Os detalhes não são descritos aqui.
[00208] Em seguida, as informações de movimento de ponto de controle do bloco atual são combinadas para obter informações de movimento de ponto de controle construído.
[00209] Se o modelo de movimento afim de 4 parâmetros for usado para o bloco atual, as informações de movimento de dois pontos de controle do bloco atual são combinadas para constituir uma 2-tupla, para construir o modelo de movimento afim de 4 parâmetros. Uma combinação dos dois pontos de controle pode ser {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3} ou {CP3, CP4}. Por exemplo, um modelo de movimento afim de 4 parâmetros construído usando uma 2-tupla incluindo os pontos de controle CP1 e CP2 pode ser denotado como Afim (CP1, CP2).
[00210] Se o modelo de movimento afim de 6 parâmetros for usado para o bloco atual, as informações de movimento de três pontos de controle do bloco atual são combinadas para constituir um tripleto, para construir o modelo de movimento afim de 6 parâmetros. Uma combinação dos três pontos de controle pode ser {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4} ou {CP1, CP3, CP4}. Por exemplo, um modelo de movimento afim de 6 parâmetros construído usando um tripleto incluindo os pontos de controle CP1, CP2 e CP3 pode ser denotado como Afim (CP1, CP2, CP3).
[00211] Se um modelo bilinear de 8 parâmetros é usado para o bloco atual, as informações de movimento de quatro pontos de controle do bloco atual são combinadas para constituir um quádruplo, para construir o modelo bilinear de 8 parâmetros. Um modelo bilinear de 8 parâmetros construído usando um quádruplo incluindo os pontos de controle CP1, CP2, CP3 e CP4 é denotado como Bilinear (CP1, CP2, CP3, CP4).
[00212] Nas modalidades da presente invenção, para facilidade de descrição, uma combinação de informações de movimento de dois pontos de controle (ou dois blocos codificados) é referida como uma 2-tupla para abreviar, uma combinação de informações de movimento de três pontos de controle (ou três blocos codificados) é referida como um tripleto para abreviar, e uma combinação de informações de movimento de quatro pontos de controle (ou quatro blocos codificados) é referida como um quádruplo para abreviar.
[00213] Esses modelos são atravessados em uma ordem predefinida. Se as informações de movimento de um ponto de controle correspondente a um modelo de combinação não estiverem disponíveis, considera-se que o modelo não está disponível. Se as informações de movimento de um ponto de controle correspondente a um modelo de combinação estiverem disponíveis, um índice de quadro de referência do modelo é determinado e um vetor de movimento do ponto de controle é dimensionado. Se as informações de movimento de todos os pontos de controle após o dimensionamento forem consistentes, o modelo é inválido. Se for determinado que todas as informações de movimento dos 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 de candidatos de informações de movimento.
[00214] Um método para dimensionar um vetor de movimento de ponto de controle é mostrado na seguinte fórmula (14): MV = × 𝑀𝑉 (14).
[00215] Aqui, CurPoc representa um POC de um quadro atual, DesPoc representa um POC de um quadro de referência de um bloco atual, SrcPoc representa um POC de um quadro de referência de um ponto de controle, MVs representa um vetor de movimento obtido por meio de escalonamento, e MV representa um vetor de movimento do ponto de controle.
[00216] Deve ser notado que diferentes combinações de pontos de controle podem ser convertidas em pontos de controle em uma mesma localização.
[00217] 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} após a conversão. Um método de conversão é: substituir um vetor de movimento e informações de coordenadas de um ponto de controle na fórmula anterior (2), para obter um parâmetro de modelo; e então substituir as informações de coordenadas de {CP1, CP2} na fórmula anterior (3), para obter os vetores de movimento de CP1 e CP2.
[00218] Mais diretamente, a conversão pode ser realizada de acordo com as seguintes fórmulas (15) a (23), onde W representa a largura do bloco atual, e H representa a altura do bloco atual. Nas fórmulas (15) a (23), (vx0, vy0)
representa o vetor de movimento de CP1, (vx1, vy1) representa o vetor de movimento de CP2, (vx2, vy2) representa o vetor de movimento de CP3 e (vx3, vy3) representa o vetor de movimento de CP4.
[00219] {CP1, CP2} pode ser convertido em {CP1, CP2, CP3} de acordo com a seguinte fórmula (15). Em outras palavras, o vetor de movimento de CP3 em {CP1, CP2, CP3} pode ser determinado de acordo com a fórmula (15): 𝑣𝑥 = − 𝐻 + 𝑣𝑥 (15). 𝑣𝑦 = + 𝐻 + 𝑣𝑦
[00220] {CP1, CP3} pode ser convertido em {CP1, CP2} ou {CP1, CP2, CP3} de acordo com a seguinte fórmula (16): 𝑣𝑥 = + 𝑊 + 𝑣𝑥 (16). 𝑣𝑦 = − 𝑊 + 𝑣𝑦
[00221] {CP2, CP3} pode ser convertido em {CP1, CP2} ou {CP1, CP2, CP3} de acordo com a seguinte fórmula (17): 𝑣𝑥 = ∗ ∗ 𝑊∗𝑊− ∗ ∗ 𝐻 ∗ 𝑊 + 𝑣𝑥 (17). 𝑣𝑦 = ∗ ∗ 𝑊 ∗ 𝑊 + ∗ ∗ 𝐻 ∗ 𝑊 + 𝑣𝑦
[00222] {CP1, CP4} pode ser convertido em {CP1, CP2} ou {CP1, CP2, CP3} de acordo com a seguinte fórmula (18) ou (19): 𝑣𝑥 = ∗ ∗ 𝑊∗𝑊+ ∗ ∗ 𝐻 ∗ 𝑊 + 𝑣𝑥 (18) 𝑣𝑦 = ∗ ∗ 𝑊∗𝑊− ∗ ∗ 𝐻 ∗ 𝑊 + 𝑣𝑦 𝑣𝑥 = ∗ ∗ 𝐻∗𝐻− ∗ ∗ 𝐻 ∗ 𝑊 + 𝑣𝑥 (19). 𝑣𝑦 = ∗ ∗ 𝑊∗𝐻+ ∗ ∗ 𝐻 ∗ 𝐻 + 𝑣𝑦
[00223] {CP2, CP4} pode ser convertido em {CP1, CP2} de acordo com a seguinte fórmula (20), e {CP2, CP4} pode ser convertido em {CP1, CP2, CP3} de acordo com as seguintes fórmulas (20) e (21): 𝑣𝑥 = − 𝑊 + 𝑣𝑥 (20) 𝑣𝑦 = + 𝑊 + 𝑣𝑦 𝑣𝑥 = − 𝑊 + 𝑣𝑥 (21). 𝑣𝑦 = + 𝑊 + 𝑣𝑦
[00224] {CP3, CP4} pode ser convertido em {CP1, CP2} de acordo com a seguinte fórmula (22), e {CP3, CP4} pode ser convertido em {CP1, CP2, CP3} de acordo com as seguintes fórmulas (22) e (23): 𝑣𝑥 = + 𝐻 + 𝑣𝑥 (22) 𝑣𝑦 = − 𝐻 + 𝑣𝑦 𝑣𝑥 = + 𝐻 + 𝑣𝑥 (23). 𝑣𝑦 = − 𝐻 + 𝑣𝑦
[00225] 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} é representado por {CP1, CP2, CP3} após conversão. Um método de conversão é: substituir um vetor de movimento e informações de coordenadas de um ponto de controle na fórmula anterior (4), para obter um parâmetro de modelo; e então substituir as informações de coordenadas de {CP1, CP2, CP3} na fórmula anterior (5), para obter os vetores de movimento de CP1, CP2 e CP3.
[00226] Mais diretamente, a conversão pode ser realizada de acordo com as seguintes fórmulas (24) a (26), onde W representa a largura do bloco atual, e H representa a altura do bloco atual. Nas fórmulas (24) a (26), (vx0, vy0) representa o vetor de movimento de CP1, (vx1, vy1) representa o vetor de movimento de CP2, (vx2, vy2) representa o vetor de movimento de CP3 e (vx3, vy3) representa o vetor de movimento de CP4.
[00227] {CP1, CP2, CP4} pode ser convertido em {CP1, CP2, CP3} de acordo com a fórmula (24): 𝑣𝑥 = 𝑣𝑥 + 𝑣𝑥 − 𝑣𝑥 (24). 𝑣𝑦 = 𝑣𝑦 + 𝑣𝑦 − 𝑣𝑦
[00228] {CP2, CP3, CP4} pode ser convertido em {CP1,
CP2, CP3} de acordo com a fórmula (25): 𝑣𝑥 = 𝑣𝑥 + 𝑣𝑥 − 𝑣𝑥 (25). 𝑣𝑦 = 𝑣𝑦 + 𝑣𝑦 − 𝑣𝑦
[00229] {CP1, CP3, CP4} pode ser convertido em {CP1, CP2, CP3} de acordo com a fórmula (26): 𝑣𝑥 = 𝑣𝑥 + 𝑣𝑥 − 𝑣𝑥 (26). 𝑣𝑦 = 𝑣𝑦 + 𝑣𝑦 − 𝑣𝑦
[00230] Em uma modalidade específica, após as informações de movimento de ponto de controle atualmente construídas serem adicionadas a uma lista de vetores de movimento candidatos, se um comprimento da lista candidata for menor do que um comprimento de lista máximo (por exemplo, MaxAffineNumMrgCand), essas combinações são atravessadas em uma ordem predefinida, e uma combinação válida obtida é usada como informações de movimento de ponto de controle candidatas. Se a lista de vetores de movimento candidatos estiver vazia, as informações de movimento de ponto de controle candidatas são adicionadas à lista de vetores de movimento candidatos. Se a lista de vetores de movimento candidatos não estiver vazia, as informações de movimento na lista de vetores de movimento candidatos são atravessadas sucessivamente, e se as informações de movimento que são iguais às informações de movimento de ponto de controle candidatas existentes na lista de vetores de movimento candidatos são verificadas. Se não houver informações de movimento iguais às informações de movimento de ponto de controle candidatas na lista de vetores de movimento candidatos, as informações de movimento de ponto de controle candidatas são adicionadas à lista de vetores de movimento candidatos.
[00231] Por exemplo, uma ordem predefinida é a seguinte: afim (CP1, CP2, CP3) → Afim (CP1, CP2, CP4) → Afim
(CP1, CP3, CP4) → Afim (CP2, CP3, CP4) → Afim (CP1, CP2) → Afim (CP1, CP3) → Afim (CP2, CP3) → Afim (CP1, CP4) → Afim (CP2, CP4) → Afim (CP3, CP4). Existem 10 combinações no total.
[00232] Se as informações de movimento de ponto de controle correspondentes a uma combinação não estiverem disponíveis, considera-se que a combinação não está disponível. Se uma combinação estiver disponível, um índice de quadro de referência da combinação é determinado (quando há dois pontos de controle, um índice de quadro de referência mínimo é selecionado como o índice de quadro de referência da combinação; ou quando há mais de dois pontos de controle, um índice de quadro de referência com uma frequência de presença máxima é 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 de quadro de referência mínimo é selecionado como o índice de quadro de referência da combinação). Os vetores de movimento do ponto de controle são dimensionados. Se as informações de movimento de todos os pontos de controle após o dimensionamento forem consistentes, a combinação será inválida.
[00233] Opcionalmente, nas modalidades da presente invenção, a lista de vetores de movimento candidatos pode, alternativamente, ser preenchida. Por exemplo, após o processo de travessia anterior, se o comprimento da lista de vetores de movimento candidatos for menor que o comprimento de lista máximo (por exemplo, MaxAffineNumMrgCand), a lista de vetores de movimento candidatos pode ser preenchida até que o comprimento da lista seja igual ao comprimento de lista máximo.
[00234] O preenchimento pode ser realizado usando um método de preenchimento de vetor de movimento zero ou usando um método para combinar ou calcular a média ponderada das informações de movimento candidatas existentes na lista existente. Deve ser notado que outro método para preencher a lista de vetores de movimento candidatos também é aplicável às modalidades da presente invenção. Os detalhes não são descritos aqui.
[00235] Com base na descrição anterior, o seguinte descreve ainda o modo de AMVP baseado em modelo de movimento afim (Affine AMVP mode) e o modo de mesclagem baseado em modelo de movimento afim (Affine Merge mode).
[00236] O modo de AMVP baseado em modelo de movimento afim é primeiro descrito.
[00237] Para o modo de predição de vetor de movimento avançado baseado em modelo de movimento afim, uma lista de vetores de movimento candidatos no modo de AMVP baseado em modelo de movimento afim pode ser construída usando 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. Nas modalidades da presente invenção, a lista de vetores de movimento candidatos no modo de AMVP baseado em modelo de movimento afim pode ser referida como uma lista de candidatos de preditor de vetor de movimento de ponto de controle (control point motion vector predictor candidate list). Os preditores de vetor de movimento de ponto de controle na lista incluem dois vetores de movimento de ponto de controle candidatos (por exemplo, em um caso em que um modelo de movimento afim de 4 parâmetros é usado para um bloco atual) ou três vetores de movimento de ponto de controle candidatos (por exemplo, em um caso em que um modelo de movimento afim de 6 parâmetros é usado para um bloco atual).
[00238] Em um possível cenário de aplicação, a lista de candidatos de preditor de vetor de movimento de ponto de controle pode ainda ser podada e classificada de acordo com uma regra particular, e pode ser truncada ou preenchida para obter preditores de vetor de movimento de ponto de controle de uma quantidade particular.
[00239] Então, no lado de codificador, um codificador (por exemplo, o codificador 20 anterior) obtém um vetor de movimento de cada subunidade de compensação de movimento de um bloco de codificação atual usando cada preditor de vetor de movimento de ponto de controle na lista de candidatos de preditor de vetor de movimento de ponto de controle de acordo com a fórmula (3), (5) ou (7). Além disso, o codificador obtém um valor de pixel de uma localização correspondente em um quadro de referência para o qual o vetor de movimento de cada subunidade de compensação de movimento aponta e usa o valor de pixel como um valor previsto da subunidade de compensação de movimento para realizar compensação de movimento baseada em modelo de movimento afim. É calculado um valor médio das diferenças entre os valores originais e os valores previstos de todos os pixels no bloco de codificação atual. Um preditor de vetor de movimento de ponto de controle correspondente a um valor médio mínimo é selecionado como um preditor de vetor de movimento de ponto de controle, ideal e usado como preditores de vetor de movimento de dois, três ou quatro pontos de controle do bloco de codificação atual. Além disso, no lado de codificador, um preditor de vetor de movimento de ponto de controle pode ainda ser usado como um ponto de pesquisa inicial para realizar pesquisa de movimento dentro de uma faixa de pesquisa específica para obter um vetor de movimento de ponto de controle (control point motion vector, CPMV), e uma diferença (diferenças de vetor de movimento de ponto de controle, control point motion vector differences, CPMVD) entre o vetor de movimento de ponto de controle e o preditor de vetor de movimento de ponto de controle é calculada. Em seguida, o codificador codifica um valor de índice indicando uma localização do preditor de vetor de movimento de ponto de controle na lista de candidatos de preditor de vetor de movimento de ponto de controle e a CPMVD em um fluxo de bits, e transfere o fluxo de bits para um lado de decodificador.
[00240] No lado de decodificador, um decodificador (por exemplo, o decodificador anterior 30) analisa o fluxo de bits para obter o valor de índice e a diferença de vetor de movimento de ponto de controle (CPMVD), determina o preditor de vetor de movimento de ponto de controle (control point motion vector predictor, CPMVP) na lista de candidatos de preditor de vetor de movimento de ponto de controle com base no valor de índice, e adiciona o CPMVP e a CPMVD para obter o vetor de movimento de ponto de controle.
[00241] O seguinte descreve o modo de mesclagem baseado em modelo de movimento afim.
[00242] Para o modo de mesclagem baseado em modelo de movimento afim, uma lista de candidatos de mesclagem de vetor de movimento de ponto de controle (control point motion vector merge candidate list) pode ser construída usando 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.
[00243] Em um possível cenário de aplicação, a lista de candidatos de mesclagem de vetor de movimento de ponto de controle pode ser removida e classificada de acordo com uma regra particular, e pode ser truncada ou preenchida para obter vetores de movimento de ponto de controle de uma quantidade particular.
[00244] Em seguida, no lado de codificador, um codificador (por exemplo, o codificador 20 anterior) obtém um vetor de movimento de cada subunidade de compensação de movimento (pixel ou bloco de pixel que é obtido através do particionamento de acordo com um método particular e cujo tamanho é N1 × N2) de um bloco de codificação atual usando cada vetor de movimento de ponto de controle na lista de candidatos de mesclagem de acordo com a fórmula (3), (5) ou (7). Além disso, o codificador obtém um valor de pixel de uma localização em um quadro de referência para o qual o vetor de movimento de cada subunidade de compensação de movimento aponta e usa o valor de pixel como um valor previsto da subunidade de compensação de movimento para realizar compensação de movimento afim. É calculado um valor médio das diferenças entre os valores originais e os valores previstos de todos os pixels no bloco de codificação atual. Um vetor de movimento de ponto de controle correspondente a um valor médio mínimo é selecionado como vetores de movimento de dois, três ou quatro pontos de controle do bloco de codificação atual. Um valor de índice que indica uma localização do vetor de movimento do ponto de controle na lista de candidatos é codificado em um fluxo de bits e enviado para um lado de decodificador.
[00245] No lado de decodificador, um decodificador (por exemplo, o decodificador 30 anterior) analisa o fluxo de bits para obter o valor de índice e determina o vetor de movimento de ponto de controle (control point motion vector, CPMV) na lista de candidatos de mesclagem de vetor de movimento de ponto de controle com base no valor de índice.
[00246] Além disso, deve ser notado que, nas modalidades da presente invenção, "pelo menos um" significa um ou mais, e "uma pluralidade de" significa dois ou mais do que dois. O termo "e / ou" descreve uma relação de associação para descrever objetos associados e representa que podem existir três relações. Por exemplo, A e / ou B podem representar os seguintes casos: apenas A existe, A e B existem e apenas B existe, onde A e B podem ser singulares ou plurais. O caractere "/" geralmente representa uma relação "ou" entre os objetos associados. O termo "pelo menos um dos seguintes itens (peças)" ou uma expressão semelhante ao termo indica qualquer combinação dos itens e inclui um único item (peça) ou qualquer combinação de uma pluralidade de itens (peças). Por exemplo, pelo menos um de a, b ou c pode indicar: a, b, c, a-b, a-c, b-c ou a-b-c, onde a, b e c podem ser singulares ou plurais.
[00247] Nas modalidades da presente invenção, um lado de codificador pode usar um elemento de sintaxe para indicar, para um lado de decodificador, um modo de interpredição de um bloco atual, um modelo de movimento afim usado para o bloco atual e outras informações relacionadas.
[00248] Para uma parte de uma estrutura de sintaxe atualmente usada do modo de interpredição usado para analisar o bloco atual, consulte a Tabela 1. Deve ser notado que um elemento de sintaxe na estrutura de sintaxe pode ser alternativamente representado por outro identificador. Isto não é especificamente limitado nas modalidades da presente invenção. Tabela 1 coding_unit(x0,y0,cbWidth,cbHeight) { Descritor (descriptor) ...
merge_flag[x0][y0] ae(v) if(merge_flag[x0][y0]) { if (allowAffineMerge) affine_merge_flag[x0][y0] ae(v) if(MaxNumMergeCand > 1 && affine_merge_flag[x0][y0] == 0) merge_idx[x0][y0] ae(v) if(MaxNumAffineMergeCand > 1 && affine_merge_flag[x0][y0]) affine_merge_idx[x0][y0] ae(v) } else { if(slice_type = = B) inter_pred_idc[x0][y0] ae(v) if(allowAffineInter) { affine_inter_flag[x0][y0] ae(v) if(affine_inter_flag[x0][y0]) affine_type_flag[x0][y0] ae(v) }
coding_unit(x0,y0,cbWidth,cbHeight) { Descritor
(descriptor)
MotionModelIdc[x0][y0] = affine_inter_flag[x0][y0]
+ affine_type_flag[x0][y0]
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)
}
if(inter_pred_idc[x0][y0] != PRED_L0) {
if(num_ref_idx_l1_active_minus1 > 0)
ref_idx_l1[x0][y0] ae(v)
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)
}
}
coding_unit(x0,y0,cbWidth,cbHeight) { Descritor (descriptor) }
[00249] Na Tabela 1, ae (v) representa um elemento de sintaxe codificado por meio de codificação aritmética binária adaptativa ao contexto (context-adaptive binary arithmetic coding, CABAC).
[00250] Um elemento de sintaxe merge_flag [x0][y0] pode ser usado para indicar se o modo de mesclagem é usado para o bloco atual. Por exemplo, quando merge_flag [x0][y0] = 1, indica que o modo de mesclagem é usado para o bloco atual; ou quando merge_flag [x0][y0] = 0, indica que o modo de mesclagem não é usado para o bloco atual. x0 e y0 representam coordenadas do bloco atual em uma imagem de vídeo.
[00251] Uma variável allowAffineMerge pode ser usada para indicar se o bloco atual satisfaz uma condição para usar o modo de mesclagem baseado em modelo de movimento afim. Por exemplo, allowAffineMerge = 0 indica que a condição para usar o modo de mesclagem baseado em modelo de movimento afim não foi satisfeita e allowAffineMerge = 1 indica que a condição para usar o modo de mesclagem baseado em modelo de movimento afim foi satisfeita. A condição para usar o modo de mesclagem baseado em modelo de movimento afim pode ser: Tanto a largura quanto a altura do bloco atual são maiores ou iguais a 8. cbWidth representa a largura do bloco atual, e cbHeight representa a altura do bloco atual. Em outras palavras, quando cbWidth < 8 ou cbHeight < 8, allowAffineMerge = 0; ou quando cbWidth ≥ 8 e cbHeight ≥ 8, allowAffineMerge = 1.
[00252] Uma variável allowAffineInter pode ser usada para indicar se o bloco atual satisfaz uma condição para usar o modo de AMVP baseado em modelo de movimento afim. Por exemplo, allowAffineInter = 0 indica que a condição para usar o modo de AMVP baseado em modelo de movimento afim não foi satisfeita, e allowAffineInter = 1 indica que a condição para usar o modo de AMVP baseado em modelo de movimento afim foi satisfeita. A condição para usar o modo de AMVP baseado em modelo de movimento afim pode ser: a largura e a altura do bloco atual são maiores ou iguais a 16. Em outras palavras, quando cbWidth < 16 ou cbHeight < 16, allowAffineInter = 0; ou quando cbWidth ≥ 16 e cbHeight ≥ 16, allowAffineInter = 1.
[00253] Um elemento de sintaxe affine_merge_flag [x0][y0] pode ser usado para indicar se o modo de mesclagem baseado em modelo de movimento afim é usado para o bloco atual. Um tipo (slice_type) de uma fatia em que o bloco atual está localizado é um tipo P ou um tipo B. Por exemplo, affine_merge_flag [x0][y0] = 1 indica que o modo de mesclagem baseado em modelo de movimento afim é usado para o bloco atual; e affine_merge_flag [x0][y0] = 0 indica que o modo de mesclagem baseado em modelo de movimento afim não é usado para o bloco atual, mas um modo de mesclagem baseado em modelo de movimento translacional pode ser usado.
[00254] Um elemento de sintaxe merge_idx [x0][y0] pode ser usado para indicar um índice para uma lista de candidatos de mesclagem.
[00255] Um elemento de sintaxe affine_merge_idx [x0][y0] pode ser usado para indicar um índice para uma lista de candidatos de mesclagem afim.
[00256] Um elemento de sintaxe affine_inter_flag [x0][y0] pode ser usado para indicar se o modo de AMVP baseado em modelo de movimento afim é usado para o bloco atual quando a fatia na qual o bloco atual está localizado é uma fatia tipo P ou fatia tipo B. Por exemplo, affine_inter_flag [x0][y0] = 0 indica que o modo de AMVP baseado em modelo de movimento afim é usado para o bloco atual, e affine_inter_flag [x0][y0] = 1 indica que o modo de AMVP baseado em modelo de movimento afim não é usado para o bloco atual, mas um modo de AMVP baseado em modelo de movimento translacional pode ser usado.
[00257] Um elemento de sintaxe affine_type_flag [x0][y0] pode ser usado para indicar se o modelo de movimento afim de 6 parâmetros é usado para realizar compensação de movimento para o bloco atual quando a fatia na qual o bloco atual está localizado é uma fatia tipo P ou uma fatia tipo B. affine_type_flag [x0][y0] = 0 indica que o modelo de movimento afim de 6 parâmetros não é usado para realizar a compensação de movimento para o bloco atual e apenas o modelo de movimento afim de 4 parâmetros pode ser usado para realizar a compensação de movimento. affine_type_flag [x0][y0] = 1 indica que o modelo de movimento afim de 6 parâmetros é usado para realizar a compensação de movimento para o bloco atual.
[00258] As variáveis MaxNumMergeCand e MaxAffineNumMrgCand são usadas para representar um comprimento de lista máximo, e indicam um comprimento máximo de uma lista de vetores de movimento candidatos construída. inter_pred_idc [x0][y0] é usado para indicar uma direção de predição. PRED_L1 é usado para indicar predição para trás.
num_ref_idx_l0_active_minus1 indica uma quantidade de quadros de referência em uma lista de quadros de referência à frente e ref_idx_l0 [x0][y0] indica um valor de índice para um quadro de referência à frente do bloco atual. mvd_coding (x0, y0, 0, 0) indica uma primeira diferença de vetor de movimento. mvp_l0_flag [x0][y0] indica um valor de índice para uma lista de candidatos de MVP direta à frente. PRED_L0 indica predição direta à frente. num_ref_idx_l1_active_minus1 indica uma quantidade de quadros de referência em uma lista de quadros de referência para trás. ref_idx_l1 [x0][y0] indica um valor de índice para um quadro de referência para trás do bloco atual e mvp_l1_flag [x0][y0] indica um valor de índice para uma lista de candidatos de MVP para trás.
[00259] Conforme mostrado na Tabela 2, quando MotionModelIdc [x0][y0] = 1, indica que o modelo de movimento afim de 4 parâmetros é usado; quando MotionModelIdc [x0][y0] = 2, indica que o modelo de movimento afim de 6 parâmetros é usado; ou quando MotionModelIdc [x0][y0] = 0, indica que o modelo de movimento translacional é usado. Tabela 2 MotionModelIdc[x0][y0] Modelo de movimento para compensação de movimento (motion model for motion compensation) 0 Movimento translacional (translational motion) 1 Movimento afim de 4 parâmetros (4-parameter affine motion) 2 Movimento afim de 6 parâmetros (6-parameter affine motion)
[00260] Deve ser notado que a Tabela 1 e a Tabela 2 são meramente exemplos. Na aplicação real, a Tabela 1 e a Tabela 2 podem incluir mais ou menos conteúdo. Por exemplo, MotionModelIdc [x0][y0] na Tabela 2 pode, alternativamente,
incluir outro valor, e o valor pode ser usado para indicar que um modelo bilinear de 8 parâmetros é usado, ou semelhante.
[00261] Em um método existente, depois de obter um vetor de movimento de cada sub-bloco de um bloco atual em um modo de interpredição, um lado de codificador ou um lado de decodificador precisa armazenar o vetor de movimento para compensação de movimento subsequente. Além disso, o vetor de movimento obtido é ainda usado para outro processo de decodificação subsequente, por exemplo, usado para predição de vetor de movimento em um processo de decodificação de bloco vizinho ou decisão de intensidade de filtragem na filtragem de desbloqueio. Um vetor de movimento obtido de um ponto de controle do bloco atual também precisa ser armazenado, de modo que o vetor de movimento seja usado subsequentemente quando um método de predição de vetor de movimento de ponto de controle herdado for usado para um bloco vizinho a-ser-codificado / decodificado. Portanto, neste caso, para o bloco atual, existem dois tipos de vetores de movimento: o vetor de movimento de cada sub-bloco e o vetor de movimento do ponto de controle. Em uma solução existente, para evitar o armazenamento dos dois tipos de vetores de movimento, o vetor de movimento de ponto de controle é usado para sobrescrever um vetor de movimento de um sub-bloco no qual o ponto de controle está localizado. Por exemplo, se um modelo de movimento afim usado para um bloco de codificação afim atual é um modelo de movimento afim de 4 parâmetros, vetores de movimento de um sub-bloco superior esquerdo e um sub-bloco superior direito são definidos como vetores de movimento de um ponto de controle superior esquerdo e um ponto de controle superior direito. Por exemplo, se um modelo de movimento afim usado para um bloco de codificação afim atual é um modelo de movimento afim de 6 parâmetros, vetores de movimento de um sub-bloco superior esquerdo, um sub-bloco superior direito e um sub- bloco inferior esquerdo são definidos como vetores de movimento de um ponto de controle superior esquerdo, um ponto de controle superior direito e um ponto de controle inferior esquerdo. Neste método, embora um problema de armazenamento de vetor de movimento seja resolvido, porque um vetor de movimento inconsistente com aquele usado para outro sub- bloco é usado para realizar a compensação de movimento para o sub-bloco em que o ponto de controle está localizado, a predição é imprecisa, e a eficiência de codificação é reduzida.
[00262] Para superar as desvantagens da técnica anterior, resolver um problema de armazenamento de vetor de movimento, melhorar a precisão de predição em um processo de codificação e melhorar a eficiência de codificação, o método de predição de vetor de movimento de ponto de controle herdado anterior é melhorado nas modalidades da presente invenção.
[00263] Em um método de predição de vetor de movimento de ponto de controle herdado aprimorado fornecido nas modalidades da presente invenção, em um processo de determinação de um vetor de movimento de ponto de controle candidato de um bloco atual, vetores de movimento de ponto de controle candidatos do bloco atual são derivados usando vetores de movimento de pelo menos dois sub-blocos de um bloco de codificação afim vizinho (ou bloco de decodificação afim vizinho), em vez de usar vetores de movimento de pontos de controle do bloco de codificação afim vizinho (ou bloco de decodificação afim vizinho). Depois que um vetor de movimento de um sub-bloco de cada bloco de codificação afim vizinho (ou bloco de decodificação afim vizinho) é derivado, um vetor de movimento de um ponto de controle não precisa ser armazenado. Para ser específico, o vetor de movimento de ponto de controle do bloco atual é usado apenas para derivar um vetor de movimento de um sub-bloco do bloco atual, mas não é usado para a predição de vetor de movimento para outro bloco vizinho a ser processado posteriormente. Portanto, nas soluções da presente invenção, apenas o vetor de movimento do sub-bloco precisa ser armazenado, e a compensação de movimento é realizada usando o vetor de movimento do sub- bloco. Isso resolve um problema de armazenamento de vetores de movimento e melhora a precisão de predição e a eficiência de codificação.
[00264] O bloco de codificação afim vizinho é um bloco codificado vizinho ao bloco atual e que é previsto usando um modelo de movimento afim em uma fase de codificação, e o bloco de decodificação afim vizinho é um bloco decodificado vizinho ao bloco atual e que é previsto usando o modelo de movimento afim em uma fase de decodificação. Neste relatório descritivo, para o bloco atual, W pode ser usado para representar a largura do bloco atual, e H pode ser usado para representar a altura do bloco atual. Para o bloco de codificação afim vizinho, U pode ser usado para representar a largura do bloco de codificação afim vizinho e V pode ser usado para representar a altura do bloco de codificação afim vizinho.
[00265] O seguinte descreve em detalhes algumas implementações específicas do método de predição de vetor de movimento de ponto de controle herdado aprimorado. Deve ser notado que o seguinte descreve o método de predição de vetor de movimento de ponto de controle herdado aprimorado a partir de uma perspectiva de um lado de decodificador. Para o método de predição de vetor de movimento de ponto de controle herdado aprimorado em um lado de codificador, consulte a seguinte descrição para implementação. Para abreviar o relatório descritivo, os detalhes não são descritos novamente.
[00266] Alguns exemplos do método de predição de vetor de movimento de ponto de controle herdado aprimorado são descritos pela primeira vez quando o bloco de codificação afim vizinho é um bloco de codificação afim de 4 parâmetros.
[00267] Em um exemplo, se o bloco de codificação afim vizinho é um bloco de codificação afim de 4 parâmetros, vetores de movimento de dois sub-blocos no bloco de codificação afim vizinho e as coordenadas dos pontos centrais dos dois sub-blocos são obtidos (onde uma distância entre as coordenadas horizontais dos pontos centrais dos sub-blocos é P, e as coordenadas verticais dos pontos centrais dos sub- blocos são as mesmas), para formar um modelo de movimento afim de 4 parâmetros para derivar um vetor de movimento de um ponto de controle de um bloco de codificação afim atual, onde P é menor que a largura U do bloco de codificação afim vizinho, e P é uma potência de 2.
[00268] Em outro exemplo, se o bloco de codificação afim vizinho é um bloco de codificação afim de 4 parâmetros, vetores de movimento de dois sub-blocos no bloco de codificação afim vizinho e as coordenadas dos pontos centrais dos dois sub-blocos são obtidos (onde uma distância entre as coordenadas verticais dos pontos centrais dos sub-blocos são Q, e as coordenadas horizontais dos pontos centrais dos sub- blocos são as mesmas), para formar um modelo de movimento afim de 4 parâmetros para derivar um vetor de movimento de um ponto de controle de um bloco de codificação afim atual, onde Q é menor que a altura V do bloco de codificação afim vizinho, e Q é uma potência de 2.
[00269] Alguns exemplos do método de predição de vetor de movimento de ponto de controle herdado aprimorado são subsequentemente descritos quando o bloco de codificação afim vizinho é um bloco de codificação afim de 6 parâmetros.
[00270] Em um exemplo, se o bloco de codificação afim vizinho for um bloco de codificação afim de 6 parâmetros, vetores de movimento de dois sub-blocos (por exemplo, referidos como um primeiro sub-bloco e um segundo sub-bloco) no bloco de codificação afim vizinho e coordenadas dos pontos centrais dos dois sub-blocos são obtidos (onde a distância entre as coordenadas horizontais dos pontos centrais dos sub-blocos é P, e as coordenadas verticais dos pontos centrais dos sub-blocos são as mesmas), e então um vetor de movimento de um sub-bloco no bloco de codificação afim vizinho e coordenadas de um ponto central de sub-bloco são obtidos (onde uma coordenada horizontal do ponto central de sub-bloco é a mesma que uma coordenada horizontal de um ponto central do primeiro sub-bloco, e uma distância entre uma coordenada vertical do ponto central de sub-bloco e uma coordenada vertical do ponto central do primeiro sub-bloco é Q), para formar um modelo de movimento afim de 6 parâmetros para derivar um vetor de movimento de um ponto de controle de um bloco de codificação afim atual, onde P é menor que a largura U do bloco de codificação afim vizinho, P é uma potência de 2, Q é menor que a altura V do bloco de codificação afim vizinho, e Q é uma potência de 2.
[00271] Em outro exemplo, se o bloco de codificação afim vizinho for um bloco de codificação afim de 6 parâmetros, vetores de movimento de dois sub-blocos (por exemplo, referidos como um primeiro sub-bloco e um segundo sub-bloco) no bloco de codificação afim vizinho e coordenadas dos pontos centrais dos dois sub-blocos são obtidos (onde a distância entre as coordenadas horizontais dos pontos centrais dos sub-blocos é P, e as coordenadas verticais dos pontos centrais dos sub-blocos são as mesmas), e então um vetor de movimento de um sub-bloco no bloco de codificação afim vizinho e coordenadas de um ponto central de sub-bloco são obtidos (onde uma coordenada horizontal do ponto central de sub-bloco é a mesma que uma coordenada horizontal de um ponto central do segundo sub-bloco, e uma distância entre uma coordenada vertical do ponto central de sub-bloco e uma coordenada vertical do ponto central do segundo sub-bloco é Q), para formar um modelo de movimento afim de 6 parâmetros para derivar um vetor de movimento de um ponto de controle de um bloco de codificação afim atual, onde P é menor que a largura U do bloco de codificação afim vizinho, P é uma potência de 2, Q é menor que a altura V do bloco de codificação afim vizinho, e Q é uma potência de 2.
[00272] Em outro exemplo, um tipo de parâmetro do bloco de codificação afim vizinho não é considerado, mas vetores de movimento de dois sub-blocos (por exemplo,
referido como um primeiro sub-bloco e um segundo sub-bloco) no bloco de codificação afim vizinho e coordenadas de pontos centrais de os dois sub-blocos são obtidos diretamente (onde a distância entre as coordenadas horizontais dos pontos centrais dos sub-blocos é P, e as coordenadas verticais dos pontos centrais dos sub-blocos são as mesmas), e então um vetor de movimento de um sub-bloco no bloco de codificação afim vizinho e coordenadas de um ponto central de sub-bloco são obtidos (onde uma coordenada horizontal do ponto central de sub-bloco é a mesma que uma coordenada horizontal de um ponto central do primeiro sub-bloco, e uma distância entre uma coordenada vertical do ponto central de sub-bloco e uma coordenada vertical do ponto central do primeiro sub-bloco é Q), para formar um modelo de movimento afim de 6 parâmetros para derivar um vetor de movimento de um ponto de controle de um bloco de codificação afim atual, onde P é menor que a largura U do bloco de codificação afim vizinho, P é uma potência de 2, Q é menor que a altura V do bloco de codificação afim vizinho, e Q é um potência de 2.
[00273] Deve ser notado que, nas modalidades da presente invenção, a distância entre os pontos centrais dos dois sub-blocos é uma potência de 2. Isso ajuda a implementar a derivação do vetor de movimento em uma maneira de deslocamento, de modo que a complexidade de implementação seja reduzida.
[00274] Deve ser notado que, nos exemplos anteriores, o ponto central de sub-bloco é usado apenas para facilidade de descrição. Na aplicação real, uma localização de coordenada, do sub-bloco, usada para o bloco de codificação afim vizinho (que pode ser brevemente referido como uma localização de sub-bloco predefinida do bloco de codificação afim vizinho) precisa ser consistente com uma localização usada para calcular um vetor de movimento do sub-bloco na codificação (para ser específico, para o sub-bloco do bloco de codificação afim vizinho, um vetor de movimento de um pixel em uma localização predefinida no sub-bloco é usado para representar vetores de movimento de todos os pixels no sub-bloco). Portanto, pode haver vários tipos de localizações predefinidas de sub-bloco. Por exemplo, a localização predefinida do sub-bloco é uma localização de um pixel superior esquerdo no sub-bloco do bloco de codificação afim vizinho. Para ser específico, se o pixel superior esquerdo for usado para calcular o vetor de movimento do sub-bloco na codificação, as coordenadas do pixel superior esquerdo do sub-bloco também devem ser usadas nos exemplos anteriores. Para outro exemplo, a localização predefinida do sub-bloco é a localização de um pixel mais próximo de um centro geométrico no sub-bloco do bloco de codificação afim vizinho. Para outro exemplo, a localização de sub-bloco predefinida é uma localização de um pixel superior direito no sub-bloco do bloco de codificação afim vizinho.
[00275] Para facilitar a descrição, um ponto central de sub-bloco é usado como exemplo para descrição nos exemplos a seguir. Para uma implementação de outra localização de sub-bloco, consulte a descrição. Os detalhes não são descritos novamente.
[00276] Em um possível cenário de aplicação das modalidades da presente invenção, uma condição de uso do bloco de codificação afim pode ser limitada, de modo que o bloco de codificação afim vizinho possa ser particionado em pelo menos dois sub-blocos em uma direção horizontal e particionado em pelo menos dois sub-blocos em uma direção vertical. Por exemplo, assume-se que o tamanho do sub-bloco é M x N, onde M é um número inteiro, como 4, 8 ou 16, e N é um número inteiro, como 4, 8 ou 16. Neste caso, um tamanho permitido do bloco de codificação afim é que a largura W seja maior ou igual a 2M e a altura H seja maior ou igual a 2N. Quando um tamanho de uma unidade de codificação atual não satisfaz a condição de uso do bloco de codificação afim, um elemento de sintaxe relacionado afim, como affine_inter_flag ou affine_merge_flag na Tabela 1, pode não precisar ser analisado.
[00277] Em uma modalidade da presente invenção, assume-se que o bloco de codificação afim vizinho é um bloco de codificação afim de 4 parâmetros. Como mostrado na Figura 10, se as coordenadas do canto superior esquerdo do bloco de codificação afim vizinho do bloco atual são (x4, y4), a largura é U, a altura é V e o tamanho de um sub-bloco obtido através do particionamento é M x N (por exemplo, um tamanho de um sub-bloco de um bloco de codificação afim vizinho mostrado na Figura 10 é 4 x 4), um vetor de movimento (vx4, vy4) de uma localização (x4 + M / 2, y4 + N / 2) e um vetor de movimento (vx5, vy5) de uma localização (x4 + M / 2 + P, y4 + N / 2) são obtidos para formar um modelo de movimento afim de 4 parâmetros.
[00278] Em seguida, um vetor de movimento (vx0, vy0) de um ponto de controle superior esquerdo (x0, y0) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (27):
( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) (27). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[00279] Um vetor de movimento (vx1, vy1) de um ponto de controle superior direito (x1, y1) do bloco de codificação afim atual é obtido através do cálculo de acordo com a seguinte fórmula (28). Opcionalmente, um valor de (x1, y1) aqui pode ser definido como (x0 + W, y0), onde W é a largura do bloco atual; ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) (28). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[00280] Opcionalmente (por exemplo, o bloco atual é um bloco de codificação afim de 6 parâmetros), um vetor de movimento (vx2, vy2) de um ponto de controle inferior esquerdo (x2, y2) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (29). Opcionalmente, um valor de (x2, y2) aqui pode ser definido como (x0, y0 + H), onde H é a altura do bloco atual; ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) (29). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[00281] Em uma modalidade da presente invenção, assume-se que o bloco de codificação afim vizinho é um bloco de codificação afim de 6 parâmetros. A Figura 10 ainda é usada como exemplo. Se as coordenadas do canto superior esquerdo do bloco de codificação afim vizinho do bloco atual são (x4, y4), a largura é U, a altura é V, e o tamanho de um sub-bloco obtido através do particionamento é M x N (por exemplo, um tamanho de um sub-bloco de um bloco de codificação afim vizinho mostrado na Figura 10 é 4 x 4), um vetor de movimento (vx4, vy4) de uma localização (x4 + M / 2, y4 + N / 2), um vetor de movimento (vx5, vy5) de uma localização (x4 + M / 2 + P, y4 + N / 2) e um vetor de movimento (vx6, vy6) de uma localização (x4 + M / 2, y4 + N / 2 + Q) são obtidos para formar um modelo de movimento afim de 6 parâmetros.
[00282] Em seguida, um vetor de movimento (vx0, vy0) de um ponto de controle superior esquerdo (x0, y0) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (30): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) (30). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[00283] Um vetor de movimento (vx1, vy1) de um ponto de controle superior direito (x1, y1) do bloco de codificação afim atual é obtido através do cálculo de acordo com a seguinte fórmula (31). Opcionalmente, um valor de (x1, y1) aqui pode ser definido como (x0 + W, y0), onde W é a largura do bloco atual. ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) (31). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[00284] Opcionalmente (por exemplo, o bloco atual é um bloco de codificação afim de 6 parâmetros), um vetor de movimento (vx2, vy2) de um ponto de controle inferior esquerdo (x2, y2) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (32). Opcionalmente, um valor de (x2, y2) aqui pode ser definido como (x0, y0 + H), onde H é a altura do bloco atual; ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) (32). 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[00285] Deve ser notado que, o método nas modalidades da presente invenção pode ser alternativamente aplicado a todos os blocos de codificação afins vizinhos sem limitar uma condição. Para ser específico, vetores de movimento de três sub-blocos são usados para formar um modelo de movimento afim de 6 parâmetros para derivação.
[00286] Deve ser notado que, nas modalidades da presente invenção, porque a largura U e a altura V do bloco de codificação são geralmente uma potência de 2, um valor de P pode ser U / 2, e um valor de Q pode ser V / 2. Por exemplo, quando U é 8, 16, 32, 64 ou 128, P é 4, 8, 16, 32 ou 64. Por exemplo, quando V é 8, 16, 32, 64 ou 128, Q é 4, 8, 16, 32 ou 64.
[00287] Deve ser notado que as modalidades anteriores são usadas apenas como um exemplo. Em outra modalidade da presente invenção, outros dois sub-blocos cujos pontos centrais têm uma distância horizontal P e uma distância vertical Q podem ser usados alternativamente. Os detalhes não são descritos aqui.
[00288] Além disso, na implementação real, porque P e Q são cada um uma potência de 2, uma operação de divisão na fórmula anterior (27) para a fórmula (32) pode ser implementada de uma maneira de desvio à direita. Além disso, para reduzir uma perda de divisão de precisão, ambas as extremidades de uma equação na fórmula anterior (27) à fórmula (32) podem ser desviadas para a esquerda para aumentar e, em seguida, o desvio para a direita é realizado.
[00289] Uma operação de implementação específica pode ser realizada no procedimento a seguir, onde Log2 é uma função para obter um logaritmo de 2, << representa um desvio à esquerda e >> representa um desvio à direita: log2P = Log2 (P) log2Q = Log2 (Q)
mvScaleHor = vx4 << 7 mvScaleVer = vy4 << 7 dHorX = (vx5 - vx4) << (7 - log2P) dVerX = (vy5 - vy4) << (7 - log2Q).
[00290] Se o bloco de codificação afim vizinho for um bloco de codificação afim de 6 parâmetros, presume-se que: dHorY = (vx6 - vx4) << (7 - log2P) dVerY = (vy6 - vy4) << (7 - log2Q).
[00291] Se o bloco de codificação afim vizinho for um bloco de codificação afim de 4 parâmetros, presume-se que: dHorY = - dVerX dVerY = dHorX.
[00292] Em seguida, os vetores de movimento dos pontos de controle do bloco de codificação afim atual podem ser calculados de acordo com as seguintes fórmulas: vx0 = Round (mvScaleHor + dHorX * (x0 - x4 - M / 2) + dHorY * (y0 - y4 - N / 2)) vy0 = Round (mvScaleVer + dVerX * (x0 - x4 - M / 2) + dVerY * (y0 - y4 - N / 2)) vx1 = Round (mvScaleHor + dHorX * (x1 - x4 - M / 2) + dHorY * (y1 - y4 - N / 2)) vy1 = Round (mvScaleVer + dVerX * (x1 - x4 - M / 2) + dVerY * (y1 - y4 - N / 2)) vx2 = Round (mvScaleHor + dHorX * (x2 - x4 - M / 2) + dHorY * (y2 - y4 - N / 2)) vy2 = Round (mvScaleVer + dVerX * (x2 - x4 - M / 2) + dVerY * (y2 - y4 - N / 2)).
[00293] Uma operação de uma função round é a seguinte: Para qualquer entrada K, a saída K é obtida da seguinte maneira:
mvShift = 7 deslocamento = 1 << (mvShift - 1) K = K> = 0? (K + deslocamento) >> mvShift: - ((- K + deslocamento) >> mvShift).
[00294] Em outra modalidade da presente invenção, se o bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação afim atual, para reduzir uma quantidade de tempos de leitura de memória, vetores de movimento de dois sub-blocos que são do bloco de codificação afim vizinho e que estão localizados no fundo da CTU podem ser obtidos para derivação. Se as coordenadas do canto superior esquerdo do bloco de codificação afim vizinho forem (x4, y4), a largura será U, a altura será V e o tamanho de um sub-bloco obtido por meio do particionamento será M x N, um vetor de movimento (vx4, vy4) de uma localização (x4 + M / 2, y4 + V - N / 2) e um vetor de movimento (vx5, vy5) de uma localização (x4 + M / 2 + P, y4 + V - N / 2) são obtidos para formar um modelo de movimento afim de 4 parâmetros.
[00295] Em seguida, um vetor de movimento (vx0, vy0) de um ponto de controle superior esquerdo (x0, y0) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (33): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) (33).
[00296] Um vetor de movimento (vx1, vy1) de um ponto de controle superior direito (x1, y1) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (34):
( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) (34).
[00297] Um vetor de movimento (vx2, vy2) de um ponto de controle inferior esquerdo (x2, y2) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (35): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) (35).
[00298] Deve ser notado que, o método nas modalidades da presente invenção pode ser aplicado alternativamente, sem limitar uma condição, a apenas um caso em que o bloco de codificação afim vizinho é um bloco de codificação afim de 4 parâmetros. Para ser específico, se o bloco de codificação afim vizinho é um bloco de codificação afim de 4 parâmetros, vetores de movimento de dois sub-blocos inferiores cujos pontos centrais têm uma distância P são usados para derivação.
[00299] Em outra modalidade da presente invenção, se o bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação afim atual, para reduzir uma quantidade de tempos de leitura de memória, vetores de movimento de dois sub-blocos que são do bloco de codificação afim vizinho e que estão nas localizações mais à direita na CTU podem ser obtidos para derivação. Se as coordenadas do canto superior esquerdo do bloco de codificação afim vizinho forem (x4, y4), a largura será U, a altura será V e o tamanho de um sub-bloco obtido por meio do particionamento será M x N, um vetor de movimento (vx4,
vy4) de uma localização (x4 + U - M / 2, y4 + N / 2) e um vetor de movimento (vx5, vy5) de uma localização (x4 + U - M / 2, y4 + N / 2 + Q) são obtidos para formar um modelo de movimento afim de 4 parâmetros.
[00300] Em seguida, um vetor de movimento (vx0, vy0) de um ponto de controle superior esquerdo (x0, y0) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (36): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 − × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) (36).
[00301] Um vetor de movimento (vx1, vy1) de um ponto de controle superior direito (x1, y1) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (37): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 − × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) (37).
[00302] Um vetor de movimento (vx2, vy2) de um ponto de controle inferior esquerdo (x2, y2) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (38): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 − × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) (38).
[00303] Deve ser notado que, o método nas modalidades da presente invenção pode ser aplicado alternativamente, sem limitar uma condição, a apenas um caso em que o bloco de codificação afim vizinho é um bloco de codificação afim de 4 parâmetros. Para ser específico, se o bloco de codificação afim vizinho é um bloco de codificação afim de 4 parâmetros, vetores de movimento de dois sub-blocos mais à direita cujos pontos centrais têm uma distância Q são usados para derivação.
[00304] Em outra modalidade da presente invenção, se o bloco de codificação afim vizinho estiver localizado em uma CTU acima do bloco de codificação afim atual e o bloco de codificação afim vizinho for um bloco de codificação afim de 6 parâmetros, para reduzir uma quantidade de tempos de leitura de memória, vetores de movimento de dois sub-blocos que são do bloco de codificação afim vizinho e que estão localizados no fundo da CTU e um vetor de movimento de um sub-bloco superior do bloco de codificação afim vizinho pode ser obtido para derivação. Se as coordenadas do canto superior esquerdo do bloco de codificação afim vizinho forem (x4, y4), a largura será U, a altura será V e o tamanho de um sub-bloco obtido por meio do particionamento será M x N, um vetor de movimento (vx4, vy4) de uma localização (x4 + M / 2, y4 + V - N / 2), um vetor de movimento (vx5, vy5) de uma localização (x4 + M / 2 + P, y4 + V - N / 2), e um vetor de movimento (vx6, vy6) de uma localização (x4 + M / 2, y4 + V - N / 2 - Q) são obtidos para formar um modelo de movimento afim de 6 parâmetros.
[00305] Em seguida, um vetor de movimento (vx0, vy0) de um ponto de controle superior esquerdo (x0, y0) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (39): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) (39).
[00306] Um vetor de movimento (vx1, vy1) de um ponto de controle superior direito (x1, y1) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (40): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) (40).
[00307] Um vetor de movimento (vx2, vy2) de um ponto de controle inferior esquerdo (x2, y2) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (41): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑉 + 𝑁/2) (41).
[00308] Deve ser notado que, o método nas modalidades da presente invenção pode ser aplicado alternativamente, sem limitar uma condição, a apenas um caso em que o bloco de codificação afim vizinho é um bloco de codificação afim de 6 parâmetros. Para ser específico, se o bloco de codificação afim vizinho é um bloco de codificação afim de 6 parâmetros, vetores de movimento de dois sub-blocos inferiores cujos pontos centrais têm uma distância P e um vetor de movimento de um sub-bloco com uma distância vertical Q do sub-bloco inferior são usados para derivação.
[00309] Deve ser notado que, o método nas modalidades da presente invenção pode ser alternativamente aplicado a todos os blocos de codificação afins vizinhos sem limitar uma condição. Para ser específico, vetores de movimento de dois sub-blocos inferiores cujos pontos centrais têm uma distância P e um vetor de movimento de um sub-bloco com uma distância vertical Q do sub-bloco inferior são usados para derivação.
[00310] Em outra modalidade da presente invenção, se o bloco de codificação afim vizinho estiver localizado em uma CTU à esquerda do bloco de codificação afim atual e o bloco de codificação afim vizinho for um bloco de codificação afim de 6 parâmetros, para reduzir uma quantidade de memória tempos de leitura, vetores de movimento de dois sub-blocos que são do bloco de codificação afim vizinho e que estão nos localizações mais à direita na CTU e um vetor de movimento de um sub-bloco esquerdo do bloco de codificação afim vizinho podem ser obtidos para derivação. Se as coordenadas do canto superior esquerdo do bloco de codificação afim vizinho forem (x4, y4), a largura será U, a altura será V, e o tamanho de um sub-bloco obtido por meio do particionamento será M x N, um vetor de movimento (vx4, vy4) de uma localização (x4 + U - M / 2, y4 + N / 2), um vetor de movimento (vx5, vy5) de uma localização (x4 + U - M / 2, y4 + N / 2 + Q), e um vetor de movimento (vx6, vy6) de uma localização (x4 + U - M / 2 - P, y4 + N / 2) são obtidos para formar um modelo de movimento afim de 6 parâmetros.
[00311] Então, um vetor de movimento (vx0, vy0) de um ponto de controle superior esquerdo (x0, y0) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (42): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 − × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 − × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) (42).
[00312] Um vetor de movimento (vx1, vy1) de um ponto de controle superior direito (x1, y1) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (43): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 − × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 − × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) (43).
[00313] Um vetor de movimento (vx2, vy2) de um ponto de controle inferior esquerdo (x2, y2) do bloco de codificação afim atual é obtido por meio de cálculo de acordo com a seguinte fórmula (44): ( ) ( ) 𝑣𝑥 = 𝑣𝑥 − × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑦 = 𝑣𝑦 − × (𝑥 − 𝑥 − 𝑈 + 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) (44).
[00314] Deve ser notado que, o método nas modalidades da presente invenção pode ser aplicado alternativamente, sem limitar uma condição, a apenas um caso em que o bloco de codificação afim vizinho é um bloco de codificação afim de 6 parâmetros. Para ser específico, se o bloco de codificação afim vizinho é um bloco de codificação afim de 6 parâmetros, vetores de movimento de dois sub-blocos mais à direita cujos pontos centrais têm uma distância Q e um vetor de movimento de um sub-bloco com uma distância horizontal P do sub-bloco mais à direita são usados para derivação.
[00315] Deve ser notado que, o método nas modalidades da presente invenção pode ser alternativamente aplicado a todos os blocos de codificação afins vizinhos sem limitar uma condição. Para ser específico, vetores de movimento de dois sub-blocos mais à direita cujos pontos centrais têm uma distância Q e um vetor de movimento de um sub-bloco com uma distância horizontal P do sub-bloco mais à direita são usados para derivação.
[00316] Com base no método de predição de vetor de movimento de ponto de controle herdado aprimorado, o seguinte descreve ainda um método de predição de vetor de movimento baseado em um modelo de movimento afim de acordo com uma modalidade da presente invenção a partir de uma perspectiva de um lado de codificador ou um lado de decodificador. Com referência à Figura 11, o método inclui, mas não está limitado aos seguintes passos; passo 701: obter um bloco de referência espacial de um bloco de imagem a-ser-processado.
[00317] O bloco de imagem a-ser-processado é obtido particionando uma imagem de vídeo e o bloco de referência espacial é um bloco decodificado vizinho ao bloco de imagem a-ser-processado. No lado de codificador, o bloco de imagem a-ser-processado também pode ser referido como um bloco de codificação afim (affine coding block) atual, e o bloco de referência espacial também pode ser referido como um bloco de codificação afim (affine coding block) vizinho. No lado de decodificador, o bloco de imagem a-ser-processado também pode ser referido como um bloco de decodificação afim (affine coding block) atual e o bloco de referência espacial também pode ser referido como um bloco de decodificação afim (affine coding block) vizinho. Para facilidade de descrição, nesta modalidade, o bloco de imagem a-ser-processado pode ser geralmente referido como um bloco atual e o bloco de referência espacial pode ser geralmente referido como um bloco vizinho.
[00318] Em uma modalidade específica, a disponibilidade de um ou mais blocos de referência candidatos que são do bloco atual e que estão em localizações espaciais predefinidas pode ser determinada em uma ordem predefinida e, então, o primeiro bloco de referência candidato disponível na ordem predefinida é obtido e usado como o bloco de referência espacial. Os blocos de referência candidatos nas localizações espaciais predefinidas incluem um bloco de imagem vizinho diretamente superior, um bloco de imagem vizinho diretamente esquerdo, um bloco de imagem vizinho superior direito, um bloco de imagem vizinho inferior esquerdo e um bloco de imagem vizinho superior esquerdo do bloco de imagem a-ser-processado. Por exemplo, a disponibilidade dos blocos de referência candidatos é verificada sucessivamente na seguinte ordem: o bloco de imagem vizinho diretamente esquerdo → o bloco de imagem vizinho diretamente superior → o bloco de imagem vizinho superior direito → o bloco de imagem vizinho inferior esquerdo → o bloco de imagem vizinho superior esquerdo, até que o primeiro bloco de referência candidato disponível seja determinado.
[00319] A Figura 7 é usada como exemplo. Os blocos de localização vizinhos em torno do bloco atual podem ser atravessados na ordem de A1 → B1 → B0 → A0 → B2 na Figura 7, para encontrar um bloco vizinho no qual um bloco de localização vizinho está localizado.
[00320] Em uma modalidade específica, se o bloco de referência candidato está disponível pode ser determinado de acordo com o seguinte método: quando o bloco de referência candidato e o bloco de imagem a-ser-processado estão em uma mesma região de imagem, e o bloco de referência candidato é codificado com base no modelo de movimento afim, o bloco de referência candidato é determinado como disponível.
[00321] Passo 702: determinar duas ou mais localizações de sub-bloco predefinidas do bloco de referência espacial.
[00322] Especificamente, dois ou mais sub-blocos no bloco de referência espacial podem ser determinados. Cada sub-bloco tem uma localização de sub-bloco predefinida correspondente e a localização de sub-bloco predefinida é consistente com uma localização usada para calcular um vetor de movimento do sub-bloco durante a codificação. Para ser específico, para um sub-bloco do bloco de codificação afim vizinho, um vetor de movimento de um pixel em uma localização predefinida no sub-bloco é usado para representar vetores de movimento de todos os pixels no sub-bloco. O vetor de movimento do pixel na localização predefinida pode ser usado para compensação de movimento subsequente, para prever um sub-bloco no qual o pixel na localização predefinida está localizado.
[00323] Em uma implementação específica, a localização predefinida do sub-bloco pode ser uma localização de um pixel superior esquerdo no sub-bloco, uma localização de um centro geométrico do sub-bloco, uma localização de um pixel mais próximo de um centro geométrico no sub-bloco, uma localização de um pixel superior direito no sub-bloco, ou semelhantes.
[00324] Em uma modalidade específica, dois sub-blocos no bloco de referência espacial podem ser determinados e uma distância entre duas localizações de sub-blocos predefinidas correspondentes aos dois sub-blocos é S, onde S é 2 elevado à potência de K, e K é um número inteiro não negativo. Isso ajuda a implementar a derivação de vetor de movimento subsequente em uma maneira de deslocamento, de modo que a complexidade de implementação seja reduzida.
[00325] Em um exemplo, se o modelo de movimento afim do bloco atual é um modelo de movimento afim de 4 parâmetros, uma pluralidade de localizações de sub-bloco predefinidas do bloco de referência espacial inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2) e uma segunda localização predefinida (x4 + M / 2 + P, y4 + N / 2), em que x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, P é 2 elevado à potência de K, K é um número inteiro não negativo, K é menor que U, e U é a largura do bloco de referência espacial.
[00326] Em um exemplo, se o modelo de movimento afim do bloco atual é um modelo de movimento afim de 4 parâmetros, uma pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2) e uma terceira localização predefinida (x4 + M / 2, y4 + N / 2 + Q), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, Q é 2 elevado à potência de R, R é um número inteiro não negativo, Q é menor que V, e V é a altura do bloco de referência espacial.
[00327] Em um exemplo, se o modelo de movimento afim do bloco atual é um modelo de movimento afim de 6 parâmetros, uma pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2), uma segunda localização predefinida (x4 + M / 2 + P, y4 + N / 2), e uma terceira localização predefinida (x4 + M / 2, y4 + N / 2 + Q), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, P é 2 elevado à potência de K, Q é 2 elevado para a potência de R, K e R são inteiros não negativos, P é menor que U, Q é menor que V, U é a largura do bloco de referência espacial, e V é a altura do bloco de referência espacial.
[00328] Em outro exemplo, quando um limite superior do bloco atual coincide com um limite superior de uma unidade de árvore de codificação (CTU) incluindo o bloco atual, e o bloco de referência espacial está diretamente acima do bloco de imagem a-ser-processado, no canto superior esquerdo do bloco de imagem a-ser-processado, ou no canto superior direito do bloco de imagem a-ser-processado, pelo menos dois dos sub-blocos correspondentes à pluralidade de localizações de sub-bloco predefinidas são adjacentes ao limite superior do bloco atual.
[00329] Em outro exemplo, quando um limite esquerdo do bloco atual coincide com um limite esquerdo de uma unidade de árvore de codificação (CTU) incluindo o bloco atual, e o bloco de referência espacial está diretamente à esquerda do bloco atual, no canto superior esquerdo do bloco atual, ou no canto inferior esquerdo do bloco atual, pelo menos dois dos sub-blocos correspondentes à pluralidade de localizações de sub-bloco predefinidas são adjacentes ao limite esquerdo do bloco atual.
[00330] Passo 703: obter vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas.
[00331] Nesta modalidade da presente invenção, um vetor de movimento de ponto de controle candidato do bloco atual é determinado usando um método de predição de vetor de movimento de ponto de controle herdado aprimorado. Para ser específico, os vetores de movimento das localizações de pixel predefinidas do bloco atual são extrapolados a partir de vetores de movimento de pelo menos dois sub-blocos do bloco de codificação afim vizinho (ou o bloco de decodificação afim vizinho). As localizações de pixel predefinidas são pontos de controle do bloco atual. Por exemplo, se o modelo de movimento afim do bloco atual é o modelo de movimento afim de 4 parâmetros, os pontos de controle do bloco atual podem ser um pixel superior esquerdo e um pixel superior direito no bloco atual. Se o modelo de movimento afim do bloco atual for o modelo de movimento afim de 6 parâmetros, os pontos de controle do bloco atual podem ser um pixel superior esquerdo, um pixel superior direito e um pixel inferior esquerdo no bloco atual.
[00332] O conteúdo detalhado do método de predição de vetor de movimento de ponto de controle herdado aprimorado foi descrito em detalhes acima e esta modalidade pode ser implementada com referência ao conteúdo. Para abreviar o relatório descritivo, os detalhes não são descritos aqui novamente.
[00333] Passo 704: obter vetores de movimento correspondentes a uma pluralidade de localizações de sub- bloco do bloco de imagem a-ser-processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas.
[00334] Especificamente, para cada sub-bloco do bloco atual (um sub-bloco pode ser equivalente a uma unidade de compensação de movimento, e a largura e a altura de sub- bloco são menores que a largura e a altura do bloco atual), as informações de movimento de um pixel em uma localização predefinida na unidade de compensação de movimento podem ser usadas para representar informações de movimento de todos os pixels na unidade de compensação de movimento. Assume-se que o tamanho da unidade de compensação de movimento é M x N, o pixel na localização predefinida pode ser um pixel central (M / 2, N / 2), um pixel superior esquerdo (0, 0), um pixel superior direito (M - 1, 0), ou um pixel em outra localização na unidade de compensação de movimento. Neste caso, um vetor de movimento de cada sub-bloco no bloco atual pode ser obtido com base nas informações de movimento de ponto de controle do bloco atual e um modelo de movimento afim usado atualmente e, subsequentemente, a compensação de movimento pode ser realizada com base no vetor de movimento do sub-bloco para obter um valor de pixel previsto do sub-bloco.
[00335] Deve ser notado que, para um processo de implementação detalhado da modalidade na Figura 11 no lado de decodificador e no lado de codificador, consulte as descrições subsequentes da modalidade na Figura 12 e a modalidade na Figura 14. Para brevidade do relatório descritivo, os detalhes não são descritos aqui.
[00336] Pode ser aprendido que o método de predição de vetor de movimento de ponto de controle herdado aprimorado é usado nesta modalidade da presente invenção. No método de predição de vetor de movimento de ponto de controle herdado aprimorado, vetores de movimento de pontos de controle do bloco atual são derivados usando vetores de movimento de pelo menos dois sub-blocos do bloco vizinho, em vez de usar vetores de movimento de pontos de controle do bloco vizinho, então vetores de movimento de sub-blocos do bloco atual são derivados com base nos vetores de movimento dos pontos de controle, e predição para o bloco atual é implementada por meio de compensação de movimento. Os vetores de movimento dos pontos de controle do bloco atual não precisam ser armazenados posteriormente. Para ser específico, os vetores de movimento dos pontos de controle do bloco atual são usados apenas para derivar os vetores de movimento dos sub-blocos do bloco de codificação atual, mas não são usados para a predição de vetor de movimento do bloco vizinho. Portanto, nas soluções da presente invenção, apenas os vetores de movimento dos sub-blocos precisam ser armazenados, e a compensação de movimento é realizada usando os vetores de movimento dos sub-blocos. Isso resolve um problema de armazenamento de vetor de movimento, e evita um caso em que um vetor de movimento inconsistente com aquele usado para outro sub-bloco é usado para realizar a compensação de movimento em um sub-bloco no qual um ponto de controle está localizado, de modo que a precisão de predição seja melhorada.
[00337] Com base no método de predição de vetor de movimento de ponto de controle herdado aprimorado, o seguinte descreve ainda um método de predição de vetor de movimento baseado em um modelo de movimento afim de acordo com uma modalidade da presente invenção a partir de uma perspectiva de um lado de decodificador. Com referência à Figura 12, o método inclui, mas não está limitado aos seguintes passos.
[00338] Passo 801: analisar um fluxo de bits para determinar um modo de interpredição de um bloco atual.
[00339] Especificamente, o fluxo de bits pode ser analisado com base na estrutura de sintaxe mostrada na Tabela 1, para determinar o modo de interpredição do bloco atual.
[00340] Se for determinado que o modo de interpredição do bloco atual é um modo de AMVP baseado em modelo de movimento afim, isto é, os elementos de sintaxe merge_flag = 0 e affine_inter_flag = 1 indicam que o modo de interpredição do bloco atual é o modo de AMVP baseado em modelo de movimento afim, passo 802a ao passo 806a são subsequentemente realizados.
[00341] Se for determinado que o modo de interpredição do bloco atual é um modo de mesclagem baseado em modelo de movimento afim, isto é, os elementos de sintaxe merge_flag = 1 e affine_merge_flag = 1 indicam que o modo de interpredição do bloco atual é o modo de mesclagem baseado em modelo de movimento afim, passo 802b ao passo 805b são subsequentemente realizados.
[00342] Passo 802a: construir uma lista de vetores de movimento candidatos correspondente ao modo de AMVP baseado em modelo de movimento afim.
[00343] Nesta modalidade da presente invenção, um vetor de movimento de ponto de controle candidato do bloco atual pode ser obtido com base em um método de predição de vetor de movimento de ponto de controle herdado aprimorado 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 correspondente ao modo de AMVP.
[00344] No método de predição de vetor de movimento de ponto de controle herdado aprimorado, em um processo de determinação do vetor de movimento de ponto de controle candidato do bloco atual, preditores de vetor de movimento de ponto de controle candidato (um vetor de movimento candidato de 2-tupla / tripleto / quádruplo) do bloco atual são derivados usando vetores de movimento de pelo menos dois sub-blocos de um bloco de codificação afim vizinho, e são adicionados à lista de vetores de movimento candidatos.
[00345] Se um modelo de movimento afim de 4 parâmetros for usado para o bloco atual, a lista de vetores de movimento candidatos pode incluir uma lista de 2-tupla. A lista de 2- tupla inclui uma ou mais 2-tuplas usadas para construir o modelo de movimento afim de 4 parâmetros.
[00346] Se um modelo de movimento afim de 6 parâmetros for usado para o bloco atual, a lista de vetores de movimento candidatos pode incluir uma lista de tripletos. A lista de tripletos inclui um ou mais tripletos usados para construir o modelo de movimento afim de 6 parâmetros.
[00347] Se um modelo bilinear de 8 parâmetros for usado para o bloco atual, a lista de vetores de movimento candidatos pode incluir uma lista quádrupla. A lista quádrupla inclui um ou mais quádruplos usados para construir o modelo bilinear de 8 parâmetros.
[00348] Em um cenário de aplicação possível, a lista de vetor de movimento candidato de 2-tupla / tripleto /
quádruplo pode ser podada e classificada de acordo com uma regra particular, e pode ser truncada ou preenchida para obter vetores de movimento candidatos de uma quantidade particular.
[00349] Para o método de predição de vetor de movimento de ponto de controle herdado aprimorado, a Figura 7 é usada como exemplo. Os blocos de localização vizinhos em torno do bloco atual podem ser atravessados na ordem de A1 → B1 → B0 → A0 → B2 na Figura 7, para encontrar um bloco de codificação afim no qual um bloco de localização vizinho está localizado, um modelo de movimento afim é construído usando vetores de movimento de pelo menos dois sub-blocos do bloco de codificação afim vizinho e, em seguida, vetores de movimento de ponto de controle candidatos (um vetor de movimento candidato de 2-tupla / tripleto / quádruplo) do bloco atual são derivados e adicionados à lista de vetores de movimento candidatos. Deve ser notado que outra ordem de pesquisa também é aplicável a esta modalidade da presente invenção. Os detalhes não são descritos aqui.
[00350] Para conteúdo detalhado do método de predição de vetor de movimento de ponto de controle herdado aprimorado, consulte as descrições relacionadas anteriores. Para abreviar o relatório descritivo, os detalhes não são descritos aqui novamente.
[00351] Além disso, o conteúdo de um método de predição de vetor de movimento de ponto de controle construído com base no modo de AMVP baseado em modelo de movimento afim também é descrito em detalhes no anterior (4). Para abreviar o relatório descritivo, os detalhes não são descritos aqui novamente.
[00352] Passo 803a: analisar o fluxo de bits para determinar um preditor de vetor de movimento de ponto de controle ideal.
[00353] Especificamente, um valor de índice da lista de vetores de movimento candidatos é obtido analisando o fluxo de bits e o preditor de vetor de movimento de ponto de controle ideal é determinado, com base no valor de índice, a partir da lista de vetores de movimento candidatos construída no passo 802a.
[00354] Por exemplo, se um modelo de movimento afim usado para o bloco de codificação atual for o modelo de movimento afim de 4 parâmetros (MotionModelIdc é 1), o valor de índice é obtido por meio de análise. Por exemplo, o valor de índice é mvp_l0_flag ou mvp_l1_flag. Os preditores de vetor de movimento ideais de dois pontos de controle são determinados a partir da lista de vetores de movimento candidatos com base no valor de índice.
[00355] Para outro exemplo, se um modelo de movimento afim usado para o bloco de codificação atual é o modelo de movimento afim de 6 parâmetros (MotionModelIdc é 2), o valor de índice é obtido por meio de análise e os preditores de vetor de movimento ideais de três pontos de controle são determinados a partir da lista de vetores de movimento candidatos com base no valor de índice.
[00356] Para outro exemplo, se um modelo de movimento afim usado para o bloco de codificação atual for o modelo bilinear de 8 parâmetros, o valor de índice é obtido por meio de análise e os preditores de vetor de movimento ideais de quatro pontos de controle são determinados a partir da lista de vetores de movimento candidatos com base no valor de índice.
[00357] Passo 804a: analisar o fluxo de bits para determinar um vetor de movimento de um ponto de controle.
[00358] Especificamente, uma diferença de vetor de movimento de ponto de controle é obtida analisando o fluxo de bits e, em seguida, o vetor de movimento de ponto de controle é obtido com base na diferença de vetor de movimento de ponto de controle e o preditor de vetor de movimento de ponto de controle ideal determinado no passo 803a.
[00359] Por exemplo, o modelo de movimento afim usado para o bloco de codificação atual é o modelo de movimento afim de 4 parâmetros (MotionModelIdc é 1). A predição direta à frente é usada como um exemplo, e as diferenças de vetor de movimento dos dois pontos de controle são, respectivamente, mvd_coding (x0, y0, 0, 0) e mvd_coding (x0, y0, 0, 1). As diferenças de vetor de movimento dos dois pontos de controle do bloco atual são obtidas analisando o fluxo de bits. Por exemplo, as diferenças de vetor de movimento de um ponto de controle superior esquerdo e um ponto de controle superior direito podem ser obtidas analisando o fluxo de bits. Em seguida, uma diferença de vetor de movimento e um preditor de vetor de movimento de cada ponto de controle são adicionados para obter um vetor de movimento do ponto de controle. Em outras palavras, os vetores de movimento de ponto de controle superior esquerdo e do ponto de controle superior direito do bloco atual são obtidos.
[00360] Para outro exemplo, o modelo de movimento afim usado para o bloco de codificação atual é o modelo de movimento afim de 6 parâmetros (MotionModelIdc é 2). A predição direta à frente é usada como um exemplo, e as diferenças de vetor de movimento dos três pontos de controle são, respectivamente, mvd_coding (x0, y0, 0, 0), mvd_coding (x0, y0, 0, 1) e mvd_coding (x0, y0, 0, 2). As diferenças de vetor de movimento dos três pontos de controle do bloco atual são obtidas analisando o fluxo de bits. Por exemplo, as diferenças de vetor de movimento de um ponto de controle superior esquerdo, um ponto de controle superior direito e um ponto de controle inferior esquerdo são obtidas analisando o fluxo de bits. Em seguida, uma diferença de vetor de movimento e um preditor de vetor de movimento de cada ponto de controle são adicionados para obter um vetor de movimento do ponto de controle. Em outras palavras, os vetores de movimento de ponto de controle superior esquerdo, do ponto de controle superior direito e do ponto de controle inferior esquerdo do bloco atual são obtidos.
[00361] Deve ser notado que, nesta modalidade da presente invenção, outro modelo de movimento afim e outra localização de ponto de controle também podem ser usados. Os detalhes não são descritos aqui.
[00362] Passo 805a: obter um vetor de movimento de cada sub-bloco no bloco atual com base no vetor de movimento de ponto de controle e o modelo de movimento afim usado para o bloco atual.
[00363] Para cada sub-bloco no bloco de codificação afim atual (um sub-bloco pode ser equivalente a uma unidade de compensação de movimento, e a largura e a altura de sub- bloco são menores que a largura e a altura do bloco atual), as informações de movimento de um pixel em uma localização predefinida na unidade de compensação de movimento podem ser usadas para representar informações de movimento de todos os pixels na unidade de compensação de movimento. Assume-se que o tamanho da unidade de compensação de movimento é M x N, o pixel na localização predefinida pode ser um pixel central (M / 2, N / 2), um pixel superior esquerdo (0, 0), um pixel superior direito (M - 1, 0), ou um pixel em outra localização na unidade de compensação de movimento.
[00364] O seguinte usa um ponto central da unidade de compensação de movimento como um exemplo para a descrição. A Figura 13 mostra um bloco de codificação afim atual e uma unidade de compensação de movimento (sub-bloco). Cada pequena caixa na figura representa uma unidade de compensação de movimento. Na Figura 13, V0 representa um vetor de movimento de um ponto de controle superior esquerdo do bloco de codificação afim atual, V1 representa um vetor de movimento de um ponto de controle superior direito do bloco de codificação afim atual e V2 representa um vetor de movimento de um ponto de controle inferior esquerdo do bloco de codificação afim atual.
[00365] As coordenadas do ponto central da unidade de compensação de movimento em relação a um pixel superior esquerdo do bloco de codificação afim atual podem ser obtidas por meio de cálculo de acordo com a seguinte fórmula (45): 𝑥( , ) = 𝑀 × 𝑖 + , 𝑖 = 0,1. . (45). 𝑦( , ) = 𝑁 × 𝑗 + , 𝑗 = 0,1. .
[00366] Aqui, i é uma i-ésima unidade de compensação de movimento (da esquerda para a direita) em uma direção horizontal, j é uma j-ésima unidade de compensação de movimento (de cima para baixo) em uma direção vertical, e (x((i, j)), y((i, j)) representam as coordenadas de um ponto central de uma (i, j)-ésima unidade de compensação de movimento em relação ao pixel no ponto de controle superior esquerdo do bloco de codificação afim atual.
[00367] Se o modelo de movimento afim usado para o bloco de codificação afim atual é o modelo de movimento afim de 6 parâmetros, (x((i, j)), y((i, j))) são substituídos em uma fórmula (46) no modelo de movimento afim de 6 parâmetros, para obter um vetor de movimento de um ponto central de cada unidade de compensação de movimento, e o vetor de movimento é usado como vetores de movimento (vx((i, j)), vy((i, j))) de todos os pixels na unidade de compensação de movimento: 𝑣𝑥 = 𝑥+ 𝑦 + 𝑣𝑥 (46). 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[00368] Se o modelo de movimento afim usado para o bloco de codificação afim atual for o modelo de movimento afim de 4 parâmetros, (x((i, j)), y((i, j))) são substituídos em uma fórmula (47) no modelo de movimento afim de 4 parâmetros, para obter um vetor de movimento de um ponto central de cada unidade de compensação de movimento, e o vetor de movimento é usado como vetores de movimento (vx((i, j)), vy((i, j))) de todos os pixels na unidade de compensação de movimento: 𝑣𝑥 = 𝑥− 𝑦 + 𝑣𝑥 (47). 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[00369] Passo 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 pixel previsto do sub-bloco.
[00370] Passo 802b: construir uma lista de vetores de movimento candidatos correspondente ao modo de mesclagem baseado em modelo de movimento afim.
[00371] Nesta modalidade da presente invenção, um vetor de movimento de ponto de controle candidato do bloco atual pode ser obtido com base em um método de predição de vetor de movimento de ponto de controle herdado aprimorado 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 correspondente ao modo de mesclagem.
[00372] No método de predição de vetor de movimento de ponto de controle herdado aprimorado, em um processo de determinação do vetor de movimento de ponto de controle candidato do bloco atual, os vetores de movimento de ponto de controle candidatos (um vetor de movimento candidato de 2-tupla / tripleto / quádruplo) do bloco atual são derivados usando vetores de movimento de pelo menos dois sub-blocos de um bloco de codificação afim vizinho, e são adicionados à lista de vetores de movimento candidatos.
[00373] Em um possível cenário de aplicação, a lista de vetores de movimento candidatos pode ser podada e classificada de acordo com uma regra particular, e pode ser truncada ou preenchida para obter vetores de movimento de uma quantidade particular.
[00374] A Figura 8 é usada como exemplo. Os blocos de localização vizinha em torno do bloco atual podem ser atravessados na ordem de A1 → B1 → B0 → A0 → B2, para encontrar um bloco de codificação afim no qual o bloco de localização vizinha está localizado, um modelo de movimento afim é construído usando vetores de movimento de pelo menos dois sub-blocos do bloco de codificação afim vizinho e, em seguida, os vetores de movimento de ponto de controle candidato (um vetor de movimento candidato de 2-tupla /
tripleto / quádruplo) do bloco atual são derivados e adicionados à lista de vetores de movimento candidatos. Deve ser notado que outra ordem de pesquisa também é aplicável a esta modalidade da presente invenção. Os detalhes não são descritos aqui.
[00375] Especificamente, no processo de travessia anterior, se a lista de vetores de movimento candidatos estiver vazia, as informações de movimento de ponto de controle candidatas são adicionadas à lista de candidatos. Se a lista de vetores de movimento candidatos não estiver vazia, as informações de movimento na lista de vetores de movimento candidatos são atravessadas sucessivamente e se as informações de movimento que são iguais às informações de movimento de ponto de controle candidatas existentes na lista de vetores de movimento candidatos são verificadas. Se não houver informações de movimento iguais às informações de movimento de ponto de controle candidatas na lista de vetores de movimento candidatos, as informações de movimento de ponto de controle candidatas são adicionadas à lista de vetores de movimento candidatos.
[00376] Para determinar se duas partes de informações de movimento candidatas são as mesmas, se os quadros de referência para frente / para trás das duas peças de informações de movimento candidatas são as mesmas e se os componentes horizontais e verticais de vetores de movimento para frente / para trás são os mesmos, precisam ser sucessivamente determinados. As duas partes de informações de movimento são consideradas diferentes apenas quando todos os elementos anteriores são diferentes.
[00377] Se uma quantidade de partes de informações de movimento na lista de vetores de movimento candidatos atingir um comprimento de lista máximo MaxAffineNumMrgCand (MaxAffineNumMrgCand é um número inteiro positivo, como 1, 2, 3, 4 ou 5), a lista de candidatos é construída. Se uma quantidade de partes de informações de movimento na lista de vetores de movimento candidatos não atingir um comprimento de lista máximo, um próximo bloco de localização vizinha é atravessado.
[00378] Para conteúdo do método de predição de vetor de movimento de ponto de controle herdado aprimorado, consulte as descrições detalhadas anteriores. Para abreviar o relatório descritivo, os detalhes não são descritos aqui novamente.
[00379] Além disso, o conteúdo de um método de predição de vetor de movimento de ponto de controle construído com base no modo de mesclagem baseado em modelo de movimento afim também é descrito em detalhes no anterior (4). Para abreviar o relatório descritivo, os detalhes não são descritos aqui novamente.
[00380] Passo S803b: analisar o fluxo de bits para determinar as informações de movimento de ponto de controle ideais.
[00381] Especificamente, um valor de índice da lista de vetores de movimento candidatos é obtido analisando o fluxo de bits e as informações de movimento de ponto de controle ideais é determinada, com base no valor de índice, a partir da lista de vetores de movimento candidatos construída no passo 802b.
[00382] Passo 804b: obter um vetor de movimento de cada sub-bloco no bloco atual com base nas informações de movimento de ponto de controle ideais e no modelo de movimento afim usado para o bloco de codificação atual. Para a implementação detalhada deste passo, consulte as descrições do passo 805a. Para abreviar este relatório descritivo, os detalhes não são descritos aqui novamente.
[00383] Passo 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 pixel previsto do sub-bloco.
[00384] Pode ser aprendido que, nesta modalidade da presente invenção, o método de predição de vetor de movimento de ponto de controle herdado aprimorado é usado. No método de predição de vetor de movimento de ponto de controle herdado aprimorado, um vetor de movimento de um ponto de controle do bloco vizinho não precisa ser usado, mas os vetores de movimento dos pelo menos dois sub-blocos do bloco de codificação afim vizinho são usados. Depois que um vetor de movimento de um sub-bloco de cada bloco de codificação afim é derivado, um vetor de movimento de um ponto de controle não precisa ser armazenado. Para ser específico, o vetor de movimento de ponto de controle do bloco de codificação atual é usado apenas para derivar o vetor de movimento do sub-bloco do bloco de codificação atual, mas não é usado para a predição de vetor de movimento do bloco vizinho. Portanto, nas soluções da presente invenção, apenas o vetor de movimento do sub-bloco precisa ser armazenado e a compensação de movimento é realizada usando o vetor de movimento do sub-bloco. Isso resolve um problema de armazenamento do vetor de movimento e melhora a precisão de predição.
[00385] Com base no método de predição de vetor de movimento de ponto de controle herdado aprimorado, o seguinte descreve ainda um método de predição de vetor de movimento baseado em um modelo de movimento afim de acordo com uma modalidade da presente invenção a partir de uma perspectiva de um lado de codificador. Com referência à Figura 14, o método inclui, mas não está limitado aos seguintes passos.
[00386] Passo 901: determinar um modo de interpredição de um bloco atual.
[00387] Em uma implementação específica, uma pluralidade de modos de interpredição pode ser predefinida para interpredição no lado de codificador. Por exemplo, a pluralidade de modos de interpredição inclui o modo de AMVP baseado em modelo de movimento afim e o modo de mesclagem baseado em modelo de movimento afim que são descritos acima. O lado de codificador atravessa a pluralidade de modos de interpredição para determinar um modo de interpredição ideal para prever o bloco atual.
[00388] Em outra implementação específica, apenas um modo de interpredição pode ser predefinido para interpredição no lado de codificador. Neste caso, o lado de codificador determina diretamente que um modo de interpredição padrão é usado atualmente. O modo de interpredição padrão é o modo de AMVP baseado em modelo de movimento afim ou o modo de mesclagem baseado em modelo de movimento afim.
[00389] Nesta modalidade da presente invenção, se for determinado que o modo de interpredição do bloco atual é o modo de AMVP baseado em modelo de movimento afim, o passo 902a ao passo 904a são subsequentemente realizados.
[00390] Nesta modalidade da presente invenção, se for determinado que o modo de interpredição do bloco atual é o modo de mesclagem baseado em modelo de movimento afim, o passo 902b ao passo 904b são subsequentemente realizados.
[00391] Passo 902a: construir uma lista de vetores de movimento candidatos correspondente ao modo de AMVP baseado em modelo de movimento afim.
[00392] Nesta modalidade da presente invenção, um preditor de vetor de movimento de ponto de controle candidato (por exemplo, um vetor de movimento candidato de 2-tupla / tripleto / quádruplo) do bloco atual pode ser obtido com base em um método de predição de vetor de movimento de ponto de controle herdado aprimorado 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 correspondente ao modo de AMVP.
[00393] Para a implementação específica deste passo, consulte a descrição do passo 802a na modalidade anterior. Os detalhes não são descritos aqui novamente.
[00394] Passo 903a: determinar um preditor de vetor de movimento de ponto de controle ideal com base nos custos de distorção de taxa.
[00395] Em um exemplo, o lado de codificador pode obter um vetor de movimento de cada subunidade de compensação de movimento do bloco atual usando um preditor de vetor de movimento de ponto de controle (por exemplo, um vetor de movimento candidato de 2-tupla / tripleto / quádruplo) na lista de vetores de movimento candidatos de acordo com a fórmula (3), (5) ou (7). Além disso, o lado de codificador obtém um valor de pixel de uma localização correspondente em um quadro de referência para o qual o vetor de movimento de cada subunidade de compensação de movimento aponta, e usa o valor de pixel como um valor previsto da subunidade de compensação de movimento para realizar compensação de modelo baseada em modelo de movimento afim. É calculado um valor médio das diferenças entre os valores originais e os valores previstos de todos os pixels no bloco de codificação atual. Um preditor de vetor de movimento de ponto de controle correspondente a um valor médio mínimo é selecionado como um preditor de vetor de movimento de ponto de controle ideal, e usado como preditores de vetor de movimento de dois, três ou quatro pontos de controle do bloco atual.
[00396] Passo 904a: codificar um valor de índice, uma diferença de vetor de movimento de um ponto de controle, e informações de indicação do modo de interpredição em um fluxo de bits.
[00397] Em um exemplo, o lado de codificador pode realizar pesquisa de movimento dentro de uma faixa de pesquisa específica usando o preditor de vetor de movimento de ponto de controle ideal como um ponto de pesquisa inicial para obter um vetor de movimento de ponto de controle (control point motion vector, CPMV) e calcular uma diferença (diferenças de vetor de movimento de ponto de controle, control point motion vector differences, CPMVD) entre o vetor de movimento de ponto de controle e o preditor de vetor de movimento de ponto de controle. Em seguida, o lado de codificador codifica o valor de índice indicando uma localização do preditor de vetor de movimento de ponto de controle na lista de vetores de movimento candidatos e a CPMVD no fluxo de bits, e pode ainda codificar a informação de indicação do modo de interpredição no fluxo de bits, para facilitar transmissão subsequente para um lado de decodificador.
[00398] Na implementação específica, para um elemento de sintaxe codificado no fluxo de bits, consulte as descrições anteriores na Tabela 1 e Tabela 2. Os detalhes não são descritos aqui novamente.
[00399] Passo 902b: construir uma lista de vetores de movimento candidatos correspondente ao modo de mesclagem baseado em modelo de movimento afim.
[00400] Nesta modalidade da presente invenção, um vetor de movimento de ponto de controle candidato (por exemplo, um vetor de movimento candidato de 2-tupla / tripleto / quádruplo) do bloco atual pode ser obtido com base em um método de predição de vetor de movimento de ponto de controle herdado aprimorado 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 correspondente ao modo de mesclagem.
[00401] Para a implementação específica deste passo, consulte a descrição do passo 802b na modalidade anterior. Os detalhes não são descritos aqui novamente.
[00402] Passo 903b: determinar as informações de movimento de ponto de controle ideais com base nos custos de distorção de taxa.
[00403] Em um exemplo, o lado de codificador pode obter um vetor de movimento de cada subunidade de compensação de movimento do bloco de codificação atual usando um vetor de movimento de ponto de controle (por exemplo, um vetor de movimento candidato de 2-tupla / tripleto / quádruplo) na lista de vetores de movimento candidatos de acordo com a fórmula (3), (5) ou (7). Além disso, o lado de codificador obtém um valor de pixel de uma localização em um quadro de referência para o qual o vetor de movimento de cada subunidade de compensação de movimento aponta, e usa o valor de pixel como um valor previsto da subunidade de compensação de movimento para realizar compensação de movimento afim. É calculado um valor médio das diferenças entre os valores originais e os valores previstos de todos os pixels no bloco de codificação atual. Um vetor de movimento de ponto de controle correspondente a um valor médio mínimo é selecionado como um vetor de movimento de ponto de controle ideal, e o vetor de movimento de ponto de controle ideal é usado como vetores de movimento de dois, três ou quatro pontos de controle do bloco de codificação atual.
[00404] Passo 904b: codificar um valor de índice e informações de indicação do modo de interpredição em um fluxo de bits.
[00405] Em um exemplo, o lado de codificador pode codificar o valor de índice indicando uma localização do vetor de movimento de ponto de controle na lista de candidatos, e as informações de indicação do modo de interpredição no fluxo de bits, para facilitar a transmissão subsequente para um lado de decodificador.
[00406] Na implementação específica, para um elemento de sintaxe codificado no fluxo de bits, consulte as descrições anteriores na Tabela 1 e Tabela 2. Os detalhes não são descritos aqui novamente.
[00407] Deve ser notado que a modalidade anterior descreve apenas um processo no qual o lado de codificador executa a codificação e envia o fluxo de bits. De acordo com as descrições anteriores, um especialista na técnica entende que o lado de codificador pode alternativamente realizar, em outro procedimento, outro método descrito nas modalidades da presente invenção. Por exemplo, quando o lado de codificador prevê o bloco atual, para implementação específica de um processo de reconstrução do bloco atual, consulte um método relacionado (como mostrado na modalidade na Figura 12) descrito acima no lado de decodificador. Os detalhes não são descritos aqui novamente.
[00408] Pode ser aprendido que, nesta modalidade da presente invenção, o método de predição de vetor de movimento de ponto de controle herdado aprimorado é usado. No método de predição de vetor de movimento de ponto de controle herdado aprimorado, um vetor de movimento de um ponto de controle de um bloco de codificação afim vizinho não precisa ser usado, mas vetores de movimento de pelo menos dois sub- blocos do bloco de codificação afim vizinho são usados. Portanto, um vetor de movimento de ponto de controle candidato do bloco atual é derivado com base nos vetores de movimento de pelo menos dois sub-blocos e a lista é estabelecida. O vetor de movimento de ponto de controle candidato ideal é obtido, e o valor de índice correspondente ao vetor de movimento de ponto de controle candidato ideal na lista é enviado para o lado de decodificador. O vetor de movimento de ponto de controle não precisa ser armazenado. Para ser específico, o vetor de movimento de ponto de controle do bloco de codificação atual é usado apenas para derivar o vetor de movimento do sub-bloco do bloco de codificação atual, mas não é usado para a predição de vetor de movimento do bloco vizinho subsequentemente. Portanto, nas soluções da presente invenção, apenas o vetor de movimento do sub-bloco precisa ser armazenado e a compensação de movimento é realizada usando o vetor de movimento do sub- bloco. Isso resolve um problema de armazenamento do vetor de movimento e melhora a precisão de predição.
[00409] Com base em um mesmo conceito inventivo do método anterior, uma modalidade da presente invenção fornece ainda um dispositivo 1000. O dispositivo 1000 inclui um módulo de obtenção de bloco de referência 1001, um módulo de determinação de sub-bloco 1002, um primeiro módulo de cálculo 1003 e um segundo módulo de cálculo 1004.
[00410] O módulo de obtenção de bloco de referência 1001 é configurado para obter um bloco de referência espacial de um bloco de imagem a-ser-processado em dados de vídeo.
[00411] O módulo de determinação de sub-bloco 1002 é configurado para determinar uma pluralidade de localizações de sub-bloco predefinidas do bloco de referência espacial.
[00412] O primeiro módulo de cálculo 1003 é configurado para obter vetores de movimento correspondentes a localizações de pixel predefinidas do bloco de imagem a- ser-processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas.
[00413] O segundo módulo de cálculo 1004 é configurado para obter vetores de movimento correspondentes a uma pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas.
[00414] Em uma possível modalidade, o módulo de obtenção de bloco de referência 1001 é especificamente configurado para: determinar, em uma ordem predefinida, disponibilidade de um ou mais blocos de referência candidatos que são do bloco de imagem a-ser-processado e que estão em localizações espaciais predefinidas; e obter o primeiro bloco de referência candidato disponível na ordem predefinida, onde o primeiro bloco de referência candidato disponível é usado como o bloco de referência espacial.
[00415] Quando o bloco de referência candidato e o bloco de imagem a-ser-processado estão em uma mesma região de imagem, e o bloco de referência candidato é codificado com base no modelo de movimento afim, o bloco de referência candidato é determinado como disponível.
[00416] Em uma possível modalidade, os blocos de referência candidatos nas localizações espaciais predefinidas incluem um bloco de imagem vizinho diretamente superior, um bloco de imagem vizinho diretamente esquerdo, um bloco de imagem vizinho superior direito, um bloco de imagem vizinho inferior esquerdo e um bloco de imagem vizinho superior esquerdo do bloco de imagem a-ser-processado.
[00417] O módulo de obtenção de bloco de referência 1001 é especificamente configurado para verificar sucessivamente a disponibilidade dos blocos de referência candidatos na seguinte ordem: o bloco de imagem vizinho diretamente esquerdo → o bloco de imagem vizinho diretamente superior → o bloco de imagem vizinho superior direito → o bloco de imagem vizinho inferior esquerdo → o bloco de imagem vizinho superior esquerdo, até que o primeiro bloco de referência candidato disponível seja determinado.
[00418] Em uma possível modalidade, a localização de sub-bloco do bloco de referência espacial ou do bloco de imagem a-ser-processado é uma localização de um pixel superior esquerdo em um sub-bloco; uma localização de um centro geométrico de um sub-bloco; ou a localização de um pixel mais próximo de um centro geométrico em um sub-bloco.
[00419] Em uma possível modalidade, uma distância entre duas da pluralidade de localizações de sub-bloco predefinidas é S, onde S é 2 elevado à potência de K, e K é um número inteiro não negativo.
[00420] Em uma possível modalidade, o modelo de movimento afim é um modelo de movimento afim de 4 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2) e uma segunda localização predefinida (x4 + M / 2 + P, y4 + N / 2), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, P é 2 elevado à potência de K, K é um número inteiro não negativo, K é menor que U, e U é a largura do bloco de referência espacial.
[00421] Em uma possível modalidade, o modelo de movimento afim é um modelo de movimento afim de 4 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2), e uma terceira localização predefinida (x4 + M / 2, y4 + N / 2 + Q), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, Q é 2 elevado à potência de R, R é um número inteiro não negativo, Q é menor que V, e V é a altura do bloco de referência espacial.
[00422] Em uma possível modalidade, as localizações de pixel predefinidas incluem pelo menos duas de uma localização de pixel superior esquerda do bloco de imagem a- ser-processado, uma localização de pixel superior direita do bloco de imagem a-ser-processado, e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e o primeiro módulo de cálculo 1003 é especificamente configurado para obter, por meio de cálculo de acordo com as seguintes fórmulas, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a- ser-processado: ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; e 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) − × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) . 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[00423] Aqui, vx0 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vy0 é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vx1 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, vy1 é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, vx2 é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, vy2 é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, vx4 é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, vy4 é um componente vertical do vetor de movimento correspondente à primeira localização predefinida, vx5 é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, vy5 é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser-processado, y0 é uma coordenada vertical da localização de pixel superior esquerda do bloco de imagem a- ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser- processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado, x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
[00424] Em uma possível modalidade, as localizações de pixel predefinidas incluem a localização de pixel superior esquerda do bloco de imagem a-ser-processado e a localização de pixel superior direita do bloco de imagem a-ser- processado, e o segundo módulo de cálculo 1004 é especificamente configurado para obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado: 𝑣𝑥 = 𝑥− 𝑦 + 𝑣𝑥 . 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[00425] Aqui, W é a largura do bloco de imagem a-ser- processado, vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e vy é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
[00426] Em uma possível modalidade, o modelo de movimento afim é um modelo de movimento afim de 6 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas inclui uma primeira localização predefinida (x4 + M / 2, y4 + N / 2), uma segunda localização predefinida (x4 + M / 2 + P, y4 + N / 2), e uma terceira localização predefinida (x4 + M / 2, y4 + N / 2 + Q), onde x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, P é 2 elevado à potência de K, Q é 2 elevado à potência de R, K e R são inteiros não negativos, P é menor que U, Q é menor que V, U é a largura do bloco de referência espacial, e V é a altura do bloco de referência espacial.
[00427] Em uma possível modalidade, as localizações de pixel predefinidas incluem uma localização de pixel superior esquerda do bloco de imagem a-ser-processado, uma localização de pixel superior direita do bloco de imagem a- ser-processado, e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e o primeiro módulo de cálculo 1003 é especificamente configurado para obter, por meio de cálculo de acordo com as seguintes fórmulas, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado: ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) ; e 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) 𝑣𝑥 = 𝑣𝑥 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2) ( ) ( ) . 𝑣𝑦 = 𝑣𝑦 + × (𝑥 − 𝑥 − 𝑀/2) + × (𝑦 − 𝑦 − 𝑁/2)
[00428] Aqui, vx0 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vy0 é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, vx1 é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, vy1 é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, vx2 é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, vy2 é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, vx4 é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, vy4 é um componente vertical do vetor de movimento correspondente à primeira localização predefinida, vx5 é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, vy5 é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, vx6 é um componente horizontal de um vetor de movimento correspondente à terceira localização predefinida, vy6 é um componente vertical do vetor de movimento correspondente à terceira localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser- processado, y0 é uma coordenada vertical da localização de pixel superior esquerda do bloco de imagem a-ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser-processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado, x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
[00429] Em uma possível modalidade, o segundo módulo de cálculo 1004 é especificamente configurado para obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem a-ser- processado: 𝑣𝑥 = 𝑥+ 𝑦 + 𝑣𝑥 . 𝑣𝑦 = 𝑥+ 𝑦 + 𝑣𝑦
[00430] Aqui, W é a largura do bloco de imagem a-ser-
processado, H é a altura do bloco de imagem a-ser-processado, vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e vy é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
[00431] Em uma possível modalidade, quando um limite superior do bloco de imagem a-ser-processado coincide com um limite superior de uma unidade de árvore de codificação CTU incluindo o bloco de imagem a-ser-processado, e o bloco de referência espacial está diretamente acima do bloco de imagem a-ser-processado bloco de imagem a-ser-processado, no canto superior esquerdo do bloco de imagem a-ser-processado, ou no canto superior direito do bloco de imagem a-ser-processado, pelo menos dois dos sub-blocos correspondentes à pluralidade de localizações de sub-bloco predefinidas são adjacentes ao limite superior do bloco de imagem a-ser-processado.
[00432] Em uma possível modalidade, quando um limite esquerdo do bloco de imagem a-ser-processado coincide com um limite esquerdo de uma unidade de árvore de codificação CTU incluindo o bloco de imagem a-ser-processado, e o bloco de referência espacial está diretamente à esquerda do bloco de imagem a-ser-processado, no canto superior esquerdo do bloco de imagem a-ser-processado, ou no canto inferior esquerdo do bloco de imagem a-ser-processado, pelo menos dois dos sub- blocos correspondentes à pluralidade de as localizações de sub-bloco predefinidas são adjacentes ao limite esquerdo do bloco de imagem a-ser-processado.
[00433] Na modalidade anterior da presente invenção, os vetores de movimento interpolados correspondentes à pluralidade de localizações de sub-blocos são usados separadamente para prever uma pluralidade de sub-blocos.
[00434] Deve ser notado que o módulo de obtenção de bloco de referência 1001, o módulo de determinação de sub- bloco 1002, o primeiro módulo de cálculo 1003 e o segundo módulo de cálculo 1004 podem ser usados em um processo de interpredição em um lado de codificador ou um lado de decodificador. Especificamente, no lado de codificador, os módulos podem ser usados na unidade de interpredição 244 na unidade de processamento de predição 260 do codificador 20. No lado de decodificador, os módulos podem ser usados na unidade de interpredição 344 na unidade de processamento de predição 360 do decodificador 30.
[00435] Deve ser notado ainda que para processos de implementação específicos do módulo de obtenção de bloco de referência 1001, o módulo de determinação de sub-bloco 1002, o primeiro módulo de cálculo 1003 e o segundo módulo de cálculo 1004, referem-se a descrições detalhadas nas modalidades na Figura 11, Figura 12 e Figura 14. Para brevidade do relatório descritivo, os detalhes não são descritos aqui.
[00436] Em um ou mais exemplos, as funções descritas podem ser implementadas por hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas por software, as funções podem ser armazenadas ou transmitidas por meio de um meio legível por computador como uma ou mais instruções ou código, e executadas por uma unidade de processamento baseada em hardware. O meio legível por computador pode incluir um meio de armazenamento legível por computador, que corresponde a um meio tangível, como um meio de armazenamento de dados ou um meio de comunicação. O meio de comunicação inclui, por exemplo, de acordo com um protocolo de comunicação, qualquer meio que facilite a transmissão de um programa de computador de um lugar para outro. Desta maneira, o meio legível por computador pode geralmente corresponder a um meio de armazenamento legível por computador tangível não transitório ou um meio de comunicação, por exemplo, um sinal ou uma portadora. O meio de armazenamento de dados pode ser qualquer meio utilizá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 implementar as tecnologias descritas na presente invenção. Um produto de programa de computador pode incluir um meio legível por computador.
[00437] A título de exemplo, mas não de limitação, tal meio de armazenamento legível por computador pode incluir um RAM, um ROM, um EEPROM, um CD-ROM ou outra memória de disco ótico, uma memória de disco magnético ou outro dispositivo de armazenamento magnético, uma memória flash ou qualquer outro meio que pode ser usado para armazenar o código de programa desejado na forma de uma instrução ou uma estrutura de dados e que pode ser acessado por um computador. Além disso, qualquer conexão pode ser apropriadamente referida como um meio legível por computador. Por exemplo, se as instruções são transmitidas de um site, um servidor ou outra fonte remota usando um cabo coaxial, uma fibra ótica, um par trançado, uma linha de assinante digital (digital subscriber line, DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, o cabo coaxial, a fibra ótica, o par trançado, a DSL ou as tecnologias sem fio, como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. No entanto, deve ser entendido que o meio de armazenamento legível por computador e o meio de armazenamento de dados não incluem conexões, portadoras, sinais ou outros meios de comunicação transitórios, mas na verdade significam meios de armazenamento tangíveis não transitórios. Conforme usado neste relatório descritivo, um disco e um disco incluem um disco compacto (compact disc, CD), um disco laser, um disco ótico, um disco versátil digital (digital versatile disc, DVD), um disquete, e um disco Blu-ray. O disco geralmente reproduz os dados magneticamente, mas os reproduz oticamente usando um laser. Uma combinação dos itens anteriores também deve ser incluída no escopo do meio legível por computador.
[00438] Nas modalidades anteriores, as descrições em cada modalidade têm os respectivos focos. Para uma parte que não é descrita em detalhes em uma modalidade, consulte as descrições relacionadas em outras modalidades.

Claims (34)

REIVINDICAÇÕES EMENDADAS
1. Método de predição de vetor de movimento baseado em um modelo de movimento afim, caracterizado pelo fato de que compreende: obter um bloco de referência espacial de um bloco de imagem a-ser-processado; determinar uma pluralidade de localizações de sub-bloco predefinidas do bloco de referência espacial; obter vetores de movimento correspondentes a localizações de pixel predefinidas do bloco de imagem a-ser- processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas do bloco de referência espacial; e obter vetores de movimento correspondentes a uma pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a obtenção de um bloco de referência espacial de um bloco de imagem a-ser-processado compreende: determinar, em uma ordem predefinida, disponibilidade de um ou mais blocos de referência candidatos que são do bloco de imagem a-ser-processado e que estão em localizações espaciais predefinidas; e obter o primeiro bloco de referência candidato disponível na ordem predefinida, em que o primeiro bloco de referência candidato disponível é usado como o bloco de referência espacial.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que quando o bloco de referência candidato e o bloco de imagem a-ser-processado estão em uma mesma região de imagem, e o bloco de referência candidato é codificado com base no modelo de movimento afim, o bloco de referência candidato é determinado estar disponível.
4. Método, de acordo com a reivindicação 2 ou 3, caracterizado pelo fato de que os blocos de referência candidatos nas localizações espaciais predefinidas compreendem um bloco de imagem vizinho diretamente superior, um bloco de imagem vizinho diretamente esquerdo, um bloco de imagem vizinho superior direito, um bloco de imagem vizinho inferior esquerdo e um bloco de imagem vizinho superior esquerdo do bloco de imagem a-ser-processado; e a determinação, em uma ordem predefinida, da disponibilidade de um ou mais blocos de referência candidatos que são do bloco de imagem a-ser-processado e que estão em localizações espaciais predefinidas compreende: verificar sucessivamente a disponibilidade dos blocos de referência candidatos na seguinte ordem: o bloco de imagem vizinho diretamente esquerdo → o bloco de imagem vizinho diretamente superior → o bloco de imagem vizinho superior direito → o bloco de imagem vizinho inferior esquerdo → o bloco de imagem vizinho superior esquerdo, até que o primeiro bloco de referência candidato disponível seja determinado.
5. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que a localização de sub- bloco do bloco de referência espacial ou o bloco de imagem a-ser-processado é: uma localização de um pixel superior esquerdo em um sub- bloco;
uma localização de um centro geométrico de um sub-bloco; ou uma localização de um pixel mais próximo de um centro geométrico em um sub-bloco.
6. Método, de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que uma distância entre duas da pluralidade de localizações de sub-bloco predefinidas é S, em que S é 2 elevado à potência de K, e K é um número inteiro não negativo.
7. Método, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que o modelo de movimento afim é um modelo de movimento afim de 4 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas compreende uma primeira localização predefinida (x4 + M/2, y4 + N/2) e uma segunda localização predefinida (x4 + M/2 + P, y4 + N/2), em que x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é uma largura de sub-bloco, N é uma altura de sub-bloco, P é 2 elevado à potência de K, K é um número inteiro não negativo, K é menor que U, e U é uma largura do bloco de referência espacial.
8. Método, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que o modelo de movimento afim é um modelo de movimento afim de 4 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas compreende uma primeira localização predefinida (x4 + M/2, y4 + N/2) e uma terceira localização predefinida (x4 + M/2, y4 + N/2 + Q), em que x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é uma largura de sub-bloco, N é uma altura de sub-bloco, Q é 2 elevado à potência de R, R é um número inteiro não negativo, Q é menor que V, e V é uma altura do bloco de referência espacial.
9. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que as localizações de pixel predefinidas compreendem pelo menos duas de uma localização de pixel superior esquerda do bloco de imagem a-ser-processado, uma localização de pixel superior direita do bloco de imagem a- ser-processado, e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e a obtenção de vetores de movimento correspondentes a localizações de pixel predefinidas do bloco de imagem a-ser-processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas compreende: obter, por meio de cálculo de acordo com as seguintes fórmulas, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a- ser-processado: = + ×( − − /2) − ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) ; = + ×( − − /2) − ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) ; e = + ×( − − /2) − ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) , em que é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser- processado, é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, é um componente vertical do vetor de movimento correspondente à primeira localização predefinida, é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser-processado, y0 é uma coordenada vertical da localização de pixel superior esquerda do bloco de imagem a- ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser- processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado, x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que as localizações de pixel predefinidas compreendem a localização de pixel superior esquerda do bloco de imagem a-ser-processado e a localização de pixel superior direita do bloco de imagem a-ser- processado, e a obtenção de vetores de movimento correspondentes a uma pluralidade de localizações de sub- bloco do bloco de imagem a-ser-processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas compreende: obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem = − + a-ser-processado: = + + , em que W é uma largura do bloco de imagem a-ser-processado, vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
11. Método, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que o modelo de movimento afim é um modelo de movimento afim de 6 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas compreende uma primeira localização predefinida (x4 + M/2, y4 + N/2), uma segunda localização predefinida (x4 + M/2 +
P, y4 + N/2) e uma terceira localização predefinida (x4 + M/2, y4 + N/2 + Q), em que x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, P é 2 elevado à potência de K, Q é 2 elevado à potência de R, K e R são inteiros não negativos, P é menor que U, Q é menor que V, U é a largura do bloco de referência espacial, e V é a altura do quadro de referência espacial.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que as localizações de pixel predefinidas compreendem uma localização de pixel superior esquerda do bloco de imagem a-ser-processado, uma localização de pixel superior direita do bloco de imagem a- ser-processado, e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e a obtenção de vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas compreende: calcular de acordo com as seguintes fórmulas, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado: = + ×( − − /2) + ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) ; = + ×( − − /2) + ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) ; e
= + ×( − − /2) + ×( − − /2) ( ) ( )
= + ×( − − /2) + ×( − − /2) ( ) ( ) ,
em que é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser- processado, é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, é um componente vertical do vetor de movimento correspondente à primeira localização predefinida, é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, ! é um componente horizontal de um vetor de movimento correspondente à terceira localização predefinida, ! é um componente vertical do vetor de movimento correspondente à terceira localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser- processado, y0 é uma coordenada vertical da localização de pixel superior esquerda do bloco de imagem a-ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser-processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado, x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
13. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que a obtenção de vetores de movimento correspondentes a uma pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas compreende: obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem = + + a-ser-processado: " # = + " + , em que # W é uma largura do bloco de imagem a-ser-processado, H é uma altura do bloco de imagem a-ser-processado, vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
14. Método, de acordo com qualquer uma das reivindicações 1 a 13, caracterizado pelo fato de que quando um limite superior do bloco de imagem a-ser-processado coincide com um limite superior de uma unidade de árvore de codificação CTU compreendendo o bloco de imagem a-ser-processado, e o bloco de referência espacial está diretamente acima do bloco de imagem a-ser-processado, na parte superior esquerda do bloco de imagem a-ser-processado, ou na parte superior direita do bloco de imagem a-ser-processado, pelo menos dois de sub- blocos correspondentes à pluralidade de localizações de sub- blocos predefinidas são adjacentes ao limite superior do bloco de imagem a-ser-processado.
15. Método, de acordo com qualquer uma das reivindicações 1 a 13, caracterizado pelo fato de que quando um limite esquerdo do bloco de imagem a-ser-processado coincide com um limite esquerdo de uma unidade de árvore de codificação CTU compreendendo o bloco de imagem a-ser-processado, e o bloco de referência espacial está diretamente à esquerda do bloco de imagem a-ser-processado, na parte superior esquerda do bloco de imagem a-ser-processado, ou na parte inferior esquerda do bloco de imagem a-ser-processado, pelo menos dois dos sub-blocos correspondentes à pluralidade de localizações de sub-bloco predefinidas são adjacentes ao limite esquerdo do bloco de imagem a-ser-processado.
16. Método, de acordo com qualquer uma das reivindicações 1 a 15, caracterizado pelo fato de que os vetores de movimento interpolados correspondentes à pluralidade de localizações de sub-blocos são usados separadamente para prever uma pluralidade de sub-blocos.
17. Dispositivo, caracterizado pelo fato de que compreende: um módulo de obtenção de bloco de referência, configurado para obter um bloco de referência espacial de um bloco de imagem a-ser-processado em dados de vídeo; um módulo de determinação de sub-bloco, configurado para determinar uma pluralidade de localizações de sub-bloco predefinidas do bloco de referência espacial; um primeiro módulo de cálculo, configurado para obter vetores de movimento correspondentes a localizações de pixel predefinidas do bloco de imagem a-ser-processado que são extrapolados a partir de vetores de movimento correspondentes às localizações de sub-bloco predefinidas do bloco de referência espacial; e um segundo módulo de cálculo, configurado para obter vetores de movimento correspondentes a uma pluralidade de localizações de sub-bloco do bloco de imagem a-ser- processado que são interpolados a partir dos vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado.
18. Dispositivo, de acordo com a reivindicação 17, caracterizado pelo fato de que o módulo de obtenção de bloco de referência é especificamente configurado para: determinar, em uma ordem predefinida, disponibilidade de um ou mais blocos de referência candidatos que são do bloco de imagem a-ser-processado e que estão em localizações espaciais predefinidas; e obter o primeiro bloco de referência candidato disponível na ordem predefinida, em que o primeiro bloco de referência candidato disponível é usado como o bloco de referência espacial.
19. Dispositivo, de acordo com a reivindicação 18, caracterizado pelo fato de que quando o bloco de referência candidato e o bloco de imagem a-ser-processado estão em uma mesma região de imagem, e o bloco de referência candidato é codificado com base em um modelo de movimento afim, o bloco de referência candidato é determinado estar disponível.
20. Dispositivo, de acordo com a reivindicação 18 ou 19, caracterizado pelo fato de que os blocos de referência candidatos nas localizações espaciais predefinidas compreendem um bloco de imagem vizinho diretamente superior, um bloco de imagem vizinho diretamente esquerdo, um bloco de imagem vizinho superior direito, um bloco de imagem vizinho inferior esquerdo e um bloco de imagem vizinho superior esquerdo do bloco de imagem a-ser-processado; e o módulo de obtenção de bloco de referência é especificamente configurado para verificar sucessivamente a disponibilidade dos blocos de referência candidatos na seguinte ordem: o bloco de imagem vizinho diretamente esquerdo → o bloco de imagem vizinho diretamente superior → o bloco de imagem vizinho superior direito → o bloco de imagem vizinho inferior esquerdo → o bloco de imagem vizinho superior esquerdo, até que o primeiro bloco de referência candidato disponível seja determinado.
21. Dispositivo, de acordo com qualquer uma das reivindicações 17 a 20, caracterizado pelo fato de que a localização de sub-bloco do bloco de referência espacial ou do bloco de imagem a-ser-processado é: uma localização de um pixel superior esquerdo em um sub- bloco; uma localização de um centro geométrico de um sub-bloco;
ou uma localização de um pixel mais próximo de um centro geométrico em um sub-bloco.
22. Dispositivo, de acordo com qualquer uma das reivindicações 17 a 21, caracterizado pelo fato de que uma distância entre duas da pluralidade de localizações de sub- bloco predefinidas é S, em que S é 2 elevado à potência de K, e K é um número inteiro não negativo.
23. Dispositivo, de acordo com qualquer uma das reivindicações 17 a 22, caracterizado pelo fato de que o modelo de movimento afim é um modelo de movimento afim de 4 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas compreende uma primeira localização predefinida (x4 + M/2, y4 + N/2) e uma segunda localização predefinida (x4 + M/2 + P, y4 + N/2), em que x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é uma largura de sub-bloco, N é uma altura de sub-bloco, P é 2 elevado à potência de K, K é um número inteiro não negativo, K é menor que U, e U é uma largura do bloco de referência espacial.
24. Dispositivo, de acordo com qualquer uma das reivindicações 17 a 22, caracterizado pelo fato de que o modelo de movimento afim é um modelo de movimento afim de 4 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas compreende uma primeira localização predefinida (x4 + M/2, y4 + N/2) e uma terceira localização predefinida (x4 + M/2, y4 + N/2 + Q), em que x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é uma largura de sub-bloco, N é uma altura de sub-bloco, Q é 2 elevado à potência de R, R é um número inteiro não negativo, Q é menor que V, e V é uma altura do bloco de referência espacial.
25. Dispositivo, de acordo com a reivindicação 23, caracterizado pelo fato de que as localizações de pixel predefinidas compreendem pelo menos duas de uma localização de pixel superior esquerda do bloco de imagem a-ser- processado, uma localização de pixel superior direita do bloco de imagem a-ser-processado, e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e o primeiro módulo de cálculo é especificamente configurado para obter, por meio de cálculo de acordo com as seguintes fórmulas, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser- processado: = + ×( − − /2) − ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) ; = + ×( − − /2) − ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) ; e , em que é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser- processado, é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, é um componente vertical do vetor de movimento correspondente à primeira localização predefinida, é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser-processado, y0 é uma coordenada vertical da localização de pixel superior esquerda do bloco de imagem a- ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser- processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado, x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
26. Dispositivo, de acordo com a reivindicação 25, caracterizado pelo fato de que as localizações de pixel predefinidas compreendem a localização de pixel superior esquerda do bloco de imagem a-ser-processado e a localização de pixel superior direita do bloco de imagem a-ser- processado, e o segundo módulo de cálculo é especificamente configurado para obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem = − + a-ser-processado: = + + , em que W é uma largura do bloco de imagem a-ser-processado, vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
27. Dispositivo, de acordo com qualquer uma das reivindicações 17 a 22, caracterizado pelo fato de que o modelo de movimento afim é um modelo de movimento afim de 6 parâmetros, e a pluralidade de localizações de sub-bloco predefinidas compreende uma primeira localização predefinida (x4 + M/2, y4 + N/2), uma segunda localização predefinida (x4 + M/2 + P, y4 + N/2) e uma terceira localização predefinida (x4 + M/2, y4 + N/2 + Q), em que x4 é uma coordenada horizontal de um pixel superior esquerdo do bloco de referência espacial, y4 é uma coordenada vertical do pixel superior esquerdo do bloco de referência espacial, M é a largura de sub-bloco, N é a altura de sub-bloco, P é 2 elevado à potência de K, Q é 2 elevado à potência de R, K e R são inteiros não negativos, P é menor que U, Q é menor que V, U é a largura do bloco de referência espacial, e V é a altura do quadro de referência espacial.
28. Dispositivo, de acordo com a reivindicação 27, caracterizado pelo fato de que as localizações de pixel predefinidas compreendem uma localização de pixel superior esquerda do bloco de imagem a-ser-processado, uma localização de pixel superior direita do bloco de imagem a- ser-processado, e uma localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e o primeiro módulo de cálculo é especificamente configurado para obter, por meio de cálculo de acordo com as seguintes fórmulas, os vetores de movimento correspondentes às localizações de pixel predefinidas do bloco de imagem a-ser-processado: = + ×( − − /2) + ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) ; = + ×( − − /2) + ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) ; e = + ×( − − /2) + ×( − − /2) ( ) ( ) = + ×( − − /2) + ×( − − /2) ( ) ( ) , em que é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel superior esquerda do bloco de imagem a-ser- processado, é um componente horizontal de um vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel superior direita do bloco de imagem a- ser-processado, é um componente horizontal de um vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a-ser-processado, é um componente vertical do vetor de movimento correspondente à localização de pixel inferior esquerda do bloco de imagem a- ser-processado, é um componente horizontal de um vetor de movimento correspondente à primeira localização predefinida, é um componente vertical do vetor de movimento correspondente à primeira localização predefinida, é um componente horizontal de um vetor de movimento correspondente à segunda localização predefinida, é um componente vertical do vetor de movimento correspondente à segunda localização predefinida, ! é um componente horizontal de um vetor de movimento correspondente à terceira localização predefinida, ! é um componente vertical do vetor de movimento correspondente à terceira localização predefinida, x0 é uma coordenada horizontal da localização de pixel superior esquerda do bloco de imagem a-ser- processado, y0 é uma coordenada vertical da localização de pixel superior esquerda do bloco de imagem a-ser-processado, x1 é uma coordenada horizontal da localização de pixel superior direita do bloco de imagem a-ser-processado, y1 é uma coordenada vertical da localização de pixel superior direita do bloco de imagem a-ser-processado, x2 é uma coordenada horizontal da localização de pixel inferior esquerda do bloco de imagem a-ser-processado, e y2 é uma coordenada vertical da localização de pixel inferior esquerda do bloco de imagem a-ser-processado.
29. Dispositivo, de acordo com a reivindicação 28, caracterizado pelo fato de que o segundo módulo de cálculo é especificamente configurado para obter, por meio de cálculo de acordo com a seguinte fórmula, os vetores de movimento correspondentes à pluralidade de localizações de sub-bloco do bloco de imagem a-ser-processado: , em que W é uma largura do bloco de imagem a-ser-processado, H é uma altura do bloco de imagem a-ser-processado, vx é um componente horizontal de um vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco, e é um componente vertical do vetor de movimento correspondente a (x, y) na pluralidade de localizações de sub-bloco.
30. Dispositivo, de acordo com qualquer uma das reivindicações 17 a 29, caracterizado pelo fato de que quando um limite superior do bloco de imagem a-ser-processado coincide com um limite superior de uma unidade de árvore de codificação CTU compreendendo o bloco de imagem a-ser- processado, e o bloco de referência espacial está diretamente acima do bloco de imagem a-ser-processado, na parte superior esquerda do bloco de imagem a-ser-processado, ou na parte superior direita do bloco de imagem a-ser-processado, pelo menos dois de sub-blocos correspondentes à pluralidade de localizações de sub-blocos predefinidas são adjacentes ao limite superior do bloco de imagem a-ser-processado.
31. Dispositivo, de acordo com qualquer uma das reivindicações 17 a 29, caracterizado pelo fato de que quando um limite esquerdo do bloco de imagem a-ser-processado coincide com um limite esquerdo de uma unidade de árvore de codificação CTU compreendendo o bloco de imagem a-ser- processado, e o bloco de referência espacial está diretamente à esquerda do bloco de imagem a-ser-processado, na parte superior esquerda do bloco de imagem a-ser-processado, ou na parte inferior esquerda do bloco de imagem a-ser-processado, pelo menos dois dos sub-blocos correspondentes à pluralidade de localizações de sub-bloco predefinidas são adjacentes ao limite esquerdo do bloco de imagem a-ser-processado.
32. Dispositivo, de acordo com qualquer uma das reivindicações de 17 a 31, caracterizado pelo fato de que os vetores de movimento interpolados correspondentes à pluralidade de localizações de sub-blocos são usados separadamente para prever uma pluralidade de sub-blocos.
33. Dispositivo de codificação de vídeo, compreendendo uma memória não volátil e um processador que são acoplados um ao outro, caracterizado pelo fato de que o processador invoca o código de programa armazenado na memória, para realizar o método conforme definido em qualquer uma das reivindicações 1 a 16.
34. Meio legível por computador não transitório caracterizado pelo fato de que transporta um código de programa que, quando executado por um dispositivo de computador ou um processador, faz com que o dispositivo de computador ou o processador realize o método conforme definido em qualquer uma das reivindicações 1 a 16.
BR112021004505-8A 2018-09-10 2019-06-14 método de predição de vetor de movimento baseado em modelo de movimento afim e dispositivo BR112021004505A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201811051662 2018-09-10
CN201811051662.6 2018-09-10
CN201811096702.9A CN110891176B (zh) 2018-09-10 2018-09-19 基于仿射运动模型的运动矢量预测方法及设备
CN201811096702.9 2018-09-19
PCT/CN2019/091364 WO2020052304A1 (zh) 2018-09-10 2019-06-14 基于仿射运动模型的运动矢量预测方法及设备

Publications (1)

Publication Number Publication Date
BR112021004505A2 true BR112021004505A2 (pt) 2021-06-08

Family

ID=69745703

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021004505-8A BR112021004505A2 (pt) 2018-09-10 2019-06-14 método de predição de vetor de movimento baseado em modelo de movimento afim e dispositivo

Country Status (9)

Country Link
US (1) US11539975B2 (pt)
EP (1) EP3840380A4 (pt)
JP (1) JP7279154B2 (pt)
KR (1) KR102620024B1 (pt)
CN (1) CN110891176B (pt)
BR (1) BR112021004505A2 (pt)
CA (1) CA3112368A1 (pt)
SG (1) SG11202102361WA (pt)
WO (1) WO2020052304A1 (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114222135A (zh) * 2018-12-13 2022-03-22 北京达佳互联信息技术有限公司 视频编码方法以及设备
SG11202111760SA (en) * 2019-04-25 2021-11-29 Op Solutions Llc Signaling of global motion vector in picture header
JP2021103871A (ja) * 2019-12-26 2021-07-15 マクセル株式会社 画像符号化方法および画像復号方法
CN113630602B (zh) * 2021-06-29 2024-07-02 杭州未名信科科技有限公司 编码单元的仿射运动估计方法、装置、存储介质及终端
CN113630601B (zh) * 2021-06-29 2024-04-02 杭州未名信科科技有限公司 一种仿射运动估计方法、装置、设备及存储介质
WO2023051641A1 (en) * 2021-09-28 2023-04-06 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
CN118056403A (zh) * 2021-09-29 2024-05-17 Lg 电子株式会社 图像编码/解码方法和装置以及存储比特流的记录介质
WO2024037638A1 (en) * 2022-08-18 2024-02-22 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing
CN116117800B (zh) * 2022-12-19 2023-08-01 广东建石科技有限公司 补偿高度差的机器视觉处理方法、电子设备及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3715283B2 (ja) * 2003-02-04 2005-11-09 株式会社半導体理工学研究センター 動画像の画像圧縮符号化方法及び装置
JP2012023597A (ja) * 2010-07-15 2012-02-02 Sony Corp 画像処理装置及び画像処理方法
KR101739987B1 (ko) * 2010-12-28 2017-05-26 에스케이 텔레콤주식회사 주변블록의 특징벡터를 이용한 영상 부호화/복호화 방법 및 장치
CN109005407B (zh) * 2015-05-15 2023-09-01 华为技术有限公司 视频图像编码和解码的方法、编码设备和解码设备
CN108600749B (zh) * 2015-08-29 2021-12-28 华为技术有限公司 图像预测的方法及设备
CN108432250A (zh) * 2016-01-07 2018-08-21 联发科技股份有限公司 用于视频编解码的仿射帧间预测的方法及装置
WO2017130696A1 (ja) 2016-01-29 2017-08-03 シャープ株式会社 予測画像生成装置、動画像復号装置、および動画像符号化装置
EP3414900A4 (en) 2016-03-15 2019-12-11 Mediatek Inc. METHOD AND DEVICE FOR VIDEO CODING WITH AFFINE MOTION COMPENSATION
WO2017156705A1 (en) * 2016-03-15 2017-09-21 Mediatek Inc. Affine prediction for video coding
US10560712B2 (en) * 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
WO2018061563A1 (ja) * 2016-09-27 2018-04-05 シャープ株式会社 アフィン動きベクトル導出装置、予測画像生成装置、動画像復号装置、および動画像符号化装置
US10448010B2 (en) * 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
US10681370B2 (en) * 2016-12-29 2020-06-09 Qualcomm Incorporated Motion vector generation for affine motion model for video coding

Also Published As

Publication number Publication date
EP3840380A4 (en) 2021-10-13
WO2020052304A1 (zh) 2020-03-19
US11539975B2 (en) 2022-12-27
KR102620024B1 (ko) 2023-12-29
CA3112368A1 (en) 2020-03-19
CN110891176A (zh) 2020-03-17
EP3840380A1 (en) 2021-06-23
US20210235105A1 (en) 2021-07-29
JP7279154B2 (ja) 2023-05-22
CN110891176B (zh) 2023-01-13
KR20210052536A (ko) 2021-05-10
JP2021536197A (ja) 2021-12-23
SG11202102361WA (en) 2021-04-29

Similar Documents

Publication Publication Date Title
BR112021004505A2 (pt) método de predição de vetor de movimento baseado em modelo de movimento afim e dispositivo
CN112005551B (zh) 一种视频图像预测方法及装置
BR112021006892A2 (pt) método e aparelho de predição inter
ES2965276T3 (es) Método de decodificación de vídeo y decodificador de vídeo
BR112021007592A2 (pt) método e aparelho para determinar informações de movimento para um bloco atual, método e aparelho para construir e atualizar uma lista de preditores de vetor de movimento baseada em histórico, e meio de armazenamento legível por computador não transitório, e métodos e aparelho de codificação/decodificação de vídeo
US11516464B2 (en) Method for obtaining candidate motion vector list, apparatus, encoder, and decoder
CN111107373B (zh) 基于仿射预测模式的帧间预测的方法及相关装置
BR112021004124A2 (pt) método de decodificação de vídeo e decodificador de vídeo
CN111698515B (zh) 帧间预测的方法及相关装置
US12058362B2 (en) Inter prediction method and apparatus
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR112021010896A2 (pt) Método e aparelho de codificação e decodificação de imagem de vídeo
US12069288B2 (en) Inter prediction method and related apparatus
US20210329289A1 (en) Inter prediction method and apparatus
EP3893505A1 (en) Method and device for determining prediction mode, coding device, and decoding device