BR112020014654A2 - compensação de movimento afim em codificação de vídeo - Google Patents

compensação de movimento afim em codificação de vídeo Download PDF

Info

Publication number
BR112020014654A2
BR112020014654A2 BR112020014654-4A BR112020014654A BR112020014654A2 BR 112020014654 A2 BR112020014654 A2 BR 112020014654A2 BR 112020014654 A BR112020014654 A BR 112020014654A BR 112020014654 A2 BR112020014654 A2 BR 112020014654A2
Authority
BR
Brazil
Prior art keywords
difference
motion vector
product
control point
point motion
Prior art date
Application number
BR112020014654-4A
Other languages
English (en)
Inventor
Kai Zhang
Wei-Jung Chien
Li Zhang
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112020014654A2 publication Critical patent/BR112020014654A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/537Motion estimation other than block-based

Landscapes

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

Abstract

A presente invenção refere-se a um dispositivo para decodificação de vídeo de um bloco atual de dados de vídeo, o dispositivo incluindo um ou mais processadores configurados para computar um componente horizontal de um vetor de movimento e para computar um componente vertical de um vetor de movimento em um modelo afim. O modelo afim pode ser um modelo afim de quatro parâmetros que inclui dois vetores de movimento de ponto de controle, ou um modelo afim de seis parâmetros que inclui três vetores de movimento de ponto de controle. Os componentes horizontais e verticais podem incluir diferenças entre vetores de movimento de ponto de controle com base em primeiras operações de deslocamento de bit e segundas operações de deslocamento de bit.

Description

“COMPENSAÇÃO DE MOVIMENTO AFIM EM CODIFICAÇÃO DE VÍDEO”. REIVINDICAÇÃO DE PRIORIDADE
[0001] Este Pedido reivindica o benefício do Pedido de Patente dos EUA Nº. 16/246,952, depositado em 14 de jáneiro de 2019 e Pedido Provisório dos EUA Nº. 62/619,783 depositado em 20 de jáneiro de 2018, todo o comteúdo dos quais é aqui incorporado por referência.
CAMPO TÉCNICO
[0002] Esta divulgação refere-se a predição interimagem, mais especificamente, usando compensação de movimento afim. Pode ser aplicada a padrões de codificação de vídeo futuros.
FUNDAMENTO
[0003] Recursos de vídeo digital podem ser incorporados em uma ampla variedade de dispositivos, incluindo televisões digitais, sistemas de transmissão direta digital, sistemas de transmissão sem fio, assistentes pessoais digitais (PDAs), laptops ou computadores de mesa, tablets, leitores de e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de videogame, consoles de videogame, telefone celular ou rádio via satélite, os chamados “telefones inteligentes”, dispositivos de teleconferência de vídeo, dispositivos de difusão de vídeo etc. Os dispositivos de vídeo digital implementam técnicas de compressão de vídeo, como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC), ITU-T H.265, o padrão de Codificação de Vídeo de Alta Eficiência (HEVC), e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital com mais eficiência, implementando essas técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo realizam predição espacial (intraimagem) e/ou temporal (interimagem) para reduzir ou remover a redundância inerente em seqüências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (ou seja, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser particionada em blocos de vídeo, que também podem ser referidos como blocos de árvore, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando predição espacial em relação a amostras de referência em blocos adjacentes em uma mesma imagem de valor. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial em relação a amostras de referência em blocos adjacentes em uma mesma imagem de valor ou predição temporal em relação a amostras de referência em outras imagens de referência. A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para maior compressão, os dados residuais podem ser transformados do domínio de pixel em um domínio de transformação, resultando em coeficientes de transformação residuais, que podem, emtão, ser quantizados.
SUMÁRIO
[0005] Esta divulgação refere-se a um dispositivo para decodificação de vídeo de um bloco atual de dados de vídeo, incluindo um ou mais processadores configurados para computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero. O primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença. O primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle.
[0006] Além disso, os um ou mais processadores são configurados para computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero. O segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença. O terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle. Além disso, o dispositivo inclui uma memória configurada para armazenar um bloco atual reconstruído de dados de vídeo.
[0007] Além disso, a decodificação computa o segundo produto de diferença que inclui uma segunda diferença do modelo afim de quatro parâmetros, multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A quarta diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0008] Além disso, os um ou mais processadores, no dispositivo de decodificação, são configurados para computar o componente horizontal do modelo afim, em que o modelo afim é um modelo afim de seis parâmetros. O segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle. Além disso, os um ou mais processadores são configurados para computar o componente vertical do modelo afim quando o modelo afim é um modelo afim de seis parâmetros. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle.
[0009] As técnicas referem-se também a um método para decodificação de vídeo de um bloco atual de dados de vídeo. O método inclui computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero. O método também inclui que o primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença. O primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle.
[0010] Além disso, o método inclui computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero. O método também inclui que o segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença. O terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle. Além disso, o método inclui reconstruir o bloco atual de dados de vídeo.
[0011] Além disso, quando o modelo afim é um modelo afim de quatro parâmetros, o segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. Além disso, a quarta diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0012] Além disso, o método inclui computar o componente horizontal do modelo afim em que o modelo afim é um modelo afim de seis parâmetros. O segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle. Além disso, o método inclui computar o componente vertical do modelo afim quando o modelo afim é um modelo afim de seis parâmetros. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle.
[0013] Esta divulgação também se refere a um aparelho que inclui meios para decodificação de vídeo de um bloco atual de dados de vídeo. O aparelho inclui meios para computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero. O aparelho também inclui que o primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença. O primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle.
[0014] Além disso, o aparelho inclui meios para computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero. O aparelho também inclui que o segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença. O terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle. Além disso, o aparelho inclui meios para reconstruir o bloco atual de dados de vídeo.
[0015] Além disso, quando o modelo afim é um modelo afim de quatro parâmetros, o segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. Além disso, a quarta diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0016] Além disso, o aparelho inclui meios para computar o componente horizontal do modelo afim em que o modelo afim é um modelo afim de seis parâmetros. O segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle. Além disso, o aparelho inclui meios para computar o componente vertical do modelo afim quando o modelo afim é um modelo afim de seis parâmetros. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle.
[0017] Esta divulgação refere-se a um dispositivo para vídeo codificando um bloco atual de dados de vídeo, incluindo um ou mais processadores configurados para computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero. O primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença. O primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle.
[0018] Além disso, os um ou mais processadores são configurados para computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero. O segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença. O terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle. Além disso, o dispositivo inclui uma memória configurada para armazenar um bloco atual reconstruído de dados de vídeo.
[0019] Além disso, a codificação computa o segundo produto de diferença que inclui uma segunda diferença do modelo afim de quatro parâmetros, multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A quarta diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0020] Além disso, os um ou mais processadores, em um dispositivo de codificação, são configurados para computar o componente horizontal do modelo afim em que o modelo afim é um modelo afim de seis parâmetros. O segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle. Além disso, os um ou mais processadores são configurados para computar o componente vertical do modelo afim quando o modelo afim é um modelo afim de seis parâmetros. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle.
[0021] Esta divulgação também se refere a um meio legível por computador tendo nele armazenadas instruções que, quando executadas por um ou mais processadores, são configuradas para computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero. O primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença. O primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle.
[0022] Além disso, o meio legível por computador tendo nele armazenadas instruções que, quando executadas por um ou mais processadores, são configuradas para computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero. O segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença. O terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo. A terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle. Além disso, o meio legível por computador tendo nele armazenadas instruções que, quando executadas por um ou mais processadores, são configuradas para armazenar um bloco atual reconstruído de dados de vídeo.
[0023] Além disso, o meio legível por computador tendo nele armazenadas instruções que, quando executadas por um ou mais processadores, são configuradas para computar o segundo produto de diferença que inclui uma segunda diferença do modelo afim de quatro parâmetros, multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A quarta diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0024] Além disso, o meio legível por computador tendo nele armazenadas instruções que, quando executadas por um ou mais processadores, são configuradas para computar o componente horizontal do modelo afim, em que o modelo afim é um modelo afim de seis parâmetros. O segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle. Além disso, o meio legível por computador tendo nele armazenadas instruções que, quando executadas por um ou mais processadores, são configuradas para computar o componente vertical do modelo afim quando o modelo afim é um modelo afim de seis parâmetros. O quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle.
[0025] Além disso, o dispositivo inclui um meio legível por computador tendo nele armazenadas instruções que, quando executadas por um ou mais processadores, armazenam um bloco atual reconstruído de dados de vídeo.
[0026] Os detalhes de um ou mais exemplos desta divulgação são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens de vários aspectos das técnicas serão evidentes a partir da descrição e dos desenhos, e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0027] A Figura 1A ilustra candidatos de unificação normal adjacentes espaciais em modo de unificação e a Figura 1B ilustra candidatos de unificação normal adjacentes espaciais em modo AMVP.
[0028] A Figura 2 ilustra pontos MV de controle duplo para um modelo afim de quatro parâmetros.
[0029] A Figura 3 ilustra um modo Affine_Inter exemplificativo.
[0030] A Figura 4A e a Figura 4B ilustram exemplos de candidatos de unificação.
[0031] A Figura 5 ilustra pontos MV de três controles para um modelo afim de seis parâmetros.
[0032] A Figura 6A ilustra uma compensação de movimento de bloco único e a Figura 6B ilustra uma compensação de movimento de sub-bloco.
[0033] A Figura 7A ilustra um fluxograma usado para codificação de vídeo de com uma ou mais técnicas descritas nesta divulgação.
[0034] A Figura 7B ilustra um fluxograma usado para decodificação de vídeo com uma ou mais técnicas descritas nesta divulgação.
[0035] A Figura 8 ilustra um codificador de vídeo exemplificativo que pode ser usado para implementar uma ou mais das técnicas descritas nesta divulgação.
[0036] A Figura 9 ilustra um decodificador de vídeo exemplificativo que pode ser usado para implementar uma ou mais das técnicas descritas nesta divulgação.
DESCRIÇÃO DETALHADA
[0037] Compensação de Movimento Afim foi introduzida como uma ferramenta de codificação no Modelo de Exploração Conjunta (JEM), desenvolvido pela Joint Video Exploration Team, após o desenvolvimento do HEVC. No JEM, ambos os modelos de movimento afim de quatro parâmetros e seis parâmetros foram introduzidos. Esses modelos de movimento afim geralmente oferecem melhorias nos ganhos de codificação do movimento devido ao movimento não translacional, por exemplo, zoom e rotação. No entanto, as fórmulas existentes usadas nos modelos afim de quatro parâmetros e seis parâmetros dependem de fazer divisões que podem depender de um circuito divisor em hardware, por exemplo, um Circuito Integrado de Aplicação Específica (ASIC).
[0038] Por exemplo, um circuito divisor pode ser implementado usando um processo multietapas com base em multiplicações, subtrações e procurando números que são menores ou maiores que outros números (por exemplo, um dividendo). O processo multietapas para computar uma divisão por um circuito divisor é ineficiente quando comparado a executar uma operação de deslocamento de bit para realizar a divisão.
[0039] Contexto adicional da solução será descrito com referência às figuras, e na descrição detalhada abaixo. Informação de Movimento
[0040] Em H.265/HEVC, para cada bloco, um conjunto de informações de movimento pode estar disponível. Um conjunto de informações de movimento pode conter informações de movimento para direções de predição para frente e para trás. As direções de predição para frente e para trás são duas direções de predição de um modo de predição bidirecional e os termos “para frente” e “para trás” não têm necessariamente um significado geométrico, mas correspondem à lista de imagens de referência 0 (RefPicList0) e à lista de imagens de referência 1 (RefPicList1) de uma imagem atual. Quando apenas uma lista de imagens de referência está disponível para uma imagem ou fatia, apenas RefPicList0 pode estar disponível e as informações de movimento de cada bloco de uma fatia são encaminhadas.
[0041] Para cada direção de predição, as informações de movimento podem conter um índice de referência e um vetor de movimento. Em alguns casos, por simplicidade, um vetor de movimento em si pode ser referido de maneira a assumir que possui um índice de referência associado. Um índice de referência pode ser usado para identificar uma imagem de referência na lista de imagens de referência atual (RefPicList0 ou RefPicList1). Um vetor de movimento tem um componente horizontal e um vertical.
POC
[0042] A Contagem de Ordem de Imagem (POC) é amplamente usada em padrões de codificação de vídeo para identificar uma ordem de exibição de uma imagem. Embora existam casos em que duas imagens dentro de uma sequência de vídeo codificada podem ter o mesmo valor de POC, isso geralmente não ocorre dentro de uma sequência de vídeo codificada. Quando múltiplas sequências de vídeo codificadas estão presentes em um fluxo de bits, as imagens com um mesmo valor de POC podem estar mais próximas umas das outras em termos de ordem de decodificação.
[0043] Os valores de POC de imagens são geralmente usados para construção de lista de imagens de referência e derivação de conjunto de imagens de referência, como em dimensionamento de vetor de movimento e HEVC. Estrutura de CU em HEVC
[0044] Em HEVC, a maior unidade de codificação em uma fatia é chamada de bloco de árvore de codificação (CTB). Um CTB contém uma árvore quádrupla, os nós da qual são unidades de codificação. O tamanho de um CTB podem ser intervalos de 16x16 a 64x64 no perfil principal de HEVC (embora tecnicamente tamanhos de CTB 8x8 possam ser suportados). Uma unidade de codificação (CU) pode ter o mesmo tamanho de valor de um CTB, embora seja tão pequeno quanto 8x8. Cada unidade de codificação é codificada com um modo. Quando uma CU é intercodificada, ela pode ser particionada em duas unidades de predição (PUs) ou se tornar apenas uma PU quando uma partição adicional não se aplicar. Quando duas PUs estão presentes em uma CU, elas devem ser retângulos de meio tamanho ou ter o tamanho de dois retângulos com ¼ ou ¾ o tamanho da CU.
[0045] Quando a CU é intercodificada, um conjunto de informações de movimento está presente para cada PU. Além disso, cada PU é codificada com um modo de interpredição único para derivar o comjunto de informações de movimento. Em HEVC, os menores tamanhos de PU são 8x4 e 4x8. Predição de Movimento em HEVC
[0046] No padrão HEVC, há dois modos de interpredição, denominados modos de umificação (merge) (salto é considerado um caso especial de unificação) e predição avançada de vetor de movimento (AMVP), respectivamente, para uma unidade de predição (PU).
[0047] No modo AMVP ou de unificação, uma lista de candidatos a vetor de movimento (MV) é mantida para vários preditores de vetor de movimento. O(s) vetor(es) de movimento, bem como os índices de referência no modo de unificação, da PU atual, são gerados retirando um candidato da lista de candidatos MV.
[0048] A lista de candidatos MV contém até cinco (“5”) candidatos para o modo de unificação e apenas dois candidatos para o modo AMVP. Um candidato de unificação pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento correspondentes a ambas as listas de imagens de referência (lista 0 e lista 1) e os índices de referência. Se um candidato de unificação for identificado por um índice de unificação, as imagens de referência são usadas para a predição dos blocos atuais, bem como os vetores de movimento associados são determinados. No entanto, no modo AMVP para cada direção de predição em potencial da lista 0 ou da lista 1, um índice de referência precisa ser explicitamente sinalizado, juntamente com um índice MVP para a lista de candidatos MV, pois o candidato AMVP contém apenas um vetor de movimento. No modo AMVP, os vetores de movimento previstos podem ser adicionalmente refinados.
[0049] Como pode ser visto acima, um candidato de unificação corresponde a um conjunto completo de informações de movimento, enquanto um candidato de AMVP contém apenas um vetor de movimento para uma direção de predição e índice de referência específicos.
[0050] Os candidatos para ambos os modos são derivados de maneira semelhante de blocos adjacentes espaciais e temporais de um mesmo valor.
[0051] No JEM, agora referido como Codificação de Vídeo Versátil (VVC) em abril de 2018, a lista de candidatos MV pode conter até sete (“7”) candidatos para o modo de unificação.
Candidatos Adjacentes Espaciais
[0052] Os candidatos MV espaciais são derivados dos blocos adjacentes mostrados na Figura 1, para uma PU específica (PU0), embora os métodos que geram os candidatos dos blocos sejam diferentes para os modos de unificação e AMVP.
[0053] A Figura 1A ilustra candidatos de unificação normal adjacentes espaciais em modo de unificação
[0054] No modo de unificação, até quatro candidatos MV espaciais podem ser derivados com as ordens mostradas na Figura 1A com números, e a ordem é a seguinte: esquerda (0), acima (1), acima à direita (2), abaixo à esquerda (3), e acima à esquerda (4), como mostrado na Figura 1A. As operações de limpeza podem ser aplicadas para remover candidatos MV idênticos.
[0055] A Figura 1B ilustra candidatos de unificação normal adjacentes espaciais em modo AMVP.
[0056] No modo AVMP, os blocos adjacentes são divididos em dois grupos: grupo da esquerda consistindo no bloco 0 e 1, e grupo acima consistindo nos blocos 2, 3 e 4, como mostrado na Figura 1B. Para cada grupo, o candidato potencial em um bloco adjacente que se refere a uma imagem de referência de mesmo valor que o indicado pelo índice de referência sinalizado tem a maior prioridade a ser escolhida para formar um candidato final do grupo. É possível que todos os blocos adjacentes não contenham um vetor de movimento apontando para uma imagem de referência de mesmo valor. Portanto, se esse candidato não puder ser encontrado, o primeiro candidato disponível será dimensionado para formar o candidato final, portanto, as diferenças de distância temporal podem ser compensadas. Compensação de movimento em H.265/HEVC
[0057] A compensação de movimento em H.265/HEVC é usado para gerar um preditor para o bloco intercodificado atual. O vetor de movimento com precisão de um quarto de pixel é usado e os valores de pixel em posições fracionárias são interpolados usando valores de pixel inteiros adjacentes para ambos os componentes luma e croma. Predição de Movimento Afim em Atividades JVET
[0058] Nos padrões atuais de codec de vídeo existentes, anteriores ao VVC, apenas um modelo de movimento translacional é aplicado para predição de compensação de movimento (MCP). Embora no mundo real existam muitos tipos de movimento, por exemplo, zoom de aproximação/afastamento, rotação, movimentos de perspectiva e outros movimentos irregulares. Se ainda for apenas aplicado o modelo de movimento de translação para MCP nessas sequências de teste com movimentos irregulares, isso afetará a precisão de predição e resultará em baixa eficiência de codificação.
[0059] Por muitos anos, foram feitas tentativas para projetar algoritmos para melhorar o MCP e aumentar a eficiência da codificação. Afim de Quatro Parâmetros (dois MVs)
[0060] A Figura 2 ilustra pontos MV de controle duplo para um modelo afim de quatro parâmetros. Uma unificação afim e modos inter afim são propostos para lidar com modelos de movimento afim com 4 parâmetros como
 mv  ax  by  c (1)  x  mv y  bx  ay  d em que (vx0, vy0) é o vetor de movimento de ponto de controle no canto superior esquerdo, e (vx1, vy1) é outro vetor de movimento de ponto de controle no canto superior direito do bloco, como mostrado na Figura 2. O modo afim pode ser representado como  ( mv1x  mv0 x ) ( mv1 y  mv0 y )  mv x  x y  mv0 x (2)  w w  mv  ( mv1 y  mv0 y ) x  ( mv1 x  mv0 x ) y  mv  y w w 0y em que w é a largura do bloco. No software JEM atual, a predição de movimento afim é aplicada apenas a blocos quadrados. No entanto, de acordo com um exemplo, a predição de movimento afim pode ser aplicada a blocos não quadrados. Similar à codificação de movimento de translação convencional, dois modos (isto é, modo inter com informações de movimento sinalizadas e modo de unificação com informações de movimento derivadas) podem ser suportados para codificação de movimento afim. Modo Inter Afim
[0061] Para cada CU/PU cujo tamanho seja igual ou superior a 16x16, o modo AF_INTER pode ser aplicado da seguinte maneira. Se a CU/PU atual estiver no modo AF_INTER, um indicador afim no nível de CU/PU é sinalizado no fluxo de bits. Uma lista de candidatos de predição de vetor de movimento afim (MVP) com dois candidatos como {(MVP00, MVP01), (MVP10, MVP11)} é construída. O custo de distorção de taxa é usado para determinar se (MVP00, MVP01) ou (MVP10, MVP11) é selecionado como a predição de vetor de movimento afim da CU/PU atual. Se (MVPx0, MVPx1) for selecionado, então, o MV0 é codificado com MVPx0 como a predição e MV0 é codificado com MVPx1 como a predição. O índice para indicar a posição do candidato selecionado na lista é sinalizado para o bloco atual no fluxo de bits.
[0062] O procedimento de construção da lista de candidatos MVP afim é como segue. Coletar MVs de muitos grupos. Por exemplo, G0: {MV-A, MV-B, MV-C), G1: {MV-D, MV- E}, G2 {MV-F, MV-G}.
[0063] A Figura 3 ilustra um modo Affine_Inter exemplificativo. Os blocos A, B, C, D, E, F e G são mostrados na Figura 3. Primeiramente, toma-se o vetor de movimento do bloco que é referente à imagem de referência alvo. Se não estiver disponível, emtão utiliza-se o vetor de movimento que corresponde ao vetor de movimento dimensionado para a imagem de referência alvo.
[0064] Para um triplo (MV0, MV1, MV2) de G0, G1, G2, deriva-se um MV2’ de MV0 e MV1 com o modelo afim. Em segundo lugar, computa-se D(MV0, MV1, MV2)=IMV2-MV2’I. Em terceiro lugar, pesquisa-se todos os triplos de G0, G1 e G2, e encontra-se o triplo (MV00, MV01, MV02) que produz o mínimo D. Depois de produzir o mínimo D, define-se MVP00=MV00, MVP01=MV01. Se existir mais de um triplo disponível, encontra-se o triplo (MV10, MV11, MV12) que produz o segundo mínimo D. Depois de produzir o segundo mínimo D, então, define-se MVP10=MV10, MVP11=MV11. Se os candidatos não são preenchidos, isto é, encontrados, então, os candidatos MVP para o bloco de predição não afim são derivados para bloco atual. Por exemplo, os candidatos MVP para um bloco de predição não afim são MVP_nonaff0 e
MVP_nonaff1. Se (MVP10, MVP11) não puder ser encontrado a partir da pesquisa tripla, então, configura-se 1 1 MVP 0=MVP 1=MVP_nonaff0.
[0065] Após o MVP da CU/PU afim atual ser determinado, a estimativa de movimento afim é aplicada e o (MV00, MV01) é encontrado. Então, a diferença de (MV00, MV01) e (MVPx0, MVPx1) é codificada no fluxo de bits.
[0066] A predição de compensação de movimento afim mencionada acima é aplicada para gerar os resíduos da CU/PU atual. Finalmente, os resíduos da CU/PU atual são transformados, quantizados e codificados no fluxo de bits. Modo de unificação afim
[0067] A Figura 4A e a Figura 4B ilustram exemplos de candidatos de unificação. Quando a CU/PU atual é aplicada no modo AF_MERGE, o primeiro bloco é codificado com o modo afim dos blocos reconstruídos adjacentes válidos. E a ordem de seleção para o bloco candidato é da esquerda, acima, acima à direita, abaixo à esquerda para acima à esquerda, como mostrado na Figura 4A. Por exemplo, se o bloco inferior esquerdo adjacente A for codificado no modo afim, como mostrado na Figura 4B, os vetores de movimentos v2, v3 e v4 do canto superior esquerdo, canto superior direito e canto inferior esquerdo da CU/PU que contém o bloco A são derivados. O vetor de movimento v0 do canto superior esquerdo na CU/PU atual é calculado de acordo com v2, v3 e v4. Da mesma forma, o vetor de movimento v1 da direita acima da CU/PU atual é calculado com base em V2, V3 e v4.
[0068] Após o CPMV do v0 e v1 da CU/PU atual ser calculado de acordo com o modelo de movimento afim simplificado definido na equação (2), o MVF da CU/PU atual é gerado. Então, a Predição Compensada de Movimento Afim (“MCP”) é aplicada.
[0069] Para identificar se a CU/PU atual é codificada no modo AF_MERGE, um identificador afim é sinalizado no fluxo de bits quando houver pelo menos um bloco adjacente codificado no modo afim. Se nenhum bloco afim adjacente ao bloco atual existir, como mostrado na Figura 4A, então, um indicador afim não será gravado no fluxo de bits.
[0070] Para indicar o modo de unificação afim, um affine_flag é sinalizado se o indicador de unificação for 1. Se o affine_flag for 1, o bloco atual é codificado com o modo de unificação afim, e nenhum índice de unificação é sinalizado. Se affine_flag for 0, ou o bloco atual é codificado com o modo de unificação normal, e um índice de unificação é sinalizado em seguida. A tabela abaixo mostra o design da sintaxe. merge_flag ae if( merge_flag){ affine_flag ae if(!affine_flag) merge_index ae } Codificação de Entropia para o Modelo Afim
[0071] No HEVC, codificação aritmética binária adaptativa ao contexto (CABAC) é usada para converter um símbolo em um valor binarizado, em um processo chamado binarização. A binarização permite a codificação aritmética binária eficiente por meio de um mapeamento exclusivo de elementos de sintaxe não binários para uma sequência de bits, que são denominados bins.
[0072] No software de referência JEM2.0, para o modo de unificação afim, apenas o indicador afim é codificado, e o índice de unificação é inferido como o primeiro modelo afim adjacente disponível na ordem de verificação predefinida A-B-C-D-E, como mostrado na Figura 4A. Essa ordem de verificação é semelhante ao discutido em relação à Figura 1A. Onde a esquerda (0) tem o bloco A priorizado primeiro antes dos blocos B-E. Então, o acima (1), bloco B, é priorizado em seguida, em relação aos blocos C-E. Seguido pelo acima à direita (2), bloco C, é priorizado em relação ao bloco D-E. O abaixo à esquerda (3), bloco D, é priorizado em relação ao bloco E. Finalmente, o acima à esquerda (4), bloco E, é priorizado por último.
[0073] Para o modo inter afim, duas sintaxes MVD são codificadas para cada lista de predição, indicando a diferença de vetor de movimento entre o vetor de movimento afim derivado e o vetor de movimento predito. Afim de Seis Parâmetros (três MVs)
[0074] A Figura 5 ilustra pontos MV de controle triplo para um modelo afim de seis parâmetros.
[0075] Um bloco com predição afim pode optar por usar um modelo afim de quatro parâmetros ou modelo afim de seis parâmetros adaptativamente.
[0076] Um modelo afim com seis (“6”) parâmetros é definido como
 mv  ax  by  e (3)  x  mv y  cx  dy  f
[0077] Um modelo afim com seis (“6”) parâmetros possui três pontos de controle. Em outras palavras, um modelo afim com seis (“6”) parâmetros é determinado por três vetores de movimento, como mostrado na Figura 5. MV0 é o primeiro vetor de movimento de ponto de controle no canto superior esquerdo. O MV1 é o segundo vetor de movimento de ponto de controle no canto superior direito do bloco. MV2 é o terceiro vetor de movimento de ponto de controle no canto inferior esquerdo do bloco, como mostrado na Figura 2.
[0078] O modelo afim construído com os três vetores de movimento é calculado como  ( mv1 x  mv0 x ) ( mv2 x  mv0 x )  mv x  w x h y  mv0 x (4)   mv  ( mv1 y  mv0 y ) x  ( mv2 y  mv0 y ) y  mv  y w h 0y Mais Métodos de Predição de Vetor de Movimento para Afim
[0079] De maneira semelhante ao modo de unificação afim para derivar os vetores de movimento do canto superior esquerdo e do canto superior direito, o modelo afim também pode ser usado para derivar os MVPs para o canto superior esquerdo, o canto superior direito e o canto inferior esquerdo. MVD1 pode ser previsto a partir de MVD no modo afim
[0080] Os modos de unificação afim e unificação normal podem ser adicionados à lista de candidatos de unificação. Decisão de Sub-bloco no JEM
[0081] A Figura 6A ilustra uma compensação de movimento de bloco único. No software JEM, a compensação de movimento afim introduz a compensação de movimento de sub- bloco. Diferentemente da compensação de movimento de bloco único tradicional, em que o bloco inteiro tem apenas um vetor de movimento para uma lista de referência, como mostrado na Figura 6A, a Figura 6B ilustra uma compensação de movimento de sub-bloco com diferentes vetores de movimento.
[0082] A compensação de movimento de sub-bloco permite que um bloco de dados de vídeo seja dividido em mais de um sub-bloco com diferentes vetores de movimento para uma lista de referência, como mostrado na Figura 6B.
[0083] No software JEM, é utilizado um algoritmo para determinar o tamanho do sub-bloco para compensação de movimento afim, tanto no codificador quanto no decodificador. O algoritmo cria os IDs descritos abaixo e caracteriza o tamanho de bloco atual como tendo dimensões wxh, em que w é a largura, e h é a altura do bloco atual. Cada sub-bloco do bloco atual possui uma largura (sw) e altura (sh) e são determinados conforme descrito abaixo.
[0084] A largura do tamanho de sub-bloco pode ser determinada selecionando o valor máximo, mvWx, entre o valor absoluto da diferença do primeiro componente horizontal de vetor de movimento de ponto de controle, mv1x, e um segundo componente horizontal de vetor de movimento de ponto de controle, mv0x, e o valor absoluto da diferença de um primeiro componente vertical de vetor de movimento de ponto de controle, mv1y, e um segundo componente vertical de vetor de movimento de ponto de controle, mv0y. A largura do bloco atual de dados de vídeo,
w, é usada para executar operação de deslocamento de bit. Com o deslocamento à direita de w por p posições de bit, e selecionando o valor máximo entre esses operandos (w>>p e mvWx, como mostrado abaixo), e 1, o valor de sw é determinado. Embora o módulo da largura do bloco, w, dividido pela largura do sub-bloco, sw, não seja igual a zero, a largura do sub-bloco diminui (sw--). A largura do sub-bloco sw é o valor máximo entre o sw e ww prévios (sw=max{sw,ww}).
mvWx  max{ mv1x  mv0 x , mv1 y  mv0 y }  ( w  p )  sw  max  ,1  mvWx  enquanto (w % sw != 0 ) { sw‐‐; }
[0085] Da mesma forma, a altura do tamanho de sub-bloco pode ser determinada selecionando o valor máximo, mvWy, entre o valor absoluto da diferença de um terceiro componente horizontal de vetor de movimento de ponto de controle, mv2x, e um segundo componente horizontal de vetor de movimento de ponto de controle, mv0x, e o valor absoluto da diferença de um primeiro componente vertical de vetor de movimento de ponto de controle, mv1y, e um segundo componente vertical de vetor de movimento de ponto de controle, mv0y. A altura do bloco atual de dados de vídeo, h, é usada para realizar uma operação de deslocamento de bit. Deslocando à direita h por p posições de bit, e selecionando o valor máximo entre aqueles operandos (w>>p e mvWy, como mostrado abaixo), e 1, o valor de sh é determinado. Embora o módulo da altura do bloco, h, dividido pela largura do sub-bloco, sh, não seja igual a zero, a altura do sub-bloco diminui (sh--). A largura do sub-bloco sh é o máximo entre o sh e hh prévio sh  max sh, hh .
mvWy  max{ mv2 x  mv0 x , mv2 y  mv0 y }  (h  p)  sh  max  ,1  mvWy  enquanto (h % sh != 0 ) { sh‐‐; } sh=max{sh,hh}, e p é um desvio de precisão de movimento igual a 2 em JEM. wwxhh é o menor tamanho de sub- bloco definido como 4x4 em JEM.
[0086] No projeto de compensação de movimento afim em JEM, várias operações de divisão estão envolvidas, que não são desejáveis em implementações práticas de codificação de vídeo. Para endereçar esse assunto, modalidades incluem abordagens de compensação de movimento afim com base em operações de deslocamento de bit como descrito acima.
[0087] Modalidades incluem codificadores e decodificadores de vídeo que incluem processo de compensação de movimento afim usando operações de deslocamento de bit de acordo com as técnicas desta divulgação. Os seguintes recursos podem ser aplicados individualmente ou em qualquer combinação adequada em uma modalidade particular.
[0088] Em algumas modalidades, o procedimento de compensação de movimento, no decodificador usando operações de deslocamento de bit, inclui, mas sem limitação, o procedimento de descobrir a predição de vetor de movimento afim, derivar os candidatos de unificação, determinar o tamanho de sub-bloco em compensação de movimento afim e calcular os vetores de movimento para cada pixel ou cada sub-bloco no modelo afim.
[0089] Em algumas das formas de modelo afim abaixo, a função desligado pode ser usada. A função desligado é destacada abaixo. Uma largura de bloco, w, é definida como w=2wb. O modelo afim de quatro parâmetros, conforme definido em (2), pode ser substituído pelas seguintes equações,  n  1 if m  0 off (m, n)    (n  1) Otherwise  1 if m  0 sign(m)   1 Otherwise
[0090] Um modelo afim pode ser usado pelo codificador, decodificador ou ambos, uma vez que cada dispositivo realiza operações que requerem estimativa de vetor de movimento.
[0091] O componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros podem ser escritos na forma (1) abaixo:  mv x  ((( mv1 x  mv0 x ) x )  wb )  ((( mv1 y  mv0 y ) y )  wb )  mv0 x   mv y  ((( mv1 y  mv0 y ) x )  wb )  ((( mv1 x  mv0 x ) y )  wb )  mv0 y
[0092] Um dispositivo para codificar ou decodificar um bloco atual de dados de vídeo que utiliza um modelo afim para codificação de vídeo pode implementar operações de deslocamento de bit para ganhar eficiências de desempenho.
Implementando operações de deslocamento de bit, uma divisão expressa “A/B” pode ser implementada.
Se B, por exemplo, for uma potência de 2, por exemplo, B=8, A/8 pode ser implementado como A>>3. Como 8 é 2 à potência 3, e dividir A por 8 é o equivalente a deslocar para a esquerda por posições de 3 bits.
Pode ser desejável não ter um número não inteiro como resultado de uma divisão ao computar modelagem afim.
Se A=1, o resultado de A>>3 é 1/8. Para evitar um resultado fracionado, em que a resolução dos bits de A pode ser perdida, A pode ser redimensionado para um número maior para normalizar A.
A pode representar o número de pixels em uma dimensão de um bloco atual de dados de vídeo.
Por exemplo, se houver 128 pixels como largura ou altura máxima de um bloco atual de dados de vídeo, A pode ser normalizado para um valor de 128, em que 128 é 2 à potência 7. Um fator de normalização de posição de deslocamento de bit também pode ser usado no numerador.
Assim, A>>3 pode ser 128/8 = 16. No entanto, como o numerador A foi normalizado, o denominador também pode ser normalizado pelo fator de normalização.
Em vez de escrever A>>3, a operação equivalente pode ser representada como A>> (fator de normalização-4), em que, neste exemplo, o fator de normalização é 7. Portanto, A>>(7-4)=A>>3. Uma pessoa versada na técnica reconheceria que, ao processar valores digitais e constantes digitais, técnicas para normalizar valores digitais, conforme descrito neste parágrafo, são comumente usadas. Para fins de clareza, as referências aos fatores de normalização são omitidas para fins de clareza, mas geralmente são aplicáveis a qualquer uma das várias formas de modelo afim descritas nesta divulgação, por exemplo, forma de modelo afim (1), forma de modelo afim (2), ... forma de modelo afim (18).
[0093] As formas de modelo afim descritas neste documento têm algumas operações comuns entre elas. Os modelos afim podem ser implementados por um ou mais processadores em um dispositivo codificador ou dispositivo decodificador que são configurados para computar uma primeira diferença compreendendo um primeiro componente horizontal de vetor de movimento de ponto de controle menos um segundo componente horizontal de vetor de movimento de ponto de controle, por exemplo, em um modelo afim de quatro parâmetros: mv1x – mv0x. O dispositivo codificador ou decodificador pode também computar uma segunda diferença compreendendo um primeiro componente vertical de vetor de movimento de ponto de controle menos um segundo componente vertical de vetor de movimento de ponto de controle, por exemplo, em um modelo afim de quatro parâmetros: mv1y - mv0y. Note que, em um modelo afim de seis parâmetros, a segunda diferença pode ser computada com um (terceiro) vetor de movimento de ponto de controle adicional mv2. Dessa forma, a segunda diferença pode alternativamente ser escrita como compreendendo um terceiro componente horizontal de vetor de movimento de ponto de controle menos um segundo componente horizontal de vetor de movimento de ponto de controle, em um modelo afim de seis parâmetros é mv2x – mv0x.
[0094] Em alguns dos quatro modelos afim de parâmetro, o primeiro produto de diferença pode incluir multiplicar a primeira diferença por uma localização de pixel horizontal (x) dentro do bloco atual de dados de vídeo. Além disso, em alguns dos quatro modelos afim de parâmetro, o segundo produto de diferença pode incluir multiplicar a segunda diferença por uma localização de pixel vertical (y) dentro do bloco atual de dados de vídeo. Alternativamente, em alguns dos seis modelos afim de parâmetro, o segundo produto de diferença pode incluir multiplicar a segunda diferença por uma localização de pixel vertical (y) dentro do bloco atual de dados de vídeo.
[0095] Além disso, em alguns dos quatro modelos afim de parâmetro, o terceiro produto de diferença compreende multiplicar a terceira diferença por uma localização de pixel horizontal (x) dentro do bloco atual de dados de vídeo. Além disso, em alguns dos quatro modelos afim de parâmetro, o quarto produto de diferença inclui multiplicar a quarta diferença por uma localização de pixel vertical (y) dentro do bloco atual de dados de vídeo. Alternativamente, em alguns dos seis modelos afim de parâmetro, o segundo produto de diferença inclui multiplicar a quarta diferença por uma localização de pixel vertical (y) dentro do bloco atual de dados de vídeo.
[0096] Várias das formas de modelo afim têm elementos comuns. Por exemplo, a forma de modelo afim (1), forma de modelo afim (2), forma de modelo afim (3), forma de modelo afim (7), forma de modelo afim (8), forma de modelo afim (10), forma de modelo afim (11) e forma de modelo afim (16) têm os elementos comuns descritos abaixo.
Elementos Comuns de um Número de Modelos Afim. Componentes Horizontais
[0097] Cada um dos modelos afim se o modelo afim de quatro parâmetros ou o modelo afim de seis parâmetros incluir uma computação de um componente horizontal de um vetor de movimento, mvx, e uma computação de um componente vertical de um vetor de movimento, mvy.
[0098] Para formas de modelo afim (1), (2), (3), (10) e (11), que são modelos afim de quatro parâmetros, um dispositivo decodificador ou codificador pode incluir um ou mais processadores configurados para computar um componente horizontal de um vetor de movimento, mvx, do modelo afim, adicionando um resultado da primeira operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero, mvx0, e com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença, (mv1x - mv0x)x, e um segundo produto de diferença, (mv1y – mv0y)y.
[0099] O primeiro produto de diferença (mv1x - mv0x)x inclui multiplicar uma primeira diferença, mv1x - mv0x por uma localização de pixel horizontal, x, dentro do bloco atual de dados de vídeo. Da mesma forma, o segundo produto de diferença, (mv1y - mv0y)y, inclui multiplicar uma segunda diferença, (mv1y – mv0y), por uma localização de pixel vertical, y, dentro do bloco atual de dados de vídeo. Note que a primeira diferença, mv1x - mv0x, é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero, mv0, e um primeiro vetor de movimento de ponto de controle mv1. Da mesma forma, a segunda diferença, (mv1y – mv0y), é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0100] Para formas de modelo afim (7), (8) e (16), que são modelos afim de seis parâmetros, um dispositivo decodificador ou codificador pode incluir um ou mais processadores configurados para computar um componente horizontal de um vetor de movimento, mvx, do modelo afim, adicionando um resultado da primeira operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero, mvx0, e com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença, (mv1x - mv0x)x, e um segundo produto de diferença, (mv1x - mv0x)x.
[0101] O primeiro produto de diferença (mv1x - mv0x)x inclui multiplicar uma primeira diferença, mv1x - mv0x, por uma localização de pixel horizontal, x, dentro do bloco atual de dados de vídeo. Da mesma forma, o segundo produto de diferença, (mv2x - mv0x)x, inclui multiplicar uma segunda diferença, (mv2x - mv0x), por uma localização de pixel vertical, x, dentro do bloco atual de dados de vídeo. Note que a primeira diferença, mv1x - mv0x, é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero, mv0, e um primeiro vetor de movimento de ponto de controle mv1. Da mesma forma, a segunda diferença (mv2x - mv0x), é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle.
Componentes verticais
[0102] Para formas de modelo afim (1), (2), (3), (10) e (11), que são modelos afim de quatro parâmetros, um dispositivo decodificador ou codificador pode incluir um ou mais processadores configurados para computar um componente vertical mvy de um vetor de movimento do modelo afim, se o modelo afim for o modelo afim de quatro parâmetros, adicionando um resultado da segunda operação de deslocamento de bit para o componente vertical de vetor de movimento de ponto de controle zero, mv0y, e com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença, (mv1y-mv0y)x, e um quarto produto de diferença, (mv1x-mv0x)y.
[0103] O terceiro produto de diferença (mv1x- mv0y)x inclui multiplicar uma terceira diferença (mv1y-mv0y) por uma localização de pixel horizontal, x, dentro do bloco atual de dados de vídeo. Da mesma forma, o quarto produto de diferença (mv1x-mv0y)y inclui multiplicar uma quarta diferença (mv1x-mv0y) por uma localização de pixel vertical, y, dentro do bloco atual de dados de vídeo. A terceira diferença mv1x-mv0y é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle. A quarta diferença mv1x-mv0x é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero, mv0y, e o primeiro vetor de movimento de ponto de controle, mv1y.
[0104] Para formas de modelo afim (7), (8) e (16), que são modelos afim de seis parâmetros, um dispositivo decodificador ou codificador pode incluir um ou mais processadores configurados para computar um componente vertical de um vetor de movimento do modelo afim, se o modelo afim for o modelo afim de seis parâmetros, adicionando o resultado da segunda operação de deslocamento de bit ao componente vertical de vetor de movimento de ponto de controle zero, mv0y, e com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença (mv1y-mv0y)x e um quarto produto de diferença (mv2y-mv0y)y.
[0105] O terceiro produto de diferença (mv1y - mv0y)x inclui multiplicar uma terceira diferença (mv1y – mv0y) pela localização de pixel horizontal, x, dentro do bloco atual de dados de vídeo. O quarto produto de diferença (mv2y-mv0y)y inclui multiplicar uma quarta diferença (mv2y-mv0y) por uma localização de pixel vertical, y, dentro do bloco atual de dados de vídeo. A terceira diferença (mv1y-mv0y) é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero mv0y e um primeiro vetor de movimento de ponto de controle, mv1y.
[0106] A quarta diferença mv2y-mv0y é com base em diferença entre componentes verticais do vetor de movimento de ponto de controle zero, mv0y, e um segundo vetor de movimento de ponto de controle, mv2y.
[0107] Como parte da decodificação, pode haver um bloco atual reconstruído de dados de vídeo armazenados na memória.
[0108] A terceira diferença mv1y-mv0y do modelo afim de quatro parâmetros é a segunda diferença (mv1y - mv0y) do modelo afim de quatro parâmetros multiplicada por menos 1. A quarta diferença do modelo afim de quatro parâmetros é a primeira diferença mv1x-mv0x do modelo afim de quatro parâmetros.
[0109] O componente horizontal de vetor de movimento de ponto de controle zero, mv0x, o primeiro componente horizontal de vetor de movimento de ponto de controle, mv1x, o segundo componente horizontal de vetor de movimento de ponto de controle, mv2x, o componente vertical de vetor de movimento de ponto zero, mv0y, o primeiro componente vertical de vetor de movimento de ponto de controle, mv1y, e o segundo vetor de movimento de ponto de controle, mv2y, são, cada um, deslocados em bit por um número inteiro.
[0110] Na forma de modelo afim (1), que é o modelo afim de quatro parâmetros, a primeira operação de deslocamento de bit no primeiro produto de diferença (mv1x - mv0x)x e no segundo produto de diferença (mv1y - mv0y)y é computada uma vez por uma primeira constante digital, wb, na diferença entre o primeiro produto de diferença e o segundo produto de diferença, isto é, ((mv1x-mv0x)x-(mv1y- mv0y)y)>>wb.
[0111] A segunda operação de deslocamento de bit no terceiro produto de diferença (mv1y-mv0y)x e no quarto produto de diferença (mv1x-mv0x)y é computada uma vez por uma primeira constante digital, wb, na diferença entre o terceiro produto de diferença, e o quarto produto de diferença, isto é, ((mv1y-mv0y)x-(mv1x-mv0x)y)>>wb.
[0112] A primeira constante digital, wb, é um número inteiro positivo entre 1 e 7.
[0113] O número máximo, wb, pode ser uma função do tamanho de bloco. Por exemplo, em um tamanho de bloco (por exemplo, 128x128), o valor máximo de wb é dois à potência 7 que é 128.
[0114] Se o tamanho de bloco fosse 256x256, então, wb max seria dois à potência 8, que é 256. Se o tamanho de bloco fosse 64x64, então, wb max seria dois à potência 6, que é 64. wb designa a largura de forma geral. Para um bloco quadrado de 128x128, a altura (geralmente designada como hb), é a mesma que wb. No entanto, para um bloco não quadrado, por exemplo, 64x128, o valor de wb seria 6, e o valor de hb seria 7. A explicação de qual valor wb ou hb pode ter se aplica a outras formas abaixo onde wb ou hb é usado e/ou descrito.
[0115] O primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x. O componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x. O primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y. O componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y.
[0116] A segunda diferença e a terceira diferença podem ser um valor equivalente. A primeira diferença e a quarta diferença podem ser um valor equivalente.
[0117] Note que, na forma (1), cada diferença de vetores de movimento pode ser deslocada em bits por wb. Alternativamente, outra forma do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita como na forma de modelo afim (2) abaixo:  mv x  ((( mv1 x  mv0 x ) x  ( mv1 y  mv0 y ) y )  wb )  mv0 x   mv y  ((( mv1 y  mv0 y ) x  ( mv1 x  mv0 x ) y )  wb )  mv0 y
[0118] Note que, na forma (2), a combinação de diferenças de vetores de movimento para cada componente horizontal e componente vertical do vetor de movimento de modelo afim de quatro parâmetros, pode ser deslocada em bits por wb. Dessa forma, em contraste com a forma (1) acima, na forma (2), pode haver dois deslocamentos de bit por wb em vez de quatro deslocamentos de bit por wb.
[0119] A forma de modelo afim (2), que é um modelo afim de quatro parâmetros, além dos elementos comuns, também inclui uma primeira operação de deslocamento de bit por uma primeira constante digital, wb, no primeiro produto de diferença e no segundo produto de diferença é computada duas vezes. A primeira operação de deslocamento de bit é computada uma vez no primeiro produto de diferença, e uma vez no segundo produto de diferença.
[0120] A segunda operação de deslocamento de bit pela primeira constante digital, wb, no terceiro produto de diferença e no quarto produto de diferença é computada duas vezes, uma vez no terceiro produto de diferença e uma vez no quarto produto de diferença.
[0121] A primeira constante digital, wb, é um número inteiro positivo entre 1 e 7. O primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x. O componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x. O primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y. O componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y. A segunda diferença e a terceira diferença podem ser um valor equivalente. A primeira diferença e a quarta diferença podem ser um valor equivalente.
[0122] Alternativamente, ainda outra forma do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita como na forma de modelo afim (3) abaixo: d x10  mv1 x  mv0 x ; d 10 y  mv1 y  mv0 y ;  mv x  (( d x10 x  off ( d 10 x x , w))  wb )  (( d y y  off ( d y y , w))  wb )  mv0 x 10 10   mv y  (( d y x  off ( d y x, w))  wb )  (( d x y  off ( d x y , w))  wb )  mv0 y 10 10 10 10
[0123] Note que, na forma de modelo afim (3), wb pode ser aplicado quatro vezes, isto é, >>wb (um deslocamento à direita por wb) é computado quatro vezes.
[0124] A forma de modelo afim (3), que é o modelo afim de quatro parâmetros, e além dos elementos comuns, também inclui outras operações descritas aqui. A primeira operação de deslocamento de bit pela primeira constante digital no primeiro produto de diferença é também realizada como parte de uma operação de função desligado (primeiro produto de diferença, w). A primeira operação de deslocamento de bit pela primeira constante digital no segundo produto de diferença é também realizada como parte de uma operação de função desligado (segundo produto de diferença, w). A segunda operação de deslocamento de bit pela primeira constante digital no terceiro produto de diferença é também realizada como parte de uma operação de função desligado (terceiro produto de diferença, w). A segunda operação de deslocamento de bit pela primeira constante digital no quarto produto de diferença é também realizada como parte de uma operação de função desligado (quarto produto de diferença, w). w é a largura do bloco atual de dados de vídeo, e é definido como w=2wb. A primeira constante digital wb é um número inteiro positivo entre 1 e 7. O primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x. O componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x. O primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y. O componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y. A segunda diferença e a terceira diferença podem ser um valor equivalente. A primeira diferença e a quarta diferença podem ser um valor equivalente.
[0125] Alternativamente, uma forma adicional do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita na forma (4) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d 10 10 offw  w  1  mv x  sign ( d x10 x )  (( d x10 x  offw)  wb )  sign ( d 10 y y )  (( d y y  offw )  wb )  mv0 x 10    mv y  sign ( d y x )  (( d y x  offw)  wb )  sign ( d x y )  (( d x y  offw)  wb )  mv0 y 10 10 10 10
[0126] Note que, na forma de modelo afim (4), wb pode ser aplicado quatro vezes, isto é, >>wb (um deslocamento à direita por wb) é computado quatro vezes.
[0127] Alternativamente, ainda outra forma adicional do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita como na forma de modelo afim (5) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d 10 10  mvx  (( d x x  d y y  off ( d x x  d y y , w))  wb )  mv0 x 10 10 10 10   mv y  (( d y x  d x y  off ( d y x  d x y , w))  wb )  mv0 y 10 10 10 10
[0128] Note que, na forma de modelo afim (5), wb pode ser aplicado duas vezes, isto é, >>wb (um deslocamento à direita por wb) é computado duas vezes.
[0129] Alternativamente, ainda outra forma adicional do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita na forma (6) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; offw  w  1 d 10 10  mv x  Sign ( d x10 x  d 10 y y )  (( d x x  d y y  offw )  wb )  mv0 x 10 10    mv y  Sign ( d y x  d x y )  (( d y x  d x y  offw)  wb )  mv0 y 10 10 10 10
[0130] Note que, na forma de modelo afim (6), wb pode ser aplicado duas vezes, isto é, >>wb é computado duas vezes.
[0131] Suponha-se a largura de bloco w=2wb e altura de bloco h=2hb, o modelo afim de seis parâmetros como definido em (4) pode ser substituído pela seguinte forma de modelo afim (7) como mostrado abaixo:  mv x  ((( mv1 x  mv0 x ) x )  wb )  ((( mv2 x  mv0 x ) y )  hb )  mv0 x   mv y  ((( mv1 y  mv0 y ) x )  wb )  ((( mv2 y  mv0 y ) y )  hb )  mv0 y
[0132] Note que, na forma de modelo afim (7), wb pode ser aplicado duas vezes, isto é, >>wb (um deslocamento à direita por wb) é computado duas vezes; e hb pode ser aplicado duas vezes, isto é, >>hb (um deslocamento à direita por hb) é computado duas vezes.
[0133] A forma de modelo afim (7), que é o modelo afim de seis parâmetros, e além dos elementos comuns, também inclui outras operações descritas aqui. A primeira operação de deslocamento de bit pela primeira constante digital no primeiro produto de diferença e no segundo produto de diferença é computada uma vez na diferença entre o primeiro produto de diferença e o segundo produto de diferença. O primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x. O componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x. O segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv2x. O primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y. O componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y. O segundo componente vertical de vetor de movimento de ponto de controle é definido como mv2y. A segunda operação de deslocamento de bit pela segunda constante digital no terceiro produto de diferença e no quarto produto de diferença é computada uma vez na diferença entre o terceiro produto de diferença e o quarto produto de diferença. A primeira constante digital, wb, é um número inteiro positivo entre 1 e 7. A segunda constante digital, hb, é um número inteiro positivo entre 1 e 7.
[0134] Alternativamente, outra forma do componente horizontal, mvx, do vetor de movimento do modelo afim de seis parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita como na forma de modelo afim (8) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d x  mv2 x  mv0 x ; d y  mv2 y  mv0 y ; d 10 10 20 20  mv x  (( d 10 x x  off ( d x x , w))  wb )  (( d x y  off ( d x y , h ))  hb )  mv0 x 10 20 20   mv y  (( d y x  off ( d y x, w))  wb)  (( d y y  off ( d y y , h))  hb )  mv0 y 10 10 20 20
[0135] Note que, na forma de modelo afim (8), wb pode ser aplicado duas vezes, isto é, >>wb (um deslocamento à direita por wb) é computado duas vezes; e hb pode ser aplicado duas vezes, isto é, >>hb (um deslocamento à direita por hb) é computado duas vezes.
[0136] A forma de modelo afim (8), que é o modelo afim de seis parâmetros, e além dos elementos comuns, também inclui outras operações descritas aqui. A primeira operação de deslocamento de bit pela primeira constante digital no primeiro produto de diferença é também realizada como parte de uma operação de função desligado (primeiro produto de diferença, w). A primeira operação de deslocamento de bit pela primeira constante digital no segundo produto de diferença é também realizada como parte de uma operação de função desligado (segundo produto de diferença, h). A segunda operação de deslocamento de bit pela segunda constante digital no terceiro produto de diferença é também realizada como parte de uma operação de função desligado (terceiro produto de diferença, w). A segunda operação de deslocamento de bit pela segunda constante digital no quarto produto de diferença é também realizada como parte de uma operação de função desligado (quarto produto de diferença, h). A largura, w, do bloco atual de dados de vídeo, é definida como w= 2wb. A primeira constante digital é wb. A primeira constante digital, wb, é um número inteiro positivo entre 1 e 7. A altura, h, do bloco atual de dados de vídeo, é definida como w=hb. A segunda digital, hb, é um número positivo entre 1 e 7. O primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x. O componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x. O segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv1x. O primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y. O componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y. O segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv1y.
[0137] Alternativamente, ainda outra forma do componente horizontal, mvx, do vetor de movimento do modelo afim de seis parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita como na forma de modelo afim (9) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d x  mv2 x  mv0 x ; d y  mv2 y  mv0 y ; d 10 10 20 20 offw  w  1; offh  h  1;  mv x  sign ( d x10 x )  (( d x10 x  offw)  wb )  sign ( d x20 y )  (( d x20 y  offh )  hb )  mv0 x    mv y  sign ( d y x )  (( d y x  offw )  wb )  sign ( d y y )  (( d y y  offh )  hb )  mv0 y 10 10 20 20
[0138] Note que, na forma de modelo afim (9), wb pode ser aplicado duas vezes, isto é, >>wb (um deslocamento à direita por wb) é computado duas vezes; e hb pode ser aplicado duas vezes, isto é, >>hb (um deslocamento à direita por hb) é computado duas vezes.
[0139] Em outra modalidade, pode ser desejável dividir por uma não potência de dois. Por exemplo, supondo que a largura de bloco w e/ou altura h seja qualquer número inteiro que pode ser diferente de 2wb, em que m é um número inteiro, uma solução com base em tabela de pesquisa pode ser utilizada para representar o modelo afim. Como um exemplo, o modelo afim de quatro parâmetros pode ser escrito como na forma de modelo afim (10):  mv x  ((( mv1 x  mv0 x ) x  T [ w])  tb )  ((( mv1 y  mv0 y ) y  T [ w])  tb )  mv0 x   mv y  ((( mv1 y  mv0 y ) x  T [ w])  tb )  ((( mv1 x  mv0 x ) y  T [ w])  tb )  mv0 y
[0140] Note que, na forma de modelo afim (10), tb pode ser aplicado quatro vezes, isto é, >>tb (um deslocamento à direita por tb) é computado quatro vezes.
[0141] A forma de modelo afim (10), que é o modelo afim de quatro parâmetros com uma divisão por um número que não é uma potência de 2, e além dos elementos comuns, também inclui outras operações descritas aqui. Antes da primeira operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w ao longo de uma largura ou uma altura do bloco atual de dados de vídeo, T[w]. T[w] é multiplicado pelo primeiro produto de diferença, e T[w] é também multiplicado pelo segundo produto de diferença, então, a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no primeiro produto de diferença multiplicado por T[w]. A primeira operação de deslocamento de bit pela primeira constante digital é aplicada no segundo produto de diferença multiplicado por T[w]. Antes da segunda operação de deslocamento de bit, o T[w] multiplicado pelo primeiro produto de diferença e o T[w] multiplicado pelo segundo produto de diferença são usados, então, a segunda operação de deslocamento de bit pela segunda constante digital é aplicada no segundo produto de diferença multiplicado por T[w].
[0142] A segunda operação de deslocamento de bit pela segunda constante digital é aplicada no primeiro produto de diferença multiplicado por T[w], e em que a primeira constante digital e a segunda constante digital são um mesmo valor, e a primeira constante digital, tb, é um número inteiro positivo entre 1 e 7.
[0143] O primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x. O componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x. O primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y. O componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y. A segunda diferença e a terceira diferença pode ser um valor equivalente. A primeira diferença e a quarta diferença podem ser um valor equivalente.
[0144] Alternativamente, outra forma do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita na forma (11) abaixo:  mv x  (((( mv1 x  mv0 x ) x  ( mv1 y  mv0 y ) y )  T [ w])  tb )  mv0 x   mv y  (((( mv1 y  mv0 y ) x  ( mv1 x  mv0 x ) y )  T [ w])  tb )  mv0 y
[0145] Note que, na forma de modelo afim (11), tb pode ser aplicado duas vezes, isto é, >>tb (um deslocamento à direita por tb) é computado duas vezes.
[0146] A forma de modelo afim (11) é o modelo afim de quatro parâmetros com uma divisão por um número que não é uma potência de 2, e além dos elementos comuns, também inclui outras operações descritas aqui. Antes da primeira operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma largura do bloco atual de dados de vídeo, T[w]. T[w] é multiplicado pela diferença entre o primeiro produto de diferença e o segundo produto de diferença, e, então, a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no primeiro produto de diferença e no segundo produto de diferença multiplicado por T[w]. Antes da segunda operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma altura do bloco atual de dados de vídeo, T[w]. T[w] é multiplicado pela diferença entre o terceiro produto de diferença e o quarto produto de diferença. A segunda operação de deslocamento de bit pela segunda constante digital é aplicada no terceiro produto de diferença e no quarto produto de diferença multiplicado por T[w]. A primeira constante digital e a segunda constante digital são um mesmo valor, e a primeira constante digital, tb, é um número inteiro positivo entre 1 e 7.
[0147] O primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x. O componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x. O primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y. O componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y. A segunda diferença e a terceira diferença podem ser um valor equivalente. A primeira diferença e a quarta diferença podem ser um valor equivalente.
[0148] Alternativamente, ainda outra forma do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros podem ser reescritas como na forma de modelo afim (12) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d 10 10  mv x  (( d 10 x x  T [ w]  off ( d x x , 2 ))  tb )  (( d y y  T [ w]  off ( d y y , 2 ))  tb )  mv0 x 10 tb 10 10 tb   mv y  (( d y x  T [ w]  off ( d y x, 2 ))  tb )  (( d x y  T [ w]  off ( d x y , 2 ))  tb )  mv0 y 10 10 tb 10 10 tb
[0149] Note que, na forma de modelo afim (12), tb pode ser aplicado quatro vezes, isto é, >>tb (um deslocamento à direita por tb) é computado quatro vezes.
[0150] Alternativamente, uma forma adicional do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita como na forma de modelo afim (13) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d 10 10 offt  2tb  1  mv x  sign ( d x10 x )  (( d 10 x x  T [ w ]  offt )  tb )  sign ( d y y )  (( d y y  T [ w ]  offt )  tb )  mv0 x 10 10    mv y  sign ( d y x )  (( d y x  T [ w]  offt )  tb )  sign ( d x y )  (( d x y  T [ w]  offt )  tb )  mv0 y 10 10 10 10
[0151] Note que, na forma de modelo afim (13), tb pode ser aplicado quatro vezes, isto é, >>tb (um deslocamento à direita por tb) é computado quatro vezes.
[0152] Alternativamente, outra forma adicional do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita como na forma de modelo afim
(14) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d 10 10  mv x  ((( d 10 x x  d y y )  T [ w]  off ( d x x  d y y , 2 ))  tb )  mv0 x 10 10 10 tb   mv y  ((( d y x  d x y )  T [ w]  off ( d y x  d x y , 2 ))  tb )  mv0 y 10 10 10 10 tb
[0153] Note que, na forma de modelo afim (14), tb pode ser aplicado duas vezes, isto é, >>tb (um deslocamento à direita por tb) é computado duas vezes.
[0154] Alternativamente, outra forma adicional do componente horizontal, mvx, do vetor de movimento do modelo afim de quatro parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de quatro parâmetros pode ser reescrita como na forma de modelo afim (15) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; offt  2 d 10  1 10 tb  mv x  Sign ( d x10 x  d 10 y y )  (( d x x  d y y  T [ w ]  offt )  tb )  mv0 x 10 10    mv y  Sign ( d y x  d x y )  (( d y x  d x y  T [ w]  offt )  tb )  mv0 y 10 10 10 10
[0155] Note que, na forma de modelo afim (15), tb pode ser aplicado duas vezes, isto é, >>tb (um deslocamento à direita por tb) é computado duas vezes.
[0156] Em uma modalidade diferente, o componente horizontal, mvx, do vetor de movimento do modelo afim de seis parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de seis parâmetros podem ser reescritos como na forma de modelo afim (16) abaixo: 𝑚𝑣 𝑚𝑣 𝑚𝑣 𝑥 𝑇𝑤 ≫ 𝑡𝑏 𝑚𝑣 𝑚𝑣 𝑦 𝑇ℎ ≫ 𝑡𝑏 𝑚𝑣 𝑚𝑣 𝑚𝑣 𝑚𝑣 𝑥 𝑇𝑤 ≫ 𝑡𝑏 𝑚𝑣 𝑚𝑣 𝑦 𝑇ℎ ≫ 𝑡𝑏 𝑚𝑣
[0157] Note que, na forma de modelo afim (16), tb pode ser aplicado quatro vezes, isto é, >>tb (um deslocamento à direita por tb) é computado quatro vezes.
[0158] A forma de modelo afim (16), que é o modelo afim de seis parâmetros com uma divisão por um número que não é uma potência de 2, e além dos elementos comuns, também inclui outras operações descritas aqui. Antes da primeira operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w ao longo de uma largura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pelo primeiro produto de diferença, e T é lido em uma localização de pixel h ao longo de uma altura do bloco atual de dados de vídeo, T[h].
[0159] T[h] é multiplicado pelo segundo produto de diferença, então, a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no primeiro produto de diferença multiplicado por T[w]. A primeira operação de deslocamento de bit pela primeira constante digital é aplicada no segundo produto de diferença multiplicado por T[h]. Antes da segunda operação de deslocamento de bit, T[w] é multiplicado pelo terceiro produto de diferença. T[h] é multiplicado pelo quarto produto de diferença, então, a segunda operação de deslocamento de bit pela primeira constante digital é aplicada no terceiro produto de diferença multiplicado por T[w].
[0160] A segunda operação de deslocamento de bit pela segunda constante digital é aplicada no quarto produto de diferença multiplicado por T[h], e, e a primeira constante digital e a segunda constante digital são a mesma, e a primeira constante digital, tb, é um número positivo entre 1 e 7.
[0161] O primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x. O componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x. O segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv2x. O primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y. O componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y. O segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv2y.
[0162] Alternativamente, outra forma do componente horizontal, mvx, do vetor de movimento do modelo afim de seis parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de seis parâmetros pode ser reescrita como na forma de modelo afim (17) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d x  mv2 x  mv0 x ; d y  mv2 y  mv0 y ; d 10 10 20 20  mv x  (( d x10 x  T [ w]  off ( d x10 x, 2tb ))  tb )  (( d x20 y  T [ h ]  off ( d x20 y , 2tb ))  tb )  mv0 x   mv y  (( d y x  T [ w]  off ( d y x, 2 ))  tb )  (( d y y  T [ h ]  off ( d y y , 2 ))  tb )  mv0 y 10 10 tb 20 20 tb
[0163] Note que, na forma de modelo afim (17), tb pode ser aplicado quatro vezes, isto é, >>tb (um deslocamento à direita por tb) é computado quatro vezes.
[0164] Alternativamente, ainda outra forma do componente horizontal, mvx, do vetor de movimento do modelo afim de seis parâmetros, e componente vertical, mvy, do vetor de movimento do modelo afim de seis parâmetros pode ser reescrita como na forma de modelo afim (18) abaixo: x  mv1 x  mv0 x ; d y  mv1 y  mv0 y ; d x  mv2 x  mv0 x ; d y  mv2 y  mv0 y ; d 10 10 20 20 offt  2tb  1;  mv x  sign ( d x10 x )  (( d 10 x x  T [ w ]  offt )  tb )  sign ( d x y )  (( d x y  T [ h ]  offt )  tb )  mv0 x 20 20    mv y  sign ( d y x )  (( d y x  T [ w]  offt )  tb )  sign ( d y y )  (( d y y  T [ h ]  offt )  tb )  mv0 y 10 10 20 20
[0165] Note que, na forma de modelo afim (18), tb pode ser aplicado quatro vezes, isto é, >>tb (um deslocamento à direita por tb) é computado quatro vezes. Também note que o tamanho da tabela T pode ser quaisquer números inteiros, tais como 16, 32, 64, 128, 256 ou 512. A precisão de tabela tb pode ser qualquer número inteiro, tal como 8, 12, 16, 24, 32.
[0166] Uma pessoa ordinariamente versada na ténica prontamente reconheceria que as várias formas acima podem ser usadas com outras fórmulas que requerem divisão no processo de compensação de movimento afim. Por exemplo, eles podem ser usados para derivar os movimentos para candidato de unificação afim. Eles podem também ser usados para derivar a predição de vetor de movimento para modo inter afim.
[0167] Em uma modalidade diferente, o tamanho de sub-bloco em compensação de movimento afim pode não ser calculado para cada bloco afim em JEM, conforme descrito em
2.1.9. Em vez disso, o tamanho pode ser fixo, tal como 4x4, 4x8, 8x4 ou 8x8. Em outro exemplo, o tamanho pode ser sinalizado do codificador para o decodificador. Por exemplo, a largura e/ou altura do sub-bloco pode ser sinalizado no cabeçalho de SPS/PPS/fatia. Em uma modalidade, o sub-bloco é sempre um quadrado então apenas a largura é sinalizada. Alternativamente, o tamanho de sub- bloco pode ainda depender do tamanho de bloco.
[0168] Em uma modalidade diferente, supõe-se que o tamanho de bloco atual seja wxh, a largura (sw) e altura (sh) do sub-bloco na compensação de movimento afim podem ser ainda determinadas testando a correlação de comparação de vetores de movimento delta e tamanho do bloco atual. Por exemplo, sw e sh podem ser determinados como segue. Fazer tamanho de bloco adaptativo, depende de condições. Condições como max, min e if, elseif mvWx  max{ mv1x  mv0 x , mv1 y  mv0 y } sw=default_sw; se( 8×mvWx < (w<<p)) sw=8; também se( 16×mvWx < (w<<p)) sw=16 sw=min{sw, w}; mvWy  max{ mv2 x  mv0 x , mv2 y  mv0 y } sh= default_sh; se( 8×mvWy < (h<<p)) sh=8; também se( 16×mvWy < (h<<p)) sh=16; sh=min{sh, h};
[0169] Em que p é um desvio de precisão, tal como 0, 1 ou 2, default_sw e default_sh representam a largura e altura padrão para o sub-bloco, respectivamente. Em uma modalidade, é a diferença da precisão de armazenamento de movimento e a precisão de interpolação. A largura e/ou altura padrão para o sub-bloco pode ser predefinida ou sinalizada no fluxo de bits. Mais métodos de predição de vetor de movimento para modelagem afim
[0170] Uma maneira similar à unificação afim para derivar os vetores de movimento do canto esquerdo superior e canto direito acima, como descrito com referência ao Modo de Unificação Afim pode também ser usada para derivar os MVPs para o canto esquerdo superior, o canto direito acima e o canto direito abaixo.
[0171] A Figura 7A ilustra um fluxograma usado para codificação de vídeo com uma ou mais técnicas descritas nesta divulgação. O dispositivo para vídeo codificando um bloco atual de dados de vídeo, o dispositivo inclui um ou mais processadores configurados para computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero 710A. O primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença 715A. O primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo 720A. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle 725A.
[0172] Os um ou mais processadores são também configurados para computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero 730A. O segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença 735A. O terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo 740A. A terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle 745A. Além disso, uma memória é configurada para armazenar um fluxo de bits representando o componente horizontal e componente vertical do vetor de movimento do modelo afim 750A.
[0173] A Figura 7B ilustra um fluxograma usado para decodificação de vídeo com uma ou mais técnicas descritas nesta divulgação. O dispositivo para decodificação de vídeo de um bloco atual de dados de vídeo, o dispositivo inclui um ou mais processadores configurados para computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero 710B. O primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença 715B. O primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo 720B. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle 725B.
[0174] Os um ou mais processadores são também configurados para computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero 730B. O segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença 735B. O terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo 740B. A terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle 745B. Além disso, uma memória é configurada para reconstruir o bloco atual de dados de vídeo 750B.
[0175] A Figura 8 é um diagrama de blocos ilustrando um codificador de vídeo exemplificativo 20 que pode implementar as técnicas descritas nesta divulgação. O codificador de vídeo 20 pode realizar intra- e intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação depende de predição espacial para reduzir ou remover redundância espacial em vídeo dentro de uma determinada imagem ou quardo de vídeo. Intercodificação depende de predição temporal para reduzir ou remover redundância temporal em vídeo dentro de imagens ou quadros adjacentes de uma sequência de vídeo. O modo intra (modo I) pode se referir a qualquer um dos vários modos de compressão de base espacial. Modos inter, tais como predição unidirecional (modo P) ou bi-predição (modo B), podem se referir a qualquer um dos vários modos de compressão de base temporal.
[0176] No exemplo da Figura 8, o codificador de vídeo 20 inclui uma memória de dados de vídeo 33, unidade de particionamento 35, unidade de processamento de predição 41, adicionador 50, unidade de processamento de transformação 52, unidade de quantização 54, unidade de codificação de entropia 56. A unidade de processamento de predição 41, inclui unidade de estimativa de movimento (MEU) 42, unidade de compensação de movimento (MCU) 44 e unidade de predição intra 46. Para reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui unidade de quantização reversa 58, unidade de processamento de transformada inversa 60, adicionador 62, unidade de filtro 64, e buffer de imagem decodificada (DPB) 66.
[0177] Uma ou mais unidades ilustradas dentro do codificador de vídeo 20 podem fazer parte de um Circuito Integrado de Aplicação Específica (ASIC). Alternativamente, ou adicionalmente, uma ou mais unidades ilustradas dentro do codificador de vídeo 20 podem ser implementadas em um processador ou, alternativamente, em outras modalidades, em um ou mais processadores.
[0178] Conforme mostrado na Figura 8, o codificador de vídeo 20 recebe dados de vídeo de uma câmera e armazena os dados de vídeo recebidos juntamente com metadados na memória de dados de vídeo 33. A memória de dados de vídeo 33 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 33 podem ser obtidos, por exemplo, da fonte de vídeo 18. O DPB 66 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso na codificação de dados de vídeo pelo codificador de vídeo 20,
por exemplo, nos modos intra ou intercodificação. A memória de dados de vídeo 33 e DPB 66 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como Memória de Aceso Aleatório Dinâmico (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 33 e DPB 66 podem ser fornecidos por um dispositivo de memória de mesmo valor ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 33 pode estar no chip com outros componentes do codificador de vídeo 20 ou fora do chip em relação a esses componentes.
[0179] A unidade de particionamento 35 recupera os dados de vídeo da memória de dados de vídeo 33 e particiona os dados de vídeo em blocos de vídeo. Esse particionamento também pode incluir particionamento em fatias, mosaicos ou outras unidades maiores, bem como particionamento de bloco de vídeo, por exemplo, de acordo com uma estrutura de árvore quadrada de LCUs e CUs. Por exemplo, em uma modalidade diferente, a unidade de particionamento 35 pode gerar o conjunto de parâmetros de sequência (SPS) e/ou o conjunto de parâmetros de imagem (PPS). O codificador de vídeo 20 geralmente ilustra os componentes que codificam blocos de vídeo dentro de uma fatia de vídeo a ser codificada. A fatia pode ser dividida em vários blocos de vídeo (e possivelmente em conjuntos de blocos de vídeo denominados mosaicos). A unidade de processamento de predição 41 pode selecionar um de uma pluralidade de modos possíveis de codificação, tal como um de uma pluralidade de modos intracodificação ou um de uma pluralidade de modos intercodificação, para o bloco de vídeo atual com base em resultados de erro (por exemplo, taxa de codificação e nível de distorção). A unidade de processamento de predição 41 pode fornecer o bloco intra ou interpredito resultante ao adicionador 50 para gerar dados de bloco residuais, e ao adicionador 62 para reconstruir o bloco codificado para uso como uma imagem de referência.
[0180] A unidade de processamento de predição 41 também pode ser parte de um ou mais processadores que podem ser configurados para operar em um modo de unificação que processa a lista de candidatos para predizer os vetores de movimento do bloco codificado.
[0181] A lista de candidatos pode incluir um candidato de unificação normal com base na seleção de um ou mais vetores de movimento correspondentes ao movimento translacional. Além disso, a lista de candidatos pode incluir um candidato de unificação afim com base na seleção de um ou mais vetores de movimento correspondentes ao movimento afim. Um ou mais candidatos de unificação normal e um ou mais candidatos de unificação afim podem ser usados para construir a lista de candidatos. A lista de candidatos pode se basear em uma ordem de priorização ou uma ordem predefinida de mais de um candidato de unificação afim e mais de um candidato de unificação normal. Em um exemplo, os candidatos de unificação normal e os candidatos de unificação afim podem ser associados a um índice da lista de candidatos. Um índice de unificação pode ser selecionado do índice da lista de candidatos, com base em um custo associado ao candidato de unificação normal ou ao candidato de unificação afim, na lista de candidatos. O codificador de vídeo 20 pode fornecer o índice de unificação em um fluxo de bits.
[0182] Os um ou mais vetores de movimento do candidato selecionado, isto é, o candidato associado ao índice de unificação, podem ser usados para obter um primeiro bloco de predição em uma imagem de referência usada na codificação, se a codificação for com base em predição unidirecional.
[0183] Alternativamente, os um ou mais vetores de movimento do candidato selecionado, isto é, o candidato associado, no modo inter, ao índice de unificação, podem ser usados para obter um primeiro bloco de predição em uma primeira imagem de referência; e um segundo bloco de predição em uma segunda imagem de referência, durante a codificação usando predição bidirecional. Em uma modalidade, o primeiro bloco de predição pode ser o bloco de predição final. Alternativamente, em uma modalidade, o segundo bloco de predição pode ser o bloco de predição final. Ainda em outra modalidade, a predição final pode ser determinada a partir de uma combinação do primeiro bloco de predição e do segundo bloco de predição.
[0184] Além disso, os blocos de predição no modo inter também podem ser baseados em vetores de movimento de blocos candidatos espaciais ou blocos candidatos temporais. Como exemplo, o primeiro bloco de predição e o segundo bloco de predição são obtidos usando vetores de movimento de blocos espacialmente adjacentes. Em outro exemplo, o primeiro bloco de predição e o segundo bloco de predição são obtidos com base em vetores de movimento de blocos candidatos temporalmente adjacentes. Em outro exemplo, os blocos candidatos adjacentes estão dentro do grupo de um mesmo valor: fatia ou mosaico ou LCU ou ROW ou figura.
[0185] Em outro exemplo, os blocos candidatos adjacentes estão localizados em um ou mais quadros previamente codificados. Além disso, o primeiro bloco de predição herda informações de movimento do bloco candidato adjacente, e a posição relativa dos blocos candidatos adjacentes é predefinida. Além disso, o segundo bloco de predição é obtido com base nas informações de movimento de um bloco candidato adjacente, de acordo com uma regra predeterminada.
[0186] A unidade de intrapredição 46 dentro da unidade de processamento de predição 41 pode realizar codificação intrapreditiva do bloco de vídeo atual em relação a um ou mais blocos adjacentes ou amostras em um quadro ou fatia de mesmo valor que o bloco atual a ser codificado para fornecer compressão espacial.
[0187] Existe uma unidade de estimativa de movimento 42 que pode ser usada em conjunto com a unidade de compensação de movimento 44 dentro da unidade de processamento de predição 41 e pode executar a codificação interpreditiva do bloco de vídeo atual em relação a um ou mais blocos preditivos em uma ou mais imagens de referência para fornecer compressão temporal.
[0188] A unidade de estimativa de movimento 42 pode ser configurada para determinar o vetor de movimento de um bloco de vídeo de acordo com um padrão predeterminado para uma sequência de vídeo. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estima o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de uma imagem ou quadro de vídeo atual em relação a um bloco preditivo dentro de uma imagem de referência.
[0189] Um bloco preditivo é um bloco que corresponde à PU do bloco de vídeo a ser codificado em termos de diferença de pixel, que pode ser determinada pela soma de diferença absoluta (SAD), soma de diferença quadrada (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel subinteiro de imagens de referência armazenadas no DPB 66.
[0190] Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições de pixel fracionárias da imagem de referência. Portanto, a unidade de estimativa de movimento 42 pode realizar uma pesquisa de movimento em relação às posições de pixels completas e posições de pixel fracionárias e gerar um vetor de movimento com precisão de pixel fracionada.
[0191] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência.
[0192] A imagem de referência pode ser selecionada de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas em DPB 66. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e unidade de compensação de movimento 44.
[0193] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pela estimativa de movimento, possivelmente executando interpolações com precisão de subpixel. Ao receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma das listas de imagens de referência. O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel. Os valores de diferença de pixel formam dados residuais para o bloco e podem incluir os componentes de diferença de luma e croma. O adicionador 50 representa o componente ou componentes que executam essa operação de subtração. A unidade de compensação de movimento 44 também pode gerar elementos de sintaxe associados aos blocos de vídeo e à fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0194] Após a unidade de processamento de predição 41 gerar o bloco preditivo final para o bloco de vídeo atual, através do modo de intrapredição ou modo de interpredição, o codificador de vídeo 20 forma um bloco de vídeo residual subtraindo o bloco preditivo do bloco de vídeo atual. Os dados de vídeo residuais no bloco residual podem ser incluídos em uma ou mais TUs e aplicados para transformar a unidade de processamento 52. A unidade de processamento de transformada 52 transforma os dados de vídeo residuais em coeficientes de transformação residuais usando uma transformada, tal como uma transformada discreta de cosseno (DCT) ou uma transformada conceitualmente semelhante. A unidade de processamento de transformada 52 pode converter os dados de vídeo residuais de um domínio de pixel em um domínio de transformação, tal como um domínio de frequência.
[0195] A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformada para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode executar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Em outro exemplo, a unidade de codificação de entropia 56 pode realizar a varredura.
[0196] Após a quantização, a unidade de codificação de entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação de entropia 56 pode realizar codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia. Após a codificação de entropia pela unidade de codificação de entropia 56, o fluxo de bits codificado pode ser transmitido ao decodificador de vídeo 30 ou arquivado para transmissão ou recuperação posterior pelo decodificador de vídeo 30. A unidade de codificação de entropia 56 também pode codificar por entropia os vetores de movimento e os outros elementos de sintaxe para a fatia de vídeo atual sendo codificada.
[0197] A unidade de quantização inversa 58 e a unidade de processamento de transformada inversa 60 aplicam quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel para uso posterior como bloco de referência de uma imagem de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando o bloco residual a um bloco preditivo de uma das imagens de referência dentro de uma das listas de imagens de referência. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel subinteiros para uso na estimativa de movimento. O adicionador 62 adiciona o bloco residual reconstruído ao bloco de predição de compensação de movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco reconstruído.
[0198] Os vetores de movimento calculados enviados pela unidade de estimativa de movimento 42 à unidade de codificação de entropia 56 e unidade de compensação de movimento 44, podem corresponder a um modelo afim como discutido acima. Com relação à codificação, um dispositivo para vídeo codificando um bloco atual de dados de vídeo, usando divisão por uma ou mais constantes digitais para um modelo afim em codificação de vídeo, pode incluir um ou mais processadores. Os um ou mais processadores podem ser configurados para computar um componente horizontal de um vetor de movimento do modelo afim, se o modelo afim for um modelo afim de quatro parâmetros, com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença, e inclui adicionar um resultado da primeira operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero. O primeiro produto de diferença inclui multiplicar uma primeira diferença por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e o segundo produto de diferença inclui multiplicar uma segunda diferença por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0199] Ao contrário, se o modelo afim for um modelo afim de seis parâmetros, os um ou mais processadores podem ser configurados para computar um componente horizontal de um vetor de movimento do modelo afim, com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença e inclui adicionar o resultado da primeira operação de deslocamento de bit ao componente horizontal de vetor de movimento de ponto de controle zero. O primeiro produto de diferença inclui multiplicar uma primeira diferença pela localização de pixel horizontal dentro do bloco atual de dados de vídeo, e o segundo produto de diferença inclui multiplicar uma segunda diferença pela localização de pixel horizontal dentro do bloco atual de dados de vídeo. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle, e a segunda diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um segundo vetor de movimento de ponto de controle. Além disso, os um ou mais processadores podem ser configurados para computar um componente vertical de um vetor de movimento do modelo afim, se o modelo afim for o modelo afim de quatro parâmetros, com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença e um quarto produto de diferença, e inclui adicionar um resultado da segunda operação de deslocamento de bit ao componente vertical de vetor de movimento de ponto de controle zero.
[0200] O terceiro produto de diferença inclui multiplicar uma terceira diferença por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e o quarto produto de diferença inclui multiplicar uma quarta diferença por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e em que a terceira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle, e a quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0201] Ao contrário, se o modelo afim for o modelo afim de seis parâmetros, os um ou mais processadores são configurados para computar um componente vertical de um vetor de movimento do modelo afim, se o modelo afim, com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença e um quarto produto de diferença e inclui adicionar o resultado da segunda operação de deslocamento de bit ao componente vertical de vetor de movimento de ponto de controle zero.
[0202] O terceiro produto de diferença inclui multiplicar uma terceira diferença pela localização de pixel horizontal dentro do bloco atual de dados de vídeo, e o quarto produto de diferença inclui multiplicar uma quarta diferença por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle, e a quarta diferença é com base na diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um segundo vetor de movimento de ponto de controle. O dispositivo para codificação pode também incluir uma memória configurada para armazenar um fluxo de bits representando o componente horizontal e o componente vertical do vetor de movimento do modelo afim, em que o modelo afim é o modelo afim de quatro parâmetros ou o modelo afim de seis parâmetros.
[0203] A terceira diferença do modelo afim de quatro parâmetros é a segunda diferença do modelo afim de quatro parâmetros multiplicada por menos 1. A quarta diferença do modelo afim de quatro parâmetros é a primeira diferença do modelo afim de quatro parâmetros.
[0204] O componente horizontal de vetor de movimento de ponto de controle zero, o primeiro componente horizontal de vetor de movimento de ponto de controle, o segundo componente horizontal de vetor de movimento de ponto de controle, o componente vertical de vetor de movimento de ponto zero, o primeiro componente vertical de vetor de movimento de ponto de controle, e o segundo vetor de movimento de ponto de controle são, cada um, deslocados em bits por um número inteiro.
[0205] Outras modalidades para diferentes formas de modelos afim (descrito acima) podem também ser implementadas no codificador de vídeo 20. Para fins de esclarecimento, as informações descritas acima com relação às inúmeras formas afins não são repetidas aqui.
[0206] A unidade de filtro 64 filtra o bloco reconstruído (por exemplo, a saída do adicionador 62) e armazena o bloco reconstruído filtrado no DPB 66 para utilização como bloco de referência. O bloco de referência pode ser usado pela unidade de estimativa de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para interpredizer um bloco em um quadro ou imagem de vídeo subsequente. A unidade de filtro 64 pode realizar qualquer tipo de filtragem, tal como filtragem de desbloqueio, filtragem SAO, ALF e/ou GALF, e/ou outros tipos de filtros de loop. Um filtro de desbloqueio pode, por exemplo, aplicar filtragem de desbloqueio para filtrar os limites de bloco para remover artefatos de bloqueio do vídeo reconstruído. Um filtro SAO pode aplicar desvios a valores de pixel reconstruídos a fim de melhorar a qualidade geral da codificação. Filtros de loop adicionais (em loop ou pós-loop) também podem ser usados.
[0207] A Figura 9 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo 30 que pode ser implementado com as técnicas descritas nesta divulgação. O decodificador de vídeo 30 da Figura 9 pode, por exemplo, ser configurado para receber a sinalização descrita acima com relação ao codificador de vídeo 20 da Figura 8. No exemplo da Figura 9, o decodificador de vídeo 30 inclui memória de dados de vídeo 78, unidade de decodificação de entropia 80, unidade de processamento de predição 81, unidade de quantização inversa 86, unidade de processamento de transformada inversa 88, adicionador 90 e DPB 94. A unidade de processamento de predição 81 inclui unidade de compensação de movimento 82 e a unidade de intrapredição 84. O decodificador de vídeo 30 pode, em algumas exemplos, realizar um passo de decodificação geralmente recíproco ao passo de codificação descrito com relação ao codificador de vídeo 20.
[0208] Uma ou mais unidades ilustradas dentro do decodificador de vídeo 30 podem fazer parte de um Circuito Integrado de Aplicação Específica (ASIC). Alternativamente, ou adicionalmente, uma ou mais unidades ilustradas dentro do decodificador de vídeo 30 podem ser implementadas em um processador ou, alternativamente, em outras modalidades em um ou mais processadores.
[0209] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados do codificador de vídeo 20. O decodificador de vídeo 30 armazena o fluxo de bits de vídeo codificado recebido na memória de dados de vídeo 78. A memória de dados de vídeo 78 pode armazenar dados de vídeo, tais como um fluxo de bits de vídeo codificado, a ser decodificado pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 78 podem ser obtidos, por exemplo, através do link 16, do dispositivo de armazenamento 26 ou de uma fonte de vídeo local, tal como uma câmera, ou acessando meios de armazenamento de dados físicos. Memória de dados de vídeo 78 pode formar um buffer de imagem codificada (CPB) que armazena dados de vídeo codificados de um fluxo de bits de vídeo codificado. O DPB 94 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso na decodificação de dados de vídeo pelo decodificador de vídeo 30, por exemplo, nos modos de intra ou intercodificação. A memória de dados de vídeo 78 e DPB 94 podem ser formados por vários dispositivos de memória, tais como DRAM, SDRAM,
MRAM, RRAM ou outros tipos de dispositivos de memória. A memória de dados de vídeo 78 e DPB 94 podem ser fornecidos por um dispositivo de memória de mesmo valor ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 78 pode estar no chip com outros componentes do decodificador de vídeo 30 ou fora do chip em relação a esses componentes.
[0210] A unidade de decodificação de entropia 80 do decodificador de vídeo 30 decodifica por entropia os dados de vídeo armazenados na memória de dados de vídeo 78 para gerar coeficientes quantizados, vetores de movimento e outros elementos de sintaxe. A unidade de decodificação de entropia 80 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de processamento de predição 81. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.
[0211] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 84 da unidade de processamento de predição 81 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base no modo de intrapredição sinalizado e dados de blocos anteriormente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (por exemplo, fatia B ou fatia P), a unidade de compensação de movimento 82 da unidade de processamento de predição 81 produz um bloco preditivo final para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 80. Os blocos preditivos finais podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência.
[0212] A unidade de processamento de predição 81 também pode ser parte de um ou mais processadores que podem ser configurados para operar em um modo de unificação que processa a lista de candidatos.
[0213] Nesse modo, os um ou mais processadores podem ser configurados para receber um ou mais bits, no fluxo de bits, que representam um indicador, e indicam que o bloco atual codificado de dados de vídeo foi codificado com base em um lista de candidatos que inclui candidatos de vetor de movimento com base em um ou mais vetores de movimento translacional, e candidatos de vetor de movimento com base em um ou mais vetores de movimento afim. Os um ou mais processadores podem ser configurados para receber também um índice de unificação que indica qual candidato na lista de candidatos. A construção pode ser de uma lista de candidatos que compreende candidatos de unificação normal ou candidatos de unificação afim ou, em algumas modalidades, ambos. Ou seja, o decodificador de vídeo também pode construir a lista de candidatos com base em blocos de candidatos adjacentes. O decodificador pode, emtão, selecionar um ou mais vetores de movimento de um candidato da lista de candidatos, com base no índice de unificação, em que o candidato tem um ou mais dos vetores de movimento correspondentes aos vetores de movimento de translação ou vetores de movimento afim dentro da lista de candidatos. Além disso, o decodificador de vídeo pode determinar, com base nos um ou mais vetores de movimento selecionados da lista de candidatos, um bloco preditivo de dados de vídeo. O bloco preditivo pode ser um bloco de predição gerado final mencionado acima, e reconstruir o bloco atual de dados de vídeo com base no bloco preditivo de dados de vídeo. O bloco atual reconstruído de dados de vídeo pode ser armazenado em uma memória, por exemplo, DBP
94.
[0214] A unidade de processamento de predição 81 pode fazer parte de um ou mais processadores que podem ser configurados para reconstruir o bloco atual de dados de vídeo e pode ser reconstruída com base em blocos de predição usando os vetores de movimento do candidato de unificação normal candidato de unificação afim na lista de candidatos.
[0215] Além disso, os vetores de movimento usados para predição também podem ser de blocos candidatos adjacentes espaciais ou temporais. Como exemplo, um primeiro bloco de predição e um segundo bloco de predição são gerados usando vetores de movimento de blocos candidatos adjacentes. Em outro exemplo, o primeiro bloco de predição e o segundo bloco de predição são gerados usando vetores de movimento do bloco espacialmente adjacente. Em outro exemplo, o primeiro bloco de predição e o segundo bloco de predição são gerados usando blocos temporalmente adjacentes. Em outro exemplo, os blocos adjacentes estão dentro do grupo de um mesmo valor: fatia, ou mosaico ou LCU ou ROW ou figura.
[0216] Os vetores de movimento podem ser calculados como parte de um modelo afim. O decodificador de vídeo 30 pode decodificar um bloco atual de dados de vídeo,
usando divisão por uma ou mais constantes digitais para um modelo afim em codificação de vídeo. O decodificador de vídeo 30 pode incluir um ou mais processadores configurados para computar um componente horizontal de um vetor de movimento do modelo afim, se o modelo afim for um modelo afim de quatro parâmetros, com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença, e inclui adicionar um resultado da primeira operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero. O primeiro produto de diferença inclui multiplicar uma primeira diferença por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e o segundo produto de diferença inclui multiplicar uma segunda diferença por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle. A segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0217] Ao contrário, se o modelo afim for um modelo afim de seis parâmetros, os um ou mais processadores podem ser configurados para computar um componente horizontal de um vetor de movimento do modelo afim, com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença e inclui adicionar o resultado da primeira operação de deslocamento de bit ao componente horizontal de vetor de movimento de ponto de controle zero. O primeiro produto de diferença inclui multiplicar uma primeira diferença pela localização de pixel horizontal dentro do bloco atual de dados de vídeo, e o segundo produto de diferença inclui multiplicar uma segunda diferença pela localização de pixel horizontal dentro do bloco atual de dados de vídeo. A primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle, e a segunda diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um segundo vetor de movimento de ponto de controle. Além disso, os um ou mais processadores podem ser configurados para computar um componente vertical de um vetor de movimento do modelo afim, se o modelo afim for o modelo afim de quatro parâmetros, com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença e um quarto produto de diferença, e inclui adicionar um resultado da segunda operação de deslocamento de bit ao componente vertical de vetor de movimento de ponto de controle zero.
[0218] O terceiro produto de diferença inclui multiplicar uma terceira diferença por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e o quarto produto de diferença inclui multiplicar uma quarta diferença por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e em que a terceira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle, e a quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
[0219] Ao contrário, se o modelo afim for o modelo afim de seis parâmetros, os um ou mais processadores são configurados para computar um componente vertical de um vetor de movimento do modelo afim, se o modelo afim, com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença e um quarto produto de diferença e inclui adicionar o resultado da segunda operação de deslocamento de bit ao componente vertical de vetor de movimento de ponto de controle zero.
[0220] O terceiro produto de diferença inclui multiplicar uma terceira diferença pela localização de pixel horizontal dentro do bloco atual de dados de vídeo, e o quarto produto de diferença inclui multiplicar uma quarta diferença por uma localização de pixel vertical dentro do bloco atual de dados de vídeo. A terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle, e a quarta diferença é com base em diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um segundo vetor de movimento de ponto de controle. O dispositivo para codificar pode também incluir uma memória configurada para armazenar um fluxo de bits representando o componente horizontal e componente vertical do vetor de movimento do modelo afim, em que o modelo afim é o modelo afim de quatro parâmetros ou o modelo afim de seis parâmetros.
[0221] A terceira diferença do modelo afim de quatro parâmetros é a segunda diferença do modelo afim de quatro parâmetros multiplicada por menos 1. A quarta diferença do modelo afim de quatro parâmetros é a primeira diferença do modelo afim de quatro parâmetros.
[0222] O componente horizontal de vetor de movimento de ponto de controle zero, o primeiro componente horizontal de vetor de movimento de ponto de controle, o segundo componente horizontal de vetor de movimento de ponto de controle, o componente vertical de vetor de movimento de ponto zero, o primeiro componente vertical de vetor de movimento de ponto de controle, e o segundo vetor de movimento de ponto de controle são, cada um, deslocados em bit por um número inteiro.
[0223] Outras modalidades para diferentes formas de modelos afim (descritos acima) podem também ser implementadas no decodificador de vídeo 30. Para fins de clareza, as informações descritas acima com relação às várias formas afim não são repetidas aqui.
[0224] O decodificador de vídeo 30 pode construir as listas de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas no DPB 94.
[0225] A unidade de quantização inversa 86 quantiza inversamente, isto é, desquantiza, os coeficientes de transformada quantizados providos no fluxo de bits e decodificados pela unidade de decodificação de entropia 80. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado. A unidade de processamento de transformada inversa 88 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada de número inteiro inversa ou um processo de transformada inversa conceitualmente semelhante, aos coeficientes de transformada, a fim de produzir blocos residuais no domínio de pixel.
[0226] Após a unidade de processamento de predição 81 gerar o bloco preditivo para o bloco de vídeo atual usando, por exemplo, intra ou interpredição, o decodificador de vídeo 30 forma um bloco de vídeo reconstruído, somando os blocos residuais da unidade de processamento de transformada inversa 88 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 82. O adicionador 90 representa o componente ou componentes que executam essa operação de adição.
[0227] A unidade de filtro 92 filtra o bloco reconstruído (por exemplo, a saída do adicionador 90) e armazena o bloco reconstruído filtrado no DPB 94 para utilização como um bloco de referência. O bloco de referência pode ser usado pela unidade de compensação de movimento 82 como um bloco de referência para interpredizer um bloco em um quadro ou imagem de vídeo subsequente. A unidade de filtro 92 pode realizar qualquer tipo de filtragem, tal como filtragem de desbloqueio, filtragem SAO, ALF e/ou GALF, e/ou outros tipos de filtros de loop.
Um filtro de desbloqueio pode, por exemplo, aplicar filtragem de desbloqueio para filtrar os limites de bloco para remover artefatos de bloqueio do vídeo reconstruído. Um filtro SAO pode aplicar desvios a valores de pixel reconstruídos para melhorar a qualidade geral da codificação. Filtros de loop adicionais (em loop ou pós- loop) também podem ser usados.
[0228] Uma pessoa ordinariamente versada na técnica reconheceria que, dependendo do exemplo, certos atos ou eventos de qualquer um dos métodos descritos aqui podem ser executados em uma sequência diferente, podem ser adicionados, unificados ou excluídos completamente (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática do método). Além disso, em certos exemplos, os atos ou eventos podem ser executados simultaneamente, por exemplo, através de processamento multiencadeado, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[0229] Os vários blocos lógicos, módulos, circuitos e etapas de algoritmo ilustrativos descritos em conexão com os exemplos aqui divulgados podem ser implementados como hardware eletrônico, software de computador ou combinações de ambos. Para ilustrar claramente essa permutabilidade de hardware e software, vários componentes, blocos, módulos, circuitos e etapas ilustrativos foram descritos acima geralmente em termos de funcionalidade. Se essa funcionalidade for implementada como hardware ou software depende das restrições específicas de aplicação e projeto impostas ao sistema geral. Versados na técnica podem implementar a funcionalidade descrita de várias maneiras para cada aplicação em particular, mas essas decisões de implementação não devem ser interpretadas como um afastamento do escopo da presente divulgação.
[0230] Como usado aqui, o termo “codificação” refere-se a codificação ou decodificação. Em modalidades usando as várias formas de codificação, um codificador de vídeo pode codificar codificando um fluxo de bits de vídeo usando um ou mais dos recursos acima e um decodificador de vídeo pode codificar decodificando esse fluxo de bits codificado.
[0231] As técnicas descritas aqui podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Essas técnicas podem ser implementadas em qualquer um de vários dispositivos, tais como computadores de uso geral, aparelhos de dispositivo de comunicação sem fio ou dispositivos de circuito integrado com vários usos, incluindo aplicação em aparelhos de dispositivo de comunicação sem fio e outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implementados juntos em um dispositivo lógico integrado ou separadamente como dispositivos lógicos discretos, mas interoperáveis. Se implementado em software, as técnicas podem ser realizadas, pelo menos em parte, por um meio de armazenamento de dados legível por computador, compreendendo código de programa, incluindo instruções que, quando executadas, realizam um ou mais dos métodos descritos acima. O meio de armazenamento de dados legível por computador pode fazer parte de um produto de programa de computador, que pode incluir materiais de embalagem. O meio legível por computador pode compreender memória ou meio de armazenamento de dados, tal como memória de acesso aleatório (RAM), tal como memória de acesso aleatório dinâmica síncrona (SDRAM), memória somente de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória somente de leitura programável e apagável eletricamente (EEPROM), memória FLASH, meio magnético ou óptico de armazenamento de dados e semelhantes. As técnicas, adicionalmente ou alternativamente, podem ser realizadas pelo menos em parte por um meio de comunicação legível por computador que transporta ou comunica código de programa na forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador, como ondas ou sinais propagados.
[0232] O código do programa, ou instruções, pode ser executado por um processador, que pode incluir um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), matrizes lógicas programáveis em campo (FPGAs) ou outro circuito lógico integrado ou discreto equivalente. Esse processador pode ser configurado para executar qualquer uma das técnicas descritas nesta divulgação. Um processador de uso geral pode ser um microprocessador; mas, em alternativa, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador também pode ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo DSP ou qualquer outra configuração. Por conseguinte, o termo “processador”, como aqui utilizado, pode se referir a qualquer estrutura anterior, a qualquer combinação da estrutura anterior ou a qualquer outra estrutura ou aparelho adequado para a implementação das técnicas descritas aqui. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de software dedicados ou módulos de hardware configurados para codificação e decodificação, ou incorporados em um codificador-decodificador de vídeo combinado (CODEC).
[0233] As técnicas de codificação discutidas aqui podem ser concretizadas em um sistema de codificação e decodificação de vídeo exemplificativo. Um sistema inclui um dispositivo de origem que fornece dados de vídeo codificados a serem decodificados posteriormente por um dispositivo de destino. Em particular, o dispositivo de origem fornece os dados de vídeo ao dispositivo de destino por um meio legível por computador. O dispositivo de origem e o dispositivo de destino podem compreender qualquer um de uma ampla variedade de dispositivos, incluindo computadores de mesa, notebooks (isto é, laptops), tablets, set-top boxes, aparelhos de telefone, tais como os chamados telefones “inteligentes”, os chamados “smart” pads, televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de transmissão de vídeo ou similares. Em alguns casos, o dispositivo de origem e o dispositivo de destino podem ser equipados para comunicação sem fio.
[0234] O dispositivo de destino pode receber os dados de vídeo codificados a serem decodificados pelo meio legível por computador. O meio legível por computador pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem para o dispositivo de destino. Em um exemplo, o meio legível por computador pode compreender um meio de comunicação para permitir que o dispositivo de origem transmita dados de vídeo codificados diretamente para o dispositivo de destino em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos ao dispositivo de destino. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações de base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem ao dispositivo de destino.
[0235] Em alguns exemplos, os dados codificados podem ser enviados da interface de saída para um dispositivo de armazenamento. Da mesma forma, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente, tais como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem. O dispositivo de destino pode acessar dados de vídeo armazenados no dispositivo de armazenamento por meio de fluxo contínuo ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir tais dados de vídeo codificados ao dispositivo de destino. Exemplo de servidores de arquivos incluem um servidor da web (por exemplo, para um site), um servidor FTP, dispositivos de armazenamento conectados à rede (NAS) ou uma unidade de disco local. O dispositivo de destino pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo etc.) ou uma combinação dos dois que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do dispositivo de armazenamento pode ser uma transmissão de fluxo contínuo, uma transmissão de download ou uma combinação dos mesmos.
[0236] As técnicas desta divulgação não são necessariamente limitadas a aplicações ou configurações sem fio. Em um exemplo, o dispositivo de origem inclui uma fonte de vídeo, um codificador de vídeo e uma interface de saída. O dispositivo de destino pode incluir uma interface de entrada, um decodificador de vídeo e um dispositivo de exibição. O codificador de vídeo do dispositivo de origem pode ser configurado para aplicar as técnicas aqui divulgadas. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo de origem pode receber dados de vídeo de uma fonte de vídeo externa, tal como uma câmera externa. Da mesma forma, o dispositivo de destino pode fazer interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0237] A fonte de vídeo pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo previamente capturado e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como alternativa adicional, a fonte de vídeo pode gerar dados baseados em gráficos de computador como o vídeo de origem ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo for uma câmera de vídeo, o dispositivo de origem e o dispositivo de destino podem formar os chamados telefones com câmera ou telefones com vídeo. Conforme mencionado acima, no entanto, as técnicas descritas nesta divulgação podem ser aplicáveis à codificação de vídeo em geral. As técnicas podem ser aplicadas a aplicações sem fio e/ou com fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo. As informações de vídeo codificadas podem, então, ser enviadas pela interface de saída para o meio legível por computador.
[0238] As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um chipset). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0239] As implementações particulares da presente divulgação são descritas abaixo com referência aos desenhos. Na descrição, características comuns são designadas por números de referência comuns ao longo dos desenhos. Como usado aqui, várias terminologias são usadas com o objetivo de descrever implementações específicas apenas e não pretendem ser limitantes. Por exemplo, as formas singulares “um/a” e “o/a” também pretendem incluir as formas plurais, a menos que o contexto indique claramente o contrário. Pode ser adicionalmente compreendido do que os termos “compreender”, “compreende” e “compreendendo” podem ser usados de forma intercambiável com “incluir”, “inclui” ou “incluindo”. Além disso, será entendido que o termo “em que” pode ser usado de forma intercambiável com “onde”. Como usado aqui, “exemplificativo” pode indicar um exemplo, uma implementação e/ou um aspecto, e não deve ser interpretado como limitante ou como indicando uma preferência ou implementação preferida. Como usado aqui, um termo ordinal (por exemplo, “primeiro”, “segundo”, “terceiro” etc.) usado para modificar um elemento, tal como uma estrutura, um componente, uma operação etc., por si só não indica qualquer prioridade ou ordem do elemento com respeito a outro elemento, mas apenas distingue o elemento de outro elemento com o mesmo nome (mas para uso do termo ordinal). Como usado aqui, o termo “conjunto” refere-se a um agrupamento de um ou mais elementos, e o termo “pluralidade” refere-se a vários elementos.
[0240] Como usado acima, “acoplado” pode incluir “comunicativamente acoplado”, “eletricamente acoplado” ou “fisicamente acoplado”, e também pode (ou alternativamente) utilizar quaisquer combinações dos mesmos. Dois dispositivos (ou componentes) podem ser acoplados (por exemplo, comunicativamente acoplados, eletricamente acoplados ou fisicamente acoplados) direta ou indiretamente por meio de um ou mais outros dispositivos, componentes, fios, barramentos, redes (por exemplo, uma rede com fio, uma rede sem fio, ou uma combinação dos mesmos) etc. Dois dispositivos (ou componentes) que são eletricamente acoplados podem ser incluídos em um dispositivo de mesmo valor ou em dispositivos diferentes e podem ser conectados através de componentes eletrônicos, um ou mais conectores ou acoplamento indutivo, como exemplos ilustrativos e não limitantes. Em algumas implementações, dois dispositivos (ou componentes) que são comunicativamente acoplados, tal como em comunicação elétrica, podem enviar e receber sinais elétricos (sinais digitais ou sinais analógicos) direta ou indiretamente, tal como através de um ou mais fios, barramentos, redes etc. Como usado aqui, “diretamente acoplado” pode incluir dois dispositivos que são acoplados (por exemplo, comunicativamente acoplados, eletricamente acoplados ou fisicamente acoplados) sem componentes intervenientes.
[0241] Como usado aqui, “integrado” pode incluir “dispositivos fabricados ou vendidos”. Um dispositivo pode ser integrado se um usuário comprar um pacote que agrupe ou inclua o dispositivo como parte do pacote. Em algumas descrições, dois dispositivos podem ser acoplados, mas não necessariamente integrados (por exemplo, diferentes dispositivos periféricos podem não ser integrados a um dispositivo de comando, mas ainda podem ser “acoplados”). Outro exemplo pode ser o de qualquer um dos transceptores ou antenas aqui descritos que podem ser “acoplados” a um processador, mas não necessariamente parte do pacote que inclui um dispositivo de vídeo. Outros exemplos podem ser inferidos a partir do contexto aqui divulgado, incluindo este parágrafo, ao usar o termo “integrado”.
[0242] Como usado aqui uma conexão “sem fio” entre dispositivos pode ser com base em várias tecnologias sem fio, tais como Bluetooth, Fidelidade sem fio (Wi-Fi) ou variantes de Wi-Fi (por exemplo, Wi-Fi Direct). Os dispositivos podem ser “conectados sem fio” com base em diferentes sistemas de comunicação celular, tais como um sistema de Evolução a Longo Prazo (LTE), um sistema de Acesso Múltiplo por Divisão de Código (CDMA), um sistema do Sistema Global para Comumicações Móveis (GSM), um sistema de rede de área local sem fio (WLAN) ou outro sistema sem fio. Um sistema CDMA pode implementar CDMA de banda larga (WCDMA), CDMA 1X, Evolução de Dados Otimizada (EVDO), CDMA síncrono por divisão de tempo (TD-SCDMA) ou alguma outra versão de CDMA. Assim, quando dois dispositivos estão dentro do campo de visão, uma “conexão sem fio” também pode ser com base em outras tecnologias sem fio, tais como ultrassom, infravermelho, energia eletromagnética por radiofrequência de pulso, luz estruturada ou técnicas direcionais de chegada usadas no processamento de sinal (por exemplo, processamento de sinal de áudio ou processamento de radiofrequência).
[0243] Como usado aqui, A “e/ou” B pode significar que “A e B” ou “A ou B”, ou ambos “A e B” e “A ou B” são aplicáveis ou aceitáveis.
[0244] Como aqui utilizado, uma unidade pode incluir, por exemplo, um circuito com fio para uso específico, software e/ou firmware em conjunto com um circuito programável ou uma combinação dos mesmos.
[0245] O termo “dispositivo de computação” é usado genericamente neste documento para se referir a qualquer um ou todos os servidores, computadores pessoais, laptops, tablets, dispositivos móveis, telefones celulares, smartbooks, ultrabooks, computadores de mão, assistentes de dados pessoais (PDAs), receptores de correio eletrônico sem fio, telefones celulares multimídia com acesso à Internet,
receptores do Sistema de Posicionamento Global (GPS), controladores de jogos sem fio e dispositivos eletrônicos similares que incluem um processador e circuito programável para enviar e/ou receber informações sem fio.
[0246] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das seguintes reivindicações.

Claims (29)

REIVINDICAÇÕES
1. Dispositivo para decodificação de vídeo de um bloco atual de dados de vídeo, o dispositivo compreendendo: um ou mais processadores são configurados para: computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero, em que o primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença, em que o primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e em que a primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle; e computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero, em que o segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença, e em que o terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e em que a terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle; e uma memória configurada para reconstruir o bloco atual de dados de vídeo.
2. Dispositivo, de acordo com a reivindicação 1, em que o modelo afim é um modelo afim de quatro parâmetros e em que o segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle, e em que o quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a quarta diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
3. Dispositivo, de acordo com a reivindicação 2, em que uma terceira diferença do modelo afim de quatro parâmetros é a segunda diferença do modelo afim de quatro parâmetros multiplicada por menos 1, e em que a quarta diferença do modelo afim de quatro parâmetros é a primeira diferença do modelo afim de quatro parâmetros.
4. Dispositivo, de acordo com a reivindicação 2, em que o componente horizontal de vetor de movimento de ponto de controle zero, o primeiro componente horizontal de vetor de movimento de ponto de controle, o componente vertical de vetor de movimento de ponto zero, e o primeiro componente vertical de vetor de movimento de ponto de controle são, cada um, deslocados em bit por um número inteiro.
5. Dispositivo, de acordo com a reivindicação 2, em que o modelo afim de quatro parâmetros é uma forma de modelo afim (1), em que a primeira operação de deslocamento de bit no primeiro produto de diferença e no segundo produto de diferença é computada uma vez por uma primeira constante digital na diferença entre o primeiro produto de diferença e o segundo produto de diferença, e em que a segunda operação de deslocamento de bit no terceiro produto de diferença e no quarto produto de diferença é computada uma vez por uma primeira constante digital na diferença entre o terceiro produto de diferença e o quarto produto de diferença, e em que a primeira constante digital, wb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente e em que a primeira diferença e a quarta diferença são um valor equivalente.
6. Dispositivo, de acordo com a reivindicação 2, em que o modelo afim de quatro parâmetros é uma forma de modelo afim (2), em que a primeira operação de deslocamento de bit por uma primeira constante digital no primeiro produto de diferença e no segundo produto de diferença é computada duas vezes, uma vez no primeiro produto de diferença, e uma vez no segundo produto de diferença, e em que a segunda operação de deslocamento de bit pela primeira constante digital no terceiro produto de diferença e no quarto produto de diferença é computada duas vezes, uma vez no terceiro produto de diferença, e uma vez no quarto produto de diferença, e em que a primeira constante digital, wb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente, e em que a primeira diferença e a quarta diferença são um valor equivalente.
7. Dispositivo, de acordo com a reivindicação 2, em que o modelo afim de quatro parâmetros é uma forma de modelo afim (3), em que a primeira operação de deslocamento de bit pela primeira constante digital no primeiro produto de diferença é também realizada como parte de uma operação de função desligado (primeiro produto de diferença, w), e em que a primeira operação de deslocamento de bit pela primeira constante digital no segundo produto de diferença é também realizada como parte de uma operação de função desligado (segundo produto de diferença, w), e em que a segunda operação de deslocamento de bit pela primeira constante digital no terceiro produto de diferença é também realizada como parte de uma operação de função desligado (terceiro produto de diferença, w), e em que a segunda operação de deslocamento de bit pela primeira constante digital no quarto produto de diferença é também realizada como parte de uma operação de função desligado (quarto produto de diferença, w), e em que w é uma largura do bloco atual de dados de vídeo, e é definido como w=2wb, em que wb é a primeira constante digital, e wb é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente, e em que a primeira diferença e a quarta diferença são um valor equivalente.
8. Dispositivo, de acordo com a reivindicação 1, em que o modelo afim é um modelo afim de seis parâmetros, e o segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle, e computar o componente vertical do modelo afim quando o modelo afim é um modelo afim de seis parâmetros, e o quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle.
9. Dispositivo, de acordo com a reivindicação 8, em que o componente horizontal de vetor de movimento de ponto de controle zero, o primeiro componente horizontal de vetor de movimento de ponto de controle, o segundo componente horizontal de vetor de movimento de ponto de controle, o componente vertical de vetor de movimento de ponto zero, o primeiro componente vertical de vetor de movimento de ponto de controle, e segundo componente vertical de vetor de movimento de ponto de controle são, cada um, deslocados em bit por um número inteiro.
10. Dispositivo, de acordo com a reivindicação 8, em que o modelo afim de seis parâmetros é forma de modelo afim (7), em que a primeira operação de deslocamento de bit pela primeira constante digital no primeiro produto de diferença e no segundo produto de diferença é computada uma vez na diferença entre o primeiro produto de diferença e o segundo produto de diferença, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv2x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que o segundo componente vertical de vetor de movimento de ponto de controle é definido como mv2y, e em que a segunda operação de deslocamento de bit pela segunda constante digital no terceiro produto de diferença e no quarto produto de diferença é computada uma vez na diferença entre o terceiro produto de diferença e o quarto produto de diferença, e em que a primeira constante digital, wb, é um número inteiro positivo entre 1 e 7, e em que a segunda constante digital, hb, é um número inteiro positivo entre 1 e 7.
11. Dispositivo, de acordo com a reivindicação 8, em que o modelo afim de seis parâmetros é uma forma de modelo afim (8), em que a primeira operação de deslocamento de bit pela primeira constante digital no primeiro produto de diferença é também realizada como parte de uma operação de função desligado (primeiro produto de diferença, w), e em que a primeira operação de deslocamento de bit pela primeira constante digital no segundo produto de diferença é também realizada como parte de uma operação de função desligado (segundo produto de diferença, h), e em que a segunda operação de deslocamento de bit pela segunda constante digital no terceiro produto de diferença é também realizada como parte de uma operação de função desligado (terceiro produto de diferença, w), e em que a segunda operação de deslocamento de bit pela segunda constante digital no quarto produto de diferença é também realizada como parte de uma operação de função desligado (quarto produto de diferença, h), e em que w é uma largura do bloco atual de dados de vídeo, e é definido como w=2wb, em que wb é a primeira constante digital, e wb é um número inteiro positivo entre 1 e 7, e em que h é uma altura do bloco atual de dados de vídeo, e é definido como w=hb, em que hb é a segunda constante digital, e hb é um número positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv2x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que o segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv2y.
12. Dispositivo, de acordo com a reivindicação 8, em que o modelo afim de seis parâmetros é uma forma de modelo afim (10) com uma divisão por um número que não é uma potência de 2, em que, antes da primeira operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma largura ou uma altura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pelo primeiro produto de diferença, e T[w] é também multiplicado pelo segundo produto de diferença, então, a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no primeiro produto de diferença multiplicado por T[w], e a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no segundo produto de diferença multiplicado por T[w], e em que, antes da segunda operação de deslocamento de bit, o T[w] multiplicado pelo primeiro produto de diferença e o T[w] multiplicado pelo segundo produto de diferença são usados, então, a segunda operação de deslocamento de bit pela segunda constante digital é aplicada no segundo produto de diferença multiplicado por T[w], e a segunda operação de deslocamento de bit pela segunda constante digital é aplicada no primeiro produto de diferença multiplicado por T[w], e em que a primeira constante digital e a segunda constante digital são um mesmo valor, e a primeira constante digital, tb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente, e em que a primeira diferença e a quarta diferença são um valor equivalente.
13. Dispositivo, de acordo com a reivindicação 8, em que o modelo afim de seis parâmetros é uma forma de modelo afim (11) com uma divisão por um número que não é uma potência de 2, em que, antes da primeira operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma largura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pela diferença entre o primeiro produto de diferença e o segundo produto de diferença, e, então, a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no primeiro produto de diferença e no segundo produto de diferença multiplicado por T[w], e em que, antes da segunda operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma altura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pela diferença entre o terceiro produto de diferença e o quarto produto de diferença, e a segunda operação de deslocamento de bit pela segunda constante digital é aplicada no terceiro produto de diferença e no quarto produto de diferença multiplicado por T[w], e em que a primeira constante digital e a segunda constante digital são um mesmo valor, e a primeira constante digital, tb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente, e em que a primeira diferença e a quarta diferença são um valor equivalente.
14. Dispositivo, de acordo com a reivindicação 8, em que o modelo afim de seis parâmetros é uma forma de modelo afim (11) com uma divisão por um número que não é uma potência de 2, em que, antes da primeira operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma largura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pela diferença entre o primeiro produto de diferença e o segundo produto de diferença, e, então, a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no primeiro produto de diferença e no segundo produto de diferença multiplicado por T[w], e em que, antes da segunda operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma altura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pela diferença entre o terceiro produto de diferença e o quarto produto de diferença, e a segunda operação de deslocamento de bit pela segunda constante digital é aplicada no terceiro produto de diferença e no quarto produto de diferença multiplicado por T[w], e em que a primeira constante digital e a segunda constante digital são um mesmo valor, e a primeira constante digital, tb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente, e em que a primeira diferença e a quarta diferença são um valor equivalente.
15. Método para decodificação de vídeo de um bloco atual de dados de vídeo, o método compreendendo: computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero, em que o primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença, em que o primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e em que a primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle; e computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero, em que o segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença, e em que o terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e em que a terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle; e reconstruir o bloco atual de dados de vídeo.
16. Método, de acordo com a reivindicação 15, em que o modelo afim é um modelo afim de quatro parâmetros e em que o segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle, e em que o quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a quarta diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
17. Método, de acordo com a reivindicação 15, em que o modelo afim de quatro parâmetros é uma forma de modelo afim (1), em que a primeira operação de deslocamento de bit no primeiro produto de diferença e no segundo produto de diferença é computada uma vez por uma primeira constante digital na diferença entre o primeiro produto de diferença e o segundo produto de diferença, e em que a segunda operação de deslocamento de bit no terceiro produto de diferença e no quarto produto de diferença é computada uma vez por uma primeira constante digital na diferença entre o terceiro produto de diferença e o quarto produto de diferença, e em que a primeira constante digital, wb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente e, em que a primeira diferença e a quarta diferença são um valor equivalente.
18. Método, de acordo com a reivindicação 15, em que o modelo afim de quatro parâmetros é uma forma de modelo afim (2), em que a primeira operação de deslocamento de bit por uma primeira constante digital no primeiro produto de diferença e no segundo produto de diferença é computada duas vezes, uma vez no primeiro produto de diferença, e uma vez no segundo produto de diferença, e em que a segunda operação de deslocamento de bit pela primeira constante digital no terceiro produto de diferença e no quarto produto de diferença é computada duas vezes, uma vez no terceiro produto de diferença, e uma vez no quarto produto de diferença, e em que a primeira constante digital, wb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente, e em que a primeira diferença e a quarta diferença são um valor equivalente.
19. Método, de acordo com a reivindicação 15, em que o modelo afim de quatro parâmetros é uma forma de modelo afim (3), em que a primeira operação de deslocamento de bit pela primeira constante digital no primeiro produto de diferença é também realizada como parte de uma operação de função desligado (primeiro produto de diferença, w), e em que a primeira operação de deslocamento de bit pela primeira constante digital no segundo produto de diferença é também realizada como parte de uma operação de função desligado (segundo produto de diferença, w), e em que a segunda operação de deslocamento de bit pela primeira constante digital no terceiro produto de diferença é também realizada como parte de uma operação de função desligado (terceiro produto de diferença, w), e em que a segunda operação de deslocamento de bit pela primeira constante digital no quarto produto de diferença é também realizada como parte de uma operação de função desligado (quarto produto de diferença, w), e em que w é uma largura do bloco atual de dados de vídeo, e é definido como w=2wb, em que wb é a primeira constante digital, e wb é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente, e em que a primeira diferença e a quarta diferença são um valor equivalente.
20. Método, de acordo com a reivindicação 15, em que o modelo afim é um modelo afim de seis parâmetros, e a computação do componente horizontal é parte do modelo afim de seis parâmetros, e em que o segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle, e computar o componente vertical do modelo afim quando o modelo afim é um modelo afim de seis parâmetros, e o quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle.
21. Método, de acordo com a reivindicação 20, em que o componente horizontal de vetor de movimento de ponto de controle zero, o primeiro componente horizontal de vetor de movimento de ponto de controle, o segundo componente horizontal de vetor de movimento de ponto de controle, o componente vertical de vetor de movimento de ponto zero, o primeiro componente vertical de vetor de movimento de ponto de controle, e segundo componente vertical de vetor de movimento de ponto de controle são, cada um, deslocados em bit por um número inteiro.
22. Método, de acordo com a reivindicação 20, em que o modelo afim de seis parâmetros é forma de modelo afim (7), em que a primeira operação de deslocamento de bit pela primeira constante digital no primeiro produto de diferença e no segundo produto de diferença é computada uma vez na diferença entre o primeiro produto de diferença e o segundo produto de diferença, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv2x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que o segundo componente vertical de vetor de movimento de ponto de controle é definido como mv2y, e em que a segunda operação de deslocamento de bit pela segunda constante digital no terceiro produto de diferença e no quarto produto de diferença é computada uma vez na diferença entre o terceiro produto de diferença e o quarto produto de diferença, e em que a primeira constante digital, wb, é um número inteiro positivo entre 1 e 7, e em que a segunda constante digital, hb, é um número inteiro positivo entre 1 e 7.
23. Método, de acordo com a reivindicação 20, em que o modelo afim de seis parâmetros é uma forma de modelo afim (8), em que a primeira operação de deslocamento de bit pela primeira constante digital no primeiro produto de diferença é também realizada como parte de uma operação de função desligado (primeiro produto de diferença, w), e em que a primeira operação de deslocamento de bit pela primeira constante digital no segundo produto de diferença é também realizada como parte de uma operação de função desligado (segundo produto de diferença, h), e em que a segunda operação de deslocamento de bit pela segunda constante digital no terceiro produto de diferença é também realizada como parte de uma operação de função desligado (terceiro produto de diferença, w), e em que a segunda operação de deslocamento de bit pela segunda constante digital no quarto produto de diferença é também realizada como parte de uma operação de função desligado (quarto produto de diferença, h), e em que w é uma largura do bloco atual de dados de vídeo, e é definido como w=2wb, em que wb é a primeira constante digital, e wb é um número inteiro positivo entre 1 e 7, e em que h é uma altura do bloco atual de dados de vídeo, e é definido como w=hb, em que hb é a segunda constante digital, e hb é um número positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv2x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que o segundo componente horizontal de vetor de movimento de ponto de controle é definido como mv2y.
24. Método, de acordo com a reivindicação 20, em que o modelo afim de seis parâmetros é uma forma de modelo afim (10) com uma divisão por um número que não é uma potência de 2, em que, antes da primeira operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma largura ou uma altura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pelo primeiro produto de diferença, e T[w] é também multiplicado pelo segundo produto de diferença, então, a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no primeiro produto de diferença multiplicado por T[w], e a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no segundo produto de diferença multiplicado por T[w], e em que, antes da segunda operação de deslocamento de bit, o T[w] multiplicado pelo primeiro produto de diferença e o T[w] multiplicado pelo segundo produto de diferença são usados, então, a segunda operação de deslocamento de bit pela segunda constante digital é aplicada no segundo produto de diferença multiplicado por T[w], e a segunda operação de deslocamento de bit pela segunda constante digital é aplicada no primeiro produto de diferença multiplicado por T[w], e em que a primeira constante digital e a segunda constante digital são um mesmo valor, e a primeira constante digital, tb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x e, em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente e em que a primeira diferença e a quarta diferença são um valor equivalente.
25. Método, de acordo com a reivindicação 20, em que o modelo afim de seis parâmetros é uma forma de modelo afim (11) com uma divisão por um número que não é uma potência de 2, em que, antes da primeira operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma largura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pela diferença entre o primeiro produto de diferença e o segundo produto de diferença, e, então, a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no primeiro produto de diferença e no segundo produto de diferença multiplicado por T[w], e em que, antes da segunda operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma altura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pela diferença entre o terceiro produto de diferença e o quarto produto de diferença, e a segunda operação de deslocamento de bit pela segunda constante digital é aplicada no terceiro produto de diferença e no quarto produto de diferença multiplicado por T[w], e em que a primeira constante digital e a segunda constante digital são um mesmo valor, e a primeira constante digital, tb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente, e em que a primeira diferença e a quarta diferença são um valor equivalente.
26. Método, de acordo com a reivindicação 20, em que o modelo afim de seis parâmetros é uma forma de modelo afim (11) com uma divisão por um número que não é uma potência de 2, em que, antes da primeira operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma largura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pela diferença entre o primeiro produto de diferença e o segundo produto de diferença, e, então, a primeira operação de deslocamento de bit pela primeira constante digital é aplicada no primeiro produto de diferença e no segundo produto de diferença multiplicado por T[w], e em que, antes da segunda operação de deslocamento de bit, uma tabela de pesquisa, T, é lida em uma localização de pixel w, ao longo de uma altura do bloco atual de dados de vídeo, T[w], e T[w] é multiplicado pela diferença entre o terceiro produto de diferença e o quarto produto de diferença, e a segunda operação de deslocamento de bit pela segunda constante digital é aplicada no terceiro produto de diferença e no quarto produto de diferença multiplicado por T[w], e em que a primeira constante digital e a segunda constante digital são um mesmo valor, e a primeira constante digital, tb, é um número inteiro positivo entre 1 e 7, e em que o primeiro componente horizontal de vetor de movimento de ponto de controle é definido como mv1x, e em que o componente horizontal de vetor de movimento de ponto de controle zero é definido como mv0x, e em que o primeiro componente vertical de vetor de movimento de ponto de controle é definido como mv1y, e em que o componente vertical de vetor de movimento de ponto de controle zero é definido como mv0y, e em que a segunda diferença e a terceira diferença são um valor equivalente, e em que a primeira diferença e a quarta diferença são um valor equivalente.
27. Dispositivo para vídeo codificando um bloco atual de dados de vídeo, o dispositivo compreendendo: um ou mais processadores configurados para: computar um componente horizontal de um vetor de movimento do modelo afim adicionando um primeiro resultado de operação de deslocamento de bit a um componente horizontal de vetor de movimento de ponto de controle zero, em que o primeiro resultado de operação de deslocamento de bit é determinado com base em uma primeira operação de deslocamento de bit em um primeiro produto de diferença e um segundo produto de diferença, em que o primeiro produto de diferença inclui uma primeira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e em que a primeira diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle; e computar um componente vertical de um vetor de movimento do modelo afim adicionando um segundo resultado de operação de deslocamento de bit a um componente vertical de vetor de movimento de ponto de controle zero, em que o segundo resultado de operação de deslocamento de bit é determinado com base em uma segunda operação de deslocamento de bit em um terceiro produto de diferença, e em que o terceiro produto de diferença inclui uma terceira diferença multiplicada por uma localização de pixel horizontal dentro do bloco atual de dados de vídeo, e em que a terceira diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e um primeiro vetor de movimento de ponto de controle; e uma memória configurada para armazenar um fluxo de bits representando o componente horizontal e componente vertical do vetor de movimento do modelo afim.
28. Dispositivo, de acordo com a reivindicação 27, em que o modelo afim é um modelo afim de quatro parâmetros e em que o segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle, e em que o quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a quarta diferença é com base em uma diferença entre componentes horizontais do vetor de movimento de ponto de controle zero e do primeiro vetor de movimento de ponto de controle.
29. Dispositivo, de acordo com a reivindicação 27, em que o modelo afim é um modelo afim de seis parâmetros, e o segundo produto de diferença inclui uma segunda diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a segunda diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle, e computar o componente vertical do modelo afim quando o modelo afim é um modelo afim de seis parâmetros, e o quarto produto de diferença inclui uma quarta diferença multiplicada por uma localização de pixel vertical dentro do bloco atual de dados de vídeo, e a quarta diferença é com base em uma diferença entre componentes verticais do vetor de movimento de ponto de controle zero e do segundo vetor de movimento de ponto de controle.
BR112020014654-4A 2018-01-20 2019-01-17 compensação de movimento afim em codificação de vídeo BR112020014654A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862619783P 2018-01-20 2018-01-20
US62/619,783 2018-01-20
US16/246,952 US10757417B2 (en) 2018-01-20 2019-01-14 Affine motion compensation in video coding
US16/246,952 2019-01-14
PCT/US2019/014046 WO2019143841A1 (en) 2018-01-20 2019-01-17 Affine motion compensation in video coding

Publications (1)

Publication Number Publication Date
BR112020014654A2 true BR112020014654A2 (pt) 2020-12-01

Family

ID=67298891

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020014654-4A BR112020014654A2 (pt) 2018-01-20 2019-01-17 compensação de movimento afim em codificação de vídeo

Country Status (6)

Country Link
US (1) US10757417B2 (pt)
EP (1) EP3741120A1 (pt)
CN (1) CN111615829B (pt)
BR (1) BR112020014654A2 (pt)
SG (1) SG11202005339QA (pt)
WO (1) WO2019143841A1 (pt)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331722B (zh) 2015-07-03 2019-04-26 华为技术有限公司 图像预测方法和相关设备
KR20230169429A (ko) * 2018-04-13 2023-12-15 엘지전자 주식회사 비디오 처리 시스템에서 인터 예측 방법 및 장치
KR20210016581A (ko) 2018-06-05 2021-02-16 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Ibc 및 atmvp 간의 상호 작용
CN116347099A (zh) 2018-06-19 2023-06-27 北京字节跳动网络技术有限公司 没有运动矢量预测截断的选择的运动矢量差精度
TWI739120B (zh) 2018-06-21 2021-09-11 大陸商北京字節跳動網絡技術有限公司 合併仿射模式與非合併仿射模式的統一拘束
CN113115046A (zh) 2018-06-21 2021-07-13 北京字节跳动网络技术有限公司 分量相关的子块分割
TW202025749A (zh) 2018-09-08 2020-07-01 大陸商北京字節跳動網絡技術有限公司 計算運動向量預測值
CN116546213A (zh) 2018-09-19 2023-08-04 北京字节跳动网络技术有限公司 具有自适应运动矢量分辨率的仿射模式的语法重用
CN110944183B (zh) 2018-09-23 2023-09-05 北京字节跳动网络技术有限公司 在帧间模式下利用非子块空时运动矢量预测
WO2020058957A1 (en) 2018-09-23 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. General applications related to affine motion
WO2020058955A1 (en) 2018-09-23 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. Multiple-hypothesis affine mode
CN110944193B (zh) 2018-09-24 2023-08-11 北京字节跳动网络技术有限公司 视频编码和解码中的加权双向预测
WO2020084470A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Storage of motion parameters with clipping for affine mode
WO2020089822A1 (en) * 2018-10-31 2020-05-07 Beijing Bytedance Network Technology Co., Ltd. Overlapped block motion compensation with derived motion information from neighbors
WO2020094151A1 (en) 2018-11-10 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Rounding in pairwise average candidate calculations
CN112997487A (zh) 2018-11-15 2021-06-18 北京字节跳动网络技术有限公司 仿射模式与其他帧间编解码工具之间的协调
WO2020098813A1 (en) 2018-11-16 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Usage for history-based affine parameters
WO2020098810A1 (en) 2018-11-17 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Merge with motion vector difference in video processing
WO2020114517A1 (en) * 2018-12-08 2020-06-11 Beijing Bytedance Network Technology Co., Ltd. Shifting on affine parameters
JP7209092B2 (ja) 2018-12-21 2023-01-19 北京字節跳動網絡技術有限公司 動きベクトル差分によるマージ(mmvd)モードにおける動きベクトル予測
CN111355961B (zh) * 2018-12-24 2023-11-03 华为技术有限公司 一种帧间预测的方法和装置
US11102476B2 (en) * 2018-12-28 2021-08-24 Qualcomm Incorporated Subblock based affine motion model
WO2020143774A1 (en) 2019-01-10 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Merge with mvd based on geometry partition
KR20210121021A (ko) 2019-01-31 2021-10-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 어파인 모드 적응적 움직임 벡터 해상도 코딩 문맥
CN113491125A (zh) 2019-02-22 2021-10-08 北京字节跳动网络技术有限公司 基于历史的仿射模式子表
US11343525B2 (en) * 2019-03-19 2022-05-24 Tencent America LLC Method and apparatus for video coding by constraining sub-block motion vectors and determining adjustment values based on constrained sub-block motion vectors
CN113661708B (zh) 2019-04-02 2023-12-15 北京字节跳动网络技术有限公司 基于双向光流的视频编解码和解码
WO2020211866A1 (en) 2019-04-19 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Applicability of prediction refinement with optical flow process
KR102662024B1 (ko) 2019-04-19 2024-05-21 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 상이한 모션 벡터 정제의 그레디언트 계산
CN113711609B (zh) 2019-04-19 2023-12-01 北京字节跳动网络技术有限公司 利用光流的预测细化过程中的增量运动矢量
US11239988B2 (en) * 2019-04-22 2022-02-01 Texas Instruments Incorporated Methods and systems for synchronization of slave device with master device
WO2020233662A1 (en) 2019-05-21 2020-11-26 Beijing Bytedance Network Technology Co., Ltd. Syntax signaling for optical-flow based inter coding
CN114503558B (zh) * 2019-09-30 2023-10-20 华为技术有限公司 插值滤波器在仿射运动补偿中的适应性使用
EP4026331A4 (en) 2019-09-30 2022-11-30 Huawei Technologies Co., Ltd. AFFINE MOTION MODEL RESTRICTIONS REDUCING THE NUMBER OF REFERENCE LINES EXTRACTED WHILE PROCESSING A ROW OF BLOCKS WITH ENHANCED INTERPOLATION FILTER
EP4032290A4 (en) 2019-10-18 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. SYNTAX CONSTRAINTS IN REPORTING SUBPICTURE PARAMETER SETS
WO2024010831A1 (en) * 2022-07-05 2024-01-11 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for candidate derivation for affine merge mode in video coding

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106303543B (zh) * 2015-05-15 2018-10-30 华为技术有限公司 视频图像编码和解码的方法、编码设备和解码设备

Also Published As

Publication number Publication date
EP3741120A1 (en) 2020-11-25
WO2019143841A1 (en) 2019-07-25
CN111615829B (zh) 2022-01-18
US20190230361A1 (en) 2019-07-25
CN111615829A (zh) 2020-09-01
US10757417B2 (en) 2020-08-25
SG11202005339QA (en) 2020-08-28

Similar Documents

Publication Publication Date Title
BR112020014654A2 (pt) compensação de movimento afim em codificação de vídeo
TWI795463B (zh) 統一合併候選列表運用
US10911769B2 (en) Motion-based priority for the construction of candidate lists in video coding
CN112956190B (zh) 仿射运动预测
BR112020014522A2 (pt) Derivação aprimorada de vetor de movimento no lado de decodificador
US10687077B2 (en) Motion information propagation in video coding
RU2742298C2 (ru) Выведение вектора движения при видеокодировании
ES2880744T3 (es) Señalización de resolución adaptable del vector de movimiento para la codificación de vídeo
BR112019027821A2 (pt) emparelhamento de gabarito com base em reconstrução parcial para derivação de vetor de movimento
BR112021005357A2 (pt) aprimoramentos em preditor de vetor de movimento baseado em histórico
BR112020006232A2 (pt) codificação de informação de movimento de predição afim para codificação de vídeo
BR112020006588A2 (pt) predição afim em codificação de vídeo
TW201842766A (zh) 於視訊解碼器中導出運動向量資訊
BR112021002967A2 (pt) predição de movimento afim
BR112020007329A2 (pt) diversos aprimoramentos para correspondência de modelo de fruc
BR112020006875A2 (pt) projeto de baixa complexidade para fruc
BR112018006266B1 (pt) Fluxo ótico bidirecional avançado para codificação de vídeo
BR112019019210A2 (pt) informação de vetor de movimento de restrição derivada por derivação de vetor de movimento de lado de decodificador
BR112021015658A2 (pt) Restrições no refinamento de vetor de movimento no lado do decodificador
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
ES2971864T3 (es) Métodos y aparatos de codificación de vídeo para obtener vectores de movimiento afín para componentes croma
BR112021000640A2 (pt) Arredondamento de vetores de movimento para resolução de diferença de vetor de movimento adaptativa e precisão de armazenamento de vetor de movimento aumentada em codificação de vídeo
BR112021004060A2 (pt) método e dispositivo de obtenção de quadro de referência aplicado a interpredição bidirecional, codificador / decodificador de vídeo, produto de programa de computador, meio de armazenamento legível por computador, e terminal
TW202038611A (zh) 用於視訊寫碼之三角運動資訊
BR112017020632B1 (pt) Métodos e dispositivo para processar 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]
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B11Y Definitive dismissal - extension of time limit for request of examination expired [chapter 11.1.1 patent gazette]