BR112019013832A2 - restauração de vetor de movimento de lado de decodificador para codificação de vídeo - Google Patents

restauração de vetor de movimento de lado de decodificador para codificação de vídeo Download PDF

Info

Publication number
BR112019013832A2
BR112019013832A2 BR112019013832A BR112019013832A BR112019013832A2 BR 112019013832 A2 BR112019013832 A2 BR 112019013832A2 BR 112019013832 A BR112019013832 A BR 112019013832A BR 112019013832 A BR112019013832 A BR 112019013832A BR 112019013832 A2 BR112019013832 A2 BR 112019013832A2
Authority
BR
Brazil
Prior art keywords
motion vector
candidate
motion
refined
vector
Prior art date
Application number
BR112019013832A
Other languages
English (en)
Other versions
BR112019013832A8 (pt
Inventor
Chen Ching-Yeh
Chuang Tzu-Der
Original Assignee
Mediatek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mediatek Inc filed Critical Mediatek Inc
Publication of BR112019013832A2 publication Critical patent/BR112019013832A2/pt
Publication of BR112019013832A8 publication Critical patent/BR112019013832A8/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

as técnicas descritas nesse relatório descritivo referem-se a métodos, aparelhos e meios legíveis por computador configurados para determinar vetores de movimento. as técnicas referem-se a codificadores e decodificadores. por exemplo, um decodificador recebe dados de vídeo comprimidos relacionados a um conjunto de quadros. o decodificador calcula, utilizando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro atual do conjunto de quadros, em que o novo vetor de movimento estima o movimento para o quadro atual com base em um ou mais quadros de referência. o cálculo inclui recuperar um primeiro vetor de movimento associado ao quadro atual, executar uma primeira porção do processo de decodificação utilizando o primeiro vetor de movimento, recuperar um segundo vetor de movimento associado ao quadro atual diferente do primeiro vetor de movimento e executar uma segunda porção do processo de decodificação utilizando o segundo vetor de movimento.

Description

RESTAURAÇÃO DE VETOR DE MOVIMENTO DE LADO DE DECODIFICADOR PARA CODIFICAÇÃO DE VÍDEO
PEDIDOS RELACIONADOS [001] Este Pedido reivindica prioridade sob 35 USC § 119 (e) para o Pedido Provisório dos EUA No. de Série 62/442.472, intitulado MÉTODOS DE RESTAURAÇÃO DE VETOR DE MOVIMENTO PARA REFINAMENTO DE PREDITOR DE LADO DE DECODIFICADOR depositado em 5 de janeiro de 2017, e Pedido Provisório dos EUA No. de Série 62/479.350, intitulado MÉTODOS DE RESTAURAÇÃO DE VETOR DE MOVIMENTO PARA REFINAMENTO DE PREDITOR DE LADO DE DECODIFICADOR, depositado em 31 de março de 2017, que são incorporados nesse relatório descritivo por referência em sua totalidade.
CAMPO TÉCNICO [002] As técnicas descritas nesse relatório descritivo referem-se geralmente a codificação de vídeo e, em particular, à restauração de vetor de movimento de lado de decodificador.
FUNDAMENTOS DA INVENÇÃO [003] A codificação de vídeo envolve a compactação (e a descompressão) de um sinal de vídeo digital. Exemplos de padrões de codificação de vídeo incluem o padrão de compressão de vídeo H.264 e o seu sucessor Codificação de Vídeo de Alta Eficiência (HEVC) . O vídeo em movimento é formado tirando capturas do sinal em intervalos de tempo periódicos, de forma que reproduzir a série de capturas ou quadros produz a aparência de movimento. Os codificadores de vídeo incluem um modelo de previsão que tenta reduzir a redundância usando semelhanças entre os quadros de vídeo vizinhos. Um quadro previsto é criado a partir de um ou mais
Petição 870190062098, de 03/07/2019, pág. 25/121
2/59 quadros anteriores ou futuros que são geralmente chamados de quadros de referência. Quadros que não servem como quadros de referência são geralmente chamados de quadros não referência.
[004] Como cada quadro pode incluir milhares ou milhões de pixels, as técnicas de codificação de video geralmente não processam todos os pixels de um quadro de uma só vez. Portanto, um quadro codificado é dividido em blocos que são frequentemente chamados de macroblocos. Em vez de codificar diretamente os valores de pixel brutos para cada bloco, o codificador tenta encontrar um bloco semelhante ao que está codificando em um quadro de referência. Se o codificador encontrar um bloco semelhante, o codificador pode codificar esse bloco usando um vetor de movimento, que é um vetor bidimensional que aponta para o bloco correspondente no quadro de referência.
[005] Algumas técnicas explicitamente sinalizam informação de movimento para o decodificador. Exemplos de tais modos incluem o modo de mesclagem e o modo de previsão de vetor de movimento avançada (AMVP) em Codificação de Video de Alta Eficiência (HEVC) . No entanto, ter que sinalizar vetores de movimento pode consumir uma quantidade significativa de dados que poderíam, de outro modo, ser usados pelo transmissor para codificar outras informações. Portanto, ferramentas de refinamento de vetor de movimento de lado de decodificador podem ser utilizadas para refinar, prever e/ou gerar informação de movimento de tal modo que a informação de movimento possa ser derivada sem ser explicitamente sinalizada.
SUMÁRIO DA INVENÇÃO
Petição 870190062098, de 03/07/2019, pág. 26/121
3/59 [006] De acordo com o assunto revelado, aparelhos, sistemas e métodos são fornecidos para técnicas de restauração de vetor de movimento de lado de decodificador que melhoram a velocidade de execução e a eficiência das técnicas de refinamento de vetor de movimento de lado de decodificador.
[007] Algumas modalidades referem-se a um método de decodificação para decodificar dados de vídeo. O método inclui receber dados de vídeo comprimidos relacionados a um conjunto de quadros e calcular, utilizando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro atual do conjunto de quadros, em que o novo vetor de movimento estima o movimento para o quadro atual baseado em um ou mais quadros de referência. O cálculo inclui recuperar um primeiro vetor de movimento associado ao quadro atual, executar uma primeira porção do processo de decodificação utilizando o primeiro vetor de movimento, recuperar um segundo vetor de movimento associado ao quadro atual que é diferente do primeiro vetor de movimento, e executar uma segunda porção do processo de decodificação utilizando o segundo vetor de movimento.
[008] Em alguns exemplos, o primeiro vetor de movimento compreende um vetor de movimento não refinado, o segundo vetor de movimento compreende um vetor de movimento refinado, onde o MV refinado é refinado utilizando uma técnica de refinamento de preditor de lado de decodificador, a primeira porção do processo de decodificação compreende uma porção de análise, uma porção de derivação de vetor de movimento, ou ambas, e a segunda porção do processo de decodificação compreende uma porção de reconstrução.
Petição 870190062098, de 03/07/2019, pág. 27/121
4/59 [009] Em alguns exemplos, o método de decodificação inclui recuperar um terceiro vetor de movimento associado a um segundo quadro, em que o terceiro vetor de movimento é um vetor de movimento refinado, executar a primeira porção do processo de decodificação utilizando o primeiro vetor de movimento e o terceiro vetor de movimento, e executar a segunda porção do processo de decodificação utilizando o segundo vetor de movimento e o terceiro vetor de movimento.
[0010] Em alguns exemplos, a execução da primeira porção do processo de decodificação compreende executar uma porção de derivação de vetor de movimento utilizando o primeiro vetor de movimento e o terceiro vetor de movimento, em que a porção de derivação de vetor de movimento compreende derivação de previsão de vetor de movimento, derivação de candidato de mesclagem ou ambas.
[0011] Em alguns exemplos, a execução da primeira porção do processo de decodificação compreende referir-se ao primeiro vetor de movimento como um vetor de movimento decodificado do quadro atual.
[0012] Em alguns exemplos, o método de decodificação inclui utilizar o segundo vetor de movimento e o terceiro vetor de movimento para realizar compensação de movimento, compensação de movimento de bloco sobreposto, desbloqueio ou qualquer combinação dos mesmos.
[0013] Em alguns exemplos, o método de decodificação inclui determinar que uma restrição de unidade de árvore de codificação não é aplicada aos dados de video comprimidos, e a recuperação do primeiro vetor de movimento associado ao quadro atual inclui recuperar um vetor de movimento não refinado do quadro atual, e um vetor de movimento refinado
Petição 870190062098, de 03/07/2019, pág. 28/121
5/59 associado a um segundo quadro.
[0014] Em alguns exemplos, recuperar o primeiro vetor de movimento associado ao quadro atual inclui recuperar um vetor de movimento não refinado de uma linha de unidade de árvore de codificação atual, um vetor de movimento refinado de uma linha de unidade de árvore de codificação superior, outro pedaço, ou outra fatia, e um vetor de movimento refinado associado a um segundo quadro.
[0015] Algumas modalidades referem-se a um método de decodificação para decodificar dados de vídeo. O método inclui receber dados de vídeo comprimidos relacionados a um conjunto de quadros e calcular, utilizando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro atual do conjunto de quadros, em que o novo vetor de movimento estima o movimento para o quadro atual baseado em um ou mais quadros de referência. O cálculo inclui receber um sinal indicativo de um índice de candidato inicial para uma lista de candidatos de vetor de movimento inicial, determinar um primeiro candidato de vetor de movimento na lista de candidatos de vetor de movimento inicial e um segundo candidato de vetor de movimento compreende uma diferença que esteja abaixo de um limiar predeterminado, remover o segundo candidato de vetor de movimento a partir da lista de candidatos de vetor de movimento inicial, não adicionar o segundo candidato de
vetor de movimento à lista de candidatos de vetor de
movimento inicial, ou ambos, e calcular o novo vetor de
movimento com base na lista de candidatos e no índice de
candidato inicial.
[0016] Em alguns exemplos, o método de decodificação
Petição 870190062098, de 03/07/2019, pág. 29/121
6/59 inclui analisar um novo candidato de vetor de movimento, o candidato de vetor de movimento compreendendo um par de vetores de movimento, determinar, com base na análise, que o par de vetores de movimento está na mesma trajetória de movimento, e adicionar o par de vetores de movimento à lista de candidatos de vetor de movimento inicial.
[0017] Em alguns exemplos, o método de decodificação inclui analisar um novo candidato de vetor de movimento, o candidato de vetor de movimento compreendendo um par de vetores de movimento, determinar, com base na análise, que o par de vetores de movimento não está ao longo da mesma
traj etória de movimento, separar o par de vetores de
movimento em dois novos pares de vetores de movimento
candidatos, e adicionar os dois vetores de movimento
candidatos à lista de candidatos de vetor de movimento
inicial.
[0018] Em alguns exemplos, a separação inclui adicionar o primeiro vetor de movimento do par de vetores de movimento a um primeiro dos dois novos pares de vetores de movimento candidatos, preencher o primeiro dos dois novos pares de vetores de movimento candidatos com um vetor de movimento espelhado do primeiro vetor de movimento, adicionar o segundo vetor de movimento do par de vetores de movimento a um segundo dos dois novos pares de vetores de movimento candidatos, e preencher o segundo dois novos pares de vetores de movimento candidatos com um vetor de movimento espelhado do segundo vetor de movimento.
[0019] Algumas modalidades referem-se a um método de codificação para codificar dados de video. O método inclui calcular dados de video comprimidos relacionados a um
Petição 870190062098, de 03/07/2019, pág. 30/121
7/59 conjunto de quadros, compreendendo calcular um novo vetor de movimento para um quadro atual a partir do conjunto de quadros, em que o novo vetor de movimento estima o movimento para o quadro atual com base em um ou mais quadros de referência, incluindo calcular um primeiro vetor de movimento associado ao quadro atual, executar uma primeira porção do processo de codificação utilizando o primeiro vetor de movimento, calcular um segundo vetor de movimento associado ao quadro atual que é diferente do primeiro vetor de movimento, e executar uma segunda porção do processo de codificação utilizando o segundo vetor de movimento.
[0020] Em alguns exemplos, calcular o primeiro vetor de movimento compreende calcular um vetor de movimento não refinado, um conjunto de vetores de movimento não refinado, ou ambos, e executar a primeira porção do processo de codificação compreende executar uma porção de codificação de sintaxe, uma porção de derivação de vetor de movimento, uma porção de derivação de previsão de vetor de movimento ou alguma combinação dos mesmos.
[0021] Em alguns exemplos, a execução da porção de derivação de previsão de vetor de movimento compreende gerar uma lista de candidatos de mesclagem, gerar uma lista de candidatos de previsão de vetor de movimento avançada ou ambas.
[0022] Em alguns exemplos, o método de codificação inclui realizar codificação de vetor de movimento, geração de previsão de vetor de movimento ou ambos, usando o vetor de movimento não refinado, o conjunto de vetores de movimento não refinado ou ambos, de modo que o vetor de movimento não refinado, o conjunto de vetores de movimento não refinado ou
Petição 870190062098, de 03/07/2019, pág. 31/121
8/59 ambos não são refinados usando uma ferramenta de refinamento de vetor de movimento de lado de decodificador.
[0023] Em alguns exemplos, o cálculo do segundo vetor de movimento inclui calcular um vetor de movimento refinado, em que o vetor de movimento refinado é calculado utilizando uma técnica de refinamento de lado de codificador, armazenar o vetor de movimento refinado em um conjunto de buffer de vetor de movimento, e executar a segunda porção do processo de codificação compreende executar uma porção de compensação de movimento, uma porção de compensação de movimento de bloco sobreposto, uma porção de desbloqueio, ou alguma combinação dos mesmos.
[0024] Algumas modalidades referem-se a um aparelho configurado para decodificar dados de video. O aparelho inclui um processador em comunicação com a memória. O processador é configurado para executar instruções armazenadas na memória que fazem o processador receber dados de video comprimidos relacionados a um conjunto de quadros, e calcular, usando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro atual do conjunto de quadros, em que o novo vetor de movimento estima o movimento para o quadro atual com base em um ou mais quadros de referência. O cálculo inclui recuperar um primeiro vetor de movimento associado ao quadro atual, executar uma primeira porção do processo de decodificação utilizando o primeiro vetor de movimento, recuperar um segundo vetor de movimento associado ao quadro atual diferente do primeiro vetor de movimento, e executar uma segunda porção do processo de decodificação utilizando o segundo vetor de movimento.
Petição 870190062098, de 03/07/2019, pág. 32/121
9/59 [0025] Em alguns exemplos, o primeiro vetor de movimento compreende um vetor de movimento não refinado, o segundo vetor de movimento compreende um vetor de movimento refinado, onde o MV refinado é refinado utilizando uma técnica de refinamento de preditor de lado de decodificador, a primeira porção do processo de decodificação compreende uma porção de análise, uma porção de derivação de vetor de movimento, ou ambas, e a segunda porção do processo de decodificação compreende uma porção de reconstrução.
[0026] Em alguns exemplos, o processador é configurado para executar instruções armazenadas na memória que fazem o processador recuperar um terceiro vetor de movimento associado a um segundo quadro, em que o terceiro vetor de movimento é um vetor de movimento refinado, executar a primeira porção do processo de decodificação utilizando o primeiro vetor de movimento e o terceiro vetor de movimento, e executar a segunda porção do processo de decodificação utilizando o segundo vetor de movimento e o terceiro vetor de movimento.
[0027] Algumas modalidades referem-se a um aparelho configurado para decodificar dados de video. O aparelho inclui um processador em comunicação com a memória. O processador é configurado para executar instruções armazenadas na memória que fazem o processador receber dados de video comprimidos relacionados a um conjunto de quadros, e calcular, usando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro atual do conjunto de quadros, em que o novo vetor de movimento estima o movimento para o quadro atual com base em um ou mais quadros de referência. O cálculo inclui receber
Petição 870190062098, de 03/07/2019, pág. 33/121
10/59 um sinal indicativo de um índice de candidato inicial para uma lista de candidatos de vetor de movimento inicial, determinar um primeiro candidato de vetor de movimento na lista de candidatos de vetor de movimento inicial e um segundo candidato de vetor de movimento compreende uma diferença que esteja abaixo de um limiar predeterminado, remover o segundo candidato de vetor de movimento a partir da lista de candidatos de vetor de movimento inicial, não adicionar o segundo candidato de vetor de movimento à lista de candidatos de vetor de movimento inicial ou ambos, e calcular o novo vetor de movimento com base na lista de candidatos e no índice de candidato inicial.
[0028] Em alguns exemplos, o processador é configurado para executar instruções armazenadas na memória que fazem o processador analisar um novo candidato de vetor de movimento, o candidato de vetor de movimento compreendendo um par de vetores de movimento, determinar, com base na análise, que o par de vetores de movimento é ao longo de uma mesma trajetória de movimento; e adicionar o par de vetores de movimento à lista de candidatos de vetor de movimento inicial.
[0029] Em alguns exemplos, o processador é configurado para executar instruções armazenadas na memória que fazem o processador analisar um novo candidato de vetor de movimento, o candidato de vetor de movimento compreendendo um par de vetores de movimento, determinar, com base na análise, que o par de vetores de movimento não é ao longo de uma mesma trajetória de movimento, separar o par de vetores de movimento em dois novos pares de vetores de movimento candidatos, e adicionar os dois vetores de movimento
Petição 870190062098, de 03/07/2019, pág. 34/121
11/59 candidatos à lista de candidatos de vetor de movimento inicial.
[0030] Algumas modalidades referem-se a um aparelho configurado para codificar dados de vídeo. O aparelho inclui um processador em comunicação com a memória. O processador sendo configurado para executar instruções armazenadas na memória que fazem o processador calcular dados de vídeo comprimidos relacionados a um conjunto de quadros, compreendendo calcular um novo vetor de movimento para um quadro atual a partir do conjunto de quadros, em que o novo vetor de movimento estima o movimento para o quadro atual baseado em um ou mais quadros de referência, incluindo calcular um primeiro vetor de movimento associado ao quadro atual, executar uma primeira porção do processo de codificação utilizando o primeiro vetor de movimento, calcular um segundo vetor de movimento associado ao quadro atual que é diferente do primeiro vetor de movimento; e executar uma segunda porção do processo de codificação utilizando o segundo vetor de movimento.
[0031] Em alguns exemplos, calcular o primeiro vetor de movimento inclui calcular um vetor de movimento não refinado, um conjunto de vetores de movimento não refinado, ou ambos, e executar a primeira porção do processo de codificação compreende executar uma porção de codificação de sintaxe, uma porção de derivação de vetor de movimento, uma porção de derivação de previsão de vetor de movimento, ou alguma combinação dos mesmos.
[0032] Em alguns exemplos, o cálculo do segundo vetor de movimento compreende calcular um vetor de movimento refinado, em que o vetor de movimento refinado é calculado
Petição 870190062098, de 03/07/2019, pág. 35/121
12/59 utilizando uma técnica de refinamento de lado de codificador, armazenar o vetor de movimento refinado em um conjunto de buffer de vetor de movimento, e executar a segunda porção do processo de codificação compreende executar uma porção de compensação de movimento, uma porção de compensação de movimento de bloco sobreposto, uma porção de desbloqueio, ou alguma combinação dos mesmos.
[0033] Foram assim delineadas, de um modo bastante geral, os recursos do assunto revelado de modo que a descrição detalhada que segue possa ser melhor compreendida, e para que a presente contribuição para a técnica possa ser melhor apreciada. Existem, evidentemente, recursos adicionais do assunto revelado que serão descritos a seguir e que formarão o assunto das reivindicações anexas. É para ser entendido que a fraseologia e terminologia empregues nesse relatório descritivo são para o propósito de descrição e não devem ser consideradas como limitantes.
BREVE DESCRIÇÃO DOS DESENHOS [0034] Nos desenhos, cada componente idêntico ou quase idêntico que é ilustrado em várias figuras é representado por um caractere de referência similar. Por motivos de clareza, nem todos os componentes podem ser rotulados em todos os desenhos. Os desenhos não são necessariamente desenhados em escala, colocando-se, em vez disso, ênfase na ilustração de vários aspectos das técnicas e dispositivos descritos nesse relatório descritivo.
[0035] A Figura 1 mostra uma configuração de codificação de video exemplar.
[0036] A Figura 2 mostra uma técnica exemplar para derivar as previsões de vetor de movimento derivadas
Petição 870190062098, de 03/07/2019, pág. 36/121
13/59 temporais (MVPs).
[0037] A Figura 3 mostra uma técnica exemplar de derivação de vetor de movimento baseada em padrão (PMVD) usando o modo de mesclagem de correspondência bilateral.
[0038] A Figura 4 mostra um exemplo de escalonamento de uma trajetória de movimento.
[0039] A Figura 5 mostra uma técnica exemplar de derivação de vetor de movimento baseada em padrão (PMVD) usando o modo de mesclagem de correspondência de modelo.
[0040] A Figura 6 mostra uma arquitetura de decodificador exemplar.
[0041] A Figura 7 mostra um exemplo de uma execução de segmentação de instruções de decodificador ao executar uma arquitetura de decodificador, tal como a arquitetura de decodificador mostrada na Figura 6.
[0042] A Figura 8 mostra um exemplo de uma execução de segmentação de instruções de decodificador ao executar uma ferramenta de refinamento de preditor de lado de decodificador.
[0043] A Figura 9 mostra um exemplo de um processo de refinamento de MV de lado de decodificador (DMVR) que utiliza duas imagens de referência.
[0044] A Figura 10 mostra um processo de pesquisa de dois estágios exemplar para pesquisar um novo bloco de correspondência (por exemplo, melhor) usando o bloco biprevisto.
[0045] A Figura 11 é um diagrama que ilustra a compensação de movimento de bloco sobreposto (OBMC) executada no nível de sub-bloco para limites de bloco de compensação de movimento (MC).
Petição 870190062098, de 03/07/2019, pág. 37/121
14/59 [0046] A Figura 12A mostra um resumo de alto nivel exemplar do método OBMC.
[0047] A Figura 12B mostra um resumo de alto nivel exemplar do método OBMC quando se usa um MV inicial.
[0048] A Figura 13 ilustra uma representação de alto nivel do conjunto de MV para a CTU atual, a coluna da esquerda, e a linha acima.
[0049] A Figura 14 mostra um exemplo de pares de MV candidatos na mesma trajetória de movimento e não na mesma trajetória de movimento, de acordo com algumas modalidades.
[0050] A Figura 15 mostra um método de decodificação exemplar para decodificar dados de video usando dois MVs, de acordo com algumas modalidades.
[0051] A Figura 16A mostra um método exemplar para podar uma lista de candidatos de vetor de movimento, de acordo com algumas modalidades.
[0052] A Figura 16B mostra um método exemplar para gerar uma lista de candidatos de vetor de movimento, de acordo com algumas modalidades.
DESCRIÇÃO DETALHADA DA INVENÇÃO [0053] Os inventores reconheceram e apreciaram que várias técnicas podem ser usadas para melhorar a execução de técnicas de refinamento de preditor de lado de decodificador, tais como derivação de vetor de movimento baseada em padrão (PMVD), fluxo ótico bidirecional (BIO) e refinamento de vetor de movimento de lado de decodificador (DMVR). As ferramentas de refinamento de preditor de lado de decodificador podem causar atrasos de processamento devido a como os vetores de movimento (MVs) são calculados e reconstruídos. Técnicas podem ser usadas para permitir uma temporização de execução
Petição 870190062098, de 03/07/2019, pág. 38/121
15/59 semelhante em comparação com a execução de métodos de decodificação tradicionais que não prevêem MVs (por exemplo, quando a informação de vetor de movimento é sinalizada a partir do codificador). Por exemplo, um processo de decodificação pode ser ajustado para que os MVs possam ser reconstruídos no início do processo, assim permitindo que o decodificador pré-busque os pixels de referência necessários de uma maneira que oculte os ciclos de latência necessários para buscar os dados. Como exemplo de tais técnicas, o MV não refinado pode ser (a) restaurado de volta ao buffer de MV e/ou (b) não modificado, de modo que o MV não refinado pode ser usado pelas ferramentas de refinamento de MV de lado de decodificador ou usado para derivar o MV de referência ou os candidatos de MV (por exemplo, a lista de candidatos de mesclagem e a lista de preditores de vetor de movimento avançada) para os blocos a seguir.
[0054] O uso de tais técnicas (por exemplo, a restauração do MV não refinado) pode, no entanto, causar artefatos de bloqueio e/ou outras ineficiências de codificação. Por exemplo, além de usar o MV não refinado (restaurado) para análise, o decodificador também pode usar o MV não refinado para desbloqueio, compensação de movimento de bloco sobreposto (OBMC) e/ou derivação de MV temporal colocalizada. As técnicas descritas nesse relatório descritivo permitem que o decodificador use um MV diferente (por exemplo, diferente do MV não refinado) para processamento realizado após o estágio de análise, como desbloqueio, OBMC e/ou derivação de MV temporal colocalizada. Por exemplo, o primeiro MV usado para análise (por exemplo, a derivação de MV/MVP) pode ser um MV não
Petição 870190062098, de 03/07/2019, pág. 39/121
16/59 refinado e o segundo MV usado para outro processamento, incluindo desbloqueio, OBMC e/ou derivação de MV temporal colocalizada, pode ser um MV refinado.
[0055] Em algumas modalidades, o decodificador usa dois conjuntos de vetores de movimento: o decodificador usa um conjunto de MVs para uma primeira parte do processo de decodificação (por exemplo, para análise, incluindo derivação de MV e pré-busca de pixels) e usa o segundo conjunto de MVs para uma segunda parte do processo de decodificação (por exemplo, para reconstrução, incluindo compensação de movimento, OBMC e/ou desbloqueio). Em algumas modalidades, os dados de linha de CTU são incorporados para permitir processamento adicional com MVs refinados (por exemplo, utilizando MV refinado da linha de CTU superior). Por exemplo, o primeiro conjunto de MVs pode incluir um vetor de movimento não refinado de uma linha de unidade de árvore de codificação atual, um vetor de movimento refinado de uma linha de unidade de árvore de codificação superior e um vetor de movimento refinado associado a um segundo quadro. O segundo conjunto de MVs pode incluir um MV refinado da imagem atual, e um MV refinado da outra imagem.
[0056] Essas e outras técnicas podem permitir que o processamento pós-análise use o MV refinado para evitar artefatos de bloqueio adicionais. Tais técnicas podem fornecer um ganho de codificação mais alto comparado a utilização do MV não refinado para o processamento de MV realizado após o estágio de análise. Estas e outras técnicas são descritas mais adiante nesse relatório descritivo.
[0057] Na descrição que segue, são apresentados numerosos detalhes específicos em relação aos sistemas e
Petição 870190062098, de 03/07/2019, pág. 40/121
17/59 métodos do assunto revelado e ao ambiente em que tais sistemas e métodos podem operar, etc., de modo a fornecer uma compreensão completa do assunto revelado. Será evidente para um técnico no assunto, no entanto, que o assunto revelado pode ser praticado sem tais detalhes específicos, e que certos recursos, que são bem conhecidos na técnica, não são descritos em detalhe a fim de evitar complicações do assunto revelado. Além disso, será entendido que os exemplos fornecidos abaixo são exemplares, e que está contemplado que existem outros sistemas e métodos que estão dentro do âmbito do assunto revelado.
[0058] A Figura 1 mostra uma configuração de codificação de vídeo exemplar 100, de acordo com algumas modalidades. A fonte de vídeo 102 é uma fonte de vídeo e pode ser, por exemplo, televisão digital, vídeo baseado na Internet, chamada de vídeo e/ou semelhantes. O codificador 104 codifica a fonte de vídeo em vídeo codificado. O codificador 104 pode residir no mesmo dispositivo que gerou a fonte de vídeo 102 (por exemplo, um telefone celular, para chamadas de vídeo), e/ou pode residir em um dispositivo diferente. O dispositivo recepção 106 recebe o vídeo codificado a partir do codificador 104. O dispositivo recepção 104 pode receber o vídeo como um produto de vídeo (por exemplo, um disco de vídeo digital ou outro meio legível por computador), através de uma rede de difusão, através de uma rede móvel, (por exemplo, uma rede celular) e/ou através da Internet. O dispositivo de recepção 106 pode ser, por exemplo, um computador, um telefone celular ou uma televisão. O dispositivo de recepção 106 inclui um decodificador 108 que está configurado para decodificar o vídeo codificado. O
Petição 870190062098, de 03/07/2019, pág. 41/121
18/59 dispositivo de recepção 106 também inclui uma exibição 110 para exibir o video decodificado.
[0059] Como explicado acima, parte do processo de decodificação depende de vetores de movimento. Nos exemplos, quando o codificador (por exemplo, codificador 104) não inclui a informação de MV final diretamente no video codificado, o decodificador (por exemplo, decodificador 108 no dispositivo recepção 106) pode empregar ferramentas de previsão de lado de receptor, frequentemente chamadas de ferramentas de refinamento de preditor de lado de receptor ou ferramentas de refinamento de preditor de lado de decodificador. Um exemplo de uma ferramenta de refinamento de preditor de lado de receptor é o modo de Derivação de Vetor de Movimento baseada em padrão (PMVD), que também pode ser chamado de modo de Conversão Acima de Taxa de Quadros (FRUC) . A PMVD é descrita, por exemplo, no Documento JVETF1001 da Equipe de Exploração de Video Conjunta (JVET), intitulado Descrição de Algoritmo do Modelo de Teste de Exploração Conjunta 6 (JEM 6), que é aqui incorporado por referência nesse relatório descritivo na sua totalidade.
[0060] Outros exemplos de ferramentas de refinamento de preditor de lado de decodificador incluem o fluxo ótico bidireccional (BIO) e o refinamento de vetor de movimento de lado de decodificador (DMVR). Por exemplo, BIO foi proposto pela Samsung na terceira reunião da JCTVC e na 52a reunião da VCEG, e é revelado nos documentos JCTVC-C204 e VECG-AZ05. Veja, por exemplo, Elena Alshina e Alexander Alshin, BiDirectional Optical Flow, de 7 a 15 de outubro de 2010 (JCTVC-C204) (incluindo as duas planilhas do Microsoft Excel anexadas), e E. Alshina e cols., Known Tools Performance
Petição 870190062098, de 03/07/2019, pág. 42/121
19/59
Investigation for Next Generation Video Coding, de 19 a 26 de junho de 2015 (VCEG-AZ05) (incluindo a apresentação do Microsoft PowerPoint), cujo conteúdo é aqui incorporado por referência na sua totalidade. BIO utiliza as premissas do fluxo ótico e movimento constante para obter o refinamento de movimento de nível de amostra. Ele é tipicamente aplicado apenas para blocos previstos verdadeiramente bidirecionais, o que é previsto a partir de dois quadros de referência e um é o quadro anterior e o outro é o último quadro. Em VECGAZ05, BIO utiliza uma janela de 5x5 para derivar o refinamento de movimento de uma amostra, portanto, para um bloco NxN, os resultados compensados de movimento e a informação de gradiente correspondente de um bloco (N + 4) x (N + 4) são necessários para derivar o refinamento de movimento baseado em amostra do bloco atual. E um filtro de gradiente de seis derivações e um filtro de interpelação de seis derivações são usados para gerar a informação de gradiente no BIO. Portanto, a complexidade computacional do BIO é muito maior que a da previsão bidirecional tradicional. Para informações adicionais, consulte D. Marpe, H. Schwarz e T. Wiegand: Context-Based Adaptive Binary Arithmetic Coding in the H.264 / AVO Video Compression Standard, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, pp. 620-636, julho de 2003, incorporado nesse relatório descritivo por referência na sua totalidade.
[0061] O próprio PMVD pode ser executado usando modos
diferentes, como, por exemplo, o modo de mesclagem de
correspondência bilateral ou o modo de mesclagem de
correspondência de modelo. Normalmente , o modo para o
decodificador usar é sinalizado no video codi ficado. Assim,
Petição 870190062098, de 03/07/2019, pág. 43/121
20/59 o codificador envia sinais ao decodificador para usar o modo PMVD e também sinaliza qual modo PMVD específico. Em alguns exemplos, um FRUC_mrg_flag é sinalizado quando o merge_flag ou skip_flag é verdadeiro. Se o FRUC_mrg_flag for 1, então um FRUC_merge_mode é sinalizado para indicar se o modo de mesclagem de correspondência bilateral (por exemplo, descrito adicionalmente em conjunto com as Figuras 2-4) ou modo de mesclagem de correspondência de modelo (por exemplo, descrito adicionalmente em conjunto com a Figura 5) é selecionado.
[0062] Em resumo, os dois modos PMVD usam pixels decodificados para derivar o vetor de movimento para o bloco atual. Uma nova previsão de vetor de movimento temporal (MVP) denominada MVP derivada temporal é derivada pela varredura de todos os MVs em todos os quadros de referência. Uma imagem geralmente se refere a um número de quadros (por exemplo, uma imagem inclui dezesseis quadros) . Esses quadros de referência são colocados em uma ou duas listas de imagens de referência. Para a fatia P, apenas uma lista de imagens de referência é usada. Para a fatia B, duas listas de imagens de referência são usadas. Geralmente, para a fatia B, duas listas de imagens de referência são usadas para armazenar imagens passadas e futuras, que são geralmente chamadas de LIST_0 para imagens antigas e LIST_1 para imagens futuras.
[0063] Para derivar o MVP derivado temporal de LIST_0, para cada MV de LIST_0 nos quadros de referência de LIST_0, o MV é dimensionado para apontar para o quadro atual. O bloco que é apontado pelo MV dimensionado no quadro atual é o bloco atual alvo. O MV é ainda dimensionado para apontar para a imagem de referência para a qual refldx é igual a 0
Petição 870190062098, de 03/07/2019, pág. 44/121
21/59 em LIST_O para o bloco atual alvo. 0 MV dimensionado adicional é armazenado no campo de MV de LIST_0 para o bloco atual alvo. A Figura 2 mostra um exemplo 200 de derivar os MVPs derivados temporais. O decodificador varre todos os MVs de LIST_0 em imagens de referência de LIST_0 para os quais o refldx é igual a 1. Para um MV de LIST_0 (mostrado pelas setas 202, 204), um MV dimensionado que aponta para a imagem atual é derivado para cada MV de LIST_0(mostrado pelas setas pontilhadas 206 e 208 para a imagem de referência 201). Um bloco 4x4 210, 212 na figura atual 205 é apontado por cada uma dos MVs escalonadas. Então, outro MV 214, 216 dimensionado é atribuído aos blocos 4x4 apontados 210, 212, respectivamente, na imagem atual, onde o MV 214, 216 dimensionado está ao longo do MV dimensionado associado 202, 204, mas o ponto inicial é a figura atual 205 e o ponto final é a imagem de referência 218 com refldx igual a 0 em LIST_0.
O decodificador varre todos os MVs em todos os blocos 4x4 em todas as imagens de referência para gerar os MVPs de LIST_0 e LIST_1 derivados do quadro atual. Para cada MV, o MV é dimensionado para obter o bloco cruzado na imagem atual. O decodificador calcula então o MVP dimensionado e o atribui ao bloco cruzado (como mostrado como o bloco apontado pelas setas pontilhadas 206, 208).
[0064] A Figura 3 mostra um exemplo do modo de mesclagem de correspondência bilateral de PMVD. Para correspondência bilateral, o decodificador encontra os dois blocos de referência mais semelhantes em LIST_0 e LIST_1 que estão na mesma trajetória. Como mostrado na Figura 3, para a imagem atual (ou cur píc) 300, o decodificador seleciona um macrobloco (ou bloco) 302 no quadro de referência RefO
Petição 870190062098, de 03/07/2019, pág. 45/121
22/59
304 de LIST_0 e um segundo bloco 306 no quadro de referência Refl 308 de LIST_1. O decodificador essencialmente assume que o movimento é constante, e usa o ponto médio de ambos os macroblocos para gerar a trajetória de movimento 310. O decodificador usa a trajetória de movimento 310 para encontrar o macrobloco de previsão atual (ou bloco) 312 na imagem atual 300. O decodificador calcula a diferença entre o bloco 302 e o bloco 306. Se houver apenas uma pequena diferença, então o decodificador sabe que os blocos são muito semelhantes. Em alguns exemplos, o decodificador pode calcular a soma da distância absoluta (ou SAD) para calcular a diferença entre os dois blocos. O decodificador altera a trajetória de movimento para minimizar a diferença entre os blocos.
[0065] O decodificador constrói a lista de vetor de movimento inicial (MV) em LIST_0 e LIST_1, respectivamente. O decodificador usa onze candidatos para a lista, incluindo sete MVs de candidatos de mesclagem e quatro previsões de MV derivadas temporalmente (ou MVPs). O decodificador avalia esses onze candidatos para selecionar o melhor ponto de partida. Em particular, o decodificador procura um par entre os dois quadros vizinhos. Ao considerar os candidatos para cada lista, o decodificador analisa os 22 vetores de movimento para derivar 22 pares de vetores de movimento. O decodificador gera os pares de MV por dimensionar a trajetória de movimento. Para cada MV em uma lista, um par de MV é gerado pela composição deste MV e o MV espelhado que é derivado por dimensionar o MV para a outra lista. Para cada par de MV, dois blocos de referência são compensados usando este par de MV. A Figura 4 mostra um exemplo 400 de
Petição 870190062098, de 03/07/2019, pág. 46/121
23/59 dimensionar uma trajetória de movimento. Em particular, a trajetória de movimento 402 da imagem atual para refl em LIST_0 é dimensionada como mostrado com a trajetória de movimento 404 de imagem atual para refO em LIST_1. O decodificador calcula um custo para cada um dos 22 pares de vetores de movimento (por exemplo, usando SAD) e seleciona o par de MV com o menor custo como o ponto de partida do modo de mesclagem de correspondência bilateral.
[0066] O decodificador refina, em seguida, o par de MV selecionado. O decodificador busca blocos diferentes ao redor do ponto inicial para decidir qual bloco é a melhor correspondência. Em alguns exemplos, a PU atual é dividida em sub-PUs. A profundidade da sub-PU é sinalizada no conjunto de parâmetros de sequência, SPS (por exemplo, 3). Em alguns exemplos, o tamanho de sub-PU mínimo é um bloco 4x4. Para cada sub-PU, vários MVs iniciais em LIST_0 e LIST_1 são selecionados, o que inclui MVs de MV derivado de nível de PU, MV zero, TMVP colocalizado de HEVC de sub-PU atual e bloco inferior direito, MVP derivado temporal de sub-PU atual, e MVs de esquerda e acima de PUs/sub-PUs. Por utilizar o mecanismo similar em pesquisa de nível de PU, o melhor par de MV para a sub-PU é selecionado. Em alguns exemplos, o decodificador usa um algoritmo de Pesquisa em Diamante para pesquisar os diferentes blocos. Em seguida, o par de MV final é usado como o melhor par de MV de nível de PU e de nível de sub-PU.
[0067] Em resumo, em alguns exemplos, o modo de mesclagem de correspondência bilateral usa as listas de MV primeiro, avalia os pares de MV candidatos para obter o par de MV inicial e depois refina o par para determinar o melhor
Petição 870190062098, de 03/07/2019, pág. 47/121
24/59 par de MV final.
[0068] Para modo de mesclagem de correspondência de modelo, a suposição é que para o decodificador decodificar o bloco atual, o decodificador pode usar o bloco vizinho usando um modelo para encontrar uma melhor correspondência. Assim, o decodificador pode usar o bloco vizinho para encontrar uma melhor correspondência e, em seguida, usa o vetor de movimento de melhor correspondência. A Figura 5 mostra uma técnica exemplar para o modo de mesclagem de correspondência de modelo. Referindo à Figura 5, o modelo 502 inclui os pixels reconstruídos de quatro linhas acima do bloco atual 504 e a partir de quatro colunas à esquerda do bloco atual 504 para realizar a correspondência na Ref 0 506 para Imagem Atual 508. Portanto, diferente do modo de mesclagem de correspondência bilateral, modo de mesclagem de correspondência de modelo não usa dois quadros de referência - usa apenas um quadro de referência.
[0069] Como o modo de mesclagem de correspondência bilateral, correspondência de dois estágios também é aplicada à correspondência de modelo. Na correspondência de nível de PU, onze MVs iniciais em LIST_0 e LIST_1 são selecionados respectivamente. Esses MVs incluem sete MVs a partir de candidatos de mesclagem e quatro MVs a partir de MVPs derivados temporais. Dois conjuntos de MV iniciais diferentes são gerados para duas listas. Para cada MV em uma lista, o custo de SAD do modelo com o MV é calculado. 0 MV com o menor custo é o melhor MV. Em seguida, a pesquisa em diamante é realizada para refinar o MV. A precisão do refinamento é de 1/8-pel. O intervalo de pesquisa de refinamento é restrito em ± 8 pixels. O MV final é o MV
Petição 870190062098, de 03/07/2019, pág. 48/121
25/59 derivado de nível de PU. Os MVs em LIST_0 e LIST_1 são gerados de forma independente.
[0070] Para o segundo estágio, pesquisa de nível de sub-PU, a atual PU é dividida em sub-PUs. A profundidade da sub-PU é sinalizada em SPS (por exemplo, 3) . O tamanho de sub-PU mínimo é de 4x4. Para cada sub-PU nos limites de PU esquerdo ou de topo, vários MVs iniciais em LIST_0 e LIST_1 são selecionados, o que inclui MVs de MV derivado de nível de PU, MV zero, TMVP colocalizado de HEVC de sub-PU atual e bloco inferior direito, MVP derivado temporal da sub-UP atual, e MVs das PUs/sub-PUs esquerdas e superiores. Por utilizar o mecanismo similar em pesquisa de nível de PU, o melhor par de MV para a sub-PU é selecionado. A pesquisa em diamante é realizada para refinar o par de MV. A compensação de movimento para esta sub-PU é executada para gerar o preditor para esta sub-PU. Para aqueles PUs que não estão nos limites de PU esquerdo ou de topo, o segundo estágio, a pesquisa de nível de sub-PU, não é aplicado e os MVs correspondentes são definidos como iguais aos MVs no primeiro estágio.
[0071] Quando um par de MV de bi-previsão é
sinalizado (por exemplo, para o modo de mesclagem, ao
selecionar um candidato de mesclagem bi· -previsto), um
processo de refinamento de MV de lado de decodificador (DMVR) pode ser realizado para refinar os MVs de LIST_0 e LIST_1 para melhor eficiência de codificação. Um exemplo do processo de DMVR foi proposto por HiSilicon em JVET-D0029, intitulado Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching, que é aqui incorporado por referência nesse relatório descritivo na sua totalidade. A Figura 9
Petição 870190062098, de 03/07/2019, pág. 49/121
26/59 mostra um processo de DMVR 900 que utiliza a imagem de referência 0 902 e a imagem de referência 1 904, de acordo com alguns exemplos. No processo de DMVR 900, um bloco biprevisto (o modelo bi-previsto) é gerado usando a bi-previsão do bloco de referência 906 de MV0 908 e o bloco de referência 910 de MV1 912. O bloco bi-previsto é usado como um novo bloco atual Cur' (no lugar do bloco atual original 914) para realizar a estimativa de movimento para pesquisar um bloco de melhor correspondência na Imagem de Referência 0 902 e Imagem de Referência 1 904, respectivamente. Os MVs refinados (MV0' e MV1' , não mostrados na Figura 9) são usados para gerar um bloco de previsão bi-previsto final para o bloco atual.
[0072] Em algumas modalidades, DMVR usa uma pesquisa de dois estágios para refinar os MVs do bloco atual para gerar MV0' e MV1'. A Figura 10 mostra um processo de pesquisa de dois estágios exemplar 1000 para pesquisar um novo bloco de correspondência (por exemplo, melhor) usando o bloco biprevisto, de acordo com algumas modalidades. Como mostrado na Figura 10, para um bloco atual na Imagem de Referência 0, o custo do candidato de MV atual é primeiro avaliado no bloco quadrado 1002 (também referido como L0_pred). Por exemplo, o custo do bloco 1002 pode ser calculado como a soma da diferença absoluta (SAD) de (Cur' - L0_pred) para calcular o custo inicial. No primeiro estágio da pesquisa, é realizada uma pesquisa quadrada de pixel inteiro em torno do bloco 1002. Como mostrado neste exemplo, oito candidatos (os oito grandes círculos 1004A-1004H na Figura 10, coletivamente referidos como 1004) são avaliados. A distância entre dois círculos adjacentes (por exemplo, 1004A e 1004B) e a
Petição 870190062098, de 03/07/2019, pág. 50/121
27/59 distância entre o bloco quadrado 1002 e o círculo adjacente (por exemplo, 1004B) é um pixel. Um filtro de 8 derivações pode ser usado para gerar os oito blocos candidatos para cada um dos blocos 1004, e o custo de cada candidato pode ser avaliado usando o SAD. O candidato dos oito candidatos 1004 com o melhor custo (por exemplo, o menor custo, se usando o SAD) é selecionado como o melhor candidato de MV no primeiro estágio, mostrado como 1004H neste exemplo. No segundo estágio, uma pesquisa quadrada de meio pixel é executada em torno do melhor candidato de MV (1004H, neste exemplo) do primeiro estágio, como mostrado como oito círculos pequenos 1006A-1006H (coletivamente meio-pixels 1006). Um filtro de 8 derivações também pode ser usado para gerar um bloco candidato para cada um dos meio-pixels 1006), e o custo pode ser determinado usando o SAD. O candidato de MV com o melhor custo (por exemplo, menor custo) é selecionado como o MV final que é usado para a compensação de movimento final. O processo é repetido para Imagem de Referência 1 904 para determinar o MV final para a Imagem de Referência 1. O bloco bi-previsto final é regenerado usando os MVs refinados.
[0073] A Figura 6 mostra uma arquitetura de decodificador exemplar 600, de acordo com algumas modalidades. O Decodificador de Entropia inclui, por exemplo, um decodificador de entropia CABAC ou CAVLC, que analisa as sintaxes a partir do fluxo de bits. O ColMV DMA 610 armazena os MVs temporais colocalizados. O Despachante de MV 612 reconstrói os MVs dos blocos e emite a instrução de busca de memória para o cache de MC 614 e DRAM (não mostrado) através do árbitro de interface de memória 616. A
Petição 870190062098, de 03/07/2019, pág. 51/121
28/59
Transformada Inversa 618 inclui quantização inversa e Transformada Inversa (IQIT) que gera o residual reconstruído 620. O bloco de previsão 622 gera a compensação inter movimento e preditores de intra previsão. O desbloqueio 624 destina-se a reduzir o artefato de bloco e o Rec DMA 626 armazena os pixels reconstruídos para a DRAM externa. Detalhes adicionais de componentes exemplares desta arquitetura são discutidos em C.-T. Huang e cols., A 249MPixel/s HEVC video-decoder chip for Quad Full HD applications, Resumo de Publicações Técnicas de Conferência de Circuitos de Estado Sólido Internacional de IEEE (ISSCC), pp. 162-163, fevereiro de 2013, que é aqui incorporado por referência nesse relatório descritivo na sua totalidade. Destaca-se que a arquitetura é dividida em quatro estágios a fim de segmentar as instruções da arquitetura: o estágio de EC 602, o IQIT (quantização inversa e transformada inversa)/estágio de busca 604, o estágio de reconstrução 606 e o estágio de filtro de loop 608. Em HEVC e H.264, o MV final pode ser derivado tanto no estágio de EC 602 (que inclui análise) e no estágio de reconstrução 606. Em algumas implementações, o decodificador deriva o MV final no estágio de análise, e pré-busca os dados de pixel de referência necessários no estágio de análise (estágio de EC 602). Isso pode ser feito, por exemplo, para reduzir/ocultar o tempo de acesso à DRAM.
[0074] A Figura 7 mostra um exemplo de uma execução de segmentação de instruções de decodificador 700 ao executar uma arquitetura de decodificador, tal como a arquitetura de decodificador mostrada na Figura 6, de acordo com algumas modalidades. A Figura 7 inclui o estágio de análise 702,
Petição 870190062098, de 03/07/2019, pág. 52/121
29/59 durante o qual os vetores de movimento são reconstruídos como descrito acima. 0 estágio de IQ/IT 704-1 gera o residual reconstruído para o bloco atual. O estágio de Busca de Pixels de Referência 704-2 busca dados de pixel de referência a partir da memória. Os quadros de referência são frequentemente armazenados na memória externa, como DRAM. Assim, se o decodificador quiser fazer compensação de movimento em um quadro de referência, o decodificador precisa primeiro ir para a memória externa para recuperar os dados de referência. Normalmente, muito tempo de latência é necessário para obter dados da memória externa. O estágio de reconstrução Intra/MC (Compensação de Movimento) 706 realiza a previsão. O estágio 708 de desbloqueio (DB)/Deslocamento Adaptativo de Amostra (SAO) executa o processo de filtragem em loop para melhorar a qualidade do quadro decodificado.
[0075] Geralmente, o decodificador decodifica primeiro CU0, depois CU1 e assim por diante. Para dar um exemplo usando CU0, em tO, o decodificador decodifica CU0 no estágio de análise 702, incluindo a reconstrução dos MVs. Então, em tl, CU0 move para o estágio de IQ/IT 704-1. A fim de fazer compensação de movimento no estágio de Reconstrução Intra/MC 706, o decodificador precisa fazer uma pré-busca no estágio anterior (o estágio de busca de Pixels de Referência 704-2) .
[0076] Como pode ser visto na Figura 7, a fim de esconder o tempo de atraso para buscar dados da memória (por exemplo, para que não afete a execução de segmentação de instruções), uma vez que o decodificador precisa conhecer o vetor de movimento antes da reconstrução realizada no estágio de Reconstrução Intra/MC 706, os dados são pré-buscados no
Petição 870190062098, de 03/07/2019, pág. 53/121
30/59 estágio de busca de Pixels de Referência 704-2 e armazenados na memória local (por exemplo, memória SRAM ou cache). Por exemplo, nos decodificadores de video MPEG-2/4, H.264/AVC e HEVC, os MVs podem ser reconstruídos no estágio de análise. De acordo com os MVs reconstruídos, os pixels de referência necessários podem ser buscados na DRAM e armazenados na memória local, por exemplo, memória SRAM ou cache. No estágio de Reconstrução Intra/MC 706, os dados de referência podem ser carregados da memória local sem ciclos de latência.
[0077] No entanto, as ferramentas de refinamento de preditor de lado de decodificador usam o(s) bloco(s) vizinho(s) para derivar o vetor de movimento (por exemplo, PMVD, por exemplo, como o modo de mesclagem de correspondência de modelo usa o bloco vizinho para derivar o vetor de movimento). No entanto, o bloco de modelo não é gerado até o terceiro estágio (o estágio de Reconstrução Intra/MC 706). Por exemplo, quando o PMVD é aplicado, os MVs finais de um bloco codificado de PMVD dependem do processo de pesquisa de PMVD no estágio de Reconstrução Intra/MC 706, o que significa que os MVs não podem ser reconstruídos no estágio de Análise 702 e, portanto, os dados de pré-busca não são viáveis no estágio de busca de Pixels de Referência 704-2 .
[0078] A Figura 8 mostra um exemplo de uma execução de segmentação de instruções de decodificador ao executar uma ferramenta de refinamento de preditor de lado de decodificador. Por exemplo, e usando o PMVD como exemplo, no tempo t2, uma vez que os MVs para CU0 dependem do processo de pesquisa de PMVD no estágio de Reconstrução Intra/MC 706 (que também é realizado em t2), os MVs não podem ser
Petição 870190062098, de 03/07/2019, pág. 54/121
31/59 reconstruídos no estágio de Análise 702 para CU01 (no tempo tl), e assim os dados não podem ser pré-buscados para CU1 em t2 no estágio de busca de Pixels de Referência 704-2. Esse problema afeta de maneira semelhante o processamento de cada CU e, portanto, resulta, finalmente, em apenas um acabamento de processamento de CU por dois intervalos de tempo. Por exemplo, a Figura 8 mostra que para t4 e t5, o decodificador apenas completa o processamento CU1, comparado com a Figura 7, em que CU1 completa o processamento em t4 e CU2 completa o processamento em t5.
[0079] Os problemas de pré-busca de dados podem ser abordados quando técnicas de refinamento de previsão de lado de decodificador (por exemplo, PMVD) são usadas para decodificação. Por exemplo, as técnicas permitem que os dados sejam pré-buscados de uma maneira que ainda oculta os ciclos de latência, tal como mostrado na Figura 7, em vez de causar um atraso como mostrado na Figura 8. Para facilitar a ilustração, a discussão abaixo refere-se a PMVD como um exemplo, embora uma pessoa técnica no assunto possa apreciar que as técnicas podem ser adaptadas para outras técnicas de refinamento de previsão de lado de decodificador (por exemplo, BIO e DMVR).
[0080] De acordo com algumas modalidades, o MV candidato original é preservado no buffer de MV para o próximo processo de decodificação. Em alguns exemplos, os MVs candidatos de mesclagem selecionados (por exemplo, os MVs iniciais ou não refinados) são armazenados de volta nos buffers de MV para que o decodificador possa referenciar os blocos vizinhos e os blocos/imagens colocalizados. Portanto, de acordo com alguns exemplos, o MC do bloco de PMVD (por
Petição 870190062098, de 03/07/2019, pág. 55/121
32/59 exemplo, executado no estágio de Reconstrução Intra/MC 706) usa os MVs derivados de PMVD, mas os MVs candidatos de mesclagem selecionados são armazenados de volta nos buffers de MV para a referência futura. Isso pode permitir, por exemplo, que os MVs sejam reconstruídos no estágio de Análise 702, e os pixels de referência possam ser pré-buscados no estágio 704-2. Se o bloco atual for um bloco codificado de PMVD, um bloco de referência maior (por exemplo, incluindo o intervalo de pesquisa de refinamento) pode ser pré-buscado. Portanto, em alguns exemplos, o MV não é refinado para o bloco atual, mas o decodificador usa o MV refinado para compensação.
[0081] Em alguns exemplos, o decodificador pode ser configurado para não alterar o MV no buffer de MV. Por exemplo, o decodificador pode armazenar o ponto de partida (por exemplo, o MV(s) inicial) no buffer de MV, e fazer o refinamento para gerar um refinamento de MV que é usado apenas para gerar dados de compensação de movimento, sem alterar o MV no buffer de MV. Os buffers de MV para referência futura (por exemplo, a lista de candidatos de mesclagem e a geração de lista de candidatos de AMVP) não são alterados.
[0082] Em alguns exemplos, o decodificador pode usar um buffer separado para refinamento. Por exemplo, o decodificador pode recuperar o MV inicial, executar o PMVD e executar o refinamento sem armazenar o MV refinado no buffer de MV original - o decodificador armazena o MV refinado em um buffer temporal.
[0083] Em alguns exemplos, o decodificador pode sinalizar um candidato inicial para o PMVD. Por exemplo, o decodificador pode sinalizar um índice de candidato inicial
Petição 870190062098, de 03/07/2019, pág. 56/121
33/59 que é usado para selecionar um MV inicial a partir de uma lista de candidatos de MV. Isso pode ser feito, por exemplo, de modo que o decodificador saiba qual candidato dos onze candidatos será usado como candidato inicial para o PMVD. 0 decodificador pode gerar primeiro os onze candidatos iniciais, e o codificador pode sinalizar ao decodificador qual é o melhor. Esta sinalização pode permitir, por exemplo, que o decodificador pule a correspondência de modelo e prossiga diretamente para o refinamento, pois o decodificador reconhece o candidato inicial (por exemplo, o decodificador pode realizar refinamento usando correspondência de modelo e a técnica Pesquisa em Diamante para refinar o MV em torno do candidato inicial). Embora o MV seja refinado pela pesquisa em diamante, o método proposto armazenará apenas o candidato inicial, não o vetor de movimento refinado.
[0084] Em alguns exemplos, para o PMVD (por exemplo, incluindo o modo de mesclagem de correspondência bilateral e o modo de mesclagem de correspondência de modelo), os MVs de LIST_0 e LIST_1 em candidatos de mesclagem são usados como MVs de inicio. Em alguns exemplos, um melhor candidato de MV pode ser derivado implicitamente por pesquisar todos esses MVs. Isso pode exigir muita largura de banda de memória. Neste exemplo, o índice de mesclagem para modo de mesclagem de correspondência bilateral ou modo de mesclagem de correspondência de modelo é sinalizado. O índice de mesclagem sinalizado pode indicar, por exemplo, os melhores MVs iniciais em LIST_0 e LIST_1 no modo de mesclagem de correspondência de modelo, e os dois melhores pares de MV (um é derivado da LIST 0 e o outro é derivado da LIST 1) em
Petição 870190062098, de 03/07/2019, pág. 57/121
34/59 modo de mesclagem de correspondência bilateral. Por sinalizar o índice de mesclagem, o passo de correspondência de modelo pode ser limitado a, por exemplo, uma pesquisa de refinamento em torno do candidato de mesclagem sinalizado. Para correspondência bilateral, o decodificador pode realizar a estimativa de custo para selecionar o melhor par de MV a partir dos dois pares de MV e realizar a pesquisa de refinamento. Para correspondência bilateral, se o candidato de mesclagem for um MV unidirecional, seu MV correspondente em outra lista poderá ser gerado usando o MV espelhado (dimensionado) . Em algumas modalidades, utilizando um método de geração de MV predefinido, os MVs iniciais em LIST_0, LIST_1, e/ou os pares de MV são conhecidos. Os melhores MVs iniciais em LIST_0 e/ou LIST_1, ou o melhor par de MV são sinalizados explicitamente para reduzir o requisito de largura de banda.
[0085] Em alguns exemplos, quando um índice de mesclagem é sinalizado, o decodificador pode utilizar ainda o MV selecionado para excluir ou selecionar alguns candidatos no primeiro estágio (Correspondência de nível de PU) . Por exemplo, o decodificador pode excluir alguns MVs na lista de candidatos que estão distantes dos MVs selecionados. Como outro exemplo, o decodificador pode escolher N MVs na lista de candidatos que são os mais próximos do MV selecionado, mas em diferentes quadros de referência.
[0086] Como explicado nesse relatório descritivo, algumas técnicas proporcionam a sinalização do MV inicial (por exemplo, para sinalizar o candidato inicial, tal como descrito acima para o PMVD) por gerar uma lista de candidatos de MV inicial e sinalizar um índice de candidato. Por
Petição 870190062098, de 03/07/2019, pág. 58/121
35/59 utilizar o PMVD como exemplo, uma vez que o PMVD executa o refinamento de MV, dois candidatos de MV iniciais semelhantes podem ter o mesmo MV final refinado. Assim, os MVs semelhantes na geração de lista de candidatos podem ser removidos da lista de candidatos, ou podados, pois podem ter o mesmo MV final refinado, já que o PMVD procura um mínimo local em torno do candidato inicial.
[0087] Uma lista de candidatos de vetor de movimento pode ser podada e/ou criada usando as técnicas descritas nesse relatório descritivo. A Figura 16A mostra um método exemplar 1600 para podar uma lista de candidatos de vetor de movimento, de acordo com algumas modalidades. A Figura 16B mostra um método exemplar 1650 para criar uma lista de candidatos de vetor de movimento, de acordo com algumas modalidades. Por exemplo, a lista pode estar vazia primeiro, e sempre que um novo candidato pode ser adicionado, as técnicas podem determinar se o novo candidato é redundante ou não com qualquer candidato de vetor de movimento existente na lista. Se for redundante, o novo candidato não será adicionado.
[0088] Referindo à Figura 16A, no passo 1602, o decodificador armazena uma lista de candidatos de vetor de movimento inicial. Por exemplo, o processo tradicional de geração de lista de candidatos de mesclagem (por exemplo, descrito acima) pode ser usado para gerar a lista de candidatos de mesclagem de PMVD. Referindo aos passos 16041610 na Figura 16A, para derivação de MV, um MV recémadicionado pode ser comparado com os MVs que já estão na lista de candidatos. Se um (ou mais) dos MVs for semelhante ao MV recém-adicionado, o MV recém-adicionado será removido
Petição 870190062098, de 03/07/2019, pág. 59/121
36/59 da lista. Em particular, no passo 1604, o decodificador compara o novo candidato com um candidato existente na lista de MVs candidatos para determinar uma similaridade dos candidatos. No passo 1606, o decodificador compara a semelhança com um limiar predeterminado. Se a semelhança não estiver abaixo do limiar predeterminado, o decodificador remove o candidato em 1608 (e prossegue para o passo 1610) . Caso contrário, se a similaridade estiver abaixo do limiar predeterminado, o método prossegue para o passo 1610. No passo 1610, se houver mais candidatos na lista de MVs candidatos a serem verificados, o método 1600 retornará para o passo 1604 para cada candidato remanescente na lista de candidatos. Caso contrário, se todos os candidatos de MV na lista de candidatos de MV tiverem sido comparados com o novo candidato (e cada comparação tiver sido acima do limiar no passo 1606), no passo 1612 o decodificador manterá o novo candidato de MV na lista de candidatos de MV. No passo 1614, o método 1600 toma os primeiros N candidatos na lista de candidatos de vetor de movimento inicial. O valor de N pode ser um valor predeterminado. N pode ser usado para garantir que o tamanho de lista final esteja abaixo de um tamanho máximo predeterminado. Em alguns exemplos, se a lista de candidatos de vetor de movimento inicial tiver menos do que N candidatos, então o passo 1614 não modifica a lista de candidatos de vetor de movimento inicial. O método 1600 prossegue para o passo 1616 e termina.
[0089] Referindo à Figura 16B, o método 1650 inclui alguns passos semelhantes ao método 1600 da Figura 16A, incluindo passos 1602, 1604, 1606, 1610 e 1616, como discutido mais abaixo. No passo 1602, o decodificador
Petição 870190062098, de 03/07/2019, pág. 60/121
37/59 armazena uma lista de candidatos de vetor de movimento inicial. Por exemplo, a lista de candidatos de vetor de movimento inicial pode estar vazia. No passo 1652, o decodificador gera um novo candidato de vetor de movimento. No passo 1604, o decodificador compara o novo candidato com um candidato existente na lista de candidatos de MV inicial para determinar uma similaridade dos candidatos. Em alguns exemplos, se ainda não houver nenhum candidato na lista de candidatos de MV inicial, embora não seja mostrado, o método 1650 pode seguir diretamente para o passo 1654 e adicionar o candidato à lista de candidatos de MV inicial. No passo 1606, o decodificador compara a semelhança com um limiar predeterminado. Se a semelhança não estiver abaixo do limiar predeterminado, o decodificador prossegue para o passo 1654 e não adiciona o novo MV à lista (e prossegue para o passo 1610) . Se a semelhança estiver abaixo do limiar predeterminado, o método 1650 prossegue para o passo 1654 e adiciona o candidato à lista. A partir do passo 1654, o método 1650 prossegue para o passo 1656 e determina se o tamanho da lista é igual a um tamanho predeterminado. Caso contrário, o método prossegue para o passo 1610. Caso contrário, o método prossegue para o passo 1616 e termina. No passo 1610, se houver mais candidatos a verificar, o método 1650 regressa ao passo 1604 para cada candidato remanescente. Caso contrário, o método 1650 prossegue para o passo 1616 e termina.
[0090] Em algumas modalidades, a similaridade do MV pode ser determinada com base em se (a) os índices de quadro de referência (ou POC) são os mesmos, e/ou (b) a diferença de MV é menor que um limiar. Por exemplo, a soma da distância
Petição 870190062098, de 03/07/2019, pág. 61/121
38/59 de MV absoluta de MVx e MVy pode ser calculada usando a Equação 1:
Equação 1: abs (MVxO - MVxl) + abs (MVyO - MVyl) < K;
onde K é uma distância de pixel como, por exemplo, meio pixel, um pixel inteiro, dois pixels inteiros, três pixels inteiros, três e meio pixels inteiros, etc.
[0091] Como outro exemplo, a distância de MV absoluta de MVx e a distância de MV absoluta de MVy podem ser comparadas com K, usando a Equação 2 abaixo:
Equação 2: abs (MVxO - MVxl) < K && abs (MVyO - MVyl) < K;
onde K, como na equação um, pode ser meio pixel, um pixel inteiro, dois pixels inteiros, três pixels inteiros, três e meio pixels inteiros, etc.
[0092] Em algumas modalidades, por exemplo, para o modo de mesclagem de correspondência bilateral, o par de candidatos de MV pode ser verificado para determinar se eles estão na mesma trajetória de movimento. Por exemplo, o MV candidato de mesclagem original pode ser verificado para determinar se os MVs em LIST_0 e LIST_1 estão na mesma trajetória de movimento. A Figura 14 mostra um exemplo de se os pares de candidatos de MV estão na mesma trajetória de movimento, de acordo com algumas modalidades. Se os MVs em LIST_0 e LIST_1 estiverem na mesma trajetória de movimento mostrada em 1402, o candidato de MV é adicionado à lista; caso contrário, se os MVs em LIST_0 e LIST_1 não estiverem na mesma trajetória de movimento mostrada em 1404, os MVs de LIST_0 e LIST_1 serão separados em dois MVs candidatos. Para cada um dos dois MVs candidatos separados, o MV de lista em falta é preenchido com o MV espelhado da outra lista, conforme mostrado por 1406 e 1408. Como outro exemplo, cada
Petição 870190062098, de 03/07/2019, pág. 62/121
39/59 candidato de MV de bi-previsão é separado em dois candidatos. Um candidato é o MV de LIST_0 e o outro é o MV de LIST_1. Em seguida, cada candidato (por exemplo, cada candidato uniprevisto) é usado para gerar o MV de lista em falta por preencher o MV de lista em falta com o MV espelhado da lista válida.
[0093] Na pesquisa de PMVD MV, um método de pesquisa de MV pode ser predefinido (por exemplo, uma pesquisa em diamante de três passos). Por exemplo, para uma pesquisa em Diamante, o tamanho do passo da pesquisa em Diamante de primeiro passo é metade de um pixel (meio pixel). O tamanho de passo da pesquisa cruzada de segundo passo é de um quarto de um pixel (quarto de pixel) . O tamanho de passo da pesquisa cruzada de terceiro passo é 1/8 de um pixel (1/8 pixel). Em algumas modalidades, tanto (a) o índice de mesclagem do MV inicial como (b) um MVD de grão grosseiro são sinalizados. O MVD pode ser o índice de posição de refinamento da pesquisa em diamante de primeiro passo e/ou um MVD convencional. A unidade de MVD pode ser 1/16 de pixel, 1/8 de pixel, um quarto de pixel, meio pixel, um pixel, dois pixels ou qualquer unidade predefinida. Os MVs do índice de mesclagem selecionado mais o MVD sinalizado (ou o MV da posição de refinamento) podem ser usados como MV inicial de PMVD, que são armazenados no buffer de MV para referência de derivação de candidato de mesclagem e candidato de AMVP. Em alguns exemplos, para o codificador e/ou o decodificador, a pesquisa de PMVD pode iniciar a partir do MV inicial de PMVD. A MV derivada de PMVD final é apenas para o MC. Os MVs iniciais do bloco codificado de PMVD podem ser reconstruídos no estágio de análise.
Petição 870190062098, de 03/07/2019, pág. 63/121
40/59 [0094] Em alguns exemplos, apenas um MVD, e/ou apenas um índice de posição de refinamento de MVD, é sinalizado. Se o candidato de mesclagem for um candidato bi-previsto, o MVD será adicionado somente na LIST_0 ou na LIST_1. Para o modo de mesclagem de correspondência bilateral, se o MVD for adicionado na LIST_0, o MV de início da LIST_1 poderá ser o MV espelhado do MV de início da LIST_0.
[0095] Em alguns exemplos, o MVD de grão grosseiro não é codificado, mas derivado no processo de pesquisa no decodificador. Por exemplo, podemos dividir o processo de pesquisa em três estágios, a pesquisa em diamante de primeiro passo, a pesquisa cruzada de segundo passo e a pesquisa cruzada de terceiro passo. O MVD de grão grosseiro pode ser o resultado do processo de pesquisa na pesquisa em diamante de primeiro passo ou na pesquisa cruzada de segundo passo.
[0096] Em HEVC, uma imagem é dividida em unidades de árvore de codificação (CTUs), que são a unidade de processamento básica para HEVC. As CTUs são codificadas na ordem de varredura de raster. Em uma arquitetura de decodificação de segmentação de instruções, a maioria das informações das linhas de CTU superiores está disponível no estágio de análise (por exemplo, incluindo a informação de MV), já que a linha já foi processada. Em alguns exemplos, os MVs derivados de lado de decodificador nas CTUs a partir da linha de CTU superior podem ser referenciados (ou usados), por exemplo, para lista de candidatos de mesclagem e geração de lista de AMVP, uma vez que a informação está disponível no estágio de análise. O decodificador pode usar os MVs derivados nessas CTUs, embora os MVs derivados de lado de decodificador na linha de CTU atual não possam ser usados,
Petição 870190062098, de 03/07/2019, pág. 64/121
41/59 uma vez que não estão disponíveis.
[0097] Portanto, em algumas modalidades, uma restrição de linha de CTU pode ser usada com as técnicas descritas nesse relatório descritivo, de modo que os MVs derivados de PMVD na linha de CTU superior podem ser referidos (por exemplo, quando não se referindo ao MV do bloco codificado de PMVD) ou ser usada (por exemplo, ao armazenar os MVs candidatos de mesclagem, armazenar os MVs candidatos de mesclagem e MV espelhado, enviar o índice de mesclagem para PMVD e MV espelhado bilateral (e avaliar apenas um MV), sinalizar o índice de mesclagem e MVD de grão grosseiro, e/ou modo AMVP e PMVD).
[0098] Por exemplo, considere as técnicas discutidas nesse relatório descritivo ao armazenar os MVs candidatos de mesclagem, armazenar os MVs candidatos de mesclagem e MV espelhado, e enviar o índice de mesclagem para PMVD e MV espelhado bilateral (e avaliar apenas um MV). Ao referir-se aos blocos codificados de PMVD na linha de CTU atual, os MVs candidatos de mesclagem selecionados podem ser usados para derivação de candidato de mesclagem e derivação de candidato de AMVP. Quando referir-se aos blocos codificados de PMVD na linha de CTU superior, os MVs finais derivados de PMVD podem ser usados.
[0099] Como outro exemplo, considere as técnicas discutidas nesse relatório descritivo referentes à não se referir ao MV do bloco codificado de PMVD. Ao referir-se aos blocos codificados PMVD na linha de CTU atual, os MVs não estão disponíveis para derivação de candidato de mesclagem e derivação de candidato de AMVP. Quando referir-se aos blocos codificados de PMVD na linha de CTU superior, os MVs
Petição 870190062098, de 03/07/2019, pág. 65/121
42/59 derivados de PMVD finais são usados.
[00100] A restrição de linha de CTU pode ser alterada para restrição de CTU ou qualquer restrição de área predefinida ou derivada. Por exemplo, quando não referir-se ao MV de bloco codificado de PMVD, se a restrição de CTU for aplicada, os MVs dos blocos codificados de PMVD na CTU atual não estarão disponíveis enquanto os MVs dos blocos codificados de PMVD em CTUs diferentes estiverem disponíveis.
[00101] A compensação de movimento de bloco sobreposto (OBMC) é uma ferramenta de codificação que pode ser usada para reduzir artefatos de bloco na compensação de movimento. Um exemplo de como a OBMC é executada nos limites de bloco conforme descrito em JVET-F1001, intitulado Descrição de Algoritmo do Modelo de Teste de Exploração Conjunta 6 (JEM 6) , que é aqui incorporado por referência nesse relatório descritivo na sua totalidade. Para facilitar a ilustração, a descrição que segue faz referência a JVETF1001, mas esta descrição não pretende ser limitativa.
[00102] Para a OBMC, em alguns exemplos, o bloco vizinho é compensado pelo MV do bloco atual. Como mostrado na Figura 11, que é um resumo da Figura 14 na seção 2.3.4 do JVET-F1001, a OBMC é executada no nível de sub-bloco para todos os limites de bloco de compensação de movimento (MC), onde o tamanho de sub-bloco é igual a 4 χ 4. O JVET-F1001 explica que quando a OBMC é aplicada ao sub-bloco atual, além dos vetores de movimento atuais, os vetores de movimento de quatro sub-blocos vizinhos conectados, se disponíveis e se não forem idênticos ao vetor de movimento atual, também são usados para derivar o bloco de previsão para o sub-bloco
Petição 870190062098, de 03/07/2019, pág. 66/121
43/59 atual. Esses múltiplos blocos de previsão são baseados em múltiplos vetores de movimento que são combinados para gerar o sinal de previsão final do sub-bloco atual.
[00103] JVET-F1001 explica ainda que o bloco de previsão baseado em vetores de movimento de um sub-bloco vizinho é denotado como Pn, com N indicando um índice para os sub-blocos vizinhos acima, abaixo, esquerda e direita e bloco de previsão baseado em vetores de movimento do subbloco atual é indicado como Pc. Quando Pn baseia-se na informação de movimento de um sub-bloco vizinho que contém a mesma informação de movimento para o sub-bloco atual, OBMC não é realizada a partir de Pn. Caso contrário, todas as amostras de Pn são adicionadas à mesma amostra em Pc, ou seja, quatro linhas/colunas de Pn são adicionadas a Pc. Os fatores de ponderação {1/4, 1/8, 1/16, 1/32} são usados para Pn e os fatores de ponderação {3/4, 7/8, 15/16, 31/32} são usados para Pc. As excepções são pequenos blocos de MC, (quando a altura ou a largura do bloco de codificação é igual a 4 ou um CU é codificada com o modo de sub-CU), para o qual apenas duas linhas/colunas de Pn são adicionadas a Pc. Neste caso fatores de ponderação {1/4, 1/8} são utilizados para Pn e fatores de ponderação {3/4, 7/8} são utilizados para Pc. Para Pn gerado com base nos vetores de movimento do sub-bloco verticalmente (horizontalmente) vizinho, amostras na mesma linha (coluna) de Pn são adicionadas a Pc com um mesmo fator de ponderação. A Figura 12A mostra um resumo de alto nível exemplar do método de OBMC 1200. MVA 1202 representa o MV original. Utilizando uma técnica de preditor de lado de decodificador, o MVA 1202 é refinado para o MVA' 1204. O MVA' 1204 é utilizado para a OBMC nos limites de bloco,
Petição 870190062098, de 03/07/2019, pág. 67/121
44/59 resultando nas seções misturadas 1206 e 1208 com base no MVA' 1204.
[00104] Como descrito nesse relatório descritivo, são proporcionadas técnicas para permitir temporização de execução semelhante de técnicas de refinamento de preditor de lado de decodificador em comparação com a execução de métodos de decodificação tradicionais. Por exemplo, algumas modalidades incluem utilizar o MV inicial (não o MV refinado) ou o MV refinado parcial (MV inicial + deslocamento de MV sinalizado) para referenciar o bloco vizinho no estágio de análise e o estágio de pré-busca (por exemplo, estágios 602 e 604 na figura 6) . Em algumas modalidades, tais técnicas podem resultar na utilização do MV inicial para outro processamento, tal como o desbloqueio, OBMC, e derivação de MV colocalizada temporalmente. Usar o MV inicial para outro processamento desse tipo pode introduzir artefatos de bloqueio. Por exemplo, alguns artefatos de bloqueio podem ser encontrados quando a OBMC e/ou o desbloqueio usam um MV restaurado, de modo que a OBMC ou o desbloqueio não seja executado usando MVs refinados. A Figura 12B mostra um resultado exemplar 1250 da aplicação de OBMC usando o MV inicial 1202 (por exemplo, um MV restaurado) . Ao contrário da Figura 12A, com seções misturadas 1206 e 1208 com base em MVA' 1204, seções misturadas 1252 e 1254 na Figura 12B são baseadas em MVA 1202. Isto pode causar, por exemplo, um artefato de bloco, uma vez que o bloco vizinho é MVA' 1204, mas o MV usado para mistura é MVA 1202.
[00105] Para resolver esses problemas de processamento pós-análise, vários MVs podem ser usados. A Figura 15 mostra um método de decodificação exemplar 1500
Petição 870190062098, de 03/07/2019, pág. 68/121
45/59 para decodificar dados de video que utiliza dois MVs, de acordo com algumas modalidades. No passo 1502, o decodificador recebe dados de vídeo comprimidos relacionados com um conjunto de quadros. Nos passos 1504-1510, o decodificador calcula, utilizando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro a partir do conjunto de quadros. Em particular, no passo 1504, o decodificador recupera (por exemplo, a partir de um primeiro buffer) um primeiro vetor de movimento (por exemplo, um MV não refinado) associado ao quadro atual. No passo 1506, o decodificador executa uma primeira porção do processo de decodificação (por exemplo, o estágio de análise, uma derivação de MV/MVP e/ou uma técnica de refinamento de MV) usando o primeiro vetor de movimento. No passo 1508, o decodificador recupera um segundo vetor de movimento (por exemplo, a partir de um segundo buffer) associado ao quadro atual (por exemplo, um MV refinado). No passo 1510, o decodificador executa uma segunda porção do processo de decodificação (por exemplo, o estágio de reconstrução, a porção de compensação de movimento, uma porção de desbloqueio e/ou OBMC) usando o segundo vetor de movimento.
[00106] Com referência aos passos 1504-1510, em algumas modalidades podem ser utilizados dois conjuntos de MVs: (1) um primeiro conjunto de MVs utilizado para o estágio de análise (por exemplo, estágio de análise 702 na Figura 7), incluindo para derivação de MV/MVP e/ou pré-busca de pixels, e (2) um segundo conjunto de MVs para reconstrução (por exemplo, durante estágio de Rec. Intra/MC 706 na Figura 7), incluindo para compensação de movimento, OBMC e/ou
Petição 870190062098, de 03/07/2019, pág. 69/121
46/59 desbloqueio. 0 primeiro conjunto de MVs pode armazenar o MV original (não refinado), e o segundo conjunto de MVs pode armazenar o MV refinado. Tais técnicas podem facilitar, por exemplo, OBMC e/ou desbloqueio para usar o MV modificado. Usar o MV modificado pode evitar artefatos de bloqueio adicionais (por exemplo, que podem ser causados pela execução de OBMC e/ou desbloqueio usando MVs não refinados) e/ou pode fornecer um melhor ganho de codificação em comparação ao uso de MVs não refinados.
[00107] Por exemplo, para lidar com potenciais artefatos de bloqueio, um conjunto de MV não refinado individual pode ser usado no estágio de análise (por exemplo, para geração de lista de candidatos de mesclagem e/ou geração de lista de candidatos de AMVP) . De acordo com alguns exemplos, os MVs no conjunto de MV não refinado não são refinados por uma ferramenta de refinamento de MV de lado de decodificador, e podem ser usados para análise de MV e reconstrução de MV. Em seguida, os MVs reconstruídos são usados para a busca de pixels de referência. Os MVs refinados por uma ferramenta de refinamento de MV de lado de decodificador podem ser armazenados em outro conjunto de buffer de MV. Os MVs refinados podem ser usados para compensação de movimento, OBMC, desbloqueio e/ou outras ferramentas que não alterem o processo de análise de acordo com os MVs.
[00108] Uma vez que os MVs em outras imagens previamente refinadas já são refinados, a utilização dos MVs refinados nestas outras imagens não introduzirá o problema de pré-busca descrito acima em conjunto com a Figura 8. Em algumas modalidades, o conjunto de MV refinado pode ser usado
Petição 870190062098, de 03/07/2019, pág. 70/121
47/59 para derivação de MV temporal no passo de análise e no estágio de reconstrução de MV. Por exemplo, para geração de lista de candidatos de mesclagem e geração de lista de candidatos de AMVP, ao derivar os MVs vizinhos espaciais, o conjunto de MV não refinado é usado, enquanto ao derivar os MVs colocalizados temporais, o conjunto de MV refinado é usado.
[00109] Os MVs nas linhas de CTU superiores já podem ser refinados, como discutido acima. Em algumas modalidades, o primeiro conjunto de MV (por exemplo, usado para o estágio de análise) pode armazenar os MVs do segundo conjunto de MV (por exemplo, usado para reconstrução) se o MV estiver na linha de CTU superior. Por exemplo, se o MV estiver na linha de CTU superior, o estágio de análise pode acessar o segundo conjunto de MV para a linha de CTU superior. Isso pode, por exemplo, reduzir o tamanho do buffer de MV não refinado. Por exemplo, o tamanho do buffer pode ser reduzido apenas pela necessidade de manter o MV de uma linha de bloco de uma CTU e uma coluna de bloco de uma CTU. Os MVs que não serão referenciados pelos blocos espaciais vizinhos na linha de CTU atual no estágio de análise e no estágio de reconstrução de MV (por exemplo, para geração de lista de candidatos de mesclagem e a geração de lista de candidatos de AMVP) podem ser descartados. Assim, em algumas modalidades, apenas os MVs refinados precisam ser armazenados. Na implementação de hardware, os MVs não refinados podem ser armazenados apenas no estágio de segmentação de instruções de análise e no estágio de segmentação de instruções de pré-busca (por exemplo, os estágios 702 e 704-2 na Figura 7) . Em algumas modalidades, as técnicas podem utilizar os MVs refinados a
Petição 870190062098, de 03/07/2019, pág. 71/121
48/59 partir das CUs que foram processadas antes das N CUs anteriores. Por exemplo, se acharmos que CUs antes das últimas 5 CUs decodificadas estão prontas para serem usadas (por exemplo, sem introduzir problemas de pré-busca) , o MV nas CUs antes das 5 últimas CUs decodificadas pode usar o MV refinado. Em algumas modalidades, o mesmo conceito pode ser aplicado para o limite de pedaço/fatia. Por exemplo, se o MV de referência estiver em um bloco ou fatia diferente, o estágio de análise pode acessar o segundo conjunto de MV para o MV no pedaço diferente ou na fatia diferente.
[00110] Com relação ao primeiro conjunto de MV usado para o estágio de análise, o primeiro conjunto de MV (os MVs não refinados) pode ser usado para a geração de candidato de Mesclagem/AMVP e/ou geração de MV inicial. O MV gerado é usado para busca de pixels de referência. Em algumas modalidades, se a restrição de linha de CTU não for aplicada, o conjunto de MV contém (a) o MV não refinado da imagem atual (por exemplo, a coluna da esquerda, linha acima, e CTU atual), e (b) o MV refinado da outra imagem (por exemplo, a imagem colocalizada temporal). Por exemplo, referindo à Figura 13, o conjunto de MV contém o MV não refinado da imagem atual para a CTU atual 1302, a coluna da esquerda 1304 e a linha acima 1306. Em algumas modalidades, se a restrição de linha de CTU é aplicada, o conjunto de MV contém (a) o MV não refinado da linha de CTU atual (coluna da esquerda e CTU atual), (b) o MV refinado da linha de CTU superior (linha acima) e (c) o MV refinado da outra imagem. Por exemplo, referindo à Figura 13, o conjunto de MV contém o MV não refinado da linha de CTU atual para a CTU atual 1302 e a coluna da esquerda 1304, e o MV refinado da linha
Petição 870190062098, de 03/07/2019, pág. 72/121
49/59 de CTU superior para a linha acima 1306.
[00111] Em relação ao segundo conjunto de MV utilizado para o estágio de reconstrução, o segundo conjunto de MV pode ser usado para compensação de movimento, OBMC e/ou desbloqueio. O segundo conjunto de MV contém (a) o MV refinado da imagem atual, e (b) o MV refinado da outra imagem. Por exemplo, referindo à Figura 13, o conjunto de MV contém o MV refinado da imagem atual para a CTU atual 1302, a coluna da esquerda 1304 e a linha acima 1306.
[00112] O método proposto de múltiplos MVs/conjuntos de MV também pode ser aplicado no codificador. Por exemplo, um conjunto de MV não refinado individual pode ser usado no estágio de codificação de sintaxe, derivação de MV e/ou derivação de MVP (por exemplo, geração de lista de candidatos de mesclagem e/ou geração de lista de candidatos de AMVP). De acordo com alguns exemplos, os MVs no conjunto de MV não refinado não são refinados por uma ferramenta de refinamento de MV de lado de decodificador, e podem ser usados para codificação de MV e geração de MVP. Os MVs refinados por uma ferramenta de refinamento de MV de lado de decodificador podem ser armazenados em outro conjunto de buffer de MV. Os MVs refinados podem ser usados para compensação de movimento, OBMC, desbloqueio e/ou outras ferramentas que não alterem o processo de análise de acordo com os MVs.
[00113] Novamente, para recapitular, as ferramentas de refinamento de MV de lado de decodificador (por exemplo, PMVD, DMVR e BIO) podem alterar o MV de um bloco (por exemplo, o que pode resultar em um problema de análise ou de prébusca de pixels de referência como discutido acima). Em algumas modalidades, ao armazenar o MV refinado de volta, a
Petição 870190062098, de 03/07/2019, pág. 73/121
50/59 diferença entre o MV refinado e o MV inicial pode ser restringida a um limiar predefinido. Por exemplo, se a diferença entre o MV refinado e o MV inicial for maior que o limiar predeterminado (por exemplo, 4, 8 ou 16 pixels de distância inteiros), então o MV refinado é primeiro cortado (por exemplo, definido logo abaixo de, ou igual a, o limiar) e, em seguida, armazenado como o MV cortado. Por exemplo, o MV pode ser cortado por MV inicial ±4, 8 ou 16 pixels inteiros. Se a diferença entre o MV refinado e o MV inicial for menor que esse limiar, o MV refinado pode ser armazenado diretamente.
[00114] O impacto de uma ferramenta de refinamento de MV de lado de decodificador alterando o MV de um bloco pode ser reduzido por remover o processo de poda entre esses MVs refinados e outros MVs na derivação de MV/MVP (por exemplo, na reconstrução de lista de candidatos de mesclagem ou na reconstrução de lista de AMVP). Por exemplo, em algumas modalidades, o processo de poda utilizado para remover a redundância entre possíveis candidatos é aplicado apenas nos MVs que não são refinados no decodificador. Para os candidatos que podem ser refinados no decodificador, os MVs refinados podem ser adicionados diretamente à lista de candidatos sem usar o processo de podação. Em algumas modalidades, a eliminação dessa poda pode ser combinada com as outras técnicas descritas acima (por exemplo, o corte de MV refinado e os múltiplos MVs/conjuntos de MV) para reduzir ainda mais o impacto.
[00115] Em algumas modalidades, a OBMC é aplicada no estágio de reconstrução (por exemplo, estágio 606 na Figura 6). Portanto, duas técnicas diferentes podem ser usadas para
Petição 870190062098, de 03/07/2019, pág. 74/121
51/59 a OBMC (sozinha ou em combinação, como o uso de diferentes técnicas para sub-blocos ao longo de diferentes bordas). A primeira técnica é usar o MV inicial ou o MV refinado parcial (por exemplo, o MV não refinado) armazenado no buffer de MV para a OBMC. A segunda técnica é usar o MV refinado de lado de decodificador (por exemplo, o MV refinado) para a OBMC.
[00116] As técnicas que operam de acordo com os princípios descritos nesse relatório descritivo podem ser implementadas de qualquer maneira adequada. Os blocos de processamento e decisão dos fluxogramas acima representam passos e atos que podem ser incluídos nos algoritmos que executam esses vários processos. Os algoritmos derivados desses processos podem ser implementados como software integrado com e direcionando a operação de um ou mais processadores de propósito único ou múltiplos propósitos, podendo ser implementados como circuitos funcionalmente equivalentes, como um circuito de Processamento de Sinal Digital (DSP) ou um Circuito Integrado de Aplicação Específica (ASIC), ou podendo ser implementados de qualquer outra maneira adequada. Deve ser apreciado que os fluxogramas incluídos nesse relatório descritivo não descrevem a sintaxe ou operação de qualquer circuito particular ou de qualquer linguagem de programação particular ou tipo de linguagem de programação. Em vez, os fluxogramas ilustram a informação funcional que um técnico no assunto pode utilizar para fabricar circuitos ou para implementar algoritmos de software de computador para realizar o processamento de um aparelho particular que executa os tipos de técnicas descritas nesse relatório descritivo. Deve também ser apreciado que, a menos que indicado de outro modo nesse
Petição 870190062098, de 03/07/2019, pág. 75/121
52/59 relatório descritivo, a sequência particular de passos e/ou atos descritos em cada fluxograma é meramente ilustrativa dos algoritmos que podem ser implementados e pode ser variada em implementações e modalidades dos princípios descritos nesse relatório descritivo.
[00117] Por conseguinte, em algumas modalidades, as técnicas descritas nesse relatório descritivo podem ser incorporadas em instruções executáveis por computador implementadas como software, incluindo como software de aplicação, software de sistema, firmware, middleware, código embutido ou qualquer outro tipo de código de computador adequado. Tais instruções executáveis por computador podem ser escritas utilizando qualquer uma das várias linguagens de programação e/ou ferramentas de programação ou scríptíng adequadas, e também podem ser compiladas como código de linguagem de máquina executável ou código intermediário executado em uma estrutura de trabalho ou máquina virtual.
[00118] Quando as técnicas descritas nesse relatório descritivo são incorporadas como instruções executáveis por computador, estas instruções executáveis por computador podem ser implementadas de qualquer maneira adequada, incluindo como um número de instalações funcionais, cada uma fornecendo uma ou mais operações para concluir a execução de algoritmos que operam de acordo com estas técnicas. Uma instalação funcional, porém instanciada, é um componente estrutural de um sistema de computador que, quando integrado com e executado por um ou mais computadores, faz com que um ou mais computadores desempenhem uma função operacional específica. Uma instalação funcional pode ser uma porção ou um elemento de software inteiro. Por exemplo, uma instalação
Petição 870190062098, de 03/07/2019, pág. 76/121
53/59 funcional pode ser implementada como uma função de um processo, ou como um processo discreto, ou como qualquer outra unidade de processamento adequada. Se as técnicas descritas nesse relatório descritivo forem implementadas como múltiplas instalações funcionais, cada instalação funcional pode ser implementada à sua maneira; todas não precisam ser implementadas da mesma maneira. Além disso, essas instalações funcionais podem ser executadas em paralelo e/ou em série, conforme apropriado, e podem passar informação entre si usando uma memória compartilhada no(s) computador(es) no qual estão executando, usando um protocolo de transmissão de mensagens, ou em qualquer outra maneira adequada.
[00119] Geralmente, instalações funcionais incluem rotinas, programas, objetos, componentes, estruturas de dados, etc., que executam tarefas específicas ou implementam determinados tipos de dados abstratos. Normalmente, a funcionalidade das instalações funcionais pode ser combinada ou distribuída conforme desejado nos sistemas em que operam. Em algumas implementações, uma ou mais instalações funcionais que executam as técnicas descritas nesse relatório descritivo podem, juntas, formar um pacote de software completo. Estas instalações funcionais podem, em modalidades alternativas, ser adaptadas para interagir com outras instalações funcionais e/ou processos não relacionados, para implementar uma aplicação de programa de software.
[00120] Algumas instalações funcionais exemplares foram descritas nesse relatório descritivo para a realização de uma ou mais tarefas. Deve ser apreciado, no entanto, que
Petição 870190062098, de 03/07/2019, pág. 77/121
54/59 as instalações funcionais e a divisão de tarefas descritas são meramente ilustrativas do tipo de instalações funcionais que podem implementar as técnicas exemplares descritas nesse relatório descritivo, e que as modalidades não estão limitadas a serem implementadas em qualquer número, divisão, ou tipo de instalações funcionais específicos. Em algumas implementações, todas as funcionalidades podem ser implementadas em uma única instalação funcional. Deve também ser apreciado que, em algumas implementações, algumas das instalações funcionais descritas nesse relatório descritivo podem ser implementadas em conjunto com ou separadamente de outras (isto é, como uma unidade única ou unidades separadas), ou algumas destas instalações funcionais podem não ser implementadas.
[00121] As instruções executáveis por computador que implementam as técnicas descritas nesse relatório descritivo (quando implementadas como uma ou mais instalações funcionais ou de qualquer outra maneira) podem, em algumas modalidades, ser codificadas em um ou mais meios legíveis por computador para fornecer funcionalidade ao meio. Os meios legíveis por computador incluem meio magnético, como uma unidade de disco rígido, meio ótico, como um disco compacto (CD) ou um disco versátil digital (DVD), uma memória de estado sólido persistente ou não persistente (por exemplo, memória Flash, RAM Magnética, etc.) ou qualquer outro meio de armazenamento adequado. Tal meio legível por computador pode ser implementado de qualquer maneira adequada. Como usado nesse relatório descritivo, meio legível por computador (também chamado de meio de armazenamento legível por computador) refere-se a meios de armazenamento
Petição 870190062098, de 03/07/2019, pág. 78/121
55/59 tangíveis. Meios de armazenamento tangíveis são não transitórios e têm pelo menos um componente físico, estrutural. Em um meio legível por computador, como usado nesse relatório descritivo, pelo menos um componente físico, estrutural tem pelo menos uma propriedade física que pode ser alterada de alguma forma durante um processo de criação do meio com informação embutida, um processo de gravação de informação no mesmo, ou qualquer outro processo de codificação do meio com informação. Por exemplo, um estado de magnetização de uma porção de uma estrutura física de um meio legível por computador pode ser alterado durante um processo de gravação.
[00122] Além disso, algumas técnicas descritas acima compreendem atos de armazenamento de informação (por exemplo, dados e/ou instruções) de determinadas maneiras para uso por essas técnicas. Em algumas implementações dessas técnicas - como implementações em que as técnicas são implementadas como instruções executáveis por computador a informação pode ser codificada em um meio de armazenamento legível por computador. Onde estruturas específicas são descritas nesse relatório descritivo como formatos vantajosos para armazenar esta informação, estas estruturas podem ser usadas para transmitir uma organização física da informação quando codificada no meio de armazenamento. Estas estruturas vantajosas podem então fornecer funcionalidade ao meio de armazenamento, afetando as operações de um ou mais processadores interagindo com a informação; por exemplo, por aumentar a eficiência das operações de computador realizadas pelo(s) processador(es).
[00123] Em algumas, mas não todas, implementações nas
Petição 870190062098, de 03/07/2019, pág. 79/121
56/59 quais as técnicas podem ser incorporadas como instruções executáveis por computador, estas instruções podem ser executadas em um ou mais dispositivos de computação adequados operando em qualquer sistema de computador adequado, ou um ou mais dispositivos de computação (ou um ou mais processadores de um ou mais dispositivos de computação) podem ser programados para executar as instruções executáveis por computador. Um dispositivo ou processador de computação pode ser programado para executar instruções quando as instruções são armazenadas de maneira acessível ao dispositivo ou processador de computação, como em um armazenamento de dados (por exemplo, um cache no chip ou registrador de instruções, um meio de armazenamento legível por computador acessível através de um barramento, um meio de armazenamento legível por computador acessível através de uma ou mais redes e acessível pelo dispositivo/processador, etc.). As instalações funcionais que compreendem estas instruções executáveis por computador podem ser integradas com e dirigir a operação de um único dispositivo de computação digital programável multiuso, um sistema coordenado de dois ou mais dispositivos de processamento de compartilhamento de dispositivo de computação multiuso e executar conjuntamente as técnicas descritas nesse relatório descritivo, um único dispositivo de computação ou sistema coordenado de dispositivo de computação (colocalizado ou geograficamente distribuído) dedicado a executar as técnicas descritas nesse relatório descritivo, uma ou mais Matrizes de Portas de Campo Programável (FPGAs) para executar as técnicas descritas nesse relatório descritivo, ou qualquer outro sistema adequado.
Petição 870190062098, de 03/07/2019, pág. 80/121
57/59 [00124] Um dispositivo de computação pode compreender pelo menos um processador, um adaptador de rede e um meio de armazenamento legível por computador. Um dispositivo de computação pode ser, por exemplo, um computador pessoal de mesa ou laptop, um assistente digital pessoal (PDA), um telefone móvel inteligente, um servidor ou qualquer outro dispositivo de computação adequado. Um adaptador de rede pode ser qualquer hardware e/ou software adequado para permitir que o dispositivo de computação comunique por cabo e/ou sem fio com qualquer outro dispositivo de computação adequado através de qualquer rede de computação adequada. A rede de computação pode incluir pontos de acesso, comutadores, roteadores, gateways e/ou outros equipamentos de rede sem fio, bem como qualquer meio de comunicação com fio e/ou sem fio adequado para troca de dados entre dois ou mais computadores, incluindo a Internet. O meio legível por computador pode ser adaptado para armazenar dados a serem processados e/ou instruções a serem executadas pelo processador. O processador permite o processamento de dados e a execução de instruções. Os dados e instruções podem ser armazenados no meio de armazenamento legível por computador.
[00125] Um dispositivo de computação pode adicionalmente ter um ou mais componentes e periféricos, incluindo dispositivos de entrada e saída. Esses dispositivos podem ser usados, entre outras coisas, para apresentar uma interface de usuário. Exemplos de dispositivos de saída que podem ser usados para fornecer uma interface de usuário incluem impressoras ou telas de exibição para apresentação visual de saída e alto-falantes ou outros dispositivos de geração de som para apresentação audível de
Petição 870190062098, de 03/07/2019, pág. 81/121
58/59 saída. Exemplos de dispositivos de entrada que podem ser usados para uma interface de usuário incluem teclados e dispositivos apontadores, como mouses, almofadas de toque e tablets digitalizadores. Como outro exemplo, um dispositivo de computação pode receber informação de entrada através do reconhecimento de fala ou em outro formato audível.
[00126] Modalidades foram descritas onde as técnicas são implementadas em circuitos e/ou instruções executáveis por computador. Deve ser apreciado que algumas modalidades podem estar na forma de um método, do qual pelo menos um exemplo foi fornecido. Os atos realizados como parte do método podem ser solicitados de qualquer maneira adequada. Por conseguinte, podem ser construídas modalidades nas quais os atos são realizados em uma ordem diferente da ilustrada, o que pode incluir a realização de alguns atos simultaneamente, mesmo que sejam mostrados como atos sequenciais em modalidades ilustrativas.
[00127] Vários aspectos das modalidades descritas acima podem ser utilizados sozinhos, em combinação, ou em uma variedade de arranjos não especificamente discutidos nas modalidades descritas no precedente e, portanto, não são limitados na sua aplicação aos detalhes e arranjo dos componentes estabelecidos na descrição anterior ou ilustrados nos desenhos. Por exemplo, os aspectos descritos em uma modalidade podem ser combinados de qualquer maneira com aspectos descritos em outras modalidades.
[00128] O uso de termos ordinais como primeiro, segundo, terceiro, etc., nas reivindicações para modificar um elemento de reivindicação, não indica por si só nenhuma prioridade, precedência ou ordem de um elemento de
Petição 870190062098, de 03/07/2019, pág. 82/121
59/59 reivindicação sobre outro ou a ordem temporal na qual os atos de um método são executados, mas são usados meramente como rótulos para distinguir um elemento de reivindicação tendo um certo nome de outro elemento com um mesmo nome (mas para uso do termo ordinal) para distinguir os elementos de reivindicação.
[00129] Além disso, a fraseologia e terminologia usadas nesse relatório descritivo são para o propósito de descrição e não devem ser consideradas como limitantes. O uso de incluindo, compreendendo, tendo, contendo, envolvendo, e variações dos mesmos nesse relatório descritivo, destina-se a englobar os itens listados a seguir e seus equivalentes, bem como itens adicionais.
[00130] A palavra exemplar é usada nesse relatório descritivo para significar servir como exemplo, instância ou ilustração. Qualquer modalidade, implementação, processo, recurso, etc. descrito nesse relatório descritivo como exemplar deve, portanto, ser entendido como sendo um exemplo ilustrativo e não deve ser entendido como sendo um exemplo preferido ou vantajoso, salvo indicação em contrário.
[00131] Tendo assim descrito vários aspectos de pelo menos uma modalidade, deve ser apreciado que várias alterações, modificações e melhorias ocorrerão prontamente aos técnicos no assunto. Tais alterações, modificações e melhorias pretendem fazer parte desta revelação e pretendem estar dentro do espirito e âmbito dos princípios descritos nesse relatório descritivo. Por conseguinte, a descrição e os desenhos anteriores são apenas a titulo de exemplo.

Claims (26)

  1. REIVINDICAÇÕES
    1. Método de decodificação para decodificar dados de vídeo, o método caracterizado pelo fato de que compreende:
    receber dados de vídeo comprimidos relacionados a um conjunto de quadros; e calcular, utilizando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro atual a partir do conjunto de quadros, em que o novo vetor de movimento estima o movimento para o quadro atual com base em um ou mais quadros de referência, compreendendo:
    recuperar um primeiro vetor de movimento associado ao quadro atual;
    executar uma primeira porção de um processo de decodificação utilizando o primeiro vetor de movimento;
    recuperar um segundo vetor de movimento associado ao quadro atual diferente do primeiro vetor de movimento; e executar uma segunda porção do processo de decodificação utilizando o segundo vetor de movimento.
  2. 2. Método de decodificação, de acordo com a reivindicação
    1, caracterizado pelo fato de que:
    o primeiro vetor de movimento compreende um vetor de movimento não refinado; o segundo vetor de movimento compreende um vetor de movimento refinado, em que o MV refinado é refinado
    utilizando uma técnica de refinamento de previsão de lado de decodificador;
    a primeira porção do processo de decodificação compreende uma porção de análise, uma porção de derivação de vetor de movimento ou ambas; e
    Petição 870190062098, de 03/07/2019, pág. 84/121
    2/12 a segunda porção do processo de decodificação compreende uma porção de reconstrução.
  3. 3. Método de decodificação, de acordo com a reivindicação
    1, caracterizado pelo fato de que compreende ainda:
    recuperar um terceiro vetor de movimento associado a um segundo quadro, em que o terceiro vetor de movimento é um vetor de movimento refinado;
    executar a primeira porção do processo de decodificação utilizando o primeiro vetor de movimento e o terceiro vetor de movimento; e executar a segunda porção do processo de decodificação utilizando o segundo vetor de movimento e o terceiro vetor de movimento.
  4. 4. Método de decodificação, de acordo com a reivindicação
    3, caracterizado pelo fato de que a execução da primeira porção do processo de decodificação compreende executar uma porção de derivação de vetor de movimento utilizando o primeiro vetor de movimento e o terceiro vetor de movimento, em que a porção de derivação de vetor de movimento compreende derivação de previsão de vetor de movimento, derivação de candidato de mesclagem, ou ambas.
  5. 5. Método de decodificação, de acordo com a reivindicação
    4, caracterizado pelo fato de que a execução da primeira porção do processo de decodificação compreende referir ao primeiro vetor de movimento como um vetor de movimento decodificado do quadro atual.
  6. 6. Método de decodificação, de acordo com a reivindicação
    3, caracterizado pelo fato de que compreende ainda a utilização do segundo vetor de movimento e do terceiro vetor de movimento para realizar compensação de movimento,
    Petição 870190062098, de 03/07/2019, pág. 85/121
    3/12 compensação de movimento de bloco sobreposto, desbloqueio ou qualquer combinação dos mesmos.
  7. 7. Método de decodificação, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda:
    Determinação de uma restrição de unidade de árvore de codificação que não é aplicada aos dados de vídeo comprimidos; e recuperação do primeiro vetor de movimento associado ao quadro atual que inclui recuperar:
    um vetor de movimento não refinado do quadro atual; e um vetor de movimento refinado associado a um segundo quadro.
  8. 8. Método de decodificação, de acordo com a reivindicação 1, caracterizado pelo fato de que a recuperação do primeiro vetor de movimento associado ao quadro atual compreende recuperar:
    um vetor de movimento não refinado de uma linha de unidade de árvore de codificação atual;
    um vetor de movimento refinado de uma linha de unidade de árvore de codificação superior, outro pedaço ou outra fatia; e um vetor de movimento refinado associado a um segundo quadro.
  9. 9. Método de decodificação para decodificar dados de vídeo, o método caracterizado pelo fato de que compreende:
    receber dados de vídeo comprimidos relacionados a um conjunto de quadros; e calcular, utilizando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro atual a partir do conjunto de quadros, em que
    Petição 870190062098, de 03/07/2019, pág. 86/121
    4/12 o novo vetor de movimento estima o movimento para o quadro atual com base em um ou mais quadros de referência, compreendendo:
    receber um sinal indicativo de um índice de candidato inicial para uma lista de candidatos de vetor de movimento inicial;
    determinar um primeiro candidato de vetor de movimento na lista de candidatos de vetor de movimento inicial e um segundo candidato de vetor de movimento compreende uma diferença gue está abaixo de um limiar predeterminado;
    remover o segundo candidato de vetor de movimento a partir da lista de candidatos de vetor de movimento inicial, não adicionar o segundo candidato de vetor de movimento à lista de candidatos de vetor de movimento inicial, ou ambos; e calcular o novo vetor de movimento com base na lista de candidatos e no índice de candidato inicial.
  10. 10. Método de decodificação, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende ainda:
    analisar um novo candidato de vetor de movimento, o candidato de vetor de movimento compreendendo um par de vetores de movimento;
    determinar, com base na análise, que o par de vetores de movimento está ao longo de uma mesma trajetória de movimento; e adicionar o par de vetores de movimento à lista de candidatos de vetor de movimento inicial.
  11. 11. Método de decodificação, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende
    Petição 870190062098, de 03/07/2019, pág. 87/121
    5/12 ainda :
    analisar um novo candidato de vetor de movimento, o candidato de vetor de movimento compreendendo um par de vetores de movimento;
    determinar, com base na análise, que o par de vetores de movimento não está ao longo de uma mesma trajetória de movimento;
    separar o par de vetores de movimento em dois novos pares de vetores de movimento candidatos; e adicionar os dois vetores de movimento candidatos à lista de candidatos de vetor de movimento inicial.
  12. 12. Método de decodificação, de acordo com a reivindicação 11, caracterizado pelo fato de que a separação compreende:
    adicionar o primeiro vetor de movimento do par de vetores de movimento a um primeiro dos dois novos pares de vetores de movimento candidatos;
    preencher o primeiro dos dois novos pares de vetores de movimento candidatos com um vetor de movimento espelhado do primeiro vetor de movimento;
    adicionar o segundo vetor de movimento do par de vetores de movimento a um segundo dos dois novos pares de vetores de movimento candidatos; e preencher o segundo dos dois novos pares de vetores de movimento candidatos com um vetor de movimento espelhado do segundo vetor de movimento.
  13. 13. Método de codificação para codificar dados de vídeo, o método caracterizado pelo fato de que compreende:
    calcular dados de dados comprimidos relacionados com um conjunto de quadros, compreendendo calcular um novo vetor de
    Petição 870190062098, de 03/07/2019, pág. 88/121
    6/12 movimento para um quadro atual a partir do conjunto de quadros, em que o novo vetor de movimento estima o movimento
    para o quadro atual com base em um ou mais quadros de referência, compreendendo: calcular um primeiro vetor de movimento associado ao quadro atual r executar uma primeira porção do processo de codificação utilizando o primeiro vetor de movimento; calcular um segundo vetor de movimento associado ao
    quadro atual que é diferente do primeiro vetor de movimento; e executar uma segunda porção do processo de codificação utilizando o segundo vetor de movimento.
  14. 14. Método de codificação, de acordo com a reivindicação
    13, caracterizado pelo fato de:
    calcular o primeiro vetor de movimento compreende calcular um vetor de movimento não refinado, um conjunto de vetores de movimento não refinado, ou ambos; e executar a primeira porção do processo de codificação compreende executar uma porção de codificação de sintaxe, uma porção de derivação de vetor de movimento, uma porção de derivação de previsão de vetor de movimento ou alguma combinação dos mesmos.
  15. 15. Método de codificação, de acordo com a reivindicação
    14, caracterizado pelo fato de que a execução da porção de derivação de previsão de vetor de movimento compreende gerar uma lista de candidatos de mesclagem, gerar uma lista de candidatos de previsão de vetor de movimento avançado, ou ambos.
  16. 16. Método de codificação, de acordo com a reivindicação
    Petição 870190062098, de 03/07/2019, pág. 89/121
    7/12
    14, caracterizado pelo fato de que compreende ainda realizar codificação de vetor de movimento, geração de previsão de vetor de movimento ou ambas, utilizando o vetor de movimento não refinado, o conjunto de vetor de movimento não refinado, ou ambos, tal que o vetor de movimento não refinado, o conjunto de vetor de movimento não refinado, ou ambos não são refinados usando uma ferramenta de refinamento de vetor de movimento de lado de decodificador.
  17. 17. Método de codificação, de acordo com a reivindicação
    13, caracterizado pelo fato de:
    calcular o segundo vetor de movimento compreende calcular um vetor de movimento refinado, em que o vetor de movimento refinado é calculado utilizando uma técnica de refinamento de lado de codificador;
    armazenar o vetor de movimento refinado em um conjunto de tampão de vetor de movimento; e executar a segunda porção do processo de codificação compreende executar uma porção de compensação de movimento, uma porção de compensação de movimento de bloco sobreposto, uma porção de desbloqueio ou alguma combinação dos mesmos.
  18. 18. Aparelho configurado para decodificar dados de vídeo, o aparelho caracterizado pelo fato de que compreende um processador em comunicação com a memória, o processador sendo configurado para executar instruções armazenadas na memória que fazem o processador:
    receber dados de vídeo comprimidos relacionados a um conjunto de quadros; e calcular, utilizando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro atual a partir do conjunto de quadros, em que
    Petição 870190062098, de 03/07/2019, pág. 90/121
    8/12 o novo vetor de movimento estima o movimento para o quadro atual com base em um ou mais quadros de referência, compreendendo:
    recuperar um primeiro vetor de movimento associado ao quadro atual;
    executar uma primeira porção de um processo de decodificação utilizando o primeiro vetor de movimento;
    recuperar um segundo vetor de movimento associado ao quadro atual diferente do primeiro vetor de movimento; e executar uma segunda porção do processo de decodificação utilizando o segundo vetor de movimento.
  19. 19. Aparelho, de acordo com a reivindicação 18, caracterizado pelo fato de que:
    o primeiro vetor de movimento compreende um vetor de movimento não refinado; o segundo vetor de movimento compreende um vetor de movimento refinado, em que o MV refinado é refinado
    utilizando uma técnica de refinamento de preditor de lado de decodificador;
    a primeira porção do processo de decodificação compreende uma porção de análise, uma porção de derivação de vetor de movimento ou ambas; e a segunda porção do processo de decodificação compreende uma porção de reconstrução.
  20. 20. Aparelho, de acordo com a reivindicação 18, caracterizado pelo fato de que o processador é configurado para executar instruções armazenadas na memória que fazem o processador:
    recuperar um terceiro vetor de movimento associado a um segundo quadro, em que o terceiro vetor de movimento é um
    Petição 870190062098, de 03/07/2019, pág. 91/121
    9/12 vetor de movimento refinado;
    executar a primeira porção do processo de decodificação utilizando o primeiro vetor de movimento e o terceiro vetor de movimento; e executar a segunda porção do processo de decodificação utilizando o segundo vetor de movimento e o terceiro vetor de movimento.
  21. 21. Aparelho configurado para decodificar dados de video, o aparelho caracterizado pelo fato de que compreende um processador em comunicação com a memória, o processador sendo configurado para executar instruções armazenadas na memória que fazem o processador:
    receber dados de video comprimidos relacionados a um conjunto de quadros; e calcular, utilizando uma técnica de refinamento de preditor de lado de decodificador, um novo vetor de movimento para um quadro atual a partir do conjunto de quadros, em que o novo vetor de movimento estima o movimento para o quadro atual com base em um ou mais quadros de referência, compreendendo:
    receber um sinal indicativo de um índice de candidato inicial para uma lista de candidatos de vetor de movimento inicial;
    determinar um primeiro candidato de vetor de movimento na lista de candidatos de vetor de movimento inicial e um segundo candidato de vetor de movimento compreende uma diferença gue está abaixo de um limiar predeterminado;
    remover o segundo candidato de vetor de movimento a partir da lista de candidatos de vetor de movimento inicial, não adicionar o segundo candidato de vetor de movimento à
    Petição 870190062098, de 03/07/2019, pág. 92/121
    10/12 lista de candidatos de vetor de movimento inicial ou ambos; e calcular o novo vetor de movimento com base na lista de candidatos e no índice de candidato inicial.
  22. 22. Aparelho, de acordo com a reivindicação 21, caracterizado pelo fato de que o processador é configurado para executar instruções armazenadas na memória que fazem o processador:
    analisar um novo candidato de vetor de movimento, o candidato de vetor de movimento compreendendo um par de vetores de movimento;
    determinar, com base na análise, que o par de vetores de movimento está ao longo de uma mesma trajetória de movimento; e adicionar o par de vetores de movimento à lista de candidatos de vetor de movimento inicial.
  23. 23. Aparelho, de acordo com a reivindicação 21, caracterizado pelo fato de que o processador é configurado para executar instruções armazenadas na memória que fazem o processador:
    analisar um novo candidato de vetor de movimento, o candidato de vetor de movimento compreendendo um par de vetores de movimento;
    determinar, com base na análise, que o par de vetores de movimento não está ao longo de uma mesma trajetória de movimento;
    separar o par de vetores de movimento em dois novos pares de vetores de movimento candidatos; e adicionar os dois vetores de movimento candidatos à lista de candidatos de vetor de movimento inicial.
    Petição 870190062098, de 03/07/2019, pág. 93/121
    11/12
  24. 24. Aparelho configurado para codificar dados de vídeo, o aparelho caracterizado pelo fato de que compreende um processador em comunicação com a memória, o processador sendo configurado para executar instruções armazenadas na memória que fazem o processador:
    calcular dados de vídeo comprimidos relacionados com um conjunto de quadros, compreendendo calcular um novo vetor de movimento para um quadro atual a partir do conjunto de quadros, em que o novo vetor de movimento estima o movimento
    para o quadro atual com base em um ou mais quadros de referência, compreendendo: calcular um primeiro vetor de movimento associado ao quadro atual r executar uma primeira porção do processo de codificação utilizando o primeiro vetor de movimento; calcular um segundo vetor de movimento associado ao
    quadro atual que é diferente do primeiro vetor de movimento; e executar uma segunda porção do processo de codificação utilizando o segundo vetor de movimento.
  25. 25. Aparelho, de acordo com a reivindicação 24, caracterizado pelo fato de que:
    calcular o primeiro vetor de movimento compreende calcular um vetor de movimento não refinado, um conjunto de vetores de movimento não refinado ou ambos; e executar a primeira porção do processo de codificação compreende executar uma porção de codificação de sintaxe, uma porção de derivação de vetor de movimento, uma porção de derivação de previsão de vetor de movimento ou alguma combinação dos mesmos.
    Petição 870190062098, de 03/07/2019, pág. 94/121
    12/12
  26. 26. Aparelho, de acordo com a reivindicação 24, caracterizado pelo fato de que:
    calcular o segundo vetor de movimento compreende calcular um vetor de movimento refinado, em que o vetor de movimento refinado é calculado utilizando uma técnica de refinamento de lado de codificador;
    armazenar o vetor de movimento refinado em um conjunto de tampão de vetor de movimento; e executar a segunda porção do processo de codificação compreende executar uma porção de compensação de movimento, uma porção de compensação de movimento de bloco sobreposto, uma porção de desbloqueio ou alguma combinação dos mesmos.
BR112019013832A 2017-01-05 2018-01-05 Restauração de vetor de movimento de lado de decodificador para codificação de vídeo BR112019013832A8 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762442472P 2017-01-05 2017-01-05
US201762479350P 2017-03-31 2017-03-31
US15/861,476 US20180192071A1 (en) 2017-01-05 2018-01-03 Decoder-side motion vector restoration for video coding
PCT/CN2018/071518 WO2018127119A1 (en) 2017-01-05 2018-01-05 Decoder-side motion vector restoration for video coding

Publications (2)

Publication Number Publication Date
BR112019013832A2 true BR112019013832A2 (pt) 2020-01-28
BR112019013832A8 BR112019013832A8 (pt) 2023-02-07

Family

ID=62712096

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019013832A BR112019013832A8 (pt) 2017-01-05 2018-01-05 Restauração de vetor de movimento de lado de decodificador para codificação de vídeo

Country Status (6)

Country Link
US (1) US20180192071A1 (pt)
EP (1) EP3545682A4 (pt)
CN (2) CN110169073B (pt)
BR (1) BR112019013832A8 (pt)
TW (1) TWI677238B (pt)
WO (1) WO2018127119A1 (pt)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11638027B2 (en) 2016-08-08 2023-04-25 Hfi Innovation, Inc. Pattern-based motion vector derivation for video coding
US10523964B2 (en) * 2017-03-13 2019-12-31 Qualcomm Incorporated Inter prediction refinement based on bi-directional optical flow (BIO)
US10904565B2 (en) 2017-06-23 2021-01-26 Qualcomm Incorporated Memory-bandwidth-efficient design for bi-directional optical flow (BIO)
KR20240044549A (ko) * 2017-07-03 2024-04-04 브이아이디 스케일, 인크. 양방향 광학 흐름에 기반한 모션 보상 예측
US10798402B2 (en) * 2017-10-24 2020-10-06 Google Llc Same frame motion estimation and compensation
CN109996081B (zh) * 2017-12-31 2023-09-12 华为技术有限公司 图像预测方法、装置以及编解码器
WO2019151284A1 (ja) * 2018-01-30 2019-08-08 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10812810B2 (en) * 2018-02-06 2020-10-20 Tencent America LLC Method and apparatus for video coding in merge mode
CN112040244B (zh) * 2018-03-29 2021-06-29 华为技术有限公司 一种双向帧间预测方法及装置
KR102643116B1 (ko) * 2018-03-30 2024-03-04 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US11575933B2 (en) 2018-04-06 2023-02-07 Vid Scale, Inc. Bi-directional optical flow method with simplified gradient derivation
US10958928B2 (en) * 2018-04-10 2021-03-23 Qualcomm Incorporated Decoder-side motion vector derivation for video coding
CN112136328A (zh) * 2018-04-13 2020-12-25 Lg 电子株式会社 视频处理系统中的帧间预测的方法和装置
WO2019229683A1 (en) 2018-05-31 2019-12-05 Beijing Bytedance Network Technology Co., Ltd. Concept of interweaved prediction
US10863190B2 (en) * 2018-06-14 2020-12-08 Tencent America LLC Techniques for memory bandwidth optimization in bi-predicted motion vector refinement
EP4322533A3 (en) 2018-06-29 2024-03-06 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in lut
JP7100200B2 (ja) 2018-06-29 2022-07-12 北京字節跳動網絡技術有限公司 マージ/amvpにhmvp候補を追加する際の一部/全部プルーニング
EP3797516A1 (en) * 2018-06-29 2021-03-31 Beijing Bytedance Network Technology Co. Ltd. Interaction between lut and amvp
CN110662059B (zh) 2018-06-29 2021-04-20 北京字节跳动网络技术有限公司 使用查找表存储先前编码的运动信息并用其编码后续块的方法和装置
WO2020003283A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Conditions for updating luts
KR102611261B1 (ko) 2018-06-29 2023-12-08 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 업데이트 대상 lut 또는 비업데이트 lut의 구별
WO2020003270A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Number of motion candidates in a look up table to be checked according to mode
JP7256265B2 (ja) 2018-06-29 2023-04-11 北京字節跳動網絡技術有限公司 ルックアップテーブルの更新:fifo、制限されたfifo
US10638153B2 (en) 2018-07-02 2020-04-28 Tencent America LLC For decoder side MV derivation and refinement
TWI719526B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 查找表的更新
US10701384B2 (en) * 2018-08-01 2020-06-30 Tencent America LLC Method and apparatus for improvement on decoder side motion derivation and refinement
TWI752341B (zh) * 2018-08-04 2022-01-11 大陸商北京字節跳動網絡技術有限公司 不同解碼器側運動矢量推導模式之間的交互
US11184635B2 (en) * 2018-08-31 2021-11-23 Tencent America LLC Method and apparatus for video coding with motion vector constraints
CN111064959B (zh) 2018-09-12 2023-09-01 北京字节跳动网络技术有限公司 要检查多少个hmvp候选
CN117915109A (zh) * 2018-09-19 2024-04-19 华为技术有限公司 根据基于双线性插值的解码端运动矢量修正的片相似度不执行修正的方法
US11943467B2 (en) * 2018-09-21 2024-03-26 Vid Scale, Inc. Affine motion estimation for affine model-based video coding
CN113411575B (zh) * 2018-09-24 2022-07-22 华为技术有限公司 用于执行质量优化去块的图像处理设备、方法和存储介质
CN111010569B (zh) 2018-10-06 2023-02-28 北京字节跳动网络技术有限公司 Bio中的时间梯度计算的改善
WO2020073928A1 (en) * 2018-10-09 2020-04-16 Huawei Technologies Co., Ltd. Inter prediction method and apparatus
WO2020084463A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block based decoder side motion vector derivation
WO2020098650A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Line buffer reduction for generalized bi-prediction mode
CN113170097B (zh) * 2018-11-20 2024-04-09 北京字节跳动网络技术有限公司 视频编解码模式的编解码和解码
US11146810B2 (en) * 2018-11-27 2021-10-12 Qualcomm Incorporated Decoder-side motion vector refinement
WO2020141912A1 (ko) * 2019-01-01 2020-07-09 엘지전자 주식회사 인터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
WO2020141913A1 (ko) * 2019-01-01 2020-07-09 엘지전자 주식회사 인터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
CN113454999A (zh) 2019-01-02 2021-09-28 北京字节跳动网络技术有限公司 划分模式之间的运动矢量推导
CN113302935A (zh) 2019-01-02 2021-08-24 瑞典爱立信有限公司 视频编码/解码系统中的端运动细化
BR112021007949A2 (pt) * 2019-01-02 2021-07-27 Huawei Technologies Co., Ltd. sistema e método de fácil utilização com hardware e software para refinamento de vetor de movimento do lado do decodificador com correção por pixel baseada em fluxo óptico bipreditivo no lado do decodificador para compensação de movimento bipreditivo
EP3888355A4 (en) * 2019-01-10 2022-03-23 Beijing Bytedance Network Technology Co., Ltd. LOOKUP TABLE UPDATE INVOCATION
WO2020143824A1 (en) 2019-01-13 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Interaction between lut and shared merge list
WO2020147773A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Inserting order of motion candidates in lut
WO2020164577A1 (en) 2019-02-14 2020-08-20 Beijing Bytedance Network Technology Co., Ltd. Selective application of decoder side refining tools
US11190797B2 (en) * 2019-03-01 2021-11-30 Qualcomm Incorporated Constraints on decoder-side motion vector refinement based on weights for bi-predicted prediction
WO2020177682A1 (en) 2019-03-03 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Motion vector management for decoder side motion vector refinement
KR102635518B1 (ko) 2019-03-06 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 변환된 단예측 후보의 사용
CN113475076B (zh) * 2019-03-11 2024-03-12 阿里巴巴集团控股有限公司 用于对视频数据进行编码的帧间预测方法
CN115633169A (zh) * 2019-03-11 2023-01-20 北京字节跳动网络技术有限公司 视频编解码中的运动矢量细化
CN109803175B (zh) * 2019-03-12 2021-03-26 京东方科技集团股份有限公司 视频处理方法及装置、设备、存储介质
MX2021011043A (es) * 2019-03-12 2021-10-13 Beijing Dajia Internet Information Tech Co Ltd Aplicaciones restringidas y ajustadas de modo de interprediccion e intraprediccion combinadas.
WO2020192611A1 (en) 2019-03-22 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
US11172212B2 (en) * 2019-06-06 2021-11-09 Qualcomm Incorporated Decoder-side refinement tool on/off control
CN110460859B (zh) * 2019-08-21 2022-03-25 浙江大华技术股份有限公司 历史运动矢量列表的使用方法、编解码器及存储装置
MX2022002916A (es) 2019-09-19 2022-04-06 Beijing Bytedance Network Tech Co Ltd Derivacion de posiciones de muestra de referencia en codificacion de video.
JP7324940B2 (ja) 2019-09-19 2023-08-10 北京字節跳動網絡技術有限公司 ビデオコーディングにおけるスケーリングウインドウ
JP7391199B2 (ja) 2019-10-05 2023-12-04 北京字節跳動網絡技術有限公司 映像コーディングツールのレベルベースシグナリング
KR20220074870A (ko) * 2019-10-12 2022-06-03 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서의 예측 유형 시그널링
KR20220073740A (ko) 2019-10-13 2022-06-03 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 레퍼런스 픽처 리샘플링 및 비디오 코딩 툴 사이의 상호 작용
CN112218075B (zh) * 2020-10-17 2022-10-28 浙江大华技术股份有限公司 候选列表的填充方法、电子设备、计算机可读存储介质
WO2023186040A1 (en) * 2022-03-31 2023-10-05 Mediatek Inc. Bilateral template with multipass decoder side motion vector refinement
US20230388535A1 (en) * 2022-05-26 2023-11-30 Tencent America LLC Systems and methods for combining subblock motion compensation and overlapped block motion compensation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0500174D0 (en) * 2005-01-06 2005-02-16 Kokaram Anil Method for estimating motion and occlusion
US8553758B2 (en) * 2007-03-02 2013-10-08 Sony Corporation Motion parameter engine for true motion
KR101703362B1 (ko) * 2008-09-04 2017-02-06 톰슨 라이센싱 암시적 모션 예측을 이용한 예측 리파인먼트를 위한 방법들 및 장치들
US9060176B2 (en) * 2009-10-01 2015-06-16 Ntt Docomo, Inc. Motion vector prediction in video coding
KR101393824B1 (ko) * 2010-10-06 2014-05-13 인텔 코오퍼레이션 저 복잡성 움직임 벡터 도출을 위한 시스템 및 방법
CN102710934B (zh) * 2011-01-22 2015-05-06 华为技术有限公司 一种运动预测或补偿方法
CN102611886A (zh) * 2011-01-22 2012-07-25 华为技术有限公司 一种运动预测或补偿方法
CN107820079B9 (zh) * 2011-10-18 2021-09-21 株式会社Kt 视频信号解码方法
WO2013115606A1 (ko) * 2012-02-04 2013-08-08 엘지전자 주식회사 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치
US10194146B2 (en) * 2013-03-26 2019-01-29 Qualcomm Incorporated Device and method for scalable coding of video information
WO2015006951A1 (en) * 2013-07-18 2015-01-22 Mediatek Singapore Pte. Ltd. Methods for fast encoder decision
US10204658B2 (en) * 2014-07-14 2019-02-12 Sony Interactive Entertainment Inc. System and method for use in playing back panorama video content
US10560718B2 (en) * 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
US11638027B2 (en) * 2016-08-08 2023-04-25 Hfi Innovation, Inc. Pattern-based motion vector derivation for video coding

Also Published As

Publication number Publication date
CN110169073B (zh) 2023-03-10
CN116170602A (zh) 2023-05-26
TW201841505A (zh) 2018-11-16
EP3545682A4 (en) 2020-04-29
TWI677238B (zh) 2019-11-11
US20180192071A1 (en) 2018-07-05
EP3545682A1 (en) 2019-10-02
CN110169073A (zh) 2019-08-23
WO2018127119A1 (en) 2018-07-12
BR112019013832A8 (pt) 2023-02-07

Similar Documents

Publication Publication Date Title
BR112019013832A2 (pt) restauração de vetor de movimento de lado de decodificador para codificação de vídeo
US20230188745A1 (en) Pattern-based motion vector derivation for video coding
TWI669951B (zh) 多重假設之合併模式
US11689740B2 (en) Motion vector prediction
CN111886866B (zh) 用于编码或解码视频序列的方法及电子装置
TWI711300B (zh) 照度補償方法及相應之視訊處理裝置
JP7259009B2 (ja) インター予測方法および装置
TW201842766A (zh) 於視訊解碼器中導出運動向量資訊
KR20200015734A (ko) 다중 참조 예측을 위한 움직임 벡터 개선
TW202013974A (zh) 一種用於編碼/解碼視訊資料的方法和裝置
JP7148612B2 (ja) ビデオデータインター予測の方法、装置、ビデオエンコーダ、ビデオデコーダ及びプログラム
KR20170125086A (ko) 화상 예측 방법 및 관련 장치
BR122020002120B1 (pt) Método e aparelho para gerar preditores de vetor de movimento
BR112014002932B1 (pt) Método e dispositivo para codificar uma sequência de imagens e método e dispositivo para decodificar uma sequência de imagens
CN111201795B (zh) 存储访问窗口和用于运动矢量修正的填充
CN114827623A (zh) 用于视频编解码的边界扩展
KR102579526B1 (ko) 어드밴스드 시간 모션 벡터 예측에 대한 개선들
JP2024512647A (ja) 明示的な動きシグナリングを用いた幾何学的分割
TWI834727B (zh) 從仿射運動預測的非仿射塊
JP2024519848A (ja) 動きベクトル精緻化を伴う幾何学的分割モード
TW202310628A (zh) 視訊編解碼方法及裝置

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B25A Requested transfer of rights approved

Owner name: HFI INNOVATION INC. (TW)

B06W Patent application suspended after preliminary examination (for patents with searches from other patent authorities) chapter 6.23 patent gazette]