BR112020015246A2 - refinamento de vetor de movimento restrito de hardware acessível - Google Patents

refinamento de vetor de movimento restrito de hardware acessível Download PDF

Info

Publication number
BR112020015246A2
BR112020015246A2 BR112020015246-3A BR112020015246A BR112020015246A2 BR 112020015246 A2 BR112020015246 A2 BR 112020015246A2 BR 112020015246 A BR112020015246 A BR 112020015246A BR 112020015246 A2 BR112020015246 A2 BR 112020015246A2
Authority
BR
Brazil
Prior art keywords
motion vector
current
pixel block
refinement
current pixel
Prior art date
Application number
BR112020015246-3A
Other languages
English (en)
Other versions
BR112020015246A8 (pt
Inventor
Chun-Chia Chen
Chen-Yen LAI
Chih-Wei Hsu
Tzu-Der Chuang
Ching-Yeh Chen
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 BR112020015246A2 publication Critical patent/BR112020015246A2/pt
Publication of BR112020015246A8 publication Critical patent/BR112020015246A8/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/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction

Landscapes

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

Abstract

REFINAMENTO DE VETOR DE MOVIMENTO RESTRITO DE HARDWARE ACESSÍVEL É fornecido um codec de vídeo que codifica ou decodifica sequências de vídeo usando o refinamento de vetor de movimento de lado de decodificador. O codec de vídeo identifica um primeiro vetor de movimento e um segundo vetor de movimento para codificar um bloco atual de pixels de um quadro de vídeo atual na sequência de vídeo. O codec de vídeo determina se é necessário realizar o refinamento de vetor de movimento para o bloco atual de pixels com base em uma comparação entre uma dimensão linear do bloco atual de pixels e um limiar. Quando o refinamento de vetor de movimento é realizado, o codec de vídeo refina o primeiro e segundo vetores de movimento para minimizar um custo de distorção e codifica o bloco atual de pixels usando os primeiro e segundo vetores de movimento refinados. Quando o refinamento de vetor de movimento não é realizado, o codec de vídeo codifica o bloco atual de pixels usando o primeiro e segundo vetores de movimento identificados.

Description

REFINAMENTO DE VETOR DE MOVIMENTO RESTRITO DE HARDWARE ACESSÍVEL REFERÊNCIA CRUZADA PARA PEDIDO(S) DE PATENTE RELACIONADO
[001]A presente divulgação faz parte de um pedido não provisório que reivindica o benefício de prioridade de Pedidos de Patente Provisórios U.S. Nos. 62/622.234, 62/723.014 e 62/740.470, depositados em 26 de janeiro de 2018, 27 de agosto de 2018 e 3 de outubro de 2018, respectivamente. O conteúdo dos pedidos listados acima é aqui incorporado por referência.
CAMPO TÉCNICO
[002]A presente divulgação refere-se geralmente ao processamento de vídeo. Em particular, a presente divulgação refere-se a métodos para codificar ou decodificar um bloco de pixels por refinamento de vetor de movimento de lado de decodificador (DMVR).
FUNDAMENTOS
[003]A menos que indicado de outra forma aqui, as abordagens descritas nesta seção não são da técnica anterior às reivindicações listadas abaixo e não são admitidas como técnica anterior pela inclusão nesta seção.
[004]Codificação de Vídeo de Alta Eficiência (HEVC) é um padrão internacional de codificação de vídeo desenvolvido pela Equipe Colaborativa Conjunta sobre Codificação de Vídeo (JCT-VC). HEVC é baseada na arquitetura de codificação de transformada tipo transformada discreta de cosseno (DCT) compensada de movimento baseada em bloco híbrida. A unidade básica para compressão, denominada unidade de codificação (CU), é um bloco quadrado de pixels 2Nx2N, e cada CU pode ser dividida recursivamente em quatro CUs menores até que o tamanho mínimo predefinido seja atingido. Cada CU contém uma ou várias unidades de predição (PUs). Cada PU corresponde a um bloco de pixels na CU.
[005]Para alcançar a melhor eficiência de codificação da arquitetura de codificação híbrida, HEVC emprega modos intra-predição e/ou inter-predição para cada PU. Para modos inter-predição, informações de movimento são usadas para reconstruir quadros de referência temporal, que são usados para gerar previsões compensadas por movimento. As informações de movimento podem incluir vetores de movimento, preditores de vetor de movimento, diferenças de vetor de movimento, índices de referência para selecionar quadros de referência, etc.
[006]Existem três tipos de modos de inter-predição: modo de salto, modo de mesclagem e modo de predição de vetor de movimento avançado (AMVP). Quando uma PU é codificada no modo AMVP, os vetores de movimento (MVs) usados para predição de movimento compensado da PU são derivados de preditores de vetor de movimento (MVPs) e diferenças de vetor de movimento (MVDs, ou dados de movimento residuais) de acordo com MV = MVP + MVD. Um índice que identifica a seleção de MVP é codificado e transmitido junto com o MVD correspondente como informações de movimento. Quando uma PU é codificada no modo de salto ou de mesclagem, nenhuma informação de movimento é transmitida, exceto o índice de mesclagem do candidato selecionado. O modo de salto e o modo de mesclagem utilizam métodos de inferência de movimento (MV = MVP + MVD onde MVD é zero) para obter as informações de movimento de blocos vizinhos espacialmente (candidatos espaciais) ou blocos colocados em imagens vizinhas temporalmente (candidatos temporais) que são selecionados a partir da lista de quadros de referência List0 ou List1 (indicada no cabeçalho de fatia). No caso de uma PU de salto, o sinal residual para o bloco que está sendo codificado também é omitido. Para retransmitir informações de movimento para um bloco de pixels sob HEVC usando AMVP, modo de mesclagem ou modo de salto, um índice é usado para selecionar um MVP (ou preditor de movimento) a partir de uma lista de preditores de movimento candidatos. No modo de mesclagem/salto, um índice de mesclagem é usado para selecionar um MVP a partir de uma lista de preditores de movimento candidatos que inclui quatro candidatos espaciais e um candidato temporal. O índice de mesclagem é transmitido, mas os preditores de movimento não são transmitidos.
SUMÁRIO
[007]O sumário a seguir é apenas ilustrativo e não pretende ser de forma alguma limitativo. Ou seja, o sumário a seguir é fornecido para introduzir conceitos, destaques, benefícios e vantagens das técnicas novas e não óbvias descritas aqui. Seleção e nem todas as implementações são ainda descritas mais abaixo na descrição detalhada. Portanto, o sumário a seguir não se destina a identificar recursos essenciais do objeto reivindicado, nem se destina ao uso na determinação do escopo do objeto reivindicado.
[008]Algumas modalidades da divulgação fornecem um codec de vídeo que codifica ou decodifica sequências de vídeo usando o refinamento de vetor de movimento de lado de decodificador. O codec de vídeo identifica um primeiro vetor de movimento e um segundo vetor de movimento para codificar um bloco atual de pixels de um quadro de vídeo atual na sequência de vídeo. O codec de vídeo determina se é necessário executar o refinamento de vetor de movimento para o bloco atual de pixels com base em uma comparação entre um tamanho do bloco atual de pixels e um limiar. Quando o refinamento de vetor de movimento é realizado, o codec de vídeo refina o primeiro e segundo vetores de movimento para minimizar um custo de distorção e codificar o bloco atual de pixels usando os primeiro e segundo vetores de movimento refinados. Quando o refinamento de vetor de movimento não é realizado, o codec de vídeo codifica o bloco atual de pixels usando o primeiro e segundo vetores de movimento identificados. Em algumas modalidades, o custo de distorção é calculado com base em dados de pixel subamostrados apontados pelo primeiro e segundo vetores de movimento. O tamanho do bloco atual pode ser especificado como uma dimensão linear (por exemplo, altura ou largura) do bloco atual ou como uma área do bloco atual.
[009]Em algumas modalidades, quando um tamanho do bloco atual de pixels é maior que um limiar, o codec de vídeo (i) particiona o bloco atual de pixels em uma pluralidade de unidades particionadas, (ii) refina o primeiro e segundo vetores de movimento para a pluralidade de unidades particionadas individualmente e (iii) codifica a pluralidade de sub-blocos individualmente usando os vetores de movimento refinados.
BREVE DESCRIÇÃO DOS DESENHOS
[0010]Os desenhos anexos são incluídos para fornecer um entendimento adicional da presente divulgação e são incorporados e constituem parte da presente divulgação. Os desenhos ilustram implementações da presente divulgação e,
juntamente com a descrição, servem para explicar os princípios da presente divulgação. É apreciável que os desenhos não estejam necessariamente em escala, pois alguns componentes podem parecer estar fora de proporção que o tamanho na implementação real a fim de ilustrar claramente o conceito da presente divulgação.
[0011]A Figura 1 mostra um diagrama de um sistema eletrônico que usa PMVD e DMVR para codificação de vídeo de acordo com uma modalidade da divulgação.
[0012]A Figura 2a-Figura 2b ilustra conceitualmente o uso de PMVD e DMVR de bipredição para codificar ou decodificar um bloco de pixels, consistente com uma modalidade exemplar da divulgação.
[0013]A Figura 3 ilustra conceitualmente o uso de correspondência de modelo e DMVR para codificar ou decodificar um bloco de pixels, consistente com uma modalidade exemplar da divulgação.
[0014]A Figura 4 ilustra conceitualmente um processo de correspondência bilateral e DMVR alternativo para codificar ou decodificar um bloco de pixels.
[0015]A Figura 5 ilustra um exemplo de codificador de vídeo que pode usar PMVD e DMVR para codificar blocos de pixels.
[0016]A Figura 6 ilustra partes do codificador de vídeo que implementam PMVD e DMVR.
[0017]A Figura 7 ilustra um exemplo de decodificador de vídeo que pode usar PMVD e DMVR para decodificar e reconstruir blocos de pixels.
[0018]A Figura 8 ilustra partes do decodificador de vídeo que implementam PMVD e DMVR.
[0019]A Figura 9a-Figura 9b ilustra conceitualmente um processo que um codec de vídeo (codificador ou decodificador) usa para implementar PMVD e DMVR ao codificar ou decodificar um bloco de pixels de um quadro de vídeo.
[0020]A Figura 10 ilustra conceitualmente um sistema eletrônico com o qual algumas modalidades da presente divulgação são implementadas.
DESCRIÇÃO DETALHADA
[0021]Na descrição detalhada a seguir, inúmeros detalhes específicos são apresentados a título de exemplo, a fim de fornecer uma compreensão completa dos ensinamentos relevantes. Quaisquer variações, derivados e/ou extensões com base nos ensinamentos aqui descritos estão dentro do escopo de proteção da presente divulgação. Em alguns casos, métodos, procedimentos, componentes e/ou circuitos conhecidos pertencentes a um ou mais exemplos de implementações divulgadas neste documento podem ser descritos em um nível relativamente alto sem detalhes, a fim de evitar aspectos desnecessariamente obscuros dos ensinamentos da presente divulgação. I. PMVD e DMVR
[0022]A derivação de vetor de movimento baseada em padrão (PMVD) é um método que deriva um preditor de vetor de movimento (MVP) temporal a partir de vetores de movimento existentes (MVs) de quadros de referência. Semelhante a um bloco codificado no modo de salto e mesclagem, um bloco codificado por PMVD não requer que informações de movimento sejam transmitidas a partir do codificador de vídeo para o decodificador de vídeo. Em vez disso, o decodificador procura nos quadros de referência disponíveis por vetores de movimento adequados que podem ser usados para reconstruir o bloco. PMVD é uma forma de conversão acima de taxa de quadros (FRUC), que permite que as informações de movimento de um bloco sejam derivadas no decodificador sem sinalizar a partir do codificador.
[0023]Um decodificador pode realizar PMVD examinando um conjunto de vetores de movimento candidatos para selecionar um vetor de movimento inicial e, em seguida, realiza refinamento de vetor de movimento de lado de decodificador (DMVR) por pesquisar em torno da região apontada pelo vetor de movimento inicial para um conjunto de pixels de referência que tem menor custo de correspondência ou custo de distorção. O resultado da pesquisa é um vetor de movimento refinado que é então usado para decodificar o bloco. O decodificador pode realizar um DMVR de segundo estágio por refinar o vetor de movimento adicionalmente para cada sub-bloco do bloco.
[0024]DMVR é uma técnica usada na codificação de vídeo (codificação/decodificação) para refinar vetores de movimento para um bloco atual de pixels sem transmissão de informações adicionais (por exemplo, elementos de sintaxe). No entanto, DMVR pode aumentar a quantidade de carga de trabalho de computação e aumentar o tempo de processamento. Em algumas modalidades, para garantir que a melhoria de qualidade de vídeo pelo DMVR seja justificada pelo aumento do tempo de processamento, DMVR é saltado ou parcialmente realizado com base em certas propriedades ou recursos do bloco atual.
[0025]Em algumas modalidades, PMVD e DMVR são usados para derivar e refinar dois vetores de movimento para inter- predição bidirecional (ou bipredição) do bloco atual. O bloco atual no quadro presente é codificado por um primeiro vetor de movimento que aponta para um primeiro conjunto de pixels de referência em um primeiro quadro de referência e um segundo vetor de movimento que aponta para um segundo conjunto de pixels de referência em um segundo quadro de referência. O bloco atual é previsto por uma combinação do primeiro conjunto de pixels de referência e o segundo conjunto de pixels de referência. As técnicas de PMVD e DMVR são usadas para identificar e refinar o primeiro e segundo vetores de movimento, de modo que o custo de distorção do uso da combinação dos primeiro e segundo conjuntos de pixels de referência para reconstruir o bloco atual seja mínimo.
[0026]A Figura 1 mostra um diagrama de um sistema eletrônico 0100 que usa PMVD e DMVR para codificação de vídeo de acordo com uma modalidade da divulgação. O sistema eletrônico 0100 inclui múltiplos dispositivos eletrônicos que usam várias técnicas de codificação (codificação/decodificação), tais como técnicas de codificação de inter-predição, técnicas de codificação de intra-predição e similares, para entregar com eficiência vídeo entre a pluralidade de dispositivos eletrônicos. No exemplo da Figura 1, o sistema eletrônico 0100 inclui um primeiro dispositivo 0110 e um segundo dispositivo 0160. O vídeo é codificado no primeiro dispositivo 0110 e o vídeo codificado é transmitido em um fluxo de bits 0150 do primeiro dispositivo 0110 para o segundo dispositivo 0160 a ser decodificado. O primeiro dispositivo 0110 e/ou o segundo dispositivo 0160 podem aplicar PMVD e DMVR como parte do modo de mesclagem para bipredição inter-quadro. DMVR pode ser terminado precocemente, totalmente saltado, ou parcialmente realizado no primeiro dispositivo 0110 e/ou no segundo dispositivo 0160.
[0027]Os dispositivos eletrônicos no sistema eletrônico 0100 podem ser quaisquer dispositivos adequados. Em um exemplo, o primeiro dispositivo 0110 é um dispositivo de captura de multimídia, como um gravador de vídeo, uma câmera, um smartfone, um tablet, um laptop, um computador desktop e similares configurados para gerar quadros de vídeo e codificar os quadros de vídeo em vídeo codificado; e o segundo dispositivo 0160 é um dispositivo de reprodução de multimídia, como uma televisão, um projetor, um smartfone, um tablet, um laptop, um computador desktop e similares configurados para decodificar o vídeo codificado para construir quadros de vídeo decodificados e exibir os quadros de vídeo decodificados.
[0028]Em algumas modalidades, o primeiro dispositivo 0110 é acoplado a um dispositivo de captura de multimídia (não mostrado) que gera quadros de vídeo, e o primeiro dispositivo 0110 recebe os quadros de vídeo a partir do dispositivo de captura de multimídia e codifica os quadros de vídeo. Em outro exemplo, o segundo dispositivo 0160 é acoplado a um dispositivo de reprodução de multimídia (não mostrado) e o segundo dispositivo 0160 decodifica o vídeo codificado para construir os quadros de vídeo decodificados e fornece os quadros de vídeo decodificados ao dispositivo de reprodução de multimídia para reprodução.
[0029]No exemplo da Figura 1, o primeiro dispositivo 0110 transmite o vídeo codificado em um fluxo de bits para o segundo dispositivo 0160 através de qualquer canal de comunicação adequado de acordo com um ou mais padrões de comunicação, como um cabo, uma rede de área local (LAN), uma LAN sem fio (WLAN), uma rede celular, uma rede ótica, Internet ou qualquer combinação dos itens acima. Em um exemplo, o fluxo de bits é transportado em sinais elétricos e transmitido através de um cabo. Em outro exemplo, o fluxo de bits é transportado em pacotes, e os pacotes são transmitidos por sinais elétricos em uma LAN. Em outro exemplo, os pacotes podem ser transportados por sinais de frequência de rádio, por exemplo, em uma WLAN ou em uma rede celular.
[0030]De acordo com um aspecto da divulgação, o primeiro dispositivo 0110 inclui um conjunto de circuitos de codificador 0120. O conjunto de circuitos de codificador 0120 é configurado para codificar vídeo de acordo com um padrão de codificação de vídeo (por exemplo, HEVC) e para gerar o fluxo de bits 0150 do vídeo codificado. O fluxo de bits é transmitido pelo primeiro dispositivo 0110 e/ou outros dispositivos (não mostrados) em qualquer formato adequado. O segundo dispositivo 0160 inclui um conjunto de circuitos de decodificador 0170. O conjunto de circuitos de decodificador 0170 é configurado para receber um fluxo de bits de vídeo codificado e decodificar o fluxo de bits 0150 para gerar os quadros de vídeo decodificados de acordo com um padrão de codificação de vídeo. Um codificador de vídeo de exemplo implementado pelo conjunto de circuitos de codificador 0120 será descrito na Seção II abaixo. Um exemplo de decodificador de vídeo implementado pelo conjunto de circuitos de decodificador 0170 será descrito na Seção III abaixo.
[0031]Além disso, o conjunto de circuitos de codificador
0120 usa PMVD e DMVR no modo de mesclagem para bipredição inter-quadro durante codificação, e o conjunto de circuitos de decodificador 0170 usa PMVD DMVR no modo de mesclagem para bipredição inter-quadro durante a decodificação. O DMVR pode ser seletivamente finalizado antecipadamente ou desativado para blocos que não atendem a determinadas condições, como serem maiores ou menores que um tamanho de limiar. Para o sistema 0100, o conjunto de circuitos de codificador 0120 inclui um inter-codificador 0130 configurado para aplicar PMVD e DMVR no modo de mesclagem para bipredição inter-quadro. O inter-codificador 0130 é um módulo de inter-predição que inclui um mecanismo de correspondência de padrão 0140 e um controle de refinamento
0145. O mecanismo de correspondência de padrão 0140 é configurado para identificar ou pesquisar vetores de movimento com base nos custos de distorção para PMVD e DMVR. O controle de refinamento 0145 é configurado para seletivamente finalizar ou desviar o DMVR antes que o DMVR seja totalmente realizado ou configurado para desativar o DMVR para os blocos que falham em atender a determinadas condições.
[0032]Da mesma forma, o conjunto de circuitos de decodificador 0170 inclui um inter-decodificador 0180 que é configurado para aplicar DMVR no modo de mesclagem para bipredição inter-quadro. O inter-decodificador 0180 é um módulo de inter-predição que inclui um mecanismo de correspondência de padrão 0190 e um controlador de refinamento 0195. O mecanismo de correspondência de padrão 0190 é configurado para pesquisar ou identificar vetores de movimento com base nos custos de distorção para PMVD e DMVR.
O controlador de refinamento 0195 é configurado para finalizar seletivamente o DMVR antes que o DMVR seja totalmente realizado ou configurado para desativar o DMVR para os blocos que falharam em atender a determinadas condições. Essas várias condições serão descritas mais detalhadamente na Seção IV abaixo.
[0033]Note que o conjunto de circuitos de codificador 0120 e o conjunto de circuitos de decodificador 0170 podem ser implementados usando qualquer técnica adequada. Em uma modalidade, o conjunto de circuitos de codificador 0120 e o conjunto de circuitos de decodificador 0170 são implementados usando circuitos integrados (ICs). Em outro exemplo, o conjunto de circuitos de codificador 0120 e o conjunto de circuitos de decodificador 0170 são implementados usando um ou mais processadores que executam instruções de software. Note também que o primeiro dispositivo 0110 e o segundo dispositivo 0160 podem incluir outros componentes adequados. Por exemplo, o primeiro dispositivo 0110 pode incluir um decodificador de vídeo (não mostrado) e o segundo dispositivo 0160 pode incluir um codificador (não mostrado).
[0034]A Figura 2a-Figura 2b ilustra conceitualmente o uso de PMVD e DMVR de bipredição para codificar ou decodificar um bloco de pixels, consistente com uma modalidade exemplar da divulgação. A figura mostra um quadro presente 0210 (ou quadro atual) para codificação/decodificação, um primeiro quadro de referência 0220 (ref0) anterior ao quadro presente 0210 em uma sequência de vídeo, e um segundo quadro de referência 0230 (ref1) que é posterior ao quadro presente 0210 na sequência de vídeo.
Note que o número de quadros entre o primeiro quadro de referência 0220 e o quadro presente 0210 pode ser diferente do número de quadros entre o quadro presente 0210 e o segundo quadro de referência 0230.
[0035]O quadro presente 0210 inclui um bloco 0211 que está sendo atualmente codificado (o bloco atual) usando correspondência bilateral, que é uma forma de PMVD de bipredição. O bloco atual 0211 pode ser uma CU de HEVC. Um módulo de inter-predição (por exemplo, o inter-codificador 0130 ou o inter-decodificador 0180) realiza PMVD para o bloco 0211 por refinar dois vetores de movimento MV1 e MV0. Como ilustrado na Figura 2a, o primeiro vetor de movimento MV0 aponta para um primeiro conjunto de pixels de referência 0221 no primeiro quadro de referência 0220, e o segundo vetor de movimento MV1 aponta para um segundo conjunto de pixels de referência 0231 no segundo quadro de referência 0230. MV0 é um MVP derivado temporal de List0 e MV1 é um MVP derivado temporal de List1. O MV refinado 0 (indicado MV0’) aponta para um primeiro conjunto de pixels de referência realocado
0225. O MV refinado 1 (indicado MV1') aponta para um segundo conjunto de pixels de referência realocado 0235.
[0036]Para derivar um MVP derivado temporal de List0, um MV de List0 no quadro de referência de List0 é dimensionado para o quadro atual como MV0. O MV de List0 é redimensionado para apontar para a imagem de referência cujo reflexo é 0 em List0 como um espelho de MV0. Procedimento análogo é usado para derivar um MVP derivado temporal de List1 que inclui MV1 e um espelho de MV1. O dimensionamento de um MV de um quadro de referência na List0 ou List1, atravessando o quadro atual para outro quadro de referência, segue uma mesma trajetória de movimento. O espelho de MV0 e MV0 estão na mesma trajetória de movimento que atravessa o bloco atual
0211. O espelho de MV1 e MV1 também estão na mesma trajetória de movimento que atravessa o bloco atual 0211.
[0037]O bloco atual pode ter vários MVPs derivados de tempo candidatos. Os MVPs derivados de tempo candidatos podem ser derivados de um conjunto predefinido de vetores de movimento candidatos, por exemplo, vetores de movimento candidatos da lista de mesclagem da CU 0211, vetores de movimento herdados de vizinhos espaciais da CU 0211 no quadro presente 0210, todos os vetores de movimento de todos os quadros de referência, etc. Em algumas modalidades, o módulo de inter-predição seleciona o MVP com o menor custo de distorção entre os MVPs derivados de tempo candidatos. O custo de distorção associado a um MVP List0 derivado temporal pode ser calculado como a diferença entre os conjuntos de pixels de referência apontados pelos dois MVs do MVP derivado temporal de List0 (por exemplo, espelho de MV0 e MV0). O custo de distorção associado a um MVP derivado temporal de List1 pode ser calculado como a diferença entre os conjuntos de pixels de referência apontados pelos dois MVs do MVP derivado temporal de List1 (por exemplo, espelho de MV1 e MV1). As diferenças podem ser medidas por uma soma das diferenças absolutas (SAD) ou por uma soma das diferenças ao quadrado (SSD) em um nível de pixel.
[0038]Como ilustrado na Figura 2b, a pesquisa produz um MV0 refinado (indicado como MV0’) e um MV refinado 1 (indicado como MV1') que minimiza os custos de distorção do MV0 e MV1. Antes do refinamento, o custo de distorção do MV0 é calculado como a diferença entre o primeiro conjunto de pixels de referência 0221 indicado por MV0 e o conjunto de pixels de referência 0222 indicado pelo espelho de MV0, e o custo de distorção do MV1 é calculado como a diferença entre o segundo conjunto de pixels de referência 0231 indicado por MV1 e um conjunto de pixels de referência 0232 indicado pelo espelho de MV1. Após o refinamento, o custo de distorção do MV0’ é calculado como a diferença entre o primeiro conjunto de pixels de referência realocado 0225 indicado por MV0' e um conjunto de pixels de referência 0226 indicado pelo espelho de MV0’. O custo de distorção do MV1’ é calculado como a diferença entre o segundo conjunto de pixels de referência realocado 0235 indicado por MV1' e um conjunto de pixels de referência 0236 indicado pelo espelho de MV1’.
[0039]Em algumas modalidades, o módulo de inter-predição realiza a correspondência bilateral em dois estágios. O primeiro estágio é a correspondência de nível de bloco (por exemplo, nível de PU ou nível de CU), e o segundo estágio é a correspondência de nível de sub-bloco (por exemplo, nível de sub-PU).
[0040]Para correspondência de nível de PU (nível de bloco) de primeiro estágio, vários pares de List0 de MV iniciais e MVPs derivados de tempo de List0 são selecionados respectivamente. O módulo de inter-predição calcula um custo de distorção para cada par de MV (por exemplo, SAD ou SSD entre os conjuntos de pixels de referência apontados pelo par de MVs). O par de MVs com o menor custo de distorção é selecionado para o bloco (por exemplo, como MV0 e MV1). Uma pesquisa diamante é então realizada para refinar o par de MVs selecionado. Em algumas modalidades, a precisão do refinamento é 1/8 pel, e o intervalo de pesquisa de refinamento é restrito dentro de ± 1 pixel. O par de MVs final refinado é identificado como o par de MVs derivado de nível de bloco.
[0041]Para a pesquisa de nível de sub-PU (ou sub-bloco) de segundo estágio, a PU atual é dividida em sub-PUs. A profundidade da sub-PU é sinalizada em SPS (por exemplo, 3). O tamanho de sub-PU mínimo é 4x4 pixels. Para cada sub-PU, várias MVs iniciais são selecionadas de List0 e List1, que podem incluir MVs de MV derivada de nível de PU, MV zero, TMVP colocalizado em HEVC de sub-PU atual e bloco inferior direito, MVP derivado temporal da sub-PU atual, e MVs de PU/sub-PU esquerda e acima. Usando o mecanismo semelhante na pesquisa de nível de PU, o melhor par de MVs para cada sub- PU é selecionado. A pesquisa diamante é realizada para refinar o par de MVs de cada sub-PU. A compensação de movimento para cada sub-PU é realizada para gerar o preditor para a sub-PU.
[0042]Em algumas modalidades, em vez de realizar a correspondência bilateral para pesquisar conjuntos de pixels de referência adequados ao longo de uma trajetória de movimento, o módulo de inter-predição (inter-codificador 0130 ou inter-decodificador 0180) realiza correspondência de modelo para pesquisar conjuntos de pixels de referência adequados com base em comparação de modelos. Nesse método de derivação de MV de decodificador, a correspondência de modelo é usada para gerar um MVP para codificação inter-modo. Quando uma imagem de referência é selecionada, a correspondência de modelo é realizada para identificar o melhor modelo na imagem de referência selecionada. O MV que corresponde ao modelo identificado é o MVP derivado. Este MVP é inserido na primeira posição no AMVP.
[0043]A Figura 3 ilustra conceitualmente o uso de correspondência de modelo e DMVR para codificar ou decodificar um bloco de pixels, consistente com uma modalidade exemplar da divulgação. A figura mostra um quadro atual 0310 (ou quadro atual) para codificação/decodificação, um primeiro quadro de referência 0320 que é anterior ao quadro presente 0310 em uma sequência de vídeo e um segundo quadro de referência 0330 que é posterior ao quadro presente 0310 na sequência de vídeo. Note que o número de quadros entre o primeiro quadro de referência 0320 e o quadro presente 0310 pode ser diferente do número de quadros entre o quadro presente 0310 e o segundo quadro de referência 0330.
[0044]Para o modo de mesclagem de correspondência de modelo, os pixels reconstruídos de 4 linhas acima e 4 colunas à esquerda são usados para formar um modelo. A correspondência de modelo é realizada para encontrar o modelo de melhor correspondência com seu MV correspondente. No exemplo da Figura 3, o modelo 0317 do bloco atual 0311 inclui conjuntos de pixels acima e à esquerda do bloco atual 0311. Os conjuntos de pixels de referência 0321 e 0331 correspondem a MV0 e MV1, respectivamente. O modelo 0327 e o modelo 0337 são conjuntos de pixels acima e à esquerda dos conjuntos de pixels de referência 0321 e 0331 e são usados para correspondência com o modelo 0317.
[0045]A correspondência de dois estágios também é aplicada para a correspondência de modelo. Para a correspondência de nível de PU de primeiro estágio, vários MVs iniciais a partir de List0 e List1 são selecionados respectivamente. Esses MVs incluem os MVs a partir de candidatos de mesclagem e os MVs a partir de MVPs derivados temporais. Dois conjuntos de MVs iniciais diferentes são gerados para duas listas. Para cada MV em uma lista, o custo de SAD do modelo com o MV é calculado. O MV com o menor custo é o melhor MV. Em seguida, a pesquisa diamante é realizada para refinar o MV. A precisão de refinamento é 1/8 pol. O intervalo de pesquisa de refinamento é restrito a ± 1 pixel. O MV final é o MV derivado de nível de PU. Os MVs em List0 e List1 são gerados independentemente. No exemplo da Figura 3, MV0’e MV1' são versões refinadas de MV0 e MV1 com base na pesquisa por modelos com os menores custos de SAD.
[0046]Para a pesquisa de nível de sub-PU de segundo estágio, a PU atual é dividida em sub-PUs. A profundidade da sub-PU é sinalizada em SPS (por exemplo, 3). O tamanho de sub-PU mínimo é bloco 4x4. Para cada sub-PU nos limites de PU esquerdo ou superior, vários MVs iniciais na List0 e List1 são selecionados, o que inclui MVs de MV derivado de nível de PU, MV zero, MVP colocalizado em HEVC da sub-PU atual e bloco inferior direito, MVP derivado temporal da sub-PU atual, e MVs de PUs/sub-Pus esquerda e acima. Usando o mecanismo semelhante na pesquisa de nível de PU, o melhor par de MVs para a sub-PU é selecionado. A pesquisa diamante é realizada para refinar o par de MVs. A compensação de movimento para esta sub-PU é realizada para gerar o preditor para esta sub-PU. Para aquelas PUs que não estão nos limites de PU esquerdo ou superior, o segundo estágio, pesquisa de nível de sub-PU, não é aplicado, e os MVs correspondentes são definidos iguais aos MVs no primeiro estágio.
[0047]A Figura 4 ilustra conceitualmente um processo de correspondência bilateral e DMVR alternativo para codificar ou decodificar um bloco de pixels, consistente com uma modalidade exemplar da divulgação. O custo de distorção é baseado no cálculo de soma removida de média das diferenças absolutas (MRSAD) entre predições de ambas as imagens de referência (ref0 e ref1) localizadas em lados opostos da imagem atual temporalmente. No exemplo, a diferença é calculada com base em um primeiro conjunto de pixels de referência indicado por um primeiro vetor de movimento MV0 e um segundo conjunto de pixels de referência indicado por um segundo vetor de movimento MV1.
[0048]Durante a pesquisa de precisão inteira, são verificados 6 pontos, escolhidos de acordo com um método de padrão de pesquisa adaptativo. Após a conclusão do processo de pesquisa inteiro, a pesquisa de precisão de meia amostra deve ser feita se a pesquisa de meio pel estiver ativada. Na pesquisa de meia amostra, apenas 4 pontos devem ser verificados (em forma de sinal mais). Em algumas modalidades, o padrão de pesquisa é aplicado nos modos Mesclagem e Salto se a seguinte condição for verdadeira: (POC - POC0) * (POC - POC1) <0, em que POC é a contagem de ordem de imagem da imagem a ser codificada atual, POC0 e POC1 são contagens de ordem de imagem das imagens de referência (ref0 e ref1) para a imagem atual. O par candidato de mesclagem sinalizado é usado como entrada no processo de DMVR e são indicados vetores de movimento iniciais (MV0, MV1). Os pontos de pesquisa que são pesquisados pelo DMVR obedecem à condição de espelhamento de diferença de vetor de movimento. Em outras palavras, qualquer ponto que é verificado pelo DMVR, indicado pelo par de vetores de movimento candidatos (MV0’, MV1’) obedece às duas equações a seguir: MV0’= MV0 + MVdiff MV1’= MV1 - MVdiff em que MVdiff representa os pontos no espaço de pesquisa em uma das imagens de referência. Após a construção do espaço de pesquisa, predições unilaterais são construídas usando o filtro de interpolação de DCTIF de 8 saídas regular. A função de custo de correspondência bilateral é calculada usando MRSAD entre as duas predições e o ponto de pesquisa que resulta no custo mínimo é selecionado como o par de MVs refinado (MV0’e MV1'). O custo de distorção é calculado com base na diferença entre um primeiro conjunto de pixels de referência em um primeiro quadro de referência indicado pelo primeiro vetor de movimento refinado (MV0’) e um segundo conjunto de pixels de referência em um segundo quadro de referência indicado pelo segundo vetor de movimento refinado (MV1’), e o primeiro vetor de movimento refinado (MV0') e o segundo vetor de movimento refinado (MV1’) são baseados em posições de pesquisa opostas em relação a uma posição de pesquisa central.
[0049]Para o cálculo de MRSAD, amostras de precisão de 16 bits são usadas para corresponder à saída da filtragem de interpolação. Em algumas modalidades, nenhuma operação de recorte e arredondamento é aplicada antes do cálculo de MRSAD para reduzir o requisito de buffer interno. Os pontos de pesquisa de precisão inteira são escolhidos por um método de padrão adaptativo. Como ilustrado na Figura 4, um custo inicial que corresponde aos pontos centrais (P0) de ref0 e ref1 (apontado pelos vetores de movimento iniciais MV0 e MV1) é primeiro calculado. 4 custos adicionais correspondentes às posições de pixel em forma de sinal mais (P1-P4) são calculados por predições localizadas nos lados opostos do ponto central. Um último ponto (P5) é escolhido com base no gradiente dos custos calculados anteriores. A saída do processo de DMVR é o par de vetores de movimento refinado correspondente ao custo mínimo.
[0050]Se após uma iteração o custo mínimo for atingido no ponto central do espaço de pesquisa, ou seja, os vetores de movimento não forem alterados, o processo de refinamento será encerrado. Caso contrário, o ponto com custo mínimo é considerado o centro de um processo de pesquisa adicional, desde que o intervalo de pesquisa não seja excedido.
[0051]A pesquisa de precisão de meia amostra é aplicada apenas se a aplicação da pesquisa de meio pel não exceder o intervalo de pesquisa. Nesses casos, apenas 4 cálculos de MRSAD são realizados, correspondendo a pontos em forma de mais em torno de um ponto central, que é escolhido com base no custo mínimo durante a pesquisa de precisão inteira. O processo de DMVR gera um par de vetores de movimento refinado que corresponde ao ponto de custo mínimo no final da pesquisa. II. Exemplo de codificador de vídeo
[0052]A Figura 5 ilustra um exemplo de codificador de vídeo 0500 que pode usar PMVD e DMVR para codificar blocos de pixels. Como ilustrado, o codificador de vídeo 0500 recebe sinal de vídeo de entrada a partir de uma fonte de vídeo 0505 e codifica o sinal no fluxo de bits 0595. O codificador de vídeo 0500 possui vários componentes ou módulos para codificar o sinal a partir da fonte de vídeo 0505, incluindo um módulo de transformada 0510, um módulo de quantização
0511, um módulo de quantização inversa 0514, um módulo de transformada inversa 0515, um módulo de estimativa intra- imagem 0520, um módulo de predição intra-imagem 0525, um módulo de compensação de movimento 0530, um módulo de estimativa de movimento 0535, um módulo de estimativa de movimento 0535, um filtro em-circuito 0545, um buffer de imagem reconstruída 0550, um buffer de MV 0565 e um módulo de predição de MV 0575 e um codificador de entropia 0590. O módulo de compensação de movimento 0530 e o módulo de estimativa de movimento 0535 fazem parte de um módulo de inter-predição 0540.
[0053]Em algumas modalidades, os módulos 0510 - 0590 são módulos de instruções de software sendo executadas por uma ou mais unidades de processamento (por exemplo, um processador) de um dispositivo de computação ou aparelho eletrônico. Em algumas modalidades, os módulos 0510 - 0590 são módulos de circuitos de hardware implementados por um ou mais circuitos integrados (ICs) de um aparelho eletrônico. Embora os módulos 0510 - 0590 sejam ilustrados como módulos separados, alguns dos módulos podem ser combinados em um único módulo.
[0054]A fonte de vídeo 0505 fornece um sinal de vídeo bruto que apresenta dados de pixel de cada quadro de vídeo sem compressão. Um subtrator 0508 calcula a diferença entre os dados de pixel de vídeo brutos da fonte de vídeo 0505 e os dados de pixel previstos 0513 do módulo de compensação de movimento 0530 ou do módulo de intra-predição 0525. A transformada 0510 converte a diferença (ou os dados de pixel residuais ou sinal residual 0509) em coeficientes de transformada (por exemplo, realizando Transformada de
Cosseno Discreta, ou DCT). O módulo de quantização 0511 quantiza os coeficientes de transformada em dados quantizados (ou coeficientes quantizados) 0512, que são codificados no fluxo de bits 0595 pelo codificador de entropia 0590.
[0055]O módulo de quantização inversa 0514 desquantiza os dados quantizados (ou coeficientes quantizados) 0512 para obter coeficientes de transformada, e o módulo de transformada inversa 0515 realiza transformada inversa nos coeficientes de transformada para produzir resíduo reconstruído 0519. O resíduo reconstruído 0519 é adicionado com os dados de pixel previstos 0513 para produzir dados de pixel reconstruídos 0517. Em algumas modalidades, os dados de pixel reconstruídos 0517 são armazenados temporariamente em um buffer de linha (não ilustrado) para predição intra- imagem e predição de MV espacial. Os pixels reconstruídos são filtrados pelo filtro em-circuito 0545 e armazenados no buffer de imagem reconstruída 0550. Em algumas modalidades, o buffer de imagem reconstruída 0550 é um armazenamento externo ao codificador de vídeo 0500. Em algumas modalidades, o buffer de imagem reconstruída 0550 é um armazenamento interno ao codificador de vídeo 0500.
[0056]O módulo de estimativa intra-imagem 0520 realiza intra-predição com base nos dados de pixel reconstruídos 0517 para produzir dados intra-predição. Os dados intra- predição são fornecidos ao codificador de entropia 0590 para serem codificados no fluxo de bits 0595. Os dados intra- predição também são usados pelo módulo intra-predição 0525 para produzir os dados de pixel previstos 0513.
[0057]O módulo de estimativa de movimento 0535 realiza inter-predição produzindo MVs para referenciar dados de pixel de quadros decodificados anteriormente armazenados no buffer de imagem reconstruída 0550. Esses MVs são fornecidos ao módulo de compensação de movimento 0530 para produzir dados de pixel previstos.
[0058]Em vez de codificar os MVs reais completos no fluxo de bits, o codificador de vídeo 0500 usa predição de MV para gerar MVs previstos, e a diferença entre os MVs usados para compensação de movimento e os MVs previstos é codificada como dados de movimento residual e armazenada no fluxo de bits 0595.
[0059]O módulo de predição de MV 0575 gera os MVs previstos com base em MVs de referência que foram gerados para a codificação de quadros de vídeo anteriores, isto é, os MVs de compensação de movimento que foram usados para realizar a compensação de movimento. O módulo de predição de MV 0575 recupera MVs de referência a partir de quadros de vídeo anteriores a partir do buffer de MV 0565. O codificador de vídeo 0500 armazena os MVs gerados para o quadro de vídeo atual no buffer de MV 0565 como MVs de referência para gerar MVs previstos.
[0060]O módulo de predição de MV 0575 usa os MVs de referência para criar os MVs previstos. Os MVs previstos podem ser calculados por predição de MV espacial ou predição de MV temporal. A diferença entre os MVs previstos e os MVs de compensação de movimento (MC MVs) do quadro atual (dados de movimento residual) é codificada no fluxo de bits 0595 pelo codificador de entropia 0590.
[0061]O codificador de entropia 0590 codifica vários parâmetros e dados no fluxo de bits 0595 usando técnicas de codificação de entropia, como codificação aritmética binária adaptativa de contexto (CABAC) ou codificação Huffman. O codificador de entropia 0590 codifica parâmetros como dados de transformada quantizados e dados de movimento residual no fluxo de bits 0595. O fluxo de bits 0595, por sua vez, é armazenado em um dispositivo de armazenamento ou transmitido para um decodificador por um meio de comunicações como uma rede.
[0062]O filtro em-circuito 0545 realiza operações de filtragem ou suavização nos dados de pixel reconstruídos 0517 para reduzir os artefatos de codificação, particularmente nos limites dos blocos de pixels. Em algumas modalidades, a operação de filtragem realizada inclui deslocamento adaptativo de amostra (SAO). Em algumas modalidades, as operações de filtragem incluem filtro de circuito adaptativo (ALF).
[0063]A Figura 6 ilustra partes do codificador de vídeo 0500 que implementam PMVD e DMVR. Especificamente, a figura ilustra os componentes do módulo de inter-predição 0540 do codificador de vídeo 0500. Para algumas modalidades, o módulo de inter-predição 0540 do codificador de vídeo 0500 implementa o inter-codificador 0130. Como ilustrado, o módulo de inter-predição 0540 recupera vetores de movimento candidatos do buffer de MV 0565 e pesquisa o conteúdo do buffer de imagem reconstruída 0550 para gerar um par de MVs para bipredição do bloco atual.
[0064]O módulo de inter-predição 0540 inclui o módulo de compensação de movimento 0530, o módulo de estimativa de movimento 0535, um seletor de MV 0605, um controle de refinamento 0610, um mecanismo de correspondência de padrão
0620, um mecanismo de correspondência de padrão 0620, um buffer de pesquisa 0630 e uma calculadora de custos de distorção 0640. O seletor de MV 0605 recupera os vetores de movimento candidatos a partir do buffer de MV 0565 e fornece os candidatos ao mecanismo de correspondência de padrão 0620. O mecanismo de correspondência de padrão 0620, por sua vez, gera um par de MVs (MV0 e MV1) para o bloco atual de acordo com a correspondência bilateral ou correspondência de modelo. O mecanismo de correspondência de padrão 0620 também pode gerar um par de MVs para cada sub-bloco do bloco atual durante o refinamento de MV de sub-bloco. O par de MVs é usado para recuperar dados de pixel do buffer de pesquisa 0630, que armazena conteúdo temporário recuperado seletivamente do buffer de imagem reconstruída 0550. Em algumas modalidades, o buffer de pesquisa 0630 é implementado por um dispositivo de memória interna do codificador de vídeo 0500, enquanto o buffer de imagem reconstruída 0550 pode ser um dispositivo de memória externa fora do codificador de vídeo 0500. O dispositivo de memória interna pode ter significativamente menor capacidade do que o dispositivo de memória externa.
[0065]Os dados de pixel recuperados do buffer de pesquisa 0630 são usados para calcular os custos de distorção associados ao par de MVs pela calculadora de custos de distorção 0640. Os dados de pixel recuperados podem corresponder a conjuntos de pixels de referência que seguem uma mesma trajetória de movimento que o bloco atual ou tem modelos de correspondência como o bloco atual. O custo de distorção calculado (por exemplo, SSD ou SAD) pode ser usado pelo mecanismo de correspondência de padrão 0620 para identificar o par de MVs com o menor custo de distorção. O par de MVs identificado é fornecido ao módulo de compensação de movimento 0530 para reconstruir o bloco atual.
[0066]Em algumas modalidades, o módulo de inter-predição 0540 subamostra os dados de pixel ao calcular o custo de distorção, por exemplo, considerando apenas um subconjunto predefinido dos dados de pixel, como linhas ímpares ou pares. Em algumas modalidades, os dados armazenados no buffer de pesquisa são subamostrados para que o tamanho da memória interna que implementa o buffer de pesquisa 0630 possa ser reduzido. Em algumas modalidades, a saída do buffer de pesquisa 0630 é subamostrada para que o número de cálculos para SSD ou SAD na calculadora de custo de distorção 0640 possa ser reduzido.
[0067]O controle de refinamento 0610 determina se é necessário ativar ou desativar um estágio particular do refinamento de MV do DMVR com base em determinadas condições, como se o tamanho, altura ou largura da CU é maior que um limiar. Essas condições serão descritas mais detalhadamente na Seção IV abaixo. Essas condições podem ser determinadas no módulo de estimativa de movimento 0535 com base em fatores como compensação de distorção de taxa. III. Exemplo de decodificador de vídeo
[0068]A Figura 7 ilustra um exemplo de decodificador de vídeo 0700 que pode usar PMVD e DMVR para decodificar e reconstruir blocos de pixels. Como ilustrado, o decodificador de vídeo 0700 é um circuito de decodificação de imagem ou decodificação de vídeo que recebe um fluxo de bits 0795 e decodifica o conteúdo do fluxo de bits em dados de pixel de quadros de vídeo para exibição. O decodificador de vídeo 0700 possui vários componentes ou módulos para decodificar o fluxo de bits 0795, incluindo um módulo de quantização inversa 0705, um módulo de transformada inversa 0715, um módulo de intra-predição 0725, um módulo de compensação de movimento 0730, um filtro em-circuito 0745, um buffer de imagem decodificada 0750, um buffer de MV 0765, um módulo de predição de MV 0775 e um analisador 0790. O módulo de compensação de movimento 0730 faz parte de um módulo de inter-predição 0740.
[0069]Em algumas modalidades, os módulos 0710 - 0790 são módulos de instruções de software que são executadas por uma ou mais unidades de processamento (por exemplo, um processador) de um dispositivo de computação. Em algumas modalidades, os módulos 0710 - 0790 são módulos de circuitos de hardware implementados por um ou mais ICs de um aparelho eletrônico. Embora os módulos 0710 - 0790 sejam ilustrados como módulos separados, alguns dos módulos podem ser combinados em um único módulo.
[0070]O analisador 0790 (ou decodificador de entropia) recebe o fluxo de bits 0795 e realiza a análise inicial de acordo com a sintaxe definida por um padrão de codificação de vídeo ou codificação de imagem. O elemento de sintaxe analisado inclui vários elementos de cabeçalho, bandeiras e dados quantizados (ou coeficientes quantizados) 0712. O analisador 0790 analisa os vários elementos de sintaxe usando técnicas de codificação de entropia, como codificação aritmética binária adaptativa de contexto (CABAC) ou Codificação Huffman.
[0071]O módulo de quantização inversa 0705 desquantiza os dados quantizados (ou coeficientes quantizados) 0712 para obter coeficientes de transformada, e o módulo de transformada inversa 0715 realiza transformada inversa nos coeficientes de transformada 0716 para produzir sinal de resíduo reconstruído 0719. O sinal de resíduo reconstruído 0719 é adicionado aos dados de pixel previstos 0713 a partir do módulo de intra-predição 0725 ou o módulo de compensação de movimento 0730 para produzir dados de pixels decodificados
0717. Os dados de pixels decodificados são filtrados pelo filtro em-circuito 0745 e armazenados no buffer de imagem decodificada 0750. Em algumas modalidades, o buffer de imagem decodificada 0750 é um armazenamento externo ao decodificador de vídeo 0700. Em algumas modalidades, o buffer de imagem decodificada 0750 é um armazenamento interno ao decodificador de vídeo 0700.
[0072]O módulo de intra-predição 0725 recebe dados de intra-predição do fluxo de bits 0795 e, de acordo com o qual, produz os dados de pixel previstos 0713 a partir dos dados de pixels decodificados 0717 armazenados no buffer de imagem decodificada 0750. Em algumas modalidades, os dados de pixels decodificados 0717 também são armazenados em um buffer de linha (não ilustrado) para predição intra-imagem e predição de MV espacial.
[0073]Em algumas modalidades, o conteúdo do buffer de imagem decodificada 0750 é usado para exibição. Um dispositivo de exibição 0755 recupera o conteúdo do buffer de imagem decodificada 0750 para exibição diretamente ou recupera o conteúdo do buffer de imagem decodificada para um buffer de exibição. Em algumas modalidades, o dispositivo de exibição recebe valores de pixel do buffer de imagem decodificada 0750 através de um transporte de pixel.
[0074]O módulo de compensação de movimento 0730 produz dados de pixel previstos 0713 a partir dos dados de pixel decodificados 0717 armazenados no buffer de imagem decodificada 0750 de acordo com MVs de compensação de movimento (MC MVs). Esses MVs de compensação de movimento são decodificados adicionando os dados de movimento residual recebidos a partir do fluxo de bits 0795 com os MVs previstos recebidos a partir do módulo de predição de MV 0775.
[0075]O módulo de predição de MV 0775 gera os MVs previstos com base nos MVs de referência que foram gerados para decodificar os quadros de vídeo anteriores, por exemplo, os MVs de compensação de movimento que foram usados para realizar a compensação de movimento. O módulo de predição de MV 0775 recupera os MVs de referência dos quadros de vídeo anteriores a partir do buffer de MV 0765. O decodificador de vídeo 0700 armazena os MVs de compensação de movimento gerados para decodificar o quadro de vídeo atual no buffer de MV 0765 como MVs de referência para produzir MVs previstos.
[0076]O filtro em-circuito 0745 realiza operações de filtragem ou suavização nos dados de pixel decodificados 0717 para reduzir os artefatos de codificação, particularmente nos limites dos blocos de pixels. Em algumas modalidades, a operação de filtragem realizada inclui deslocamento adaptativo de amostra (SAO). Em algumas modalidades, as operações de filtragem incluem filtro de circuito adaptativo (ALF).
[0077]A Figura 8 ilustra partes do decodificador de vídeo 0700 que implementam PMVD e DMVR. Especificamente, a figura ilustra os componentes do módulo de inter-predição 0740 do decodificador de vídeo 0700. Para algumas modalidades, o módulo de inter-predição 0740 do decodificador de vídeo 0700 implementa o inter-decodificador 0180. Como ilustrado, o módulo de inter-predição 0740 recupera vetores de movimento candidatos do buffer de MV 0765 e pesquisa o conteúdo do buffer de imagem decodificada 0750 para gerar um par de MVs para bipredição do bloco atual.
[0078]O módulo de inter-predição 0740 inclui o módulo de compensação de movimento 0730, um seletor de MV 0805, um controle de refinamento 0810, um mecanismo de correspondência de padrão 0820, um buffer de pesquisa 0830 e uma calculadora de custos de distorção 0840. O seletor de MV 0805 recupera os vetores de movimento candidatos do buffer de MV 0765 e fornecem os candidatos ao mecanismo de correspondência de padrão 0820. O mecanismo de correspondência de padrão 0820, por sua vez, gera um par de MVs (MV0 e MV1) para o bloco atual de acordo com a correspondência bilateral ou correspondência de modelo. O mecanismo de correspondência de padrão 0820 também pode gerar um par de MVs para cada um dos sub-blocos durante o refinamento de MV de sub-bloco. O par de MVs é usado para recuperar dados de pixel do buffer de pesquisa 0830, que armazena conteúdo temporário recuperado seletivamente do buffer de imagem decodificada 0750. Em algumas modalidades, o buffer de pesquisa 0830 é implementado por um dispositivo de memória interna do decodificador de vídeo 0700, enquanto o buffer de imagem decodificada 0750 pode ser um dispositivo de memória externa fora do decodificador de vídeo 0700. O dispositivo de memória interna pode ter significativamente menos capacidade que o dispositivo de memória externa.
[0079]Os dados de pixel recuperados do buffer de pesquisa 0830 são usados para calcular os custos de distorção associados ao par de MVs pela calculadora de custos de distorção 0840. Os dados de pixel recuperados podem corresponder a conjuntos de pixels de referência que seguem uma mesma trajetória de movimento que o bloco atual ou ter modelos de correspondência como o bloco atual. O custo de distorção calculado (por exemplo, SSD ou SAD) pode ser usado pelo mecanismo de correspondência de padrão 0820 para identificar o par de MVs com o menor custo de distorção. O par de MVs identificado é fornecido ao módulo de compensação de movimento 0730 para reconstruir o bloco atual.
[0080]Em algumas modalidades, o módulo de inter-predição 0740 subamostra os dados de pixel ao calcular o custo de distorção, por exemplo, considerando apenas um subconjunto predefinido dos dados de pixel, como linhas ímpares ou pares. Em algumas modalidades, os dados armazenados no buffer de pesquisa são subamostrados para que o tamanho da memória interna que implementa o buffer de pesquisa 0830 possa ser reduzido. Em algumas modalidades, a saída do buffer de pesquisa 0830 é subamostrada para que o número de cálculos para SSD ou SAD na calculadora de custo de distorção 0840 possa ser reduzido.
[0081]O controle de refinamento 0810 determina se é necessário ativar ou desativar um estágio particular do refinamento de MV do DMVR com base em certas condições, como se o tamanho, altura ou largura da CU é maior que um limiar. Essas condições serão descritas mais detalhadamente na Seção IV abaixo. O controle de refinamento 0810 do decodificador de vídeo pode determinar essas condições com base no conteúdo do fluxo de bits 0795 fornecido pelo analisador 0790. IV. Refinamento de MV condicional
[0082]Em algumas modalidades, o refinamento de MV não é permitido para a CU atual quando a CU é maior que um tamanho de limiar. Se o refinamento de MV for permitido, o módulo de inter-predição realiza uma pesquisa (por exemplo, uma pesquisa diamante ou uma pesquisa descrita por referência à Figura 4) para refinar o par de MVs em um estágio de pesquisa de MV. Em algumas modalidades, se a CU atual for maior que o tamanho de limiar, o módulo de inter-predição desabilita o refinamento horizontal de MV para a CU (embora o refinamento vertical de MV ainda possa estar ativado). Em algumas modalidades, se a CU atual for maior que o tamanho de limiar, o módulo de inter-predição desabilita o refinamento vertical de MV para a CU (embora o refinamento horizontal de MV ainda possa estar ativado).
[0083]Em algumas modalidades, o módulo de inter-predição (0540 ou 0740) pode particionar a CU atual em várias unidades particionadas menores para o estágio de pesquisa de MV para simplificar o cálculo de SSD ou SAD. Por exemplo, se o tamanho da CU atual for maior que o tamanho de limiar, o módulo de inter-predição particionará a CU em várias unidades particionadas e executará o processo de pesquisa de MV para cada unidade particionada. Por outro lado, se o tamanho da CU atual for menor que o tamanho de limiar, o módulo de inter-predição não particionará a CU e executará o processo de pesquisa de MV da CU como um todo. Por exemplo, se o tamanho de limiar for definido como 128x128 e o tamanho atual da CU for 256x256, o módulo de inter-predição particionará a CU em 4 unidades particionadas no tamanho 128x128 cada e executará o processo de pesquisa de MV para cada unidade particionada.
[0084]Em algumas modalidades, o módulo de inter-predição particiona a CU atual em unidades particionadas e realiza o refinamento de MV independentemente para cada unidade particionada se a CU ultrapassar um limite de unidade de grade na imagem de vídeo. Uma unidade de grade é definida como uma região retangular grid_width x grid_height em uma CTU. Uma CTU pode ser particionada em várias unidades de grade. Se uma CU não estiver totalmente contida em uma unidade de grade, o módulo de inter-predição particionará a CU atual em várias unidades particionadas e executará o refinamento de MV independentemente para as unidades particionadas, desde que cada unidade particionada caia dentro de uma unidade de grade.
[0085]A CU atual pode incluir vários sub-blocos. O processo de refinamento de MV pode ser aplicado para cada sub-bloco de forma independente durante um estágio de refinamento de MV de sub-bloco. O estágio de refinamento de MV de sub-bloco requer largura de banda de memória significativa ao pesquisar uma área alvo para refinar os MVs por sub-blocos. Para reduzir o acesso à memória, o codec de vídeo em algumas modalidades ignora o estágio de refinamento de MV de sub-bloco condicionalmente. Ou seja, o refinamento de MV de sub-bloco nem sempre é executado. Em algumas modalidades, se o tamanho atual da CU for menor que o tamanho de limiar, o processo de refinamento de MV de sub-bloco será saltado. MxN pode ser qualquer número inteiro, por exemplo, 4, 8, 16 e assim por diante.
[0086]Em algumas modalidades, a condição para realizar o refinamento de MV de sub-bloco é decidida com base em informações de movimento, incluindo seleção de quadro de referência, direção de predição, ou a magnitude do vetor de movimento. Por exemplo, em algumas modalidades, o estágio de refinamento de MV de sub-bloco é realizado quando a seleção do quadro de referência é igual a 0 ou quando a magnitude do vetor de movimento é maior que um limiar.
[0087]Em algumas modalidades, a condição para realizar o refinamento de MV de sub-bloco é decidida com base em uma proporção entre o tamanho de CU atual e um tamanho de CU vizinha. Se o tamanho de CU atual for muito maior que o tamanho de CU vizinha, o refinamento de MV de sub-bloco será permitido. Caso contrário, o refinamento de MV de sub-bloco para a CU atual é desativado. O refinamento de MV de sub- bloco condicional pode ser implementado por codificadores e/ou decodificadores (por exemplo, o módulo de inter- predição 0540 do codificador de vídeo 0500 e/ou o módulo de inter-predição 0740 do decodificador de vídeo 0700).
[0088]Como mencionado, ao determinar se é necessário realizar o refinamento de MV, se é necessário realizar o refinamento de MV de sub-bloco ou se deve particionar a CU durante o estágio de pesquisa de MV, o tamanho da CU é comparado com um tamanho de limiar. Em algumas modalidades, uma CU é considerada maior que o tamanho de limiar, se uma dimensão linear da CU (por exemplo, largura ou altura da CU) for maior que um limiar. Por outro lado, a CU é considerada menor que o tamanho de limiar se a dimensão linear da CU for menor que o limiar. Em algumas modalidades, a CU é considerada maior que o tamanho de limiar, se a área da CU for maior que uma área de limiar, e a CU é considerada como menor que o tamanho de limiar, se a área da CU for menor que a área de limiar.
[0089]Em algumas modalidades, a CU é comparada com um tamanho de limiar MxN que é especificado por uma altura de limiar (M) e uma largura de limiar (N). Os valores de M e N podem ser predefinidos ou sinalizados em nível de sequência, nível de imagem ou nível de fatia. Os valores de M e N também podem ser derivados com base na resolução de vídeo ou perfil padrão. A CU pode ser considerada maior que o tamanho de limiar se (i) a área da CU for maior que MxN, (ii) se a altura da CU for maior que M, (iii) se a largura da CU for maior que N, (iv) se a largura da CU for maior que N e a altura da CU for maior que M, ou (v) se a largura da CU for maior que N ou se a altura da CU for maior que M.
[0090]Para uma CU grande, o processo de DMVR pode exigir mais operações de lado de decodificador e mais profundidade de bits de dados do que para uma CU menor. Para reduzir a complexidade computacional do DMVR para CUs grandes, o módulo de inter-predição (0540 ou 0740) pode realizar o processo de refinamento de MV por subamostrar dados de pixel ao calcular o custo de distorção. Por exemplo, o módulo de inter-predição pode usar apenas as diferenças nas linhas ímpares ou nas linhas pares para selecionar o melhor MV para a CU atual.
[0091]Em algumas modalidades, um codificador de vídeo é restrito a não codificar duas CUs consecutivas por refinamento de MV. Por exemplo, se a CU anterior da CU atual for codificada pelo refinamento de MV devido a uma decisão de distorção de taxa, a CU atual será impedida de ser codificada pelo refinamento de MV. Em algumas modalidades, a sintaxe de fluxo de bits para o refinamento de MV está ausente para a CU atual sempre que a CU anterior é codificada pelo refinamento de MV.
[0092]O codificador pode usar a sintaxe de refinamento de MV no fluxo de bits para informar ao decodificador se o refinamento de MV está ligado. Em algumas modalidades, o codificador de vídeo desliga as operações de refinamento de MV, e a sintaxe de refinamento de MV é sinalizada como 0 a partir do codificador para o decodificador. Em algumas modalidades, para CU grande (tamanho ≥ o limiar predefinido), a sintaxe de refinamento de MV é eliminada a partir do fluxo de bits, e o decodificador desliga automaticamente o refinamento de MV com base no tamanho da CU, economizando pelo menos um bit no fluxo de bits.
[0093]A Figura 9a-Figura 9b ilustra conceitualmente um processo que um codec de vídeo (codificador ou decodificador) usa para implementar PMVD e DMVR ao codificar ou decodificar um bloco de pixels de um quadro de vídeo. Em algumas modalidades, uma ou mais unidades de processamento (por exemplo, um processador) de um dispositivo de computação que implementa o codificador de vídeo 0500 ou o decodificador de vídeo 0700 realiza o processo 0900 executando instruções armazenadas em um meio legível por computador. Em algumas modalidades, um aparelho eletrônico que implementa o codificador de vídeo 0500 ou o decodificador de vídeo 0700 realiza o processo 0900.
[0094]Como ilustrado na Figura 9a, o codec de vídeo recebe (no passo 0902) o bloco de pixels do quadro de vídeo como o bloco atual a ser codificado. O bloco de pixels pode vir de um vídeo bruto a ser codificado em um fluxo de bits como PU ou CU. O bloco de pixels também pode vir de um fluxo de bits como uma PU ou CU a ser decodificada em dados de pixel.
[0095]O codec de vídeo determina (no passo 0904) se deve codificar o bloco atual usando PMVD e DMVR. Em um codificador de vídeo, um processo ou módulo de estimativa de movimento pode decidir se deve usar PMVD e DMVR para o bloco atual com base em considerações de distorção de taxa. Se o bloco atual está codificado em PMVD e DMVR pode ser indicado no fluxo de bits que codifica o quadro de vídeo. Em algumas modalidades, o fluxo de bits pode incluir uma bandeira que indica se o bloco está codificado em PMVD e DMVR. Em algumas modalidades, o fluxo de bits pode incluir uma bandeira que indica se o modo FRUC é usado. O decodificador que recebe o fluxo de bits pode usar a bandeira para decidir se deve realizar o PMVD e o DMVR. Em algumas modalidades, essa bandeira está presente quando o fluxo de bits inclui uma bandeira que indica que o modo de salto ou o modo de mesclagem é verdadeiro. Se o bloco atual estiver codificado em PMVD e DMVR, o processo continuará para 0908. Caso contrário, o processo continuará para 0906.
[0096]No passo 0906, o codec de vídeo usa um modo diferente de PMVD para codificar ou decodificar o bloco atual, modo de codificação como modo de mesclagem, intra- modo, modo AMVP, etc. O processo 0900 termina e o codec de vídeo pode prosseguir para codificar ou decodificar outro bloco.
[0097]No passo 0908, o codec de vídeo identifica um par de MVs para codificar um bloco atual de pixels para a imagem de vídeo atual. O par de MVs inclui um primeiro vetor de movimento que é indicativo de um primeiro conjunto de pixels de referência em um primeiro quadro de referência e um segundo vetor de movimento que é indicativo de um segundo conjunto de pixels de referência em um segundo quadro de referência. O codec de vídeo pode identificar o par de MVs com base em um conjunto predefinido de vetores de movimento candidatos, por exemplo, vetores de movimento candidatos da lista de mesclagem do bloco atual, vetores de movimento herdados de vizinhos espaciais do bloco atual, todos os vetores de movimento de todos os quadros de referência (List0 e List1), etc. O processo então prossegue para 0910.
[0098]O codec de vídeo determina (no passo 0910) se deve desligar ou permitir o refinamento de MV para o bloco atual. Em algumas modalidades, um elemento de sintaxe de refinamento de MV está presente no fluxo de bits, e o decodificador pode desligar ou permitir o refinamento de MV com base no elemento de sintaxe de refinamento de MV. Em algumas modalidades, se o tamanho da CU for maior que um tamanho de limiar, o codec de vídeo desativa a operação de refinamento de MV sem examinar o elemento de sintaxe de refinamento de MV, e o elemento de sintaxe de refinamento de MV pode estar ausente a partir do fluxo de bits. Em algumas modalidades, o codificador não realiza o refinamento de MV, e a sintaxe de refinamento de MV está ausente ou definida como 0, e o decodificador determina se é necessário desligar ou permitir o refinamento de MV com base no tamanho da CU. Em algumas modalidades, se a CU anterior da CU atual é codificada com refinamento de MV, a CU atual é impedida de ser codificada com refinamento de MV. Se o refinamento de MV estiver desativado para o bloco atual, o processo continuará para
0912. Se o refinamento de MV for permitido, o processo continuará para o passo 0914.
[0099]No passo 0912, o codec de vídeo codifica o bloco atual usando o par de MVs identificado sem realizar o refinamento de MV. O processo 0900 termina e o codec de vídeo pode prosseguir para codificar outros blocos.
[00100]No passo 0914, o codec de vídeo realiza pesquisa e refinamento de MV de nível de bloco para o bloco atual. Em algumas modalidades, o codec de vídeo refina o par de MVs por realizar uma pesquisa diamante para minimizar um custo de distorção associado ao par de MVs (ou os conjuntos de pixels de referência indicados pelo par de MVs).
[00101]Em algumas modalidades, o custo de distorção é calculado com base na diferença entre os conjuntos de pixels de referência indicados pelo par de MVs (como descrito por referência à Figura 4). Em algumas modalidades, o custo de distorção é calculado com base nos pixels vizinhos do bloco atual e nos pixels vizinhos dos conjuntos de pixels de referência indicados pelo par de MVs (como descrito por referência à Figura 3). Em algumas modalidades, o custo de distorção é calculado com base nas diferenças entre os conjuntos de pixels de referência indicados pelo par de MVs e os conjuntos de pixels de referência indicados pelos espelhos do par de MVs (como descrito por referência à Figura 2a-Figura 2b).
[00102]Em algumas modalidades, o custo de distorção é calculado por subamostrar os dados de pixel apontados pelo par de MVs. Em algumas modalidades, se a CU atual for maior que um tamanho de limiar, o codec de vídeo desabilitará o refinamento horizontal de MV para a CU. Em algumas modalidades, se a CU atual for maior que um tamanho de limiar, o codec de vídeo desativará o refinamento vertical de MV para a CU. O processo prossegue para 0916.
[00103]No passo 0916, o codec de vídeo determina se é necessário saltar o refinamento de MV de nível de sub-bloco. Em outras palavras, o codec de vídeo determina se o bloco atual satisfaz a condição para realizar o estágio de refinamento de MV de sub-bloco para o bloco atual. Em algumas modalidades, se o tamanho de CU atual for menor que um tamanho de limiar, o estágio de refinamento de MV de sub- bloco será saltado. Em algumas modalidades, a condição para realizar o refinamento de MV de sub-bloco é decidida com base nas informações de movimento, incluindo a seleção de quadro de referência, a direção de predição, e a magnitude do vetor de movimento. Em algumas modalidades, a condição para realizar o refinamento de MV de sub-bloco é decidida com base em uma proporção entre o tamanho de CU atual e um tamanho de CU vizinha. Se o tamanho de CU atual for muito maior que o tamanho de CU vizinha, o refinamento de MV de sub-bloco será permitido. Caso contrário, o refinamento de MV de sub-bloco para a CU atual é desativado. Se a condição para ignorar o refinamento de MV de nível de sub-bloco for atendida, o processo continuará para 0920. Se a condição para ignorar o refinamento de MV de nível de sub-bloco não for atendida, o processo continuará para 0918.
[00104]No passo 0918, o codec de vídeo realiza refinamento de MV de nível de sub-bloco para cada sub-bloco para produzir um par de MVs refinados para cada sub-bloco. Para cada sub-bloco, o codec de vídeo refina o par de MVs por realizar uma pesquisa diamante para minimizar um custo de distorção associado ao par de MVs (ou os conjuntos de pixels de referência indicados pelo par de MVs). Em algumas modalidades, o custo de distorção é calculado por subamostrar os dados de pixel apontados pelo par de MVs. O processo 0900 prossegue para 0920.
[00105]No passo 0920, o codec de vídeo codifica ou decodifica o bloco atual usando o par de MVs refinado para o bloco ou os pares de MVs refinados para os sub-blocos ou unidades particionadas para realizar inter-predição. O processo 0900 termina e o codec de vídeo pode codificar ou decodificar outro bloco de pixels.
[00106]Em algumas modalidades, em vez de usar o tamanho da CU atual para determinar se é necessário realizar o refinamento de MV, o codec de vídeo usa o tamanho da CU atual para determinar se é necessário particionar a CU atual para o refinamento de MV.
[00107]Como ilustrado na Figura 9b, após identificar um par de MVs para codificar o bloco atual no passo 0908, o codec de vídeo determina (no passo 0922) se é necessário particionar o bloco atual em unidades particionadas para refinamento. Se o tamanho do tamanho de CU atual for maior que um limiar, o codec de vídeo particionará a CU em várias unidades particionadas e executará o processo de pesquisa de MV para cada unidade particionada. Por outro lado, se o tamanho da CU for menor que o limiar, o codec de vídeo considerará a CU como uma unidade particionada e executará o processo de pesquisa de MV para a CU como um todo. Em algumas modalidades, a CU atual é considerada maior que um tamanho de limiar quando uma dimensão linear da CU (por exemplo, altura ou largura da CU) é maior que um limiar. Em algumas modalidades, a CU atual é considerada maior que um tamanho de limiar quando uma área da CU (por exemplo, largura x altura da CU) é maior que um limiar. Em algumas modalidades, uma CU é considerada maior que um tamanho de limiar se a CU não estiver totalmente contida em uma unidade de grade predefinida. Em algumas modalidades, se uma CU não estiver totalmente contida em uma unidade de grade, o codec de vídeo particionará a CU atual em várias unidades particionadas e executará o refinamento de MV independentemente para cada unidade particionada, desde que cada unidade particionada caia dentro de uma unidade de grade.
[00108]Se o bloco deve ser particionado para refinamento de MV, o processo continuará para 0924. Se o bloco não for particionado para refinamento de MV, o processo continuará para 0914 para realizar a pesquisa e o refinamento de MV para o bloco atual como um todo por refinar o par de MVs identificado para o bloco atual no passo 0908.
[00109]No passo 0924, o codec de vídeo particiona o bloco atual em unidades particionadas e realiza pesquisa e refinamento de MV para cada unidade particionada individualmente. Para cada unidade particionada, o codec de vídeo refina o par de MVs por realizar uma pesquisa diamante para minimizar um custo de distorção associado ao par de MVs (ou os conjuntos de pixels de referência indicados pelo par de MVs). Em algumas modalidades, o custo de distorção é calculado por subamostrar os dados de pixel apontados pelo par de MVs. O processo 0900 prossegue para 0920.
[00110]Em algumas modalidades, o codec de vídeo pode determinar se é necessário particionar a CU para refinamento de MV se o codec de vídeo permitiu o refinamento de MV para a CU. Nesses casos, depois que o codec de vídeo identifica um par de MVs para codificar o bloco atual no passo 0908, o processo 0900 pode prosseguir para o passo 0910 do codec de vídeo para determinar se é necessário desativar ou permitir o refinamento de MV para o bloco atual. Esta transição é ilustrada como uma linha tracejada na Figura 9b. Se o codec de vídeo permitir o refinamento de MV, o processo 0900 continuará no passo 0922 para determinar se é necessário particionar o bloco para o refinamento de MV. V. Exemplo de sistema eletrônico
[00111]Muitos dos recursos e aplicações descritos acima são implementados como processos de software especificados como um conjunto de instruções gravadas em um meio de armazenamento legível por computador (também chamado de meio legível por computador). Quando essas instruções são executadas por uma ou mais unidades computacionais ou de processamento (por exemplo, um ou mais processadores, núcleos de processadores ou outras unidades de processamento), fazem com que as unidades de processamento executem as ações indicadas nas instruções. Exemplos de meio legível por computador incluem, entre outros, CD-ROMs, unidades flash, chips de memória de acesso aleatório (RAM), discos rígidos, EPROMs (memórias somente de leitura programáveis apagáveis), EEPROMs (memórias somente de leitura programáveis apagáveis eletricamente)), etc. O meio legível por computador não inclui ondas portadoras e sinais eletrônicos passando de maneira sem fio ou por conexões com fio.
[00112]Neste relatório descritivo, o termo "software" deve incluir firmware residente na memória somente de leitura ou aplicações armazenadas no armazenamento magnético que podem ser lidas na memória para processamento por um processador. Além disso, em algumas modalidades, várias invenções de software podem ser implementadas como sub- partes de um programa maior enquanto permanecendo invenções de software distintas. Em algumas modalidades, várias invenções de software também podem ser implementadas como programas separados. Finalmente, qualquer combinação de programas separados que juntos implementam uma invenção de software descrita aqui está dentro do escopo da presente divulgação. Em algumas modalidades, os programas de software, quando instalados para operar em um ou mais sistemas eletrônicos, definem uma ou mais implementações de máquinas específicas que executam e realizam as operações dos programas de software.
[00113]A Figura 10 ilustra conceitualmente um sistema eletrônico 1000 com o qual algumas modalidades da presente divulgação são implementadas. O sistema eletrônico 1000 pode ser um computador (por exemplo, um computador de mesa, computador pessoal, tablet, etc.), telefone, PDA ou qualquer outro tipo de dispositivo eletrônico. Esse sistema eletrônico inclui vários tipos de meio legível por computador e interfaces para vários outros tipos de meio legível por computador. O sistema eletrônico 1000 inclui um barramento 1005, unidade(s) de processamento 1010, uma unidade de processamento gráfico (GPU) 1015, uma memória de sistema 1020, uma rede 1025, uma memória somente de leitura 1030, um dispositivo de armazenamento permanente 1035, um dispositivo de armazenamento permanente 1035, dispositivos de entrada 1040 e dispositivos de saída 1045.
[00114]O barramento 1005 representa coletivamente todos os barramentos de sistema, periféricos e de conjunto de chips que conectam comunicativamente os numerosos dispositivos internos do sistema eletrônico 1000. Por exemplo, o barramento 1005 conecta comunicativamente a(s) unidade(s) de processamento 1010 à GPU 1015, a memória somente de leitura 1030, a memória de sistema 1020, e o dispositivo de armazenamento permanente 1035.
[00115]A partir dessas várias unidades de memória, a unidade(s) de processamento 1010 recupera instruções para executar e dados para processar, a fim de executar os processos da presente divulgação. A(s) unidade(s) de processamento pode(m) ser um único processador ou um processador multinúcleo em diferentes modalidades. Algumas instruções são passadas e executadas pela GPU 1015. A GPU 1015 pode descarregar vários cálculos ou complementar o processamento de imagem fornecido pela unidade(s) de processamento 1010.
[00116]A memória somente de leitura (ROM) 1030 armazena dados estáticos e instruções necessárias para a unidade (s) de processamento 1010 e outros módulos do sistema eletrônico. O dispositivo de armazenamento permanente 1035, por outro lado, é um dispositivo de memória de leitura e escrita. Este dispositivo é uma unidade de memória não volátil que armazena instruções e dados mesmo quando o sistema eletrônico 1000 está desligado. Algumas modalidades da presente divulgação usam um dispositivo de armazenamento em massa (como um disco magnético ou ótico e sua unidade de disco correspondente) como o dispositivo de armazenamento permanente 1035.
[00117]Outras modalidades usam um dispositivo de armazenamento removível (como um disquete, dispositivo de memória flash, etc., e sua unidade de disco correspondente) como dispositivo de armazenamento permanente. Como o dispositivo de armazenamento permanente 1035, a memória de sistema 1020 é um dispositivo de memória de leitura e escrita. No entanto, diferentemente do dispositivo de armazenamento 1035, a memória de sistema 1020 é uma memória volátil de leitura e escrita, como uma memória de acesso aleatório. A memória de sistema 1020 armazena algumas das instruções e dados que o processador precisa em tempo de execução. Em algumas modalidades, os processos de acordo com a presente divulgação são armazenados na memória de sistema 1020, no dispositivo de armazenamento permanente 1035 e/ou na memória somente de leitura 1030. Por exemplo, as várias unidades de memória incluem instruções para processar clipes de multimídia de acordo com algumas modalidades. A partir dessas várias unidades de memória, a unidade(s) de processamento 1010 recupera instruções para executar e dados para processar a fim de executar os processos de algumas modalidades.
[00118]O barramento 1005 também se conecta aos dispositivos de entrada e saída 1040 e 1045. Os dispositivos de entrada 1040 permitem ao usuário comunicar informações e selecionar comandos para o sistema eletrônico. Os dispositivos de entrada 1040 incluem teclados alfanuméricos e dispositivos apontadores (também chamados de "dispositivos de controle de cursor"), câmeras (por exemplo, câmaras web), microfones ou dispositivos semelhantes para receber comandos de voz, etc. Os dispositivos de saída 1045 exibem imagens geradas pelo sistema eletrônico, ou de outro modo, produzir dados. Os dispositivos de saída 1045 incluem impressoras e dispositivos de exibição, como tubos de raios catódicos (CRT) ou telas de cristal líquido (LCD), bem como alto-falantes ou dispositivos de saída de áudio semelhantes. Algumas modalidades incluem dispositivos como uma tela sensível ao toque que funcionam como dispositivos de entrada e saída.
[00119]Finalmente, como mostrado na Figura 10, o barramento 1005 também acopla o sistema eletrônico 1000 a uma rede 1025 através de um adaptador de rede (não mostrado). Dessa maneira, o computador pode fazer parte de uma rede de computadores (como uma rede de área local ("LAN"), uma rede de área ampla ("WAN") ou uma Intranet ou uma rede de redes, como a Internet. Todo ou qualquer componente do sistema eletrônico 1000 pode ser usado em conjunto com a presente divulgação.
[00120]Algumas modalidades incluem componentes eletrônicos, como microprocessadores, armazenamento e memória que armazenam instruções de programa de computador em um meio legível por máquina ou legível por computador (também conhecido como meio de armazenamento legível por computador, meio legível por máquina ou meio de armazenamento legível por máquina). Alguns exemplos desses meios legíveis por computador incluem RAM, ROM, discos compactos somente de leitura (CD-ROM), discos compactos graváveis (CD-R), discos compactos regraváveis (CD-RW), discos versáteis digitais somente de leitura (por exemplo, DVD-ROM, DVD-ROM de camada dupla), uma variedade de DVDs graváveis/regraváveis (por exemplo, DVD-RAM, DVD-RW, DVD + RW, etc.), memória flash (por exemplo, cartões SD, mini-SD cartões, cartões micro-SD, etc.), discos rígidos magnéticos e/ou de estado sólido,
discos Blu-Ray® somente de leitura e graváveis, discos óticos de ultradensidade, qualquer outro meio ótico ou magnético e disquetes. O meio legível por computador pode armazenar um programa de computador que é executável por pelo menos uma unidade de processamento e inclui conjuntos de instruções para realizar várias operações. Exemplos de programas de computador ou código de computador incluem código de máquina, como o produzido por um compilador, e arquivos que incluem código de nível superior que são realizados por um computador, um componente eletrônico ou um microprocessador usando um intérprete.
[00121]Embora a discussão acima se refira principalmente a microprocessadores ou processadores multinúcleo que executam software, muitos dos recursos e aplicações descritos acima são realizados por um ou mais circuitos integrados, como circuitos integrados de aplicação específica (ASICs) ou arranjos de portas programáveis em campo (FPGAs). Em algumas modalidades, esses circuitos integrados executam instruções que são armazenadas no próprio circuito. Além disso, algumas modalidades executam software armazenado em dispositivos lógicos programáveis (PLDs), ROM ou dispositivos RAM.
[00122]Conforme usado neste relatório descritivo e em qualquer reivindicação deste pedido, os termos "computador", "servidor", "processador" e "memória" se referem a dispositivos eletrônicos ou outros dispositivos tecnológicos. Estes termos excluem pessoas ou grupos de pessoas. Para os fins do relatório descritivo, os termos exibição ou exibir significam exibição em um dispositivo eletrônico. Conforme usado neste relatório descritivo e em qualquer reivindicação deste pedido, os termos “meio legível por computador”, “meios legíveis por computador” e “meio legível por máquina” são totalmente restritos a objetos físicos tangíveis que armazenam informações de uma forma legível por um computador. Esses termos excluem quaisquer sinais sem fio, sinais de descarregamento com fio, e quaisquer outros sinais efêmeros.
[00123]Embora a presente divulgação tenha sido descrita com referência a vários detalhes específicos, um especialista na técnica reconhecerá que a presente divulgação pode ser incorporada em outras formas específicas sem se afastar do espírito da presente divulgação. Além disso, várias figuras (incluindo Figura 9a-Figura 9b) ilustram conceitualmente processos. As operações específicas desses processos podem não ser executadas na ordem exata mostrada e descrita. As operações específicas podem não ser executadas em uma série contínua de operações e diferentes operações específicas podem ser executadas em diferentes modalidades. Além disso, o processo pode ser implementado usando vários subprocessos ou como parte de um processo macro maior. Assim, um versado na técnica entenderia que a presente divulgação não deve ser limitada pelos detalhes ilustrativos anteriores, mas deve ser definida pelas reivindicações anexas. Notas Adicionais
[00124]O objeto aqui descrito às vezes ilustra diferentes componentes contidos dentro ou conectados a outros componentes diferentes. Deve ser entendido que essas arquiteturas representadas são meramente exemplos e que, de fato, muitas outras arquiteturas podem ser implementadas que atingem a mesma funcionalidade. Em um sentido conceitual, qualquer arranjo de componentes para alcançar a mesma funcionalidade é efetivamente "associado", de modo que a funcionalidade desejada seja alcançada. Portanto, quaisquer dois componentes aqui combinados para alcançar uma funcionalidade particular podem ser vistos como "associados" entre si, de modo que a funcionalidade desejada seja alcançada, independentemente de arquiteturas ou componentes intermediários. Da mesma forma, quaisquer dois componentes assim associados também podem ser vistos como "operacionalmente conectados" ou "operacionalmente acoplados" entre si para alcançar a funcionalidade desejada, e quaisquer dois componentes capazes de serem assim associados também podem ser vistos como "operacionalmente acopláveis", para cada outro para obter a funcionalidade desejada. Os exemplos específicos de operacionalmente acopláveis incluem, mas não estão limitados a fisicamente acasaláveis e/ou componentes fisicamente interagindo e/ou componentes que podem interagir de maneira sem fio e/ou interagindo de maneira sem fio e/ou componentes interagindo logicamente e/ou que podem interagir logicamente.
[00125]Além disso, no que diz respeito ao uso de substancialmente quaisquer termos plurais e/ou singulares aqui mencionados, aqueles versados na técnica podem traduzir do plural para o singular e/ou do singular para o plural, conforme apropriado ao contexto e/ou aplicação. As várias permutações no singular/plural podem ser expressamente estabelecidas aqui por uma questão de clareza.
[00126]Além disso, será entendido por aqueles versados na técnica que, em geral, os termos usados neste documento,
e especialmente nas reivindicações anexas, por exemplo, corpos das reivindicações anexas, são geralmente entendidos como termos "abertos", por exemplo, o termo "incluindo" deve ser interpretado como "incluindo, mas não limitado a", o termo "tendo" deve ser interpretado como "tendo pelo menos", o termo "inclui" deve ser interpretado como "inclui, mas não está limitado a" etc.
Será entendido ainda por aqueles que estão dentro da técnica que, se um número específico de uma recitação de reivindicação introduzida for pretendido, tal intenção será explicitamente recitada na reivindicação e, na ausência de tal recitação, essa intenção não está presente.
Por exemplo, como um auxílio ao entendimento, as seguintes reivindicações anexas podem conter o uso das frases introdutórias "pelo menos uma" e "uma ou mais" para introduzir recitações de reivindicações.
No entanto, o uso de tais frases não deve ser interpretado como implicando que a introdução de uma recitação de reivindicação pelos artigos indefinidos "um" ou "uma" limita qualquer reivindicação específica que contenha tal recitação de reivindicação introduzida a implementações contendo apenas uma recitação, mesmo quando a mesma reivindicação inclua as frases introdutórias "um ou mais" ou "pelo menos um" e artigos indefinidos, como "um" ou "uma", por exemplo, "um" e/ou "uma" devem ser interpretados como "pelo menos um" ou "um ou mais"; o mesmo vale para o uso de artigos definidos usados para introduzir recitações de reivindicações.
Além disso, mesmo que um número específico de uma recitação de reivindicação introduzida seja explicitamente recitado, os versados na técnica reconhecerão que essa recitação deve ser interpretada como significando pelo menos o número recitado,
por exemplo, a recitação simples de "duas recitações", sem outros modificadores, significa pelo menos duas recitações ou duas ou mais recitações. Além disso, nos casos em que uma convenção análoga a "pelo menos um de A, B e C, etc." é usada, em geral tal construção é planejada no sentido em que um especialista na técnica entenderia a convenção, por exemplo, "um sistema com pelo menos um de A, B e C" incluiria, mas não se limitaria a sistemas que tenha A sozinho, B sozinho, C sozinho, A e B juntos, A e C juntos, B e C juntos e/ou A, B e C juntos, etc. Nos casos em que uma convenção análoga a “pelo menos um de A, B ou C, etc." é usada, em geral, tal construção é planejada no sentido em que um especialista na técnica entenderia a convenção, por exemplo, "um sistema com pelo menos um de A, B ou C" incluiria, mas não se limitaria a sistemas que tenha A sozinho, B sozinho, C sozinho, A e B juntos, A e C juntos, B e C juntos, e/ou A, B e C juntos, etc. Será melhor compreendido por aqueles dentro da arte que virtualmente qualquer palavra e/ou frase disjuntiva que apresente dois ou mais termos alternativos, seja na descrição, reivindicações ou desenhos, deve ser entendida como contemplando as possibilidades de incluir um dos termos, qualquer um dos termos, ou ambos os termos. Por exemplo, a frase "A ou B" será entendida como incluindo as possibilidades de "A" ou "B" ou "A e B."
[00127]A partir do exposto, será apreciado que várias implementações da presente divulgação foram descritas aqui para fins de ilustração e que várias modificações podem ser feitas sem se afastar do escopo e espírito da presente divulgação. Por conseguinte, as várias implementações aqui divulgadas não pretendem ser limitativas, com o verdadeiro escopo e espírito sendo indicados pelas reivindicações a seguir.

Claims (29)

REIVINDICAÇÕES
1. Método para codificar ou decodificar uma sequência de vídeo, o método caracterizado pelo fato de que compreende: identificar um primeiro vetor de movimento e um segundo vetor de movimento para codificar um bloco atual de pixels de um quadro de vídeo atual na sequência de vídeo; determinar se é necessário realizar o refinamento de vetor de movimento para o bloco atual de pixels com base em uma comparação entre uma dimensão linear do bloco atual de pixels e um limiar; quando o refinamento de vetor de movimento é realizado: refinar os primeiro e segundo vetores de movimento para minimizar uma distorção de custo; e codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento refinados; e quando o refinamento de vetor de movimento não é realizado: codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento identificados.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o refinamento de vetor de movimento não é realizado quando a dimensão linear do bloco atual de pixels é maior que o limiar.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o refinamento de vetor de movimento não é realizado quando o bloco atual de pixels não está contido por uma unidade de grade predeterminada.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: codificar um bit em um fluxo de bits que corresponde ao refinamento de vetor de movimento, a menos que a dimensão linear do bloco atual seja maior que o limiar.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o custo de distorção é calculado com base em dados de pixel subamostrados apontados pelo primeiro e segundo vetores de movimento.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: o primeiro vetor de movimento é indicativo de um primeiro conjunto de pixels de referência em um primeiro quadro de referência e o segundo vetor de movimento é indicativo de um segundo conjunto de pixels de referência em um segundo quadro de referência, e o custo de distorção é calculado com base em um conjunto de pixels vizinhos do bloco atual de pixels, um conjunto de pixels vizinhos do primeiro conjunto de pixels de referência e um conjunto de pixels vizinhos do segundo conjunto de pixels de referência.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: o custo de distorção é calculado com base na diferença entre os conjuntos de pixels de referência indicados pelo primeiro vetor de movimento e um primeiro vetor de movimento espelhado, em que o primeiro vetor de movimento espelhado e o primeiro vetor de movimento estão na mesma trajetória de movimento que atravessa o bloco atual de pixels.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: o custo de distorção é calculado com base na diferença entre um primeiro conjunto de pixels de referência em um primeiro quadro de referência indicado pelo primeiro vetor de movimento refinado e um segundo conjunto de pixels de referência em um segundo quadro de referência indicado pelo segundo vetor de movimento refinado.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o primeiro vetor de movimento refinado e o segundo vetor de movimento refinado são baseados em posições de pesquisa opostas em relação a uma posição de pesquisa central.
10. Método para codificar ou decodificar uma sequência de vídeo, o método caracterizado pelo fato de que compreende: identificar um primeiro vetor de movimento e um segundo vetor de movimento para codificar um bloco atual de pixels de um quadro de vídeo atual na sequência de vídeo; refinar o primeiro e segundo vetores de movimento para minimizar um custo de distorção calculado por subamostrar dados de pixel apontados pelo primeiro e segundo vetores de movimento; e codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento refinados.
11. Método para codificar ou decodificar uma sequência de vídeo, o método caracterizado pelo fato de que compreende: identificar um primeiro vetor de movimento e um segundo vetor de movimento para codificar um bloco atual de pixels de um quadro de vídeo atual na sequência de vídeo; determinar se é necessário realizar o refinamento de vetor de movimento para o bloco atual de pixels com base em se o bloco atual de pixels satisfaz uma condição específica; quando o refinamento de vetor de movimento é realizado: refinar os primeiro e segundo vetores de movimento para minimizar um custo de distorção que é calculado com base na diferença entre um primeiro conjunto de pixels em um primeiro quadro de referência indicado pelo primeiro vetor de movimento refinado e um segundo conjunto de pixels de um segundo quadro de referência indicado pelo segundo vetor de movimento refinado; e codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento refinados; e quando o refinamento de vetor de movimento não é realizado: codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento identificados.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que compreende ainda: codificar um bit em um fluxo de bits que corresponde ao refinamento de vetor de movimento, a menos que o bloco atual de pixels falhe na condição específica.
13. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o bloco atual de pixels satisfaz a condição específica quando uma área do bloco atual é menor que uma área de limiar.
14. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o bloco atual de pixels satisfaz a condição particular quando uma dimensão linear do bloco atual é menor que um limiar.
15. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o bloco atual satisfaz a condição particular quando o bloco atual de pixels é contido por uma unidade de grade predeterminada.
16. Método, de acordo com a reivindicação 11,
caracterizado pelo fato de que o custo de distorção é calculado com base em dados de pixel subamostrados apontados pelos primeiro e segundo vetores de movimento.
17. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o primeiro vetor de movimento refinado e o segundo vetor de movimento refinado são baseados em posições de pesquisa opostas em relação a uma posição de pesquisa central.
18. Método para codificar ou decodificar uma sequência de vídeo, o método caracterizado pelo fato de que compreende: identificar um primeiro vetor de movimento e um segundo vetor de movimento para codificar um bloco atual de pixels de um quadro de vídeo atual na sequência de vídeo; determinar se é necessário particionar o bloco atual de pixels para refinamento de vetor de movimento com base em se o bloco atual de pixels satisfaz uma condição específica; quando o bloco atual de pixels é particionado para refinamento de vetor de movimento: particionar o bloco atual de pixels em uma pluralidade de unidades particionadas; refinar o primeiro e segundo vetores de movimento para a pluralidade de unidades particionadas individualmente; e codificar a pluralidade de sub-blocos individualmente usando o primeiro e segundo vetores de movimento refinados; quando o bloco atual de pixels não é particionado para refinamento de vetor de movimento: codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento identificados.
19. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que o bloco atual de pixels é particionado para refinamento de vetor de movimento quando uma dimensão linear do bloco atual de pixels é maior que o limiar.
20. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que o bloco atual de pixels é particionado para refinamento de vetor de movimento quando uma área do bloco atual de pixels é maior que o limiar.
21. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que o bloco atual de pixels não é particionado para refinamento de vetor de movimento quando o bloco atual de pixels é contido por uma unidade de grade predeterminada.
22. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que o custo de distorção é calculado com base em dados de pixel subamostrados apontados pelo primeiro e segundo vetores de movimento.
23. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que: o primeiro vetor de movimento é indicativo de um primeiro conjunto de pixels de referência em um primeiro quadro de referência e o segundo vetor de movimento é indicativo de um segundo conjunto de pixels de referência em um segundo quadro de referência, e o custo de distorção é calculado com base em um conjunto de pixels vizinhos do bloco atual de pixels, um conjunto de pixels vizinhos do primeiro conjunto de pixels de referência e um conjunto de pixels vizinhos do segundo conjunto de pixels de referência.
24. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que:
o custo de distorção é calculado com base na diferença entre os conjuntos de pixels de referência indicados pelo primeiro vetor de movimento e um primeiro vetor de movimento espelhado, em que o primeiro vetor de movimento espelhado e o primeiro vetor de movimento estão na mesma trajetória de movimento que atravessa o bloco atual de pixels.
25. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que: o custo de distorção é calculado com base na diferença entre um primeiro conjunto de pixels de referência em um primeiro quadro de referência indicado pelo primeiro vetor de movimento refinado e um segundo conjunto de pixels de referência em um segundo quadro de referência indicado pelo segundo vetor de movimento refinado.
26. Método, de acordo com a reivindicação 25, caracterizado pelo fato de que o primeiro vetor de movimento refinado e o segundo vetor de movimento refinado são baseados em posições de pesquisa opostas em relação a uma posição de pesquisa central.
27. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que compreende ainda: determinar se é necessário realizar o refinamento de vetor de movimento para o bloco atual de pixels com base em uma comparação entre um tamanho do bloco atual de pixels e um limiar; quando o refinamento de vetor de movimento é realizado: refinar os primeiro e segundo vetores de movimento para minimizar uma distorção de custo; e codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento refinados; e quando o refinamento de vetor de movimento não é realizado: codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento identificados.
28. Aparelho eletrônico, caracterizado pelo fato de que compreende: um circuito de decodificador capaz de: identificar um primeiro vetor de movimento e um segundo vetor de movimento para decodificar um bloco atual de pixels de um quadro de vídeo atual na sequência de vídeo; determinar se é necessário realizar o refinamento de vetor de movimento para o bloco atual de pixels com base em uma comparação entre uma dimensão linear do bloco atual de pixels e um limiar; quando o refinamento de vetor de movimento é realizado: refinar os primeiro e segundo vetores de movimento para minimizar uma distorção de custo; e decodificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento refinados; e quando o refinamento de vetor de movimento não é realizado: decodificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento identificados.
29. Aparelho eletrônico, caracterizado pelo fato de que compreende: um circuito de codificador capaz de: identificar um primeiro vetor de movimento e um segundo vetor de movimento para codificar um bloco atual de pixels de um quadro de vídeo atual na sequência de vídeo; determinar se é necessário realizar o refinamento de vetor de movimento para o bloco atual de pixels com base em uma comparação entre uma dimensão linear do bloco atual de pixels e um limiar; quando o refinamento de vetor de movimento é realizado: refinar os primeiro e segundo vetores de movimento para minimizar uma distorção de custo; e codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento refinados; e quando o refinamento de vetor de movimento não é realizado: codificar o bloco atual de pixels usando o primeiro e segundo vetores de movimento identificados.
BR112020015246A 2018-01-26 2019-01-25 Refinamento de vetor de movimento restrito de hardware acessível BR112020015246A8 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201862622234P 2018-01-26 2018-01-26
US62/622,234 2018-01-26
US201862723014P 2018-08-27 2018-08-27
US62/723,014 2018-08-27
US201862740470P 2018-10-03 2018-10-03
US62/740,470 2018-10-03
US16/248,452 US11310526B2 (en) 2018-01-26 2019-01-15 Hardware friendly constrained motion vector refinement
US16/248,452 2019-01-15
PCT/CN2019/073179 WO2019144930A1 (en) 2018-01-26 2019-01-25 Hardware friendly constrained motion vector refinement

Publications (2)

Publication Number Publication Date
BR112020015246A2 true BR112020015246A2 (pt) 2021-01-26
BR112020015246A8 BR112020015246A8 (pt) 2023-02-07

Family

ID=67392580

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020015246A BR112020015246A8 (pt) 2018-01-26 2019-01-25 Refinamento de vetor de movimento restrito de hardware acessível

Country Status (7)

Country Link
US (1) US11310526B2 (pt)
EP (1) EP3744098A4 (pt)
KR (1) KR102448218B1 (pt)
CN (2) CN111886866B (pt)
BR (1) BR112020015246A8 (pt)
TW (1) TWI690195B (pt)
WO (1) WO2019144930A1 (pt)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116962717A (zh) * 2018-03-14 2023-10-27 Lx 半导体科技有限公司 图像编码/解码方法、存储介质和发送方法
KR20190113652A (ko) * 2018-03-27 2019-10-08 주식회사 케이티 비디오 신호 처리 방법 및 장치
WO2020017840A1 (ko) * 2018-07-16 2020-01-23 엘지전자 주식회사 Dmvr에 기반하여 인터 예측을 수행하는 방법 및 장치
EP3841751B1 (en) * 2018-09-19 2024-04-17 Huawei Technologies Co., Ltd. Method for skipping refinement based on patch similarity in bilinear interpolation based decoder-side motion vector refinement
WO2020084461A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Restrictions on decoder side motion vector derivation based on coding information
WO2020084462A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Restrictions on decoder side motion vector derivation based on block size
CN111083491B (zh) 2018-10-22 2024-09-20 北京字节跳动网络技术有限公司 细化运动矢量的利用
WO2020084476A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block based prediction
WO2020098644A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Bandwidth control methods for inter prediction
CN113170171B (zh) * 2018-11-20 2024-04-12 北京字节跳动网络技术有限公司 组合帧间帧内预测模式的预测细化
CN117319644A (zh) 2018-11-20 2023-12-29 北京字节跳动网络技术有限公司 基于部分位置的差计算
US11146810B2 (en) 2018-11-27 2021-10-12 Qualcomm Incorporated Decoder-side motion vector refinement
JP7005480B2 (ja) * 2018-12-27 2022-01-21 Kddi株式会社 画像復号装置、画像符号化装置、プログラム及び画像処理システム
CN111385575A (zh) * 2018-12-29 2020-07-07 华为技术有限公司 帧间预测方法、装置以及相应的编码器和解码器
CN113261296A (zh) 2019-01-06 2021-08-13 北京达佳互联信息技术有限公司 双向光流的比特宽度控制
WO2020177755A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Usage of converted uni-prediction candidate
EP3922028A4 (en) * 2019-03-08 2022-08-10 Beijing Dajia Internet Information Technology Co., Ltd. BIDIRECTIONAL OPTICAL FLOW AND DECODER-SIDE MOTION VECTOR REFINEMENT FOR VIDEO ENCODING
FI3941060T3 (fi) * 2019-03-12 2023-10-02 Lg Electronics Inc Dmvr:ään ja bdof:ään perustuva keskinäinen ennustusmenetelmä ja -laite
KR102610709B1 (ko) 2019-04-02 2023-12-05 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 디코더 측 움직임 벡터 유도
JP6835337B2 (ja) * 2019-06-20 2021-02-24 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
US11223840B2 (en) * 2019-08-19 2022-01-11 Tencent America LLC Method and apparatus for video coding
JP2022547599A (ja) 2019-09-12 2022-11-14 アリババ グループ ホウルディング リミテッド 映像符号化情報をシグナリングするための方法及び装置
WO2021050226A1 (en) * 2019-09-12 2021-03-18 Alibaba Group Holding Limited Method and apparatus for encoding or decoding video
CN110719489B (zh) * 2019-09-18 2022-02-18 浙江大华技术股份有限公司 运动矢量修正、预测、编码方法、编码器及存储装置
CN110740317B (zh) 2019-09-18 2021-10-15 浙江大华技术股份有限公司 子块运动预测、编码方法、编码器及存储装置
CN110740322A (zh) * 2019-10-23 2020-01-31 李思恒 视频编码方法及装置、存储介质、视频编码设备
US11683517B2 (en) * 2020-11-23 2023-06-20 Qualcomm Incorporated Block-adaptive search range and cost factors for decoder-side motion vector (MV) derivation techniques
US12113987B2 (en) * 2020-12-22 2024-10-08 Qualcomm Incorporated Multi-pass decoder-side motion vector refinement
EP4268468A1 (en) * 2020-12-22 2023-11-01 Qualcomm Incorporated Multi-pass decoder-side motion vector refinement
US20220394309A1 (en) * 2021-05-20 2022-12-08 Lemon Inc. On Padding Methods For Neural Network-Based In-Loop Filter
US20230096682A1 (en) * 2021-09-24 2023-03-30 Apple Inc. Systems and Methods for Low Resolution Motion Estimation Searches
US11917176B2 (en) * 2021-09-28 2024-02-27 Avago Technologies International Sales Pte. Limited Low-latency and high-throughput motion vector refinement with template matching
WO2023143173A1 (en) * 2022-01-28 2023-08-03 Mediatek Inc. Multi-pass decoder-side motion vector refinement
TW202408242A (zh) * 2022-04-06 2024-02-16 聯發科技股份有限公司 隱式多通道解碼器端運動向量細化
WO2024072162A1 (ko) * 2022-09-28 2024-04-04 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
WO2024080747A1 (ko) * 2022-10-11 2024-04-18 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7145950B2 (en) * 2003-07-14 2006-12-05 Primax Electronics Ltd. Method of motion vector determination in digital video compression
US8218636B2 (en) 2006-11-21 2012-07-10 Vixs Systems, Inc. Motion refinement engine with a plurality of cost calculation methods for use in video encoding and methods for use therewith
US20090167775A1 (en) * 2007-12-30 2009-07-02 Ning Lu Motion estimation compatible with multiple standards
JP2011515060A (ja) * 2008-03-09 2011-05-12 エルジー エレクトロニクス インコーポレイティド ビデオ信号のエンコーディングまたはデコーディング方法及び装置
CN102131091B (zh) * 2010-01-15 2013-01-23 联发科技股份有限公司 解码端运动向量导出方法
CN102685504B (zh) 2011-03-10 2015-08-19 华为技术有限公司 视频图像的编解码方法、编码装置、解码装置及其系统
US9544592B2 (en) * 2012-02-10 2017-01-10 Texas Instruments Incorporated Methods and systems for encoding pictures associated with video data
KR101908249B1 (ko) * 2014-11-18 2018-10-15 미디어텍 인크. 단방향 예측 및 병합 후보로부터의 모션 벡터에 기초한 양방향 예측 비디오 코딩 방법
US10200711B2 (en) * 2015-03-27 2019-02-05 Qualcomm Incorporated Motion vector derivation in video coding
CN109155847A (zh) 2016-03-24 2019-01-04 英迪股份有限公司 用于编码/解码视频信号的方法和装置
EP3264769A1 (en) * 2016-06-30 2018-01-03 Thomson Licensing Method and apparatus for video coding with automatic motion information refinement
US10602180B2 (en) * 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
US10904565B2 (en) * 2017-06-23 2021-01-26 Qualcomm Incorporated Memory-bandwidth-efficient design for bi-directional optical flow (BIO)

Also Published As

Publication number Publication date
CN111886866B (zh) 2023-12-26
US20190238883A1 (en) 2019-08-01
TWI690195B (zh) 2020-04-01
BR112020015246A8 (pt) 2023-02-07
US11310526B2 (en) 2022-04-19
CN117750032A (zh) 2024-03-22
WO2019144930A1 (en) 2019-08-01
EP3744098A4 (en) 2021-10-20
KR102448218B1 (ko) 2022-09-28
KR20200113259A (ko) 2020-10-06
TW201935928A (zh) 2019-09-01
EP3744098A1 (en) 2020-12-02
CN111886866A (zh) 2020-11-03

Similar Documents

Publication Publication Date Title
BR112020015246A2 (pt) refinamento de vetor de movimento restrito de hardware acessível
CN113661710B (zh) 核心转换和次级转换间的交互作用
US10715827B2 (en) Multi-hypotheses merge mode
TWI711300B (zh) 照度補償方法及相應之視訊處理裝置
US11172203B2 (en) Intra merge prediction
JP7551798B2 (ja) インター予測方法および装置
US11051010B2 (en) Merge candidates with multiple hypothesis
US20230209048A1 (en) Intra Prediction For Multi-Hypothesis
TWI846728B (zh) 不同視頻塊尺寸的仿射模式計算
BR112020014654A2 (pt) compensação de movimento afim em codificação de vídeo
BR112019013832A2 (pt) restauração de vetor de movimento de lado de decodificador para codificação de vídeo
BR112021015658A2 (pt) Restrições no refinamento de vetor de movimento no lado do decodificador
BR112020020976A2 (pt) Ajustes de transformada implícita
BR112016015998B1 (pt) Sinalização de resolução de vetor de movimento adaptativa para codificação de vídeo
TW202127890A (zh) 視訊編解碼方法及裝置
BR112013022774A2 (pt) decodificação de vídeo
BR112020003938A2 (pt) compensação de movimento em uma precisão mais fina do que o diferencial de vetor de movimento
US20200351505A1 (en) Inter prediction mode-based image processing method and apparatus therefor
BR112021003965A2 (pt) método e aparelho de obtenção de vetor de movimento, dispositivo de computador, e meio de armazenamento
WO2024027700A1 (en) Joint indexing of geometric partitioning mode in video coding
BR112017020632B1 (pt) Métodos e dispositivo para processar dados de vídeo e memória legível por computador
BR112017020627B1 (pt) Derivação de vetor de movimento em codificação de vídeo
BR112017020635B1 (pt) Método para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo, e memória legível por computador

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]