BR112021003965A2 - método e aparelho de obtenção de vetor de movimento, dispositivo de computador, e meio de armazenamento - Google Patents
método e aparelho de obtenção de vetor de movimento, dispositivo de computador, e meio de armazenamento Download PDFInfo
- Publication number
- BR112021003965A2 BR112021003965A2 BR112021003965-1A BR112021003965A BR112021003965A2 BR 112021003965 A2 BR112021003965 A2 BR 112021003965A2 BR 112021003965 A BR112021003965 A BR 112021003965A BR 112021003965 A2 BR112021003965 A2 BR 112021003965A2
- Authority
- BR
- Brazil
- Prior art keywords
- motion vector
- block
- processed
- candidate
- final
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
MÉTODO E APARELHO DE OBTENÇÃO DE VETOR DE MOVIMENTO, DISPOSITIVO DE COMPUTADOR, E MEIO DE ARMAZENAMENTO
Este pedido divulga um método de obtenção de vetor de movimento e aparelho, um dispositivo de computador e um meio de armazenamento e pertence ao campo das tecnologias de compressão de vídeo. No método, um vetor de movimento inicial de um bloco de imagem a ser processado é determinado usando uma relação de localização entre um bloco de referência e o bloco de imagem a ser processado. Quando o bloco de referência e o bloco de imagem a ser processado estão localizados no mesmo bloco de árvore de codificação, um decodificador usa um vetor de movimento inicial do bloco de referência como o vetor de movimento inicial do bloco de imagem a ser processado. Quando o bloco de referência e o bloco de imagem a ser processado estão localizados em diferentes blocos de árvore de codificação, o decodificador usa um vetor de movimento final do bloco de referência como o vetor de movimento inicial do bloco de imagem a ser processado. Neste caso, quando o vetor de movimento final do bloco de referência é necessário para o bloco de imagem a ser processado, o vetor de movimento inicial do bloco de referência pode ser usado como o vetor de movimento final do bloco de referência, de modo que o bloco de imagem a ser processado pode ser usado, evitando assim um caso em que o bloco de imagem a ser processado pode ser decodificado somente após o vetor de movimento final do bloco de referência ser obtido, e melhorando a eficiência de decodificação.
Description
[0001] Este pedido reivindica prioridade ao Pedido de Patente Chinesa nº 201811020181.9, depositado em 3 de setembro de 2018 e intitulado "VIDEO CODING METHOD AND APPARATUS", o qual é incorporado neste documento por referência em sua totalidade.
[0002] Este pedido reivindica prioridade ao Pedido de Patente Chinesa nº 201811271726.3, depositado em 29 de outubro de 2018 e intitulado "MOTION VECTOR OBTAINING METHOD AND APPARATUS, COMPUTER DEVICE, AND STORAGE MEDIUM", o qual é incorporado neste documento por referência em sua totalidade.
[0003] Este pedido se refere ao campo das tecnologias de compressão de vídeo e, em particular, a um método e aparelho de obtenção de vetor de movimento, um dispositivo computador e um meio de armazenamento.
[0004] Na vida cotidiana, os pedidos relacionados a vídeo são cada vez mais populares. Com a maturidade das tecnologias de computador, as tecnologias de processamento de vídeo também se desenvolveram muito. As tecnologias de codificação de vídeo se desenvolveram de forma proeminente. Quando uma unidade de codificação em um quadro de imagem é codificada, a redundância pode ser removida tanto quanto possível usando a correlação entre a unidade de codificação e uma unidade de predição. Durante a decodificação, a informação obtida após a remoção da redundância é decodificada para obter informação de imagem correspondentes à unidade de codificação.
[0005] Um processo de decodificação pode ser o seguinte: após obter informação de movimento da unidade de codificação, um decodificador estabelece uma lista de vetores de movimento preditos candidatos com base na informação de movimento, seleciona um vetor de movimento predito ótimo da lista de vetores de movimento preditos candidatos com base na informação de movimento obtida, pesquisa uma unidade de predição mais semelhante à unidade de codificação usando uma unidade de referência indicada pelo vetor de movimento predito ótimo como um ponto inicial, atualiza o vetor de movimento predito ótimo na lista de vetores de movimento preditos candidatos para um vetor de movimento da unidade predição, isto é, o vetor de movimento predito atualizado é um vetor de movimento predito da unidade de codificação, e obtém, com base no vetor de movimento predito atualizado e na unidade de predição, a informação de imagem correspondente à unidade de codificação.
[0006] Em um processo de implementação deste pedido, o inventor descobre que uma tecnologia relacionada tem pelo menos as seguintes desvantagens: um decodificador pode decodificar simultaneamente uma pluralidade de unidades de codificação durante a decodificação. No entanto, quando um vetor de movimento predito de uma unidade de codificação atual precisa ser usado para outra unidade de codificação, a decodificação pode ser realizada apenas após um vetor de movimento predito ótimo da unidade de codificação atual ser atualizado e, consequentemente, é muito provável que ocorra um atraso.
[0007] As modalidades deste pedido fornecem um método e aparelho de obtenção de vetor de movimento, um dispositivo computador e um meio de armazenamento para resolver um problema de atraso de decodificação em uma tecnologia relacionada.
[0008] De acordo com um aspecto, este pedido fornece um método de obtenção de vetor de movimento, incluindo: determinar um bloco de referência de um bloco de imagem a ser processado, onde o bloco de referência e o bloco de imagem a ser processado estão localizados em um mesmo quadro de imagem; quando o bloco de referência cai dentro de um intervalo predefinido, obter um vetor de movimento do bloco de imagem a ser processado com base em um vetor de movimento inicial do bloco de referência, onde o intervalo predefinido é determinado com base em uma localização do bloco de imagem a ser processado; e quando o bloco de referência cai além do intervalo predefinido, obter um vetor de movimento do bloco de imagem a ser processado com base em um vetor de movimento final do bloco de referência, onde o vetor de movimento final é obtido com base no vetor de movimento inicial.
[0009] Em uma implementação possível, o bloco de referência cai dentro de um intervalo predefinido inclui: um bloco de árvore de codificação CTB no qual o bloco de referência está localizado e um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados em uma mesma linha; e correspondentemente, o bloco de referência cair além do intervalo predefinido inclui: o bloco de árvore de codificação no qual o bloco de referência está localizado e o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados em linhas diferentes.
[0010] Com base na implementação possível anterior, diferentes intervalos predefinidos podem ser fornecidos, de modo que o vetor de movimento do bloco de imagem a ser processado possa ser determinado com base nos diferentes intervalos predefinidos e uma pluralidade de vetores de movimento do bloco de imagem a ser processado pode ser selecionada.
[0011] Em uma implementação possível, o bloco de árvore de codificação no qual o bloco de referência está localizado e o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados em linhas diferentes, e o bloco de árvore de codificação no qual o bloco de referência está localizado está acima ou no canto superior esquerdo do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado.
[0012] Com base na possível implementação anterior, outro intervalo predefinido pode ser fornecido, de modo que uma pluralidade de condições predefinidas possa ser fornecida para a seleção de vetor de movimento.
[0013] Em uma implementação possível, o bloco de referência cair dentro de um intervalo predefinido inclui: o bloco de referência e o bloco de imagem a ser processado estão localizados em um mesmo bloco de árvore de codificação; e correspondentemente, que o bloco de referência caia além do intervalo predefinido inclui: o bloco de referência e o bloco de imagem a ser processado estão localizados em diferentes blocos da árvore de codificação.
[0014] Com base na possível implementação anterior, uma pluralidade de intervalos predefinidos específicos possíveis pode ser fornecida.
[0015] Em uma implementação possível, em que o bloco de referência cai dentro de um intervalo predefinido inclui: um bloco de árvore de codificação no qual o bloco de referência está localizado é o mesmo que um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, ou um o bloco de árvore de codificação no qual o bloco de referência está localizado é um bloco vizinho à esquerda ou vizinho à direita de um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado; e correspondentemente, que o bloco de referência caia além do intervalo predefinido inclui: o bloco de árvore de codificação no qual o bloco de referência está localizado não é o mesmo que o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, ou o bloco de árvore de codificação no qual o bloco de referência está localizado não é um bloco vizinho à esquerda ou vizinho à direita do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado.
[0016] Com base na possível implementação anterior, uma pluralidade de intervalos predefinidos específicos possíveis pode ser fornecida.
[0017] Em uma implementação possível, a determinação de um bloco de referência de um bloco de imagem a ser processado inclui: determinar sequencialmente um ou mais blocos de referência candidatos predefinidos como o bloco de referência em uma ordem predefinida, onde o bloco de referência candidato inclui um bloco de imagem que tem uma relação de localização espacial predefinida com o bloco de imagem a ser processado.
[0018] Com base na implementação possível anterior, o bloco de referência do bloco de imagem a ser processado pode ser determinado e, em seguida, um vetor de movimento inicial do bloco de imagem a ser processado pode ser determinado com base no bloco de referência.
[0019] Em uma implementação possível, a determinação de um bloco de referência de um bloco de imagem a ser processado inclui: analisar um fluxo de bits para obter um ou mais pedaços da primeira informação de identificação; e determinar o bloco de referência a partir de uma pluralidade de blocos de referência candidatos do bloco de imagem a ser processado com base em uma ou mais peças da primeira informação de identificação, em que o bloco de referência candidato inclui um bloco de imagem que tem uma relação de localização espacial predefinida com o bloco de imagem a ser processado.
[0020] Com base na implementação possível anterior, o bloco de referência do bloco de imagem a ser processado pode ser determinado com base na informação de identificação no fluxo de bits e, em seguida, um vetor de movimento inicial do bloco de imagem a ser processado pode ser determinado com base no bloco de referência.
[0021] Em uma implementação possível, que o vetor de movimento final seja obtido com base no vetor de movimento inicial inclui: adicionar separadamente o vetor de movimento inicial e uma pluralidade de vetores de deslocamento predefinidos para obter uma pluralidade de vetores de movimento finais candidatos; e determinar um vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de vetores de movimento finais candidatos como o vetor de movimento final.
[0022] Com base na implementação possível anterior, o vetor de movimento final candidato correspondente ao custo de distorção mínimo é usado como o vetor de movimento final, de modo que o vetor de movimento final seja mais preciso.
[0023] Em uma implementação possível, o método é usado para inter-predição bidirecional, o vetor de movimento final inclui um primeiro vetor de movimento final e um segundo vetor de movimento final, e o vetor de movimento inicial inclui um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial; o primeiro vetor de movimento final e o primeiro vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma primeira lista de quadros de referência do bloco de imagem a ser processado, e o segundo vetor de movimento final e o segundo vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado; e que o vetor de movimento final é obtido com base no vetor de movimento inicial inclui: adicionar separadamente o primeiro vetor de movimento inicial e uma pluralidade de vetores de deslocamento predefinidos para obter uma pluralidade de primeiros vetores de movimento finais candidatos; determinar um primeiro vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de primeiros vetores de movimento finais candidatos como o primeiro vetor de movimento final, onde o primeiro vetor de movimento final corresponde a um primeiro vetor de deslocamento na pluralidade de vetores de deslocamento predefinidos; obter um segundo vetor de deslocamento, onde um tamanho do segundo vetor de deslocamento é igual ao do primeiro vetor de deslocamento e uma direção do segundo vetor de deslocamento é oposta àquela do primeiro vetor de deslocamento; e adicionar o segundo vetor de movimento inicial e o segundo vetor de deslocamento para obter o segundo vetor de movimento final.
[0024] Com base na implementação possível anterior, o vetor de movimento final é obtido com base no vetor de movimento inicial no modo de predição bidirecional.
[0025] Em uma implementação possível, o método é usado para inter-predição bidirecional, o vetor de movimento final inclui um primeiro vetor de movimento final e um segundo vetor de movimento final, e o vetor de movimento inicial inclui um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial; o primeiro vetor de movimento final e o primeiro vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma primeira lista de quadros de referência do bloco de imagem a ser processado, e o segundo vetor de movimento final e o segundo vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado; e que o vetor de movimento final é obtido com base no vetor de movimento inicial inclui: adicionar separadamente o primeiro vetor de movimento inicial e uma pluralidade de primeiros vetores de deslocamento predefinidos para obter uma pluralidade de primeiros vetores de movimento finais candidatos; determinar um primeiro vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de primeiros vetores de movimento finais candidatos como o primeiro vetor de movimento final; adicionar separadamente o segundo vetor de movimento inicial e uma pluralidade de segundos vetores de deslocamento predefinidos para obter uma pluralidade de segundos vetores de movimento finais candidatos; e determinar um segundo vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de segundos vetores de movimento finais candidatos como o segundo vetor de movimento final.
[0026] Com base na implementação possível anterior, outra maneira de obter o vetor de movimento final com base no vetor de movimento inicial no modo de predição bidirecional é fornecida, de modo que uma pluralidade de maneiras de obter o vetor de movimento final no modo de predição bidirecional pode ser fornecida.
[0027] De acordo com um segundo aspecto, este pedido fornece um método de determinação de residual de vetor de movimento, incluindo:
analisar um fluxo de bits para obter a segunda informação de identificação, onde a segunda informação de identificação é usada para determinar um vetor de movimento inicial de um bloco de imagem a ser processado; adicionar separadamente o vetor de movimento inicial e uma pluralidade de vetores de deslocamento predefinidos para obter uma pluralidade de vetores de movimento finais candidatos; determinar um vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de vetores de movimento finais candidatos como o vetor de movimento final; e usar uma diferença entre o vetor de movimento final e o vetor de movimento inicial como um residual de vetor de movimento do bloco de imagem a ser processado, ou usando o vetor de movimento final como um residual de vetor de movimento do bloco de imagem a ser processado.
[0028] Em uma implementação possível, o método é usado para inter-predição bidirecional, o vetor de movimento final inclui um primeiro vetor de movimento final e um segundo vetor de movimento final, e o vetor de movimento inicial inclui um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial; o primeiro vetor de movimento final e o primeiro vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma primeira lista de quadros de referência do bloco de imagem a ser processado, e o segundo vetor de movimento final e o segundo vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado; e o uso de uma diferença entre o vetor de movimento final e o vetor de movimento inicial como um residual de vetor de movimento do bloco de imagem a ser processado inclui: usar uma diferença entre o primeiro vetor de movimento final e o primeiro vetor de movimento inicial como um primeiro residual de vetor de movimento do bloco de imagem a ser processado.
[0029] Com base nas possíveis implementações anteriores, o residual de vetor de movimento do bloco de imagem a ser processado pode ser determinado no modo de inter-predição bidirecional.
[0030] Em uma implementação possível, o uso de uma diferença entre o vetor de movimento final e o vetor de movimento inicial como um residual de vetor de movimento do bloco de imagem a ser processado inclui ainda: usar uma diferença entre o segundo vetor de movimento final e o segundo vetor de movimento inicial como um segundo residual de vetor de movimento do bloco de imagem a ser processado.
[0031] Em uma implementação possível, o uso do vetor de movimento final como um residual de vetor de movimento do bloco de imagem a ser processado inclui: usar o primeiro vetor de movimento final como o primeiro residual de vetor de movimento do bloco de imagem a ser processado.
[0032] Em uma implementação possível, o uso do vetor de movimento final como um residual de vetor de movimento do bloco de imagem a ser processado inclui ainda: usar o segundo vetor de movimento final como um segundo residual de vetor de movimento do bloco de imagem a ser processado.
[0033] Com base na pluralidade anterior de possíveis implementações, uma pluralidade de métodos para determinar o residual de vetor de movimento do bloco de imagem a ser processado é fornecida, de modo que um codificador e um decodificador possam melhorar a eficiência de codificação e a eficiência de decodificação com base no residual de vetor de movimento.
[0034] De acordo com um terceiro aspecto, este pedido fornece um método de armazenamento de dados de vetor de movimento, incluindo: analisar um fluxo de bits para obter a segunda informação de identificação e a terceira informação de identificação, onde a segunda informação de identificação é usada para determinar um vetor de movimento predito inicial de um bloco de imagem a ser processado; obter um vetor de movimento predito final com base no vetor de movimento predito inicial e uma pluralidade de vetores de deslocamento predefinidos; quando a terceira informação de identificação indica que o fluxo de bits transporta um residual de vetor de movimento do bloco de imagem a ser processado, analisando o fluxo de bits para obter o residual de vetor de movimento, e armazenando o residual de vetor de movimento no espaço de armazenamento alvo; e quando a terceira informação de identificação indica que o fluxo de bits não transporta residual de vetor de movimento do bloco de imagem a ser processado, armazenando uma diferença entre o vetor de movimento predito final e o vetor de movimento predito inicial no espaço de armazenamento alvo,
ou armazenando o vetor de movimento predito final no espaço de armazenamento alvo.
[0035] Em uma implementação possível, a terceira informação de identificação indica que o fluxo de bits transporta um residual de vetor de movimento do bloco de imagem a ser processado inclui: a terceira informação de identificação indica que um modo de predição do bloco de imagem a ser processado é um modo de AMVP.
[0036] Com base na implementação possível anterior, os dados do vetor de movimento do bloco de imagem a ser processado podem ser armazenados em uma pluralidade de modos de predição.
[0037] Em uma implementação possível, a terceira informação de identificação indica que o fluxo de bits não transporta nenhum residual de vetor de movimento do bloco de imagem a ser processado inclui: a terceira informação de identificação indica que o modo de predição do bloco de imagem a ser processado é um modo de mesclagem ou um modo de salto.
[0038] Com base na implementação possível anterior, diferentes informações de identificação são usadas para distinguir entre diferentes modos de predição, de modo que os dados do vetor de movimento do bloco de imagem a ser processado possam ser armazenados em uma pluralidade de modos de predição.
[0039] Em uma implementação possível, a obtenção de um vetor de movimento predito final com base no vetor de movimento predito inicial e uma pluralidade de vetores de deslocamento predefinidos inclui:
adicionar separadamente o vetor de movimento inicial e a pluralidade de vetores de deslocamento predefinidos para obter uma pluralidade de vetores de movimento finais candidatos; e determinar um vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de vetores de movimento finais candidatos como o vetor de movimento final.
[0040] Com base na possível implementação anterior, a precisão de obtenção do vetor de movimento predito final usando o custo de distorção é maior e, além disso, os dados do vetor de movimento armazenados são mais precisos.
[0041] De acordo com um quarto aspecto, este pedido fornece um aparelho de obtenção de vetor de movimento, configurado para realizar o método de obtenção de vetor de movimento anterior. Especificamente, o aparelho de obtenção de vetor de movimento inclui um módulo de função configurado para realizar o método de obtenção de vetor de movimento fornecido em qualquer um do primeiro aspecto ou as maneiras opcionais do primeiro aspecto. O aspecto anterior é um aspecto correspondente ao método de obtenção de vetor de movimento.
[0042] De acordo com um quinto aspecto, este pedido fornece um aparelho de determinação de residual de vetor de movimento, configurado para realizar o método de determinação de residual de vetor de movimento anterior. Especificamente, o aparelho de determinação de residual de vetor de movimento inclui um módulo de função configurado para realizar o método de determinação de residual de vetor de movimento fornecido em qualquer um do segundo aspecto ou as maneiras opcionais do segundo aspecto. O aspecto anterior é um aspecto correspondente ao método de determinação de residual de vetor de movimento.
[0043] De acordo com um sexto aspecto, este pedido fornece um aparelho de armazenamento de dados de vetor de movimento, configurado para realizar o método de armazenamento de dados de vetor de movimento anterior. Especificamente, o aparelho de armazenamento de dados de vetor de movimento inclui um módulo de função configurado para realizar o método de armazenamento de dados de vetor de movimento fornecido em qualquer um do terceiro aspecto ou as maneiras opcionais do terceiro aspecto. O aspecto anterior é um aspecto correspondente ao método de armazenamento de dados de vetor de movimento.
[0044] De acordo com um sétimo aspecto, este pedido fornece um dispositivo computador. O dispositivo computador inclui um processador e uma memória. A memória armazena pelo menos uma instrução, e a instrução é carregada e executada pelo processador para implementar as operações realizadas no método de obtenção de vetor de movimento anterior.
[0045] De acordo com um oitavo aspecto, este pedido fornece um dispositivo computador. O dispositivo computador inclui um processador e uma memória. A memória armazena pelo menos uma instrução, e a instrução é carregada e executada pelo processador para implementar as operações realizadas no método de armazenamento de dados de vetor de movimento anterior.
[0046] De acordo com um nono aspecto, este pedido fornece um dispositivo computador. O dispositivo computador inclui um processador e uma memória. A memória armazena pelo menos uma instrução, e a instrução é carregada e executada pelo processador para implementar as operações realizadas no método de determinação de residual de vetor de movimento anterior.
[0047] De acordo com um décimo aspecto, este pedido fornece um meio de armazenamento legível por computador. O meio de armazenamento armazena pelo menos uma instrução, e a instrução é carregada e executada por um processador para implementar as operações realizadas no método de obtenção de vetor de movimento anterior.
[0048] De acordo com um décimo primeiro aspecto, este pedido fornece um meio de armazenamento legível por computador. O meio de armazenamento armazena pelo menos uma instrução, e a instrução é carregada e executada por um processador para implementar as operações realizadas no método de determinação de residual de vetor de movimento anterior.
[0049] De acordo com um décimo segundo aspecto, este pedido fornece um meio de armazenamento legível por computador. O meio de armazenamento armazena pelo menos uma instrução, e a instrução é carregada e executada por um processador para implementar as operações realizadas no método de armazenamento de dados de vetor de movimento anterior.
[0050] As soluções técnicas fornecidas neste pedido incluem pelo menos os seguintes efeitos benéficos: o vetor de movimento do bloco de imagem a ser processado é determinado usando a relação de localização entre o bloco de referência e o bloco de imagem a ser processado. Quando o bloco de referência e o bloco de imagem a ser processado caem dentro do intervalo predefinido, o decodificador usa o vetor de movimento inicial do bloco de referência como o vetor de movimento do bloco de imagem a ser processado. Quando o bloco de referência e o bloco de imagem a ser processado caem além do intervalo predefinido, o decodificador usa o vetor de movimento final do bloco de referência como o vetor de movimento do bloco de imagem a ser processado. Neste caso, quando o bloco de imagem a ser processado precisa ser decodificado usando o vetor de movimento final do bloco de referência durante a decodificação, o decodificador pode usar o vetor de movimento inicial do bloco de referência como o vetor de movimento do bloco de referência bloco de imagem a ser processado, de modo que o bloco de imagem a ser processado possa ser usado, evitando assim um caso em que o vetor de movimento do bloco de imagem a ser processado pode ser obtido apenas após o vetor de movimento final da referência bloco é obtido, e melhorando a eficiência de decodificação.
[0051] FIG. 1 é um diagrama de blocos de um exemplo de um sistema de codificação de vídeo que pode ser configurado para uso em uma modalidade deste pedido; FIG. 2 é um diagrama de blocos do sistema de um exemplo de um codificador de vídeo que pode ser configurado para uso em uma modalidade deste pedido; FIG. 3 é um diagrama de blocos do sistema de um exemplo de um decodificador de vídeo que pode ser configurado para uso em uma modalidade deste pedido; FIG. 4 é um diagrama de blocos esquemático de um exemplo de um módulo de inter-predição que pode ser configurado para uso em uma modalidade deste pedido; FIG. 5 é um diagrama esquemático de um exemplo de uma unidade de codificação e um bloco de imagem vizinho associado à unidade de codificação; FIG. 6 é um fluxograma de uma implementação de exemplo de construção de uma lista de vetores de movimento preditos candidatos; FIG. 7 é um diagrama esquemático de uma implementação de exemplo de adição de um vetor de movimento candidato combinado a uma lista de vetores de movimento preditos candidatos de modo de mesclagem; FIG. 8 é um diagrama esquemático de uma implementação de exemplo de adição de um vetor de movimento candidato escalado a uma lista de vetores de movimento preditos candidatos de modo de mesclagem; FIG. 9 é um diagrama esquemático de uma implementação de exemplo de adição de um vetor de movimento zero a uma lista de vetores de movimento preditos candidatos de modo de mesclagem; FIG. 10 é um fluxograma de uma implementação de exemplo de um modo de predição de mesclagem; FIG. 11 é um fluxograma de uma implementação de exemplo de um modo de predição de vetor de movimento avançado; FIG. 12 é um fluxograma de um exemplo de implementação de compensação de movimento realizada por um decodificador de vídeo que pode ser configurado para uso em uma modalidade deste pedido; FIG. 13 é um fluxograma esquemático de um método de atualização de vetor de movimento durante a codificação de vídeo de acordo com uma modalidade deste pedido;
FIG. 14 é um fluxograma esquemático de um método de atualização de vetor de movimento durante a decodificação de vídeo de acordo com uma modalidade deste pedido; FIG. 15 é um fluxograma esquemático de atualização de um vetor de movimento de acordo com uma modalidade deste pedido; FIG. 16 é um fluxograma esquemático de atualização de um vetor de movimento de acordo com uma modalidade deste pedido; FIG. 17A e FIG. 17B são um fluxograma esquemático de atualização de um vetor de movimento de acordo com uma modalidade deste pedido; FIG. 18 é um fluxograma esquemático de atualização de um vetor de movimento de acordo com uma modalidade deste pedido; FIG. 19 é um fluxograma esquemático de um método de obtenção de vetor de movimento de acordo com uma modalidade deste pedido; FIG. 20 é um fluxograma esquemático de um método de obtenção de vetor de movimento de acordo com uma modalidade deste pedido; FIG. 21 é um diagrama esquemático de seleção de um vetor de movimento em um intervalo especificado de acordo com uma modalidade deste pedido; FIG. 22 é um diagrama esquemático de um método de obtenção de bloco de predição atual de acordo com uma modalidade deste pedido; FIG. 23 é um diagrama de blocos esquemático de um aparelho de obtenção de vetor de movimento durante a decodificação de vídeo de acordo com uma modalidade deste pedido; FIG. 24 é um diagrama de blocos esquemático de um dispositivo de codificação de vídeo de acordo com uma modalidade deste pedido; FIG. 25 é um diagrama estrutural de um aparelho de obtenção de vetor de movimento de acordo com uma modalidade deste pedido; FIG. 26 é um diagrama estrutural de um aparelho de determinação de residual de vetor de movimento de acordo com uma modalidade deste pedido; e FIG. 27 é um diagrama estrutural de um aparelho de armazenamento de dados de vetor de movimento de acordo com uma modalidade deste pedido.
[0052] Para tornar os objetivos, soluções técnicas e vantagens deste pedido mais claros, a seguir descreve melhor as implementações deste pedido em detalhes com referência aos desenhos anexos.
[0053] FIG. 1 é um diagrama de blocos esquemático de um sistema de codificação de vídeo 10 de acordo com uma modalidade deste pedido. Como mostrado na FIG. 1, o sistema 10 inclui um aparelho fonte 12. O aparelho fonte 12 gera dados de vídeo codificados que devem ser posteriormente decodificados por um aparelho de destino 14. O aparelho fonte 12 e o aparelho de destino 14 podem incluir qualquer um de uma ampla variedade de aparelhos, incluindo um computador de mesa, um notebook, um tablet, um decodificador, um aparelho de telefone, como um telefone "inteligente", uma dispositivo de toque "inteligente", uma televisão, uma câmera, um aparelho de exibição, um reprodutor de mídia digital, um console de videogame, um aparelho de transmissão de fluxo contínuo de vídeo, ou semelhantes. Em algumas aplicações, o aparelho fonte 12 e o aparelho de destino 14 podem ser equipados para comunicação sem fio.
[0054] O aparelho de destino 14 pode receber os dados de vídeo codificados a serem decodificados através de um enlace
16. O enlace 16 pode incluir qualquer tipo de meio ou aparelho que pode transmitir os dados de vídeo codificados do aparelho fonte 12 para o aparelho de destino 14. Em uma implementação viável, o enlace 16 pode incluir um meio de comunicação que permite ao aparelho fonte 12 transmitir diretamente os dados de vídeo codificados para o aparelho de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicações (por exemplo, um protocolo de comunicações sem fio) e, em seguida, são transmitidos para o aparelho 14 alvo. O meio de comunicação pode incluir qualquer meio de comunicação sem fio ou com fio, por exemplo, um espectro de radiofrequência ou pelo menos uma linha de transmissão física. O meio de comunicação pode constituir uma parte de uma rede baseada em pacotes (por exemplo, uma rede de área local, uma rede de área ampla ou uma rede global como a Internet). O meio de comunicação pode incluir um roteador, um comutador, uma estação base ou qualquer outro dispositivo que pode ser usado para facilitar a comunicação do aparelho fonte 12 para o aparelho de destino 14.
[0055] Alternativamente, os dados codificados podem ser enviados de uma interface de saída 22 para um aparelho de armazenamento. Da mesma forma, os dados codificados podem ser acessados a partir do aparelho de armazenamento por meio de uma interface de entrada. O aparelho de armazenamento pode incluir qualquer um de uma pluralidade de meios de armazenamento de dados distribuídos ou meios de armazenamento de dados acessados localmente, por exemplo, um disco rígido, um Blu-ray, um disco versátil digital (digital versatile disc, DVD), uma memória somente leitura de disco compacto (compact disc read-only memory, CD-ROM), uma memória flash, uma memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital apropriado configurado para armazenar os dados de vídeo codificados.
Em outra implementação viável, o aparelho de armazenamento pode corresponder a um servidor de arquivos ou outro aparelho de armazenamento intermediário que pode manter um vídeo codificado gerado pelo aparelho fonte 12. O aparelho de destino 14 pode acessar dados de vídeo armazenados a partir do aparelho de armazenamento por meio de transmissão de fluxo contínuo ou descarregamento.
O servidor de arquivos pode ser qualquer tipo de servidor que pode armazenar os dados de vídeo codificados e transmitir os dados de vídeo codificados para o aparelho de destino 14. Em uma implementação viável, o servidor de arquivos inclui um servidor de site, um servidor de protocolo de transferência de arquivos, um aparelho de armazenamento conectado à rede ou uma unidade de disco local.
O aparelho de destino 14 pode acessar os dados de vídeo codificados por meio de qualquer conexão de dados padrão, incluindo uma conexão de internet.
A conexão de dados pode incluir um canal sem fio (por exemplo, conexão de fidelidade sem fio (wireless-fidelity, Wi-Fi)) ou uma conexão com fio (por exemplo, um modem a cabo) que é adequado para acessar os dados de vídeo codificados armazenados no servidor de arquivos, ou uma combinação dos mesmos.
A transmissão dos dados de vídeo codificados do aparelho de armazenamento pode ser transmissão de fluxo contínuo,
transmissão de descarregamento ou uma combinação das mesmas.
[0056] As tecnologias neste pedido não estão necessariamente limitadas a aplicações ou configurações sem fio. As tecnologias podem ser aplicadas à decodificação de vídeo, para suportar qualquer uma de uma pluralidade de aplicações multimídia, por exemplo, difusão de televisão pelo ar, transmissão de televisão a cabo, transmissão de televisão por satélite, transmissão de fluxo contínuo de vídeo (por exemplo, através da Internet), codificação de um vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de um vídeo digital armazenado em um meio de armazenamento de dados, ou outra aplicação. Em algumas implementações viáveis, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional, para suportar aplicações como transmissão de fluxo contínuo de vídeo, reprodução de vídeo, transmissão de vídeo e / ou videotelefonia.
[0057] Em uma implementação viável da FIG. 1, o aparelho fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 e a interface de saída 22. Em algumas aplicações, a interface de saída 22 pode incluir um modulador / demodulador (um modem) e / ou um transmissor. No aparelho fonte 12, a fonte de vídeo 18 pode incluir, por exemplo, as seguintes fontes: um aparelho de captura de vídeo (por exemplo, uma câmera de vídeo), um arquivo de vídeo incluindo um vídeo capturado anteriormente, uma interface de alimentação de vídeo para receber um vídeo de um provedor de conteúdo de vídeo e / ou um sistema de computação gráfica para gerar dados de computação gráfica como uma fonte de vídeo, ou uma combinação dos mesmos. Em uma implementação viável, se a fonte de vídeo 18 for a câmera de vídeo, o aparelho fonte 12 e o aparelho de destino 14 podem constituir um telefone com câmera ou um telefone com vídeo. Por exemplo, as tecnologias descritas neste pedido podem ser aplicadas a, por exemplo, decodificação de vídeo e podem ser aplicadas a aplicações sem fio e / ou com fio.
[0058] O codificador de vídeo 20 pode codificar um vídeo capturado ou pré-capturado ou um vídeo gerado por um computador. Os dados de vídeo codificados podem ser transmitidos diretamente para o aparelho de destino 14 através da interface de saída 22 do aparelho fonte 12. Os dados de vídeo codificados também podem (ou alternativamente) ser armazenados no aparelho de armazenamento 24, de modo que o aparelho de destino 14 ou outro aparelho subsequentemente acesse os dados de vídeo codificados para decodificação e / ou reprodução.
[0059] O aparelho de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30, e um aparelho de exibição 32. Em algumas aplicações, a interface de entrada 28 pode incluir um receptor e / ou um modem. A interface de entrada 28 do aparelho de destino 14 recebe os dados de vídeo codificados através do enlace 16. Os dados de vídeo codificados transmitidos ou fornecidos ao aparelho de armazenamento 24 através do enlace 16 podem incluir uma pluralidade de elementos de sintaxe que são gerados pelo codificador de vídeo 20 e usados por um decodificador de vídeo, tal como o decodificador de vídeo 30 para decodificar os dados de vídeo. Esses elementos de sintaxe podem ser incluídos nos dados de vídeo codificados que são transmitidos no meio de comunicação e que são armazenados no meio de armazenamento ou no servidor de arquivos.
[0060] O aparelho de exibição 32 pode ser integrado com o aparelho de destino 14 ou disposto fora do aparelho de destino 14. Em algumas implementações viáveis, o aparelho de destino 14 pode incluir um aparelho de exibição integrado e também pode ser configurado para se conectar a uma interface de um aparelho de exibição externo. Em outras implementações viáveis, o aparelho de destino 14 pode ser um aparelho de exibição. Geralmente, o aparelho de exibição 32 exibe dados de vídeo decodificados para um usuário e pode incluir qualquer um de uma pluralidade de aparelhos de exibição, por exemplo, uma tela de cristal líquido, uma tela de plasma, uma tela de diodo emissor de luz orgânico ou um aparelho de exibição de outro tipo.
[0061] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com, por exemplo, um padrão de compressão de codificação de vídeo de próxima geração (H.266) que está sendo desenvolvido atualmente, e pode estar em conformidade com um modelo de teste H.266.
[0062] Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com, por exemplo, outros padrões dedicados ou industriais, como o padrão ITU-T H.265 ou o padrão ITU-T H.264, ou extensões desses padrões. O padrão ITU-T H.265 também é conhecido como um padrão de decodificação de vídeo de alta eficiência, e o padrão ITU-T H.264 é alternativamente referido como grupo de especialistas em imagens em movimento (moving picture experts group, MPEG-4) Parte 10, ou codificação de vídeo avançada (advanced video coding, AVC). No entanto, as tecnologias neste pedido não estão limitadas a nenhum padrão de decodificação específico. Em outras implementações viáveis, os padrões de compressão de vídeo incluem MPEG-2 e ITU-T H.263.
[0063] Embora não mostrado na FIG. 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser respectivamente integrados com um codificador de áudio e um decodificador de áudio, e podem incluir uma unidade de multiplexador-demultiplexador (multiplexer-demultiplexer, MUX-DEMUX) apropriada ou outro hardware e software, para codificar um áudio e um vídeo em um mesmo fluxo de dados ou fluxos de dados separados. Se aplicável, em algumas implementações viáveis, a unidade MUX-DEMUX pode estar em conformidade com o protocolo multiplexador ITU H.223 ou outros protocolos, como o protocolo de datagrama de usuário (user datagram protocol, UDP).
[0064] O codificador de vídeo 20 e o decodificador de vídeo 30, cada um, podem ser implementados como qualquer um de uma pluralidade de circuitos codificadores apropriados, por exemplo, um ou mais microprocessadores, processadores de sinal digital (digital signal processor, DSP), circuitos integrados de aplicação específica (application specific integrated circuit, ASIC), matrizes de portas programáveis em campo (field programmable gate array, FPGA), lógica discreta, software, hardware, firmware, ou qualquer combinação dos mesmos. Quando algumas das tecnologias são implementadas como software, um aparelho pode armazenar uma instrução para o software em um meio legível por computador não transitório apropriado e executar a instrução em uma forma de hardware usando um ou mais processadores, para implementar as tecnologias neste pedido. O codificador de vídeo 20 e o decodificador de vídeo 30, cada um, podem ser incluídos em um ou mais codificadores ou decodificadores. Qualquer um do codificador de vídeo 20 e do decodificador de vídeo 30 podem ser integrados como uma parte de um codificador / decodificador combinado (encoder/decoder, CODEC) em um aparelho correspondente.
[0065] Este pedido pode, por exemplo, se referir a outro aparelho no qual o codificador de vídeo 20 "sinaliza" informação específica para, por exemplo, o decodificador de vídeo 30. No entanto, deve ser entendido que o codificador de vídeo 20 pode associar elementos de sintaxe específicos com partes codificadas dos dados de vídeo, para sinalizar informação. Ou seja, o codificador de vídeo 20 pode armazenar os elementos de sintaxe específicos nas informações de cabeçalho das partes codificadas dos dados de vídeo, para sinalizar os dados. Em algumas aplicações, esses elementos de sintaxe podem ser codificados e armazenados (por exemplo, armazenados em um sistema de armazenamento ou servidor de arquivos) antes de serem recebidos e decodificados pelo decodificador de vídeo 30. Portanto, o termo "sinal" pode significar, por exemplo, transmissão de sintaxe ou transmissão de outros dados usados para decodificar dados de vídeo compactados, independentemente da transmissão ser realizada em tempo real, quase em tempo real ou dentro de um intervalo de tempo. Por exemplo, a transmissão pode ser realizada quando um elemento de sintaxe é armazenado em um meio durante a codificação e, em seguida, o elemento de sintaxe pode ser recuperado por um aparelho de decodificação a qualquer momento após ser armazenado no meio.
[0066] A equipe conjunta de especialistas em vídeo (joint video team, JVT) desenvolveu o padrão de codificação de vídeo de alta eficiência (high efficiency video coding, HEVC) H.265. A padronização HEVC é baseada em um modelo evoluído de um aparelho de decodificação de vídeo, onde o modelo é referido como um modelo de teste HEVC (HM). Um documento padrão H.265 mais recente está disponível em http://www.itu.int/rec/T- REC-H.265. Uma versão mais recente do documento padrão é H.265 (12/16), e o documento padrão é incorporado neste documento por referência em sua totalidade. No HM, presume- se que o aparelho de decodificação de vídeo tem vários recursos adicionais em relação a um algoritmo existente de ITU-TH.264 / AVC. Por exemplo, o H.264 fornece nove modos de codificação de intra-predição, enquanto o HM pode fornecer até 35 modos de codificação de intra-predição.
[0067] O JVET está empenhado em desenvolver o padrão H.266. Um processo de padronização H.266 é baseado em um modelo evoluído do aparelho de decodificação de vídeo, onde o modelo é referido como um modelo de teste H.266. As descrições do algoritmo H.266 estão disponíveis em http://phenix.int- evry.fr/jvet, e as descrições dos algoritmos mais recentes estão incluídas no JVET-G1001-v1. O documento de descrição do algoritmo é incorporado neste documento por referência em sua totalidade. Além disso, o software de referência para um modelo de teste JEM está disponível em https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/ e também está incorporado neste documento por referência em sua totalidade.
[0068] Geralmente, conforme descrito em um modelo de trabalho HM, um quadro de vídeo ou imagem pode ser dividido em uma sequência de blocos de árvore ou unidades de codificação maiores (largest coding unit, LCU), incluindo amostras de luma e croma. A LCU também é conhecida como unidade de árvore de codificação (coding tree unit, CTU). Um bloco de árvore tem uma função semelhante à de um macro bloco no padrão H.264. Uma fatia inclui vários blocos de árvore consecutivos em uma ordem de decodificação. O quadro de vídeo ou imagem pode ser particionado em uma ou mais fatias. Cada bloco de árvore pode ser dividido em unidades de codificação com base em uma quadtree. Por exemplo, um bloco de árvore que serve como um nó raiz da quadtree pode ser dividido em quatro nós filhos, e cada nó filho também pode servir como um nó pai e é dividido em quatro outros nós filhos. Um nó filho final não divisível servindo como um nó folha da quadtree inclui um nó de decodificação, por exemplo, um bloco de vídeo decodificado. Em dados sintáticos associados a um fluxo de bits decodificado, uma quantidade máxima de vezes que o bloco de árvore pode ser dividido e um tamanho mínimo do nó de decodificação pode ser definido.
[0069] Deve-se notar que uma CTU inclui um bloco de árvore de codificação (coding tree block, CTB) e dois CTBs de croma em uma mesma localização, e alguns elementos de sintaxe correspondentes. O CTB pode ser usado diretamente como um bloco de codificação (coding block, CB), ou pode ser dividido em uma pluralidade de pequenos blocos de codificação CBs, um CB de luma, dois CBs de croma, e alguns elementos de sintaxe correspondentes na forma de uma quadtree, para formar uma unidade de codificação (coding unit, CU).
[0070] A CU inclui um nó de decodificação, uma unidade de predição (prediction unit, PU), e uma unidade de transformada (transform unit, TU) associada ao nó de decodificação. Um tamanho da CU corresponde a um tamanho do nó de decodificação e uma forma da CU precisa ser um quadrado. O tamanho da CU pode variar de 8 × 8 píxeis a um máximo de 64 × 64 píxeis, ou pode ter um tamanho de bloco de árvore maior. Cada CU pode incluir uma ou mais PUs e uma ou mais TUs. Por exemplo, os dados sintáticos associados à CU podem descrever o particionamento de uma CU em uma ou mais PUs. Um padrão de particionamento pode variar quando a CU é codificada em um modo de salto ou direto, codificada em um modo de intra-predição ou codificada em um modo de inter- predição A PU obtida por particionamento pode ter uma forma não quadrada. Por exemplo, os dados sintáticos associados à CU também podem descrever o particionamento de uma CU em uma ou mais TUs com base na quadtree. A TU pode ser quadrada ou não quadrada.
[0071] O padrão HEVC permite a transformada baseada em TU. Diferentes CUs podem incluir diferentes TUs. O tamanho de uma TU é geralmente definido com base no tamanho de uma PU dentro de uma determinada CU definida para uma LCU particionada. No entanto, um caso nem sempre pode ser assim. O tamanho da TU é geralmente igual ou menor que o da PU. Em algumas implementações viáveis, uma estrutura quadtree referida como "quadtree residual" (residual quadtree, RQT) pode ser usada para dividir uma amostra residual correspondente à CU em unidades menores. Um nó folha do RQT pode ser referido como uma TU. Uma diferença de pixel associada à TU pode ser transformada para gerar um coeficiente de transformada, e o coeficiente de transformada pode ser quantizado.
[0072] Geralmente, uma PU inclui dados relacionados a um processo de predição. Por exemplo, quando a PU é codificada em um modo intra, a PU pode incluir dados que descrevem o modo de intra-predição da PU. Em outra implementação viável, quando a PU é codificada em um modo interno, a PU pode incluir dados que definem um vetor de movimento para a PU. Por exemplo, os dados que definem o vetor de movimento para a PU podem descrever um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução (por exemplo, precisão de 1/4 de pixel ou precisão de 1/8 de pixel) do vetor de movimento, uma imagem de referência para a qual o vetor de movimento aponta e / ou uma lista de imagens de referência (por exemplo, uma lista 0, uma lista 1, ou uma lista C) do vetor de movimento.
[0073] Geralmente, os processos de transformada e quantização são usados para uma TU. Uma determinada CU, incluindo uma ou mais PUs, também pode incluir uma ou mais TUs. Após realizar a predição, o codificador de vídeo 20 pode calcular um residual correspondente à PU. O residual inclui uma diferença de pixel. A diferença de pixel pode ser transformada em um coeficiente de transformada, e o coeficiente de transformada é quantizado e é varrido usando uma TU, para gerar um coeficiente de transformada serializado para decodificação de entropia. Neste pedido, o termo "bloco de vídeo" é geralmente usado para indicar um nó de decodificação de uma CU. Em algumas aplicações específicas, neste pedido, o termo "bloco de vídeo" também pode ser usado para indicar um bloco de árvore incluindo um nó de decodificação, uma PU e uma TU, por exemplo, uma LCU ou uma CU.
[0074] Uma sequência de vídeo geralmente inclui uma série de quadros ou imagens de vídeo. Por exemplo, um grupo de imagens (group of pictures, GOP) inclui uma série de imagens de vídeo, ou uma ou mais imagens de vídeo. O GOP pode incluir dados sintáticos em informações de cabeçalho do GOP, informações de cabeçalho de uma ou mais imagens, ou semelhantes, e os dados sintáticos descrevem uma quantidade de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados sintáticos de fatia que descrevem um modo de codificação da imagem correspondente. O codificador de vídeo 20 geralmente realiza uma operação em um bloco de vídeo em uma fatia de vídeo individual, para codificar os dados de vídeo. O bloco de vídeo pode corresponder ao nó de decodificação na CU. Um tamanho do bloco de vídeo pode ser fixo ou alterável, e pode variar com um padrão de decodificação especificado.
[0075] Em uma implementação viável, o HM suporta predição em vários tamanhos de PU. Assumindo que o tamanho de uma CU específica é 2N × 2N, o HM suporta intra-predição em uma PU com um tamanho de 2N × 2N ou N × N e inter-predição em uma PU simétrica com um tamanho de 2N × 2N, 2N × N, N × 2N, ou N × N, e o HM também suporta particionamento assimétrico de inter-predição em uma PU com um tamanho de 2N × nU, 2N × nD, nL × 2N ou nR × 2N. No particionamento assimétrico, a CU não é particionada em uma direção, e é particionada em duas partes em outra direção, onde uma parte representa 25% da CU e a outra parte representa 75% da CU. A parte responsável por 25% da CU é indicada por um indicador incluindo "n" seguido por "U (para cima)", "D (para baixo)", "L (esquerda)" ou "R (direita)". Portanto, por exemplo, "2N × nU" refere- se a uma CU 2N × 2N particionada horizontalmente, com uma PU
2N × 0,5N na parte superior e uma PU 2N × 1,5N na parte inferior.
[0076] Neste pedido, "N × N" e "N multiplicado por N" podem ser usados indistintamente para indicar um tamanho de pixel de um bloco de vídeo em uma dimensão vertical e uma dimensão horizontal, por exemplo, 16 × 16 píxeis ou 16 multiplicado por 16 píxeis. Geralmente, um bloco de 16 × 16 tem 16 píxeis em uma direção vertical (y = 16) e tem 16 píxeis em uma direção horizontal (x = 16). Da mesma forma, um bloco N × N geralmente tem N píxeis na direção vertical e N píxeis na direção horizontal, onde N é um valor inteiro não negativo. Píxeis em um bloco podem ser organizados em linhas e colunas. Além disso, uma quantidade de píxeis na direção horizontal e uma quantidade de píxeis na direção vertical de um bloco podem não ser necessariamente iguais. Por exemplo, um bloco pode incluir N × M píxeis, onde M não é necessariamente igual a N.
[0077] Após realizar a inter/intra-decodificação ou inter/intra-predição na PU na CU, o codificador de vídeo 20 pode calcular os dados residuais da TU na CU. Uma PU pode incluir dados de pixel no domínio espacial (também referido como domínio de pixel), e uma TU pode incluir um coeficiente no domínio de transformada após a transformada (por exemplo, transformada discreta de cosseno (discrete cosine transform, DCT), transformada de inteiro, transformada de onduleta, ou outra transformada conceitualmente semelhante) ser aplicada aos dados de vídeo residuais. Os dados residuais podem corresponder a uma diferença de pixel entre um pixel de uma imagem não codificada e um preditor correspondente à PU. O codificador de vídeo 20 pode gerar uma TU incluindo dados residuais da CU e, em seguida, transformar a TU para gerar um coeficiente de transformada da CU.
[0078] Após realizar qualquer transformada para gerar coeficientes de transformada, o codificador de vídeo 20 pode quantizar os coeficientes de transformada. Quantização refere-se a, por exemplo, um processo de quantizar os coeficientes, para reduzir uma quantidade de dados usados para representar os coeficientes e implementar compressão adicional. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. Por exemplo, durante a quantização, um valor de n bits pode ser reduzido a um valor de m bits por meio de arredondamento, onde n é maior do que m.
[0079] O modelo JEM melhora ainda mais uma estrutura de codificação de imagem de vídeo. Especificamente, é introduzida uma estrutura de codificação de bloco denominada "árvore binária mais quadtree" (quad tree plus binary tree, QTBT). Sem usar conceitos como CU, PU e TU em HEVC, a estrutura QTBT oferece suporte a formas de divisão de CU mais flexíveis. Uma CU pode ter uma forma quadrada ou uma forma retangular. O particionamento de quadtree é realizado primeiro em uma CTU, e o particionamento de árvore binária é posteriormente realizado em um nó folha de uma quadtree. Além disso, existem dois modos de particionamento de árvore binária: particionamento horizontal simétrico e particionamento vertical simétrico. Um nó folha de uma árvore binária é conhecido como CU. A CU no modelo JEM não pode ser particionada adicionalmente durante a predição e transformada. Em outras palavras, a CU, a PU e a TU no modelo JEM têm o mesmo tamanho de bloco. No modelo JEM existente,
um tamanho máximo de CTU é 256 × 256 luma píxeis.
[0080] Em algumas implementações viáveis, o codificador de vídeo 20 pode varrer o coeficiente de transformada quantizado em uma ordem de varredura predefinida para gerar um vetor serializado que pode ser codificado por entropia. Em outras implementações viáveis, o codificador de vídeo 20 pode realizar varredura adaptável. Após escanear o coeficiente de transformada quantizada para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar com entropia o vetor unidimensional com base em um método de codificação de comprimento variável adaptável ao contexto (context-adaptive variable-length coding, CAVLC), um método de codificação aritmética binária adaptável baseada em contexto (context-based adaptive binary arithmetic coding, CABAC), um método de codificação de entropia de particionamento de intervalo de probabilidade (probability interval partitioning entropy, PIPE), ou outro método de codificação de entropia. O codificador de vídeo 20 pode ainda codificar com entropia o elemento de sintaxe associado aos dados de vídeo codificados, de modo que o decodificador de vídeo 30 decodifique os dados de vídeo.
[0081] Para realizar CABAC, o codificador de vídeo 20 pode atribuir um contexto em um modelo de contexto a um símbolo a ser transmitido. O contexto pode estar relacionado ao fato de um valor vizinho do símbolo ser diferente de zero. Para realizar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável do símbolo a ser transmitido. Uma palavra-código na codificação de comprimento variável (variable-length coding, VLC) pode ser construída, de modo que um código mais curto corresponda a um símbolo mais provável e um código mais longo corresponda a um símbolo menos provável. Desta forma, em comparação com o uso de palavras de código de comprimento igual para todos os símbolos a serem transmitidos, o uso de VLC pode reduzir uma taxa de bits. Uma probabilidade em CABAC pode ser determinada com base no contexto atribuído ao símbolo.
[0082] Nesta modalidade deste pedido, o codificador de vídeo pode realizar inter-predição para reduzir a redundância temporal entre as imagens. Conforme descrito acima, uma CU pode ter uma ou mais unidades de predição PUs de acordo com diferentes padrões de codificação de compressão de vídeo. Em outras palavras, uma pluralidade de PUs pode pertencer a uma CU, ou uma PU e uma CU têm o mesmo tamanho. Nesta especificação, quando uma CU e uma PU têm o mesmo tamanho, um modo de particionamento da CU está realizando nenhuma partição, ou particionando a CU em uma PU, onde a PU é uniformemente usada para descrição. Quando o codificador de vídeo realiza inter-predição, o codificador de vídeo pode sinalizar informação de movimento para a PU para o decodificador de vídeo. Por exemplo, a informação de movimento para a PU pode incluir um índice de imagem de referência, um vetor de movimento, e um identificador de direção de predição. O vetor de movimento pode indicar um deslocamento entre um bloco de imagem (também referido como um bloco de vídeo, um bloco de pixel, um conjunto de píxeis, ou semelhante) da PU e um bloco de referência da PU. O bloco de referência da PU pode ser uma parte de uma imagem de referência semelhante ao bloco de imagem da PU. O bloco de referência pode estar localizado em uma imagem de referência indicada pelo índice de imagem de referência e o identificador de direção de predição.
[0083] Para reduzir uma quantidade de bits codificados necessários para representar a informação de movimento para a PU, o codificador de vídeo pode gerar uma lista de vetores de movimento (motion vector, MV) preditos candidatos para cada PU de acordo com um modo de predição de mesclagem (merge) ou um modo de predição de vetor de movimento avançado (advanced motion vector prediction, AMVP). Cada vetor de movimento predito candidato na lista de vetores de movimento preditos candidatos para a PU pode indicar informação de movimento. As informações de movimento indicadas por alguns vetores de movimento preditos candidatos na lista de vetores de movimento preditos candidatos podem ser baseadas em informações de movimento para outras PUs. Se um vetor de movimento predito candidato indica informação de movimento de um de uma localização de vetor de movimento predito candidato espacial especificado ou uma localização de vetor de movimento predito candidato temporal especificado, o vetor de movimento predito candidato pode ser referido como um vetor de movimento predito candidato "original" neste pedido. Por exemplo, em um modo de mesclagem, também referido como o modo de predição de mesclagem nesta especificação, pode haver cinco localizações de vetores de movimento preditos candidatos espaciais originais e uma localização de vetores de movimento preditos candidatos temporais originais. Em alguns exemplos, o codificador de vídeo pode gerar vetores de movimento preditos candidatos adicionais combinando alguns vetores de movimento de diferentes vetores de movimento preditos candidatos originais, modificando os vetores de movimento preditos candidatos originais ou inserindo apenas vetores de movimento zero como os vetores de movimento preditos candidatos. Esses vetores de movimento preditos candidatos adicionais não são considerados como vetores de movimento preditos candidatos originais e podem ser referidos como vetores de movimento preditos candidatos gerados manualmente neste pedido.
[0084] As tecnologias neste pedido geralmente incluem uma tecnologia para gerar uma lista de vetores de movimento preditos candidatos no codificador de vídeo e uma tecnologia para gerar a mesma lista de vetores de movimento preditos candidatos no decodificador de vídeo. O codificador de vídeo e o decodificador de vídeo podem gerar a mesma lista de vetores de movimento preditos candidatos implementando uma mesma tecnologia para construir a lista de vetores de movimento preditos candidatos. Por exemplo, o codificador de vídeo e o decodificador de vídeo podem construir listas com a mesma quantidade de vetores de movimento preditos candidatos (por exemplo, cinco vetores de movimento preditos candidatos). O codificador de vídeo e o decodificador de vídeo podem primeiro considerar vetores de movimento preditos candidatos espaciais (por exemplo, blocos vizinhos em uma mesma imagem), então considerar vetores de movimento preditos candidatos temporais (por exemplo, vetores de movimento preditos candidatos em imagens diferentes) e, finalmente, considerar vetores de movimento preditos candidatos gerados manualmente, até que uma quantidade necessária de vetores de movimento preditos candidatos sejam adicionados às listas. De acordo com as tecnologias neste pedido, durante a construção da lista de vetores de movimento preditos candidatos, uma operação de poda pode ser realizada em alguns tipos de vetores de movimento preditos candidatos para remover vetores de movimento preditos candidatos repetidos da lista de vetores de movimento preditos candidatos e uma operação de poda não pode ser realizada em outros tipos de vetores de movimento preditos candidatos para reduzir a complexidade do decodificador. Por exemplo, para um conjunto de vetores de movimento preditos candidatos espaciais e para um conjunto de vetores de movimento preditos candidatos temporais, uma operação de poda pode ser realizada para remover vetores de movimento preditos candidatos com informação de movimento repetida da lista de vetores de movimento preditos candidatos. No entanto, um vetor de movimento predito candidato gerado manualmente pode ser adicionado à lista de vetores de movimento preditos candidatos quando uma operação de poda não é realizada no vetor de movimento predito candidato gerado manualmente.
[0085] Após gerar a lista de vetores de movimento preditos candidatos para a PU da CU, o codificador de vídeo pode selecionar um vetor de movimento predito candidato a partir da lista de vetores de movimento preditos candidatos e emitir um índice de vetor de movimento predito candidato em um fluxo de bits. O vetor de movimento predito candidato selecionado pode ser um vetor de movimento predito candidato para gerar um vetor de movimento que mais se aproxima de uma unidade de predição de uma PU alvo que está sendo decodificada. O índice de vetor de movimento predito candidato pode indicar uma localização do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos. O codificador de vídeo pode ainda gerar um bloco de predição de imagem para a PU com base em um bloco de referência indicado pela informação de movimento para a PU. A informação de movimento para a PU pode ser determinada com base na informação de movimento indicada pelo vetor de movimento predito candidato selecionado. Por exemplo, no modo de mesclagem, a informação de movimento para a PU pode ser a mesma que a informação de movimento indicada pelo vetor de movimento predito candidato selecionado. No modo de predição de vetor de movimento avançado, a informação de movimento para a PU pode ser determinada com base em uma diferença de vetor de movimento para a PU e a informação de movimento indicada pelo vetor de movimento predito candidato selecionado. O codificador de vídeo pode gerar um ou mais blocos de imagem residual para a CU com base no bloco de imagem de predição para a PU da CU e um bloco de imagem original para a CU. Então, o codificador de vídeo pode codificar um ou mais blocos de imagem residual e emitir o um ou mais blocos de imagem residual no fluxo de bits.
[0086] O fluxo de bits pode incluir dados que identificam o vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. O decodificador de vídeo pode determinar a informação de movimento para a PU com base na informação de movimento indicada pelo vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos para a PU. O decodificador de vídeo pode identificar um ou mais blocos de referência para a PU com base na informação de movimento para a PU. Após identificar um ou mais blocos de referência para a PU, o decodificador de vídeo pode gerar o bloco de imagem de predição para a PU com base em um ou mais blocos de referência para a PU. O decodificador de vídeo pode reconstruir o bloco de imagem para a CU com base no bloco de imagem de predição para a PU da CU e um ou mais blocos de imagem residuais para a CU.
[0087] Para facilidade de explicação, neste pedido, uma localização ou um bloco de imagem pode ser descrito como tendo várias relações espaciais com uma CU ou PU. A descrição pode ser explicada como segue: a localização ou o bloco de imagem tem várias relações espaciais com um bloco de imagem associado à CU ou PU. Além disso, neste pedido, uma PU atualmente sendo decodificada pelo decodificador de vídeo pode ser referida como uma PU a ser processada, ou pode ser referida como um bloco de imagem a ser processado atual. Neste pedido, uma CU atualmente sendo decodificada pelo decodificador de vídeo pode ser referida como uma CU a ser processada. Neste pedido, uma imagem atualmente sendo decodificada pelo decodificador de vídeo pode ser referida como uma imagem atual. Deve ser entendido que este pedido também se aplica a um caso em que uma PU e uma CU têm o mesmo tamanho, ou uma PU é uma CU. A PU é usada uniformemente para a descrição.
[0088] Conforme descrito brevemente acima, o codificador de vídeo 20 pode gerar o bloco de imagem de predição e a informação de movimento para a PU da CU por meio de inter- predição. Em muitos exemplos, a informação de movimento para uma PU determinada pode ser igual ou semelhante à informação de movimento para uma ou mais PUs vizinhas (isto é, uma PU cujo bloco de imagem é espacialmente ou temporalmente vizinho a um bloco de imagem da PU determinada). Porque a PU vizinha muitas vezes tem informação de movimento semelhante, o codificador de vídeo 20 pode codificar a informação de movimento para a PU determinada com base na informação de movimento para a PU vizinha. Codificar a informação de movimento para a PU determinada com base na informação de movimento para a PU vizinha pode reduzir uma quantidade de bits codificados necessários no fluxo de bits para indicar a informação de movimento para a PU determinada.
[0089] O codificador de vídeo 20 pode codificar a informação de movimento para a PU determinada com base na informação de movimento para a PU vizinha de várias maneiras. Por exemplo, o codificador de vídeo 20 pode indicar que a informação de movimento para a PU determinada é a mesma que a informação de movimento para a PU vizinha. Neste pedido, o modo de mesclagem pode ser usado para indicar que a informação de movimento para a PU determinada é a mesma que a informação de movimento para a PU vizinha, ou pode ser derivada da informação de movimento para a PU vizinha. Em outra implementação viável, o codificador de vídeo 20 pode calcular uma diferença de vetor de movimento (motion vector difference, MVD) para uma PU determinada, e a MVD é uma diferença entre um vetor de movimento inicial para a PU determinada e um vetor de movimento final para a PU determinada. O codificador de vídeo 20 pode incluir a MVD em vez do vetor de movimento para a PU determinada na informação de movimento para a PU determinada. No fluxo de bits, uma quantidade de bits codificados necessários para representar a MVD é menor do que uma quantidade de bits codificados necessários para representar o vetor de movimento para a PU determinada. Neste pedido, o modo de predição de vetor de movimento avançado pode ser usado para indicar que a informação de movimento para a PU determinada é sinalizada para um decodificador usando a MVD e um valor de índice para identificar um vetor de movimento candidato.
[0090] Para sinalizar a informação de movimento para a PU determinada ao decodificador no modo de mesclagem ou no modo de AMVP, o codificador de vídeo 20 pode gerar uma lista de vetores de movimento preditos candidatos para a PU determinada. A lista de vetores de movimento preditos candidatos pode incluir um ou mais vetores de movimento preditos candidatos. Cada vetor de movimento predito candidato na lista de vetores de movimento preditos candidatos para a PU determinada pode especificar informação de movimento. A informação de movimento indicada por cada vetor de movimento predito candidato pode incluir um vetor de movimento, um índice de imagem de referência, e um identificador de direção de predição. Os vetores de movimento preditos candidatos na lista de vetores de movimento preditos candidatos podem incluir vetores de movimento preditos candidatos "originais", e cada vetor de movimento predito candidato "original" indica informação de movimento de uma das localizações de vetores de movimento preditos candidatos especificados dentro de uma PU diferente da PU determinada.
[0091] Após gerar a lista de vetores de movimento preditos candidatos para a PU, o codificador de vídeo 20 pode selecionar um dos vetores de movimento preditos candidatos da lista de vetores de movimento preditos candidatos para a PU. Por exemplo, o codificador de vídeo pode comparar cada vetor de movimento predito candidato com uma PU que está sendo decodificada e pode selecionar um vetor de movimento predito candidato com um custo de distorção de taxa desejado. O codificador de vídeo 20 pode emitir um índice de vetor de movimento predito candidato para a PU. O índice de vetor de movimento predito candidato pode identificar uma localização do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos.
[0092] Além disso, o codificador de vídeo 20 pode gerar um bloco de imagem de predição para a PU com base em um bloco de referência indicado pela informação de movimento para a PU. A informação de movimento para a PU pode ser determinada com base na informação de movimento indicada pelo vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. Por exemplo, no modo de mesclagem, a informação de movimento para a PU pode ser a mesma que a informação de movimento indicada pelo vetor de movimento predito candidato selecionado. No modo de AMVP, a informação de movimento para a PU pode ser determinada com base na diferença do vetor de movimento para a PU e a informação de movimento indicada pelo vetor de movimento predito candidato selecionado. Conforme descrito acima, o codificador de vídeo 20 pode processar o bloco de imagem de predição para a PU.
[0093] Quando o decodificador de vídeo 30 recebe o fluxo de bits, o decodificador de vídeo 30 pode gerar uma lista de vetores de movimento preditos candidatos para cada PU da CU. A lista de vetores de movimento preditos candidatos gerada pelo decodificador de vídeo 30 para a PU pode ser a mesma que a lista de vetores de movimento preditos candidatos gerada pelo codificador de vídeo 20 para a PU. Um elemento de sintaxe obtido pela análise do fluxo de bits pode indicar a localização do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. Após gerar a lista de vetores de movimento preditos candidatos para a PU, o decodificador de vídeo 30 pode gerar o bloco de imagem de predição para a PU com base em um ou mais blocos de referência indicados pela informação de movimento para a PU. O decodificador de vídeo 30 pode determinar a informação de movimento para a PU com base na informação de movimento indicada pelo vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. O decodificador de vídeo 30 pode reconstruir o bloco de imagem para a CU com base no bloco de imagem de predição para a PU e o bloco de imagem residual para a CU.
[0094] Deve ser entendido que, em uma implementação viável, no decodificador, a construção da lista de vetores de movimento preditos candidatos e análise do fluxo de bits para obter a localização do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos são independentes de cada outro, e pode ser realizado em qualquer ordem ou em paralelo.
[0095] Em outra implementação viável, no decodificador, a localização do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos é primeiro obtida analisando o fluxo de bits e, em seguida, a lista de vetores de movimento preditos candidatos é construída com base na localização obtida através da análise. Nesta implementação, apenas uma lista de vetores de movimento preditos candidatos no local obtido por meio da análise precisa ser construída para determinar o vetor de movimento predito candidato no local, sem a necessidade de construir todas as listas de vetor de movimento predito candidato. Por exemplo, quando é aprendido, ao analisar o fluxo de bits, que o vetor de movimento predito candidato selecionado é um vetor de movimento predito candidato cujo índice é 3 na lista de vetores de movimento preditos candidatos, apenas uma lista de vetores de movimento preditos candidatos de um índice 0 ao índice 3 precisa ser construída para determinar o vetor de movimento predito candidato cujo índice é 3. Isso pode reduzir a complexidade e melhorar a eficiência da decodificação.
[0096] FIG. 2 é um diagrama de blocos esquemático de um codificador de vídeo 20 de acordo com uma modalidade deste pedido. O codificador de vídeo 20 pode realizar intradecodificação e interdecodificação em um bloco de vídeo em uma fatia de vídeo. A intradecodificação se baseia na predição espacial para reduzir ou remover a redundância espacial de um vídeo em um determinado quadro de vídeo ou imagem. A interdecodificação depende da predição temporal para reduzir ou remover a redundância temporal de um vídeo em um quadro vizinho ou imagem de uma sequência de vídeo. Um modo intra (modo I) pode ser qualquer um dos vários modos de compressão espacial. Um modo inter, como um modo de predição unidirecional (modo P) ou um modo de predição bidirecional (modo B), pode ser qualquer um dos vários modos de compressão temporal.
[0097] Em uma implementação viável da FIG. 2, o codificador de vídeo 20 inclui uma unidade de particionamento 35, uma unidade de predição 41, um armazenamento de imagem de referência 64, um circuito aritmético 50, uma unidade de transformada 52, uma unidade de quantização 54, e uma unidade de codificação de entropia 56.
[0098] O armazenamento de imagens de referência 64 pode ser ainda configurado para fornecer espaço de armazenamento alvo para armazenar um MVD, isto é, armazenar uma diferença entre um vetor de movimento final e um vetor de movimento inicial para uma PU a ser processada. Em algumas modalidades, o armazenamento de imagem de referência 64 pode ainda armazenar um vetor de movimento final para uma PU a ser processada. Nesta modalidade deste pedido, a MVD armazenada no armazenamento de imagem de referência 64 pode ser usado em um processo de codificação de outra PU. Por exemplo, em um processo de decodificação em um modo de mesclagem (merge), um vetor de movimento inicial não atualizado e um vetor de movimento final atualizado são armazenados separadamente em momentos diferentes. Portanto, quando a PU a ser processada precisa obter um vetor de movimento predito para outra PU, sob uma condição específica, a PU a ser processada pode usar diretamente um vetor de movimento inicial não atualizado para a outra PU como o vetor de movimento para a outra PU, e não precisa obter o vetor de movimento para a outra PU após o vetor de movimento para a outra PU ser atualizado.
[0099] Deve-se notar que o espaço de armazenamento alvo pode ser fornecido por uma memória diferente do armazenamento de imagem de referência 64, por exemplo, uma memória recentemente adicionada. Isso não é especificamente limitado nesta modalidade deste pedido.
[00100] Deve-se notar que, em uma tecnologia relacionada, quando o codificador de vídeo 20 trabalha no modo de mesclagem, o conteúdo no armazenamento de imagem de referência 64 está vazio, ou é um vetor zero, ou seja, quando o codificador de vídeo 20 funciona na modo de mesclagem, o espaço de armazenamento alvo não é usado durante a codificação, e em um processo de codificação, o vetor de movimento predito para a outra PU que é obtido pela PU a ser processada é um vetor de movimento final atualizado para a outra PU. Portanto, a PU a ser processada pode obter o vetor de movimento predito para a outra PU somente após o vetor de movimento predito para a outra PU ser atualizado e, consequentemente, ocorre um atraso de codificação durante a codificação. No entanto, quando o codificador de vídeo 20 funciona em um modo de não mesclagem, o armazenamento de imagem de referência 64 pode ser usado. Por exemplo, em um modo de AMVP, o espaço de armazenamento alvo é usado para armazenar um residual de vetor de movimento e o codificador de vídeo 20 codifica o residual de vetor de movimento, de modo que após decodificar uma PU atual, um decodificador de vídeo 30 pode obter um residual de vetor de movimento de uma PU a ser processada e obter um vetor de movimento final para a PU a ser processada com base no residual de vetor de movimento da PU a ser processada e um vetor de movimento inicial para a PU a ser processada.
[00101] A unidade de predição 41 inclui uma unidade de estimativa de movimento 42, uma unidade de compensação de movimento 44 e uma unidade de intra-predição 46. Para a reconstrução do bloco de vídeo, o codificador de vídeo 20 inclui ainda uma unidade de quantização inversa 58, uma unidade de transformada inversa 60 e um circuito aritmético
62. O codificador de vídeo 20 pode incluir ainda um filtro de desbloqueio (não mostrado na FIG. 2) para realizar a filtragem em um limite de bloco, para remover um artefato de bloqueio de um vídeo reconstruído. Quando necessário, o filtro de desbloqueio geralmente realiza a filtragem em uma saída do circuito aritmético 62. Além do filtro de desbloqueio, um filtro de loop adicional (dentro ou após um loop) também pode ser usado.
[00102] Como mostrado na FIG. 2, o codificador de vídeo 20 recebe dados de vídeo e a unidade de particionamento 35 particiona os dados em blocos de vídeo. Tal particionamento pode incluir ainda particionamento em fatias, blocos de imagem ou outras unidades maiores e particionamento de bloco de vídeo com base em estruturas quadtree de uma LCU e uma CU. Por exemplo, o codificador de vídeo 20 é um componente para codificar um bloco de vídeo em uma fatia de vídeo a ser codificada. Normalmente, uma fatia pode ser particionada em uma pluralidade de blocos de vídeo (e pode ser particionada em conjuntos de blocos de vídeo que são referidos como blocos de imagem).
[00103] A unidade de predição 41 pode selecionar um de uma pluralidade de modos de decodificação possíveis, por exemplo, um de uma pluralidade de modos de intradecodificação ou um de uma pluralidade de modos de interdecodificação, para um bloco de vídeo atual com base na qualidade de codificação e um resultado de cálculo de custo (por exemplo, um custo de distorção de taxa (rate distortion cost, RDcost))). A unidade de predição 41 pode fornecer um bloco intradecodificado ou interdecodificado obtido para o circuito aritmético 50 para gerar dados de bloco residual e fornecer o bloco intradecodificado ou interdecodificado obtido para o circuito aritmético 62 para reconstruir um bloco codificado e usar o bloco codificado reconstruído como uma imagem de referência.
[00104] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 na unidade de predição 41 realizam decodificação de inter-predição no bloco de vídeo atual em relação a um ou mais blocos de predição de uma ou mais imagens de referência, para fornecer compressão temporal. A unidade de estimativa de movimento 42 pode ser configurada para determinar um modo de inter-predição para a fatia de vídeo com base em um modo predefinido da sequência de vídeo. No modo predefinido, a fatia de vídeo na sequência pode ser especificada como uma fatia P, uma fatia B ou uma fatia GPB. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são descritas separadamente para explicar os conceitos. A estimativa de movimento realizada pela unidade de estimativa de movimento 42 é um processo de geração de um vetor de movimento para estimar o bloco de vídeo. Por exemplo, o vetor de movimento pode indicar um deslocamento de uma PU de um bloco de vídeo de um quadro de vídeo atual ou imagem em relação a um bloco de predição de uma imagem de referência.
[00105] O bloco de predição é um bloco de uma PU que é encontrado, com base em uma diferença de pixel, para ser aproximadamente coincidido com um bloco de vídeo a ser decodificado, e a diferença de pixel pode ser determinada usando uma soma de diferenças absolutas (sum of absolute differences, SAD), uma soma das diferenças quadradas (sum of squared differences, SSD) ou outra métrica de diferença. Em algumas implementações viáveis, o codificador de vídeo 20 pode calcular um valor de uma localização de pixel sub-
inteiro (sub-integer) de uma imagem de referência armazenada no armazenamento de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar um valor de uma localização de 1/4 de pixel, uma localização de 1/8 de pixel ou outra localização de pixel fracionário da imagem de referência. Portanto, a unidade de estimativa de movimento 42 pode realizar pesquisa de movimento em relação a uma localização de pixel completo e uma localização de pixel fracionária, e emitir um vetor de movimento com precisão de pixel fracionário.
[00106] A unidade de estimativa de movimento 42 calcula um vetor de movimento para a PU do bloco de vídeo na fatia interdecodificada, comparando uma localização da PU e uma localização do bloco de predição da imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (uma lista 0) ou uma segunda lista de imagens de referência (uma lista 1). Cada lista é usada para identificar uma ou mais imagens de referência armazenadas no armazenamento de imagens de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e a unidade de compensação de movimento 44.
[00107] A compensação de movimento realizada pela unidade de compensação de movimento 44 pode incluir extração ou geração de um bloco de predição com base no vetor de movimento determinado através da estimativa de movimento e pode ser realizada interpolação com precisão de nível de subpixel. Após receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar um bloco de predição para o qual o vetor de movimento aponta em uma lista de imagens de referência. O codificador de vídeo 20 subtrai um valor de pixel do bloco de predição de um valor de pixel do bloco de vídeo atual que está sendo decodificado para obter um bloco de vídeo residual, para obter a diferença de pixel. A diferença de pixel constitui dados residuais do bloco e pode incluir um componente de diferença de luma e um componente de diferença de croma. O circuito aritmético 50 é um ou mais componentes que realizam a operação de subtração. A unidade de compensação de movimento 44 pode ainda gerar um elemento de sintaxe associado ao bloco de vídeo e à fatia de vídeo, de modo que o decodificador 30 de vídeo decodifique o bloco de vídeo na fatia de vídeo.
[00108] Se a PU estiver localizada na fatia B, uma imagem incluindo a PU pode ser associada às duas listas de imagens de referência referidas como a "lista 0" e a "lista 1". Em algumas implementações viáveis, a imagem incluindo a fatia B pode ser associada a uma combinação de lista da lista 0 e da lista 1.
[00109] Além disso, se a PU estiver localizada na fatia B, a unidade de estimativa de movimento 42 pode realizar predição unidirecional ou bidirecional na PU. Em algumas implementações viáveis, a predição bidirecional é a predição realizada separadamente com base nas imagens na lista de imagens de referência 0 e na lista de imagens de referência
1. Em algumas outras implementações viáveis, a predição bidirecional é a predição realizada separadamente com base em um quadro futuro reconstruído e um quadro passado reconstruído que é de um quadro atual em uma ordem de exibição. Quando a unidade de estimativa de movimento 42 realiza predição unidirecional na PU, a unidade de estimativa de movimento 42 pode pesquisar a imagem de referência na lista 0 ou na lista 1 para um bloco de referência para a PU. Então, a unidade de estimativa de movimento 42 pode gerar um índice de referência indicando uma imagem de referência incluindo o bloco de referência na lista 0 ou na lista 1 e um vetor de movimento indicando um deslocamento espacial entre a PU e o bloco de referência. A unidade de estimativa de movimento 42 pode emitir o índice de referência, um identificador de direção de predição e o vetor de movimento como informação de movimento para a PU. O identificador de direção de predição pode indicar que o índice de referência indica a imagem de referência na lista 0 ou na lista 1. A unidade de compensação de movimento 44 pode gerar um bloco de imagem de predição para a PU com base no bloco de referência indicado pela informação de movimento para a PU.
[00110] Quando a unidade de estimativa de movimento 42 realiza predição bidirecional na PU, a unidade de estimativa de movimento 42 pode pesquisar a imagem de referência na lista 0 para um bloco de referência para a PU e pode pesquisar ainda a imagem de referência na lista 1 para outro bloco de referência para a PU. Então, a unidade de estimativa de movimento 42 pode gerar índices de referência indicando imagens de referência incluindo os blocos de referência na lista 0 e na lista 1, e vetores de movimento indicando deslocamentos espaciais entre os blocos de referência e a PU. A unidade de estimativa de movimento 42 pode emitir os índices de referência e os vetores de movimento para a PU como informação de movimento para a PU. A unidade de compensação de movimento 44 pode gerar um bloco de predição de imagem para a PU com base nos blocos de referência indicados pela informação de movimento para a PU.
[00111] Em algumas implementações viáveis, a unidade de estimativa de movimento 42 não emite um conjunto completo de informação de movimento para a PU para a unidade de codificação de entropia 56. Em vez disso, a unidade de estimativa de movimento 42 pode sinalizar a informação de movimento para a PU com referência à informação de movimento para outra PU. Por exemplo, a unidade de estimativa de movimento 42 pode determinar que a informação de movimento para a PU é semelhante à informação de movimento para uma PU vizinha. Nesta implementação, a unidade de estimativa de movimento 42 pode indicar um valor de indicador em uma estrutura de sintaxe associada à PU, e o valor do indicador indica, para o decodificador de vídeo 30, que a informação de movimento para a PU é a mesma que a informação de movimento para a PU vizinha, ou pode ser derivado da informação de movimento para a PU vizinha. Em outra implementação, a unidade de estimativa de movimento 42 pode identificar, na estrutura de sintaxe associada à PU, um vetor de movimento predito candidato e uma diferença de vetor de movimento (motion vector difference, MVD) que estão associados à PU vizinha. O MVD indica uma diferença entre o vetor de movimento para a PU e o vetor de movimento predito candidato indicado associado à PU vizinha. O decodificador de vídeo 30 pode determinar o vetor de movimento para a PU usando o vetor de movimento predito candidato indicado e a MVD.
[00112] Conforme descrito acima, a unidade de predição 41 pode gerar uma lista de vetores de movimento preditos candidatos para cada PU de uma CU. Uma ou mais listas de vetores de movimento preditos candidatos podem incluir um ou mais vetores de movimento preditos candidatos originais e um ou mais vetores de movimento preditos candidatos adicionais derivados de um ou mais vetores de movimento preditos candidatos originais.
[00113] Deve-se notar que, nesta modalidade deste pedido, ao estabelecer a lista de vetores de movimento preditos candidatos no modo de mesclagem, a unidade de predição 41 pode armazenar um vetor de movimento para uma PU de referência da PU a ser processada na lista de candidatos de vetores de movimento preditos candidatos, o vetor de movimento para a PU de referência pode ser um vetor de movimento inicial não atualizado para a PU de referência ou pode ser um vetor de movimento final atualizado para a PU de referência. O vetor de movimento final atualizado para a PU de referência pode ser obtido com base em um vetor de movimento armazenado no espaço de armazenamento alvo. Quando o espaço de armazenamento alvo armazena um MVD, o vetor de movimento final para a PU de referência pode ser obtido adicionando o vetor de movimento inicial para a PU de referência e a MVD armazenada no espaço de armazenamento alvo. Quando o espaço de armazenamento alvo armazena o vetor de movimento final para a PU de referência, o vetor de movimento final para a PU de referência pode ser obtido diretamente do espaço de armazenamento alvo. O vetor de movimento para a PU de referência pode ser armazenado na lista de vetores de movimento preditos candidatos da seguinte maneira: quando a PU de referência e a PU atual estão no mesmo intervalo de linha CTB ou CTB, o vetor de movimento inicial não atualizado para a unidade de referência é armazenado na lista de vetores de movimento preditos candidatos; ou quando a PU de referência e a PU atual não estão no mesmo intervalo de linha CTB ou CTB, o vetor de movimento final atualizado para a unidade de referência é armazenado na lista de vetores de movimento preditos candidatos.
[00114] A unidade de intra-predição 46 na unidade de predição 41 pode realizar decodificação de intra-predição no bloco de vídeo atual em relação a um ou mais blocos vizinhos que estão em uma mesma imagem ou fatia que o bloco atual a ser decodificado, para fornecer compressão espacial. Portanto, como uma alternativa de inter-predição (como descrito acima) realizada pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44, a unidade de intra-predição 46 pode realizar intra-predição no bloco atual. Especificamente, a unidade de intra-predição 46 pode determinar um modo de intra-predição para codificar o bloco atual. Em algumas implementações viáveis, a unidade de intra-predição 46 pode (por exemplo) usar vários modos de intra-predição para codificar o bloco atual durante travessia de codificação separada, e a unidade de intra- predição 46 (ou uma unidade de seleção de modo 40 em algumas implementações viáveis) pode selecionar um modo de intra- predição apropriado dos modos de teste.
[00115] Após a unidade de predição 41 gerar um bloco de predição do bloco de vídeo atual por meio de inter-predição ou intra-predição, o codificador de vídeo 20 subtrai o bloco de predição do bloco de vídeo atual, para obter um bloco de vídeo residual. Dados de vídeo residuais no bloco residual podem ser incluídos em uma ou mais TUs e aplicados à unidade de transformada 52. A unidade de transformada 52 transforma os dados de vídeo residuais em coeficientes de transformada residual realizando transformada, tal como transformada discreta de cosseno (discrete cosine transform, DCT) ou transformada conceitualmente semelhante (por exemplo, transformada discreta de seno (discrete sine transform, DST)). A unidade de transformada 52 pode transformar os dados de vídeo residuais do domínio de pixel para o domínio de transformada (por exemplo, domínio de frequência).
[00116] A unidade de transformada 52 pode enviar os coeficientes de transformada obtidos para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformada para reduzir ainda mais uma taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. Um grau de quantização pode ser modificado ajustando um parâmetro de quantização. Em algumas implementações viáveis, a unidade de quantização 54, então, pode varrer uma matriz incluindo um coeficiente de transformada quantizada. Alternativamente, a unidade de codificação de entropia 56 pode realizar varredura.
[00117] Após a quantização, a unidade de codificação de entropia 56 pode codificar por entropia o coeficiente de transformada quantizada. Por exemplo, a unidade de codificação de entropia 56 pode realizar codificação de comprimento variável adaptável ao contexto (CAVLC), codificação aritmética binária adaptável ao contexto (CABAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE), ou outro método ou tecnologia de codificação de entropia. A unidade de codificação de entropia
56 pode ainda codificar por entropia um vetor de movimento e outro elemento de sintaxe de uma fatia de vídeo atual que está sendo decodificada. Após ser codificado por entropia pela unidade de codificação de entropia 56, um fluxo de bits codificado pode ser transmitido para o decodificador de vídeo 30 ou gravado para transmissão ou recuperação subsequente pelo decodificador de vídeo 30.
[00118] A unidade de codificação de entropia 56 pode codificar informação indicando o modo de intra-predição selecionado de acordo com as tecnologias neste pedido. O codificador de vídeo 20 pode incluir, em dados de configuração de fluxo de bits transmitidos que podem incluir uma pluralidade de tabelas de índice de modo de intra- predição e uma pluralidade de tabelas de índice de modo de intra-predição modificadas (também referidas como tabelas de mapeamento de palavra de código), definições de contextos de codificação de vários blocos, e indicações de um modo mais provável (most probable mode, MPM), uma tabela de índice de modo de intra-predição, e uma tabela de índice de modo de intra-predição modificada que são usadas para cada um dos contextos.
[00119] A unidade de quantização inversa 58 e a unidade de transformada inversa 60, respectivamente, realizam a quantização inversa e a transformada inversa, para reconstruir o bloco residual no domínio do pixel que é subsequentemente usado como um bloco de referência da imagem de referência. A unidade de compensação de movimento 44 pode calcular o bloco de referência adicionando o bloco residual e um bloco de predição de uma imagem de referência em uma lista de imagens de referência. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação a um bloco residual reconstruído, para calcular um valor de pixel sub-inteiro para estimativa de movimento. O circuito aritmético 62 adiciona o bloco residual reconstruído e o bloco preditivo compensado de movimento gerado pela unidade de compensação de movimento 44 para gerar um bloco de referência que é armazenado no armazenamento de imagem de referência 64. O bloco de referência pode ser usado pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 como um bloco de referência para realizar a inter-predição em um bloco em um quadro de vídeo ou imagem subsequente.
[00120] FIG. 3 é um diagrama de blocos esquemático de um decodificador de vídeo 30 de acordo com uma modalidade deste pedido. Em uma implementação viável da FIG. 3, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 80, uma unidade de predição 81, uma unidade de quantização inversa 86, uma unidade de transformada inversa 88, um circuito aritmético 90 e um armazenamento de imagem de referência 92.
[00121] O armazenamento de imagens de referência 92 pode ser configurado para fornecer espaço de armazenamento alvo. O espaço de armazenamento alvo é usado para armazenar um MVD, ou seja, é usado para armazenar uma diferença entre um vetor de movimento final e um vetor de movimento inicial. Em algumas modalidades, o espaço de armazenamento alvo é usado para armazenar um vetor de movimento final. Nesta modalidade deste pedido, um vetor de movimento final atualizado ou a MVD que é armazenado no espaço de armazenamento alvo pode ser usado em um processo de codificação de outra PU. Por exemplo, em um processo de decodificação em um modo de mesclagem, um vetor de movimento inicial não atualizado e um vetor de movimento final atualizado são armazenados separadamente em momentos diferentes. Portanto, quando uma PU a ser processada precisa obter um vetor de movimento predito para outra PU, sob uma condição específica, a PU a ser processada pode usar diretamente um vetor de movimento inicial não atualizado para a outra PU como o vetor de movimento para a outra PU, e não precisa obter um vetor de movimento para outro bloco após o vetor de movimento para a outra PU ser atualizado.
[00122] Deve-se notar que o espaço de armazenamento alvo pode ser fornecido por uma memória diferente do armazenamento de imagem de referência 92, por exemplo, uma memória recentemente adicionada. Isso não é especificamente limitado nesta modalidade deste pedido.
[00123] Deve-se notar que, em uma tecnologia relacionada, quando o decodificador de vídeo 30 funciona no modo de mesclagem, o conteúdo no espaço de armazenamento alvo está vazio, ou é um vetor zero, ou seja, quando o decodificador de vídeo 30 funciona no modo de mesclagem, o espaço de armazenamento alvo não é usado durante a decodificação e, durante a decodificação, o vetor de movimento predito para a outra PU que é obtido pela PU a ser processada é um vetor de movimento final atualizado para a outra PU. Portanto, a PU a ser processada pode obter o vetor de movimento predito para a outra PU somente após o vetor de movimento predito para a outra PU ser atualizado e, consequentemente, ocorrer um atraso de decodificação durante a decodificação. No entanto, quando o decodificador de vídeo 30 funciona em um modo de não mesclagem, o espaço de armazenamento alvo pode ser usado. Por exemplo, em um modo de AMVP, o decodificador de vídeo 30 pode obter uma MVD para uma PU a ser processada por meio de decodificação, de modo que o decodificador de vídeo 30 possa obter um vetor de movimento final para a PU a ser processada com base no vetor de movimento inicial e a MVD para a PU a ser processada.
[00124] A unidade de predição 81 inclui uma unidade de compensação de movimento 82 e uma unidade de intra-predição
84. Em algumas implementações viáveis, o decodificador de vídeo 30 pode realizar um exemplo de processo de decodificação inverso ao processo de codificação descrito em relação ao codificador de vídeo 20 na FIG. 4.
[00125] Durante a decodificação, o decodificador de vídeo 30 recebe, do codificador de vídeo 20, um fluxo de bits de vídeo codificado que representa um bloco de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados. A unidade de decodificação de entropia 80 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar um coeficiente quantizado, um vetor de movimento e outros elementos de sintaxe. A unidade de decodificação de entropia 80 transfere o vetor de movimento e os outros elementos de sintaxe para a unidade de predição 81. O decodificador de vídeo 30 pode receber os elementos de sintaxe em um nível de fatia de vídeo e / ou um nível de bloco de vídeo.
[00126] Quando a fatia de vídeo é decodificada em uma fatia intradecodificada (I), a unidade de intra-predição 84 da unidade de predição 81 pode gerar dados de predição do bloco de vídeo da fatia de vídeo atual com base em um modo de intra-predição sinalizado e dados de um bloco previamente decodificado de um quadro ou imagem atual.
[00127] Quando a imagem de vídeo é decodificada em uma fatia interdecodificada (por exemplo, uma fatia B, uma fatia P ou uma fatia GPB), a unidade de compensação de movimento 82 da unidade de predição 81 gera um bloco de predição do bloco de vídeo da imagem de vídeo atual com base no vetor de movimento e os outros elementos de sintaxe que são recebidos da unidade de decodificação de entropia 80. O bloco de predição pode ser gerado a partir de uma imagem de referência em uma lista de imagens de referência. O decodificador de vídeo 30 pode usar uma tecnologia de construção padrão para construir listas de imagens de referência (uma lista 0 e uma lista 1) com base em uma imagem de referência armazenada no armazenamento de imagens de referência 92.
[00128] A unidade de compensação de movimento 82 determina a informação de predição do bloco de vídeo da fatia de vídeo atual analisando o vetor de movimento e os outros elementos de sintaxe, e usa a informação de predição para gerar o bloco de predição do bloco de vídeo que está sendo decodificado. Por exemplo, a unidade de compensação de movimento 82 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra- predição ou inter-predição) para decodificar o bloco de vídeo da fatia de vídeo, um tipo de fatia de inter-predição (por exemplo, a fatia B, a fatia P, ou a fatia GPB), informação de construção de uma ou mais listas de imagens de referência da fatia, um vetor de movimento para cada bloco de vídeo codificado da fatia, um estado de inter-predição de cada bloco de vídeo interdecodificado da fatia, e outras informações para decodificar o bloco de vídeo na fatia de vídeo atual.
[00129] A unidade de compensação de movimento 82 pode ainda realizar interpolação usando um filtro de interpolação. A unidade de compensação de movimento 82 pode usar, por exemplo, um filtro de interpolação usado pelo codificador de vídeo 20 durante a codificação do bloco de vídeo, para calcular um valor de interpolação de um pixel sub-inteiro de um bloco de referência. Neste pedido, a unidade de compensação de movimento 82 pode determinar, com base nos elementos de sintaxe recebidos, o filtro de interpolação usado pelo codificador de vídeo 20, e usar o filtro de interpolação para gerar o bloco de predição.
[00130] Se uma PU é codificada através de inter-predição, a unidade de compensação de movimento 82 pode gerar uma lista de vetores de movimento preditos candidatos para a PU. O fluxo de bits pode incluir dados para identificar uma localização de um vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. Após gerar o vetor de movimento predito candidato para a PU, a unidade de compensação de movimento 82 pode gerar um bloco de imagem de predição para a PU com base em um ou mais blocos de referência indicados por informações de movimento para a PU. O bloco de referência para a PU pode estar localizado em uma imagem temporal diferente de uma imagem temporal da PU. A unidade de compensação de movimento 82 pode determinar a informação de movimento para a PU com base na informação de movimento selecionada na lista de vetores de movimento preditos candidatos para a PU.
[00131] Deve-se notar que, nesta modalidade deste pedido, ao estabelecer a lista de vetores de movimento preditos candidatos no modo de mesclagem, a unidade de compensação de movimento 82 pode armazenar um vetor de movimento predito para uma PU de referência da PU a ser processada na lista de vetores de movimento preditos candidatos, o vetor de movimento predito para a PU de referência pode ser um vetor de movimento inicial não atualizado para a PU de referência ou pode ser um vetor de movimento final atualizado para a PU de referência.
O vetor de movimento final atualizado para a PU de referência pode ser obtido com base em um vetor de movimento para a PU de referência que é armazenado no espaço de armazenamento alvo.
Por exemplo, quando o espaço de armazenamento alvo armazena um MVD, o vetor de movimento final para a PU de referência pode ser obtido adicionando o vetor de movimento inicial para a PU de referência e a MVD armazenada no espaço de armazenamento alvo.
Quando o espaço de armazenamento alvo armazena o vetor de movimento final para a PU de referência, o vetor de movimento final para a PU de referência pode ser obtido diretamente do espaço de armazenamento alvo.
O vetor de movimento predito para a PU de referência pode ser armazenado na lista de vetores de movimento preditos candidatos da seguinte maneira: quando a PU de referência e a PU atual estão no mesmo intervalo de linha CTB ou CTB, o vetor de movimento inicial não atualizado para a unidade de referência é armazenado na lista de vetores de movimento preditos candidatos; ou quando a PU de referência e a PU atual não estão no mesmo intervalo de linha CTB ou CTB, o vetor de movimento final atualizado para a unidade de referência é armazenado na lista de vetores de movimento preditos candidatos.
[00132] A unidade de quantização inversa 86 realiza quantização inversa (por exemplo, desquantização) em um coeficiente de transformada quantizado que é fornecido no fluxo de bits e decodificado pela unidade de decodificação de entropia 80. O processo de quantização inversa pode incluir: determinar um grau de quantização com base em um parâmetro de quantização calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo e, da mesma forma, determinar um grau de quantização inversa a ser aplicado. A unidade de transformada inversa 88 realiza a transformada inversa (por exemplo, DCT inversa, transformada de inteiro inversa, ou um processo de transformada inversa conceitualmente semelhante) no coeficiente de transformada para gerar um bloco residual no domínio do pixel.
[00133] Após a unidade de compensação de movimento 82 gerar o bloco de predição do bloco de vídeo atual com base no vetor de movimento e os outros elementos de sintaxe, o decodificador de vídeo 30 realiza uma operação de soma no bloco residual da unidade de transformada inversa 88 e o bloco de predição correspondente gerado pela unidade de compensação de movimento 82, para formar o bloco de vídeo decodificado. O circuito aritmético 90 é um ou mais componentes que realizam a operação de soma. Quando necessário, um filtro de desbloqueio pode ser usado para realizar a filtragem no bloco decodificado para remover um artefato de bloqueio. Outro filtro de loop (em ou após um loop de decodificação) também pode ser usado para suavizar píxeis, ou a qualidade do vídeo pode ser melhorada de outra maneira. Então, um bloco de vídeo decodificado em um determinado quadro ou imagem é armazenado no armazenamento de imagem de referência 92. O armazenamento de imagem de referência 92 armazena uma imagem de referência usada para compensação de movimento subsequente. O armazenamento de imagem de referência 92 também armazena o vídeo decodificado a ser subsequentemente apresentado em um aparelho de exibição, como o aparelho de exibição 32 na FIG. 1.
[00134] Conforme descrito acima, as tecnologias neste pedido se referem a, por exemplo, interdecodificação. Deve ser entendido que as tecnologias neste pedido podem ser realizadas por qualquer decodificador de vídeo descrito neste pedido, e o decodificador de vídeo inclui (por exemplo) o codificador de vídeo 20 e o decodificador de vídeo 30 mostrado e descrito na FIG. 1 à FIG. 3. Para ser específico, em uma implementação viável, a unidade de predição 41 descrita na FIG. 2 pode realizar uma tecnologia específica descrita abaixo quando a inter-predição é realizada durante a codificação de um bloco de dados de vídeo. Em outra implementação viável, a unidade de predição 81 descrita na FIG. 3 pode realizar uma tecnologia específica descrita abaixo quando a inter-predição é realizada durante a decodificação de um bloco de dados de vídeo. Portanto, uma referência a um "codificador de vídeo" ou "decodificador de vídeo" geral pode incluir o codificador de vídeo 20, o decodificador de vídeo 30, ou outra unidade de codificação ou codificação de vídeo.
[00135] FIG. 4 é um diagrama de blocos esquemático de um módulo de inter-predição de acordo com uma modalidade deste pedido. O módulo de inter-predição 121 pode incluir, por exemplo, uma unidade de estimativa de movimento 42 e uma unidade de compensação de movimento 44. Uma relação entre uma PU e uma CU varia com um padrão de codificação de compressão de vídeo. O módulo de inter-predição 121 pode particionar uma CU atual em PUs de acordo com uma pluralidade de padrões de particionamento. Por exemplo, o módulo de inter-predição 121 pode particionar a CU atual nos PUs de acordo com os padrões de partição 2N × 2N, 2N × N, N × 2N e N × N. Em outra modalidade, a CU atual é uma PU atual. Isso não é limitado.
[00136] O módulo de inter-predição 121 pode realizar estimativa de movimento inteiro (integer motion estimation, IME) e, em seguida, estimativa de movimento fracionário (fraction motion estimation, FME) em cada PU. Quando o módulo de inter-predição 121 realiza IME na PU, o módulo de inter- predição 121 pode pesquisar uma ou mais imagens de referência para um bloco de referência para a PU. Após encontrar o bloco de referência para a PU, o módulo de inter-predição 121 pode gerar um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência para a PU com precisão inteira. Quando o módulo de inter-predição 121 realiza FME na PU, o módulo de inter-predição 121 pode melhorar o vetor de movimento gerado pela realização de IME na PU. O vetor de movimento gerado pela realização de FME na PU pode ter precisão de sub-inteiro (por exemplo, precisão de 1/2 pixel ou precisão de 1/4 de pixel). Após gerar o vetor de movimento para a PU, o módulo de inter-predição 121 pode gerar um bloco de imagem de predição para a PU usando o vetor de movimento para a PU.
[00137] Em algumas implementações viáveis nas quais o módulo de inter-predição 121 sinaliza informação de movimento para a PU para um decodificador em um modo de AMVP, o módulo de inter-predição 121 pode gerar uma lista de vetores de movimento preditos candidatos para a PU. A lista de vetores de movimento preditos candidatos pode incluir um ou mais vetores de movimento preditos candidatos originais e um ou mais vetores de movimento preditos candidatos adicionais derivados de um ou mais vetores de movimento preditos candidatos originais. Após gerar a lista de vetores de movimento preditos candidatos para a PU, o módulo de inter-predição 121 pode selecionar um vetor de movimento predito candidato da lista de vetores de movimento preditos candidatos e gerar uma diferença de vetores de movimento (MVD) para a PU. A MVD para a PU pode indicar uma diferença entre um vetor de movimento indicado pelo vetor de movimento predito candidato selecionado e o vetor de movimento gerado para a PU por meio de IME e FME. Nessas implementações viáveis, o módulo de inter-predição 121 pode emitir um índice de vetor de movimento predito candidato identificando uma localização do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos. O módulo de inter-predição 121 pode ainda emitir a MVD para a PU. O seguinte descreve em detalhes uma implementação viável de um modo de predição de vetor de movimento avançado (AMVP) na FIG. 11 nas modalidades deste pedido.
[00138] Além de realizar IME e FME na PU para gerar a informação de movimento para a PU, o módulo de inter-predição 121 pode ainda realizar uma operação de mesclagem na PU. Quando o módulo de inter-predição 121 realiza a operação de mesclagem na PU, o módulo de inter-predição 121 pode gerar uma lista de vetores de movimento preditos candidatos para a PU. A lista de vetores de movimento preditos candidatos para a PU pode incluir um ou mais vetores de movimento preditos candidatos originais e um ou mais vetores de movimento preditos candidatos adicionais derivados de um ou mais vetores de movimento preditos candidatos originais. Os um ou mais vetores de movimento preditos candidatos originais na lista de vetores de movimento preditos candidatos podem incluir um ou mais vetores de movimento preditos candidatos espaciais e vetores de movimento preditos candidatos temporais. O vetor de movimento predito candidato espacial pode indicar informação de movimento para outra PU em uma imagem atual. O vetor de movimento predito candidato temporal pode ser baseado em informação de movimento para uma PU correspondente em uma imagem diferente da imagem atual. O vetor de movimento predito candidato temporal também pode ser referido como um preditor de vetor de movimento temporal (temporal motion vector predictor, TMVP).
[00139] Após gerar a lista de vetores de movimento preditos candidatos, o módulo de inter-predição 121 pode selecionar um vetor de movimento predito candidato a partir da lista de vetores de movimento preditos candidatos. Em seguida, o módulo de inter-predição 121 pode gerar um bloco de imagem de predição para a PU com base em um bloco de referência indicado pela informação de movimento para a PU. No modo de mesclagem, a informação de movimento para a PU pode ser a mesma que a informação de movimento indicada pelo vetor de movimento predito candidato selecionado. FIG. 10 descrita abaixo é um fluxograma de um exemplo do modo de mesclagem.
[00140] Após gerar o bloco de imagem de predição para a PU por meio de IME e FME e gerar o bloco de imagem de predição para a PU por meio da operação de mesclagem, o módulo de inter-predição 121 pode selecionar o bloco de imagem de predição gerado realizando a operação FME ou o bloco de imagem de predição gerado realizando a operação de mesclagem. Em algumas implementações viáveis, o módulo de inter- predição 121 pode selecionar o bloco de imagem de predição para a PU analisando os custos de distorção de taxa do bloco de imagem de predição gerado pela execução da operação FME e o bloco de imagem de predição gerado pela execução da operação de mesclagem.
[00141] Após o módulo de inter-predição 121 selecionar um bloco de imagem de predição para uma PU gerada por particionamento da CU atual de acordo com cada padrão de particionamento (em algumas implementações, após uma unidade de árvore de codificação CTU ser particionada em CUs, a CU não é mais particionada em PUs menores e, neste caso, a PU é equivalente à CU), o módulo de inter-predição 121 pode selecionar um padrão de particionamento para a CU atual. Em algumas implementações, o módulo de inter-predição 121 pode selecionar o padrão de particionamento para a CU atual, analisando um custo de distorção de taxa do bloco de imagem de predição selecionado da PU gerado pelo particionamento da CU atual de acordo com cada padrão de particionamento. O módulo de inter-predição 121 pode emitir um bloco de imagem de predição associado a uma PU que pertence ao padrão de particionamento selecionado para um módulo de geração residual 102. O módulo de inter-predição 121 pode emitir um elemento de sintaxe de informação de movimento para a PU que pertence ao padrão de particionamento selecionado para um módulo de codificação de entropia 116.
[00142] No diagrama esquemático mostrado na FIG. 4, o módulo de inter-predição 121 inclui módulos IME 180A a 180N (coletivamente referidos como um "módulo IME 180"), módulos FME 182A a 182N (coletivamente referidos como um "módulo FME 182"), módulos de mesclagem 184A a 184N (coletivamente referidos como um "módulo de mesclagem 184"), módulos de tomada de decisão de padrão PU 186A a 186N (coletivamente referidos como um "módulo de tomada de decisão de padrão PU 186") e um módulo de tomada de decisão de padrão CU 188 (e pode realizar ainda um processo de tomada de decisão de padrão CTU para CU).
[00143] O módulo IME 180, o módulo FME 182, e o módulo de mesclagem 184 podem, respectivamente, realizar uma operação IME, uma operação FME e uma operação de mesclagem na PU da CU atual. No diagrama esquemático mostrado na FIG. 4, o módulo de inter-predição 121 é descrito como incluindo um módulo IME separado 180, um módulo FME separado 182 e um módulo de mesclagem separado 184 para cada PU em cada padrão de particionamento para a CU. Em outra implementação viável, o módulo de inter-predição 121 não inclui nenhum módulo IME separado 180, nenhum módulo FME separado 182 ou nenhum módulo de mesclagem separado 184 para cada PU em cada padrão de particionamento da CU.
[00144] Conforme ilustrado no diagrama esquemático na FIG. 4, o módulo IME 180A, o módulo FME 182A e o módulo de mesclagem 184A podem, respectivamente, realizar uma operação IME, uma operação FME, e uma operação de mesclagem em uma PU gerada pelo particionamento da CU de acordo com o padrão de particionamento 2N × 2N. O módulo de tomada de decisão de modo de PU 186A pode selecionar um dos blocos de imagem de predição gerados pelo módulo IME 180A, o módulo FME 182A e o módulo de mesclagem 184A.
[00145] O módulo IME 180B, o módulo FME 182B e o módulo de mesclagem 184B podem, respectivamente, realizar uma operação IME, uma operação FME, e uma operação de mesclagem em uma PU esquerda gerado pelo particionamento da CU de acordo com o padrão de particionamento N × 2N. O módulo de tomada de decisão de modo de PU 186B pode selecionar um dos blocos de imagem de predição gerados pelo módulo IME 180B, o módulo FME 182B e o módulo de mesclagem 184B.
[00146] O módulo IME 180C, o módulo FME 182C e o módulo de mesclagem 184C podem, respectivamente, realizar uma operação IME, uma operação FME e uma operação de mesclagem em uma PU direita gerada pelo particionamento da CU de acordo com o padrão de particionamento N × 2N. O módulo de tomada de decisão de modo de PU 186C pode selecionar um dos blocos de imagem de predição gerados pelo módulo IME 180C, o módulo FME 182C e o módulo de mesclagem 184C.
[00147] O módulo IME 180N, o módulo FME 182N e o módulo de mesclagem 184 podem, respectivamente, realizar uma operação IME, uma operação FME e uma operação de mesclagem em uma PU inferior direita gerada pelo particionamento da CU de acordo com o padrão de particionamento N × N. O módulo de tomada de decisão de modo de PU 186N pode selecionar um dos blocos de imagem de predição gerados pelo módulo IME 180N, o módulo FME 182N e o módulo de mesclagem 184N.
[00148] O módulo de tomada de decisão de padrão de PU 186 pode selecionar um bloco de imagem de predição analisando os custos de distorção de taxa de uma pluralidade de blocos de imagem de predição possíveis e selecionar um bloco de imagem de predição que fornece um custo de distorção de taxa ótimo em um dado cenário de decodificação. Por exemplo, para uma aplicação com largura de banda limitada, o módulo de tomada de decisão de modo de PU 186 pode preferir um bloco de imagem de predição para o qual uma taxa de compressão é aumentada, e para outra aplicação, o módulo de tomada de decisão de modo de PU 186 pode preferir uma imagem de predição bloco para o qual a qualidade de um vídeo reconstruído é melhorada. Após o módulo de tomada de decisão de padrão de PU 186 selecionar blocos de imagem de predição para as PUs da CU atual, o módulo de tomada de decisão de padrão de CU 188 seleciona o padrão de particionamento para a CU atual e emite o bloco de imagem de predição e informação de movimento para a PU que pertence ao padrão de particionamento selecionado.
[00149] FIG. 5 é um diagrama esquemático de um exemplo de uma unidade de codificação e um bloco de imagem vizinho associado à unidade de codificação de acordo com uma modalidade deste pedido, e é um diagrama esquemático para ilustrar uma CU 250 e exemplos de localizações de vetor de movimento predito candidato 252A a 252E associado à CU 250. Neste pedido, os locais do vetor de movimento predito candidato 252A a 252E podem ser referidos coletivamente como uma localização do vetor de movimento predito candidato 252. A localização do vetor de movimento predito candidato 252 representa um vetor de movimento predito candidato espacial que está na mesma imagem que a CU 250. A localização do vetor de movimento predito candidato 252A está à esquerda da CU
250. A localização do vetor de movimento predito candidato
252B está no topo da CU 250. A localização do vetor de movimento predito candidato 252C está no canto superior direito da CU 250. A localização do vetor de movimento predito candidato 252D está no canto inferior esquerdo da CU
250. A localização do vetor de movimento predito candidato 252E está no canto superior esquerdo da CU 250. FIG. 8 mostra um exemplo de implementação de uma maneira na qual um módulo de inter-predição 121 e um módulo de compensação de movimento 162 podem gerar listas de vetores de movimento preditos. A seguir, a implementação é explicada com referência ao módulo de inter-predição 121. No entanto, deve ser entendido que o módulo de compensação de movimento 162 pode implementar uma mesma tecnologia e, portanto, gerar uma mesma lista de vetores de movimento preditos candidatos. Nesta modalidade deste pedido, um bloco de imagem no qual um candidato a localização de vetor de movimento predito está localizado é referido como um bloco de referência. Além disso, o bloco de referência inclui um bloco de referência espacial, por exemplo, blocos de imagem nos quais 252A a 252E estão localizados, e também inclui um bloco de referência temporal, por exemplo, um bloco de imagem no qual um bloco colocalizado (co-located) está localizado, ou um bloco de imagem espacialmente vizinho de um bloco colocalizado.
[00150] FIG. 6 é um fluxograma de exemplo de construção de uma lista de vetores de movimento preditos candidatos de acordo com uma modalidade deste pedido. Uma tecnologia na FIG. 6 é descrito com base em uma lista incluindo cinco vetores de movimento preditos candidatos, mas as tecnologias descritas nesta especificação podem, alternativamente, ser usadas com uma lista com outro tamanho. Cada um dos cinco vetores de movimento preditos candidatos pode ter um índice (por exemplo, 0 a 4). A tecnologia na FIG. 6 é descrito com base em um decodificador de vídeo geral. O decodificador de vídeo geral pode ser, por exemplo, um codificador de vídeo (por exemplo, o codificador de vídeo 20) ou um decodificador de vídeo (por exemplo, o decodificador de vídeo 30).
[00151] Para reconstruir a lista de vetores de movimento preditos candidatos de acordo com a implementação da FIG. 6, o decodificador de vídeo primeiro considera quatro candidatos espaciais (602), cada candidato espacial corresponde a um vetor de movimento predito, e os quatro vetores de movimento preditos candidatos espaciais podem incluir localizações de vetores de movimento preditos candidatos 252A, 252B, 252C e 252D. Os quatro vetores de movimento preditos candidatos espaciais correspondem à informação de movimento para quatro PUs que estão na mesma imagem que uma CU atual (por exemplo, uma CU 250). Em outras palavras, os quatro vetores de movimento preditos candidatos espaciais são vetores de movimento preditos para os quatro PUs. Nesta modalidade deste pedido, ao obter os quatro vetores de movimento preditos candidatos espaciais, o decodificador de vídeo primeiro precisa realizar a determinação nos quatro PUs. Por exemplo, um processo no qual o decodificador de vídeo realiza a determinação em uma das quatro PUs pode ser o seguinte processo: quando a PU e a CU atual estão no mesmo intervalo de linha CTB ou CTB, um vetor de movimento inicial não atualizado para a PU é usado como um vetor de movimento predito candidato espacial correspondente à PU; ou quando a PU e a CU atual não estão no mesmo intervalo de linha CTB ou CTB, um vetor de movimento final atualizado para a PU é usado como um vetor de movimento predito candidato espacial correspondente à PU. O vetor de movimento final atualizado para a PU pode ser obtido a partir do espaço de armazenamento alvo no qual a PU está armazenada. Nesse caso, o espaço de armazenamento alvo armazena o vetor de movimento final atualizado. Em algumas modalidades, o espaço de armazenamento alvo armazena uma MVD. Neste caso, o vetor de movimento final atualizado para a PU pode, alternativamente, ser obtido com base no vetor de movimento inicial não atualizado para a PU e a MVD armazenada no espaço de armazenamento alvo.
[00152] O decodificador de vídeo pode considerar os quatro vetores de movimento preditos candidatos espaciais na lista em uma ordem especificada. Por exemplo, a localização do vetor de movimento predito candidato 252A pode ser considerada primeiro. Se a localização do vetor de movimento predito candidato 252A estiver disponível, a localização do vetor de movimento predito candidato 252A pode ser atribuída a um índice 0. Se a localização do vetor de movimento predito candidato 252A não estiver disponível, o decodificador de vídeo pode não adicionar a localização do vetor de movimento predito candidato 252A à lista de vetores de movimento preditos candidatos. Uma localização de vetor de movimento predita candidata pode estar indisponível por vários motivos. Por exemplo, se a localização do vetor de movimento predito candidato não estiver em uma imagem atual, a localização do vetor de movimento predito candidato pode estar indisponível. Em outra implementação viável, se a localização do vetor de movimento predito candidato passa por intra-predição, a localização do vetor de movimento predito candidato pode estar indisponível. Em outra implementação viável, se a localização do vetor de movimento predito candidato estiver em uma fatia diferente de uma fatia correspondente à CU atual, a localização do vetor de movimento predita candidata pode estar indisponível.
[00153] Após considerar a localização do vetor de movimento predito candidato 252A, o decodificador de vídeo pode considerar a localização do vetor de movimento predito candidato 252B. Se a localização do vetor de movimento predito candidato 252B estiver disponível e diferente da localização do vetor de movimento predito candidato 252A, o decodificador de vídeo pode adicionar a localização do vetor de movimento predito candidato 252B à lista de vetores de movimento preditos candidatos. Neste contexto específico, o termo "mesmo" ou "diferente" significa que as localizações de vetores de movimento preditos candidatos estão associadas a informações de movimento iguais ou diferentes. Portanto, se duas localizações de vetores de movimento preditos candidatos têm as mesmas informações de movimento, as duas localizações de vetores de movimento preditos candidatos são consideradas iguais; ou se duas localizações de vetores de movimento preditos candidatos têm informações de movimento diferentes, as duas localizações de vetores de movimento preditos candidatos são consideradas diferentes. Se a localização do vetor de movimento predito candidato 252A não estiver disponível, o decodificador de vídeo pode atribuir a localização do vetor de movimento predito candidato 252B ao índice 0. Se a localização do vetor de movimento predito candidato 252A estiver disponível, o decodificador de vídeo pode atribuir a localização do vetor de movimento predito candidato 252B a um índice 1. Se a localização do vetor de movimento predito candidato 252B não estiver disponível ou for a mesma que a localização do vetor de movimento predito candidato 252A, o decodificador de vídeo salta a localização do vetor de movimento predito candidato 252B e não adiciona a localização do vetor de movimento predito candidato 252B à lista de vetores movimento preditos candidatos.
[00154] Da mesma forma, o decodificador de vídeo considera a localização do vetor de movimento predito candidato 252C para determinar se deve adicionar a localização do vetor de movimento predito candidato 252C à lista. Se o local do vetor de movimento predito candidato 252C estiver disponível e diferente dos locais do vetor de movimento predito candidato 252B e 252A, o decodificador de vídeo pode atribuir o local do vetor de movimento predito candidato 252C a um próximo índice disponível. Se a localização do vetor de movimento predito candidato 252C não estiver disponível ou for a mesma que pelo menos uma das localizações do vetor de movimento predito candidato 252A e 252B, o decodificador de vídeo não adiciona a localização do vetor de movimento predito candidato 252C à lista de vetores de movimento preditos candidatos. Em seguida, o decodificador de vídeo considera a localização do vetor de movimento predito candidato 252D. Se a localização do vetor de movimento predito candidato 252D estiver disponível e diferente das localizações do vetor de movimento predito candidato 252A, 252B e 252C, o decodificador de vídeo pode atribuir a localização do vetor de movimento predito candidato 252D a um próximo índice disponível. Se a localização do vetor de movimento predito candidato 252D não estiver disponível ou for o mesmo que pelo menos uma das localizações do vetor de movimento predito candidato 252A, 252B e 252C, o decodificador de vídeo não adiciona a localização do vetor de movimento predito candidato 252D à lista de vetores de movimento preditos candidatos. Na implementação anterior, um exemplo no qual os vetores de movimento preditos candidatos 252A a 252D são considerados para determinar se os vetores de movimento preditos candidatos 252A a 252D são adicionados à lista de vetores de movimento preditos candidatos é geralmente descrito. No entanto, em algumas implementações, todos os vetores de movimento preditos candidatos 252A a 252D podem ser adicionados primeiro à lista de vetores de movimento preditos candidatos e, em seguida, uma localização de vetor de movimento predito candidato repetido é removida da lista de vetores de movimento preditos candidatos.
[00155] Depois que o decodificador de vídeo considera os primeiros quatro vetores de movimento preditos candidatos espaciais, a lista de vetores de movimento preditos candidatos espaciais pode incluir quatro vetores de movimento preditos candidatos espaciais ou a lista pode incluir menos de quatro vetores de movimento preditos candidatos espaciais. Se a lista incluir quatro vetores de movimento preditos candidatos espaciais (sim em 604), ou seja, inclui quatro candidatos espaciais, o decodificador de vídeo considera um candidato temporal (606), e cada candidato temporal corresponde a um vetor de movimento predito candidato. O vetor de movimento predito candidato temporal pode corresponder à informação de movimento para uma PU colocalizada de uma imagem diferente da imagem atual. Se o vetor de movimento predito candidato temporal estiver disponível e diferente dos primeiros quatro vetores de movimento preditos candidatos espaciais, o decodificador de vídeo atribui o vetor de movimento predito candidato temporal a um índice 4. Se o vetor de movimento predito candidato temporal não estiver disponível ou for o mesmo que um dos quatro primeiros vetores de movimento preditos candidatos espaciais, o decodificador de vídeo não adiciona o vetor de movimento predito candidato temporal à lista do vetor de movimento predito candidato. Portanto, após o decodificador de vídeo considerar o vetor de movimento predito candidato temporal (606), a lista de vetores de movimento preditos candidatos pode incluir cinco vetores de movimento preditos candidatos (os primeiros quatro vetores de movimento preditos candidatos espaciais considerados em 602 e o vetor de movimento predito candidato temporal considerado em 604), ou pode incluir quatro vetores de movimento preditos candidatos (os primeiros quatro vetores de movimento preditos candidatos espaciais considerados em 602). Se a lista de vetores de movimento preditos candidatos incluir cinco vetores de movimentos preditos candidatos (sim em 608), ou seja, incluir cinco candidatos, o decodificador de vídeo conclui a construção da lista.
[00156] Se a lista de vetores de movimento preditos candidatos inclui quatro vetores de movimento preditos candidatos (não em 608), o decodificador de vídeo pode considerar um quinto vetor de movimento predito candidato espacial (610). O quinto vetor de movimento predito candidato espacial pode (por exemplo) corresponder a uma localização de vetor de movimento predito candidato 252E. Se o vetor de movimento predito candidato correspondente à localização 252E estiver disponível e diferente dos vetores de movimento preditos correspondentes às localizações 252A, 252B, 252C e 252D, o decodificador de vídeo pode adicionar o quinto vetor de movimento predito candidato espacial à lista de vetores de movimento preditos candidatos e atribui o quinto vetor de movimento predito candidato espacial ao índice 4. Se o vetor de movimento predito candidato correspondente à localização 252E não estiver disponível ou for o mesmo que um dos vetores de movimento preditos candidatos correspondentes às localizações de vetor de movimento predito candidato 252A, 252B, 252C e 252D, o decodificador de vídeo pode não adicionar o candidato vetor de movimento predito correspondendo ao local 252 para a lista de vetores de movimento preditos candidatos. Portanto, após o quinto vetor de movimento predito candidato espacial ser considerado (610), a lista pode incluir cinco vetores de movimento preditos candidatos (os primeiros quatro vetores de movimento preditos candidatos espaciais considerados em 602 e o quinto vetor de movimento predito candidato espacial considerado em 610), ou pode incluir quatro vetores de movimento preditos candidatos (os primeiros quatro vetores de movimento preditos candidatos espaciais considerados em 602).
[00157] Se a lista de vetores de movimento preditos candidatos inclui cinco candidatos (sim em 612), ou seja, inclui cinco vetores de movimentos preditos candidatos, o decodificador de vídeo conclui a geração da lista de vetores de movimento preditos candidatos. Se a lista de vetores de movimento preditos candidatos incluir quatro vetores de movimento preditos candidatos (não em 612), o decodificador de vídeo adiciona um vetor de movimento predito candidato gerado manualmente (614) até que a lista inclua cinco candidatos (sim em 616), ou seja, inclua cinco vetores de movimento preditos candidatos.
[00158] Se a lista incluir menos de quatro vetores de movimento preditos candidatos espaciais (não em 604) após o decodificador de vídeo considerar os primeiros quatro vetores de movimento preditos candidatos espaciais, o decodificador de vídeo pode considerar um quinto candidato espacial (618), ou seja, considerar um quinto vetor de movimento predito candidato espacial. O quinto vetor de movimento predito candidato espacial pode (por exemplo) corresponder a uma localização de vetor de movimento predito candidato 252E. Se o vetor de movimento predito candidato correspondente à localização 252E estiver disponível e diferente dos vetores de movimento preditos candidatos existentes na lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode adicionar o quinto vetor de movimento predito espacial candidato à lista de vetores de movimento preditos candidatos, e atribuir o quinto vetor de movimento predito candidato espacial a um próximo índice disponível. Se o vetor de movimento predito candidato correspondente ao local 252E não estiver disponível ou for o mesmo que um dos vetores de movimento preditos candidatos existentes na lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode não adicionar o vetor de movimento predito candidato correspondente à localização 252E à lista de vetores de movimento preditos candidatos. O decodificador de vídeo pode então considerar um candidato temporal (620), isto é, um vetor de movimento predito temporal. Se o vetor de movimento predito candidato temporal estiver disponível e diferente dos vetores de movimento preditos candidatos existentes na lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode adicionar o vetor de movimento predito candidato temporal à lista de vetores de movimento preditos candidatos e atribuir o vetor de movimento predito candidato temporal para um próximo índice disponível. Se o vetor de movimento predito candidato temporal não estiver disponível ou for o mesmo que um dos vetores de movimento preditos candidatos existentes na lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode não adicionar o vetor de movimento predito candidato temporal à lista de vetores de movimento preditos candidatos.
[00159] Se a lista de vetores de movimento preditos candidatos incluir cinco vetores de movimento preditos candidatos (sim em 622) após o quinto vetor de movimento predito candidato espacial (em 618) e o vetor de movimento predito candidato temporal (em 620) forem considerados, o decodificador de vídeo completa a geração da lista de vetores de movimento preditos candidatos. Se a lista de vetores de movimento preditos candidatos inclui menos de cinco vetores de movimento preditos candidatos (não em 622), o decodificador de vídeo adiciona um vetor de movimento predito candidato gerado manualmente (614) até que a lista inclua cinco vetores de movimento preditos candidatos (sim em 616).
[00160] De acordo com as tecnologias neste pedido, um vetor de movimento predito candidato a mesclagem adicional pode ser gerado manualmente após um vetor de movimento predito candidato espacial e um vetor de movimento predito candidato temporal, de modo que um tamanho de uma lista de vetores de movimento preditos candidatos a mesclagem seja sempre igual a uma quantidade especificada de vetores de movimento preditos candidatos a mesclagem (por exemplo, cinco vetores de movimento preditos candidatos na implementação viável da FIG. 6 acima). O vetor de movimento predito candidato a mesclagem adicional pode incluir, por exemplo, um vetor de movimento predito candidato a mesclagem bipreditivo combinado (um vetor de movimento predito candidato 1), um vetor de movimento predito candidato a mesclagem bipreditivo escalado (um vetor de movimento predito candidato 2), e um vetor de movimento predito candidato a mesclagem de vetor zero (um vetor de movimento predito candidato 3). Para descrições específicas dos três casos anteriores do vetor de movimento predito candidato a mesclagem adicional, consulte a FIG. 7 à FIG. 9.
[00161] FIG. 7 é um diagrama esquemático de um exemplo de adição de um vetor de movimento candidato combinado a uma lista de vetores de movimento preditos candidatos de modo de mesclagem de acordo com uma modalidade deste pedido. Um vetor de movimento predito candidato a mesclagem bipreditivo combinado pode ser gerado pela combinação de vetores de movimento preditos candidatos a mesclagem originais. Especificamente, dois vetores de movimento preditos candidatos originais (os quais têm mvL0 e refIdxL0 ou mvL1 e refIdxL1) podem ser usados para gerar o vetor de movimento predito candidato a mesclagem bipreditivo. Na FIG. 7, dois vetores de movimento preditos candidatos são incluídos em uma lista de vetores de movimento preditos candidatos a mesclagem original. Um tipo de predição de um vetor de movimento predito candidato é unipredição usando uma lista 0, e um tipo de predição do outro vetor de movimento predito candidato é unipredição usando uma lista 1. Nesta implementação viável, mvL0_A e ref0 são retirados da lista 0, e mvL1_B e ref0 são retirados da lista 1. Então, um vetor de movimento predito candidato a mesclagem bipreditivo (o qual tem mvL0_A e ref0 na lista 0 e mvL1_B e ref0 na lista 1) pode ser gerado, e é verificado se o vetor de movimento predito candidato a mesclagem bipreditivo é diferente de um vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos. Se o vetor de movimento predito candidato a mesclagem bipreditivo for diferente do vetor de movimento predito candidato existente, um decodificador de vídeo pode adicionar o vetor de movimento predito candidato a mesclagem bipreditivo à lista de vetores de movimento preditos candidatos.
[00162] FIG. 8 é um diagrama esquemático de um exemplo de adição de um vetor de movimento candidato escalado a uma lista de vetores de movimento preditos candidatos de modo de mesclagem de acordo com uma modalidade deste pedido. Um vetor de movimento predito candidato a mesclagem bipreditivo escalado pode ser gerado escalando um vetor de movimento predito candidato a mesclagem original. Especificamente, um vetor de movimento predito candidato original (o qual tem mvLX e refIdxLX) pode ser usado para gerar o vetor de movimento predito candidato a mesclagem bipreditivo. Em uma implementação viável da FIG. 8, dois vetores de movimento preditos candidatos são incluídos em uma lista de vetores de movimento preditos candidatos a mesclagem original. Um tipo de predição de um vetor de movimento predito candidato é unipredição usando uma lista 0, e um tipo de predição do outro vetor de movimento predito candidato é unipredição usando uma lista 1. Nesta implementação viável, mvL0_A e ref0 podem ser obtidos da lista 0, e ref0 pode ser copiado para a lista 1 e é denotado como um índice de referência ref0'. Então, mvL0'_A pode ser calculado escalando mvL0_A com ref0 e ref0'. A escala pode depender de uma distância POC (Picture Order Count, Contagem de Ordem de Imagem POC). Em seguida, um vetor de movimento predito candidato a mesclagem bipreditivo (que tem mvL0_A e ref0 na lista 0 e mvL0'_A e ref0' na lista 1) pode ser gerado, e é verificado se o vetor de movimento predito candidato a mesclagem bipreditivo é repetido. Se o vetor de movimento predito candidato a mesclagem bipreditivo não for repetido, o vetor de movimento predito candidato a mesclagem bipreditivo pode ser adicionado à lista de vetores de movimento preditos candidatos a mesclagem.
[00163] FIG. 9 é um diagrama esquemático de um exemplo de adição de um vetor de movimento zero a uma lista de vetores de movimento preditos candidatos de modo de mesclagem de acordo com uma modalidade deste pedido. Um vetor de movimento predito candidato a mesclagem de vetor zero pode ser gerado combinando um vetor zero e um índice de referência que pode ser referenciado. Se o vetor de movimento predito candidato de vetor zero não for repetido, o vetor de movimento predito candidato de vetor zero pode ser adicionado a uma lista de vetores de movimento preditos candidatos de candidato a mesclagem. A informação de movimento de cada vetor de movimento predito candidato a mesclagem gerado pode ser comparada com a informação de movimento de um vetor de movimento predito candidato anterior na lista.
[00164] Em uma implementação viável, se um vetor de movimento predito candidato recém-gerado for diferente de um vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos, o vetor de movimento predito candidato gerado é adicionado à lista de vetores de movimento preditos candidatos a mesclagem. Um processo para determinar se o vetor de movimento predito candidato é diferente do vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos candidato é algumas vezes referido como poda (pruning). Por meio da poda, cada vetor de movimento predito candidato recém-gerado pode ser comparado com o vetor de movimento predito candidato existente na lista. Em algumas implementações viáveis, a operação de poda pode incluir: comparar um ou mais novos vetores de movimento preditos candidatos com o vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos e saltar a adição de um novo vetor de movimento predito candidato que é o mesmo que o vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos. Em algumas outras implementações viáveis, a operação de poda pode incluir: adicionar um ou mais novos vetores de movimento preditos candidatos à lista de vetores de movimento preditos candidatos e, em seguida, remover um vetor de movimento predito candidato repetido da lista.
[00165] Em uma implementação viável deste pedido, durante a inter-predição, um método para prever informação de movimento de um bloco de imagem a ser processado inclui: obter informação de movimento de pelo menos um bloco de imagem cujo vetor de movimento é determinado em uma imagem na qual o bloco de imagem a ser processado está localizado, onde o pelo menos um bloco de imagem cujo vetor de movimento é determinado inclui um bloco de imagem que não é vizinho ao bloco de imagem a ser processado e cujo vetor de movimento é determinado; obter a primeira informação de identificação, onde a primeira informação de identificação é usada para determinar a informação de movimento alvo na informação de movimento de pelo menos um bloco de imagem cujo vetor de movimento é determinado; e predizer a informação de movimento do bloco de imagem a ser processado com base na informação de movimento alvo.
[00166] FIG. 10 é um fluxograma de um exemplo de um modo de mesclagem de acordo com uma modalidade deste pedido. Um codificador de vídeo (por exemplo, o codificador de vídeo 20) pode realizar uma operação de mesclagem 200. Em outra implementação viável, o codificador de vídeo pode realizar uma operação de mesclagem diferente da operação de mesclagem
200. Por exemplo, em outra implementação viável, o codificador de vídeo pode realizar uma operação de mesclagem, em que o codificador de vídeo realiza etapas mais ou menos do que as etapas da operação de mesclagem 200 ou etapas diferentes das etapas da operação de mesclagem 200. Em outra implementação viável, o codificador de vídeo pode realizar as etapas da operação de mesclagem 200 em ordens diferentes ou em paralelo. O codificador pode ainda realizar a operação de mesclagem 200 em uma PU codificada em um modo de saltar (skip).
[00167] Após o codificador de vídeo iniciar a operação de mesclagem 200, o codificador de vídeo pode gerar uma lista de vetores de movimento preditos candidatos para uma PU atual (202). O codificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual de várias maneiras. Por exemplo, o codificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual de acordo com uma das tecnologias de exemplo descritas abaixo em relação à FIG. 7 à FIG. 9.
[00168] Conforme descrito acima, a lista de vetores de movimento preditos candidatos para a PU atual pode incluir um vetor de movimento predito candidato temporal. O vetor de movimento predito candidato temporal pode indicar informação de movimento para uma PU colocalizada temporal. A PU colocalizada pode estar espacialmente localizada na mesma localização que a PU atual em um quadro de imagem, mas em uma imagem de referência em vez de uma imagem atual. Neste pedido, a imagem de referência incluindo a PU temporal correspondente pode ser referida como uma imagem de referência associada. Neste pedido, um índice de imagem de referência da imagem de referência associada pode ser referido como um índice de imagem de referência associado. Conforme descrito acima, a imagem atual pode ser associada a uma ou mais listas de imagens de referência (por exemplo, uma lista 0 e uma lista 1). O índice de imagem de referência pode indicar a imagem de referência, indicando uma localização da imagem de referência em uma lista de imagens de referência. Em algumas implementações viáveis, a imagem atual pode ser associada a uma lista de imagens de referência combinada.
[00169] Em alguns codificadores de vídeo, o índice de imagem de referência associado é um índice de imagem de referência para uma PU que cobre uma localização de fonte de índice de referência associada à PU atual. Nestes codificadores de vídeo, a fonte de índice de referência localizada associada à PU atual está próximo à esquerda da PU atual ou ao topo da PU atual. Neste pedido, se um bloco de imagem associado a uma PU incluir um local específico, a PU pode "cobrir" o local específico. Nestes codificadores de vídeo, o codificador de vídeo pode usar um índice de imagem de referência 0 se a localização da fonte do índice de referência não estiver disponível.
[00170] No entanto, em alguns exemplos, o local da fonte do índice de referência associado à PU atual está dentro de uma CU atual. Nestes exemplos, uma PU que cobre a localização da fonte do índice de referência associada à PU atual pode ser considerada disponível se a PU estiver acima ou à esquerda da CU atual. No entanto, o codificador de vídeo pode precisar acessar informação de movimento para outra PU da CU atual para determinar a imagem de referência incluindo a PU colocalizada. Portanto, esses codificadores de vídeo podem usar informação de movimento (por exemplo, um índice de imagem de referência) para uma PU pertencente à CU atual para gerar o vetor de movimento predito candidato temporal para a PU atual. Em outras palavras, esses codificadores de vídeo podem usar a informação de movimento para a PU pertencente à CU atual para gerar o vetor de movimento predito candidato temporal. Portanto, o codificador de vídeo pode não ser capaz de gerar, em paralelo, listas de vetores de movimento preditos para a PU atual e a PU que cobre a localização da fonte de índice de referência associada à PU atual.
[00171] De acordo com as tecnologias neste pedido, o codificador de vídeo pode definir explicitamente o índice de imagem de referência associado sem se referir a um índice de imagem de referência para qualquer outra PU. Desta forma, o codificador de vídeo pode gerar listas de vetores de movimento preditos para a PU atual e outra PU da CU atual em paralelo. Como o codificador de vídeo define explicitamente o índice de imagem de referência associado, o índice de imagem de referência associado não é baseado em informação de movimento para qualquer outra PU da CU atual. Em algumas implementações viáveis em que o codificador de vídeo define explicitamente o índice de imagem de referência associado, o codificador de vídeo pode sempre definir o índice de imagem de referência associado a um índice de imagem de referência predefinido fixo (por exemplo, 0). Desta maneira, o codificador de vídeo pode gerar o vetor de movimento predito candidato temporal com base na informação de movimento para a PU colocalizada no quadro de referência indicado pelo índice de imagem de referência predefinido, e pode adicionar o vetor de movimento predito candidato temporal à lista de vetores de movimento preditos candidatos para a CU atual. A lista de vetores de movimento preditos candidatos também é uma lista de quadros de referência.
[00172] Em uma implementação viável em que o codificador de vídeo define explicitamente o índice de imagem de referência associado, o codificador de vídeo pode sinalizar explicitamente o índice de imagem de referência associado em uma estrutura de sintaxe (por exemplo, um cabeçalho de imagem,
um cabeçalho de fatia, um APS ou outra estrutura de sintaxe). Nesta implementação viável, o codificador de vídeo pode sinalizar um índice de imagem de referência associado para cada LCU (isto é, uma CTU), CU, PU, TU ou sub-bloco de outro tipo para um decodificador. Por exemplo, o codificador de vídeo pode sinalizar que um índice de imagem de referência associado para cada PU da CU é igual a "1".
[00173] Em algumas implementações viáveis, o índice de imagem de referência associado pode ser definido implicitamente em vez de explicitamente. Nessas implementações viáveis, o codificador de vídeo pode gerar cada vetor de movimento predito candidato temporal na lista de vetores de movimento preditos candidatos para a PU da CU atual usando informação de movimento para uma PU em uma imagem de referência indicada por um índice de imagem de referência para uma PU que cobre localizações fora da CU atual, mesmo se essas localizações não sejam estritamente vizinhas da PU atual.
[00174] Após gerar a lista de vetores de movimento preditos candidatos para a PU atual, o codificador de vídeo pode gerar um bloco de imagem de predição associado a um vetor de movimento predito candidato na lista de vetores de movimento preditos candidatos (204). O codificador de vídeo pode determinar informação de movimento para a PU atual com base na informação de movimento de um vetor de movimento predito candidato indicado e, em seguida, gerar um bloco de imagem de predição com base em um ou mais blocos de referência indicados pela informação de movimento para a PU atual, para gerar um bloco de imagem de predição associado ao vetor de movimento predito candidato. Então, o codificador de vídeo pode selecionar um vetor de movimento predito candidato da lista de vetores de movimento preditos candidatos (206). O codificador de vídeo pode selecionar o vetor de movimento predito candidato de várias maneiras. Por exemplo, o codificador de vídeo pode selecionar um vetor de movimento predito candidato analisando um custo de distorção de taxa de cada bloco de imagem de predição associado ao vetor de movimento predito candidato.
[00175] Após selecionar o vetor de movimento predito candidato, o codificador de vídeo pode emitir um índice de vetor de movimento predito candidato (208). O índice de vetor de movimento predito candidato também é um índice de lista de quadros de referência e o índice de vetor de movimento predito candidato pode indicar uma localização de um vetor de movimento predito candidato selecionado da lista de vetores de movimento preditos candidatos. Em algumas implementações viáveis, o índice de vetor de movimento predito candidato pode ser representado como "merge_idx".
[00176] FIG. 11 é um fluxograma de um exemplo de um modo de predição de vetor de movimento avançado de acordo com uma modalidade deste pedido. Um codificador de vídeo (por exemplo, o codificador de vídeo 20) pode realizar uma operação AMVP
210.
[00177] Após o codificador de vídeo iniciar a operação AMVP 210, o codificador de vídeo pode gerar um ou mais vetores de movimento para uma PU atual (211). O codificador de vídeo pode realizar estimativa de movimento inteiro e estimativa de movimento fracionário para gerar o vetor de movimento para a PU atual. Conforme descrito acima, uma imagem atual pode ser associada a duas listas de imagens de referência (uma lista 0 e uma lista 1). Se a unipredição for realizada na PU atual, o codificador de vídeo pode gerar um vetor de movimento de lista-0 ou um vetor de movimento de lista-1 para a PU atual. O vetor de movimento da lista 0 pode indicar um deslocamento espacial entre um bloco de imagem para a PU atual e um bloco de referência em uma imagem de referência na lista 0. O vetor de movimento da lista 1 pode indicar um deslocamento espacial entre o bloco de imagem para a PU atual e um bloco de referência em uma imagem de referência na lista 1. Se a bipredição for realizada na PU atual, o codificador de vídeo pode gerar o vetor de movimento da lista 0 e o vetor de movimento da lista 1 para a PU atual.
[00178] Após gerar um ou mais vetores de movimento para a PU atual, o codificador de vídeo pode gerar um bloco de imagem de predição para a PU atual (212). O codificador de vídeo pode gerar o bloco de imagem de predição para a PU atual com base em um ou mais blocos de referência indicados por um ou mais vetores de movimento para a PU atual.
[00179] Além disso, o codificador de vídeo pode gerar uma lista de vetores de movimento preditos candidatos para a PU atual (213). O codificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual de várias maneiras. Por exemplo, o codificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual de acordo com uma ou mais implementações viáveis descritas abaixo em relação à FIG. 6 à FIG. 9. Em algumas implementações viáveis, quando o codificador de vídeo gera a lista de vetores de movimento preditos candidatos na operação AMVP 210, a lista de vetores de movimento preditos candidatos pode ser limitada a dois vetores de movimento preditos candidatos. Em contraste, quando o codificador de vídeo gera a lista de vetores de movimento preditos candidatos em uma operação de mesclagem, a lista de vetores de movimento preditos candidatos pode incluir mais vetores de movimento preditos candidatos (por exemplo, cinco vetores de movimento preditos candidatos).
[00180] Após gerar a lista de vetores de movimento preditos candidatos para a PU atual, o codificador de vídeo pode gerar uma ou mais diferenças de vetor de movimento (MVD) para cada vetor de movimento predito candidato na lista de vetores de movimento preditos candidatos (214). O codificador de vídeo pode determinar uma diferença entre um vetor de movimento indicado por um vetor de movimento predito candidato e um vetor de movimento correspondente para a PU atual, para gerar uma diferença de vetor de movimento para o vetor de movimento predito candidato.
[00181] Se a unipredição for realizada na PU atual, o codificador de vídeo pode gerar uma única MVD para cada vetor de movimento predito candidato. Se a bipredição for realizada na PU atual, o codificador de vídeo pode gerar duas MVDs para cada vetor de movimento predito candidato. Uma primeira MVD pode indicar uma diferença entre o vetor de movimento indicado pelo vetor de movimento predito candidato e o vetor de movimento lista 0 para a PU atual. Uma segunda MVD pode indicar uma diferença entre o vetor de movimento indicado pelo vetor de movimento predito candidato e o vetor de movimento da lista 1 para a PU atual.
[00182] O codificador de vídeo pode selecionar um ou mais vetores de movimento preditos candidatos da lista de vetores de movimento preditos candidatos (215). O codificador de vídeo pode selecionar um ou mais vetores de movimento preditos candidatos de várias maneiras. Por exemplo, o codificador de vídeo pode selecionar um vetor de movimento predito candidato que corresponde a um vetor de movimento associado de um vetor de movimento a ser codificado com um erro mínimo. Isso pode reduzir a quantidade de bits necessários para representar uma diferença de vetor de movimento para o vetor de movimento predito candidato.
[00183] Após selecionar um ou mais vetores de movimento preditos candidatos, o codificador de vídeo pode emitir um ou mais índices de imagem de referência para a PU atual, um ou mais índices de vetores de movimento preditos para a PU atual, e uma ou mais diferenças de vetores de movimento para o um ou mais vetores de movimento preditos candidatos selecionados (216).
[00184] Em um exemplo no qual a imagem atual está associada às duas listas de imagens de referência (a lista 0 e a lista 1) e a unipredição é realizada na PU atual, o codificador de vídeo pode emitir um índice de imagem de referência ("ref_idx_10") para a lista 0 ou um índice de imagem de referência ("ref_idx_11") para a lista 1. O codificador de vídeo pode ainda emitir um índice de vetor de movimento predito candidato ("mvp_10_flag") que indica uma localização de um vetor de movimento predito candidato selecionado da lista 0 de vetor de movimento para a PU atual na lista de vetores de movimento preditos candidatos. Alternativamente, o codificador de vídeo pode emitir um índice de vetor de movimento predito candidato ("mvp_11_flag") que indica uma localização de um vetor de movimento predito candidato selecionado do vetor de movimento de lista-1 para a PU atual na lista de vetores de movimento preditos candidatos. O codificador de vídeo pode ainda emitir uma MVD para o vetor de movimento da lista 0 ou o vetor de movimento da lista 1 para a PU atual.
[00185] Em um exemplo no qual a imagem atual está associada às duas listas de imagens de referência (a lista 0 e a lista 1) e a bipredição é realizada na PU atual, o codificador de vídeo pode emitir um índice de imagem de referência ("ref_idx_10") para a lista 0 e um índice de imagem de referência ("ref_idx_11") para a lista 1. O codificador de vídeo pode ainda emitir um índice de vetor de movimento predito candidato ("mvp_10_flag") que indica uma localização de um vetor de movimento predito candidato selecionado da lista 0 de vetor de movimento para a PU atual na lista de vetores de movimento preditos candidatos. Além disso, o codificador de vídeo pode emitir um índice de vetor de movimento predito candidato ("mvp_11_flag") que indica uma localização de um vetor de movimento predito candidato selecionado do vetor de movimento de lista-1 para a PU atual na lista de vetores de movimento preditos candidatos. O codificador de vídeo pode ainda emitir uma MVD para o vetor de movimento da lista 0 para a PU atual e uma MVD para o vetor de movimento da lista 1 para a PU atual.
[00186] FIG. 12 é um fluxograma de um exemplo de compensação de movimento realizada por um decodificador de vídeo (por exemplo, o decodificador de vídeo 30) de acordo com uma modalidade deste pedido.
[00187] Quando o decodificador de vídeo realiza uma operação de compensação de movimento 220, o decodificador de vídeo pode receber uma indicação para um vetor de movimento predito candidato selecionado para uma PU atual (222). Por exemplo, o decodificador de vídeo pode receber um índice de vetor de movimento predito candidato indicando uma localização do vetor de movimento predito candidato selecionado em uma lista de vetores de movimento preditos candidatos para a PU atual.
[00188] Se a informação de movimento para a PU atual é codificada em um modo de AMVP e a bipredição é realizada na PU atual, o decodificador de vídeo pode receber um primeiro índice de vetor de movimento predito candidato e um segundo índice de vetor de movimento predito candidato. O primeiro índice de vetor de movimento predito candidato indica uma localização de um vetor de movimento predito candidato selecionado de um vetor de movimento de lista-0 para a PU atual na lista de vetores de movimento preditos candidatos. O segundo índice de vetor de movimento predito candidato indica uma localização de um vetor de movimento predito candidato selecionado de um vetor de movimento de lista-1 para a PU atual na lista de vetores de movimento preditos candidatos. Em algumas implementações viáveis, um único elemento de sintaxe pode ser usado para identificar dois índices de vetor de movimento predito candidato.
[00189] Além disso, o decodificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual (224). O decodificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual de várias maneiras. Por exemplo, o decodificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual usando tecnologias descritas abaixo com referência à FIG. 5 à FIG. 9. Quando o decodificador de vídeo gera um vetor de movimento predito candidato temporal para a lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode definir explicitamente ou implicitamente um índice de imagem de referência que identifica uma imagem de referência incluindo uma PU colocalizada, como descrito acima em relação à FIG.
10.
[00190] Após gerar a lista de vetores de movimento preditos candidatos para a PU atual, o decodificador de vídeo pode determinar a informação de movimento para a PU atual com base na informação de movimento indicada por um ou mais vetores de movimento preditos candidatos selecionados na lista de vetores de movimento preditos candidatos para a PU atual (225). Por exemplo, se a informação de movimento para a PU atual for codificada em um modo de mesclagem, a informação de movimento para a PU atual pode ser a mesma que a informação de movimento indicada pelo vetor de movimento predito candidato selecionado. Se a informação de movimento para a PU atual é codificada no modo de AMVP, o decodificador de vídeo pode reconstruir um ou mais vetores de movimento para a PU atual usando um ou mais vetores de movimento indicados pelo vetor de movimento predito candidato selecionado e uma ou mais MVDs indicadas em um fluxo de bits. Um índice de imagem de referência e um identificador de direção de predição da PU atual podem ser iguais a um ou mais índices de imagem de referência e um ou mais identificadores de direção de predição de um ou mais vetores de movimento preditos candidatos selecionados. Após determinar a informação de movimento para a PU atual, o decodificador de vídeo pode gerar um bloco de imagem de predição para a PU atual com base em um ou mais blocos de referência indicados pela informação de movimento para a PU atual (226).
[00191] FIG. 13 é um fluxograma de um exemplo de atualização de um vetor de movimento durante a codificação de vídeo de acordo com uma modalidade deste pedido. Um bloco de imagem a ser processado é um bloco a ser codificado.
[00192] 1301: obter um vetor de movimento inicial do bloco de imagem a ser processado com base em um vetor de movimento predito do bloco de imagem a ser processado.
[00193] Em uma implementação viável, por exemplo, em um modo de mesclagem, o vetor de movimento predito do bloco de imagem a ser processado é usado como o vetor de movimento inicial do bloco de imagem a ser processado.
[00194] O vetor de movimento predito do bloco de imagem a ser processado pode ser obtido de acordo com os métodos mostrados na FIG. 6 à FIG. 9 nas modalidades deste pedido ou qualquer um dos métodos de obtenção de vetor de movimento predito existentes no padrão H.265 ou um modo de referência JEM. Isso não é limitado. Uma diferença de vetor de movimento pode ser obtida com referência ao bloco de imagem a ser processado. A estimativa de movimento é realizada dentro de um intervalo de pesquisa determinado com base no vetor de movimento predito do bloco de imagem a ser processado, e uma diferença entre um vetor de movimento do bloco de imagem a ser processado que é obtido após a estimativa de movimento e o vetor de movimento predito do bloco de imagem a ser processado é usado como a diferença do vetor de movimento.
[00195] Durante a predição bidirecional, esta etapa inclui especificamente: a obtenção de um primeiro vetor de movimento inicial do bloco de imagem a ser processado com base em um vetor de movimento predito para frente do bloco de imagem a ser processado, e a obtenção de um segundo vetor de movimento inicial do bloco de imagem a ser processado com base em um vetor de movimento predito para trás do bloco de imagem a ser processado.
[00196] 1302: obter um bloco de predição do bloco de imagem a ser processado com base no vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido. Detalhes a seguir: S13021: obter, a partir de um quadro de referência do bloco de imagem a ser processado que é indicado por um índice de quadro de referência do bloco de imagem a ser processado, um bloco de imagem indicado pelo vetor de movimento inicial do bloco de imagem a ser processado, para servir como um bloco de predição temporário do bloco de imagem a ser processado.
[00197] O vetor de movimento inicial inclui um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial. O primeiro vetor de movimento inicial indica um primeiro bloco de compensação de movimento com base em uma lista de primeiro quadro de referência do bloco de imagem a ser processado, e o primeiro bloco de compensação de movimento é um bloco de referência para realizar compensação de movimento no bloco de imagem a ser processado. O segundo vetor de movimento inicial indica um segundo bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado e o segundo bloco de compensação de movimento é um bloco de referência para realizar compensação de movimento no bloco de imagem a ser processado.
[00198] 13022: adicionar o vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido do bloco de imagem a ser processado para obter um ou mais vetores de movimento finais, onde cada vetor de movimento final indica uma localização de pesquisa.
[00199] O deslocamento do vetor de movimento predefinido pode ser um valor de vetor de deslocamento predefinido, ou pode ser a precisão do vetor de deslocamento predefinido, ou pode ser um intervalo de vetor de deslocamento predefinido. Um valor específico do deslocamento do vetor de movimento predefinido e uma quantidade de deslocamentos do vetor de movimento predefinido não são limitados nesta modalidade da presente invenção.
[00200] O vetor de movimento final inclui um primeiro vetor de movimento final e um segundo vetor de movimento final. O primeiro vetor de movimento final indica um primeiro bloco de compensação de movimento com base em uma lista de primeiro quadro de referência do bloco de imagem a ser processado, e o primeiro bloco de compensação de movimento é um bloco de predição para realizar compensação de movimento no bloco de imagem a ser processado. O segundo vetor de movimento final indica um segundo bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado e o segundo bloco de compensação de movimento é um bloco de predição para realizar compensação de movimento no bloco de imagem a ser processado.
[00201] 13023: obter um ou mais blocos de predição candidatos em uma ou mais localizações de pesquisa indicadas por um ou mais vetores de movimento finais, onde cada localização de pesquisa corresponde a um bloco de predição candidato.
[00202] 13024: selecionar, a partir de um ou mais blocos de predição candidatos, um bloco de predição candidato com uma diferença de pixel mínima do bloco de predição temporário como o bloco de predição do bloco de imagem a ser processado.
[00203] A diferença mínima de pixel também pode ser entendida como um custo mínimo de distorção. Neste caso, o vetor de movimento final do bloco de predição é um vetor de movimento final candidato correspondendo a um custo de distorção mínimo em uma pluralidade de vetores de movimento finais candidatos. Deve ser entendido que o custo de distorção pode ser calculado de várias maneiras. Por exemplo, uma soma das diferenças absolutas entre as matrizes de pixel do bloco de predição candidato e do bloco de predição temporário pode ser calculada, ou uma soma das diferenças absolutas após meios de matrizes de pixel serem removidos pode ser calculada, ou outro valor relativamente preciso de um pixel matriz pode ser calculada. O conteúdo específico do custo de distorção mínimo não é limitado nesta modalidade da presente invenção.
[00204] Durante a predição bidirecional, esta etapa inclui especificamente: obter, a partir de uma lista de primeiro quadro de referência do bloco de imagem a ser processado que é indicado por um primeiro índice de lista de quadro de referência do bloco de imagem a ser processado, um primeiro bloco de imagem indicado pelo primeiro vetor de movimento inicial do bloco de imagem a ser processado, onde o primeiro bloco de imagem é um bloco de referência para frente e, correspondentemente, o primeiro vetor de movimento inicial pode ser um vetor de movimento inicial para frente, e obtendo, a partir de uma segunda lista de quadro de referência do bloco de imagem a ser processado que é indicado por um segundo índice de lista de quadro de referência do bloco de imagem a ser processado, um segundo bloco de imagem indicado pelo segundo vetor de movimento inicial do bloco de imagem a ser processado, onde o segundo bloco de imagem é um bloco de referência para trás e, correspondentemente, o segundo vetor de movimento inicial pode ser um vetor de movimento inicial para trás; realizar processamento ponderado no primeiro bloco de imagem e no segundo bloco de imagem para obter o bloco de predição temporário do bloco de imagem a ser processado; adicionar o primeiro vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido do bloco de imagem a ser processado para obter um ou mais primeiros vetores de movimento finais, e adicionar o segundo vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido do bloco de imagem a ser processado para obter um ou mais segundos vetores de movimento finais; obter um ou mais blocos de predição candidatos em uma ou mais localizações de pesquisa indicadas por um ou mais primeiros vetores de movimento finais, e obter um ou mais segundos blocos de predição candidatos em uma ou mais localizações de pesquisa indicadas por um ou mais segundos vetores de movimento finais; selecionar, a partir de um ou mais blocos de predição candidatos, um bloco de predição candidato com uma diferença de pixel mínima do bloco de predição temporário como o primeiro bloco de predição do bloco de imagem a ser processado, e selecionar, a partir de um ou mais blocos de predição candidatos para trás, um bloco de predição candidato com uma diferença de pixel mínima do bloco de predição temporário como o segundo bloco de predição do bloco de imagem a ser processado; e realizar processamento ponderado no primeiro bloco de predição e no segundo bloco de predição para obter o bloco de predição do bloco de imagem a ser processado.
[00205] Em algumas modalidades, outro vetor de movimento em uma direção indicada por um vetor de movimento final candidato que corresponde a um custo de distorção mínimo em uma pluralidade de vetores de movimento finais candidatos pode, alternativamente, ser usado como um vetor de movimento final do bloco de predição. Especificamente, o vetor de movimento final do bloco de predição pode ser selecionado com base em uma primeira condição predefinida.
[00206] Em uma implementação possível, a pluralidade de vetores de movimento finais candidatos pode ser uma pluralidade de vetores de movimento em uma pluralidade de direções. A precisão específica em cada direção pode ser selecionada primeiro. Por exemplo, um vetor de movimento final candidato com precisão de pixel inteiro é usado como um primeiro vetor em cada direção e um primeiro vetor correspondente a um custo de distorção mínimo é selecionado a partir da pluralidade de primeiros vetores como um vetor de referência. Quando uma primeira relação predefinida entre um custo de distorção A correspondente ao vetor de referência, um custo de distorção C correspondendo a um segundo vetor correspondendo ao vetor de referência em uma direção negativa e um custo de distorção B correspondendo ao vetor de movimento inicial atende a primeira condição predefinida, o vetor de referência é usado como o vetor de movimento final do bloco de predição.
Quando a primeira relação predefinida entre o custo de distorção A correspondente ao vetor de referência, o custo de distorção C correspondente ao segundo vetor correspondente ao vetor de referência na direção negativa e o custo de distorção B correspondente ao vetor de movimento inicial não atende a primeira condição predefinida, se A e B atenderem a uma segunda condição predefinida, um comprimento do primeiro vetor é reduzido pela precisão predefinida para obter um terceiro vetor, e o terceiro vetor é usado como um primeiro vetor alvo do bloco de predição.
Quando A e B não atendem à segunda condição predefinida, se B e C atendem a uma terceira condição predefinida, o comprimento do primeiro vetor é aumentado pela precisão predefinida para obter um quarto vetor, e o quarto vetor é usado como o primeiro vetor alvo do bloco de predição.
Quando B e C não atendem à terceira condição predefinida, uma contagem de loop específica é definida.
Em cada loop, um deslocamento do vetor de referência é atualizado primeiro.
Especificamente, quando uma segunda relação predefinida entre A, B e C atende a uma quarta condição predefinida, o deslocamento do vetor de referência é atualizado.
Quando a segunda relação predefinida entre A, B e C não atende à quarta condição predefinida ou a contagem do loop é reduzida a 0, o deslocamento do vetor de referência não é atualizado e o loop termina.
Depois que o loop termina, uma direção do deslocamento é determinada com base em uma relação de valor entre A e C, e a direção do deslocamento inclui uma direção positiva ou negativa.
Um quinto vetor é obtido com base no vetor de referência, o deslocamento, e a direção do deslocamento, e o quinto vetor é usado como o primeiro vetor alvo do bloco de predição. Finalmente, o primeiro vetor alvo é usado como o vetor de movimento final do bloco de predição. A primeira relação predefinida pode ser uma relação de proporção, uma relação de diferença, ou uma relação de valor. A primeira condição predefinida pode ser que a primeira relação predefinida entre A, C e B seja igual a um valor predefinido, a segunda condição predefinida pode ser que A é igual a B e a terceira condição predefinida pode ser que B é igual a C. A primeira relação predefinida, a primeira condição predefinida, o valor predefinido, a segunda condição predefinida, a terceira condição predefinida, a segunda relação predefinida e a quarta condição predefinida não são especificamente limitadas nesta modalidade da presente invenção.
[00207] Por exemplo, existem oito vetores de movimento candidatos, e os oito vetores de movimento candidatos estão localizados nas quatro direções do bloco de predição: uma direção superior, uma direção inferior, uma direção esquerda e uma direção direita. Existem dois vetores de movimento candidatos em cada direção. Um vetor de movimento candidato com um comprimento máximo é primeiro selecionado de cada uma das quatro direções para obter os quatro primeiros vetores. Quando o primeiro vetor na direção superior corresponde a um custo de distorção mínimo, o primeiro vetor na direção superior é usado como vetor de referência, ou seja, o vetor final do bloco de predição é um vetor de movimento em uma direção positiva. Assume-se que a primeira condição predefinida é que uma relação de proporção entre o custo de distorção A correspondente ao vetor de referência, o custo de distorção C correspondente ao segundo vetor, e o custo de distorção B correspondente ao vetor de movimento inicial é 1, onde o segundo vetor é um vetor de movimento candidato em uma direção oposta ao vetor de referência, e a precisão predefinida é 1/4. Neste caso, quando o custo de distorção correspondente ao vetor de referência é 2, o custo de distorção correspondente ao primeiro vetor na direção inferior é 4, e o custo de distorção correspondente ao vetor de movimento inicial é 3, assume-se que uma relação de proporção entre o custo de distorção correspondente ao vetor de referência, o custo de distorção correspondente ao primeiro vetor na direção inferior, e o custo de distorção correspondente ao vetor de movimento inicial é (2 × B) / (A + C) e a relação de proporção é 1. Nesse caso, o vetor de referência é usado como o vetor de movimento final do bloco de predição.
Se o custo de distorção correspondente ao primeiro vetor na direção inferior é 5, e a relação de proporção (2 × B) / (A + C) não é 1, a proporção não atenderá à primeira condição predefinida.
Nesse caso, se A for igual a B, um comprimento do vetor de referência é reduzido pela precisão predefinida 1/4 para obter um terceiro vetor, e o terceiro vetor é usado como o vetor de movimento final do bloco de predição.
Se A não for igual a B, quando B for igual a C, o comprimento do vetor de referência é aumentado pela precisão predefinida 1/4 para obter um quarto vetor, e o quarto vetor é usado como o vetor de movimento final da predição quadra.
Quando B não é igual a C, a contagem do loop é definida como 3, a precisão do deslocamento do vetor de referência é primeiro atualizada para 1/8 em cada loop,
e assume-se que a segunda relação predefinida entre A, B e C é K = | (A – C) × 16 | e T = ((A + C) –2 × B) × 8. Quando K é maior ou igual a T, a quarta condição predefinida é atendida e a precisão do deslocamento do vetor de referência é atualizada para 1/16. Assume-se que K e T são atualizados em cada loop, K = K – T e T = T / 2. Quando a contagem do loop é reduzida a 0, o loop termina. Após o término do loop, a direção do deslocamento é determinada com base na relação de valor entre A e C. Quando A é maior ou igual a C, a direção do deslocamento é positiva. Quando A é menor que C, a direção do deslocamento é negativa. Um quinto vetor é obtido com base no vetor de referência, o deslocamento, e a direção do deslocamento, e o quinto vetor é usado como o primeiro vetor alvo do bloco de predição. Finalmente, o primeiro vetor alvo é usado como o vetor de movimento final do bloco de predição.
[00208] Certamente, em algumas modalidades, quando uma terceira relação predefinida entre o custo de distorção correspondente ao vetor de referência e um custo de distorção correspondente a um terceiro vetor em uma direção alvo não atende a uma quinta condição predefinida, o comprimento do primeiro vetor pode ser aumentado pela precisão predefinida, até que um custo de distorção aumentado correspondente a um segundo vetor alvo atenda a uma segunda condição alvo. Quando a terceira relação predefinida entre o custo de distorção correspondente ao vetor de referência e o custo de distorção correspondente ao terceiro vetor na direção do alvo encontra a quinta condição predefinida, o comprimento do primeiro vetor pode ser reduzido pela precisão predefinida, até uma redução custo de distorção correspondente ao segundo vetor alvo atende à condição alvo. A direção do alvo é qualquer direção diferente da direção do vetor de referência. A terceira relação predefinida, a quinta condição predefinida, e a condição alvo não são especificamente limitadas nesta modalidade da presente invenção.
[00209] Em algumas modalidades, quando uma quarta relação predefinida entre o custo de distorção correspondente ao vetor de referência, o custo de distorção correspondente ao terceiro vetor na direção alvo e um custo de distorção correspondente a um vetor intermediário encontra uma sexta condição predefinida, um terceiro alvo o vetor é determinado aumentando o comprimento do vetor de referência pela precisão predefinida. Quando a quarta relação predefinida entre o custo de distorção correspondente ao vetor de referência, o custo de distorção correspondente ao terceiro vetor na direção alvo e o custo de distorção correspondente ao vetor intermediário não atende à sexta condição predefinida, o terceiro vetor alvo é determinado pela redução do comprimento do vetor de referência pela precisão predefinida. O vetor intermediário é um vetor de movimento localizado entre o vetor de referência e o segundo vetor. Um processo de aumentar o vetor de referência pela precisão predefinida e reduzir o vetor de referência pela precisão predefinida é descrito acima e os detalhes não são descritos aqui novamente. A quarta relação predefinida e a sexta condição predefinida não são especificamente limitadas nesta modalidade da presente invenção.
[00210] FIG. 14 é um fluxograma de um exemplo de atualização de um vetor de movimento durante a decodificação de vídeo de acordo com uma modalidade deste pedido. Um bloco de imagem a ser processado é um bloco a ser decodificado.
[00211] 1401: obter um vetor de movimento inicial do bloco de imagem a ser processado com base em um vetor de movimento predito do bloco de imagem a ser processado que é indicado por um índice.
[00212] Em uma implementação viável, por exemplo, em um modo de mesclagem, o vetor de movimento predito do bloco de imagem a ser processado é usado como o vetor de movimento inicial do bloco de imagem a ser processado.
[00213] O vetor de movimento predito do bloco de imagem a ser processado pode ser obtido de acordo com os métodos mostrados na FIG. 6 à FIG. 9 nas modalidades deste pedido ou qualquer um dos métodos de obtenção de vetor de movimento predito existentes no padrão H.265 ou um modo de referência JEM. Isso não é limitado. A diferença do vetor de movimento pode ser obtida analisando um fluxo de bits.
[00214] Durante a predição bidirecional, esta etapa inclui especificamente: a obtenção de um primeiro vetor de movimento inicial do bloco de imagem a ser processado com base em um vetor de movimento predito para frente do bloco de imagem a ser processado, e a obtenção de um segundo vetor de movimento inicial do bloco de imagem a ser processado com base em um vetor de movimento predito para trás do bloco de imagem a ser processado.
[00215] 1402: obter um bloco de predição do bloco de imagem a ser processado com base no vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido. Detalhes a seguir: S14021: obter, a partir de um quadro de referência do bloco de imagem a ser processado que é indicado por um índice de quadro de referência do bloco de imagem a ser processado, um bloco de imagem indicado pelo vetor de movimento inicial do bloco de imagem a ser processado, para servir como um bloco de predição temporário do bloco de imagem a ser processado.
[00216] 14022: adicionar o vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido do bloco de imagem a ser processado para obter um ou mais vetores de movimento finais, onde cada vetor de movimento final indica uma localização de pesquisa.
[00217] 14023: obter um ou mais blocos de predição candidatos em uma ou mais localizações de pesquisa indicadas por um ou mais vetores de movimento finais, onde cada localização de pesquisa corresponde a um bloco de predição candidato.
[00218] 14024: selecionar, a partir de um ou mais blocos de predição candidatos, um bloco de predição candidato com uma diferença de pixel mínima do bloco de predição temporário como o bloco de predição do bloco de imagem a ser processado.
[00219] Durante a predição bidirecional, esta etapa inclui especificamente: obter, a partir de um primeiro quadro de referência do bloco de imagem a ser processado que é indicado por um primeiro índice de quadro de referência do bloco de imagem a ser processado, um primeiro bloco de imagem indicado por o primeiro vetor de movimento inicial do bloco de imagem a ser processado e obtenção, a partir de um segundo quadro de referência do bloco de imagem a ser processado, que é indicado por um segundo índice de quadro de referência do bloco de imagem a ser processado, um segundo bloco de imagem indicado pelo segundo vetor de movimento inicial do bloco de imagem a ser processado; realizar processamento ponderado no primeiro bloco de imagem e no segundo bloco de imagem para obter o bloco de predição temporário do bloco de imagem a ser processado; adicionar o primeiro vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido do bloco de imagem a ser processado para obter um ou mais primeiros vetores de movimento finais e adicionar o segundo vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido do bloco de imagem a ser processado para obter um ou mais segundos vetores de movimento finais; obter um ou mais blocos de predição candidatos para frente em uma ou mais localizações de pesquisa indicadas por um ou mais primeiros vetores de movimento finais e obter um ou mais blocos de predição candidatos para trás em uma ou mais localizações de pesquisa indicadas por um ou mais segundos vetores de movimento finais; selecionar, a partir de um ou mais blocos de predição de candidatos progressivos, um bloco de predição de candidatos com uma diferença de pixel mínima do bloco de predição temporário como um bloco de predição para frente do bloco de imagem a ser processado e selecionar, de um ou mais blocos de predição blocos de predição candidatos, um bloco de predição candidato com uma diferença de pixel mínima do bloco de predição temporário como um bloco de predição para trás do bloco de imagem a ser processado; e realizar processamento ponderado no bloco de predição para frente e no bloco de predição para trás para obter o bloco de predição do bloco de imagem a ser processado.
[00220] Ao usar várias modalidades específicas, o seguinte descreve em detalhes uma implementação de atualização de um vetor de movimento. Deve ser entendido que, conforme descrito no método de codificação na FIG. 13 e o método de decodificação na FIG. 14, a atualização de um vetor de movimento é consistente em um codificador e um decodificador. Portanto, as seguintes modalidades são descritas apenas a partir do codificador ou do decodificador. Deve ser entendido que quando a descrição é fornecida a partir do codificador, a implementação no decodificador se mantém consistente com aquela no codificador; quando a descrição é fornecida a partir do decodificador, a implementação no codificador se mantém consistente com a do decodificador.
[00221] Como mostrado na FIG. 15, um bloco de decodificação atual é um primeiro bloco de decodificação, e é obtida informação de movimento predito do bloco de decodificação atual. Assume-se que os preditores de vetor de movimento para frente e para trás do bloco de decodificação atual são respectivamente (–10, 4) e (5, 6), e uma contagem de ordem de imagem (picture order count, POC) POC do bloco de decodificação atual é 4. O POC é usado para indicar uma ordem de exibição de imagem, e os POCs de imagens de referência indicados por valores de índice de imagens de referência exibidas de uma imagem são, respectivamente, 2 e
6. Neste caso, o POC correspondente ao bloco de decodificação atual é 4, uma POC correspondente a um bloco de imagem de referência de predição para frente é 2 e uma POC correspondente a um bloco de imagem de referência de predição para trás é 6.
[00222] A predição para frente e a predição para trás são realizadas separadamente no bloco de decodificação atual para obter um bloco de predição para frente (forward prediction block, FPB) inicial e um bloco de predição para trás (backward prediction block, BPB) inicial do bloco de decodificação atual, e é assumido que o bloco de predição de decodificação para frente inicial e o bloco de predição de decodificação para trás inicial são respectivamente FPB1 e BPB1. Um primeiro bloco de predição de decodificação (decoding prediction block, DPB) do bloco de decodificação atual é obtido realizando soma ponderada em FPB1 e BPB1, e é assumido como sendo DPB1.
[00223] (-10, 4) e (5, 6) são usados como entradas de referência dos preditores de vetor de movimento para frente e para trás, e a pesquisa de movimento com primeira precisão é realizada separadamente no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás. Nesse caso, a primeira precisão é de 1/2 pixel em um intervalo de 1 pixel. O primeiro bloco de predição de decodificação DPB1 é usado como referência. Novos blocos de predição de decodificação para frente e para trás correspondentes obtidos através de cada pesquisa de movimento são comparados com o primeiro bloco de predição de decodificação DPB1, para obter um novo bloco de predição de decodificação com uma diferença mínima de DPB1, e preditores de vetor de movimento para frente e para trás correspondentes ao novo bloco de predição de decodificação são usados como preditores de vetor de movimento alvo, e são considerados (–11, 4) e (6, 6), respectivamente.
[00224] Os preditores de vetor de movimento alvo são atualizados para (-11, 4) e (6, 6), predição para frente e predição para trás são realizadas separadamente no primeiro bloco de decodificação com base nos preditores de vetor de movimento alvo, um bloco de predição de decodificação alvo é obtido ao realizar soma ponderada em novos blocos de predição de decodificação para frente e para trás obtidos, e é assumido como sendo DPB2, e o bloco de predição de decodificação do bloco de decodificação atual é atualizado para DPB2.
[00225] Deve-se notar que, quando a pesquisa de movimento com a primeira precisão é realizada no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás, a primeira precisão pode ser qualquer precisão especificada, por exemplo, pode ser precisão de pixel inteiro, precisão de 1/2 pixel, precisão de 1/4 de pixel, ou precisão de 1/8 de pixel.
[00226] Como mostrado na FIG. 16, um bloco de decodificação atual é um primeiro bloco de decodificação, e é obtida informação de movimento predito do bloco de decodificação atual. Assume-se que um preditor de vetor de movimento para frente do bloco de decodificação atual é (-21, 18), uma POC de uma imagem no qual o bloco de decodificação atual está localizado é 4, e uma POC de uma imagem de referência que é indicada por um o valor de índice da imagem de referência é 2. Neste caso, uma POC correspondente ao bloco de decodificação atual é 4, e uma POC correspondente a um bloco de imagem de referência de predição para frente é 2.
[00227] A predição para frente é realizada no bloco de decodificação atual para obter um bloco de predição de decodificação para frente inicial do bloco de decodificação atual e assume-se que o bloco de predição de decodificação para frente inicial é FPB1. Neste caso, FPB1 é usado como um primeiro bloco de predição de decodificação do bloco de decodificação atual e o primeiro bloco de predição de decodificação é denotado como DPB1.
[00228] (–21, 18) é usado como uma entrada de referência do preditor de vetor de movimento para frente, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para frente. Nesse caso, a primeira precisão é de 1 pixel em um intervalo de 5 píxeis. O primeiro bloco de predição de decodificação DPB1 é usado como referência. Um novo bloco de predição de decodificação para frente correspondente obtido através de cada pesquisa de movimento é comparado com o primeiro bloco de predição de decodificação DPB1, para obter um novo bloco de predição de decodificação com uma diferença mínima de DPB1, e um preditor de vetor de movimento direto correspondente ao novo bloco de predição de decodificação é usado como um preditor de vetor de movimento alvo, e é considerado como (–19, 19).
[00229] O preditor de vetor de movimento alvo é atualizado para (-19, 19), a predição para frente é realizada no primeiro bloco de decodificação com base no preditor de vetor de movimento alvo, um novo bloco de predição de decodificação para frente obtido é usado como um bloco de predição de decodificação alvo, e é assumido como sendo DPB2, e o bloco de predição de decodificação do bloco de decodificação atual é atualizado para DPB2.
[00230] Deve-se notar que, quando a pesquisa de movimento com a primeira precisão é realizada no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás, a primeira precisão pode ser qualquer precisão especificada, por exemplo, pode ser precisão de pixel inteiro, precisão de 1/2 pixel, precisão de 1/4 de pixel, ou precisão de 1/8 de pixel.
[00231] Como mostrado na FIG. 17A e FIG. 17B, um bloco de codificação atual é um primeiro bloco de codificação, e é obtida informação de movimento predito do bloco de codificação atual. Assume-se que os preditores de vetor de movimento para frente e para trás do bloco de codificação atual são, respectivamente (–6, 12) e (8, 4), uma POC de uma imagem na qual o bloco de codificação atual está localizado é 8, e os POCs de imagens de referência que são indicadas por valores de índice das imagens de referência são, respectivamente, 4 e 12. Neste caso, uma POC correspondente ao bloco de codificação atual é 4, uma POC correspondente a um bloco de imagem de referência de predição para frente é 4 e uma POC correspondente a um bloco de imagem de referência de predição para trás é 12.
[00232] A predição para frente e a predição para trás são realizadas separadamente no bloco de codificação atual para obter um bloco de predição de codificação para frente inicial e um bloco de predição de codificação para trás inicial do bloco de codificação atual, e assume-se que o bloco de predição de codificação para frente inicial e o bloco de predição de codificação para trás inicial são respectivamente FPB1 e BPB1. Um primeiro bloco de predição de codificação do bloco de codificação atual é obtido realizando soma ponderada em FPB1 e BPB1, e é assumido como sendo DPB1.
[00233] (-6, 12) e (8, 4) são usados como entradas de referência dos preditores de vetor de movimento para frente e para trás, e a pesquisa de movimento com primeira precisão é realizada separadamente no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás. O primeiro bloco de predição de codificação DPB1 é usado como referência. Os novos blocos de predição de codificação para frente e para trás correspondentes obtidos em cada pesquisa de movimento são comparados com o primeiro bloco de predição de codificação DPB1, para obter um novo bloco de predição de codificação com uma diferença mínima de DPB1, e preditores de vetor de movimento para frente e para trás correspondentes ao novo bloco de predição de codificação são usados como preditores de vetor de movimento alvo e são considerados (–11, 4) e (6, 6), respectivamente.
[00234] Os preditores de vetor de movimento alvo são atualizados para (-11, 4) e (6, 6), predição para frente e predição para trás são realizadas separadamente no primeiro bloco de codificação com base nos preditores de vetor de movimento alvo, um bloco de predição de codificação alvo é obtido ao realizar soma ponderada em novos blocos de predição de codificação para frente e para trás obtidos, e é assumido como sendo DPB2, e o bloco de predição de codificação do bloco de codificação atual é atualizado para DPB2.
[00235] Então, (-11, 4) e (6, 6) são usados como entradas de referência dos preditores de vetor de movimento para frente e para trás, e a pesquisa de movimento com a primeira precisão é realizada separadamente no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás. O bloco de predição de codificação DPB2 do bloco de codificação atual é usado como referência. Novos blocos de predição de codificação para frente e para trás correspondentes obtidos em cada pesquisa de movimento são comparados com o primeiro bloco de predição de codificação DPB2, para obter um novo bloco de predição de codificação com uma diferença mínima de DPB2, e preditores de vetor de movimento para frente e para trás correspondentes ao novo bloco de predição de codificação são usados como novos preditores de vetor de movimento alvo e são assumidos como sendo (–7, 11) e (6, 5), respectivamente.
[00236] Em seguida, os preditores de vetor de movimento alvo são atualizados para (-7, 11) e (6, 5), predição para frente e predição para trás são realizadas separadamente no primeiro bloco de codificação com base nos últimos preditores de vetor de movimento alvo, um bloco de predição de codificação alvo é obtido realizando soma ponderada em novos blocos de predição de codificação para frente e para trás obtidos, e é assumido como sendo DPB3, e o bloco de predição de codificação do bloco de codificação atual é atualizado para DPB3.
[00237] Além disso, os preditores de vetor de movimento alvo podem ser continuamente atualizados de acordo com o método anterior e uma quantidade de ciclos não é limitada.
[00238] Deve-se notar que, quando a pesquisa de movimento com a primeira precisão é realizada no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás, a primeira precisão pode ser qualquer precisão especificada, por exemplo, pode ser precisão de pixel inteiro, precisão de 1/2 pixel, precisão de 1/4 de pixel, ou precisão de 1/8 de pixel.
[00239] Deve ser entendido que, em algumas modalidades viáveis, o ciclo termina quando uma condição é satisfeita. Por exemplo, o ciclo termina quando uma diferença entre DPBn e DPBn – 1 é menor que um limiar, onde n é um número inteiro positivo maior que 2.
[00240] Como mostrado na FIG. 18, um bloco de decodificação atual é um primeiro bloco de decodificação, e é obtida informação de movimento predito do bloco de decodificação atual. Assume-se que os valores do vetor de movimento para frente e para trás do bloco de decodificação atual são, respectivamente (–10, 4) e (5, 6), as diferenças do vetor de movimento para frente e para trás do bloco de decodificação atual são (-2, 1) e (1, 1) respectivamente, uma POC de uma imagem na qual o bloco de decodificação atual está localizado é 4, e as POCs de imagens de referência que são indicadas por valores de índice das imagens de referência são, respectivamente, 2 e 6. Portanto, uma POC correspondente ao bloco de decodificação atual é 4, uma POC correspondente a um bloco de imagem de referência de predição para frente é 2 e uma POC correspondente a um bloco de imagem de referência de predição para trás é 6.
[00241] A predição para frente e a predição para trás são realizadas separadamente no bloco de decodificação atual para obter um bloco de predição de decodificação para frente inicial (FPB) e um bloco de predição de decodificação para trás inicial (BPB) do bloco de decodificação atual, e presume-se que o bloco de predição de decodificação para frente inicial e o bloco de predição de decodificação para trás inicial são respectivamente FPB1 e BPB1. Um primeiro bloco de predição de decodificação (DPB) do bloco de decodificação atual é obtido realizando soma ponderada em
FPB1 e BPB1, e é assumido como sendo DPB1.
[00242] Uma soma do preditor do vetor de movimento para frente e da diferença do vetor de movimento para frente e uma soma do preditor do vetor de movimento para trás e da diferença do vetor de movimento para trás, a saber (–10, 4) + (-2, 1) = (- 12, 5) e (5, 6) + (1, 1) = (6, 7), são usados um vetor de movimento para frente e um vetor de movimento para trás, respectivamente, e a pesquisa de movimento com primeira precisão é realizada separadamente no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás. Nesse caso, a primeira precisão é de 1/4 de pixel em um intervalo de 1 pixel. O primeiro bloco de predição de decodificação DPB1 é usado como referência. Novos blocos de predição de decodificação para frente e para trás correspondentes obtidos em cada pesquisa de movimento são comparados com o primeiro bloco de predição de decodificação DPB1, para obter um novo bloco de predição de decodificação com uma diferença mínima de DPB1, e vetores de movimento para frente e para trás correspondentes ao novo bloco de predição de decodificação são usados como preditores de vetor de movimento alvo e são considerados (–11, 4) e (6, 6), respectivamente.
[00243] Os vetores de movimento alvo são atualizados para (-11, 4) e (6, 6), a predição para frente e a predição para trás são realizadas separadamente no primeiro bloco de decodificação com base nos vetores de movimento alvo, um bloco de predição de decodificação alvo é obtido realizando a soma ponderada em novos blocos de predição de decodificação para frente e para trás obtidos, e é assumido como sendo
DPB2, e o bloco de predição de decodificação do bloco de decodificação atual é atualizado para DPB2.
[00244] Para refletir ainda mais o conteúdo técnico principal deste pedido, um processo de armazenamento de um vetor de movimento por um codificador em um modo de mesclagem é descrito abaixo usando uma modalidade específica. FIG. 19 é um fluxograma esquemático de um método para obter um vetor de movimento por um codificador de acordo com uma modalidade deste pedido. O método inclui as seguintes etapas.
[00245] 1901: após obter um primeiro bloco de imagem a ser processado, o codificador determina um ou mais blocos de referência candidatos predefinidos do primeiro bloco de imagem a ser processado.
[00246] Com referência à FIG. 3, o primeiro bloco de imagem a ser processado é um bloco de imagem a ser processado, isto é, um bloco de imagem a ser codificado, obtido após uma unidade de particionamento das partições do codificador obter dados de vídeo. Deve-se notar que o primeiro bloco de imagem a ser processado pode ser uma PU atual ou pode ser uma CU atual. Isto não está especificamente limitado nesta modalidade da presente invenção.
[00247] O bloco de referência candidato inclui um bloco de imagem que tem uma relação de localização espacial predefinida com o primeiro bloco de imagem a ser processado. A relação de localização espacial predefinida pode ser a relação de localização mostrada na FIG. 5. Porque o bloco de referência candidato mostrado na FIG. 5 é vizinho ao primeiro bloco de imagem a ser processado, isto é, a informação de pixel do bloco de referência candidato é relativamente semelhante àquela do primeiro bloco de imagem a ser processado, um vetor de movimento do bloco de referência candidato pode ser usado como um vetor de movimento predito do primeiro bloco de imagem a ser processado, para prever o primeiro bloco de imagem a ser processado. Em algumas modalidades, o bloco de referência candidato inclui ainda outro bloco de imagem real ou um bloco de imagem virtual que tem uma correlação espacial predefinida com o primeiro bloco de imagem a ser processado. Nesta modalidade deste pedido, a relação de localização entre o bloco de referência candidato e o primeiro bloco de imagem a ser processado não é especificamente limitada por uma quantidade de blocos de referência candidatos.
[00248] 1902: o codificador determina um ou mais vetores de movimento de um ou mais blocos de referência candidatos.
[00249] Nesta modalidade deste pedido, um processo de atualização do vetor de movimento é realizado no bloco de referência candidato. Quando o processo de atualização no bloco de referência candidato é concluído, o bloco de referência candidato tem um vetor de movimento inicial e um vetor de movimento final, ou seja, o bloco de referência candidato armazena correspondentemente o vetor de movimento inicial e o vetor de movimento final. Em algumas modalidades, o bloco de referência candidato armazena correspondentemente um vetor de movimento inicial e um residual de vetor de movimento, e um vetor de movimento final do bloco de referência candidato pode ser obtido adicionando o vetor de movimento inicial e o residual de vetor de movimento do bloco de referência candidato.
[00250] No entanto, quando o processo de atualização no bloco de referência candidato não é concluído, o bloco de referência candidato tem apenas um vetor de movimento inicial, ou seja, o bloco de referência candidato armazena correspondentemente apenas o vetor de movimento inicial do bloco de referência candidato.
[00251] Como o bloco de referência candidato tem o vetor de movimento inicial e o vetor de movimento final, o codificador pode usar o vetor de movimento inicial ou o vetor de movimento final do bloco de referência candidato como o vetor de movimento do bloco de referência candidato, de modo que o vetor de movimento do bloco de referência candidato é usado como um vetor de movimento predito candidato espacial do primeiro bloco de imagem a ser processado.
[00252] Deve-se notar que, para o processo de atualização do vetor de movimento no bloco de referência, consulte a modalidade deste pedido relacionada à FIG. 13. Deve ser entendido que o bloco de referência na modalidade relacionada à FIG. 19 é o bloco de imagem a ser processado na modalidade relacionada à FIG. 13.
[00253] Na etapa 1902, o vetor de movimento do bloco de referência candidato pode ser determinado com base em um intervalo predefinido do bloco de referência candidato. Por exemplo, quando o bloco de referência candidato cai dentro do intervalo predefinido, o vetor de movimento inicial do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato, ou quando o bloco de referência candidato cai além do intervalo predefinido, o vetor de movimento final do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Portanto, um ou mais vetores de movimento de um ou mais blocos de referência candidatos podem ser determinados.
[00254] Especificamente, o intervalo predefinido pode ser um intervalo de linhas CTB. Por exemplo, quando um CTB no qual o bloco de referência candidato está localizado e um CTB no qual o primeiro bloco de imagem a ser processado está localizado estão localizados na mesma linha, o vetor de movimento inicial do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Correspondentemente, quando o CTB no qual o bloco de referência candidato está localizado e o CTB no qual o primeiro bloco de imagem a ser processado está localizado não estão localizados na mesma linha, o vetor de movimento final do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Com referência à FIG. 21, pode ser entendido que, quando o bloco de árvore de codificação no qual o bloco de referência candidato está localizado e o bloco de árvore de codificação no qual o primeiro bloco de imagem a ser processado está localizado estão localizados em linhas diferentes, e o bloco de árvore de codificação no qual o bloco de referência candidato está localizado e o bloco de árvore de codificação no qual o primeiro bloco de imagem a ser processado está localizado estão localizados no espaço vizinho das diferentes linhas, o vetor de movimento inicial do bloco de referência candidato é usado como o movimento vetor do bloco de referência candidato. O espaço vizinho das diferentes linhas pode ser o espaço superior, o espaço superior esquerdo, ou algo semelhante às diferentes linhas. Um intervalo específico do espaço vizinho das diferentes filas não está especificamente limitado nesta modalidade da presente invenção.
[00255] Em uma tecnologia relacionada, um codificador pode codificar simultaneamente uma pluralidade de blocos de imagem a serem processados. No entanto, quando a pluralidade de blocos de imagem a serem processados está localizada na mesma linha CTB, a pluralidade de blocos de imagem a serem processados pode ser blocos de referência candidatos uns dos outros. Uma vez que a pluralidade de blocos de imagem a serem processados são blocos de referência candidatos um do outro, um vetor de movimento final atualizado de outro bloco pode ser usado como um vetor de movimento predito candidato espacial de um bloco de imagem atual a ser processado somente após o outro bloco ser atualizado. Consequentemente, existe um atraso de codificação. Além disso, como a pluralidade de blocos de imagem a serem processados são blocos de referência candidatos uns dos outros, é necessário esperar até que os outros blocos sejam atualizados. Consequentemente, um atraso de codificação é aumentado.
[00256] Portanto, o vetor de movimento inicial do bloco de referência candidato pode ser usado diretamente como o vetor de movimento do bloco de referência candidato e, em seguida, o vetor de movimento do bloco de referência candidato é usado como o vetor de movimento predito candidato espacial do primeiro bloco de imagem a ser processado. Para isso, consulte a etapa 1903.
[00257] Quando o CTB no qual o bloco de referência candidato está localizado e o CTB no qual o primeiro bloco de imagem a ser processado está localizado estão localizados na mesma linha, o processo de atualização no bloco de referência candidato pode não ser concluído. Portanto, o vetor de movimento inicial do bloco de referência candidato pode ser usado diretamente como o vetor de movimento do bloco de referência candidato e não há necessidade de esperar até que o bloco de referência candidato seja atualizado, reduzindo um atraso de codificação. Quando o CTB no qual o bloco de referência candidato está localizado e o CTB no qual o primeiro bloco de imagem a ser processado está localizado não estão localizados na mesma linha, isso indica que há tempo suficiente para concluir o processo de atualização no bloco de referência candidato. Portanto, o bloco de referência candidato tem o vetor de movimento final, e o vetor de movimento final do bloco de referência candidato pode ser usado como o vetor de movimento do bloco de referência candidato. Além disso, como o vetor de movimento final é um vetor de movimento obtido após o vetor de movimento inicial ser refinado, usar o vetor de movimento final como o vetor de movimento do bloco de referência candidato pode garantir a qualidade de codificação.
[00258] O intervalo predefinido pode, alternativamente, ser um intervalo de bloco CTB. Por exemplo, quando o bloco de referência candidato e o primeiro bloco de imagem a ser processado estão localizados em um mesmo CTB, o vetor de movimento inicial do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Correspondentemente, quando o bloco de referência candidato e o primeiro bloco de imagem a ser processado não estão localizados no mesmo CTB, o vetor de movimento final do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato.
[00259] Quando o bloco de referência candidato e o primeiro bloco de imagem a ser processado estão localizados em um mesmo CTB, isso indica que o processo de atualização no bloco de referência candidato pode não ser concluído e o vetor de movimento inicial do bloco de referência candidato é diretamente usado como o vetor de movimento do bloco de referência candidato sem a necessidade de esperar até que o bloco de referência candidato seja atualizado, reduzindo um atraso de codificação. Além disso, quando o bloco de referência candidato e o primeiro bloco de imagem a ser processado não estão localizados no mesmo CTB, isso indica que há tempo suficiente para concluir o processo de atualização no bloco de referência candidato. Além disso, porque o vetor de movimento final é um vetor de movimento obtido após o vetor de movimento inicial ser refinado, usando o vetor de movimento final do bloco de referência candidato que não está localizado no mesmo CTB que o primeiro bloco de imagem a ser processado como o vetor de movimento do bloco de referência candidato pode garantir a qualidade de codificação.
[00260] O intervalo predefinido pode, alternativamente, ser um mesmo intervalo de bloco CTB ou um intervalo de blocos CTB vizinhos à esquerda e à direita. Por exemplo, quando um CTB no qual o bloco de referência candidato está localizado é o mesmo que um CTB no qual o primeiro bloco de imagem a ser processado está localizado, ou um CTB no qual o bloco de referência candidato está localizado é um bloco vizinho esquerdo ou vizinho direito de um CTB no qual o primeiro bloco de imagem a ser processado está localizado, o vetor de movimento inicial do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Correspondentemente, quando o CTB no qual o bloco de referência candidato está localizado não é o mesmo que o CTB no qual o primeiro bloco de imagem a ser processado está localizado, ou o CTB no qual o bloco de referência candidato está localizado não é um bloco vizinho esquerdo ou vizinho direito do CTB no qual o primeiro bloco de imagem a ser processado está localizado, o vetor de movimento final do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato.
[00261] Quando o CTB no qual o bloco de referência candidato está localizado é o mesmo que o CTB no qual o primeiro bloco de imagem a ser processado está localizado, ou o CTB no qual o bloco de referência candidato está localizado é um bloco vizinho à esquerda ou vizinho à direita da CTB em que o primeiro bloco de imagem a ser processado está localizado, isso indica que o processo de atualização no bloco de referência candidato pode não ser concluído e o vetor de movimento inicial do bloco de referência candidato é usado diretamente como o vetor de movimento do bloco de referência candidato sem a necessidade de esperar até que o bloco de referência candidato seja atualizado, reduzindo um atraso de codificação. Além disso, quando o CTB no qual o bloco de referência candidato está localizado não é o mesmo que o CTB no qual o primeiro bloco de imagem a ser processado está localizado, ou o CTB no qual o bloco de referência candidato está localizado não é um bloco vizinho esquerdo ou vizinho direito do CTB no qual o primeiro bloco de imagem a ser processado está localizado, indica que há tempo suficiente para completar o processo de atualização no bloco de referência candidato. Além disso, como o vetor de movimento final é um vetor de movimento obtido após o vetor de movimento inicial ser refinado, usar o vetor de movimento final do bloco de referência candidato como o vetor de movimento do bloco de referência candidato pode garantir a qualidade de codificação.
[00262] 1903: o codificador estabelece uma lista de vetores de movimento preditos candidatos com base em um ou mais vetores de movimento de um ou mais blocos de referência candidatos.
[00263] Para uma maneira de estabelecer a lista de vetores de movimento preditos candidatos, consulte a FIG. 6 à FIG. 9. Os detalhes não são descritos neste documento novamente.
[00264] 1904: o codificador determina um bloco de referência do bloco de imagem a ser processado, onde o bloco de referência e o primeiro bloco de imagem a ser processado estão localizados em um mesmo quadro de imagem.
[00265] Um bloco de referência candidato com um custo de distorção de taxa mínimo é selecionado a partir de um ou mais blocos de referência candidatos do primeiro bloco de imagem a ser processado como o bloco de referência do primeiro bloco de imagem a ser processado.
[00266] 1905: o codificador armazena um vetor de movimento do bloco de referência, onde o vetor de movimento do bloco de referência é um vetor de movimento inicial do primeiro bloco de imagem a ser processado.
[00267] O vetor de movimento do bloco de referência pode ser obtido a partir de uma localização correspondente na lista de vetores de movimento preditos candidatos estabelecidos.
[00268] As etapas 1901 a 1905 são um processo no qual o codificador obtém um vetor de movimento inicial do primeiro bloco de imagem a ser processado.
[00269] 1906: o codificador determina um bloco de predição do primeiro bloco de imagem a ser processado com base no vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido do primeiro bloco de imagem a ser processado.
[00270] A etapa 1906 pode ser concluída usando 13021 a 13024 na FIG. 13. Os detalhes não são descritos neste documento novamente.
[00271] Os um ou mais deslocamentos de vetor de movimento predefinido podem ser definidos com base em uma unidade de pixel. Por exemplo, um bloco de imagem indicado pelo vetor de movimento inicial do primeiro bloco de imagem a ser processado é usado como um bloco de predição temporário do primeiro bloco de imagem a ser processado, e um ou mais blocos de predição candidatos dentro de uma unidade de pixel ou unidade de 1/2 pixel do bloco de predição temporário são pesquisadas usando o bloco de predição temporário como um centro. Certamente, outro comprimento ou outra unidade de pixel pode ser usado. Os um ou mais deslocamentos de vetor de movimento predefinido não são especificamente limitados nesta modalidade deste pedido.
[00272] 1907: após determinar um vetor de movimento do bloco de predição, o codificador usa o vetor de movimento do bloco de predição como um vetor de movimento final do primeiro bloco de imagem a ser processado.
[00273] Na etapa 1907, o vetor de movimento do bloco de predição pode ser determinado com base em um intervalo predefinido do bloco de predição. Por exemplo, quando o bloco de predição cai dentro do intervalo predefinido, um vetor de movimento inicial do bloco de predição é usado como o vetor de movimento do bloco de predição, ou quando o bloco de predição cai além do intervalo predefinido, um vetor de movimento final do bloco de predição é usado como o vetor de movimento do bloco de predição.
[00274] Especificamente, o intervalo predefinido pode ser um intervalo de linhas CTB. Por exemplo, quando um CTB no qual o bloco de predição está localizado e um CTB no qual o primeiro bloco de imagem a ser processado está localizado estão localizados na mesma linha, o vetor de movimento inicial do bloco de predição é usado como o vetor de movimento do bloco de predição. Correspondentemente, quando o CTB no qual o bloco de predição está localizado e o CTB no qual o primeiro bloco de imagem a ser processado está localizado não estão localizados na mesma linha, o vetor de movimento inicial do bloco de predição é usado como o vetor de movimento do bloco de predição. Com referência à FIG. 21, pode ser entendido que, quando o bloco de árvore de codificação no qual o bloco de predição está localizado e o bloco de árvore de codificação no qual o primeiro bloco de imagem a ser processado está localizado estão localizados em linhas diferentes, e o bloco de árvore de codificação no qual o bloco de predição está localizado e o bloco de árvore de codificação no qual o primeiro bloco de imagem a ser processado está localizado estão localizados no espaço vizinho das diferentes linhas, o vetor de movimento inicial do bloco de predição é usado como o vetor de movimento do bloco de predição. O espaço vizinho das diferentes linhas pode ser o espaço superior, o espaço superior esquerdo, ou algo semelhante às diferentes linhas. Um intervalo específico do espaço vizinho das diferentes filas não está especificamente limitado nesta modalidade da presente invenção.
[00275] Quando o CTB no qual o bloco de predição está localizado e o CTB no qual o primeiro bloco de imagem a ser processado está localizado estão localizados na mesma linha, um processo de atualização no bloco de predição pode não ser concluído. Portanto, o vetor de movimento inicial do bloco de predição pode ser usado diretamente como o vetor de movimento do bloco de predição e não há necessidade de esperar até que o bloco de predição seja atualizado, reduzindo um atraso de codificação. Quando o CTB no qual o bloco de predição está localizado e o CTB no qual o primeiro bloco de imagem a ser processado está localizado não estão localizados na mesma linha, isso indica que há tempo suficiente para concluir um processo de atualização no bloco de predição. Portanto, o bloco de predição tem o vetor de movimento final, e o vetor de movimento final do bloco de predição pode ser usado como o vetor de movimento do bloco de predição. Além disso, como o vetor de movimento final é um vetor de movimento obtido após o vetor de movimento inicial ser refinado, usar o vetor de movimento final como o vetor de movimento do bloco de predição pode garantir a qualidade de codificação.
[00276] Em algumas modalidades, o intervalo predefinido pode, alternativamente, ser um intervalo de bloco CTB. Em algumas outras modalidades, o intervalo predefinido pode, alternativamente, ser um mesmo bloco CTB. A determinação do vetor de movimento do bloco de predição é semelhante à determinação do vetor de movimento do bloco de referência candidato. Para isso, consulte a etapa 1902. Os detalhes não são descritos neste documento novamente.
[00277] 1908: o codificador atualiza o vetor de movimento inicial do primeiro bloco de imagem a ser processado na lista de candidatos para o vetor de movimento final do primeiro bloco de imagem a ser processado.
[00278] 1909: o codificador armazena um residual de vetor de movimento do primeiro bloco de imagem a ser processado no espaço de armazenamento alvo.
[00279] O residual de vetor de movimento é uma diferença de vetor de movimento entre o vetor de movimento final do primeiro bloco de imagem a ser processado e o vetor de movimento inicial do primeiro bloco de imagem a ser processado.
[00280] O espaço de armazenamento alvo é o espaço para armazenar o residual de vetor de movimento pelo codificador. Por exemplo, o espaço de armazenamento alvo pode ser o armazenamento de imagem de referência 64 na FIG. 2.
[00281] Deve-se observar que, em um modo de mesclagem em uma tecnologia relacionada, o espaço de armazenamento alvo armazena um vetor zero, ou o espaço de armazenamento alvo não armazena dados. No entanto, no modo de mesclagem nesta modalidade deste pedido, o residual de vetor de movimento do bloco de imagem a ser processado é armazenado no espaço de armazenamento alvo, de modo que não apenas o espaço de armazenamento alvo possa ser totalmente utilizado, mas também um o vetor de movimento de outro bloco de imagem pode ser selecionado de forma flexível quando o vetor de movimento de outro bloco de imagem é necessário para o primeiro bloco de imagem a ser processado. Conforme mostrado nas etapas 1902 e 1907, a eficiência de codificação do codificador é melhorada ainda mais.
[00282] Além disso, em algumas implementações, na etapa 1909, o vetor de movimento final do primeiro bloco de imagem a ser processado pode, alternativamente, ser usado como o residual de vetor de movimento do primeiro bloco de imagem a ser processado e armazenado no armazenamento alvo espaço, isto é, o vetor de movimento final do primeiro bloco de imagem a ser processado é armazenado no espaço de armazenamento alvo, e o residual de vetor de movimento do primeiro bloco de imagem a ser processado não é armazenado no espaço de armazenamento alvo. Neste caso, quando o vetor de movimento final do primeiro bloco de imagem a ser processado é necessário para outro bloco, o vetor de movimento final do primeiro bloco de imagem a ser processado pode ser obtido diretamente do espaço de armazenamento alvo do codificador sem a necessidade de adicionar o vetor de movimento inicial do primeiro bloco de imagem a ser processado e o residual de vetor de movimento do primeiro bloco de imagem a ser processado.
[00283] Para uma maneira de armazenamento específica da etapa 1909, consulte a FIG. 21.
[00284] Deve-se notar que não há nenhum requisito estrito em uma sequência de etapas 1908 e 1909, e o codificador pode, alternativamente, realizar a etapa 1909 antes da etapa 1908. Isso não é especificamente limitado nesta modalidade deste pedido.
[00285] As etapas 1906 a 1909 são um processo no qual o codificador obtém o vetor de movimento final do primeiro bloco de imagem a ser processado.
[00286] 1910: o codificador codifica, em um fluxo de bits, o vetor de movimento inicial do bloco de imagem a ser processado ou um ou mais pedaços da primeira informação de identificação correspondente ao vetor de movimento inicial do bloco de imagem a ser processado na lista de candidatos.
[00287] A informação de identificação pode incluir um índice. Certamente, em algumas implementações, a informação de identificação pode incluir ainda um modo de predição. O índice é usado para indicar um vetor de movimento correspondente na lista de vetores de movimento preditos candidatos, o vetor de movimento é o vetor de movimento inicial ou o vetor de movimento final do primeiro bloco de imagem a ser processado e o modo de predição inclui um modo de mesclagem, um modo de AMVPA e um modo de salto. Nesta modalidade deste pedido, o modo de predição é o modo de mesclagem. Certamente, em outra modalidade, o modo de predição pode ser outro modo. Isso não é limitado nesta modalidade deste pedido.
[00288] Na implementação anterior, ao codificar o bloco de codificação atual, o codificador usa o vetor de movimento inicial não atualizado do bloco de referência como o vetor de movimento predito do bloco de codificação atual em vez do vetor de movimento final do bloco de referência. Desta forma, quando o vetor de movimento do bloco de referência é necessário para o bloco de codificação atual, uma etapa relacionada pode ser realizada sem a necessidade de esperar até que o vetor de movimento final do bloco de referência seja atualizado, garantindo que um atraso de codificação seja reduzido enquanto a eficiência da codificação é melhorada porque o vetor de movimento é atualizado.
[00289] Deve-se notar que, quando um modo de inter- predição usado pelo codificador é predição para frente ou predição para trás, o vetor de movimento do bloco de referência candidato, o vetor de movimento do bloco de referência e o vetor de movimento do bloco de predição incluem um vetor de movimento ou um vetor de movimento para trás. Correspondentemente, quando a lista de vetores de movimento preditos candidatos é estabelecida, a lista de vetores de movimento preditos candidatos inclui apenas uma lista 0 ou uma lista 1, o vetor de movimento inicial do bloco de imagem a ser processado inclui um vetor de movimento inicial para frente ou um para trás vetor de movimento inicial e o vetor de movimento final do bloco de imagem a ser processado inclui um vetor de movimento final para frente ou um vetor de movimento final para trás.
[00290] Quando o modo de inter-predição usado pelo codificador é a predição bidirecional, o vetor de movimento do bloco de referência candidato, o vetor de movimento do bloco de referência, e o vetor de movimento do bloco de predição incluem um primeiro vetor de movimento e um segundo vetor de movimento, o primeiro vetor de movimento é um vetor de movimento para frente, e o segundo vetor de movimento é um vetor de movimento para trás. Correspondentemente, quando a lista de vetores de movimento preditos candidatos é estabelecida, a lista de vetores de movimento preditos candidatos inclui uma lista 0 e uma lista 1, o vetor de movimento inicial do bloco de imagem a ser processado inclui um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial vetor de movimento e o vetor de movimento final do bloco de imagem a ser processado inclui um primeiro vetor de movimento final e um segundo vetor de movimento final. O primeiro vetor de movimento inicial e o primeiro vetor de movimento final são vetores de movimento para frente, e o segundo vetor de movimento inicial e o segundo vetor de movimento final são vetores de movimento para trás.
[00291] O conteúdo anterior é descrito para o codificador. Correspondentemente, um processo de armazenamento de um vetor de movimento por um decodificador em um modo de mesclagem é descrito abaixo usando uma modalidade específica. FIG. 20 é um fluxograma esquemático de um método para obter um vetor de movimento por um decodificador de acordo com uma modalidade deste pedido. O método inclui as seguintes etapas.
[00292] 2001: após receber um fluxo de bits correspondente a um segundo bloco de imagem a ser processado, o decodificador analisa o fluxo de bits para obter a segunda informação de identificação e a terceira informação de identificação, onde a segunda informação de identificação é usada para determinar um vetor de movimento predito inicial do bloco de imagem a ser processado, e a terceira informação de identificação é usada para indicar se um residual de vetor de movimento precisa ser analisado durante a decodificação.
[00293] A segunda informação de identificação pode incluir um índice que é usado para determinar o vetor de movimento inicial do bloco de imagem a ser processado. Com referência às etapas 2002 e 2004, em algumas modalidades, a segunda informação de identificação pode incluir ainda um tipo de modo de predição.
[00294] A terceira informação de identificação é usada para indicar se o residual de vetor de movimento precisa ser analisado durante a decodificação. Nesta modalidade deste pedido, o residual de vetor de movimento não precisa ser analisado no modo de mesclagem, mas o residual de vetor de movimento pode ser analisado em outra modalidade. Por exemplo, em um modo SMVP, ao adicionar o residual de vetor de movimento do segundo bloco de imagem a ser processado ao fluxo de bits de acordo com a indicação da terceira informação de identificação, o decodificador pode obter o residual de vetor de movimento analisando o fluxo de bits. Nesse caso, o decodificador armazena diretamente o residual de vetor de movimento no espaço de armazenamento alvo.
[00295] 2002: após receber o fluxo de bits correspondente ao segundo bloco de imagem a ser processado, o decodificador determina um ou mais blocos de referência candidatos do segundo bloco de imagem a ser processado e um ou mais vetores de movimento de um ou mais blocos de referência candidatos.
[00296] Os um ou mais blocos de referência candidatos incluem um bloco de imagem que tem uma relação de localização espacial predefinida com o segundo bloco de imagem a ser processado. Para determinar o bloco de referência candidato, consulte a FIG. 5. Os detalhes não são descritos neste documento novamente.
[00297] Nesta modalidade deste pedido, um processo de atualização do vetor de movimento é realizado no bloco de referência candidato. Quando o processo de atualização no bloco de referência candidato é concluído, o bloco de referência candidato tem um vetor de movimento inicial e um vetor de movimento final, ou seja, o bloco de referência candidato armazena o vetor de movimento inicial e o vetor de movimento final. Em algumas modalidades, o bloco de referência candidato armazena um vetor de movimento inicial e um residual de vetor de movimento, e um vetor de movimento final do bloco de referência candidato pode ser obtido adicionando o vetor de movimento inicial e o residual de vetor de movimento do bloco de referência candidato.
[00298] No entanto, quando o processo de atualização no bloco de referência candidato não é concluído, o bloco de referência candidato tem apenas um vetor de movimento inicial, ou seja, o bloco de referência candidato armazena apenas o vetor de movimento inicial do bloco de referência candidato.
[00299] Como o bloco de referência candidato tem o vetor de movimento inicial e o vetor de movimento final, o decodificador precisa usar o vetor de movimento inicial ou o vetor de movimento final do bloco de referência candidato como o vetor de movimento do bloco de referência candidato, de modo que o vetor de movimento do bloco de referência candidato é usado como um vetor de movimento predito candidato espacial do segundo bloco de imagem a ser processado.
[00300] Deve-se notar que, para o processo de atualização do vetor de movimento no bloco de referência e obtenção do vetor de movimento inicial, consulte a modalidade deste pedido relacionada à FIG. 14. Deve ser entendido que o bloco de referência na modalidade relacionada à FIG. 20 é o bloco de imagem a ser processado na modalidade relacionada à FIG.
14.
[00301] Na etapa 2002, o vetor de movimento do bloco de referência candidato pode ser determinado com base em um intervalo predefinido do bloco de referência candidato. Por exemplo, quando o bloco de referência candidato cai dentro do intervalo predefinido, o vetor de movimento inicial do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato, ou quando o bloco de referência candidato cai além do intervalo predefinido, o vetor de movimento final do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Portanto, um ou mais vetores de movimento de um ou mais blocos de referência candidatos podem ser determinados.
[00302] Especificamente, o intervalo predefinido pode ser um intervalo de linhas CTB. Por exemplo, quando um CTB no qual o bloco de referência candidato está localizado e um CTB no qual o segundo bloco de imagem a ser processado está localizado estão localizados na mesma linha, o vetor de movimento inicial do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Correspondentemente, quando o CTB no qual o bloco de referência candidato está localizado e o CTB no qual o segundo bloco de imagem a ser processado está localizado não estão localizados na mesma linha, o vetor de movimento inicial do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Com referência à FIG. 21, pode ser entendido que, quando o bloco de árvore de codificação no qual o bloco de referência candidato está localizado e o bloco de árvore de codificação no qual o segundo bloco de imagem a ser processado está localizado estão localizados em linhas diferentes, e o bloco de árvore de codificação no qual o bloco de referência candidato está localizado e o bloco de árvore de codificação no qual o segundo bloco de imagem a ser processado está localizado estão localizados no espaço vizinho das diferentes filas, o vetor de movimento inicial do bloco de referência candidato é usado como o movimento vetor do bloco de referência candidato. O espaço vizinho das diferentes linhas pode ser o espaço superior, o espaço superior esquerdo, ou algo semelhante às diferentes linhas. Um intervalo específico do espaço vizinho das diferentes filas não está especificamente limitado nesta modalidade da presente invenção.
[00303] Em uma tecnologia relacionada, um decodificador pode decodificar simultaneamente uma pluralidade de blocos de imagem a serem processados. No entanto, quando a pluralidade de blocos de imagem a serem processados está localizada na mesma linha CTB, a pluralidade de blocos de imagem a serem processados pode ser blocos de referência candidatos uns dos outros. Uma vez que a pluralidade de blocos de imagem a serem processados são blocos de referência candidatos um do outro, um vetor de movimento final atualizado de outro bloco pode ser usado como um vetor de movimento predito candidato espacial de um bloco de imagem atual a ser processado somente após o outro bloco ser atualizado. Consequentemente, existe um atraso de decodificação. Além disso, como a pluralidade de blocos de imagem a serem processados são blocos de referência candidatos uns dos outros, não há necessidade de esperar até que os outros blocos sejam atualizados. Consequentemente, um atraso de decodificação é aumentado.
[00304] Portanto, o vetor de movimento inicial do bloco de referência candidato pode ser usado diretamente como o vetor de movimento do bloco de referência candidato e, em seguida, o vetor de movimento do bloco de referência candidato é usado como o vetor de movimento predito candidato espacial do segundo bloco de imagem a ser processado. Para isso, consulte a etapa 2003.
[00305] Quando o CTB no qual o bloco de referência candidato está localizado e o CTB no qual o segundo bloco de imagem a ser processado está localizado estão localizados na mesma linha, o processo de atualização no bloco de referência candidato pode não ser concluído. Portanto, o vetor de movimento inicial do bloco de referência candidato pode ser usado diretamente como o vetor de movimento do bloco de referência candidato e não há necessidade de esperar até que o bloco de referência candidato seja atualizado, reduzindo um atraso de decodificação. Quando o CTB no qual o bloco de referência candidato está localizado e o CTB no qual o segundo bloco de imagem a ser processado está localizado não estão localizados na mesma linha, isso indica que há tempo suficiente para concluir o processo de atualização no bloco de referência candidato. Portanto, o bloco de referência candidato tem o vetor de movimento final, e o vetor de movimento final do bloco de referência candidato pode ser usado como o vetor de movimento do bloco de referência candidato. Além disso, como o vetor de movimento final é um vetor de movimento obtido após o vetor de movimento inicial ser refinado, usar o vetor de movimento final como o vetor de movimento do bloco de referência candidato pode garantir a qualidade de decodificação.
[00306] O intervalo predefinido pode, alternativamente, ser um intervalo de bloco CTB. Por exemplo, quando o bloco de referência candidato e o segundo bloco de imagem a ser processado estão localizados em um mesmo CTB, o vetor de movimento inicial do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Correspondentemente, quando o bloco de referência candidato e o segundo bloco de imagem a ser processado não estão localizados no mesmo CTB, o vetor de movimento final do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato.
[00307] Quando o bloco de referência candidato e o segundo bloco de imagem a ser processado estão localizados em um mesmo CTB, isso indica que o processo de atualização no bloco de referência candidato pode não ser concluído e o vetor de movimento inicial do bloco de referência candidato é diretamente usado como o vetor de movimento do bloco de referência candidato sem a necessidade de esperar até que o bloco de referência candidato seja atualizado, reduzindo um atraso de decodificação. Além disso, quando o bloco de referência candidato e o segundo bloco de imagem a ser processado não estão localizados no mesmo CTB, isso indica que há tempo suficiente para concluir o processo de atualização no bloco de referência candidato. Além disso, porque o vetor de movimento final é um vetor de movimento obtido após o vetor de movimento inicial ser refinado, usando o vetor de movimento final do bloco de referência candidato que não está localizado no mesmo CTB que o segundo bloco de imagem a ser processado como o vetor de movimento do bloco de referência candidato pode garantir a qualidade de decodificação.
[00308] O intervalo predefinido pode, alternativamente, ser um mesmo intervalo de bloco CTB ou um intervalo de blocos CTB vizinhos à esquerda e à direita. Por exemplo, quando um
CTB no qual o bloco de referência candidato está localizado é o mesmo que um CTB no qual o segundo bloco de imagem a ser processado está localizado, ou um CTB no qual o bloco de referência candidato está localizado é um vizinho à esquerda ou bloco vizinho direito de um CTB no qual o segundo bloco de imagem a ser processado está localizado, o vetor de movimento inicial do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato. Correspondentemente, quando o CTB no qual o bloco de referência candidato está localizado não é o mesmo que o CTB no qual o segundo bloco de imagem a ser processado está localizado, ou o CTB no qual o bloco de referência candidato está localizado não é um bloco vizinho esquerdo ou vizinho direito do CTB no qual o segundo bloco de imagem a ser processado está localizado, o vetor de movimento final do bloco de referência candidato é usado como o vetor de movimento do bloco de referência candidato.
[00309] Quando o CTB no qual o bloco de referência candidato está localizado é o mesmo que o CTB no qual o segundo bloco de imagem a ser processado está localizado, ou o CTB no qual o bloco de referência candidato está localizado é um bloco vizinho à esquerda ou vizinho à direita da CTB em que o segundo bloco de imagem a ser processado está localizado, isso indica que o processo de atualização no bloco de referência candidato pode não ser concluído e o vetor de movimento inicial do bloco de referência candidato é usado diretamente como o vetor de movimento do bloco de referência candidato sem a necessidade de esperar até que o bloco de referência candidato seja atualizado, reduzindo um atraso de decodificação. Além disso, quando o CTB no qual o bloco de referência candidato está localizado não é o mesmo que o CTB no qual o segundo bloco de imagem a ser processado está localizado, ou o CTB no qual o bloco de referência candidato está localizado não é um bloco vizinho esquerdo ou vizinho direito do CTB no qual o segundo bloco de imagem a ser processado está localizado, indica que há tempo suficiente para completar o processo de atualização no bloco de referência candidato. Além disso, como o vetor de movimento final é um vetor de movimento obtido após o vetor de movimento inicial ser refinado, usar o vetor de movimento final do bloco de referência candidato como o vetor de movimento do bloco de referência candidato pode garantir a qualidade de decodificação.
[00310] 2003: o decodificador estabelece uma lista de vetores de movimento preditos candidatos com base em um ou mais vetores de movimento de um ou mais blocos de referência candidatos.
[00311] A etapa 2003 é a mesma que a etapa 1903, ou seja, uma maneira pela qual o decodificador estabelece a lista de vetores de movimento preditos candidatos é consistente com a maneira como o codificador estabelece a lista de vetores de movimentos preditos candidatos e as listas de vetores de movimentos preditos candidatos estabelecidas são os mesmos. O codificador é um codificador que codifica o fluxo de bits recebido pelo decodificador.
[00312] 2004: o decodificador determina um bloco de referência do segundo bloco de imagem a ser processado e um vetor de movimento do bloco de referência da lista de vetores de movimento preditos candidatos com base na segunda informação de identificação.
[00313] Um vetor de movimento indicado por um índice na segunda informação de identificação é selecionado a partir da lista de vetores de movimento preditos candidatos com base no índice. O vetor de movimento é um vetor de movimento inicial do segundo bloco de imagem a ser processado e o vetor de movimento também é o vetor de movimento do bloco de referência do segundo bloco de imagem a ser processado.
[00314] 2005: o decodificador armazena o vetor de movimento do bloco de referência como um vetor de movimento inicial do segundo bloco de imagem a ser processado.
[00315] As etapas de 2001 a 2005 são um processo no qual o decodificador obtém o vetor de movimento inicial do segundo bloco de imagem a ser processado.
[00316] 2006: o decodificador determina um bloco de predição do segundo bloco de imagem a ser processado com base no vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido do segundo bloco de imagem a ser processado.
[00317] A etapa de 2006 pode ser concluída usando 14021 a 14024 na FIG. 14. Os detalhes não são descritos neste documento novamente.
[00318] Para um ou mais deslocamentos de vetor de movimento predefinido, consulte a etapa 1906. Os detalhes não são descritos neste documento novamente.
[00319] Deve-se notar que não há uma sequência específica de execução das etapas de 2005 e 2006, e a etapa 2006 pode, alternativamente, ser realizada antes da etapa 2005. Uma sequência de etapas de execução de 2005 e 2006 não é especificamente limitada nesta modalidade deste pedido.
[00320] 2007: após determinar um vetor de movimento do bloco de predição, o decodificador usa o vetor de movimento do bloco de predição como um vetor de movimento final do segundo bloco de imagem a ser processado.
[00321] Na etapa 2007, o vetor de movimento do bloco de referência candidato pode ser determinado com base em um intervalo predefinido do bloco de predição. Por exemplo, quando o bloco de predição cai dentro do intervalo predefinido, um vetor de movimento inicial do bloco de predição é usado como o vetor de movimento do bloco de predição, ou quando o bloco de predição cai além do intervalo predefinido, um vetor de movimento final do bloco de predição é usado como o vetor de movimento do bloco de predição.
[00322] Especificamente, o intervalo predefinido pode ser um intervalo de linhas CTB. Por exemplo, quando um CTB no qual o bloco de predição está localizado e um CTB no qual o segundo bloco de imagem a ser processado está localizado estão localizados na mesma linha, o vetor de movimento inicial do bloco de predição é usado como o vetor de movimento do bloco de predição. Correspondentemente, quando o CTB no qual o bloco de predição está localizado e o CTB no qual o segundo bloco de imagem a ser processado está localizado não estão localizados na mesma linha, o vetor de movimento inicial do bloco de predição é usado como o vetor de movimento do bloco de predição. Com referência à FIG. 21, pode ser entendido que, quando o bloco de árvore de codificação no qual o bloco de predição está localizado e o bloco de árvore de codificação no qual o segundo bloco de imagem a ser processado está localizado estão localizados em linhas diferentes, e o bloco de árvore de codificação no qual o bloco de predição está localizado e o bloco de árvore de codificação no qual o segundo bloco de imagem a ser processado está localizado estão localizados no espaço vizinho das diferentes linhas, o vetor de movimento inicial do bloco de predição é usado como o vetor de movimento do bloco de predição. O espaço vizinho das diferentes linhas pode ser o espaço superior, o espaço superior esquerdo, ou algo semelhante às diferentes linhas. Um intervalo específico do espaço vizinho das diferentes filas não está especificamente limitado nesta modalidade da presente invenção.
[00323] Quando o CTB no qual o bloco de predição está localizado e o CTB no qual o segundo bloco de imagem a ser processado está localizado estão localizados na mesma linha, um processo de atualização no bloco de predição pode não ser concluído. Portanto, o vetor de movimento inicial do bloco de predição pode ser usado diretamente como o vetor de movimento do bloco de predição e não há necessidade de esperar até que o bloco de predição seja atualizado, reduzindo um atraso de decodificação. Quando o CTB no qual o bloco de predição está localizado e o CTB no qual o segundo bloco de imagem a ser processado está localizado não estão localizados na mesma linha, isso indica que há tempo suficiente para concluir um processo de atualização no bloco de predição. Portanto, o bloco de predição tem o vetor de movimento final, e o vetor de movimento final do bloco de predição pode ser usado como o vetor de movimento do bloco de predição. Além disso, como o vetor de movimento final é um vetor de movimento obtido após o vetor de movimento inicial ser refinado, usar o vetor de movimento final como o vetor de movimento do bloco de predição pode garantir a qualidade de decodificação.
[00324] Em algumas modalidades, o intervalo predefinido pode, alternativamente, ser um intervalo de bloco CTB. Em algumas outras modalidades, o intervalo predefinido pode, alternativamente, ser um mesmo intervalo de bloco CTB. A determinação do vetor de movimento do bloco de predição é semelhante à determinação do vetor de movimento do bloco de referência candidato. Para isso, consulte a etapa 1802. Os detalhes não são descritos neste documento novamente.
[00325] As etapas de 2006 e 2007 são um processo no qual o decodificador obtém o vetor de movimento final do segundo bloco de imagem a ser processado.
[00326] 2008: armazene um residual de vetor de movimento do segundo bloco de imagem a ser processado no espaço de armazenamento alvo.
[00327] O espaço de armazenamento alvo é o espaço para armazenar o residual de vetor de movimento pelo decodificador. Por exemplo, o espaço de armazenamento alvo pode ser o armazenamento de imagem de referência 92 na FIG. 3.
[00328] Deve-se observar que, em um modo de mesclagem em uma tecnologia relacionada, o espaço de armazenamento alvo armazena um vetor zero, ou o espaço de armazenamento alvo não armazena dados. No entanto, no modo de mesclagem nesta modalidade deste pedido, o residual de vetor de movimento do bloco de imagem a ser processado é armazenado no espaço de armazenamento alvo, de modo que não apenas o espaço de armazenamento alvo possa ser totalmente utilizado, mas também um o vetor de movimento de outro bloco de imagem pode ser selecionado de maneira flexível quando o vetor de movimento de outro bloco de imagem é necessário para o segundo bloco de imagem a ser processado. Conforme mostrado nas etapas de 2002 e 2007, a eficiência de decodificação do decodificador é melhorada ainda mais.
[00329] Além disso, em algumas implementações, na etapa 2008, o vetor de movimento final do segundo bloco de imagem a ser processado pode, alternativamente, ser usado como o residual de vetor de movimento do segundo bloco de imagem a ser processado e armazenado no espaço de armazenamento alvo, isto é, o vetor de movimento final do segundo bloco de imagem a ser processado é armazenado no espaço de armazenamento alvo e o residual de vetor de movimento do segundo bloco de imagem a ser processado não é armazenado no espaço de armazenamento alvo. Neste caso, quando o vetor de movimento final do segundo bloco de imagem a ser processado é necessário para outro bloco, o vetor de movimento final do segundo bloco de imagem a ser processado pode ser obtido diretamente do espaço de armazenamento alvo do decodificador sem a necessidade de adicionar o vetor de movimento inicial do segundo bloco de imagem a ser processado e o residual de vetor de movimento do segundo bloco de imagem a ser processado.
[00330] Para uma maneira de armazenamento específica nesta etapa de 2008, consulte a FIG. 21.
[00331] Deve-se notar que não há nenhum requisito estrito em uma sequência entre as etapas 2007 e 2008, e o decodificador pode, alternativamente, realizar a etapa 2007 antes da etapa 2008. Isso não é especificamente limitado nesta modalidade deste pedido.
[00332] 2009: o decodificador obtém, com base no residual de vetor de movimento e uma diferença de movimento inicial do segundo bloco de imagem a ser processado, informação de imagem correspondente ao segundo bloco de imagem a ser processado.
[00333] A informação da imagem inclui informação de pixel que é usada para identificar os gráficos originais do segundo bloco de imagem a ser processado.
[00334] O decodificador obtém, com base no residual de vetor de movimento e na diferença de movimento inicial do segundo bloco de imagem a ser processado, a informação de imagem correspondente ao segundo bloco de imagem a ser processado. Para isso, consulte a FIG. 3. Os detalhes não são descritos neste documento novamente.
[00335] Correspondentemente, o decodificador pode obter alternativamente, com base no vetor de movimento final do segundo bloco de imagem a ser processado, a informação de imagem correspondente ao segundo bloco de imagem a ser processado.
[00336] Na implementação anterior, ao decodificar o bloco de decodificação atual, o decodificador usa o vetor de movimento inicial não atualizado do bloco de referência como o vetor de movimento predito do bloco de decodificação atual em vez do vetor de movimento final do bloco de referência. Desta forma, quando o vetor de movimento do bloco de referência é necessário para o bloco de decodificação atual, uma etapa relacionada pode ser realizada sem a necessidade de esperar até que o vetor de movimento final do bloco de referência seja atualizado, garantindo que um atraso de decodificação seja reduzido enquanto a eficiência da decodificação é melhorada porque o vetor de movimento é atualizado.
[00337] Para refletir ainda mais uma maneira de armazenamento do vetor de movimento, uma modalidade específica é usada neste documento para descrever uma etapa de armazenamento. As descrições específicas são as seguintes: no modo de mesclagem, pode haver dois MVs em cada direção de predição, os quais são, respectivamente, a primeira informação de MV e a segunda informação de MV. Por exemplo, a primeira MV e a segunda MV podem ser respectivamente um vetor de movimento inicial do bloco de referência e um vetor de movimento final candidato do bloco de referência. Um processo de derivação de MVD é introduzido no modo de mesclagem. Por exemplo, em um processo de predição para frente, quando o primeiro MV é MV0 e o segundo MV é MV0', existe uma relação de derivação: MV0' = MV0 + (-) MVD0. Ao armazenar dois MVs, por exemplo, um valor de índice de um vetor de movimento inicial e a MVD anterior, ou seja, uma diferença entre as duas MVs, a primeira MV pode ser usada sob uma condição específica e a segunda MV pode ser usada sob uma condição específica, evitando um atraso.
[00338] Para a condição específica, consulte a etapa 1902 ou 2002. Os detalhes não são descritos neste documento novamente.
[00339] Em uma implementação viável, em um modo de não mesclagem, o espaço de armazenamento alvo é usado para armazenar um residual de vetor de movimento do bloco de referência e o residual de vetor de movimento do bloco de referência é uma diferença entre o vetor de movimento final do bloco de referência e um vetor de movimento predito do bloco de referência. No modo de mesclagem, o espaço de armazenamento alvo é usado para armazenar o vetor de movimento final selecionado, ou o espaço de armazenamento alvo é usado para armazenar uma diferença entre o vetor de movimento inicial e o vetor de movimento final selecionado do bloco de referência.
[00340] Outra modalidade deste pedido é a seguinte: como mostrado na FIG. 22, um bloco de codificação atual é um primeiro bloco de codificação, a informação de movimento predito do bloco de codificação atual é obtida, um bloco de referência está em um modo de mesclagem e uma localização de informação de movimento do bloco de referência não está no mesmo intervalo de linha CTB como o bloco de codificação atual. Neste caso, um preditor de vetor de movimento para frente do bloco de codificação atual (-21, 18) é obtido adicionando um vetor de movimento para frente (-22, 18) do bloco de referência e um MVD para frente (1, 0), um preditor de vetor de movimento para trás (1, 12) do bloco de codificação atual é obtido adicionando um vetor de movimento para trás (2, 12) do bloco de referência e um MVD para trás (-1, 0), uma POC de uma imagem na qual o bloco de codificação atual está localizado é 4, uma POC de uma imagem de referência para frente que é indicada por um valor de índice da imagem de referência é 2, e uma POC de uma imagem de referência para trás que é indicada por um valor de índice da imagem de referência é 6. Neste caso, uma POC correspondente ao bloco de codificação atual é 4, uma POC correspondente a um bloco de imagem de referência de predição para frente é 2, e uma POC correspondente a um bloco de imagem de referência de predição para trás é 6.
[00341] (–21, 18) é usado como uma entrada de referência do preditor de vetor de movimento para frente, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para frente. Nesse caso, a primeira precisão é de 1 pixel em um intervalo de 1 pixel. Um primeiro bloco de predição para frente é usado como referência, e um novo bloco de predição para frente correspondente é obtido por meio de cada pesquisa de movimento. (1, 12) é usado como uma entrada de referência do preditor de vetor de movimento para trás, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para trás. Nesse caso, a primeira precisão é de 1 pixel em um intervalo de 1 pixel. Um primeiro bloco de predição para trás é usado como uma referência, e um novo bloco de predição para trás correspondente é obtido através de cada pesquisa de movimento. O novo bloco de predição para frente é comparado com o novo bloco de predição para trás, para obter um bloco de predição para frente com uma diferença mínima e um bloco de predição para trás com uma diferença mínima, e um preditor de vetor de movimento para frente correspondente ao bloco de predição para frente e um preditor de vetor de movimento para trás correspondente ao bloco de predição para trás é usado como preditor de vetor de movimento alvo, e é assumido como sendo (–21, 19) e (1, 11), respectivamente.
[00342] Uma MVD para frente do bloco de codificação atual (0, 1) é obtida subtraindo o preditor de vetor de movimento para frente (-21, 18) do preditor de vetor de movimento alvo para frente (-21, 19) e uma MVD para trás do bloco de codificação atual (0, -1) é obtido subtraindo o preditor de vetor de movimento para trás (1, 12) do preditor de vetor de movimento alvo para trás (1, 11). O método de cálculo de MVD
1 é o seguinte: MVD0 = (-21, 19) - (-21, 18) e MVD1 = (1, 11) - (1, 12); ou MVD0 = (-21, 19) - (-21, 18) e MVD1 = – MVD0.
[00343] Além disso, a predição para frente e a predição para trás são realizadas separadamente no primeiro bloco de codificação com base nos preditores de vetor de movimento alvo, blocos de predição para frente e blocos de predição para trás obtidos são usados como blocos de predição de decodificação alvo, e os blocos de predição do bloco de codificação atual são atualizados.
[00344] Deve-se notar que, quando a pesquisa de movimento com a primeira precisão é realizada no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás, a primeira precisão pode ser qualquer precisão especificada, por exemplo, pode ser precisão de pixel inteiro, precisão de 1/2 pixel, precisão de 1/4 de pixel, ou precisão de 1/8 de pixel.
[00345] Outra modalidade deste pedido é a seguinte: como mostrado na FIG. 22, um bloco de codificação atual é um primeiro bloco de codificação, a informação de movimento predito do bloco de codificação atual é obtida, um bloco de referência está em um modo de mesclagem e uma localização de informação de movimento do bloco de referência não está no mesmo intervalo de CTB que o bloco de codificação atual. Neste caso, um preditor de vetor de movimento para frente do bloco de codificação atual (-21, 18) é obtido adicionando um vetor de movimento para frente (-22, 18) do bloco de referência e um MVD para frente (1, 0), um preditor de vetor de movimento para trás (1, 12) do bloco de codificação atual é obtido adicionando um vetor de movimento para trás (2, 12)
do bloco de referência e um MVD para trás (-1, 0), uma POC de uma imagem na qual o bloco de codificação atual está localizado é 4, uma POC de uma imagem de referência para frente que é indicada por um valor de índice da imagem de referência é 2, e uma POC de uma imagem de referência para trás que é indicada por um valor de índice da imagem de referência é 6. Neste caso, uma POC correspondente ao bloco de codificação atual é 4, uma POC correspondente a um bloco de imagem de referência de predição para frente é 2, e uma POC correspondente a um bloco de imagem de referência de predição para trás é 6.
[00346] (–21, 18) é usado como uma entrada de referência do preditor de vetor de movimento para frente, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para frente. Nesse caso, a primeira precisão é de 1 pixel em um intervalo de 1 pixel. Um primeiro bloco de predição para frente é usado como referência, e um novo bloco de predição para frente correspondente é obtido por meio de cada pesquisa de movimento. (1, 12) é usado como uma entrada de referência do preditor de vetor de movimento para trás, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para trás. Nesse caso, a primeira precisão é de 1 pixel em um intervalo de 1 pixel. Um primeiro bloco de predição para trás é usado como uma referência, e um novo bloco de predição para trás correspondente é obtido através de cada pesquisa de movimento. O novo bloco de predição para frente é comparado com o novo bloco de predição para trás, para obter um bloco de predição para frente com uma diferença mínima e um bloco de predição para trás com uma diferença mínima, e um preditor de vetor de movimento para frente correspondente ao bloco de predição para frente e um preditor de vetor de movimento para trás correspondente ao bloco de predição para trás é usado como preditor de vetor de movimento alvo, e é assumido como sendo (–21, 19) e (1, 11), respectivamente.
[00347] Uma MVD para frente do bloco de codificação atual (0, 1) é obtida subtraindo o preditor de vetor de movimento para frente (-21, 18) do preditor de vetor de movimento alvo para frente (-21, 19) e uma MVD para trás do bloco de codificação atual (0, -1) é obtido subtraindo o preditor de vetor de movimento para trás (1, 12) do preditor de vetor de movimento alvo para trás (1, 11). O método de cálculo de MVD 1 é o seguinte: MVD0 = (-21, 19) - (-21, 18) e MVD1 = (1, 11) - (1, 12); ou MVD0 = (-21, 19) - (-21, 18) e MVD1 = –MVD0.
[00348] Além disso, a predição para frente e a predição para trás são realizadas separadamente no primeiro bloco de codificação com base nos preditores de vetor de movimento alvo, blocos de predição para frente e blocos de predição para trás obtidos são usados como blocos de predição de decodificação alvo, e os blocos de predição do bloco de codificação atual são atualizados.
[00349] Deve-se notar que, quando a pesquisa de movimento com a primeira precisão é realizada no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás, a primeira precisão pode ser qualquer precisão especificada, por exemplo, pode ser precisão de pixel inteiro, precisão de 1/2 pixel, precisão de 1/4 de pixel, ou precisão de 1/8 de pixel.
[00350] Outra modalidade deste pedido é a seguinte: como mostrado na FIG. 22, um bloco de codificação atual é um primeiro bloco de codificação, a informação de movimento predito do bloco de codificação atual é obtida, um bloco de referência está em um modo de mesclagem e uma localização de informação de movimento do bloco de referência não está no mesmo intervalo de linha CTB como o bloco de codificação atual. Neste caso, um preditor de vetor de movimento para frente do bloco de codificação atual (-21, 18) é obtido adicionando um vetor de movimento para frente (-22, 18) do bloco de referência e um MVD para frente (1, 0), um preditor de vetor de movimento para trás (1, 12) do bloco de codificação atual é obtido adicionando um vetor de movimento para trás (2, 12) do bloco de referência e um MVD para trás (-1, 0), uma POC de uma imagem na qual o bloco de codificação atual está localizado é 4, uma POC de uma imagem de referência para frente que é indicada por um valor de índice da imagem de referência é 2, e uma POC de uma imagem de referência para trás que é indicada por um valor de índice da imagem de referência é 6. Neste caso, uma POC correspondente ao bloco de codificação atual é 4, uma POC correspondente a um bloco de imagem de referência de predição para frente é 2, e uma POC correspondente a um bloco de imagem de referência de predição para trás é 6.
[00351] (–21, 18) é usado como uma entrada de referência do preditor de vetor de movimento para frente, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para frente. Nesse caso, a primeira precisão é de 1 pixel em um intervalo de 1 pixel. Um primeiro bloco de predição para frente é usado como referência, e um novo bloco de predição para frente correspondente é obtido por meio de cada pesquisa de movimento. (1, 12) é usado como uma entrada de referência do preditor de vetor de movimento para trás, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para trás. Nesse caso, a primeira precisão é de 1 pixel em um intervalo de 1 pixel. Um primeiro bloco de predição para trás é usado como uma referência, e um novo bloco de predição para trás correspondente é obtido através de cada pesquisa de movimento. O novo bloco de predição para frente é comparado com o novo bloco de predição para trás, para obter um bloco de predição para frente com uma diferença mínima e um bloco de predição para trás com uma diferença mínima, e um preditor de vetor de movimento para frente correspondente ao bloco de predição para frente e um preditor de vetor de movimento para trás correspondente ao bloco de predição para trás é usado como preditor de vetor de movimento alvo, e é assumido como sendo (–21, 19) e (1, 11), respectivamente.
[00352] Em seguida, (-21, 19) é usado como uma entrada de referência do preditor de vetor de movimento para frente e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para frente. Nesse caso, a primeira precisão é de 1/2 pixel. Um primeiro bloco de predição para frente é usado como referência, e um novo bloco de predição para frente correspondente é obtido por meio de cada pesquisa de movimento. (1, 11) é usado como uma entrada de referência do preditor de vetor de movimento para trás, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para trás. Nesse caso, a primeira precisão é de 1/2 pixel. Um primeiro bloco de predição para trás é usado como uma referência, e um novo bloco de predição para trás correspondente é obtido através de cada pesquisa de movimento. O novo bloco de predição para frente é comparado com o novo bloco de predição para trás, para obter um bloco de predição para frente com uma diferença mínima e um bloco de predição para trás com uma diferença mínima, e um preditor de vetor de movimento para frente correspondente ao bloco de predição para frente e um preditor de vetor de movimento para trás correspondente ao bloco de predição para trás são usados como preditores de vetor de movimento alvo.
[00353] Uma MVD para frente do bloco de codificação atual (0, 1) é obtida subtraindo o preditor de vetor de movimento para frente (-21, 18) do preditor de vetor de movimento alvo para frente (-21, 19) e uma MVD para trás do bloco de codificação atual (0, -1) é obtido subtraindo o preditor de vetor de movimento para trás (1, 12) do preditor de vetor de movimento alvo para trás (1, 11). O método de cálculo de MVD 1 é o seguinte: MVD0 = (-21, 19) - (-21, 18) e MVD1 = (1, 11) - (1, 12); ou MVD0 = (-21, 19) - (-21, 18) e MVD1 = – MVD0.
[00354] Além disso, a predição para frente e a predição para trás são realizadas separadamente no primeiro bloco de codificação com base nos preditores de vetor de movimento alvo, blocos de predição para frente e blocos de predição para trás obtidos são usados como blocos de predição de decodificação alvo, e os blocos de predição do bloco de codificação atual são atualizados.
[00355] Deve-se notar que, quando a pesquisa de movimento com a primeira precisão é realizada no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás, a primeira precisão pode ser qualquer precisão especificada, por exemplo, pode ser precisão de pixel inteiro, precisão de 1/2 pixel, precisão de 1/4 de pixel, ou precisão de 1/8 de pixel.
[00356] Outra modalidade deste pedido é a seguinte: um bloco de codificação atual é um primeiro bloco de codificação, a informação de movimento predito do bloco de codificação atual é obtida. Neste caso, um preditor de vetor de movimento para frente do bloco de codificação atual (-21, 18) é um vetor de movimento para frente (-21, 18) de um bloco de referência, um preditor de vetor de movimento para trás (1, 12) do bloco de codificação atual é um vetor de movimento para trás (1, 12) do bloco de referência, uma POC de uma imagem na qual o bloco de codificação atual está localizado é 4, uma POC de uma imagem de referência para frente que é indicado por um valor de índice da imagem de referência é 2, e uma POC de uma imagem de referência para trás que é indicada por um valor de índice da imagem de referência é 6. Neste caso, uma POC correspondente ao bloco de codificação atual é 4, uma POC correspondente a um bloco de imagem de referência de predição para frente é 2, e uma POC correspondente a um bloco de imagem de referência de predição para trás é 6.
[00357] (–21, 18) é usado como uma entrada de referência do preditor de vetor de movimento para frente, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para frente. Nesse caso, a primeira precisão é de 1 pixel em um intervalo de 1 pixel.
Um primeiro bloco de predição para frente é usado como referência, e um novo bloco de predição para frente correspondente é obtido por meio de cada pesquisa de movimento. (1, 12) é usado como uma entrada de referência do preditor de vetor de movimento para trás, e a pesquisa de movimento com primeira precisão é realizada no bloco de imagem de referência de predição para trás. Nesse caso, a primeira precisão é de 1 pixel em um intervalo de 1 pixel. Um primeiro bloco de predição para trás é usado como uma referência, e um novo bloco de predição para trás correspondente é obtido através de cada pesquisa de movimento. O novo bloco de predição para frente é comparado com o novo bloco de predição para trás, para obter um bloco de predição para frente com uma diferença mínima e um bloco de predição para trás com uma diferença mínima, e um preditor de vetor de movimento para frente correspondente ao bloco de predição para frente e um preditor de vetor de movimento para trás correspondente ao bloco de predição para trás é usado como preditor de vetor de movimento alvo, e é assumido como sendo (–21, 19) e (1, 11), respectivamente.
[00358] Uma MVD para frente do bloco de codificação atual (0, 1) é obtida subtraindo o preditor de vetor de movimento para frente (-21, 18) do preditor de vetor de movimento alvo para frente (-21, 19) e uma MVD para trás do bloco de codificação atual (0, -1) é obtido subtraindo o preditor de vetor de movimento para trás (1, 12) do preditor de vetor de movimento alvo para trás (1, 11). O método de cálculo de MVD 1 é o seguinte: MVD0 = (-21, 19) - (-21, 18) e MVD1 = (1, 11) - (1, 12); ou MVD0 = (-21, 19) - (-21, 18) e MVD1 = –MVD0.
[00359] Além disso, a predição para frente e a predição para trás são realizadas separadamente no primeiro bloco de codificação com base nos preditores de vetor de movimento alvo, blocos de predição para frente e blocos de predição para trás obtidos são usados como blocos de predição de decodificação alvo, e os blocos de predição do bloco de codificação atual são atualizados.
[00360] Deve-se notar que, quando a pesquisa de movimento com a primeira precisão é realizada no bloco de imagem de referência de predição para frente e no bloco de imagem de referência de predição para trás, a primeira precisão pode ser qualquer precisão especificada, por exemplo, pode ser precisão de pixel inteiro, precisão de 1/2 pixel, precisão de 1/4 de pixel, ou precisão de 1/8 de pixel.
[00361] Em algumas modalidades, o bloco de imagem a ser processado pode incluir uma pluralidade de sub-blocos e um codec pode obter um vetor de movimento final do bloco de imagem a ser processado com base em um vetor de movimento final de cada sub-bloco. Em uma implementação possível, cada sub-bloco tem um vetor de movimento inicial e uma pluralidade de vetores de deslocamento predefinidos do sub-bloco. O codec pode adicionar separadamente um vetor de movimento inicial e uma pluralidade de vetores de deslocamento predefinidos de qualquer um da pluralidade de sub-blocos para obter uma pluralidade de vetores de movimento finais candidatos de qualquer sub-bloco. O codec usa um vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de vetores de movimento finais candidatos de qualquer sub-bloco como um vetor de movimento final de qualquer sub-bloco. Da mesma forma, o codec pode obter um vetor de movimento final de cada sub-bloco e, em seguida, o codec pode obter um vetor de movimento final do bloco de imagem a ser processado com base no vetor de movimento final de cada sub-bloco. Um processo de obtenção do vetor de movimento final do bloco de imagem a ser processado com base no vetor de movimento final de cada sub-bloco não é especificamente limitado nesta modalidade da presente invenção.
[00362] Deve-se notar que, antes de obter a pluralidade de vetores de movimento finais candidatos de qualquer sub- bloco, o codec precisa primeiro determinar o vetor de movimento inicial e a pluralidade de vetores de deslocamento predefinidos de qualquer sub-bloco. Uma maneira de determinar o vetor de movimento inicial de qualquer sub- bloco é semelhante à maneira de determinar o vetor de movimento inicial do bloco de imagem a ser processado e não é descrita nesta modalidade da presente invenção. Além disso, uma maneira de determinar a pluralidade de vetores de deslocamento predefinidos de qualquer sub-bloco é semelhante à maneira de determinar a pluralidade de vetores de deslocamento predefinidos do bloco de imagem a ser processado e não é descrita nesta modalidade da presente invenção.
[00363] FIG. 23 é um diagrama de blocos esquemático de um aparelho de obtenção de vetor de movimento 2300 de acordo com uma modalidade deste pedido. O aparelho 2300 inclui: um módulo de determinação 2301, configurado para determinar um bloco de referência de um bloco de imagem a ser processado, onde o bloco de referência e o bloco de imagem a ser processado têm uma correlação temporal ou espacial predefinida, o bloco de referência tem um vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido, o vetor de movimento inicial do bloco de referência é obtido com base em um vetor de movimento predito do bloco de referência e um bloco de predição do bloco de referência é obtido com base no vetor de movimento inicial e aquele ou mais deslocamentos de vetor de movimento predefinido; e um módulo de obtenção 2302, configurado para usar o vetor de movimento inicial do bloco de referência como um vetor de movimento predito do bloco de imagem a ser processado.
[00364] Em uma implementação viável, o módulo de obtenção 2302 é ainda configurado para: usar o vetor de movimento predito do bloco de referência como o vetor de movimento inicial do bloco de referência; ou adicionar o vetor de movimento predito do bloco de referência e uma diferença de vetor de movimento do bloco de referência para obter o vetor de movimento inicial do bloco de referência.
[00365] Em uma implementação viável, o módulo de obtenção 2302 é ainda configurado para: obter, a partir de um quadro de referência do bloco de referência, um bloco de imagem indicado pelo vetor de movimento inicial do bloco de referência, para servir como um bloco de predição temporário do bloco de referência; adicionar o vetor de movimento inicial e um ou mais deslocamentos de vetor de movimento predefinido do bloco de referência para obter um ou mais vetores de movimento reais, onde cada vetor de movimento real indica uma localização de pesquisa; obter um ou mais blocos de predição candidatos em uma ou mais localizações de pesquisa indicadas por um ou mais vetores de movimento reais, onde cada localização de pesquisa corresponde a um bloco de predição candidato; e selecionar, a partir de um ou mais blocos de predição candidatos, um bloco de predição candidato com uma diferença de pixel mínima do bloco de predição temporário como o bloco de predição do bloco de referência.
[00366] Em uma implementação viável, o aparelho 2300 é usado para predição bidirecional, o quadro de referência inclui um quadro de referência de primeira direção e um quadro de referência de segunda direção, o vetor de movimento inicial inclui um vetor de movimento inicial de primeira direção e um inicial de segunda direção vetor de movimento e o módulo de obtenção 2302 é especificamente configurado para: obter, a partir do quadro de referência de primeira direção do bloco de referência, um primeiro bloco de imagem indicado pelo vetor de movimento inicial de primeira direção do bloco de referência; obter, a partir do quadro de referência de segunda direção do bloco de referência, um segundo bloco de imagem indicado pelo vetor de movimento inicial de segunda direção do bloco de referência; e realizar processamento ponderado no primeiro bloco de imagem e no segundo bloco de imagem para obter o bloco de predição temporário do bloco de referência.
[00367] Em uma implementação viável, o módulo de obtenção 2302 é especificamente configurado para usar o vetor de movimento predito do bloco de imagem a ser processado como um vetor de movimento inicial do bloco de imagem a ser processado.
[00368] Em uma implementação viável, o módulo de obtenção 2302 é especificamente configurado para adicionar o vetor de movimento predito do bloco de imagem a ser processado e uma diferença de vetor de movimento do bloco de imagem a ser processado para obter um vetor de movimento inicial do bloco de imagem a ser processado.
[00369] Em uma implementação viável, o aparelho 2300 é usado para decodificação de vídeo e a diferença do vetor de movimento do bloco de imagem a ser processado é obtida analisando a primeira informação de identificação em um fluxo de bits.
[00370] Em uma implementação viável, o aparelho 2300 é usado para decodificação de vídeo e o módulo de determinação 2301 é especificamente configurado para: analisar um fluxo de bits para obter a segunda informação de identificação; e determinar o bloco de referência do bloco de imagem a ser processado com base na segunda informação de identificação.
[00371] Em uma implementação viável, o aparelho 2300 é usado para codificação de vídeo e o módulo de determinação 2301 é especificamente configurado para: selecionar, a partir de um ou mais blocos de referência candidatos do bloco de imagem a ser processado, um bloco de referência candidato com um mínimo custo de distorção de taxa como o bloco de referência do bloco de imagem a ser processado.
[00372] FIG. 24 é um diagrama de blocos esquemático de um dispositivo de codificação de vídeo de acordo com uma modalidade deste pedido. O dispositivo 2400 pode ser aplicado a um codificador ou pode ser aplicado a um decodificador. O dispositivo 2400 inclui um processador 2401 e uma memória
2402. O processador 2401 e a memória 2402 estão conectados um ao outro (por exemplo, por meio de um barramento 2404). Em uma possível implementação, o dispositivo 2400 pode incluir ainda um transceptor 2403. O transceptor 2403 está conectado ao processador 2401 e à memória 2402 e é configurado para receber / enviar dados.
[00373] A memória 2402 inclui, mas não está limitada a uma memória de acesso aleatório (random access memory, RAM), uma memória somente leitura (read-only memory, ROM), uma memória somente leitura programável apagável (erasable programmable read only memory, EPROM), ou uma memória somente leitura de disco compacto (compact disc read-only memory, CD-ROM). A memória 2402 é configurada para armazenar código de programa relacionado e dados de vídeo.
[00374] O processador 2401 pode ser uma ou mais unidades centrais de processamento (central processing unit, CPU). Quando o processador 2401 é uma CPU, a CPU pode ser uma CPU de um único núcleo ou uma CPU de múltiplos núcleos.
[00375] O processador 2401 é configurado para ler o código do programa armazenado na memória 2402, para realizar operações em qualquer solução de implementação correspondente à FIG. 13 à FIG. 20 e várias implementações viáveis da solução de implementação.
[00376] Por exemplo, uma modalidade deste pedido fornece ainda um meio de armazenamento legível por computador. O meio de armazenamento legível por computador armazena uma instrução. Quando a instrução é executada em um computador, o computador é habilitado para realizar operações em qualquer solução de implementação correspondente à FIG. 13 à FIG. 20 e várias implementações viáveis da solução de implementação.
[00377] Por exemplo, uma modalidade deste pedido fornece ainda um produto de programa de computador incluindo uma instrução. Quando o produto de programa de computador é executado em um computador, o computador é habilitado para realizar operações em qualquer solução de implementação correspondente à FIG. 13 à FIG. 20 e várias implementações viáveis da solução de implementação.
[00378] A FIG. 25 mostra um aparelho de obtenção de vetor de movimento de acordo com uma modalidade deste pedido. O aparelho inclui um módulo de determinação 2501, um primeiro módulo de obtenção 2502 e um segundo módulo de obtenção 2503.
[00379] O módulo de determinação 2501 é configurado para realizar a etapa 1904.
[00380] O primeiro módulo de obtenção 2502 é configurado para realizar a etapa 1907.
[00381] O segundo módulo de obtenção 2503 é configurado para realizar a etapa 1907.
[00382] Opcionalmente, o bloco de referência cair dentro de um intervalo predefinido inclui: um bloco de árvore de codificação CTB no qual o bloco de referência está localizado e um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados na mesma linha; e correspondentemente, que o bloco de referência caia além do intervalo predefinido inclui: o bloco de árvore de codificação no qual o bloco de referência está localizado e o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados em linhas diferentes, referindo-se à etapa 1907.
[00383] Opcionalmente, o bloco de referência cai dentro de um intervalo predefinido inclui: o bloco de referência e o bloco de imagem a ser processado estão localizados em um mesmo bloco de árvore de codificação; e correspondentemente, que o bloco de referência caia além do intervalo predefinido inclui: o bloco de referência e o bloco de imagem a ser processado estão localizados em diferentes blocos de árvore de codificação, referindo-se à etapa 1907.
[00384] Opcionalmente, o bloco de referência cai dentro de um intervalo predefinido inclui: um bloco de árvore de codificação no qual o bloco de referência está localizado é o mesmo que um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, ou um bloco de árvore de codificação no qual o bloco de referência está localizado é um bloco vizinho esquerdo ou vizinho direito de um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado; e correspondentemente, que o bloco de referência caia além do intervalo predefinido inclui: o bloco de árvore de codificação no qual o bloco de referência está localizado não é o mesmo que o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, ou a árvore de codificação bloco no qual o bloco de referência está localizado não é um bloco vizinho à esquerda ou vizinho à direita do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, referindo-se à etapa 1907.
[00385] FIG. 26 mostra um aparelho de determinação de residual de vetor de movimento de acordo com uma modalidade deste pedido. O aparelho inclui um módulo de análise 2601, um módulo de soma 2602, um módulo de determinação 2603 e um módulo de obtenção 2604.
[00386] O módulo de análise 2601 é configurado para realizar a etapa 2001.
[00387] O módulo de soma 2602 é configurado para realizar a etapa 2002.
[00388] O módulo de determinação 2603 é configurado para realizar a etapa 1422.
[00389] O módulo de obtenção 2604 é configurado para realizar a etapa 2008.
[00390] Opcionalmente, o aparelho é usado para inter- predição bidirecional, o vetor de movimento final inclui um primeiro vetor de movimento final e um segundo vetor de movimento final, e o vetor de movimento inicial inclui um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial; o primeiro vetor de movimento final e o primeiro vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma primeira lista de quadros de referência do bloco de imagem a ser processado, e o segundo vetor de movimento final e o segundo vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado; e o uso de uma diferença entre o vetor de movimento final e o vetor de movimento inicial como um residual de vetor de movimento do bloco de imagem a ser processado inclui: usar uma diferença entre o primeiro vetor de movimento final e o primeiro vetor de movimento inicial como um primeiro residual de vetor de movimento do bloco de imagem a ser processado.
[00391] FIG. 27 mostra um aparelho de armazenamento de dados de vetor de movimento de acordo com uma modalidade deste pedido. O aparelho inclui um primeiro módulo de análise 2701, um módulo de obtenção 2702, um segundo módulo de análise 2703 e um módulo de armazenamento 2704.
[00392] O primeiro módulo de análise 2701 é configurado para realizar a etapa 2001.
[00393] O módulo de obtenção 2702 é configurado para realizar a etapa 2007.
[00394] O segundo módulo de análise 2703 é configurado para realizar a etapa 2001.
[00395] O módulo de armazenamento 2704 é configurado para realizar a etapa 2008.
[00396] Uma pessoa versada na técnica pode estar ciente de que, em combinação com os exemplos descritos nas modalidades divulgadas nesta especificação, unidades e etapas de algoritmo podem ser implementadas por hardware eletrônico ou uma combinação de software de computador e hardware eletrônico. Se as funções são realizadas por hardware ou software depende de uma aplicação específica e de uma condição de restrição de projeto das soluções técnicas. Uma pessoa versada na técnica pode usar métodos diferentes para implementar as funções descritas para cada aplicação particular, mas não deve ser considerado que tal implementação vai além do escopo deste pedido.
[00397] Pode ser claramente entendido por uma pessoa versada na técnica que, para fins de descrição conveniente e breve, para processos de trabalho detalhados do sistema, aparelho e unidade anteriores, consulte os processos correspondentes nas modalidades de método anteriores, e os detalhes não são descritos neste documento novamente.
[00398] Todas ou algumas das modalidades anteriores podem ser implementadas por software, hardware, firmware ou qualquer combinação dos mesmos. Quando o software é usado para implementar as modalidades, as modalidades podem ser implementadas completa ou parcialmente na forma de um produto de programa de computador. O produto do programa de computador inclui uma ou mais instruções de computador. Quando a instrução do programa de computador é carregada e executada em um computador, todos ou alguns dos procedimentos ou funções são gerados de acordo com as modalidades deste pedido. O computador pode ser um computador de uso geral, um computador dedicado, uma rede de computadores ou outro aparelho programável. As instruções de computador podem ser armazenadas em um meio de armazenamento legível por computador ou podem ser transmitidas de um meio de armazenamento legível por computador para outro meio de armazenamento legível por computador. Por exemplo, as instruções do computador podem ser transmitidas de uma página da internet, computador, servidor ou centro de dados para outra página da internet, computador, servidor ou centro de dados com fio (por exemplo, um cabo coaxial, uma fibra óptica, ou uma linha de assinante digital) ou sem fio (por exemplo, infravermelho, micro-ondas ou semelhantes). O meio de armazenamento legível por computador pode ser qualquer meio utilizável acessível por um computador ou um dispositivo de armazenamento de dados, como um servidor ou um centro de dados, integrando um ou mais meios utilizáveis. O meio utilizável pode ser um meio magnético (por exemplo, um disquete, um disco rígido ou uma fita magnética), um meio óptico (por exemplo, um disco versátil digital), um meio semicondutor (por exemplo, um unidade de estado sólido) ou semelhantes.
[00399] 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.
[00400] A descrição anterior descreve implementações meramente específicas deste pedido, mas não se destina a limitar o escopo de proteção deste pedido. Qualquer variação ou substituição prontamente percebida por uma pessoa versada na técnica dentro do escopo técnico divulgado neste pedido deve cair dentro do escopo de proteção deste pedido. Portanto, o escopo de proteção deste pedido estará sujeito ao escopo de proteção das reivindicações.
Claims (30)
1. Método de obtenção de vetor de movimento, caracterizado pelo fato de que compreende: determinar um bloco de referência de um bloco de imagem a ser processado, em que o bloco de referência e o bloco de imagem a ser processado estão localizados em um mesmo quadro de imagem; obter um vetor de movimento do bloco de imagem a ser processado com base em um vetor de movimento inicial do bloco de referência quando o bloco de referência cai dentro de um intervalo predefinido, em que o intervalo predefinido é determinado com base em uma localização do bloco de imagem a ser processado; e obter um vetor de movimento do bloco de imagem a ser processado com base em um vetor de movimento final do bloco de referência quando o bloco de referência cai além do intervalo predefinido, em que o vetor de movimento final é obtido com base no vetor de movimento inicial.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que um dos seguintes é satisfeito: em que o bloco de referência cai dentro de um intervalo predefinido compreende: um bloco de árvore de codificação CTB no qual o bloco de referência está localizado e um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados na mesma linha; e correspondentemente, que o bloco de referência cai além do intervalo predefinido compreende: o bloco de árvore de codificação no qual o bloco de referência está localizado e o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados em linhas diferentes; em que o bloco de referência cai dentro de um intervalo predefinido compreende: o bloco de referência e o bloco de imagem a ser processado estão localizados em um mesmo bloco de árvore de codificação; e correspondentemente, que o bloco de referência cai para além do intervalo predefinido compreende: o bloco de referência e o bloco de imagem a ser processado estão localizados em diferentes blocos de árvore de codificação; e em que o bloco de referência cai dentro de um intervalo predefinido compreende um dos seguintes: um bloco de árvore de codificação no qual o bloco de referência está localizado é o mesmo que um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, o bloco de árvore de codificação no qual o bloco de referência está localizado é um bloco vizinho à esquerda do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, e o bloco de árvore de codificação no qual o bloco de referência está localizado é um bloco vizinho à direita do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado; e, correspondentemente, que o bloco de referência cai além do intervalo predefinido compreende um dos seguintes: o bloco de árvore de codificação no qual o bloco de referência está localizado não é o mesmo que o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado , o bloco de árvore de codificação no qual o bloco de referência está localizado não é um vizinho à esquerda do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, e o bloco de árvore de codificação no qual o bloco de referência está localizado não é um bloco vizinho à direita do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o bloco de árvore de codificação no qual o bloco de referência está localizado e o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados em linhas diferentes, e o bloco de árvore de codificação no qual o bloco de referência está localizado satisfez um dos seguintes: o bloco de árvore de codificação no qual o bloco de referência está localizado está acima do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado e o bloco de árvore de codificação no qual o bloco de referência está localizado no canto superior esquerdo do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que a determinação de um bloco de referência de um bloco de imagem a ser processado compreende um dos seguintes: determinar pelo menos um bloco de referência candidato predefinido como o bloco de referência em uma ordem predefinida sequencialmente, em que o bloco de referência candidato compreende um bloco de imagem que tem uma relação de localização espacial predefinida com o bloco de imagem a ser processado; e analisar um fluxo de bits para obter pelo menos um pedaço da primeira informação de identificação; e determinar o bloco de referência a partir de uma pluralidade de blocos de referência candidatos do bloco de imagem a ser processado com base em pelo menos um pedaço da primeira informação de identificação, em que o bloco de referência candidato compreende um bloco de imagem que tem uma relação de localização espacial predefinida com o bloco de imagem a ser processado.
5. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o vetor de movimento final ser obtido com base no vetor de movimento inicial compreende: adicionar separadamente o vetor de movimento inicial e uma pluralidade de vetores de deslocamento predefinidos para obter uma pluralidade de vetores de movimento finais candidatos; e determinar um vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de vetores de movimento finais candidatos como o vetor de movimento final.
6. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o método é usado para inter-predição bidirecional, o vetor de movimento final compreende um primeiro vetor de movimento final e um segundo vetor de movimento final, e o vetor de movimento inicial compreende um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial; o primeiro vetor de movimento final e o primeiro vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma primeira lista de quadros de referência do bloco de imagem a ser processado, e o segundo vetor de movimento final e o segundo vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado; e que o vetor de movimento final é obtido com base no vetor de movimento inicial compreende: adicionar separadamente o primeiro vetor de movimento inicial e uma pluralidade de vetores de deslocamento predefinidos para obter uma pluralidade de primeiros vetores de movimento finais candidatos; determinar um primeiro vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de primeiros vetores de movimento finais candidatos como o primeiro vetor de movimento final, em que o primeiro vetor de movimento final corresponde a um primeiro vetor de deslocamento na pluralidade de vetores de deslocamento predefinidos; obter um segundo vetor de deslocamento, em que um tamanho do segundo vetor de deslocamento é igual ao do primeiro vetor de deslocamento e uma direção do segundo vetor de deslocamento é oposta àquela do primeiro vetor de deslocamento; e adicionar o segundo vetor de movimento inicial e o segundo vetor de deslocamento para obter o segundo vetor de movimento final.
7. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o método é usado para inter-predição bidirecional, o vetor de movimento final compreende um primeiro vetor de movimento final e um segundo vetor de movimento final, e o vetor de movimento inicial compreende um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial; o primeiro vetor de movimento final e o primeiro vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma primeira lista de quadros de referência do bloco de imagem a ser processado, e o segundo vetor de movimento final e o segundo vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado; e que o vetor de movimento final é obtido com base no vetor de movimento inicial compreende: adicionar separadamente o primeiro vetor de movimento inicial e uma pluralidade de primeiros vetores de deslocamento predefinidos para obter uma pluralidade de primeiros vetores de movimento finais candidatos; determinar um primeiro vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de primeiros vetores de movimento finais candidatos como o primeiro vetor de movimento final; adicionar separadamente o segundo vetor de movimento inicial e uma pluralidade de segundos vetores de deslocamento predefinidos para obter uma pluralidade de segundos vetores de movimento finais candidatos; e determinar um segundo vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de segundos vetores de movimento finais candidatos como o segundo vetor de movimento final.
8. Método de determinação de residual de vetor de movimento, caracterizado pelo fato de que compreende: analisar um fluxo de bits para obter a segunda informação de identificação, em que a segunda informação de identificação é usada para determinar um vetor de movimento inicial de um bloco de imagem a ser processado; adicionar separadamente o vetor de movimento inicial e uma pluralidade de vetores de deslocamento predefinidos para obter uma pluralidade de vetores de movimento finais candidatos; determinar um vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de vetores de movimento finais candidatos como um vetor de movimento final; e usar um dos seguintes como um residual de vetor de movimento do bloco de imagem a ser processado: uma diferença entre o vetor de movimento final e o vetor de movimento inicial, e o vetor de movimento final.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o método é usado para inter-predição bidirecional, o vetor de movimento final compreende um primeiro vetor de movimento final e um segundo vetor de movimento final, e o vetor de movimento inicial compreende um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial; o primeiro vetor de movimento final e o primeiro vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma primeira lista de quadros de referência do bloco de imagem a ser processado, e o segundo vetor de movimento final e o segundo vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado; e o uso de uma diferença entre o vetor de movimento final e o vetor de movimento inicial como um residual de vetor de movimento do bloco de imagem a ser processado compreende: usar uma diferença entre o primeiro vetor de movimento final e o primeiro vetor de movimento inicial como um primeiro residual de vetor de movimento do bloco de imagem a ser processado.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que usar uma diferença entre o vetor de movimento final e o vetor de movimento inicial como um residual de vetor de movimento do bloco de imagem a ser processado compreende ainda: usar uma diferença entre o segundo vetor de movimento final e o segundo vetor de movimento inicial como um segundo residual de vetor de movimento do bloco de imagem a ser processado.
11. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que usar o vetor de movimento final como um residual de vetor de movimento do bloco de imagem a ser processado, compreende: usar o primeiro vetor de movimento final como o primeiro residual de vetor de movimento do bloco de imagem a ser processado.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que usar o vetor de movimento final como um residual de vetor de movimento do bloco de imagem a ser processado compreende ainda: usar o segundo vetor de movimento final como um segundo residual de vetor de movimento do bloco de imagem a ser processado.
13. Método de armazenamento de dados de vetor de movimento, caracterizado pelo fato de que compreende:
analisar um fluxo de bits para obter a segunda informação de identificação e a terceira informação de identificação, em que a segunda informação de identificação é usada para determinar um vetor de movimento predito inicial de um bloco de imagem a ser processado; obter um vetor de movimento predito final com base no vetor de movimento predito inicial e uma pluralidade de vetores de deslocamento predefinidos; quando a terceira informação de identificação indica que o fluxo de bits transporta um residual de vetor de movimento do bloco de imagem a ser processado, analisando o fluxo de bits para obter o residual de vetor de movimento, e armazenando o residual de vetor de movimento no espaço de armazenamento alvo; e quando a terceira informação de identificação indica que o fluxo de bits não transporta nenhum residual de vetor de movimento do bloco de imagem a ser processado, armazenando um dos seguintes no espaço de armazenamento alvo: uma diferença entre o vetor de movimento predito final e o vetor de movimento predito inicial, e o vetor de movimento predito final.
14. Método, de acordo com a reivindicação 13, caracterizado pelo fato de que a terceira informação de identificação indica que o fluxo de bits transportar um residual de vetor de movimento do bloco de imagem a ser processado compreende: a terceira informação de identificação indica que um modo de predição do bloco de imagem a ser processado é um modo AMVP.
15. Método, de acordo com a reivindicação 13 ou 14,
caracterizado pelo fato de que a terceira informação de identificação indica que o fluxo de bits não transportar nenhum residual de vetor de movimento do bloco de imagem a ser processado compreende: a terceira informação de identificação indica que o modo de predição do bloco de imagem a ser processado é um de um modo de mesclagem e um modo de salto.
16. Método, de acordo com qualquer uma das reivindicações 13 a 15, caracterizado pelo fato de que a obtenção de um vetor de movimento predito final com base no vetor de movimento predito inicial e uma pluralidade de vetores de deslocamento predefinidos compreende: adicionar separadamente o vetor de movimento inicial e a pluralidade de vetores de deslocamento predefinidos para obter uma pluralidade de vetores de movimento finais candidatos; e determinar um vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de vetores de movimento finais candidatos como o vetor de movimento final.
17. Aparelho de obtenção de vetor de movimento, caracterizado por compreender: um módulo de determinação, configurado para determinar um bloco de referência de um bloco de imagem a ser processado, em que o bloco de referência e o bloco de imagem a ser processado estão localizados em um mesmo quadro de imagem; um primeiro módulo de obtenção, configurado para: quando o bloco de referência cai dentro de um intervalo predefinido, obter um vetor de movimento do bloco de imagem a ser processado com base em um vetor de movimento inicial do bloco de referência, em que o intervalo predefinido é determinado com base em uma localização do bloco de imagem a ser processado; e um segundo módulo de obtenção, configurado para: quando o bloco de referência cai além do intervalo predefinido, obter um vetor de movimento do bloco de imagem a ser processado com base em um vetor de movimento final do bloco de referência, em que o vetor de movimento final é obtido com base no vetor de movimento inicial.
18. Aparelho, de acordo com a reivindicação 17, caracterizado pelo fato de que um dos seguintes é satisfeito: em que o bloco de referência cai dentro de um intervalo predefinido compreende: um bloco de árvore de codificação CTB no qual o bloco de referência está localizado e um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados na mesma linha; e correspondentemente, que o bloco de referência cai além do intervalo predefinido compreende: o bloco de árvore de codificação no qual o bloco de referência está localizado e o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado estão localizados em linhas diferentes; em que o bloco de referência cai dentro de um intervalo predefinido compreende: o bloco de referência e o bloco de imagem a ser processado estão localizados em um mesmo bloco de árvore de codificação; e correspondentemente, que o bloco de referência cai para além do intervalo predefinido compreende: o bloco de referência e o bloco de imagem a ser processado estão localizados em diferentes blocos de árvore de codificação; e em que o bloco de referência cai dentro de um intervalo predefinido compreende um dos seguintes: um bloco de árvore de codificação no qual o bloco de referência está localizado é o mesmo que um bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, o bloco de árvore de codificação no qual o bloco de referência está localizado é um bloco vizinho à esquerda do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, e o bloco de árvore de codificação no qual o bloco de referência está localizado é um bloco vizinho à direita do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado; e, correspondentemente, que o bloco de referência cai além do intervalo predefinido compreende um dos seguintes: o bloco de árvore de codificação no qual o bloco de referência está localizado não é o mesmo que o bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, o bloco de árvore de codificação no qual o bloco de referência está localizado não é um vizinho à esquerda do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado, e o bloco de árvore de codificação no qual o bloco de referência está localizado não é um bloco vizinho à direita do bloco de árvore de codificação no qual o bloco de imagem a ser processado está localizado.
19. Aparelho de determinação de residual de vetor de movimento, caracterizado pelo fato de que compreende: um módulo de análise, configurado para analisar um fluxo de bits para obter a segunda informação de identificação, em que a segunda informação de identificação é usada para determinar um vetor de movimento inicial de um bloco de imagem a ser processado; um módulo de soma, configurado para adicionar separadamente o vetor de movimento inicial e uma pluralidade de vetores de deslocamento predefinidos para obter uma pluralidade de vetores de movimento finais candidatos; um módulo de determinação, configurado para determinar um vetor de movimento final candidato correspondendo a um custo de distorção mínimo na pluralidade de vetores de movimento finais candidatos como o vetor de movimento final; e um módulo de obtenção, configurado para: usar um dos seguintes como um residual de vetor de movimento do bloco de imagem a ser processado: uma diferença entre o vetor de movimento final e o vetor de movimento inicial, e o vetor de movimento final.
20. Aparelho, de acordo com a reivindicação 19, caracterizado pelo fato de que o aparelho é usado para inter- predição bidirecional, o vetor de movimento final compreende um primeiro vetor de movimento final e um segundo vetor de movimento final, e o vetor de movimento inicial compreende um primeiro vetor de movimento inicial e um segundo vetor de movimento inicial; o primeiro vetor de movimento final e o primeiro vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma primeira lista de quadros de referência do bloco de imagem a ser processado, e o segundo vetor de movimento final e o segundo vetor de movimento inicial indicam um bloco de compensação de movimento com base em uma segunda lista de quadros de referência do bloco de imagem a ser processado; e em que o módulo de obtenção é ainda configurado para: usar uma diferença entre o primeiro vetor de movimento final e o primeiro vetor de movimento inicial como um primeiro residual de vetor de movimento do bloco de imagem a ser processado.
21. Aparelho, de acordo com a reivindicação 20, caracterizado pelo fato de que o módulo de obtenção é ainda configurado para: usar uma diferença entre o segundo vetor de movimento final e o segundo vetor de movimento inicial como um segundo residual de vetor de movimento do bloco de imagem a ser processado.
22. Aparelho, de acordo com a reivindicação 20, caracterizado pelo módulo de obtenção ser ainda configurado para: usar o primeiro vetor de movimento final como o primeiro residual de vetor de movimento do bloco de imagem a ser processado.
23. Aparelho, de acordo com a reivindicação 20, caracterizado pelo módulo de obtenção ser ainda configurado para: usar o segundo vetor de movimento final como um segundo residual de vetor de movimento do bloco de imagem a ser processado.
24. Aparelho de armazenamento de dados de vetor de movimento, caracterizado pelo fato de que compreende: um primeiro módulo de análise, configurado para analisar um fluxo de bits para obter a segunda informação de identificação e a terceira informação de identificação, em que a segunda informação de identificação é usada para determinar um vetor de movimento predito inicial de um bloco de imagem a ser processado; um módulo de obtenção, configurado para obter um vetor de movimento predito final com base no vetor de movimento predito inicial e uma pluralidade de vetores de deslocamento predefinidos; um segundo módulo de análise, configurado para: quando a terceira informação de identificação indica que o fluxo de bits transporta um residual de vetor de movimento do bloco de imagem a ser processado, analisa o fluxo de bits para obter o residual de vetor de movimento, e armazena o residual de vetor de movimento no espaço de armazenamento alvo; e um módulo de armazenamento, configurado para: quando a terceira informação de identificação indica que o fluxo de bits não transporta nenhum residual de vetor de movimento do bloco de imagem a ser processado, armazenar um dos seguintes no espaço de armazenamento alvo: uma diferença entre o vetor de movimento predito final e o vetor de movimento predito inicial, e o vetor de movimento predito final.
25. Dispositivo de computador, caracterizado pelo dispositivo de computador compreender um processador e uma memória, a memória armazena pelo menos uma instrução, e a instrução é carregada e executada pelo processador para implementar as operações realizadas no método de obtenção de vetor de movimento conforme definido em qualquer uma das reivindicações 1 a 7.
26. Dispositivo de computador, caracterizado pelo dispositivo de computador compreender um processador e uma memória, a memória armazena pelo menos uma instrução e a instrução é carregada e executada pelo processador para implementar as operações realizadas no método de determinação de residual do vetor de movimento conforme definido em qualquer uma das reivindicações 8 a 12.
27. Dispositivo de computador, caracterizado pelo fato de que o dispositivo de computador compreende um processador e uma memória, a memória armazena pelo menos uma instrução, e a instrução é carregada e executada pelo processador para implementar as operações realizadas no método de armazenamento de dados de vetor de movimento conforme definido em qualquer uma das reivindicações 13 a 16.
28. Meio de armazenamento legível por computador, caracterizado pelo fato de que o meio de armazenamento armazena pelo menos uma instrução, e a instrução é carregada e executada por um processador para implementar as operações realizadas no método de obtenção de vetor de movimento conforme definido em qualquer uma das reivindicações 1 a 7.
29. Meio de armazenamento legível por computador, caracterizado pelo fato de que o meio de armazenamento armazena pelo menos uma instrução, e a instrução é carregada e executada por um processador para implementar as operações realizadas no método de determinação de residual do vetor de movimento conforme definido em qualquer uma das reivindicações 8 a 12.
30. Meio de armazenamento legível por computador, caracterizado pelo fato de que o meio de armazenamento armazena pelo menos uma instrução, e a instrução é carregada e executada por um processador para implementar as operações realizadas no método de armazenamento de dados de vetor de movimento conforme definido em qualquer uma das reivindicações 13 a 16.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811020181 | 2018-09-03 | ||
CN201811020181.9 | 2018-09-03 | ||
CN201811271726.3A CN110876059B (zh) | 2018-09-03 | 2018-10-29 | 运动矢量的获取方法、装置、计算机设备及存储介质 |
CN201811271726.3 | 2018-10-29 | ||
PCT/CN2019/091308 WO2020048180A1 (zh) | 2018-09-03 | 2019-06-14 | 运动矢量的获取方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112021003965A2 true BR112021003965A2 (pt) | 2021-05-25 |
Family
ID=69716270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112021003965-1A BR112021003965A2 (pt) | 2018-09-03 | 2019-06-14 | método e aparelho de obtenção de vetor de movimento, dispositivo de computador, e meio de armazenamento |
Country Status (8)
Country | Link |
---|---|
US (2) | US11563949B2 (pt) |
EP (1) | EP3833027A4 (pt) |
JP (2) | JP7140908B2 (pt) |
KR (1) | KR102643315B1 (pt) |
CN (2) | CN110876059B (pt) |
BR (1) | BR112021003965A2 (pt) |
SG (1) | SG11202102128YA (pt) |
WO (1) | WO2020048180A1 (pt) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112511829B (zh) * | 2019-03-11 | 2022-07-01 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
CN113541891B (zh) * | 2020-04-15 | 2022-07-08 | 上海朗帛通信技术有限公司 | 一种被用于无线通信的节点中的方法和装置 |
CN111970516B (zh) * | 2020-07-22 | 2022-02-18 | 浙江大华技术股份有限公司 | 帧间预测方法、视频编码方法及电子设备、存储装置 |
CN112911284B (zh) * | 2021-01-14 | 2023-04-07 | 北京博雅慧视智能技术研究院有限公司 | 一种视频编码中跳过模式实现方法及实现电路 |
WO2023050072A1 (en) * | 2021-09-28 | 2023-04-06 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Methods and systems for video compression |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4015084B2 (ja) * | 2003-08-20 | 2007-11-28 | 株式会社東芝 | 動きベクトル検出装置及び動きベクトル検出方法 |
CN100469146C (zh) * | 2004-11-17 | 2009-03-11 | 展讯通信(上海)有限公司 | 视频图像运动补偿装置 |
CN102263947B (zh) * | 2010-05-27 | 2016-07-06 | 香港科技大学 | 图像运动估计的方法及*** |
US8711940B2 (en) * | 2010-11-29 | 2014-04-29 | Mediatek Inc. | Method and apparatus of motion vector prediction with extended motion vector predictor |
US9143795B2 (en) * | 2011-04-11 | 2015-09-22 | Texas Instruments Incorporated | Parallel motion estimation in video coding |
CN103841425B (zh) * | 2012-10-08 | 2017-04-05 | 华为技术有限公司 | 用于运动矢量预测的运动矢量列表建立的方法、装置 |
KR102063385B1 (ko) * | 2013-01-30 | 2020-01-07 | 인텔 코포레이션 | 차세대 비디오용 콘텐츠 적응적 엔트로피 코딩 |
JP6135220B2 (ja) * | 2013-03-18 | 2017-05-31 | 富士通株式会社 | 動画処理装置、動画処理方法および動画処理プログラム |
CN103188496B (zh) * | 2013-03-26 | 2016-03-09 | 北京工业大学 | 基于运动矢量分布预测的快速运动估计视频编码方法 |
CN103338372A (zh) * | 2013-06-15 | 2013-10-02 | 浙江大学 | 一种视频处理方法及装置 |
CN103561263B (zh) * | 2013-11-06 | 2016-08-24 | 北京牡丹电子集团有限责任公司数字电视技术中心 | 基于运动矢量约束和加权运动矢量的运动补偿预测方法 |
CN104811729B (zh) * | 2015-04-23 | 2017-11-10 | 湖南大目信息科技有限公司 | 一种视频多参考帧编码方法 |
CN104918047B (zh) * | 2015-05-29 | 2018-08-03 | 北京奇艺世纪科技有限公司 | 一种双向运动估计的排除方法和装置 |
US11082713B2 (en) * | 2015-11-20 | 2021-08-03 | Mediatek Inc. | Method and apparatus for global motion compensation in video coding system |
US20170244981A1 (en) * | 2016-02-24 | 2017-08-24 | Mediatek Inc. | Reconfigurable interpolation filter and associated interpolation filtering method |
US11638027B2 (en) * | 2016-08-08 | 2023-04-25 | Hfi Innovation, Inc. | Pattern-based motion vector derivation for video coding |
CN108076347B (zh) * | 2016-11-15 | 2021-11-26 | 阿里巴巴集团控股有限公司 | 一种编码起始点的获取方法以及装置 |
WO2018097693A2 (ko) * | 2016-11-28 | 2018-05-31 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
CN117425006A (zh) * | 2017-03-22 | 2024-01-19 | 韩国电子通信研究院 | 使用参考块的预测方法和装置 |
KR102356262B1 (ko) * | 2018-03-27 | 2022-02-08 | 주식회사 윌러스표준기술연구소 | 모션 보상을 이용하는 비디오 신호 처리 방법 및 장치 |
WO2019191890A1 (zh) * | 2018-04-02 | 2019-10-10 | 深圳市大疆创新科技有限公司 | 用于图像处理的方法和图像处理装置 |
US10638153B2 (en) * | 2018-07-02 | 2020-04-28 | Tencent America LLC | For decoder side MV derivation and refinement |
-
2018
- 2018-10-29 CN CN201811271726.3A patent/CN110876059B/zh active Active
- 2018-10-29 CN CN202210652021.6A patent/CN115250350B/zh active Active
-
2019
- 2019-06-14 KR KR1020217009707A patent/KR102643315B1/ko active IP Right Grant
- 2019-06-14 BR BR112021003965-1A patent/BR112021003965A2/pt unknown
- 2019-06-14 WO PCT/CN2019/091308 patent/WO2020048180A1/zh unknown
- 2019-06-14 EP EP19856672.1A patent/EP3833027A4/en not_active Withdrawn
- 2019-06-14 SG SG11202102128YA patent/SG11202102128YA/en unknown
- 2019-06-14 JP JP2021512258A patent/JP7140908B2/ja active Active
-
2021
- 2021-03-02 US US17/190,041 patent/US11563949B2/en active Active
-
2022
- 2022-09-08 JP JP2022142722A patent/JP7386301B2/ja active Active
- 2022-12-15 US US18/066,578 patent/US20230123840A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN110876059A (zh) | 2020-03-10 |
US20230123840A1 (en) | 2023-04-20 |
SG11202102128YA (en) | 2021-04-29 |
JP2022172332A (ja) | 2022-11-15 |
JP7140908B2 (ja) | 2022-09-21 |
CN115250350B (zh) | 2024-04-09 |
JP7386301B2 (ja) | 2023-11-24 |
US20210185325A1 (en) | 2021-06-17 |
CN115250350A (zh) | 2022-10-28 |
EP3833027A4 (en) | 2021-09-29 |
JP2021536699A (ja) | 2021-12-27 |
CN110876059B (zh) | 2022-06-10 |
US11563949B2 (en) | 2023-01-24 |
WO2020048180A1 (zh) | 2020-03-12 |
EP3833027A1 (en) | 2021-06-09 |
KR20210047948A (ko) | 2021-04-30 |
KR102643315B1 (ko) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112021003965A2 (pt) | método e aparelho de obtenção de vetor de movimento, dispositivo de computador, e meio de armazenamento | |
US11765378B2 (en) | Video coding method and apparatus | |
US11394996B2 (en) | Video coding method and apparatus | |
US11197018B2 (en) | Inter-frame prediction method and apparatus | |
BR112021004429A2 (pt) | método de decodificação e aparelho de decodificação para predizer informações de movimento |