BR112020018716A2 - Aperfeiçoamentos em predição de vetor de movimento temporal avançado - Google Patents

Aperfeiçoamentos em predição de vetor de movimento temporal avançado Download PDF

Info

Publication number
BR112020018716A2
BR112020018716A2 BR112020018716-0A BR112020018716A BR112020018716A2 BR 112020018716 A2 BR112020018716 A2 BR 112020018716A2 BR 112020018716 A BR112020018716 A BR 112020018716A BR 112020018716 A2 BR112020018716 A2 BR 112020018716A2
Authority
BR
Brazil
Prior art keywords
image
motion vector
block
current
video data
Prior art date
Application number
BR112020018716-0A
Other languages
English (en)
Inventor
Yu Han
Kai Zhang
Li Zhang
Wei-Jung Chien
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 BR112020018716A2 publication Critical patent/BR112020018716A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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

Abstract

métodos e dispositivos para decodificação incluindo um processador configurado para determinar qual imagem é uma imagem colocada e determinar uma localização de um bloco associado dos dados de vídeo na imagem colocada que corresponde ao bloco atual de dados de vídeo na imagem de codificação atual, com base no uso de blocos anteriormente decodificados na imagem de codificação atual para encontrar um vetor de movimento inicial entre o bloco associado na imagem colocada e o bloco atual na imagem de codificação atual, onde o bloco associado dos dados de vídeo inclui pelo menos um primeiro vetor de movimento derivado. o processador configurado para determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual, quando o vetor de movimento inicial aponta para a imagem colocada, com base pelo menos no primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada.

Description

“APERFEIÇOAMENTOS EM PREDIÇÃO DE VETOR DE MOVIMENTO TEMPORAL AVANÇADO” CAMPO TÉCNICO
[0001] A presente revelação se refere a dispositivos, sistemas e métodos para codificação de vídeo.
ANTECEDENTES
[0002] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de broadcast direto digitais, sistemas de broadcast sem fio, assistentes pessoais digitais (PDAs), computadores de mesa ou laptop, computadores tablet, leitoras de e-book, câmeras digitais, dispositivos de gravação digital, tocadores de mídia digital, dispositivos de videogame, consoles de videogame, telefones de rádio por satélite ou celular, os denominados “smart phones,” dispositivos de teleconferência por vídeo, dispositivos de streaming de vídeo e similares. Dispositivos de vídeo digitais implementam técnicas de compressão de vídeo, como aquelas 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), o ITU-T H. 265, padrão de Codificação de Vídeo de eficiência alta (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 de modo mais eficiente por implementar tais técnicas de compressão de vídeo.
[0003] Técnicas de compressão de vídeo executam predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo baseado em bloco, uma fatia de vídeo (isto é, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser mencionados como blocos de árvore, unidades de codificação (Cus) e/ou nós de codificação. Blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados usando predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. Predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado, isto é, o bloco atual. 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 formando 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 compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel em um domínio de transformada, resultando em coeficientes de transformada residual que podem ser então quantizados.
SUMÁRIO
[0004] Em geral, essa revelação descreve técnicas relacionadas a aperfeiçoamentos em predição de vetor de movimento avançada. As técnicas dessa revelação podem ser aplicadas a padrões futuros de codificação de vídeo.
[0005] Em um exemplo, as técnicas são dirigidas a um dispositivo para decodificar um bloco atual de dados de vídeo em uma imagem de codificação atual. O dispositivo pode incluir uma memória configurada para armazenar dados de vídeo. O dispositivo também pode incluir um processador, um processador configurado para determinar qual imagem é uma imagem colocada e determinar uma localização de um bloco associado dos dados de vídeo na imagem colocada que corresponde ao bloco atual de dados de vídeo na imagem de codificação atual, com base no uso de blocos anteriormente decodificados na imagem de codificação atual para encontrar um vetor de movimento inicial entre o bloco associado na imagem colocada e o bloco atual na imagem de codificação atual, onde o bloco associado dos dados de vídeo inclui pelo menos um primeiro vetor de movimento derivado. O processador pode ser configurado para determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual, quando o mv inicial aponta para a imagem colocada, com base pelo menos em um primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada. Além disso, o processador pode ser configurado para determinar informações de movimento do bloco atual de dados de vídeo na imagem de codificação atual com base pelo menos em um segundo vetor de movimento derivado, usar as informações de movimento determinado para obter um bloco de predição e gerar um bloco reconstruído com base em uma combinação do bloco de predição e um bloco residual.
[0006] Em outro exemplo, as técnicas são dirigidas a um método para decodificar um bloco atual de dados de vídeo em uma imagem de codificação atual. O método pode incluir determinar qual imagem é uma imagem colocada, e determinar uma localização de um bloco associado dos dados de vídeo na imagem colocada que corresponde ao bloco atual de dados de vídeo na imagem de codificação atual, com base no uso de blocos anteriormente decodificados na imagem de codificação atual para encontrar um vetor de movimento inicial entre o bloco associado na imagem colocada e o bloco atual na imagem de codificação atual, onde o bloco associado dos dados de vídeo inclui pelo menos um primeiro vetor de movimento derivado. O método pode incluir determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual, quando o mv inicial aponta para a imagem colocada, com base pelo menos em primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada. O método pode incluir também determinar informações de movimento do bloco atual de dados de vídeo na imagem de codificação atual com base pelo menos em um segundo vetor de movimento derivado, usar as informações de movimento determinado para obter um bloco de predição; e gerar um bloco reconstruído com base em uma combinação do bloco de predição e um bloco residual.
[0007] Os detalhes de um ou mais aspectos da revelação são expostos nos desenhos em anexo e na descrição abaixo. Outras características, objetos e vantagens das técnicas descritas nessa revelação serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0008] A figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo de exemplo que pode utilizar uma ou mais técnicas descritas nessa revelação.
[0009] As figuras 2A-B são diagramas conceptuais de uma Lista exemplificadora 0 e Lista 1, respectivamente.
[0010] A figura 2C ilustra uma primeira etapa de candidatos MV vizinhos espaciais para modo de fusão.
[0011] As figuras 3A-C ilustram fluxogramas em software de referência JEM atual.
[0012] As figuras 4A-B ilustram aperfeiçoamentos propostos para ATMVP para JEM atual.
[0013] As figuras 5A-D são diagramas conceptuais ilustrando exemplos diferentes para descrever as localizações relativas de uma imagem de referência colocada, imagem de referência e imagem de codificação atual.
[0014] A figura 6 é um fluxograma que descreve uma ou mais técnicas nessa revelação.
[0015] A figura 7 é um diagrama de blocos ilustrando um codificador de vídeo de exemplo que pode implementar uma ou mais técnicas descritas nessa revelação.
[0016] A figura 8 é um diagrama de blocos ilustrando um decodificador de vídeo de exemplo que pode implementar uma ou mais técnicas descritas nessa revelação.
DESCRIÇÃO DETALHADA
[0017] Compensação de movimento através de múltiplos quadros ou imagens de vídeo é usada com frequência em codificação de vídeo. Um vetor de movimento e um índice de referência associado a um quadro ou imagem anterior podem ser codificados. Um preditor de vetor de movimento (MVP) e uma diferença de vetor de movimento (MVD) podem ser usados para derivar um vetor de movimento.
[0018] Um MVP pode ser selecionado a partir de dois candidatos derivados de uma vizinhança espacial e/ou temporal de um bloco atual sendo codificado e/ou decodificado. O modo ATMVP é um algoritmo para selecionar o MVP. No modo ATMVP existente, o vetor de movimento e índice de referência (isto é, informações de movimento) podem ser derivados da seleção de candidatos diferentes, sem ter de codificar uma diferença de vetor de movimento. O modo de fusão é o processo de derivar uma representação de candidatos de vetor de movimento e predizer a codificação dos vetores de movimento. Como as imagens são bidimensionais, o uso de um vetor de movimento entre imagens também é bidimensional. Desse modo, um vetor de movimento tem um componente horizontal e um componente vertical.
[0019] Em sistemas existentes, usando algoritmos de predição de vetor de movimento temporal avançado (ATMVP), uma inter predição pode usar imagens anteriormente reconstruídas como uma imagem de referência para compensação de movimento. Informações de movimento a partir de uma região ou bloco localizado em conjunto em uma imagem de referência são armazenadas e então tornadas disponíveis para uso na inter predição. Em algumas ocorrências, as informações do vetor de movimento temporal na imagem de referência são reduzidas a um bloco 16x16, para limitar a armazenagem no buffer de referência (por exemplo, vide Buffer de Imagem decodificada “DPB” 1216 na figura 7 e Buffer de Imagem Decodificada “DPB” 1312 na figura 8). Entretanto, as informações de movimento de cada imagem de referência são armazenadas no buffer de referência que aumenta o consumo de potência e tamanho de memória.
[0020] Um codificador de vídeo (isto é, um codificador de vídeo ou um decodificador de vídeo) pode implementar, como descrito nessa revelação, aperfeiçoamentos nos algoritmos ATMVP através de soluções alternativas que não exigem que as informações do vetor de movimento temporal sejam armazenadas a partir dos buffers de referência como anteriormente feito.
[0021] De acordo com as técnicas descritas na presente invenção, é proposto que um dispositivo para decodificar um bloco atual de dados de vídeo em uma imagem de codificação atual, o dispositivo possa incluir uma memória configurada para armazenar dados de vídeo. O dispositivo também pode incluir um processador configurado para determinar qual imagem é uma imagem colocada. A imagem colocada pode ser recebida, por exemplo, tendo uma representação sinalizada como com o padrão HEVC. A imagem colocada pode ser determinada usando um índice de referência. Por exemplo, o índice de referência [0 pode ser usado como um default como em doe no padrão ITU-T H.
264. Nessa revelação, o índice de referência associado a uma imagem colocada, não tem necessariamente de ser zero e pode ser um valor não zero. Além disso, o processador pode ser adicionalmente configurado para determinar uma localização de um bloco associado dos dados de vídeo na imagem colocada que corresponde ao bloco atual de dados de vídeo na imagem de codificação atual, com base no uso de blocos anteriormente decodificados na imagem de codificação atual para encontrar um vetor de movimento inicial entre o bloco associado na imagem colocada e o bloco atual na imagem de codificação atual, onde o bloco associado dos dados de vídeo inclui pelo menos um primeiro vetor de movimento derivado (por exemplo, vide os vetores de movimento na imagem colocada na figura 5D). Desse modo, a localização do bloco associado na imagem colocada é determinada.
[0022] Compreendido nessa revelação, uma imagem colocada que inclui pelo menos um primeiro vetor de movimento derivado com base em uma imagem de codificação atual incluindo um vetor de movimento inicial que aponta para a imagem colocada, de modo que a imagem colocada possa ser usada como uma imagem de referência, sem a necessidade de se basear nas imagens de referência que incluem informações de movimento em técnicas atuais, pode ser mencionada como uma “imagem de referência colocada”.
[0023] Além disso, o processador pode ser configurado para determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual com base pelo menos no primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada. Pelo menos um segundo vetor de movimento derivado pode ser usado para determinar informações de movimento do bloco atual de dados de vídeo na imagem de codificação atual. Pelo menos um segundo vetor de movimento derivado pode auxiliar na determinação de um bloco de predição. O bloco de predição além do bloco residual pode ser usado para reconstruir um bloco atual.
[0024] Como tal, ao invés de executar o processo total para derivar os vetores de movimento por armazenar cada informação de vetor de movimento de cada imagem de referência (como feito antes da proposta em técnicas atuais), por utilizar um ou mais vetores de movimento a partir da imagem de codificação atual e pelo menos um primeiro vetor de movimento derivado da imagem de referência colocada pode ser usado para derivar pelo menos um segundo vetor de movimento. Consequentemente, o codificador de vídeo e o decodificador de vídeo podem processar os dados de vídeo mais eficientemente, e o codificador de vídeo e/ou o decodificador de vídeo pode fornecer meio mais eficiente de compressão e descompressão que pode consumir menos eletricidade e pode fornecer um resultado de codificação mais rápido para um dispositivo que exibe os dados de vídeo decodificados.
[0025] A figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo de exemplo 10 que pode utilizar técnicas dessa revelação. Como mostrado na figura 1, o sistema 10 inclui um dispositivo de fonte 12 que fornece dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, um dispositivo de fonte 12 provê os dados de vídeo para um dispositivo de destino 14 através de uma mídia legível por computador 16. O dispositivo de fonte 12 e dispositivo de destino 14 podem compreender qualquer de uma ampla gama de dispositivos, incluindo computadores de mesa, computadores de notebook (isto é, laptop), computadores de tablet, decodificadores, aparelhos telefônicos como os denominados “smart” phones, computadores de tablet, televisões, câmeras, dispositivos de display, tocadores de mídia digital, consoles de videogame, dispositivo de streaming de vídeo ou similares. Em alguns casos, o dispositivo de fonte 12 e dispositivo de destino 14 podem ser equipados para comunicação sem fio. Desse modo, o dispositivo de fonte 12 e dispositivo de destino 14 podem ser dispositivos de comunicação sem fio. O dispositivo de fonte 12 é um dispositivo de codificação de vídeo de exemplo (isto é, um dispositivo para codificar dados de vídeo). O dispositivo de destino 14 é um dispositivo de decodificação de vídeo de exemplo (isto é, um dispositivo para decodificar dados de vídeo).
[0026] No exemplo da figura 1, o dispositivo de fonte 12 inclui uma fonte de vídeo 18, mídia de armazenagem 19 configurada para armazenar dados de vídeo, um codificador de vídeo 20 e uma interface de saída 22. O dispositivo de destino 14 inclui uma interface de entrada 26, uma mídia de armazenagem 28 configurada para armazenar dados de vídeo codificados, um decodificador de vídeo 30 e o dispositivo de display 32. Em outros exemplos, o dispositivo de fonte 12 e o dispositivo de destino 14 incluem outros componentes ou disposições. Por exemplo, o dispositivo de fonte 12 pode receber dados de vídeo a partir de uma fonte de vídeo externa, como uma câmera externa. De modo semelhante, o dispositivo de destino 14 pode fazer interface com um dispositivo de display externo, ao invés de incluir um dispositivo de display integrado.
[0027] O sistema ilustrado 10 da figura 1 é meramente um exemplo. Técnicas para processar dados de vídeo podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora em geral as técnicas dessa revelação sejam realizadas por um dispositivo de codificação de vídeo, as técnicas podem ser também realizadas por um codificador/decodificador, tipicamente mencionado como um “CODEC”. O dispositivo de fonte 12 e dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo de fonte 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, o dispositivo de fonte 12 e dispositivo de destino 14 podem operar em um modo substancialmente simétrico de modo que cada do dispositivo de fonte 12 e dispositivo de destino 14 incluam componentes de codificação e decodificação de vídeo. Frequentemente, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre o dispositivo de fonte 12 e dispositivo de destino 14, por exemplo, para streaming de vídeo, reprodução de vídeo, broadcasting de vídeo ou telefonia de vídeo.
[0028] A fonte de vídeo 18 do dispositivo de fonte 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo anteriormente capturado, e/ou uma interface de feed de vídeo para receber dados de vídeo a partir de um provedor de conteúdo de vídeo. Como alternativa adicional, a fonte de vídeo 18 pode gerar dados baseados em gráficos de computador como o vídeo de fonte, ou uma combinação de vídeo live, vídeo arquivado e vídeo gerado por computador. O dispositivo de fonte 12 pode compreender uma ou mais mídia de armazenagem de dados (por exemplo, mídia de armazenagem 19) configurada para armazenar os dados de vídeo. As técnicas descritas nessa revelação podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e/ou cabeadas. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado por codificador de vídeo 20. A interface de saída 22 pode transmitir as informações de vídeo codificadas para uma mídia legível por computador 16.
[0029] A interface de saída 22 pode compreender vários tipos de componentes ou dispositivos. Por exemplo, a interface de saída 22 pode compreender um transmissor sem fio, um modem, um componente de funcionamento em rede cabeado (por exemplo, um cartão ethernet) ou outro componente físico. Em exemplos onde a interface de saída 22 compreende um receptor sem fio, a interface de saída 22 pode ser configurada para receber dados, como o fluxo de bits, modulado de acordo com um padrão de comunicação celular, como 4G, 4G-LTE, LTE avançado, 5G e similares. Em alguns exemplos onde a interface de saída 22 compreende um receptor sem fio, a interface de saída 22 pode ser configurada para receber dados, como o fluxo de bits, modulado de acordo com outros padrões sem fio, como especificação IEEE 802.11, como especificação IEEE 802.15 (por exemplo, ZigBeeTM), um padrão BluetoothTM e similares. Em alguns exemplos, o conjunto de circuitos da interface de saída 22 pode ser parte de um sistema em um chip (SoC). O
SoC pode incluir também outros componentes, como um microprocessador de propósito geral, uma unidade de processamento de gráficos etc.
[0030] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados através da mídia legível por computador 16. A mídia legível por computador 16 pode compreender qualquer tipo de mídia ou dispositivo capaz de mover os dados de vídeo codificados a partir do dispositivo de fonte 12 para o dispositivo de destino 14. Em alguns exemplos, a mídia legível por computador 16 compreende uma mídia de comunicação para habilitar o dispositivo de fonte 12 a transmitir dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou cabeado, 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 pacote, como uma rede de área local, uma rede de área remota, ou uma rede global como a internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar comunicação a partir do dispositivo de fonte 12 para o dispositivo de destino 14. O dispositivo de destino 14 pode compreender uma ou mais mídias de armazenagem de dados configuradas para armazenar dados de vídeo codificados e dados de vídeo decodificados.
[0031] Em alguns exemplos, dados codificados podem ser transmitidos a partir da interface de saída 22 para um dispositivo de armazenagem.
Similarmente, dados codificados podem ser acessados a partir do dispositivo de armazenagem por interface de entrada.
O dispositivo de armazenagem pode incluir qualquer de uma variedade de mídia de armazenagem de dados distribuídos ou localmente acessados como um uma unidade rígida, discs Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou quaisquer outras mídias de armazenagem digital adequadas para armazenar dados de vídeo codificados.
Em um exemplo adicional, o dispositivo de armazenagem pode corresponder a um servidor de arquivo ou outro dispositivo de armazenagem intermediária que pode armazenar o vídeo codificado gerado pelo dispositivo de fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenagem via streaming ou download.
O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo de exemplo incluem um servidor de rede (por exemplo, para um website) um servidor FTP, dispositivos de armazenagem ligados em rede (NAS) ou uma unidade de disco local.
O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de internet.
Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão cabeada (por exemplo, DSL, modem de cabo etc.), ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenagem pode ser uma transmissão streaming, uma transmissão download ou uma combinação das mesmas.
[0032] As técnicas podem ser aplicadas à codificação de vídeo em suporte de qualquer de uma variedade de aplicativos de multimídia, como broadcasts de televisão pelo ar, transmissões de televisão a cabo, transmissões cabeadas, transmissões de televisão por satélite, transmissões de vídeo streaming por internet, como streaming adaptável dinâmico sobre HTTP (DASH), vídeo digital que é codificado sobre uma mídia de armazenagem de dados, decodificação de vídeo digital armazenado em uma mídia de armazenagem de dados, ou outras aplicações ou combinações dos exemplos acima. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações como streaming de vídeo, reprodução de vídeo, broadcasting de vídeo e/ou telefonia de vídeo.
[0033] A mídia legível por computador 16 pode incluir mídia transiente, como uma transmissão de rede cabeada ou broadcast sem fio, ou mídia de armazenagem (isto é, mídia de armazenagem não transitória), como um disco rígido, unidade flash, compact disc, digital vídeo disc, disc Blu-ray, ou outra mídia legível por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados a partir do dispositivo de fonte 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, através de transmissão de rede. Similarmente, um dispositivo de computação de uma instalação de produção de mídia, como uma instalação de estampagem de disco, pode receber dados de vídeo codificados a partir do dispositivo de fonte 12 e produzir um disc contendo os dados de vídeo codificados. Portanto, mídia legível por computador 16 pode ser entendido como incluindo uma ou mais mídia legível por computador de várias formas, em vários exemplos.
[0034] A interface de entrada 26 do dispositivo de destino 14 recebe informações a partir da mídia legível por computador 16. As informações da mídia legível por computador 16 podem incluir informações de sintaxe definidas pelo codificador de vídeo 20 do codificador de vídeo 20, que também são usadas pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, grupos de imagens (GOPs). A interface de entrada 26 pode compreender vários tipos de componentes ou dispositivos. Por exemplo, a interface de entrada 26 pode compreender um receptor sem fio, um modem, um componente de funcionamento em rede cabeado (por exemplo, um cartão ethernet), ou outro componente físico. Em exemplos onde a interface de entrada 26 compreende um receptor sem fio, a interface de entrada 26 pode ser configurada para receber dados, como o fluxo de bits, modulados de acordo com um padrão de comunicação celular, como 4G, 4G-LTE, LTE avançado, 5G e similares. Em alguns exemplos onde a interface de entrada 26 compreende um receptor sem fio, a interface de entrada 26 pode ser configurada para receber dados, como o fluxo de bits, modulados de acordo com outros padrões sem fio, como uma especificação IEEE 802.11, uma especificação IEEE
TM TM
802.15 (por exemplo, ZigBee ) , um padrão Bluetooth , e similares. Em alguns exemplos, o conjunto de circuitos da interface de entrada 26 pode ser integrado em conjunto de circuitos de decodificador de vídeo 30 e/ou outros componentes do dispositivo de destino 14. Por exemplo, o decodificador de vídeo 30 e interface de entrada 26 podem fazer parte de um SoC. O SoC pode incluir também outros componentes, como um microprocessador de propósito geral, uma unidade de processamento de gráficos etc.
[0035] A mídia de armazenagem 28 pode ser configurada para armazenar dados de vídeo codificados, como dados de vídeo codificados (por exemplo, um fluxo de bits) recebidos pela interface de entrada 26. O dispositivo de display 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer de uma variedade de dispositivos de display como um tubo de raios catódicos (CRT), um display de cristal líquido (LCD), um display de plasma, um display de diodo de emissão de luz orgânico (OLED), ou outro tipo de dispositivo de display.
[0036] O codificador de vídeo 20 e decodificador de vídeo 30 podem, cada, ser implementados como qualquer de uma variedade de conjunto de circuitos de codificador adequados, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados específicos (ASICs), disposições de porta programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia legível por computador não transitória, adequada e executar as instruções em hardware usando um ou mais processadores para executar as técnicas dessa revelação. Cada entre o codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.
[0037] Em 2016, MPEG e ITU-T VCEG formaram um time de vídeo de exploração conjunta (JVET) para explorar novas ferramentas de codificação para a próxima geração de padrão de codificação de vídeo. O software de referência é chamado JEM (modelo de exploração conjunta).
[0038] Na proposta atual para JEM, JEM, e outras especificações de codificação de vídeo, dados de vídeo incluem uma série de imagens. Por exemplo, na série de imagens pode haver uma imagem colocada, uma ou mais imagens de referência e uma imagem de codificação atual. As imagens podem ser também mencionadas como “quadros”. Uma imagem pode incluir um ou mais conjuntos de amostras. Cada conjunto de amostras respectivo de uma imagem pode compreender um conjunto de amostras para um componente de cor respectivo. Em JEM, uma imagem pode incluir três conjuntos de amostras, indicados SL, SCb, e SCr. S L é um conjunto bidimensional (isto é, um bloco) de amostras luma. S Cb é um conjunto bidimensional de amostras de croma Cb. S Cr é um conjunto bidimensional de amostras de croma Cr. Em outras ocorrências, uma imagem pode ser monocromo e pode incluir somente um conjunto de amostras luma.
[0039] Como parte dos dados de vídeo codificação, o codificador de vídeo 20 pode codificar imagens dos dados de vídeo. Em outras palavras, o codificador de vídeo 20 pode gerar representações codificadas das imagens dos dados de vídeo. Uma representação codificada de uma imagem pode ser mencionada na presente invenção como uma “imagem codificada” ou “uma imagem codificada.”
[0040] Para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode codificar blocos das imagens. O codificador de vídeo 20 pode incluir, em um fluxo de bits, uma representação codificada do bloco de vídeo. Por exemplo, para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode dividir cada conjunto de amostras da imagem em blocos de árvore de codificação (CTBs) e codificar os CTBs. Um CTB pode ser um bloco NxN de amostras em um conjunto de amostras de uma imagem.
[0041] O codificador de vídeo 20 pode gerar um bloco preditivo (por exemplo, um bloco preditivo luma, Cb e Cr) para um bloco preditivo (por exemplo, bloco de predição luma, Cb e Cr) de um bloco atual sendo codificado. O codificador de vídeo 20 pode usar intra predição ou inter predição para gerar um bloco preditivo. Se o codificador de vídeo 20 usar intra predição para gerar um bloco preditivo, o codificador de vídeo 20 pode gerar o bloco preditivo com base em amostras decodificadas da imagem que inclui o bloco atual sendo codificado. Em padrões anteriores e JEM, o bloco preditivo do bloco atual sendo codificado com base em amostras decodificadas de uma imagem de referência (isto é, uma imagem diferente da imagem atual). Entretanto, na proposta atual para JEM para melhorar os algoritmos de predição de vetor de movimento temporal avançados em JEM, se o codificador de vídeo 20 usar inter predição para gerar um bloco preditivo do bloco atual sendo codificado de uma imagem atual, o codificador de vídeo 20 pode gerar o bloco preditivo do bloco atual sendo codificado com base em amostras decodificadas de uma imagem de referência colocada (isto é, uma imagem diferente da imagem atual e não necessariamente a imagem de referência). Deve ser observado que uma imagem de referência colocada pode ser uma das imagens de referência. Em algumas modalidades, a imagem de referência colocada pode ter um índice de referência que é 0 na Lista 0 ou Lista 1 (adicionalmente descrito abaixo).
[0042] Em alguns exemplos, o codificador de vídeo 20 pula a aplicação das transformadas para o bloco de transformada. Em tais exemplos, o codificador de vídeo 20 pode tratar valores de amostra residuais do mesmo modo como coeficientes de transformada. Desse modo, em exemplos onde o codificador de vídeo 20 pula a aplicação das transformadas, a seguinte discussão de coeficientes de transformada e blocos de coeficiente pode ser aplicável para transformar blocos de amostras residuais.
[0043] Após gerar um bloco de coeficiente, o codificador de vídeo 20 pode quantizar o bloco de coeficiente. A quantização se refere em geral a um processo no qual coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados usados para representar os coeficientes de transformada, fornecendo compressão adicional. Em alguns exemplos, o codificador de vídeo 20 pula a quantização. Após o codificador de vídeo 20 quantizar um bloco de coeficiente, o codificador de vídeo 20 pode gerar elementos de sintaxe indicando os coeficientes de transformada quantizados. O codificador de vídeo 20 pode codificar por entropia um ou mais dos elementos de sintaxe indicando os coeficientes de transformada quantizados. Por exemplo, o codificador de vídeo 20 pode executar Codificação Aritmética Binária adaptável ao contexto (CABAC) nos elementos de sintaxe indicando os coeficientes de transformada quantizados. Desse modo, um bloco codificado (por exemplo, um bloco atual codificado) pode incluir os elementos de sintaxe codificados por entropia indicando os coeficientes de transformada quantizados.
[0044] O codificador de vídeo 20 pode transmitir um fluxo de bits que inclui dados de vídeo codificados. Em outras palavras, o codificador de vídeo 20 pode transmitir um fluxo de bits que inclui uma representação codificada de dados de vídeo. Por exemplo, o fluxo de bits pode compreender uma sequência de bits que forma uma representação de imagens codificadas dos dados de vídeo e dados associados. Em alguns exemplos, uma representação de uma imagem codificada pode incluir representações codificadas de blocos.
[0045] Em JEM e na proposta atual para JEM, para cada bloco, um conjunto de informações de movimento pode estar disponível. Um conjunto de informações de movimento pode incluir informações de movimento para direções de predição para frente e para trás. Aqui, 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 de geometria, ao invés correspondem à lista de imagem de referência 0 (RefPicList0) e lista de imagem de referência 1 (RefPicList1) de uma imagem atual. Quando uma lista de imagem de referência está disponível para uma imagem ou fatia, RefPicList0 está disponível e as informações de movimento de cada bloco de uma fatia são para frente.
[0046] Para cada direção de predição, as informações de movimento podem conter um índice de referência e um vetor de movimento. Como foi anteriormente observado, um bloco de predição pode ser determinado com base pelo menos em um segundo vetor de movimento derivado, que é associado ao bloco atual na imagem de codificação atual com base pelo menos no primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada. O bloco de predição pode ser associado a uma direção de predição para frente, ou uma direção de predição para trás.
[0047] Um índice de referência é usado para identificar uma imagem de referência na lista de imagem de referência atual (RefPicList0 ou RefPicList1). Em técnicas anteriores, as informações de movimento podem ser derivadas a partir do uso de uma imagem de referência que foi associada a um índice de referência. No aperfeiçoamento ao ATMVP, devido ao aumento na memória buffer (por exemplo, DPB 1216 na figura 7 e DPB 1312 figura 8), é desejável derivar informações de movimento sem usar a imagem de referência para os primeiros vetores de movimento derivados. Isso pode ser possível, porque a imagem de referência colocada pode ser uma das imagens de referência. Como tal, todas as informações de movimento das imagens de referência não necessitam ser armazenadas.
[0048] A contagem de ordem de imagem (POC) é amplamente usada em padrões de codificação de vídeo para identificar uma ordem de display de uma imagem. Embora haja casos duas imagens em uma sequência de vídeo codificada podem ter o mesmo valor POC, tipicamente não acontece em uma sequência de vídeo codificada. Quando múltiplas sequências de vídeo codificadas estão presentes em um fluxo de bits, imagens com um mesmo valor de POC podem estar próximas uma da outra em termos de ordem de decodificação. Valores POC de imagens são tipicamente usados para construção de lista de imagens de referência. Na proposta atual para JEM, derivação de imagem de referência pode ser definida como em HEVC e escalonamento de vetor de movimento.
[0049] Na proposta atual para JEM, e em JEM há múltiplos modos inter predição. Inter predição inclui modo de fusão/Pular, modo FRUC, modo afim e modo AMVP. Em qualquer modo AMVP ou de fusão, uma lista de candidatos de vetor de movimento (MV) é mantida para múltiplos preditores de vetor de movimento.
[0050] O(s) vetor(es) de movimento, bem como índices de referência no modo de fusão, são gerados por pegar um candidato da lista de candidatos MV. A lista de candidatos MV pode conter até 7 candidatos para o modo de fusão e somente dois candidatos para o modo AMVP. Um candidato de fusão pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento correspondendo a ambas as listas de imagem de referência (lista 0 e lista 1) e os índices de referência. Se um candidato de fusão é identificado por um índice de fusã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.
[0051] Mais especificamente, no modo de fusão, o codificador de vídeo 20 e o decodificador de vídeo 30 geram listas de candidatos de vetor de movimento (MV) de fusão casados para um bloco atual. A lista de candidatos MV de fusão para o bloco atual pode incluir um ou mais candidatos de fusão que também podem ser mencionados como preditores de vetor de movimento (MVPs). Na proposta atual para JEM e em JEM, a lista de candidatos MV de fusão contém até 7 candidatos de fusão. Cada candidato de fusão respectivo na lista de candidatos MV de fusão especifica um ou mais vetor(es) de movimento e um ou mais índice(s) de referência. Por exemplo, um candidato de fusão pode especificar um vetor de movimento de Lista 0 e/ou um vetor de movimento de Lista 1, e pode especificar um índice de referência de Lista 0 e/ou um índice de referência de Lista
1. Um vetor de movimento de Lista 0 é um vetor de movimento que indica uma localização em uma imagem de referência na Lista 0. Um vetor de movimento de Lista 1 é um vetor de movimento que indica uma localização em uma imagem de referência na Lista 1. O codificador de vídeo 20 pode sinalizar um índice de fusão que indica uma localização na lista de candidatos MV de um candidato de fusão selecionado para o bloco atual. O decodificador de vídeo 30 pode usar o índice de fusão para identificar o candidato de fusão selecionado.
[0052] Na proposta atual para JEM, a ordem fixa explicada adicionalmente abaixo com referência a candidatos espaciais), pode ser substituída pelos candidatos na lista de fusão, Lista 0 ou Lista 1, para encontrar as informações de movimento com o bloco atual. Em uma modalidade, o decodificador de vídeo 30 pode usar então os vetores de movimento (primeiros derivados) a partir da imagem de referência colocada, para derivar os segundos vetores de movimento usando os índices de referência do candidato de fusão selecionado como os vetores de movimento (isto é, esses podem ser os segundos vetores de movimento derivados).
[0053] As ilustrações na figura 2A e figura 2B mostram diagramas conceptuais de uma Lista 0 exemplificadora e Lista 1, respectivamente. A lista0 exemplificadora na figura 2A ilustra quatro imagens {P4, P3, P2 e P1} com rótulos de referência 202A, 204A, 206A, e 208A, respectivamente. Similarmente, a lista1 exemplificadora na figura 2B ilustra quatro imagens {P4, P3, P2 e P1}, com rótulos de referência 202A, 204A, 206A, e 208A, respectivamente.
[0054] Em JEM, em uma primeira etapa no modo fusão, até quatro candidatos MV espaciais podem ser derivados com a ordem mostrada na figura 2A com números e a ordem fixa é a seguinte: esquerda (0), acima (1), acima direita (2) e abaixo esquerda (3).
[0055] Um bloco atual (CB) na imagem 1 208A,
inclui vizinhos espaciais circundantes {NB1, NB2, NB3, NB4, e NB5}. Por exemplo, NB1, NB2, NB3, e NB4 podem estar em uma ordem fixa: esquerda (0), acima (1), acima direita (2) e abaixo esquerda (3). Um vizinho espacial, por exemplo, NB4, pode ser um candidato preditor de vetor de movimento (MVP) visto que os vizinhos espaciais circundantes já foram decodificados e suas informações de movimento, se presentes, já estiverem disponíveis. Um bloco já codificado ou decodificado (representado como AB) pode ter também seu próprio vetor de movimento previsto (como ilustrado pela seta com as linhas tracejadas).
[0056] A figura 2C ilustra uma primeira etapa de candidatos MV vizinhos espaciais para modo de fusão. Etapas subsequentes podem verificar em relação a um candidato ATMVP, verificar em relação a um candidato STMVP. Se o número de candidatos for menor que 6, uma verificação acima esquerda (4) pode ser a próxima. Então, uma verificação de um candidato temporal pode ser realizada. Para obter o candidato temporal, a verificação da posição inferior-direita primeiramente, se não estiver disponível uma verificação do bloco central pode ser realizada. Se o tamanho da lista de candidatos de fusão for menor que 7, candidatos adicionais podem ser acrescentados até o tamanho da lista igualar 7.
[0057] Nessa revelação, informações de movimento de um bloco anteriormente codificado podem ser usadas para gerar um vetor de movimento inicial. O bloco anteriormente codificado pode ser um bloco vizinho do bloco atual sendo codificado ou decodificado. As informações de movimento podem incluir um índice de referência, um vetor de movimento e uma inter-direção.
[0058] O vetor de movimento inicial pode ser usado para apontas de volta para um bloco correspondente em uma imagem de referência colocada que já foi codificada ou decodificada.
[0059] De acordo com as técnicas descritas na presente invenção, o codificador de vídeo 20 pode utilizar as informações de movimento de blocos anteriormente codificados para gerar um vetor de movimento inicial (por exemplo, vide o fluxograma na figura 4A-4B) que pode ser usado para apontar para o bloco correspondente em uma imagem de referência colocada para codificar dados de vídeo. O bloco correspondente na imagem de referência colocada pode incluir um primeiro conjunto de vetores de movimento derivados, que pode ser usado para encontrar um segundo conjunto de vetores de movimento derivados.
[0060] Por exemplo, o codificador de vídeo 20 pode determinar, para um bloco atual em uma imagem atual dos dados de vídeo, um bloco de codificação em uma imagem anteriormente codificada. O bloco de codificação pode cobrir um bloco colocado na imagem anteriormente codificada e uma posição na imagem anteriormente codificada. Entretanto, a imagem anteriormente codificada não é necessariamente um bloco de referência. O bloco colocado pode ter um mesmo formato que o bloco atual, e uma localização do bloco colocado na imagem anteriormente codificada pode ser igual a uma localização do bloco atual na imagem atual. Com base em um ou mais vetores de movimento para o bloco de codificação, o codificador de vídeo 20 pode determinar um ou mais vetores de movimento para o bloco atual. Com base em um ou mais vetores de movimento para o bloco atual, o codificador de vídeo 20 pode usar as informações de movimento de blocos anteriormente codificados para gerar um vetor de movimento inicial, que pode ser usado para apontar para o bloco correspondente em uma imagem de referência colocada. O codificador de vídeo 20 pode gerar então dados residuais usando o bloco preditivo e o bloco atual.
[0061] Similarmente, o decodificador de vídeo 30 pode usar as informações de movimento de blocos vizinhos codificados para gerar um vetor de movimento inicial, que pode ser usado para apontar para o bloco correspondente em uma imagem de referência colocada. Por exemplo, o decodificador de vídeo 30 pode determinar, para um bloco atual em uma imagem atual dos dados de vídeo, um bloco de codificação em uma imagem anteriormente codificada. O bloco de codificação pode cobrir um bloco colocado na imagem anteriormente codificada e uma posição na imagem anteriormente codificada. O bloco colocado pode ter um mesmo formato que o bloco atual, e uma localização do bloco colocado na imagem anteriormente codificada pode ser igual a uma localização do bloco atual na imagem atual. Com base em um ou mais vetores de movimento para o bloco de codificação, o decodificador de vídeo 30 pode determinar um ou mais vetores de movimento para o bloco atual.
[0062] Com base em um ou mais vetores de movimento para o bloco atual, o decodificador de vídeo 30 pode usar as informações de movimento de blocos anteriormente codificados para gerar um vetor de movimento inicial, que pode ser usado para apontar para o bloco correspondente em uma imagem de referência colocada. O decodificador de vídeo 30 pode usar então dados residuais e o bloco preditivo para reconstruir o bloco atual.
[0063] Um candidato de fusão corresponde a um conjunto completo de informações de movimento enquanto um candidato AMVP contém apenas um vetor de movimento para uma direção de predição específica. Os candidatos para ambos o modo de fusão e modo AMVP podem ser derivados similarmente a partir dos mesmos blocos vizinhos espacial e temporal.
[0064] Em um codificador de vídeo (isto é, um codificador de vídeo ou decodificador de vídeo) um vetor de movimento pode ser escalonado. Ao escalonar um vetor de movimento, o valor de um vetor de movimento pode ser proporcional à distância de imagens no tempo de apresentação. Um vetor de movimento associa duas imagens, a imagem de referência colocada e a imagem contendo o vetor de movimento. Nessa revelação, o vetor de movimento é um vetor de movimento inicial e a imagem de referência colocada inclui primeiros vetores de movimento derivados (pelo menos um primeiro vetor de movimento derivado) e a imagem contendo o vetor de movimento é a imagem de codificação atual. Quando o vetor de movimento inicial é usado para predizer o outro vetor de movimento, isto é, o primeiro vetor de movimento derivado na imagem de referência colocada, a distância da imagem de contenção e a imagem de referência é calculada com base em valores de Contagem de Ordem de Imagem (POC) da imagem de referência colocada e a imagem de contenção (isto é, a imagem de codificação atual).
[0065] Para um vetor de movimento a ser predito, tanto sua imagem de contenção associada como imagem de referência colocada podem ser diferentes. Portanto, uma nova distância (com base em POC) é calculada. O vetor de movimento inicial é escalonado com base nessas duas distâncias POC. Para um candidato vizinho espacial, as imagens de contenção para os dois vetores de movimento são iguais, enquanto as imagens de referência colocadas são diferentes. Na proposta para JEM e em JEM, escalonamento de vetor de movimento se aplica tanto a TMVP e AMVP para candidatos vizinhos espacial e temporal.
[0066] No JEM existente, predição de vetor de movimento temporal avançado (ATMVP), informações de movimento (incluindo vetores de movimento e quadros de referência) em ATMVP vêm atrás somente das imagens de referência. Para derivar ATMVP do bloco atual a primeira etapa é para determinar onde os vetores de movimento temporal devem ser buscados (a partir do buffer DPB 1216 na figura 7 ou DPB 1312 na figura 8). O ATMVP pode encontrar o primeiro vetor de movimento disponível em cinco blocos vizinhos na ordem fixa: (Esquerda, acima, acima- direita, esquerda-inferior e acima-esquerda). A definição dos cinco blocos vizinhos é igual aos candidatos de fusão espaciais do bloco atual. Para evitar o processo de varredura repetitiva de blocos vizinhos anteriormente codificados, é desejável encontrar o vetor de movimento do primeiro candidato de fusão na lista de candidatos de fusão já derivada para determinar onde buscar o vetor de movimento temporal. O bloco atual pode ser dividido em sub-bloco NxN quadrado (por exemplo, N é definido em 4).
Os vetores de movimento dos sub-blocos podem ser então derivados recursivamente, seguindo ordem de varredura raster. Como exemplo, o fluxograma em software de referência JEM atual é ilustrado na figura 3A-3C.
[0067] Observe que na Etapa 1 da figura 3A, na Etapa 1, um vetor de movimento de início é obtido somente da imagem de referência. Na etapa 2 da figura 3B, o vetor de movimento inicial é obtido a partir somente da imagem de referência. Essas limitações criam o problema acima mencionado que em algoritmos ATMVP, informações do vetor de movimento são buscadas a partir de imagens de referência que são armazenadas no buffer de referência (por exemplo, buffer DPB 1216 na figura 7 ou DPB 1312 na figura 8). As informações de vetor de movimento de cada armazenagem de referência no buffer de referência aumenta o consumo de energia e tamanho de memória.
[0068] O aperfeiçoamento proposto para ATMVP para JEM atual e padrões futuros são ilustrados nas figuras 4A, 4B bem como figura 6, fluxogramas. O aperfeiçoamento proposto é que o vetor de movimento inicial pode apontar para a imagem colocada e não a imagem de referência para determinar vetores de movimento.
[0069] É considerado que os vetores de movimento (MV) do bloco atual na imagem atual podem ser derivados dos vetores de movimento (isto é, um primeiro conjunto de vetores de movimento) associados a um bloco correspondente da imagem de referência colocada e a imagem de codificação atual somente. Desse modo, os vetores de movimento do bloco atual na imagem atual que podem ser derivados podem ser considerados um segundo conjunto de vetores de movimento derivados. Isso supera a dependência de ter vetores de movimento derivados somente nas imagens de referência, o que aumenta o buffer de referência como discutido anteriormente.
[0070] Em um exemplo, o codificador ou decodificador pode estar no modo ATMVP, e somente MVs da imagem de codificação atual e da imagem colocada podem ser usados para derivar os vetores de movimento no modo ATMVP. No modo ATMVP, pode haver um modo de fusão onde somente MVs da imagem de codificação atual e da imagem colocada podem ser usados para derivar os vetores de movimento no modo fusão. Ao passo que anteriormente, informações de movimento foram usadas encontrando os vetores de movimento de blocos vizinhos de um bloco atual nas imagens de referência, considera-se que encontrar uma imagem de referência colocada melhora a eficiência de memória.
[0071] Em um exemplo como ilustrado no exemplo A da figura 4A, há uma verificação de decisão 406A, onde um conjunto de imagens (por exemplo, P4, P3, P2 como na figura 2A e/ou figura 2B), pode ter pelo menos um bloco anterior que foi previamente codificado. A imagem atual (por exemplo, P1 na figura 2A e/ou figura 2B) pode ter um bloco atual (CB-P1) a ser codificado, tem um candidato espacial de blocos vizinhos (NB1-NB5) que foram também previamente codificados. Isto quer dizer, a verificação de decisão para encontrar o vetor de movimento inicial se baseia em uma verificação se os vetores de movimento dos blocos decodificados anteriores na imagem de codificação atual.
[0072] Os vetores de movimento dos blocos anteriormente codificados, incluindo blocos vizinhos, na imagem atual podem ser usados para encontrar o bloco correspondente associado ao bloco atual. Os vetores de movimento dos blocos anteriormente codificados, incluindo blocos vizinhos, na imagem atual podem ser verificados em uma ordem fixa para encontrar um vetor de movimento inicial que aponta para uma imagem de referência colocada. Por exemplo, a ordem fixa pode ser para verificar blocos vizinhos (NB1-NB5).
[0073] Se o bloco correspondente foi codificado com inter-predição, isto é, temporalmente entre a imagem atual (P1) e uma imagem anterior (por exemplo, P2-P4) e um casamento for encontrado, então uma das imagens anteriores é uma imagem colocada, e o exemplo A: 406A verificação de decisão é parada (sim). Desse modo, um dos blocos vizinhos em torno do bloco atual na imagem atual tem um vetor de movimento que aponta para um bloco correspondente, e pode ser indicado como o vetor de movimento inicial 410.
[0074] No exemplo A, 406A, é desejável priorizar a busca por um vetor de movimento inicial por primeiramente verificar se há vetores de movimento disponíveis dos blocos vizinhos do bloco atual em uma imagem de referência. Se houver um casamento, a imagem de referência é também uma imagem de referência colocada, e a etapa 1 e etapa 2 aperfeiçoadas levam à etapa aperfeiçoada 3. Desse modo, a verificação de decisão para encontrar o vetor de movimento inicial se baseia em uma ordem fixa, onde a ordem fixa é verificar os blocos decodificados anteriores antes do bloco atual da imagem atual dos dados de vídeo. Alternativamente, pode ser possível que a verificação de decisão não seja a prioridade mais alta para encontrar um vetor de movimento inicial que aponta para a imagem de referência colocada.
[0075] Na figura 4B, a etapa aperfeiçoada 3 é ilustrada. Para cada bloco NxN (por exemplo, N=4) em um bloco atual, o vetor de movimento inicial pode apontar para a imagem colocada (vide a figura 5D), e os vetores de movimento na imagem colocada a partir do bloco correspondente apontado pelo bloco atual podem ser derivados. Os vetores de movimento na imagem colocada podem ser escalonados para a referência ID=0, para cada direção. Se a localização de referência usada pelo bloco atual for diferente da referência usada pelo bloco a partir do qual o MV é derivado, escalonamento é usado. Como tal, a verificação de decisão para encontrar o vetor de movimento inicial se baseia em uma operação de escalonamento para o vetor de movimento dos MV’s dos blocos decodificados anteriores. Além disso, a verificação de decisão para encontrar o vetor de movimento inicial inclui uma escala de outros vetores de movimento que não são blocos vizinhos do bloco atual na imagem de codificação atual e uma verificação se os outros vetores de movimento escalonados apontam para uma imagem de referência colocada.
[0076] Em um exemplo, forçamos o modo ATMVP a usar a referência de qual ID igual a 0, assim temos de escalonar o MV para a referência cujo ID é 0. Em uma modalidade, a busca pelo vetor de movimento inicial no exemplo A, 406A, pode ser implementada como a prioridade mais alta, isto é, realizada antes dos outros exemplos B-E (406B-406E). Desse modo, a verificação de decisão é implementada como a prioridade mais alta para encontrar o vetor de movimento inicial que aponta para a imagem de referência colocada.
[0077] Em outro exemplo, exemplo B 406B, se não houver um casamento (não) em uma verificação anterior, (por exemplo, 406A), então a imagem de referência colocada não foi uma imagem de referência, e a imagem de referência colocada pode estar em posições diferentes em tempo em relação à imagem atual e uma imagem de referência.
[0078] Três exemplos diferentes são ilustrados nas figuras conceptuais figuras 5A-5C. Nos exemplos nas figuras 5A-5C, se um vetor de movimento inicial não for encontrado que resulte no bloco atual 512 de uma imagem atual 510 casando com um bloco associado em uma imagem diferente associada ao bloco atual 512, então o vetor de movimento (por exemplo, 528) de um candidato espacial da vizinhança de uma imagem de referência 518 pode ser escalonado para uma imagem de referência colocada 526. Em uma modalidade, em casos onde o vetor de movimento 528 pode ser escalonado para uma imagem de referência colocada 526, as ilustrações no exemplo 406B, podem ser implementadas como a segunda prioridade mais alta, isto é, executadas antes de outros exemplos 406C-406E. A distância da imagem atual e da imagem de referência colocada é calculada com base nos valores de Contagem de Ordem de Imagem (POC) da imagem atual e da imagem de referência colocada. O vetor de movimento escalonado pode ser baseado em uma operação linear, por exemplo, baseado em uma divisão, multiplicação, subtração e/ou uma adição. O vetor de movimento escalonado pode ser mencionado como um vetor de movimento interpolado. Em alguns casos, o vetor de movimento escalonado pode ser também mencionado como um vetor de movimento extrapolado. Desse modo, a operação de escalonamento pode incluir interpolação ou uma extrapolação dos vetores de movimento dos blocos decodificados anteriores na imagem de codificação atual.
[0079] Por exemplo, na figura 5A, vetores de movimento (por exemplo, vetor de movimento vizinho (MV) 544) de candidatos espaciais vizinhos do bloco atual 512 na imagem atual 510 podem ser escalonados para a imagem de referência colocada 526. O escalonamento pode ser mencionado como uma interpolação e o vetor escalonado gerado pode ser mencionado como um vetor de movimento de interpolação 536 que é baseado no valor POC da imagem de referência colocada 526 e da imagem de referência 518. Se a localização de um bloco associado 526 dos dados de vídeo na imagem colocada 526 corresponder ao bloco atual 512 de dados de vídeo na imagem de codificação atual 510, com base no uso de blocos anteriormente decodificados (por exemplo, um candidato espacial vizinho) na imagem de codificação atual 510 então o vetor de movimento de interpolação 536 pode ser o vetor de movimento inicial. Na figura 5A, o vetor de movimento de interpolação 536 representa uma distância temporal mais curta do que o vetor de movimento vizinho 544, porque a imagem de referência colocada 526 está mais próxima à imagem atual 510 do que a imagem de referência 518.
[0080] Em outras modalidades, ilustradas na figura 5B e figura 5C, a imagem de referência colocada 526 não está localizada entre uma imagem de referência 518 e uma imagem atual 510, o vetor de movimento (por exemplo,
MV vizinho 544) pode ser escalonado para a imagem de referência colocada 526. O escalonamento pode ser mencionado como uma extrapolação e o vetor escalonado gerado pode ser mencionado como um vetor de extrapolação (por exemplo, vetor de movimento extrapolado 537) que se baseia no valor POC da imagem de referência colocada 526 e da imagem de referência 518. Se a localização de um bloco associado 528 dos dados de vídeo na imagem colocada 526 corresponder ao bloco atual 512 de dados de vídeo na imagem de codificação atual 510, com base no uso de blocos anteriormente decodificados (por exemplo, um candidato espacial vizinho) na imagem de codificação atual 510 então o vetor de movimento extrapolado 537 pode ser o vetor de movimento inicial. Os exemplos ilustrados nas figuras 5B e 5C podem ser implementados com a mesma prioridade que o exemplo na figura 5A ou, em uma modalidade alternativa, podem ser implementados com uma prioridade mais baixa que aquela do exemplo na figura 5A.
[0081] Na figura 5B, o vetor de movimento de extrapolação 537 representa uma distância temporal mais longa do que o vetor de movimento vizinho 544, porque a imagem de referência colocada 526 está mais distante da imagem atual 510 do que a imagem de referência 518.
[0082] Na figura 5C, o vetor de movimento de extrapolação 537 representa uma distância temporal que está na direção oposta à distância temporal do vetor de movimento vizinho 544 até a imagem de referência 518. Como discutido acima, a imagem de referência colocada 526 não requer necessariamente salvar um índice de referência em um buffer de imagem de decodificador. Como tal, o uso de imagem de referência colocada é mais desejável que usar uma imagem de referência 528 para encontrar um vetor de movimento inicial.
[0083] Quando o vetor de movimento escalonado (por exemplo, vetor de movimento de interpolação 536, ou vetor de movimento de extrapolação 537) aponta para uma imagem de referência colocada 526 a etapa 1 e a etapa 2 aperfeiçoadas levam à etapa aperfeiçoada 3. O vetor de movimento escalonado se torna então o vetor de movimento inicial (como ilustrado na figura 5D).
[0084] No exemplo C: 406C, uma verificação de decisão (i) pode ser realizada para escalonar os vetores de movimento dos blocos vizinhos; (ii) se os vetores de movimento vizinhos escalonados puderem ser verificados em uma ordem fixa (por exemplo, NB1-NB5), para encontrar se o ponto até uma imagem colocada em uma lista (lista 0 ou lista 1) para encontrar o vetor de movimento inicial.
[0085] Se houver um casamento, o vetor de movimento escalonado aponta para uma imagem de referência colocada em uma lista e a etapa 1 e etapa 2 aperfeiçoadas levam à etapa aperfeiçoada 3. O vetor de movimento escalonado se torna então o vetor de movimento inicial (como ilustrado na figura 5D, onde a imagem colocada está localizada em uma lista (lista 0 ou lista 1).
[0086] Se houver um casamento, o vetor de movimento escalonado aponta para uma imagem de referência colocada em uma lista e a etapa 1 e etapa 2 aperfeiçoadas levam à etapa aperfeiçoada 3. O vetor de movimento escalonado se torna então o vetor de movimento inicial (como ilustrado na figura 5D).
[0087] No exemplo C, 406C, se uma verificação de decisão anterior como descrito com relação aos exemplos 406A,e 406B, não resultou em um casamento entre um bloco atual na imagem atual 510 e outro bloco com um vetor de movimento associado (por exemplo, em uma imagem de referência (exemplo 406A), onde o vetor de movimento associado é escalonado em uma imagem de referência colocada (exemplo 406B), então uma verificação de decisão adicional 406D pode ser realizada com uma prioridade mais baixa que qualquer dos exemplos anteriores. Desse modo, a verificação de decisão pode não necessariamente ser a prioridade mais alta para encontrar um vetor de movimento inicial que aponta para a imagem de referência colocada.
[0088] No exemplo D: a verificação de decisão 406D pode (i) primeiramente escalonar outros MVs (que não são blocos vizinhos do bloco atual na imagem atual) e (ii) verificar se os outros MVs escalonados apontam para uma imagem colocada para encontrar o MV inicial. Se um dos outros vetores de movimento escalonados apontarem para uma imagem colocada, então o outro vetor de movimento escalonado pode ser o vetor de movimento inicial (como ilustrado na figura 5D).
[0089] Se houver um casamento, o outro vetor de movimento escalonado aponta para uma imagem de referência colocada, e a etapa 1 e a etapa 2 aperfeiçoadas levam à etapa aperfeiçoada 3. O vetor de movimento escalonado se torna então o vetor de movimento inicial (como ilustrado na figura 5D). No exemplo E: a verificação de decisão 406E se todos os vetores de movimento do bloco vizinho falharam, então o vetor de movimento default (isto é, vetor de movimento (0, 0) pode ser verificado para apontar para uma imagem colocada para encontrar o MV inicial. Se houver um casamento, o vetor de movimento default aponta para uma imagem de referência colocada, e a etapa 1 e etapa 2 aperfeiçoadas levam à etapa aperfeiçoada 3. O vetor de movimento default se torna então o vetor de movimento inicial (como ilustrado na figura 5D).
[0090] Além dos exemplos A-E, aplicáveis no modo ATMVP, todo bloco pode ser um bloco vizinho, porém um bloco vizinho pode não necessariamente ser o candidato de fusão, isto é, o bloco vizinho da imagem atual pode não necessariamente ser um candidato de fusão. Desse modo, um bloco anteriormente codificado que é um bloco vizinho pode ser usado para encontrar um vetor de movimento inicial. Similarmente, um bloco anteriormente codificado que é um bloco vizinho da imagem atual e também é um candidato de fusão pode ser usado para encontrar um vetor de movimento inicial.
[0091] Desse modo, pode ser também possível usar os candidatos de fusão na lista de candidato de fusão para gerar o vetor de movimento inicial. Em um exemplo, se mais de um candidato espacial estiver disponível, a ordem de verificação pode depender das imagens de referência usadas pelos candidatos espaciais para gerar o vetor de movimento inicial. Em outro exemplo, se mais de um candidato de fusão estiver disponível, uma ordem de verificação pode depender da ordem de candidatos em uma lista de candidatos de fusão. Ainda em outro exemplo, se mais de um candidato de fusão estiver disponível, um candidato temporal em uma imagem anteriormente decodificada é verificado antes de um candidato espacial na imagem de codificação atual. Para eficiência de codificação, em outro exemplo, se mais de um candidato de fusão estiver disponível, um candidato espacial na imagem de codificação atual é verificado antes de um temporal em uma imagem anteriormente decodificada.
[0092] Nos exemplos acima onde o vetor de movimento inicial pode ser gerado por uma função dos vetores de movimento dos blocos vizinhos, pode haver variantes diferentes usadas além de usar expressamente os vetores de movimento de blocos vizinhos. Por exemplo, o valor mediano dos vetores de movimento dos blocos vizinhos pode ser usado como o vetor de movimento inicial. Em outra variante, o valor médio dos vetores de movimento dos blocos vizinhos pode ser o vetor de movimento inicial.
[0093] Com as técnicas nessa revelação, em modo de fusão que é um modo no modo ATMVP, um vetor de movimento pode ser adicionado a uma lista e pode ser usado para predizer o outro vetor de movimento (por exemplo, o vetor de movimento inicial). Se os POCs de referências usados pelos candidatos de fusão forem diferentes, então os vetores de movimento podem ser escalonados para a imagem de referência colocada 526.
[0094] Por exemplo, 406AMV (análogo ao exemplo 406A), o vetor de movimento de um candidato de fusão espacial apontando para a imagem de referência colocada pode ser implementado como o vetor de movimento inicial com a prioridade mais alta. Para conveniência, “MV” é apenso aos rótulos de referência nos exemplos 406A-406E, para descrever expressamente a aplicabilidade dos exemplos 406A-
406E quando o modo ATMVP está no modo fusão.
[0095] Se um vetor de movimento inicial no exemplo 406AMV não puder ser encontrado, então (análogo ao exemplo 406B) outro exemplo, 406BMV, pode compreender o vetor de movimento de um candidato de fusão espacial que pode ser escalonado (por exemplo, interpolado ou extrapolado) para a imagem de referência colocada 526. O vetor de movimento escalonado (interpolado ou extrapolado) pode ser implementado como o vetor de movimento inicial e a verificação pode ter uma prioridade mais baixa do que aquela do exemplo 406AMV.
[0096] Se as verificações nos exemplos 406AMV ou 406BMV não resultarem em um vetor inicial sendo encontrado, então em outro exemplo, 406CMW (análogo ao exemplo 406C), o vetor de movimento de um candidato de fusão espacial pode ser escalonado para a imagem de referência colocada com extrapolação é tratado como vetor de movimento inicial como ilustrado na figura 5D. O exemplo 406CMV pode ser implementado como uma verificação de prioridade mais baixa do que aquela dos exemplos 406AMV e 406BMV.
[0097] É possível que um casamento não seja encontrado com as várias implementações no exemplo 406AMV, 406BMV ou 406CMV. Em tal caso, (análogo ao exemplo 406D) o exemplo 406DMV, a verificação de decisão 406D pode (i) primeiramente escalonar outros MVs (que não são blocos vizinhos do bloco atual na imagem atual) e (ii) verificar se os outros MVs escalonados apontam para uma imagem colocada para encontrar o MV inicial. Se um dos outros vetores de movimento escalonados apontarem para uma imagem colocada, então o outro vetor de movimento escalonado pode ser o vetor de movimento inicial (como ilustrado na figura 5D). O exemplo 406DMV pode ser implementado como uma verificação de prioridade mais baixa que aquela dos exemplos 406AMV, 406BMV ou 406CMV.
[0098] É possível que um casamento não seja encontrado com as várias implementações no exemplo 406AMV, 406BMV, 406CMV ou 406DMV. Em tal caso, (análogo ao exemplo 406E) exemplo 406EMV, a verificação de decisão 406E se todos os vetores de movimento do bloco vizinho falharam, então o vetor de movimento default (isto é, vetor de movimento (0, 0) pode ser verificado para apontar para uma imagem colocada para encontrar o MV inicial. Se houver um casamento, o vetor de movimento default aponta para uma imagem de referência colocada, e a etapa 1 e etapa 2 aperfeiçoadas levam à etapa aperfeiçoada 3. O vetor de movimento default se torna então o vetor de movimento inicial (como ilustrado na figura 5D). Desse modo, a verificação de decisão para encontrar o vetor de movimento inicial pode incluir usar um vetor de movimento default para apontar para a imagem de referência colocada.
[0099] Deve ser observado que há variantes para os exemplos 406AMV, 406BMV, 406CMV, 406DMV e 406EMV. Em uma variante, se mais de um candidato de fusão estiver disponível, a ordem de verificação pode depender da ordem de candidatos na lista de candidatos de fusão. Em outra variante, se mais de um candidato de fusão estiver disponível, a ordem de verificação pode depender dos tipos dos candidatos. Os candidatos temporais podem ser verificados primeiramente, então os candidatos espaciais podem ser verificados; ou, alternativamente, os candidatos espaciais podem ser verificados primeiramente, então os candidatos temporais podem ser verificados. Em outra variante, o valor mediano dos MVs de candidatos de fusão pode ser usado como o vetor de movimento inicial, isto é, o vetor de movimento inicial pode ser um valor médio de vetores de movimento de pelo menos dois blocos codificados anteriores. Em geral, o vetor de movimento inicial pode ser baseado em uma comparação de pelo menos dois vetores de movimento. Em outra variante, o vetor de movimento inicial pode ser um valor mediano de vetores de movimento de pelo menos três blocos codificados anteriores. Em outra variante, o valor médio dos MVs de candidatos de fusão pode ser usado como o MV inicial. Em alguns dos exemplos ou variantes anteriores, se os POCs de referências usados pelos candidatos de fusão forem diferentes, os MVs podem ser escalonados para a imagem de referência colocada.
[0100] Como ilustrado na figura 5D, o vetor de movimento inicial pode apontar para uma posição de um bloco (ou sub-bloco) na imagem de referência colocada 526. Vetores de movimento 606A-606D na imagem de referência colocada 526 podem ser derivados para os sub-blocos associados à posição do bloco atual na imagem atual 526. Embora haja quatro vetores de movimento 606A-606D mostrados, e esses quatro vetores de movimento 606A-606D sejam os primeiros vetores de movimento derivados, pode haver somente um primeiro vetor de movimento derivado 606x, onde X =A, B, C, ou D. Como tal, o bloco associado na imagem de referência colocada 526 inclui sub-blocos com os primeiros vetores de movimento derivados. O vetor de movimento inicial pode ser determinado com base em uma verificação de decisão. Em algumas modalidades, o vetor de movimento inicial pode ser determinado por exemplo 406A, 406B, 406C, 406D ou exemplo 406E. Em uma modalidade alternativa, o vetor de movimento inicial pode ser determinado por exemplo 406AMV, 406BMV, 406CMV, 406DMV ou exemplo 406EMV.
[0101] Os primeiros vetores de movimento derivados podem ser escalonados ou usados. Por exemplo, um ou mais dos primeiros vetores de movimento derivados 606A-606D podem apontar para outro bloco em outra imagem. O outro bloco pode incluir outro vetor de movimento (isto é, um segundo vetor de movimento derivado). A distância temporal entre a imagem de referência colocada e a outra imagem pode não ser adjacente uma à outra. A distância da imagem de referência colocada e a outra imagem pode ser calculada com base nos valores de Contagem de Ordem de Imagem (POC) da imagem de referência colocada e a outra imagem. Como tal, os primeiros vetores de movimento derivados podem ser escalonados. Em casos onde a imagem de referência colocada e a outra imagem estão adjacentes uma à outra, o primeiro vetor de movimento derivado pode ser usado (por exemplo, copiado ou referenciado) para gerar um segundo vetor de movimento derivado. No caso onde pelo menos um primeiro vetor de movimento derivado (606A, 606B, 606C ou 606D) é escalonado, os primeiros vetores de movimento derivados escalonados podem ser aplicados ao bloco atual da imagem atual para gerar pelo menos um segundo vetor de movimento derivado na outra imagem. A outra imagem pode ser a imagem de codificação atual. Além disso, pelo menos um segundo vetor de movimento derivado
(não traçado) pode apontar para outra imagem (por exemplo, pode ser a imagem de codificação atual) com base em inter- direção. Uma inter-direção pode incluir um vetor de movimento a partir de um bloco para outro bloco na Lista 0 ou Lista 1 (como discutido acima). Desse modo, pelo menos um segundo vetor de movimento derivado pode apontar para outro bloco na Lista 0 ou Lista 1 e na Lista 0 ou Lista 1, a imagem de codificação atual pode ser incluída em uma dessas duas listas. O outro bloco pode ser o bloco atual na imagem de codificação atual.
[0102] Além disso, a imagem de referência colocada pode ser a imagem de referência com um índice de referência e o índice de referência pode ter um número de valores, por exemplo, 0, 1, 2, 3 etc. Por conveniência, o índice de referência pode ser o valor default de 0. Deve ser observado que pelo menos um primeiro vetor de movimento derivado do bloco associado na imagem de referência colocada pode ser escalonado de acordo com o POC do bloco atual na imagem atual em relação à imagem de referência colocada.
[0103] A imagem de referência colocada 526 pode ser igual ao definido em HEVC ou uma imagem diferente pode ser sinalizada a partir do codificador para o decodificador em nível de sequência, nível de imagem, nível de fatia ou nível de bloco. Por exemplo, a imagem de referência colocada pode ser sinalizada no Conjunto de Parâmetros de sequência (SPS), Conjunto de parâmetros de Imagem (PPS), cabeçalho de Fatia (SH), Unidade de árvore de codificação (CTU) ou Unidade de Codificação (CU).
[0104] A figura 6 é um fluxograma ilustrando operação de exemplo do decodificador de vídeo 30 da figura 1 e figura 8 na execução de vários aspectos das técnicas descritas nessa revelação. Como mostrado no exemplo da figura 6, o decodificador de vídeo 30 pode ser configurado para decodificar dados de vídeo de acordo com as técnicas dessa revelação.
[0105] O decodificador de vídeo 30 pode ser configurado para incluir uma memória (por exemplo, DPB 1316 na figura 8) para armazenar dados de vídeo e um processador que é configurado para determinar qual imagem é uma imagem colocada 250. Além disso, o processador pode ser configurado para determinar uma localização de um bloco associado dos dados de vídeo na imagem colocada que corresponde ao bloco atual de dados de vídeo na imagem de codificação atual, com base no uso de blocos anteriormente decodificados na imagem de codificação atual para encontrar um vetor de movimento inicial entre o bloco associado na imagem colocada e o bloco atual na imagem de codificação atual, em que o bloco associado dos dados de vídeo inclui pelo menos um primeiro vetor de movimento derivado 252. O processador também pode ser configurado para determinar o vetor de movimento inicial com base em uma verificação de decisão 254. O processador também pode ser configurado para determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual com base pelo menos no primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada. O processador também pode ser configurado para determinar informações de movimento do bloco atual de dados de vídeo na imagem de codificação atual 256, e usar as informações de movimento determinado para obter um bloco de predição, a seguir gerar um bloco reconstruído com base em uma combinação do bloco de predição e um bloco residual 258.
[0106] A figura 7 é um diagrama de blocos ilustrando um codificador de vídeo de exemplo 20 que pode implementar as técnicas dessa revelação. A figura 8 é provida para fins de explicação e não deve ser considerada limitadora das técnicas como amplamente exemplificadas e descritas nessa revelação. As técnicas dessa revelação podem ser aplicáveis a vários padrões ou métodos de codificação.
[0107] No exemplo da figura 7, o codificador de vídeo 20 inclui uma unidade de processamento de predição 1200, memória de dados de vídeo 1201, uma unidade de geração residual 1202, uma unidade de processamento de transformada 1204, uma unidade de quantização 1206, uma unidade de quantização inversa 1208, uma unidade de processamento de transformada inversa 1210, uma unidade de reconstrução 1212, uma unidade de filtro 1214, um buffer de imagem decodificada 1216 e uma unidade de codificação por entropia 1218. A unidade de processamento de predição 1200 inclui uma unidade de processamento inter-predição
1220.
[0108] A memória de dados de vídeo 1201 pode ser configurada para 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 1201 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O buffer de imagem decodificada 1216 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, em modos intra- ou inter-codificação. A memória de dados de vídeo 1201 e buffer de imagem decodificada 1216 podem ser formadas por qualquer de uma variedade de dispositivos de memória, como memória de acesso aleatório dinâmico (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetoresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 1201 e buffer de imagem decodificada 1216 podem ser providas pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 1201 pode ser em chip com outros componentes do codificador de vídeo 20, ou fora de chip em relação a esses componentes. A memória de dados de vídeo 1201 pode ser igual a ou parte da mídia de armazenagem 19 da figura 1.
[0109] A unidade de processamento inter-predição 1220 pode gerar dados preditivos para um bloco atual. Como parte de gerar os dados preditivos para um bloco atual, a unidade de processamento inter-predição 1220 pode executar inter perdição no bloco atual. Os dados preditivos para o bloco atual podem incluir blocos preditivos do bloco atual e informações de movimento para o bloco atual como descrito acima. A unidade de processamento inter-predição 1220 pode aplicar as técnicas para usar as informações de movimento de blocos vizinhos codificados para gerar um vetor de movimento inicial, que pode ser usado para apontar para o bloco correspondente em uma imagem de referência colocada como descrito em outra parte nessa revelação.
[0110] A unidade de geração residual 1202 pode gerar os blocos residuais do bloco atual de modo que cada amostra nos blocos residuais tenha um valor igual a uma diferença entre uma amostra em um bloco de codificação do bloco atual e uma amostra correspondente em um bloco preditivo selecionado correspondente de um bloco atual.
[0111] A unidade de processamento de transformada 1204 pode executar divisão dos blocos residuais de um bloco atual em blocos de transformada do bloco atual. A unidade de quantização 1206 pode quantizar os coeficientes de transformada em um bloco de coeficiente.
[0112] A unidade de quantização inversa 1208 e a unidade de processamento de transformada inversa 1210 podem aplicar quantização inversa e transformadas inversas em um bloco de coeficiente, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente. A unidade de reconstrução 1212 pode acrescentar o bloco residual reconstruído a amostras correspondentes a partir de um ou mais blocos preditivos gerados pela unidade de processamento de predição 1200 para produzir um bloco de transformada reconstruída associada a um bloco atual. Por reconstruir blocos de transformada para cada bloco atual desse modo, o codificador de vídeo 20 pode reconstruir os blocos de codificação do bloco atual.
[0113] A unidade de filtro 1214 pode executar uma ou mais operações de desblocagem para reduzir artefatos de blocagem nos blocos de codificação associados a um bloco atual. O buffer de imagem decodificada 1216 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro 1214 executar uma ou mais operações de desblocagem nos blocos de codificação reconstruídos. Com as técnicas descritas nessa revelação, a unidade de processamento inter-predição 1220 pode usar uma imagem de referência colocada que contém os blocos de codificação reconstruídos para executar inter predição nos blocos atuais de outras imagens, ao invés de uma imagem de referência que contém os blocos de codificação reconstruídos para executar inter predição nos blocos atuais de outras imagens. Isso permite um sistema eficiente em memória, visto que o DPB 1216 não tem de armazenar cada índice de referência para cada bloco codificado.
[0114] A unidade de codificação por entropia 1218 pode receber dados a partir de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação por entropia 1218 pode receber blocos de coeficiente a partir da unidade de quantização 1206 e pode receber elementos de sintaxe a partir da unidade de processamento de predição 1200. A unidade de codificação por entropia 1218 pode executar uma ou mais operações de codificação por entropia nos dados para gerar dados codificados por entropia. Por exemplo, a unidade de codificação por entropia 1218 pode executar uma operação CABAC, uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação aritmética binária adaptável ao contexto (SBAC), uma operação de codificação de Entropia de Divisão de Intervalo de probabilidade (PIPE), uma operação de codificação Exponencial-Golomb, ou outro tipo de operação de codificação por entropia nos dados. O codificador de vídeo 20 pode transmitir um fluxo de bits que inclui dados codificados por entropia gerados pela unidade de codificação por entropia 1218. Por exemplo, o fluxo de bits pode incluir dados que representam valores de coeficientes de transformada para um bloco atual.
[0115] Vários componentes do codificador de vídeo 20 podem executar as técnicas descritas na presente invenção e utilizar as informações de movimento de blocos vizinhos codificados para gerar um vetor de movimento inicial, que pode ser usado para apontar para o bloco correspondente em uma imagem de referência colocada para codificar dados de vídeo. O codificador de vídeo 20 pode gerar então dados residuais usando o bloco preditivo e o bloco atual.
[0116] A figura 8 é um diagrama de blocos ilustrando um decodificador de vídeo de exemplo 30 que é configurado para implementar as técnicas dessa revelação. A figura 8 é provida para fins de explicação e não é limitadora das técnicas como amplamente exemplificadas e descritas nessa revelação. Para fins de explicação, essa revelação descreve o decodificador de vídeo 30 no contexto de codificação JEM e no contexto para a proposta para aperfeiçoar a codificação JEM. Entretanto, as técnicas dessa revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0117] No exemplo da figura 8, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 1300, memória de dados de vídeo 1301, uma unidade de processamento de predição 1302, uma quantidade de quantização inversa 1304, uma unidade de processamento de transformada inversa 1306, uma unidade de reconstrução 1308, uma unidade de filtro 1310 e um buffer de imagem decodificada 1312. A unidade de processamento de predição 1302 inclui uma unidade de compensação de movimento 1314 e uma unidade de processamento intra-predição 1316. Em outros exemplos, o decodificador de vídeo 30 pode incluir, mais, menos ou diferentes componentes funcionais.
[0118] Se um bloco atual for codificado usando inter predição, a unidade de compensação de movimento 1314 pode determinar informações de movimento para o bloco atual. A unidade de compensação de movimento 1314 pode determinar, com base nas informações de movimento do bloco atual, um ou mais blocos anteriormente decodificados na imagem atual para encontrar um vetor de movimento inicial entre o bloco associado na imagem de referência colocada e o bloco atual na imagem de codificação atual (isto é, imagem de decodificação ao referenciar um processo de decodificação por um dispositivo de decodificação), onde o bloco associado dos dados de vídeo inclui pelo menos um vetor de movimento derivado.
[0119] A unidade de compensação de movimento 1314 pode aplicar as técnicas para usar as informações de movimento de blocos vizinhos codificados para gerar um vetor de movimento inicial e determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual com base pelo menos em um primeiro vetor de movimento derivado associado ao bloco associado na imagem de referência colocada.
[0120] Além disso, a unidade de compensação de movimento 1314 pode determinar informações de movimento do bloco atual de dados de vídeo na imagem de codificação atual com base pelo menos em um segundo vetor de movimento derivado, e usar as informações de movimento determinado para obter um bloco de predição (ou por blocos preditivos de cor, isto é, blocos luma, CB e Cr).
[0121] A unidade de reconstrução 1308 pode usar blocos de transformada (por exemplo, blocos de transformada luma, Cb e Cr) para o bloco atual e os blocos preditivos (por exemplo, blocos luma, Cb e Cr) do bloco atual, e gerar um valor de diferença (por exemplo, um bloco residual) para reconstruir os blocos de codificação (por exemplo, blocos de codificação luma, Cb e Cr) para o bloco atual. A unidade de filtro 1310 pode executar uma operação desblocagem para reduzir artefatos de blocagem associados aos blocos de codificação dos blocos atuais. O decodificador de vídeo 30 pode armazenar os blocos de codificação do bloco atual em buffer de imagem decodificada
1312.
[0122] No modo de fusão, o decodificador de vídeo 30 pode usar um ou mais vetores de movimento dos vizinhos espaciais anteriormente codificados para o bloco atual em uma lista de candidatos de fusão unificada para o bloco atual. Como tal, no uso das informações de movimento de blocos vizinhos codificados para gerar um vetor de movimento inicial, que pode ser usado para apontar para o bloco correspondente em uma imagem de referência colocada para o bloco atual, o decodificador de vídeo 30 pode usar as informações de movimento de blocos vizinhos codificados para gerar um vetor de movimento inicial, que pode ser usado para apontar para o bloco correspondente em uma imagem de referência colocada para gerar o bloco preditivo para o bloco atual com base em um primeiro vetor de movimento na lista de candidatos de fusão unificada para o bloco atual.
[0123] Deve ser observado que as técnicas nessa revelação também podem ser aplicáveis a um aparelho que inclui meio para decodificar um bloco atual de dados de vídeo em uma imagem de codificação atual, que inclui meio para determinar qual imagem é uma imagem colocada, e meio para determinar uma localização de um bloco associado dos dados de vídeo na imagem colocada que corresponde ao bloco atual de dados de vídeo na imagem de codificação atual, com base no uso de blocos anteriormente decodificados na imagem de codificação atual para encontrar um vetor de movimento inicial entre o bloco associado na imagem colocada e o bloco atual na imagem de codificação atual, onde o bloco associado dos dados de vídeo inclui pelo menos um primeiro vetor de movimento derivado, determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual, quando o mv inicial aponta para a imagem colocada, com base pelo menos no primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada. O aparelho também pode incluir meio para determinar informações de movimento do bloco atual de dados de vídeo na imagem de codificação atual com base pelo menos em um segundo vetor de movimento derivado, meio para usar as informações de movimento determinado para obter um bloco de predição e meio para gerar um bloco reconstruído com base em uma combinação do bloco de predição e um bloco residual.
[0124] As técnicas descritas nessa revelação podem ser úteis para outros processos de codificação de vídeo, incluindo outros processos de codificação de vídeo de propriedade ou padrão atualmente em desenvolvimento ou não desenvolvidos ainda.
[0125] Um codificador de vídeo, como descrito nessa revelação, pode se referir a um codificador de vídeo ou um decodificador de vídeo. Similarmente, uma unidade de codificação de vídeo pode se referir a um codificador de vídeo ou um decodificador de vídeo. De modo similar, a codificação de vídeo pode se referir à codificação de vídeo ou decodificação de vídeo, como aplicável. Nessa revelação, a frase “baseado em” pode indicar baseado somente em, baseado pelo menos em parte em ou baseado de algum modo em. Essa revelação pode usar o termo “unidade de vídeo” ou “bloco de vídeo” ou “bloco” para se referir a um ou mais blocos de amostra e estruturas de sintaxe usadas para codificar amostras de um ou mais blocos de amostras.
[0126] Deve ser reconhecido que dependendo do exemplo, certos atos ou eventos de qualquer das técnicas descritas na presente invenção podem ser realizados em uma sequência diferente, podem ser acrescentados, fundidos ou deixados totalmente de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através de processamento multi-threaded, processamento de interrupção, ou múltiplos processadores ao invés de sequencialmente.
[0127] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas através como uma ou mais instruções ou código em uma mídia legível por computador e executadas por uma unidade de processamento baseada em hardware. Mídia legível por computador pode incluir mídia de armazenagem legível por computador, que corresponde a uma mídia tangível como mídia de armazenagem de dados, ou mídia de comunicação incluindo qualquer mídia que facilite transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desse modo, mídia legível por computador pode corresponder em geral a (1) mídia de armazenagem legível por computador tangível que é não transitória ou (2) uma mídia de comunicação como um sinal ou onda portadora. Mídia de armazenagem de dados pode ser qualquer mídia disponível que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0128] Como exemplo, e não limitação, tal mídia de armazenagem legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outra armazenagem de disco ótica, armazenagem de disco magnética, ou outros dispositivos de armazenagem magnética, memória flash ou qualquer outra mídia que possa ser usada para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessada por um computador. Também, qualquer conexão é adequadamente denominada uma mídia legível por computador. Por exemplo, se instruções forem transmitidas a partir de um website, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra ótica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fio como infravermelho, rádio e microondas, então o cabo coaxial, cabo de fibra ótica, par torcido, DSL ou tecnologias sem fio como infravermelho, rádio e microondas são incluídas na definição de mídia. Deve ser entendido, entretanto, que mídia de armazenagem legível por computador e mídia de armazenagem de dados não incluem conexões, ondas portadoras, sinais, ou outra mídia transitória, porém são ao invés dirigidas a mídia de armazenagem tangível, não transitória. Disco e disc, como usados na presente invenção, incluem compact disc (CD), disc laser, disco ótico, digital versatile disc (DVD), disco flexível e disco Blu-ray, onde discos normalmente reproduzem dados magneticamente, enquanto discs reproduzem dados oticamente com lasers. Combinações dos acima também devem ser incluídas no escopo de mídia legível por computador.
[0129] Instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), disposições de lógica programável em campo (FPGAs), ou outro conjunto de circuitos de lógica discreto ou integrado equivalente. Por conseguinte, o termo “processador,” como usado na presente invenção pode se referir a qualquer da estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas na persente invenção. Além disso, em alguns aspectos, a funcionalidade descrita na presente invenção pode ser provida nos módulos de hardware e/ou software dedicados configurados para codificação e decodificação ou incorporados em um codec combinado. Também, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos de lógica.
[0130] As técnicas dessa revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nessa revelação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, porém não exigem necessariamente a realização por unidades de hardware diferentes. Ao invés, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou providas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores como descrito acima, em combinação com software e/ou firmware adequado.
[0131] Vários exemplos da revelação foram descritos. Qualquer combinação dos sistemas, operações ou funções descritas é considerada. Esses e outros exemplos estão compreendidas no escopo das reivindicações a seguir.

Claims (40)

REIVINDICAÇÕES
1. Dispositivo para decodificar um bloco atual de dados de vídeo em uma imagem de codificação atual, o dispositivo compreendendo: uma memória configurada para armazenar dados de vídeo; e um processador configurado para: determinar qual imagem é uma imagem colocada; determinar uma localização de um bloco associado dos dados de vídeo na imagem colocada que corresponde ao bloco atual de dados de vídeo na imagem de codificação atual, com base no uso de blocos anteriormente decodificados na imagem de codificação atual para encontrar um vetor de movimento inicial entre o bloco associado na imagem colocada e o bloco atual na imagem de codificação atual, onde o bloco associado dos dados de vídeo inclui pelo menos um primeiro vetor de movimento derivado; determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual, quando o mv inicial aponta para a imagem colocada, com base pelo menos no primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada; determinar informações de movimento do bloco atual de dados de vídeo na imagem de codificação atual com base pelo menos em um segundo vetor de movimento derivado; usar as informações de movimento determinado para obter um bloco de predição; gerar um bloco reconstruído com base em uma combinação do bloco de predição e um bloco residual.
2. Dispositivo, de acordo com a reivindicação 1, em que o vetor de movimento inicial é determinado com base em uma verificação de decisão.
3. Dispositivo, de acordo com a reivindicação 1, em que o bloco associado na imagem colocada inclui sub- blocos com pelo menos um primeiro vetor de movimento derivado.
4. Dispositivo, de acordo com a reivindicação 3, em que pelo menos um primeiro vetor de movimento derivado é escalonado ou é usado.
5. Dispositivo, de acordo com a reivindicação 4, em que pelo menos o primeiro vetor de movimento derivado escalonado é aplicado ao bloco atual da imagem atual para gerar pelo menos um segundo vetor de movimento derivado.
6. Dispositivo, de acordo com a reivindicação 5, em que pelo menos o segundo vetor de movimento derivado aponta para uma imagem baseada em inter-direção.
7. Dispositivo, de acordo com a reivindicação 1, em que a imagem de referência colocada é uma imagem de referência com um índice de referência.
8. Dispositivo, de acordo com a reivindicação 7, em que o índice de referência é 0.
9. Dispositivo, de acordo com a reivindicação 2, em que pelo menos o primeiro vetor de movimento derivado do bloco associado está na imagem de referência colocada e é escalonado de acordo com a contagem de ordem de imagem do bloco atual em relação à imagem de referência colocada.
10. Dispositivo, de acordo com a reivindicação 2, em que o bloco anteriormente codificado é um bloco vizinho da imagem atual e é um candidato de fusão.
11. Dispositivo, de acordo com a reivindicação 2, em que se mais de um candidato de fusão estiver disponível, uma ordem de verificação depende da ordem de candidatos em uma lista de candidatos de fusão.
12. Dispositivo, de acordo com a reivindicação 11, em que se mais de um candidato de fusão estiver disponível, um candidato temporal em uma imagem anteriormente decodificada é verificado antes de um candidato espacial na imagem de codificação atual.
13. Dispositivo, de acordo com a reivindicação 11, em que se mais de um candidato de fusão estiver disponível, um candidato espacial na imagem de codificação atual é verificada antes de um temporal em uma imagem anteriormente decodificada.
14. Dispositivo, de acordo com a reivindicação 2, em que o bloco vizinho da imagem atual não é um candidato de fusão.
15. Dispositivo, de acordo com a reivindicação 2, em que a verificação de decisão para encontrar o vetor de movimento inicial se baseia em uma ordem fixa, onde a ordem fixa é para verificar os blocos decodificados anteriores antes do bloco atual da imagem atual dos dados de vídeo.
16. Dispositivo, de acordo com a reivindicação 15, em que a verificação de decisão é implementada como a prioridade mais alta para encontrar o vetor de movimento inicial que aponta para a imagem de referência colocada.
17. Dispositivo, de acordo com a reivindicação 2, em que a verificação de decisão para encontrar o vetor de movimento inicial se baseia em uma operação de escalonamento para o vetor de movimento do vetor de movimento dos blocos decodificados anteriores.
18. Dispositivo, de acordo com a reivindicação 17, em que a operação de escalonamento compreende uma interpolação, ou uma extrapolação, dos vetores de movimento dos blocos decodificados anteriores na imagem de codificação atual.
19. Dispositivo, de acordo com a reivindicação 18, em que a operação de escalonamento na verificação de decisão não é a prioridade mais alta para encontrar um vetor de movimento inicial que aponta para a imagem de referência colocada.
20. Dispositivo, de acordo com a reivindicação 2, em que a verificação de decisão para encontrar o vetor de movimento inicial se baseia em uma verificação dos vetores de movimento dos blocos decodificados anteriores na imagem de codificação atual.
21. Dispositivo, de acordo com a reivindicação 20, em que a verificação de decisão da reivindicação 21 não é a prioridade mais alta para encontrar um vetor de movimento inicial que aponta para a imagem de referência colocada.
22. Dispositivo, de acordo com a reivindicação 2, em que a verificação de decisão para encontrar o vetor de movimento inicial compreende uma escala de outros vetores de movimento que não são blocos vizinhos do bloco atual na imagem de codificação atual e uma verificação se os outros vetores de movimento escalonados apontam para uma imagem de referência colocada.
23. Dispositivo, de acordo com a reivindicação 22, em que a verificação de decisão da reivindicação 24 não é a prioridade mais alta para encontrar um vetor de movimento inicial que aponta para a imagem de referência colocada.
24. Dispositivo, de acordo com a reivindicação 2, em que a verificação de decisão para encontrar o vetor de movimento inicial compreende usar um vetor de movimento default para apontar para a imagem de referência colocada.
25. Dispositivo, de acordo com a reivindicação 2, em que o bloco codificado anterior é um bloco vizinho e não é um candidato de fusão em um modo de fusão.
26. Dispositivo, de acordo com a reivindicação 2, em que o bloco codificado anterior é um bloco vizinho e é um candidato de fusão em um modo de fusão.
27. Dispositivo, de acordo com a reivindicação 1, em que o vetor de movimento inicial é um valor médio de vetores de movimento de pelo menos dois blocos codificados anteriores.
28. Dispositivo, de acordo com a reivindicação 1, em que o vetor de movimento inicial é um valor mediano de vetores de movimento de pelo menos três blocos codificados anteriores.
29. Dispositivo, de acordo com a reivindicação 1, em que o vetor de movimento inicial se baseia em uma comparação de pelo menos dois vetores de movimento.
30. Método para decodificar um bloco atual de dados de vídeo em uma imagem de codificação atual, compreendendo: determinar qual imagem é uma imagem colocada;
determinar uma localização de um bloco associado dos dados de vídeo na imagem colocada que corresponde ao bloco atual de dados de vídeo na imagem de codificação atual, com base no uso de blocos anteriormente decodificados na imagem de codificação atual para encontrar um vetor de movimento inicial entre o bloco associado na imagem colocada e o bloco atual na imagem de codificação atual, onde o bloco associado dos dados de vídeo inclui pelo menos um primeiro vetor de movimento derivado; determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual, quando o mv inicial aponta para a imagem colocada, com base pelo menos no primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada; determinar informações de movimento do bloco atual de dados de vídeo na imagem de codificação atual com base pelo menos em um segundo vetor de movimento derivado; usar as informações de movimento determinado para obter um bloco de predição; e gerar um bloco reconstruído com base em uma combinação do bloco de predição e um bloco residual.
31. Método, de acordo com a reivindicação 30, em que o vetor de movimento inicial é determinado com base em uma verificação de decisão.
32. Método, de acordo com a reivindicação 31, em que o bloco associado na imagem de referência colocada inclui sub-blocos com pelo menos um primeiro vetor de movimento derivado.
33. Método, de acordo com a reivindicação 32, em que pelo menos um primeiro vetor de movimento derivado é escalonado ou usado.
34. Método, de acordo com a reivindicação 33, aplicar pelo menos um primeiro vetor de movimento derivado escalonado ao bloco atual da imagem atual para gerar pelo menos um segundo vetor de movimento derivado.
35. Método, de acordo com a reivindicação 34, em que pelo menos um segundo vetor de movimento derivado aponta para uma imagem com base em inter-direção.
36. Método, de acordo com a reivindicação 30, em que a imagem de referência colocada é uma imagem de referência com um índice de referência.
37. Método, de acordo com a reivindicação 30, em que o índice de referência é 0.
38. Método, de acordo com a reivindicação 30, em que a verificação de decisão para encontrar o vetor de movimento inicial se baseia em uma verificação se um vetor de movimento dos blocos decodificados anteriores na imagem de codificação atual.
39. Aparelho para decodificar um bloco atual de dados de vídeo em uma imagem de codificação atual, compreendendo: meio para determinar qual imagem é uma imagem colocada; meio para determinar uma localização de um bloco associado dos dados de vídeo na imagem colocada que corresponde ao bloco atual de dados de vídeo na imagem de codificação atual, com base no uso de blocos anteriormente decodificados na imagem de codificação atual encontrar um vetor de movimento inicial entre o bloco associado na imagem colocada e o bloco atual na imagem de codificação atual, onde o bloco associado dos dados de vídeo inclui pelo menos um primeiro vetor de movimento derivado; meio para determinar pelo menos um segundo vetor de movimento derivado associado ao bloco atual na imagem de codificação atual, quando o mv inicial aponta para a imagem colocada, com base pelo menos no primeiro vetor de movimento derivado associado ao bloco associado na imagem colocada; meio para determinar informações de movimento do bloco atual de dados de vídeo na imagem de codificação atual com base pelo menos e um segundo vetor de movimento derivado; meio para usar as informações de movimento determinado para obter um bloco de predição; e meio para gerar um bloco reconstruído com base em uma combinação do bloco de predição e um bloco residual.
40. Mídia de armazenagem legível por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores executem qualquer combinação do método das reivindicações 30-38.
BR112020018716-0A 2018-03-19 2018-03-19 Aperfeiçoamentos em predição de vetor de movimento temporal avançado BR112020018716A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/079458 WO2019178721A1 (en) 2018-03-19 2018-03-19 Improvements to advanced temporal motion vector prediction

Publications (1)

Publication Number Publication Date
BR112020018716A2 true BR112020018716A2 (pt) 2020-12-29

Family

ID=67988279

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020018716-0A BR112020018716A2 (pt) 2018-03-19 2018-03-19 Aperfeiçoamentos em predição de vetor de movimento temporal avançado

Country Status (8)

Country Link
US (1) US20210099724A1 (pt)
EP (1) EP3769528A4 (pt)
KR (1) KR102579526B1 (pt)
CN (1) CN111869214A (pt)
BR (1) BR112020018716A2 (pt)
SG (1) SG11202007843YA (pt)
TW (1) TW201941612A (pt)
WO (1) WO2019178721A1 (pt)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113228675A (zh) 2018-12-21 2021-08-06 北京字节跳动网络技术有限公司 视频处理中的运动矢量比特深度
WO2024027802A1 (en) * 2022-08-05 2024-02-08 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4114859B2 (ja) * 2002-01-09 2008-07-09 松下電器産業株式会社 動きベクトル符号化方法および動きベクトル復号化方法
WO2020084511A1 (en) * 2018-10-23 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Simplified entropy coding for sub-block based motion information list
JP2012191298A (ja) * 2011-03-09 2012-10-04 Fujitsu Ltd 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
AU2015200360B2 (en) * 2011-09-09 2017-01-12 Kt Corporation Method for deriving a temporal predictive motion vector, and apparatus using the method
BR112014012006A2 (pt) * 2011-11-18 2017-05-30 Motorola Mobility Llc uma forma explícita para sinalizar uma imagem colocalizada para codificação de vídeo de alta eficiência (hevc)
US9826244B2 (en) * 2013-01-08 2017-11-21 Qualcomm Incorporated Device and method for scalable coding of video information based on high efficiency video coding
WO2015139205A1 (en) * 2014-03-18 2015-09-24 Mediatek Singapore Pte. Ltd. An improved method for collocated picture in video coding
WO2015143603A1 (en) * 2014-03-24 2015-10-01 Mediatek Singapore Pte. Ltd. An improved method for temporal motion vector prediction in video coding
US10200711B2 (en) * 2015-03-27 2019-02-05 Qualcomm Incorporated Motion vector derivation in video coding
WO2016165069A1 (en) * 2015-04-14 2016-10-20 Mediatek Singapore Pte. Ltd. Advanced temporal motion vector prediction in video coding
US10560718B2 (en) * 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
US10477238B2 (en) * 2016-09-07 2019-11-12 Qualcomm Incorporated Sub-PU based bi-directional motion compensation in video coding
US10523934B2 (en) * 2017-05-31 2019-12-31 Mediatek Inc. Split based motion vector operation reduction
EP4351139A2 (en) * 2017-06-09 2024-04-10 Electronics and Telecommunications Research Institute Video encoding/decoding method and device, and recording medium storing bit stream
US10602180B2 (en) * 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
WO2019004283A1 (ja) * 2017-06-28 2019-01-03 シャープ株式会社 動画像符号化装置及び動画像復号装置
GB2563943B (en) * 2017-06-30 2021-02-24 Canon Kk Method and apparatus for encoding or decoding video data in FRUC mode with reduced memory accesses
KR20210025537A (ko) * 2018-06-29 2021-03-09 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 하나 또는 다수의 룩업 테이블들을 사용하여 이전에 코딩된 모션 정보를 순서대로 저장하고 이를 사용하여 후속 블록들을 코딩하는 개념
US20200014931A1 (en) * 2018-07-06 2020-01-09 Mediatek Inc. Methods and Apparatuses of Generating an Average Candidate for Inter Picture Prediction in Video Coding Systems
US11057617B2 (en) * 2018-08-03 2021-07-06 Tencent America LLC Method and apparatus for video coding

Also Published As

Publication number Publication date
TW201941612A (zh) 2019-10-16
US20210099724A1 (en) 2021-04-01
EP3769528A1 (en) 2021-01-27
KR20200128036A (ko) 2020-11-11
CN111869214A (zh) 2020-10-30
SG11202007843YA (en) 2020-10-29
EP3769528A4 (en) 2021-11-10
KR102579526B1 (ko) 2023-09-15
WO2019178721A1 (en) 2019-09-26

Similar Documents

Publication Publication Date Title
US11363288B2 (en) Motion vector generation for affine motion model for video coding
US10652571B2 (en) Advanced motion vector prediction speedups for video coding
US11082687B2 (en) Motion vector prediction for affine motion models in video coding
US11297340B2 (en) Low-complexity design for FRUC
US11172229B2 (en) Affine motion compensation with low bandwidth
JP6740243B2 (ja) ビデオコーディングにおける動きベクトル導出
US11425387B2 (en) Simplified local illumination compensation
BR112021000002A2 (pt) Mvps não adjacentes baseados em múltiplos históricos para processamento de frente de onda de código de vídeo
US10542280B2 (en) Encoding optimization with illumination compensation and integer motion vector restriction
BR112020006588A2 (pt) predição afim em codificação de vídeo
BR112021009558A2 (pt) simplificação da predição de vetor de movimento baseada em histórico
BR112019025566A2 (pt) Predição de vetor de movimento
BR112018006266B1 (pt) Fluxo ótico bidirecional avançado para codificação de vídeo
JP2022500894A (ja) インター予測方法および装置
BR112016006607B1 (pt) Método e dispositivo para processamento de dados de vídeo, e memória legível por computador
BR112021009721A2 (pt) informação de movimento triangular para codificação de vídeo
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
BR112014015056B1 (pt) Realizando predição de vetor de movimento para codificação de vídeo
BR112021014603A2 (pt) Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
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
BR112020018716A2 (pt) Aperfeiçoamentos em predição de vetor de movimento temporal avançado

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]