BR112017015890B1 - Predição avançada do vetor de movimento temporal com base em unidade de subpredição - Google Patents

Predição avançada do vetor de movimento temporal com base em unidade de subpredição Download PDF

Info

Publication number
BR112017015890B1
BR112017015890B1 BR112017015890-6A BR112017015890A BR112017015890B1 BR 112017015890 B1 BR112017015890 B1 BR 112017015890B1 BR 112017015890 A BR112017015890 A BR 112017015890A BR 112017015890 B1 BR112017015890 B1 BR 112017015890B1
Authority
BR
Brazil
Prior art keywords
candidate
block
list
video
atmvp
Prior art date
Application number
BR112017015890-6A
Other languages
English (en)
Other versions
BR112017015890A2 (pt
Inventor
Ying Chen
Xiang Li
Hongbin Liu
Jianle Chen
Li Zhang
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112017015890A2 publication Critical patent/BR112017015890A2/pt
Publication of BR112017015890B1 publication Critical patent/BR112017015890B1/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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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/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/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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Abstract

predição avançada do vetor de movimento temporal com base em unidade de subpredição. a presente invenção se refere, em um exemplo, a um dispositivo para codificação de dados de vídeo que inclui uma memória configurada para armazenar dados de vídeo e um codificador de vídeo configurado para formar, para um bloco corrente dos dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos ao bloco corrente e, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada do vetor de movimento temporal (atmvp); codificar um índice na lista de candidatos à mesclagem e codificar o bloco corrente de dados de vídeo usando informações de movimento do candidato à mesclagem identificado.

Description

[0001] Este pedido reivindica o benefício do Pedido Provisório US n° 62/107.933, depositado em 26 de janeiro de 2015, em que todo o conteúdo é aqui incorporado por referência.
CAMPO TÉCNICO
[0002] Esta invenção se refere à codificação de vídeo.
FUNDAMENTOS DA INVENÇÃO
[0003] As capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de transmissão digital direta, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores portáteis ou de mesa, computadores tablet, leitores de livros eletrônicos, câmeras digitais, dispositivos de gravação digital, leitores de mídia digital, dispositivos de jogos de vídeo, consoles de videogames, telefones de rádio celular ou satélite, os chamados “smartfones”, dispositivos de teleconferência de vídeo, dispositivos de transmissão de vídeo e semelhantes. Os dispositivos de vídeo digital implementam técnicas de codificação de vídeo, como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC), ITU-T H.265, também conhecida como Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, encodificar, decodificar e / ou armazenar informações de vídeo digital de forma mais eficiente implementando tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intra-imagem) e / ou predição temporal (inter-imagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para a codificação de vídeo baseada em blocos, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser particionada em blocos de vídeo, os quais, para algumas técnicas, também podem ser referidos como treeblocks, unidades de codificação (CUs) e / ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são encodificados usando predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar a predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e as imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam as diferenças de pixels entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é encodificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais que indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é encodificado de acordo com um modo de intracodificação e os dados residuais. Para uma compressão adicional, os dados residuais podem ser transformados do domínio do pixel para um domínio de transformada, resultando em coeficientes de transformada residual, os quais então podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em uma matriz bidimensional, podem ser escaneados para produzir um vetor unidimensional de coeficientes de transformada, e a codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
SUMÁRIO DA INVENÇÃO
[0006] Em geral, esta descrição descreve técnicas relacionadas com a codificação (por exemplo, encodificação ou decodificação) de informações de movimento para um bloco de dados de vídeo. Mais particularmente, um codificador de vídeo (por exemplo, um encodificador de vídeo ou um decodificador de vídeo) pode ser configurado para codificar informações de movimento para um bloco atual (por exemplo, uma unidade de predição (PU) atual) usando a predição avançada do vetor de movimento temporal (ATMVP). ATMVP geralmente envolve o uso de um vetor de movimento temporal para identificar uma unidade de predição correspondente que é dividida em sub-PUs. Em vez de dividir a PU atual em subPUs, o vetor de movimento temporal pode simplesmente identificar o bloco correspondente que é dividido em subPUs, cada um com suas próprias informações de movimento, e o codificador de vídeo pode ser configurado para predizer partes correspondentes do bloco atual usando as informações de movimento das respectivas sub-PUs. Ao evitar dividir ativamente o bloco atual, as informações de sinalização gerais podem ser reduzidas para o bloco atual, embora ainda alcançando uma predição com granulação fina para partes do bloco atual que, de outra forma, poderiam resultar da divisão do bloco atual em sub-PUs.
[0007] Em um exemplo, um método de codificação de dados de vídeo inclui formar, para um bloco atual de dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos para o bloco atual e, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada do vetor de movimento temporal (ATMVP); codificar um índice na lista de candidatos à mesclagem que identifica um candidato à mesclagemda pluralidade de candidatos à mesclagem na lista de candidatos à mesclagem, e codificar o bloco atual de dados de vídeo usando informações de movimento do candidato à mesclagem identificado.
[0008] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui uma memória configurada para armazenar dados de vídeo e um codificador de vídeo configurado para formar, para um bloco atual dos dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos ao bloco atual e, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada do vetor de movimento temporal (ATMVP); codificar um índice na lista de candidatos à mesclagem que identifica um candidato à mesclagemda pluralidade de candidatos à mesclagem na lista de candidatos à mesclagem, e codificar o bloco atual de dados de vídeo usando informações de movimento do candidato à mesclagem identificado.
[0009] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui meios para formar, para um bloco atual de dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos ao bloco atual e, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada do vetor de movimento temporal (ATMVP), meios para codificar um índice na lista de candidatos à mesclagem que identifica um candidato à mesclagem da pluralidade de candidatos à mesclagem na lista de candidatos à mesclagem, e meios para codificar o bloco atual de dados de vídeo usando informações de movimento do candidato à mesclagem identificado.
[0010] Em outro exemplo, um meio de armazenamento de leitura por computador tem nele armazenado instruções que, quando executadas, levam um processador a formar, para um bloco atual de dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos ao bloco atual e, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada do vetor de movimento temporal (ATMVP); codificar um índice na lista de candidatos à mesclagem que identifica um candidato à mesclagem da pluralidade de candidatos à mesclagem na lista de candidatos à mesclagem, e codificar o bloco atual de dados de vídeo usando informações de movimento do candidato à mesclagem identificado.
[0011] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição e desenhos, e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] A FIG. 1 é um diagrama em blocos que ilustra um exemplo do sistema de encodificação e decodificação de vídeo que pode utilizar técnicas para implementar a predição avançada do vetor de movimento temporal (ATMVP).
[0013] A FIG. 2 é um diagrama em blocos que ilustra um exemplo do encodificador de vídeo que pode implementar técnicas para a predição avançada do vetor de movimento temporal (ATMVP).
[0014] A FIG. 3 é um diagrama em blocos que ilustra um exemplo do decodificador de vídeo que pode implementar técnicas para a predição avançada do vetor de movimento temporal (ATMVP).
[0015] A FIG. 4 é um diagrama conceitual que ilustra os candidatos espaciais vizinhos na Codificação de Vídeo de Alta Eficiência (HEVC).
[0016] A FIG. 5 é um diagrama conceitual que ilustra a predição do vetor de movimento temporal (TMVP) na HEVC.
[0017] A FIG. 6 é um diagrama conceitual que ilustra um exemplo de estrutura de predição para 3D-HEVC.
[0018] A FIG. 7 é um diagrama conceitual que ilustra a predição de movimento intervista baseada em sub- PU em 3D-HEVC.
[0019] A FIG. 8 é um diagrama conceitual que ilustra a predição do movimento sub-PU a partir de uma imagem de referência.
[0020] A FIG. 9 é um diagrama conceitual que ilustra imagens relevantes na ATMVP (semelhante à TMVP).
[0021] A FIG. 10 é um fluxograma que ilustra um método de exemplo para adicionar um candidato ATMVP a uma lista de candidatos durante um processo de encodificação de acordo com as técnicas desta invenção.
[0022] A FIG. 11 é um fluxograma que ilustra um método de exemplo para adicionar um candidato ATMVP a uma lista de candidatos durante um processo de decodificação de acordo com as técnicas desta invenção.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0023] Em geral, esta descrição está relacionada com a predição do vetor de movimento em CODECs de vídeo. Mais especificamente, a predição avançada do vetor de movimento temporal é conseguida coletando os vetores de movimento em um nível de sub-bloco (sub-PU) para um determinado bloco (unidade de predição).
[0024] Os padrões de codificação de vídeo incluem ITU-T H.261, ISO / IEC MPEG-1 Visual, ITU-T H.262 ou ISO / IEC MPEG-2 Visual, ITU-T H.263, ISO / IEC MPEG-4 Visual e ITU-TH.264 (também conhecido como ISO / IEC MPEG-4 AVC), incluindo suas extensões Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo Multivista (MVC). Um projeto conjunto da MVC é descrito em “Codificação de vídeo avançada para serviços audiovisuais genéricos”, ITU- TRecommendationH.264, março de 2010.
[0025] Além disso, existe um padrão de codificação de vídeo recentemente desenvolvido, a saber, Codificação de Vídeo de Alta Eficiência (HEVC), desenvolvido pela Equipe de Colaboração Conjunta sobre Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagens em Movimento ISO / IEC (MPEG). Um esboço recente do HEVC está disponível em http://phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC- L1003-v34.zip. O padrão HEVC também é apresentado conjuntamente na Recomendação ITU-T H.265 e no Padrão Internacional ISO / IEC 23008-2, ambos intitulados “High efficiency vídeo coding”, e ambos publicados em outubro de 2014.
[0026] Informações de movimento: para cada bloco, um conjunto de informações de movimento pode estar disponível. Um conjunto de informações de movimento contém informações de movimento para direções de predição para frente e para trás. Aqui, as direções de predição para frente e para trás são duas direções de predição de um modo de predição bidirecional e os termos “para frente” e “para trás” não têm necessariamente um significado de geometria; em vez disso, eles correspondem à lista de imagens de referência 0 (RefPicList0) e à lista de imagens de referência 1 (RefPicList1) de uma imagem atual. Quando apenas uma lista de imagens de referência estiver disponível para uma imagem ou fatia, apenas RefPicList0 está disponível e as informações de movimento de cada bloco de uma fatia sempre são encaminhadas.
[0027] Para cada direção de predição, asinformações de movimento devem conter um índice de referência e um vetor de movimento. Em alguns casos, por simplicidade, um vetor de movimento em si pode ser referido de forma a assumir que ele possui um índice de referência associado. Um índice de referência é usado para identificar uma imagem de referência na lista de imagens de referência atual (RefPicList0 ou RefPicList1). Um vetor de movimento tem um componente horizontal e um vertical.
[0028] A contagem de ordem de imagem (POC) é amplamente utilizada em padrões de codificação de vídeo para identificar uma ordem de exibição de uma imagem. Embora existam casos em que duas imagens dentro de uma sequência de vídeo codificada podem ter o mesmo valor de POC, normalmente isso não acontece dentro de uma sequência de vídeo codificada. Quando múltiplas sequências de vídeo codificadas estão presentes em um fluxo de bits, imagens com um mesmo valor de POC podem estar mais próximas entre si em termos de ordem de decodificação. Os valores de POC das imagens normalmente são usados para a construção da lista de imagens de referência, derivação de conjuntos de imagens de referência como em HEVC e dimensionamento de vetor de movimento.
[0029] Estrutura de macrobloco (MB) em Codificação de Vídeo Avançada (AVC) (H.264): em H.264 / AVC, cada inter-macrobloco (MB) pode ser dividido de quatro maneiras diferentes: - Uma divisão de 16x16 MB - Duas divisões de 16x8 MB - Duas divisões de 8x16 MB - Quatro divisões de 8x8 MB
[0030] Diferentes divisões de MB em um MB podem ter diferentes valores de índice de referência para cada direção (RefPicList0 ou RefPicList1).
[0031] Quando um MB não é dividido em quatro divisões de 8x8 MB, ele tem apenas um vetor de movimento para cada divisão de MB em cada direção.
[0032] Quando um MB é dividido em quatro divisões de 8x8 MB, cada divisão de 8x8 MB pode ser aindadividida em sub-blocos, cada um dos quais pode ter um vetor de movimento diferente em cada direção. Existem quatro maneiras diferentes de obter sub-blocos de uma divisão de 8x8 MB: - Um sub-bloco 8x8 - Dois sub-blocos 8x4 - Dois sub-blocos 4x8 - Quatro sub-blocos 4x4
[0033] Cada sub-bloco pode ter um vetor de movimento diferente em cada direção. Portanto, um vetor de movimento está presente em um nível igual a superior ao sub-bloco.
[0034] Modo direto temporalem AVC: em AVC, o modo direto temporal pode ser habilitado ao nível de MB ou divisão de MB para pulo ou modo direto em fatias B. Para cada divisão de MB, os vetores de movimento do bloco co- localizado com a divisão de MB atual na RefPicList1[0] do bloco atual são usados para derivar os vetores de movimento. Cada vetor de movimento no bloco co-localizado é dimensionado com base em distâncias de POC.
[0035] Modo direto espacial em AVC: em AVC, um modo direto também pode predizer informações de movimento dos vizinhos espaciais.
[0036] Estrutura da Unidade de Codificação (CU) em Codificação de Vídeo de Alta Eficiência (HEVC): em HEVC, a maior unidade de codificação em uma fatia é chamada de um bloco da árvore de codificação (CTB) ou unidade da árvore de codificação (CTU). Um CTB contém uma quad-tree, cujos nós são unidades de codificação.
[0037] O tamanho de um CTB pode variar de 16x16 a 64x64 no perfil principal da HEVC (embora tecnicamente tamanhos de CTB 8x8 possam ser suportados). Uma unidade de codificação (CU) pode ser do mesmo tamanho de um CTB, embora seja tão pequena quanto 8x8. Cada unidade de codificação é codificada com um modo. Quando uma CU é intercodificada, ela pode ser aindadividida em 2 ou 4 unidades de predição (PUs) ou tornar-se apenas uma PU quando a divisão adicional não se aplica. Quando duas PUs estão presentes em uma CU, elas podem ser retângulos de tamanho médio ou dois tamanhos de retângulo com tamanho M ou ^ da CU.
[0038] Quando a CU é intercodificada, um conjunto de informações de movimento está presente para cada PU. Além disso, cada PU é codificada com um modo de interpredição único para derivar o conjunto de informações de movimento.
[0039] Predição de movimento em HEVC: no padrão HEVC, há dois modos de interpredição, denominados modos de predição do vetor de movimento de mesclagem (pulo é considerado um caso especial de mesclagem) e avançada (AMVP), respectivamente, para uma unidade de predição (PU).
[0040] No modo AMVP ou de mesclagem, uma lista de candidatos a vetor de movimento (MV) é mantida para vários preditores do vetor de movimento. O(s) vetor(es) de movimento, bem como os índices de referência no modo de mesclagem, da PU atual são gerados tomando um candidato da lista de candidatos àMV.
[0041] A lista de candidatos MV contém até 5 candidatos para o modo de mesclagem e apenas dois candidatos para o modo AMVP. Um candidato à mesclagem pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento correspondentes a ambas as listas de imagens de referência (lista 0 e lista 1) e os índices de referência. Se um candidato à mesclagem for identificado por um índice de mesclagem, as imagens de referência são usadas para a predição dos blocos atuais, bem como os vetores de movimento associados são determinados. No entanto, no modo AMVP para cada direção de predição potencial da lista 0 ou lista 1, um índice de referência precisa ser sinalizado explicitamente, juntamente com um índice MVP para a lista de candidatos àMV, uma vez que o candidato à AMVP contém apenas um vetor de movimento. No modo AMVP, os vetores de movimento preditos podem ser aperfeiçoados.
[0042] Como pode ser visto acima, um candidato à mesclagem 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 e um índice de referência.
[0043] Os candidatos para ambos os modos são derivados de forma semelhante dos mesmos blocos vizinhos espaciais e temporais.
[0044] O modelo sub-PU para um codec de vídeo 2D, especialmente aquele relacionado ao TMVP avançado, pode encontrar os seguintes problemas. Um processo de predição do vetor de movimento temporal baseado em sub-PU pode ser alcançado definindo tal processo como um candidato adicional, ou seja, candidato ATMVP. No entanto, existem os seguintes problemas de concepção para um candidato ATMVP: 1. Embora um candidato ATMVP possa ser inserido como candidato adicional como TMVP, a posição de tal candidato ATMVP não é conhecida, bem como a interação com o candidato à TMVP para alcançar uma maior eficiência de codificação. 2. Não está claro como definir a disponibilidade do candidato ATMVP; seria de alta complexidade se todos os vetores de movimento de todas as sub-PUs fossem verificados para determinar se um candidato ATMVP não está disponível e, portanto, pode ser inserido no candidato ATMVP. 3. O processo de poda com um candidato ATMVP pode ser necessário; no entanto, a poda com um tal candidato pode ser complicada. 4. Vários outros detalhes de concepção para o candidato ATMVP para alcançar o melhor equilíbrioentre eficiência de codificação e complexidade permanecem desconhecidos.
[0045] A FIG. 1 é um diagrama em blocos que ilustra um exemplo do sistema de encodificação e decodificação de vídeo 10 que pode utilizar técnicas para implementar a predição avançada do vetor de movimento temporal (ATMVP). Como mostrado na FIG. 1, o sistema 10 inclui um dispositivo de origem 12 que fornece dados de vídeo encodificados a serem descodificados posteriormente por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece os dados de vídeo ao dispositivo de destino 14 através de um meio de leitura por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla gama de dispositivos, incluindo computadores de mesa, computadores portáteis (isto é, laptop), computadores tablet, decodificadores, aparelhos telefônicos portáteis, como os chamados “smartfones”, os chamados “smartpads”, televisores, câmeras, dispositivos de exibição, leitores de mídia digital, consoles de jogos de vídeo, dispositivos de transmissão de vídeo ou similares. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem estar equipados para comunicação sem fio.
[0046] O dispositivo de destino 14 pode receber os dados de vídeo encodificados a serem decodificados através do meio de leitura por computador 16. O meio de leitura por computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo encodificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o meio de leitura por computador 16 pode compreender um meio de comunicação para permitir que o dispositivo de origem 12 transmita dados de vídeo encodificados diretamente ao dispositivo de destino 14 em tempo real. Os dados de vídeo encodificados podem ser modulados de acordo com um padrão de comunicação, tal 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 com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, como uma rede de área local, uma rede de área ampla ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0047] Em alguns exemplos, dados encodificados podem ser emitidos a partir da interface de saída 22 para um dispositivo de armazenamento. Da mesma forma, os dados encodificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer um de uma variedade de meios de armazenamento de dados distribuídos ou acessadoslocalmente, como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo encodificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou a outro dispositivo de armazenamento intermediário que pode armazenar o vídeo encodificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados do dispositivo de armazenamento via streaming ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo encodificados e transmitir esses dados de vídeo encodificados para o dispositivo de destino 14. Os servidores de arquivos de exemplo incluem um servidor de rede (por exemplo, para um site), um servidor FTP, dispositivos de armazenamento em rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo encodificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão WiFi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.) ou uma combinação de ambos que seja apropriada para acessar dados de vídeo encodificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo encodificados do dispositivo de armazenamento pode ser uma transmissão via streaming, uma transmissão de download ou uma combinação delas.
[0048] As técnicas desta invenção não são necessariamente limitadas a aplicações ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte de qualquer de uma variedade de aplicações multimídia, como transmissões televisivas através do ar, transmissões televisivas por cabo, transmissões televisivas por satélite, transmissões de vídeo via streaming de Internet, como a transmissão adaptativa dinâmica através de HTTP (DASH), vídeo digital que é encodificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações.Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo de via unidirecional ou bidirecional para suportar aplicações como streaming de vídeo, reprodução de vídeo, transmissão de vídeo e / ou telefonia de vídeo.
[0049] No exemplo da FIG. 1, o dispositivo de origem 12 inclui a fonte de vídeo 18, o encodificador de vídeo 20 e a interface de saída 22. O dispositivo de destino 14 inclui a interface de entrada 28, o decodificador de vídeo 30 e o dispositivo de exibição 32. De acordo com esta invenção, o encodificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para predição avançada do vetor de movimento temporal (ATMVP). Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, como uma câmera externa. Do mesmo modo, o dispositivo de destino 14 pode fazer interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0050] O sistema ilustrado 10 da FIG. 1 é apenas um exemplo. As técnicas para predição avançada do vetor de movimento temporal (ATMVP) podem ser realizadas por qualquer dispositivo de encodificação e / ou decodificação de vídeo digital. Embora geralmente as técnicas desta invenção sejam realizadas por um dispositivo de encodificação de vídeo, as técnicas também podem ser realizadas por um encodificador / decodificador de vídeo, tipicamente referido como um “CODEC”. Além disso, as técnicas desta invenção também podem ser realizadas por um pré-processador de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são apenas exemplos de tais dispositivos de codificação, em que o dispositivo de origem 12 gera dados de vídeo codificados para transmissão ao dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar de forma substancialmente simétrica, de modo que cada um dos dispositivos 12, 14 inclui componentes de encodificação e decodificação de vídeo. Assim, o sistema 10 pode suportar a transmissão de vídeo uni ou bidirecional entre dispositivos de vídeo 12, 14, por exemplo, para streaming de vídeo, reprodução de vídeo, transmissão de vídeo ou vídeo-telefonia.
[0051] A fonte de vídeo 18 do dispositivo de origem 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 previamente capturado e / ou uma interface de alimentação de vídeo para receber o vídeo de um provedor de conteúdo de vídeo. Como outra alternativa, a fonte de vídeo 18 pode gerar dados baseados em gráficos computadorizados como o vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os chamados telefones de câmera ou telefones de vídeo. Conforme mencionado acima, no entanto, as técnicas descritas nesta invenção podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e / ou com fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser encodificado pelo encodificador de vídeo 20. As informações de vídeo encodificadas podem então ser emitidas pela interface de saída 22 para um meio de leitura por computador 16.
[0052] O meio de leitura por computador 16 pode incluir meios transitórios, tal como uma transmissão sem fios ou uma transmissão via rede com fios, ou meios de armazenamento (ou seja, meios de armazenamento não transitórios), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray ou outros meios de leitura por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo encodificados do dispositivo de origem 12 e fornecer os dados de vídeo encodificados ao dispositivo de destino 14, por exemplo, via transmissão de rede. Da mesma forma, um dispositivo de computação de uma instalação de produção de meio, tal como uma instalação de gravação de disco, pode receber dados de vídeo encodificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo encodificados. Por conseguinte, o meio de leitura por computador 16 pode ser entendido como incluindo um ou mais meios de leitura por computador de várias formas, em vários exemplos.
[0053] A interface de entrada 28 do dispositivo de destino 14 recebe informações do meio de leitura por computador 16. Asinformações do meio de leitura por computador 16 podem incluir informações de sintaxe definidas pelo encodificador de vídeo 20, que também são usadas pelo decodificador de vídeo 30, que incluem elementos de sintaxe que descrevem características e / ou processamento de blocos e outras unidades codificadas, por exemplo, GOPs. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um de vários dispositivos de exibição, como um tubo de raios catódicos (CRT), um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0054] O encodificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar de acordo com um padrão de codificação de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficiência(HEVC), extensões para o padrão HEVC ou padrões subsequentes, como ITU-T H.266. Alternativamente, o encodificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões do proprietário ou da indústria, tal como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC) ou extensões de tais padrões. As técnicas desta invenção, no entanto, não estão limitadas a nenhum padrão de codificação particular. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263. Embora não mostrados na FIG. 1, em alguns aspectos, o encodificador de vídeo 20 e o decodificador de vídeo 30 podem ser integrados com um encodificador e decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados.Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo do multiplexador ITU H.223, ou com outros protocolos, como o protocolo de datagrama do usuário (UDP).
[0055] O encodificador de vídeo 20 e o decodificador de vídeo 30 podem ser implementados como qualquer um de uma variedade de circuitos de encodificador adequados, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação destes. Quando as técnicas são implementadas parcialmente no software, um dispositivo pode armazenar instruções para o software em um meio adequado, não transitório,de leitura por computador e executar as instruções em hardware usando um ou mais processadores para executar as técnicas desta invenção. Cada um dos encodificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um encodificador / decodificador combinado (CODEC) em um dispositivo respectivo.
[0056] O JCT-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização do HEVC são baseados em um modelo em evolução de um dispositivo de codificação de vídeo denominado Modelo de Teste HEVC (HM). O HM presume várias capacidades adicionais de dispositivos de codificação de vídeo em relação a dispositivos existentes de acordo com, por exemplo, ITU-T H.264 / AVC. Por exemplo, enquanto o H.264 fornece nove modos de encodificação intrapredição, o HEVC HM pode fornecer até trinta e três modos de encodificação intrapredição.
[0057] Em geral, o modelo de trabalho do HM descreve que um quadro ou imagem de vídeo pode ser dividida em uma sequência de blocos de árvore ou unidades de codificação maiores (LCU) que incluem ambas as amostras luma e croma. Os dados de sintaxe dentro de um fluxo de bits podem definir um tamanho para a LCU, que é a maior unidade de codificação em termos do número de pixels. Uma fatia inclui uma série de blocos de árvore consecutivos em ordem de codificação. Um quadro ou imagem de vídeo pode ser dividido em uma ou mais fatias. Cada bloco de árvore pode ser dividido em unidades de codificação (CUs) de acordo com um quadtree. Em geral, uma estrutura de dados quadtree inclui um nó por CU, com um nó raiz correspondente ao bloco de árvore. Se uma CU é dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós folha, cada um dos quais corresponde a uma das sub-CUs.
[0058] Cada nó da estrutura de dados quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó na quadtree pode incluir um sinalizador de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e pode depender se a CU está dividida em sub-CUs. Se uma CU não for dividida ainda mais, ela é referida como uma CU folha. Nesta invenção, quatro sub-CUs de uma CU folha também serão referidas como CUs folha, mesmo que não haja divisão explícita da CU folha original. Por exemplo, se uma CU no tamanho 16x16 não for dividido ainda mais, as quatro sub- CUs 8x8 também serão chamadas de CUs folha, embora a UC 16x16 nunca tenha sido dividida.
[0059] Uma CU tem um propósito semelhante a um macrobloco do padrão H.264, exceto que uma CU não possui uma distinção de tamanho. Por exemplo, um bloco de árvore pode ser dividido em quatro nós secundários (também referidos como sub-CUs) e cada nó secundário pode, por sua vez, ser um nó principal e ser dividido em outros quatro nós secundários. Um nó secundário, não dividido,final, referido como um nó folha da quadtree, compreende um nó de codificação, também conhecido como uma CUfolha.Os dados de sintaxe associados a um fluxo de bits codificado podem definir um número máximo de vezes que um bloco de árvore pode ser dividido, referido como uma profundidade de CU máxima, e também pode definir um tamanho mínimo dos nós de codificação. Consequentemente, um fluxo de bits também pode definir uma unidade de codificação menor (SCU). Esta invenção usa o termo “bloco” para se referir a qualquer de uma CU, PU ou TU, no contexto de HEVC, ou estruturas de dados semelhantes no contexto de outros padrões (por exemplo, macroblocos e seus sub-blocos em H.264 / AVC).
[0060] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e deve ser de forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do bloco de árvore com um máximo de 64x64 pixels ou mais. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados a uma UC podem descrever, por exemplo, a divisãoda CU em uma ou mais PUs. Os modos de divisão podem diferir entre se a CU é pulada ou codificada em modo direto, encodificada em modo de intrapredição ou encodificada em modo de interpredição. As PUs podem ser divididas de forma não quadrada. Os dados de sintaxe associados a uma CU também podem descrever, por exemplo, a divisão da CU em uma ou mais TUs de acordo com uma quadtree. Uma TU pode ser de forma quadrada ou nãoquadrada (por exemplo, retangular).
[0061] O padrão HEVC permite transformações de acordo com TUs, que podem ser diferentes para diferentes CUs. As TUs são tipicamente dimensionadas com base no tamanho de PUs dentro de uma determinada CU definida para uma LCU dividida, embora isso nem sempre seja o caso. As TUs são normalmente do mesmo tamanho ou menores do que as PUs.Em alguns exemplos, as amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores usando uma estrutura quadtree conhecida como “quadtree residual” (RQT). Os nós folha da RQT podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixels associados às TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantizados.
[0062] Uma CU folha pode incluir uma ou mais unidades de predição (PUs). Em geral, um PU representa uma área espacial correspondente a toda ou uma parteda CU correspondente, e pode incluir dados para recuperar uma amostra de referência para a PU. Além disso, uma PU inclui dados relacionados à predição. Por exemplo, quando a PU é encodificada em modo intra, os dados para a PU podem ser incluídos em uma quadtree residual (RQT), que pode incluir dados que descrevem um modo de intrapredição para uma TU correspondente à PU. Como outro exemplo, quando a PU é encodificada em modo inter, a PU pode incluir dados que definem um ou mais vetores de movimento para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente verticaldo vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de um quarto de pixel ou precisão de um oitavo pixel), uma imagem de referência à qual o vetor de movimento aponta e / ou uma lista de imagens de referência (por exemplo, lista 0, Lista 1 ou Lista C) para o vetor de movimento.
[0063] Uma CU folha com uma ou mais Pus também pode incluir uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas usando uma RQT (também referida como uma estrutura quadtree da TU), conforme discutido acima. Por exemplo, um sinalizador de divisão pode indicar se uma CU folha é dividida em quatro unidades de transformada. Então, cada unidade de transformada pode ser ainda dividida em sub-TUs adicionais. Quando uma TU não é dividida ainda mais, ela pode ser referida como uma TU folha. Geralmente, para intracodificação, todas as TU folha pertencentes a uma CU folha compartilham o mesmo modo de intrapredição. Ou seja, o mesmo modo de intrapredição é geralmente aplicado para calcular os valores preditos para todas as TUs de uma CU folha. Para intracodificação, um encodificador de vídeo pode calcular um valor residual para cada TUfolha usando o modo de intrapredição, como uma diferença entre a parte da UC correspondente à TU e o bloco original. Uma TU não é necessariamente limitada ao tamanho de uma PU. Assim, TUs podem ser maiores ou menores que uma PU. Para codificação intra, uma PU pode ser co-localizada com uma TU folha correspondente para a mesma CU. Em alguns exemplos, o tamanho máximo de uma TU folha pode corresponder ao tamanho da CUfolha correspondente.
[0064] Além disso, as TUs de CUs folha também podem ser associadas a respectivas estruturas de dados quadtree, referidas como quadtrees residuais (RQTs). Ou seja, uma CU folha pode incluir uma quadtree indicando como a CU folha é dividida em TUs. O nó de raiz de uma quadtree de TU geralmente corresponde a uma CUfolha, enquanto o nó de raiz de uma quadtree de QU geralmente corresponde a um bloco de árvore (ou LCU). TUs da RQT que não são divididas são chamadas de TUs folha. Em geral, esta invenção usa os termos CU e TU para se referir à CU folha e TU folha, respectivamente, a menos que seja indicado de outra forma.
[0065] Uma sequência de vídeo tipicamente inclui uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em outro lugar, que descreve uma série de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe da fatia que descrevem um modo de encodificação para a respectiva fatia. O encodificador de vídeo 20 normalmente opera em blocos de vídeo dentro de fatias de vídeo individuais para encodificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis e podem variar de tamanho de acordo com um padrão de codificação especificado.
[0066] Como exemplo, o HM suporta a predição em vários tamanhos de PU. Supondo que o tamanho de uma CU particular seja 2Nx2N, o HM suporta a intrapredição em tamanhos de PU de 2Nx2N ou NxN e interpredição em tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N ou NxN. O HM também suporta divisão assimétrica para interpredição em tamanhos PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Na divisão assimétrica, uma direção de uma UC não é dividida, enquanto a outra direção é dividida em 25% e 75%. A parte da CU correspondente à divisão de 25% é indicada por um “n” seguido de uma indicação de “Para cima”, “Para baixo”, “Esquerda” ou “Direita”. Assim, por exemplo, “2NxnU”se refere a uma CU 2Nx2N que é dividida horizontalmente com uma PU 2Nx0,5N na parte superior e uma PU 2Nx1,5N na parte inferior.
[0067] Nesta invenção, “NxN” e “N por N” podem ser utilizados de forma intercambiável para se referir às dimensões de pixel de um bloco de vídeo, em termos de dimensões verticais e horizontais, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Da mesma forma, um bloco NxN geralmente tem N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro não negativo. Os pixels em um bloco podem ser dispostos em linhas e colunas. Além disso, os blocos não precisam necessariamente ter o mesmo número de pixels na direção horizontal que na direção vertical. Por exemplo, os blocos podem compreender NxMpixels, onde M não é necessariamente igual a N.
[0068] Seguindo a codificação intrapreditiva ou interpreditiva usando as PUs de uma CU, o encodificador de vídeo 20 pode calcular dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe que descrevem um método ou modo de geração de dados de pixels preditivos no domínio espacial (também referido como o domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformada após a aplicação de uma transformada, por exemplo, uma transformada de cosseno discreta (DCT), uma transformada de inteiros, uma transformada wavelet ou uma transformada conceitualmente semelhante a dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixels entre pixels da imagem não encodificada e valores de predição correspondentes às PUs. O encodificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU e, em seguida, transformar as TUs para produzir coeficientes de transformada para a CU.
[0069] Seguindo quaisquer transformadas para produzir coeficientes de transformada, o encodificador de vídeo 20 pode realizar a quantização dos coeficientes de transformada. A quantização geralmente se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, proporcionando uma compressão adicional. O processo de quantização pode reduzir a profundidade do bit associada a alguns ou todos os coeficientes. Por exemplo, um valor n- bit pode ser arredondado para baixo para um valor m-bit durante a quantização, onde n é maior que m.
[0070] Após a quantização, o encodificador de vídeo pode escanear os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo os coeficientes de transformada quantizados. A varredura pode ser concebida para dispor coeficientes de maior energia(e, portanto, de menor frequência) na frente da matriz e dispor coeficientes de menor energia (e, portanto, maior frequência) na parte de trás da matriz. Em alguns exemplos, o encodificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para explorar os coeficientes de transformada quantizados para produzir um vetor serializado que pode ser encodificado por entropia. Em outros exemplos, o encodificador de vídeo 20 pode executar uma varredura adaptativa. Depois de escanear os coeficientes de transformada quantizados para formar um vetor unidimensional, o encodificador de vídeo 20 pode encodificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação por comprimento variável adaptativo ao contexto (CAVLC), a codificação aritmética binária adaptativa ao contexto (CABAC), a codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação de entropia por divisão do intervalo de probabilidade (PIPE) ou outra metodologia de encodificação de entropia. O encodificador de vídeo 20 pode também encodificar por entropia elementos de sintaxe associados aos dados de vídeo encodificados para uso pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0071] Para executar CABAC, o em codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode se referir, por exemplo, a se os valores vizinhos do símbolo são diferentes de zero ou não. Para executar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. Palavras-chave em VLC podem ser construídas de modo que códigos relativamente mais curtos correspondem a símbolos mais prováveis, enquanto códigos mais longos correspondem a símbolos menos prováveis. Desta forma, o uso da VLC pode atingir uma economia de bits, por exemplo, através do uso de palavras-chave de igual comprimento para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0072] De acordo com as técnicas desta invenção, o encodificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para executar qualquer uma ou todas as técnicas seguintes mostradas na lista enumerada abaixo, sozinhas ou em qualquer combinação: 1. Posição do candidato ATMVP, se inserido, por exemplo, como uma lista de candidatos à mesclagem a.Assumir que os candidatos espaciais e o candidato à TMVP estão inseridos em uma lista de candidatos à mesclagem em uma determinada ordem. O candidato ATMVP pode ser inserido em qualquer posição relativamente fixa desses candidatos. i. Em uma alternativa, por exemplo, o candidato ATMVP pode ser inserido na lista de candidatos à mesclagem após os dois primeiros candidatos espaciais, por exemplo, A1 e B1; ii. Em uma alternativa, por exemplo, o candidato ATMVP pode ser inserido após os três primeiros candidatos espaciais, por exemplo, A1 e B1 e B0; iii. Em uma alternativa, por exemplo, o candidato ATMVP pode ser inserido após os quatro primeiros candidatos, por exemplo, A1, B1, B0 e A0. iv. Em uma alternativa, por exemplo, o candidato ATMVP pode ser inserido logo antes do candidato à TMVP. v. Em um alternativa, por exemplo, o candidato ATMVP pode ser inserido logo após o candidato à TMVP. b. Alternativamente, a posição do candidato ATMVP na lista de candidatos pode ser sinalizada no fluxo de bits. As posições de outros candidatos, incluindo o candidato à TMVP, podem ser adicionalmente sinalizadas. 2. A verificação de disponibilidade do candidato ATMVP pode ser aplicada acessando apenas um conjunto de informações de movimento. Quando esse conjunto de informações não está disponível, por exemplo, um bloco sendo intracodificado, todo o candidato ATMVP é considerado como indisponível. Nesse caso, a ATMVP não será inserida na lista de mesclagem. a. Uma posição central, ou uma sub-PU central é usada puramente para verificar a disponibilidade do candidato ATMVP. Quando uma sub-PU central é usada, a sub- PU central é escolhida para ser aquela que cobre a posição central (por exemplo, a posição central3, com uma coordenada relativa de (W / 2, H / 2) para aamostra superior esquerda da PU, em que WxH é o tamanho da PU). Tal posição ou sub-PUcentral pode ser usada em conjunto com o vetor temporal para identificar um bloco correspondente na imagem de origem de movimento. É identificado um conjunto de informações de movimento do bloco que cobre a posição central de um bloco correspondente. 3. Conjunto representativo de informações de movimento para a PU codificada por ATMVP a partir de uma sub-PU. a. Para formar o candidato ATMVP, o conjunto representativo de informações de movimento é formado primeiro. b. Esse conjunto representativo de informações de movimento pode ser derivado de uma posição fixa ou sub-PU fixa. Ele pode ser escolhido da mesma forma que o conjunto de informações de movimento usado para determinar a disponibilidade do candidato ATMVP, conforme descrito no ponto #2. c. Quando uma sub-PU identificou seu próprio conjunto de informações de movimento e não está disponível, ela é configurada para ser igual ao conjunto representativo de informações de movimento. d. Se o conjunto representativo de informações de movimento estiver configurado para ser aquele de uma sub- PU, nenhum armazenamento de movimento adicional é necessário ao nível do decodificador para a CTU ou fatia atual no pior dos casos. e. Esse conjunto representativo de informações de movimento é usado em todos os cenários quando os processos de decodificação exigem que toda PU seja representada por um conjunto de informações de movimento, incluindo a poda, de modo que o processo seja usado para gerar candidatos à mesclagem bi-preditivos combinados. 4. O candidato ATMVP é podado com o candidato à TMVP e as interações entre TMVP e ATMVP podem ser consideradas; as técnicas detalhadas estão listadas abaixo: a. A poda de um candidato baseado em sub-PU, por exemplo, candidato ATMVP com um candidato normal, pode ser conduzida usando o conjunto representativo de informações de movimento (como no ponto #3) para esse candidato baseado em sub-PU. Se tal conjunto de informações de movimento for o mesmo que um candidato à mesclagem normal, os dois candidatos são considerados como os mesmos. b. Alternativamente, além disso, uma verificação é realizada para determinar se a ATMVP contém vários conjuntos diferentes de informações de movimento para múltiplas sub-Pus; se pelo menos dois conjuntos diferentes forem identificados, o candidato baseado em sub-PU não é usado para a poda, ou seja, é considerado diferente de qualquer outro candidato; caso contrário, ele pode ser usado para poda (por exemplo, pode ser podado durante o processo de poda). c. Alternativamente, além disso, o candidato ATMVP pode ser podado com os candidatos espaciais, por exemplo, apenas os superiores à esquerda, com posições denotadas como A1 e B1. d. Alternativamente, apenas um candidato é formado a partir de referência temporal, sendo o candidato ATMVP ou o candidato à TMVP. Quando ATMVP está disponível, o candidato é ATMVP; caso contrário, o candidato é TMVP. Esse candidato é inserido na lista de candidatos à mesclagem em uma posição semelhante à posição da TMVP. Nesse caso, o número máximo de candidatos pode ser mantido inalterado. i. Alternativamente, TMVP é sempre desabilitada mesmo quando ATMVP não está disponível. ii. Alternativamente, TMVP é usada somente quando ATMVP não está disponível. e. Alternativamente, quando ATMVP está disponível e TMVP não está disponível, um conjunto de informações de movimento de uma sub-PU é usado como o candidato à TMVP. Neste caso, além disso, o processo de poda entre ATMVP e TMVP não é aplicado. f.Alternativamente, ou adicionalmente, o vetor temporal usado para ATMVP também pode ser usado para TMVP, de modo que a posição inferior direita ou posição central 3, como usada para TMVP atual em HEVC, não precisa ser usada, 1. Alternativamente, a posição identificada pelo vetor temporal e as posições inferior direita e central3 são conjuntamente consideradas para fornecer um candidato à TMVP disponível. 5. Várias verificações de disponibilidade para ATMVP são suportadas para dar maior chance de o candidato ATMVP ser mais preciso e eficiente. Quando o candidato ATMVP atual da imagem de origem de movimento como identificado pelo primeiro vetor temporal (por exemplo, como mostrado na FIG. 9) não estiver disponível, outras imagens podem ser consideradas como imagem de origem de movimento. Quando outra imagem for considerada, ela pode estar associada a um segundo vetor temporal diferente, ou pode ser associada simplesmente com um segundo vetor temporal dimensionado a partir do primeiro vetor temporal que aponta para o candidato ATMVP indisponível. a. Um segundo vetor temporal pode identificar um candidato ATMVP em uma segunda imagem de origem de movimento e a mesma verificação de disponibilidade pode ser aplicada. Se o candidato ATMVP como derivado da segunda imagem de origem de movimento estiver disponível, o candidato ATMVP é derivado e nenhuma outra imagem precisa ser verificada; caso contrário, outras imagens como imagens de origem de movimento precisam ser verificadas. b. As imagens a serem verificadas podem ser aquelas nas listas de imagens de referência da imagem atual, com uma determinada ordem. Para cada lista, as imagens são verificadas na ordem crescente do índice de referência. A lista X é marcada primeiro e as imagens na lista Y (sendo 1-X) seguem. i. A lista X é escolhida para que a lista X seja a lista que contém a imagem co-localizada usada para TMVP. ii. Alternativamente, X é simplesmente definido como sendo 1 ou 0. c. As imagens a serem verificadas são aquelas identificadas pelos vetores de movimento dos vizinhos espaciais, com uma determinada ordem. 6. Uma divisão da PU que o ATMVP atual aplica pode ser 2Nx2N, NxN, 2NxN, Nx2N ou divisões da divisão de movimento assimétrico (AMP), como 2NxN / 2. a. Alternativamente, além disso, se outros tamanhos de divisão podem ser permitidos, ATMVP também pode ser suportado, e esse tamanho pode incluir, por exemplo, 64x8. b. Alternativamente, o modo só pode ser aplicado a determinadas divisões, por exemplo, 2Nx2N. 7. O candidato ATMVP é marcado como um tipo diferente de candidato à mesclagem. 8. Ao identificar um vetor (vetor temporal como na primeira etapa) de vizinhos, várias posições vizinhas, por exemplo, aquelas usadas na construção da lista de candidatos à mesclagem, podem ser verificadas em ordem. Para cada um dos vizinhos, os vetores de movimento correspondentes à lista de imagens de referência 0 (lista 0) ou lista de imagens de referência 1 (lista 1) podem ser verificados em ordem. Quando dois vetores de movimento estão disponíveis, os vetores de movimento na lista X podem ser verificados primeiro e seguidos pela lista Y (com Y sendo igual a 1-X), de modo que a lista X é a lista que contém a imagem co-localizada usada para TMVP. Em ATMVP, um vetor temporal é usado como uma mudança de qualquer posição central de uma sub-PU, em que os componentes do vetor temporal podem precisar ser deslocados para números inteiros. Essa posição central deslocada é usada para identificar a menor unidade na qual os vetores de movimento podem ser alocados, por exemplo, com um tamanho de 4x4 que cobre a posição central atual. a. Alternativamente, os vetores de movimento correspondentes à lista 0 podem ser verificados antes dos correspondentes à lista 1; b. Alternativamente, os vetores de movimento correspondentes à lista 1 podem ser verificados antes dos correspondentes à lista 0; c. Alternativamente, todos os vetores de movimento correspondentes à lista X em todos os vizinhos espaciais são verificados em ordem, seguidos pelos vetores de movimento correspondentes à lista Y (sendo Y igual a 1X). Aqui, a lista “X” pode ser a lista que indica onde a imagem co-localizada pertence ou simplesmente definida como sendo 0 ou 1. d. A ordem dos vizinhos espaciais pode ser a mesma usada no modo de mesclagem HEVC. 9. Quando, na primeira etapa de identificação,um vetor temporal não inclui informações que identifiquem uma imagem de referência, a imagem de origem de movimento como mostrada na FIG. 9 pode ser simplesmente configurada para ser uma imagem fixa, por exemplo, a imagem co-localizada usada para a TMVP. a. Nesse caso, o vetor só pode ser identificado a partir dos vetores de movimento que apontam para uma imagem fixa. b. Nesse caso, o vetor só pode ser identificado a partir dos vetores de movimento que apontam para qualquer imagem, mas ainda em escala em relaçãoà imagem fixa. 10. Quando, na primeira etapa de identificação, um vetor consiste em identificar uma imagem de referência, a imagem de origem de movimento como mostrada na FIG. 9, uma ou mais das seguintes verificações adicionais podem ser aplicadas a um vetor de movimento candidato. a. Se o vetor de movimento estiver associado a uma imagem ou fatia que seja Intracodificada, esse vetor de movimento é considerado como indisponível e não pode ser usado para ser convertido no vetor. b. Se o vetor de movimento identifica um bloco Intra (por exemplo, adicionando a coordenada central atual com o vetor de movimento) na imagem associada, esse vetor de movimento é considerado como indisponível e não pode ser usado para ser convertido no vetor. 11. Quando na primeira etapa de identificação de um vetor, os componentes do vetor podem ser configurados para serem (metade da largura da PUatual, meia altura da PU atual), de modo que ele identifique uma posição de pixel inferior direita na imagem de origem de movimento. Aqui (x, y) indica componentes horizontais e verticais de um vetor de movimento. a. Alternativamente, os componentes do vetor podem ser configurados para serem (soma (metade da largura da PU atual, M), soma (metade da altura da PU atual, N)) onde a soma da função (a, b) retorna a soma de a e b. Em um exemplo, quando asinformações do movimento são armazenadas na unidade 4x4, M e N são ambos iguais a 2. Em outro exemplo, quando as informações de movimento são armazenadas na unidade 8x8, M e N são ambos definidos como iguais a 4. 12. O tamanho do sub-bloco / sub-PU quando ATMVP se aplica é sinalizado em um conjunto de parâmetros, por exemplo, conjunto de parâmetros de sequência do conjunto de parâmetros de imagem. O tamanho varia do tamanho da PU menor ao tamanho da CTU. O tamanho também pode ser pré- definido ou sinalizado. O tamanho pode ser, por exemplo, tão pequeno quanto 4x4. Alternativamente, o tamanho do sub- bloco / sub-PU pode ser derivado com base no tamanho da PU ou CU. Por exemplo, o sub-bloco / sub-PU pode ser ajustado igual a max (4x4, (largura da CU) >>M). O valor de M pode ser predefinido ou sinalizado no fluxo de bits. 13. O número máximo de candidatos à mesclagem pode ser aumentado em 1 devido ao fato de que ATMVP pode ser considerado como um novo candidato à mesclagem. Por exemplo, em comparação com o FIEVC que leva até 5 candidatos em uma lista de candidatos à mesclagem após a poda, o número máximo de candidatos à mesclagem pode ser aumentado para 6. a. Alternativamente, a poda com o candidato à TMVP convencional ou a unificação com o candidato à TMVP convencional pode ser realizada para ATMVP, de modo que o número máximo de candidatos à mesclagem possa ser mantido como inalterado. b. Alternativamente, quando ATMVP é identificadacomo disponível, um candidato vizinho espacial é excluído da lista de candidatos à mesclagem, por exemplo, o último candidato vizinho espacial na ordem de obtenção é excluído. 14. Quando vários vetores de movimento vizinhos espaciais são considerados para derivar o vetor temporal, uma similaridade do vetor de movimento pode ser calculada com base nos vetores de movimento vizinhos da PU atual, bem como os vetores de movimento vizinhos identificados por um vetor temporal específico sendo configurado igual a um vetor de movimento. O que leva à maior semelhança de movimento pode ser escolhido como o vetor temporal final. a. Em uma alternativa, para cada vetor de movimento a partir de uma posição vizinha N, o vetor de movimento identifica um bloco (mesmo tamanho que a PU atual) na imagem de origem de movimento, em que a sua posição vizinha N contém um conjunto das informações de movimento. Este conjunto de vetor de movimento é comparado com o conjunto das informações de movimento como na posição vizinha N do bloco atual. b. Em outra alternativa, para cada vetor de movimento de umaposição vizinha N, o vetor de movimento identifica um bloco na imagem de origem de movimento, em que as suas posições vizinhas contêm vários conjuntos de informações de movimento. Estes múltiplos conjuntos de vetor de movimento são comparados com os múltiplos conjuntos de informações de movimento das posições vizinhas da PU atual nas mesmas posições relativas. A similaridade das informações de movimento é calculada. Por exemplo, a PUatual tem os seguintes conjuntos de informações de movimento de A1, B1, A0 e B0, denotados como MIA1, MIB1, MIA0 e MIB0. Para uma TV do vetor temporal, ele identifica um bloco correspondente à PU na imagem de origem de movimento. Esse bloco possui informações de movimento das mesmas posições relativas A1, B1, A0 e B0 e denotadas como TMIA1, TMIB1, TMIA0 e TMIB0. A similaridade de movimento determinada por TV é calculada como em que MVSim define a similaridade entre dois conjuntos de informações de movimento. c. Em ambos os casos acima, a similaridade de movimento MVSim pode ser usada, em que os dois parâmetros de entrada são os dois conjuntos de informações de movimento, cada um contendo até dois vetores de movimento e dois índices de referência. Cada par dos vetores de movimento na lista X é de fato associado a imagens de referência na lista X diferente de imagens diferentes, a imagem atual e a imagem de origem de movimento. Para cada um dos dois vetores de movimento MVXN e TMVXN (com X sendo igual a 0 ou 1), a diferença do vetor de movimento MVDXN pode ser calculada como MVXN - TMVXN. Depois, a diferença MVSimX é calculada como, por exemplo, Se ambos os conjuntos de informações de movimento contiverem vetores de movimento disponíveis, MVSim é configurado igual a MVSim0 + MVSim1. i. Para ter um cálculo unificado da diferença de movimento, ambos os vetores de movimento precisam ser dimensionados em direção à mesma imagem fixa, que pode ser, por exemplo, a primeira imagem de referência RefPicListX[0] da lista X da imagem atual. ii. Se a disponibilidade do vetor de movimento na lista X do primeiro conjunto e a disponibilidade do vetor de movimento na lista X do segundo conjunto são diferentes, ou seja, um índice de referência é -1 enquanto o outro não é,esses dois conjuntos de informações de movimento são considerados não similares na direção X. Se os dois conjuntos não forem semelhantes em ambos os conjuntos, a função MVSim final pode retornar um grande valor T, que pode ser, por exemplo, considerado como infinito. iii. Alternativamente, para um par de conjuntos de informações de movimento, se um for predito a partir da lista X (X sendo igual a 0 ou 1), mas não a lista Y (Y sendo igual a 1-X) e o outrotiver o mesmo status, uma ponderação entre 1 e 2 (por exemplo, MVSim é igual a MVSimX*1,5) pode ser usada. Quando um conjunto é predito apenas a partir da lista X e o outro só é predito a partir da lista Y, MVSim é configurado como o grande valor T. iv. Alternativamente, para qualquer conjunto de informações de movimento, desde que um vetor de movimento esteja disponível, ambos os vetores de movimento serão produzidos. No caso em que apenas um vetor de movimento esteja disponível (correspondente à lista X), ele é dimensionado para formar o vetor de movimento correspondente à outra lista Y. d. Alternativamente, o vetor de movimento pode ser medido com base nas diferenças entre os pixels vizinhos da PU atual e os pixels vizinhos do bloco (mesmo tamanho que a PU atual) identificados pelo vetor de movimento. O vetor de movimento que leva à menor diferença pode ser escolhido como o vetor temporal final. 15. Ao derivar o vetor temporal do bloco atual, vetores de movimento e / ou vetores temporais de blocos vizinhos que são codificados com ATMVP podem ter uma prioridade maior do que os vetores de movimento de outros blocos vizinhos. a. Em um exemplo, apenas os vetores temporais de blocos vizinhos são verificados primeiro, e o primeiro disponível pode ser configurado para o vetor temporal do bloco atual. Somente quando esses vetores temporais não estão presentes, os vetores de movimento normais são verificados novamente. Neste caso, vetores temporais para blocos codificados por ATMVP precisam ser armazenados. b. Em outro exemplo, apenas vetores de movimento de blocos vizinhos codificados por ATMVP são verificados primeiro, e o primeiro disponível pode ser configurado para o vetor temporal do bloco atual. Somente quando esses vetores temporais não estão presentes, os vetores de movimento normais são verificados novamente. c. Em outro exemplo, apenas vetores de movimento de blocos vizinhos codificados por ATMVP são verificados primeiro, e o primeiro disponível pode ser configurado para o vetor temporal do bloco atual. Se tais vetores de movimento não estiverem disponíveis, a verificação do vetor temporal continua semelhante à do ponto15a. d. Em outro exemplo, vetores temporais de blocos vizinhos são verificados primeiro, o primeiro disponível pode ser configurado para o vetor temporal do bloco atual. Se esses vetores de movimento não estiverem disponíveis, a verificação do vetor temporal continua semelhante à do ponto 15b. e. Em outro exemplo, os vetores temporais e os vetores de movimento dos blocos vizinhos codificados por ATMVP são verificados primeiro, o primeiro disponível pode ser configurado para o vetor temporal do bloco atual. Somente quando esses vetores temporais e vetores de movimento não estão presentes, os vetores de movimento normais são verificados novamente. 16. Quando vários vetores de movimento vizinhos espaciais são considerados para derivar o vetor temporal, um vetor de movimento pode ser escolhido de modo que ele minimize a distorção que é calculada a partir do domínio do pixel, por exemplo, a correspondência modelo pode ser usada para derivar o vetor temporal, de tal forma que ele leva ao custo mínimo de correspondência selecionado como o vetor temporal final. 17. A derivação de um conjunto de informações de movimento de um bloco correspondente (na imagem de origem de movimento) é feita de forma que, quando um vetor de movimento estiver disponível no bloco correspondente para qualquer lista X (denote o vetor de movimento a ser MVX), para a sub-PU atual do candidato ATMVP, o vetor de movimento é considerado como disponível para a lista X (por dimensionamento do MVX). Se o vetor de movimento não estiver disponível no bloco correspondente para qualquer lista X, o vetor de movimento é considerado como indisponível para a lista X. a. Alternativamente, quando o vetor de movimento no bloco correspondente não estiverdisponível para a lista X,porém disponível para a lista 1 - X (designado 1 - X por Y e designa o vetor de movimento como MVY), o vetor de movimento ainda é considerado como disponível para a lista X (por dimensionamento do MVY para a imagem de referência alvo nalista X). b. Alternativamente, ou além disso, quando ambos os vetores de movimento nobloco correspondente para a lista X e a lista Y (igual a 1-X) estão disponíveis, os vetores de movimento da lista X e lista Y não são necessariamente usados para dimensionar diretamente e gerar os dois vetores de movimento de uma sub-PU atual por dimensionamento. i. Em um exemplo, ao formular o candidato ATMVP, a verificação de atraso reduzido como feita em TMVP aplica- se a cada sub-PU. Se, para cada imagem (indicada como refPic) em cada lista de imagens de referência da fatia atual, o valor da contagem de ordem de imagem (POC) da refPic é menor do que a POC da fatia atual, a fatia atual é considerada com o modo de atraso reduzido. Neste modo de atraso reduzido, os vetores de movimento da lista X e lista Y são dimensionados para gerar os vetores de movimento de uma sub-PU atual para a lista X e a lista Y, respectivamente. Quando não estiver no modo de atraso reduzido, apenas um vetor de movimento MVZ de MVX ou MVY é escolhido e dimensionado para gerar os dois vetores de movimento para uma sub-PU atual. Semelhante à TMVP, nesse caso, Z é configurado igual a colocated_from_10_flag, o que significa que depende se a imagem co-localizada como na TMVP está na lista X ou a lista Y da imagem atual. Alternativamente, Z é configurado da seguinte forma: se a imagem de origem de movimento for identificada a partir da lista X, Z é definido como X. Alternativamente, além disso, quando as imagens de origem de movimento pertencem a ambas as listas de imagens de referência e RefPicList0[idx0] é a imagem de origem de movimento que está primeiro presente na lista 0 eRefPicList(1)[idx1] é a imagem de origem de movimento que está primeiro presente na lista 1, Z é definido como sendo 0 se idx0 for menor ou igual a idx1, e,caso contrário, configurado para ser 1. 18. A imagem de origem de movimento pode ser sinalizada, por exemplo, gerada pelo encodificador de vídeo 20 em um fluxo de bits codificado. Em detalhe, um sinalizador indicando se a imagem de origem de movimento é da lista 0 ou lista 1 é sinalizado para uma fatia B. Alternativamente, além disso, um índice de referência para uma lista 0 ou lista 1 da imagem atual pode ser sinalizado para identificar a imagem de origem de movimento. 19. Ao identificar um vetor temporal, um vetor é considerado como indisponível (assim outros podem ser considerados) se ele aponta para um bloco Intracodificado na imagem de origem de movimento associada.
[0073] A implementação das várias técnicas desta descrição é discutida abaixo.Assume-se que a ATMVP é implementada em cima da HEVC versão 1. A compressão de movimento pode não se aplicar a imagens de referência e blocos menores com compensação de movimento bidirecional podem ser ativados.
[0074] Sinalização da ATMVP em SPS:
[0075] atmvp_sub_pu_size pode estar presente em SPS. Atmvp_sub_pu_size pode especificar o tamanho das sub-PUs de uma PU codificada com o modo ATMVP. Está na faixa de 2 a 6, inclusive. O tamanho dasub-PU para ATMVP, (spuWidth, spuHeight) é derivado como min (w, 1 <<atmvp_sub_pu_size) por min (h, 1<<atmvp_sub_pu_size), em que wxh é o tamanho de uma PU atual.
[0077] Alternativamente, tanto a largura como a altura dos tamanhos da sub-PU são sinalizadas separadamente em SPS.
[0078] Alternativamente, os tamanhos da sub-PU são sinalizados em contraste com o tamanho da CTU ou o menor tamanho da unidade de codificação.
[0079] Uma atmvpEnableFlagvariável é derivada para ser igual a 1 se atmvp_sub_pu_size for menor que um tamanho de CTU (por exemplo, 6 como em HEVC versão 1) e 0, caso contrário.
[0080] Sinalização de ATMVP em cabeçalho de fatia: five_minus_max_num_merge_cand especifica o número máximo de candidatos MVP àmesclagem suportados na fatia subtraída de 5. O número máximo de candidatos MVP à mesclagem,MaxNumMergeCand é derivado como: MaxNumMergeCand = (atmvpEnableFlag? 6: 5) - five_minus_max_num_merge_cand (7-41)
[0081] O valor de five_minus_max_num_merge_canddeve ser limitado de tal forma que MaxNumMergeCand esteja na faixa de 1 a (atmvpEnableFlag? 6: 5), inclusive.
[0082] Alternativamente, o five_minus_max_num_merge_cand é alterado parasix_minus_max_num_merge_cande as semânticas são as seguintes:
[0083] six_minus_max_num_merge_cand especifica o número máximo de candidatos MVP à mesclagem suportados na fatia subtraída de 6. O número máximo de candidatos MVP à mesclagem, MaxNumMergeCand é derivado comoMaxNumMergeCand = 6 - six_minus_max_num_merge_cand (7-41).
[0084] Alternativamente, max_num_merge_cand_minus1 é diretamente sinalizado.
[0085] Em alguns exemplos, outras mudanças de sintaxe são desnecessárias, e um candidato ATMVP é identificado por um idx de mesclagem, que pode estar no intervalo de 0 a 5, inclusive.
[0086] Processos de decodificação relacionados à ATMVP: os seguintes processos de decodificação podem ser implementados, por exemplo, pelo decodificador de vídeo 30, para formular um candidato ATMVP e incluí-lo como parte da lista de candidatos à mesclagem:
[0087] Identificação do vetor temporal da primeira fase:
[0088] Definir mtSrcPOCvariável para o valor POC da imagem co-localizada usada em TMVP, tV para um vetor zero e atmvpAvaFlag é definido como 0.
[0089] Para cada posição N de posições vizinhas espaciais, sendo A1, B1, B0, A0 e B2, aplica-se o seguinte: • dir é definido igual a collocated_from_10_flag; • Para X sendo igual a dir até (1-dir), inclusive, se a fatia atual for uma fatia B, ou apenas X sendo igual a 0 se a fatia atual não for uma fatia B, aplica-se o seguinte: o Quando o bloco vizinho N está disponível e não é Intracodificado, e RefIdxX[N] é maior ou igual a 0 (indicado MVLX[N] eRefIdxX[N] são o vetor de movimento e o índice de referência do bloco vizinho N correspondente a RefPicListX), as seguintes etapas se aplicam em ordem: ■ mtSrcPOC é definido igual ao valor POC da RefPicListX[RefIdxX[N]]; ■ tV é definido como MVLX[N]; ■ atmvpAvaFlag é definido como 1; ■ encerrar esse ciclo.
[0090] Identificação de uma fonte de movimento disponível: Definir uma lista de imagens para serCanPicATMVP a ser uma lista vazia. CanPicATMVP[0] é definido para ser a imagem com valor POC igual a mtSrcPOC. i é igual a 1; MotionSrcPic é uma imagem vazia e pode ser atualizada conforme especificado abaixo. Para cada uma das listas de imagens de referência disponíveis X, aplica-se o seguinte: • dir é definido igual a collocated_from_10_flag; o Para X sendo igual a dir até (1-dir), inclusive, se a fatia atual for uma fatia B, ou apenas X sendo igual a 0 se a fatia atual não for uma fatia B, aplica-se o seguinte: o Para cada idx de 0 a num_ref_active_1X_minus1; ■ CanPicATMVP[i++] = RefPicListX [idx]; Deixar (CurrPosX, CurrPosY) ser a coordenada da posição de pixel superior esquerdo da PU atual. Para n sendo igual a 0 até i, inclusive, aplica- se o seguinte. • Se n não for igual a 0, dimensionar o tVem direção à imagem CanPICATMVP[n] para derivar um tScaledVector, em que as imagens relevantes para o tV são a imagem atual e CanPicATMVP[0], e as imagens relevantes para o vetor de destino TScaledVector são a imagem atual e CanPicATMVP[i]; • Caso contrário, (n é igual a 0), tScaledVector é configurado igual a tV. • Obter as informações de movimento do bloco correspondente à sub-PU central do CanPicATMVP[n] como a seguir: ocenterPosX = CurrPosX + = ((tScaledVector[0] +2)>>2); ocenterPosY = CurrPosY + = ((tScaledVector[1] +2)>>2); o Deixar (centerPosX, centerPosY) ser a posição que identifica o bloco correspondente dasub-PU central e o tamanho da PU atual ser largura por altura. ocenterPosX += CurrPosX + ((largura / spuWidth)>>1) *spuWidth + (min(spuWidth, largura)>>1); ocenterPosY += CurrPosX + ((altura / spuHeight)>>1) *spuHeight + (min(spuHeight, altura)>>1); o Invocar o processo de busca de informações de movimento que captura as informações de movimento, com uma imagem mtnSrcPicsendo igual a CanPICATMVP[n], e uma posição (posX, posY) sendo igual a (centerPosX, centerPosY) como entrada e um sinalizador disponível do movimento da sub- PUSubPuMtnAvaFlag, um par de índices de referência sColRefIdxO e sColRefIdx1, e um par de vetores de movimento, sColMV0, sColMV1 como saída. o Se SubPuMtnAvaFlagfor igual a 1, aplica-se o seguinte. ■ MotionSrcPic é definido para CanPicATMVP[n] ■ Tv é definido para ser tScaledVector ■ encerrar esse ciclo.
[0091] Processo de busca de informações de movimento: A entrada deste processo é uma imagem mtnSrcPic e uma posição (posX, posY) com a imagem, e a saída deste processo são o sinalizador de movimento disponível mtnAvaFlag, um par de índices de referência refIdx0 e refIdx1 e um par de vetores de movimento, mv0, mv1.O (posX, posY) é primeiro recortado para estar dentro da imagem mtnSrcPic. O bloco blkT 4x4 (ou outro tamanho menor que armazena informações de movimento), contendo a posição (posX, posY), é identificado. MtnAvaFlag é igual a 0. Se blkT não for intracodificado, e suas informações de movimento contiverem blkTRefIdx0, blkTRefIdx1, blkTMv0 e blkTMv1, aplica-se o seguinte. • Quando blkTRefIdx0 ou blkTRefIdx1 é maior ou igual a 0,mtnAvaFlag é definido igual a 1 e o seguinte se aplica para X sendo igual a 0 e 1. orefIdxX é definido igual ao blkTRefIdxX omvX é definido igual ao blkTMvX
[0092] Geração de movimento da sub-PU para ATMVP: Se SubPuMtnAvaFlag for igual a 1, o seguinte processo é invocado. • Para cada uma das sub-PU (por exemplo, na ordem de varredura raster), aplica-se o seguinte. o Denotar o índice horizontal e o índice vertical da sub-PUatual como k e 1, respectivamente, onde k varia de 0 até largura / spuWidth-1, inclusive, e 1 varia de 0 até altura / spuHeight-1, inclusive. Por exemplo, se uma PU 16x16 é dividida em quatro sub-PUs 8x8, os valores (k, 1) das quatro sub-PUs na ordem raster varredura são (0, 0), (1, 0), (0, 1) e (1, 1), respectivamente. o A coordenada daSub-PU (tempPosX, tempPosY) é caculada como(TempPosX, tempPosY) = (CurrPosX, CurrPosY) + (k* spuWidth, 1* spuHeight). o tempPosX += ((tV [0] +2)>>2); o tempPosY += ((tV[1] +2)>>2); o Invocar o processo de busca de informações de movimento que captura as informações de movimento, com uma imagem mtnSrcPic sendo igual a MotionSrcPic, e uma posição (posX, posY) sendo igual a (tempPosX, tempPosY) como entrada e umsinalizador disponível do movimento da sub- PUcurrSubPuMtnAvaFlag, um par de índices de referência currSubRefIdx0 e currSubRefIdx1, e um par de vetores de movimento, currSubMV0, currSubMV1 como saída. o Quando currSubPuMtnAvaFlag é igual a 0, para X igual a 0 e 1, inclusive, currSubRefIdxX é configurado igual a cColRefIdxX e currSubMVX é definido igual a cColMVX. o Para X ser igual a 0 e 1, inclusive, dimensionar o vetor de movimento currSubMVX, em direção à imagem de referência de destino padrão da imagem atual, que é RefPicListX[0], como em TMVP. Denotar o índice de referência derivado e o vetor de movimento para a sub-PU atual como cSpuRefIdxX e cSpuMVX e são derivados da seguinte maneira: ■ CSpuRefIdxX = (currSubRefIdxX> = 0? 0: -1); ■ cSpuMVX é definido como o vetor dimensionado de currSubMVX, como em TMVP. O conjunto representativo de informações de movimento, aRefIdxX, e aMVX (para X sendo igual a 0 ou 1) para este candidato ATMVP é derivado da seguinte maneira: • aRefIdxX = (cColRefIdxX> = 0? 0:-1); • aMVXé definido para ser o vetor dimensionado de cColMVX, como em TMVP. Alternativamente, o processo de busca de movimento e o processo de dimensionamento de movimento são os mesmos (ou similares) como em TMVP de HEVC versão 1, ou seja, a subcláusula 8.5.3.2.8 de HEVC versão 1: “O processo de derivação para vetores de movimento co-localizados” aplica-se para substituir o texto em destaque nesta subseção. Nesse caso, o processo de busca de movimento e dimensionamento de movimento como em TMVP (subcláusula 8.5.3.2.8) substitui o processo de busca de movimento e o processo de dimensionamento de movimento definidos acima (incluindo como indicado pelo texto em itálico).
[0093] Inserção do candidato ATMVP em uma lista de candidatos à mesclagem:
[0094] Quando SubPuMtnAvaFlag é igual a 1, o candidato ATMVP é inserido no candidato à mesclagem após o candidato A0 (ou alternativamente B0) ser testado e possivelmente inserido na lista de candidatos à mesclagem.
[0095] As informações de movimento para este candidato são consideradas como sendo formadas por aRefIdxX e aMVX (sendo X igual a 0 ou 1).
[0096] Quando o candidato à TMVP estiver disponível, ele é ainda comparado com as informações representativas do candidato ATMVP (aRefIdxX e aMVX); apenas se o candidato à TMVP tiver um refIdxX desigual para aRefIdxX ou o vetor de movimento sendo desigual para aMVX (sendo X igual a 0 ou 1), ele ainda está inserido na lista de candidatos à mesclagem.
[0097] Quando todos os candidatos, incluindo o candidato ATMVP, são considerados de forma transparente como representados por um único conjunto de informações de movimento (até dois índices de referência e dois vetores de movimento associados), as informações representativas para o candidato ATMVP são usadas. Por exemplo, no processo de Derivação para candidatos à mesclagem bipreditivos combinados, são utilizadas as informações de movimento representativas da ATMVP.
[0098] Além disso, cada candidato à mesclagem é anexado com um marcador (pode ser um marcador ou um tipo) indicando se tal candidato é um candidato ATMVP.
[0099] Além disso, para um candidato ATMVP, os conjuntos de informações de movimento, denotados acima como cSpuRefIdxX e cSpuMVX para X sendo igual a 0 e 1 e para cada sub-PU precisam ser armazenados para que a PU atualseja decodificada.
[0100] Compensação de movimento com base no candidato ATMVP: Quando uma PUatual é codificada com o modo de mesclagem e o merge_idx especificou um candidato indicado como um candidato ATMVP, para cada sub-PU, as informações de movimento cSpuRefIdxX e cSpuMVX (para X sendo igual a 0 e 1) são derivadas e usadas para executar a compensação de movimento para a sub-PU atual. Depois que a compensação de movimento é feita, a decodificação residual e outros processos são feitos da mesma forma que outros modos inter.
[0101] O encodificador de vídeo 20 pode ainda enviar dados de sintaxe, tais como dados de sintaxe baseados em bloco, dados de sintaxe baseados em quadros e dados de sintaxe baseados em GOP, ao decodificador de vídeo 30, por exemplo, em um cabeçalho de quadro, um cabeçalho de bloco, um cabeçalho de fatia ou um cabeçalho GOP.Os dados de sintaxe de GOP podem descrever uma série de quadros no respectivo GOP, e os dados de sintaxe de quadros podem indicar um modo de encodificação / predição usado para encodificar o quadro correspondente.
[0102] O encodificador de vídeo 20 e o decodificador de vídeo 30 podem ser implementados como qualquer um de uma variedade de circuitos de encodificador ou decodificador adequados, conforme aplicável, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), circuitos de lógica discreta, software, hardware, firmware ou qualquer combinação destes. Cada um dos encodificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais encodificadores ou decodificadores, cada um deles pode ser integrado como parte de um encodificador / decodificador de vídeo combinado (CODEC). Um dispositivo incluindo o encodificador de vídeo 20 e / ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador e / ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0103] A FIG. 2 é um diagrama em blocos que ilustra um exemplo de encodificador de vídeo 20 que pode implementar técnicas para a predição avançada do vetor de movimento temporal (ATMVP).O codificador de vídeo 20 pode executar inter e intracodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação depende da predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de um determinadoquadroou imagem de vídeo. A intercodificação depende da predição temporal para reduzir ou remover a redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. O modo intra (modo I) pode referir-se a qualquer um dos vários modos de codificação de base espacial. Os modos Inter, como a predição unidirecional (modo P) ou a bipredição (modo B), podem referir-se a qualquer um dos vários modos de codificação de base temporal.
[0104] Como mostrado na FIG. 2, o encodificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser encodificado. No exemplo da FIG. 2, o encodificador de vídeo 20 inclui a unidade de seleção de modo 40, memória de imagem de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54 e a unidade de encodificação de entropia 56. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, unidade de estimativa de movimento 42, unidade de intrapredição 46 e a unidade de divisão 48. Para a reconstrução do bloco de vídeo, o encodificador de vídeo 20 também inclui a unidade de quantização inversa 58, unidade de transformada inversa 60 e o somador 62. Um filtro de desbloqueio (não mostrado na FIG. 2) também pode ser incluído para filtrar os limites do bloco para remover artefatos de bloqueio do vídeo reconstruído. Se desejado, o filtro de desbloqueio tipicamente filtra a saída do somador 62. Filtros adicionais (em loop ou pós-loop) também podem ser usados além do filtro de desbloqueio. Tais filtros não são mostrados por brevidade, mas, se desejado, podem filtrar a saída do somador 50 (como um filtro em loop).
[0105] Durante o processo de encodificação, o encodificador de vídeo 20 recebe umquadroou fatia de vídeo a ser codificada. O quadro ou fatia pode ser dividido em vários blocos de vídeo. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 realizam a codificação interpreditiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para proporcionar a predição temporal. A unidade de intrapredição 46 pode, alternativamente, executar a codificação intrapreditiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos no mesmoquadro ou fatia que o bloco a ser codificado para fornecer a predição espacial. O encodificador de vídeo 20 pode executar várias passagens de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0106] Além disso, a unidade de divisão 48 pode dividor blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de divisão anteriores em passagens de codificação anteriores. Por exemplo, a unidade de divisão 48 pode inicialmente dividir um quadro ou fatia em LCUs, e dividir cada uma das LCUs em sub-CUs com base na análise de distorção de taxa (por exemplo, otimização da distorção de taxa). A unidade de seleção de modo 40 pode ainda produzir uma estrutura de dados quadtree indicativa da divisão de uma LCU em sub-CUs. CPUs de nó folha da quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0107] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base em resultados de erro, e fornece o bloco intra ou intercodificado resultante ao somador 50 para gerar dados de bloco residual e ao somador 62 para reconstruir o bloco encodificado para uso como quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores de modo intra, informações de divisão e outras informações de sintaxe, à unidade de encodificação de entropia 56.
[0108] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de uma imagem ou quadro de vídeo atual em relação a um bloco preditivo dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco preditivo é um bloco considerado correspondente ao bloco a ser codificado, em termos de diferença de pixels, o que pode ser determinado pela soma da diferença absoluta (SAD), soma da diferença quadrada (SSD) ou outros indicadores de diferença. Em alguns exemplos, o encodificador de vídeo 20 pode calcular valores para posições de pixels subinteiros de imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, o encodificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições de pixel fracionadas da imagem de referência. Portanto, a unidade de estimativa de movimento 42 pode realizar uma busca de movimento em relação às posições de pixel completas e posições de pixel fracionadas e produzir um vetor de movimento com precisão de pixel fracionada.
[0109] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada, comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de encodificação de entropia 56 e a unidade de compensação de movimento 44.
[0110] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver a busca ou a geração do bloco preditivo com base no vetor de movimento determinado pela unidade de estimativa de movimento 42. Novamente, a unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser integradas funcionalmente, em alguns exemplos. Ao receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco preditivo ao qual o vetor de movimento aponta em uma das listas de imagens de referência. O somador 50 forma um bloco de vídeo residual subtraindo valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixels, conforme discutido abaixo. Em geral, a unidade de estimativa de movimento 42 executa estimativa de movimento em relação a componentes luma, e a unidade de compensação de movimento 44 usa vetores de movimento calculados com base nos componentes luma para ambos os componentes croma e componentes luma. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados aos blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0111] O encodificador de vídeo 20 pode ser configurado para executar qualquer uma das várias técnicas desta invenção discutidas acima em relação à FIG. 1. Por exemplo, aunidade de compensação de movimento44 pode ser configurada para codificar informações de movimento para um bloco de dados de vídeo usando AMVP ou modo de mesclagem de acordo com as técnicas desta invenção.
[0112] Supondo que a unidade de compensação de movimento 44 eleja executar o modo de mesclagem, a unidade de compensação de movimento 44 pode formar uma lista de candidatos incluindo um conjunto de candidatos à mesclagem. A unidade de compensação de movimento 44 pode adicionar candidatos à lista de candidatos com base em uma determinada ordem predeterminada. Em um exemplo, a unidade de compensação de movimento 44 adiciona os candidatos à lista de candidatos na ordem de A1, B1, B0, A0, em seguida um candidato à predição avançada do vetor de movimento temporal (ATMVP). A unidade de compensação de movimento 44 também pode adicionar candidatos adicionais e executar a poda da lista de candidatos, conforme discutido acima. Em última análise, a unidade de seleção de modo 40 pode determinar qual dos candidatos deve ser usado para encodificar informações de movimento do bloco atual, e encodificar um índice de mesclagem que representa o candidato selecionado.
[0113] Além disso, em alguns exemplos, a unidade de compensação de movimento 44 pode, primeiro, determinar se o candidato ATMVP está disponível. Por exemplo, a unidade de compensação de movimentopode determinar um bloco correspondente ao bloco atual em uma imagem de referência e determinar se as informações de movimento estão disponíveis para o bloco correspondente. A unidade de compensação de movimento 44 pode então determinar que o candidato ATMVP (isto é, o bloco correspondente) está disponível quando as informações de movimento estão disponíveis para o bloco correspondente. Em alguns exemplos, a unidade de compensação de movimento 44 pode determinar que as informações de movimento estão disponíveis para o bloco correspondente quando todo o bloco correspondente (por exemplo, um bloco de posição central, como mostrado na FIG. 5a abaixo) é predito sem o uso de intrapredição, mas não estão disponíveis quando pelo menos parte do bloco correspondente é predito usando intrapredição.
[0114] De forma semelhante, em alguns exemplos, a unidade de compensação de movimento 44 pode determinar qual dos dois candidatos à ATMVP potenciais deve ser usado como o candidato ATMVP finalmente adicionado à lista de candidatos. Por exemplo, a unidade de compensação de movimento 44 pode formar um primeiro vetor de movimento temporal relativo ao bloco atual que identifica um primeiro candidato ATMVP em uma primeira imagem de origem de movimento, isto é, uma primeira imagem de referência. Se as informações de movimento não estiverem disponíveis para o primeiro candidato ATMVP, a unidade de compensação de movimento44 pode determinar se as informações de movimento estão disponível para um segundo candidato ATMVP diferente. O segundo candidato ATMVP pode ser identificado usando o mesmo vetor de movimento temporal referente a uma segunda imagem de referência diferente, um vetor de movimento temporal diferente referente à mesma (ou seja, primeira) imagem de referência, ou um vetor de movimento temporal diferente referente à segundaimagem de referência diferente. As imagens de referência a serem verificadas, conforme discutido acima, podem estar em ordem ascendente de índices de referência em uma lista de imagens de referência. Do mesmo modo, se forem utilizados diferentes vetores de movimento temporal, os vetores de movimento temporal podem ser selecionados em uma ordem predeterminada a partir de vetores temporais de blocos vizinhos ao bloco atual.
[0115] Além disso, a unidade de compensação de movimento 44 pode determinar se um vetor de movimento está disponível para uma sub-PU no candidato ATMVP para uma lista de imagens de referência particular. Se assim for, o vetor de movimento é considerado disponível para essa lista de imagens de referência. Caso contrário, o vetor de movimento é considerado indisponível para essa lista de imagens de referência. Alternativamente, se um vetor de movimento estiver disponível para a outra lista de imagens de referência, a unidade de compensação de movimento 44 pode modificar as informações de movimento dimensionando o vetor de movimento para apontar para uma imagem de referência alvo na primeira lista de imagens de referência, conforme discutido acima.
[0116] A unidade de intrapredição 46 pode intrapredizer um bloco atual, como uma alternativa à interpredição realizada pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44, conforme descrito acima. Em particular, a unidade de intrapredição 46 pode determinar um modo intraprediçãoa usar para encodificar um bloco atual. Em alguns exemplos, a unidade de intrapredição 46 pode encodificar um bloco atual usando vários modos de intrapredição, por exemplo, durante passagens de encodificação separadas, e a unidade de intrapredição 46 (ou a unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intrapredição apropriado para usar a partir dos modos testados.
[0117] Por exemplo, a unidade de intrapredição 46 pode calcular valores de distorção de taxa usando uma análise da distorção de taxa para os vários modos de intrapredição testados e selecionar o modo de intrapredição com as melhores características de distorção de taxa entre os modos testados. A análise da distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco encodificado e um bloco original, não encodificado que foi encodificado para produzir o bloco encodificado, bem como uma taxa de bits (isto é, um número de bits) usada para produzir O bloco encodificado. A unidade de intrapredição 46 pode calcular razões das distorções e taxas para os vários blocos encodificados para determinar qual modo de intrapredição exibe o melhor valor da distorção de taxa para o bloco.
[0118] Após selecionar um modo de intrapredição para um bloco, a unidade de intrapredição 46 pode fornecer informações indicativas do modo de intrapredição selecionado para o bloco à unidade de encodificação de entropia 56. A unidade de encodificação de entropia 56 pode encodificar as informações que indicam o modo de intrapredição selecionado. O encodificador de vídeo 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, quais podem incluir uma pluralidade de tabelas de índice de modo de intrapredição e uma pluralidade de tabelas de índice de modo de intrapredição modificadas (também referidas como tabelas de mapeamento de palavras de código), definições de contextos de encodificação para vários blocos e indicações de um modo de intrapredição mais provável, uma tabela de índice de modo de intrapredição e uma tabela de índice de modo de intrapredição modificada para uso para cada um dos contextos.
[0119] O encodificador de vídeo 20 forma um bloco de vídeo residual subtraindo os dados de predição da unidade de seleção de modo 40 do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que executam esta operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformação conceitualmente semelhante, ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficientes de transformada residuais. A unidade de processamento de transformada 52 pode executar outras transformadas que são conceitualmente semelhantes à DCT. Transformadas wavelet, transformadas inteiras, transformadas sub-bandas ou outros tipos de transformadas também podem ser usados.
[0120] Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter as informações residuais de um domínio de valor de pixel para um domínio de transformada, tal como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformadapara reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade do bit associada a alguns ou a todos os coeficientes. O grau de quantização pode ser modificado ajustando um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode então realizar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Alternativamente, a unidade de encodificação de entropia 56 pode executar a varredura.
[0121] Após a quantização, a unidade de encodificação de entropia 56 codifica com entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de encodificação de entropia 56 pode executar codificação por comprimento variável adaptativo ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação por entropia de divisão de intervalo de probabilidade (PIPE) ou outra técnica de codificação com entropia.No caso da codificação com entropia baseada em contexto, o contexto pode ser baseado em blocos vizinhos. Após a codificação com entropia pela unidade de encodificação de entropia 56, o fluxo de bits encodificado pode ser transmitido para outro dispositivo (por exemplo, decodificador de vídeo 30) ou arquivado para posterior transmissão ou recuperação.
[0122] A unidade de quantização inversa 58 e a unidade de transformada inversa 60 aplicam quantização inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio do pixel, por exemplo, para posterior utilização como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando o bloco residual a um bloco preditivo de um dos quadros da memória de imagem de referência 64. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel de subinteiros para uso em estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado por movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de imagem de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um quadro de vídeo subsequente.
[0123] Desta forma, o encodificador de vídeo 20 da FIG. 2 representa um exemplo de um codificador de vídeo configurado para formar, para um bloco atual dos dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos ao bloco atual e, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada do vetor de movimento temporal (ATMVP); codificar um índice na lista de candidatos à mesclagem que identifica um candidato à mesclagem da pluralidade de candidatos à mesclagem na lista de candidatos à mesclagem e codificar o bloco atual de dados de vídeo usando informações de movimento do candidato à mesclagem identificado.
[0124] A FIG. 3 é um diagrama em blocos que ilustra um exemplo do decodificador de vídeo 30 que pode implementar técnicas para a predição avançada do vetor de movimento temporal (ATMVP). No exemplo da FIG. 3, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 70, unidade de compensação de movimento 72, unidade de intrapredição 74, unidade de quantização inversa 76, unidade de transformada inversa 78, memória de imagem de referência 82 e somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca à passagem de encodificação descrita em relação ao encodificador de vídeo 20 (FIG. 2). A unidade de compensação de movimento 72 pode gerar dados de predição baseados em vetores de movimento recebidos da unidade de decodificação de entropia 70, enquanto a unidade de intrapredição 74 pode gerar dados de predição com base em indicadores do modo intrapredição recebidos da unidade de decodificação de entropia 70.
[0125] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo encodificado que representa blocos de vídeo de uma fatia de vídeo encodificada e elementos de sintaxe associados do encodificador de vídeo 20. A unidade de decodificação de entropia 70 do decodificador de vídeo 30 decodifica com entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores do modo intrapredição e outros elementos de sintaxe. A unidade de descodificação de entropia 70 encaminha os vetores de movimento para e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe ao nível da fatia de vídeo e / ou ao nível do bloco de vídeo.
[0126] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados de blocos previamente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (ou seja, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, lista 0 e lista 1, utilizando técnicas de construção padrão baseadas em imagens de referência armazenadas na memória de imagem de referência 82.
[0127] A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia de vídeo atual, analisando os vetores de movimento e outros elementos de sintaxe, e usa asinformações de predição para produzir os blocos preditivos para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou interpredição) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, Fatia B, fatia P ou fatia GPB), informações de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, estado de interpredição para cada bloco de vídeo intercodificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0128] A unidade de compensação de movimento 72 também pode realizar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode usar filtros de interpolação como usados pelo encodificador de vídeo 20 durante a encodificação dos blocos de vídeo para calcular valores interpolados para pixels de subinteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo encodificador de vídeo 20 dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos preditivos.
[0129] O decodificador de vídeo 30 pode ser configurado para executar qualquer uma das várias técnicas desta descrição discutidas acima em relação à FIG. 1. Por exemplo, o a unidade de compensação de movimento72 pode ser configurada para determinar se as informações de movimento para um bloco de dados de vídeo são codificadas usando AMVP ou modo de mesclagem de acordo com as técnicas desta descrição. Mais particularmente, a unidade de decodificação de entropia 70 pode decodificar um ou mais elementos de sintaxe que representam a forma como as informações de movimento são codificadas para o bloco atual.
[0130] Supondo que os elementos de sintaxe indicam que o modo de mesclagem é executado, a unidade de compensação de movimento 72 pode formar uma lista de candidatos incluindo um conjunto de candidatos à mesclagem. A unidade de compensação de movimento 72 pode adicionar candidatos à lista de candidatos com base em uma ordem predeterminada particular. Em um exemplo, a unidade de compensação de movimento 72 adiciona os candidatos à lista de candidatos na ordem de A1, B1, B0, A0, em seguida um candidato à predição avançada do vetor de movimento temporal (ATMVP). A unidade de compensação de movimento72 também pode adicionar candidatos adicionais e executar a poda da lista de candidatos, conforme discutido acima. Em últimocaso, a unidade de compensação de movimento 72 pode decodificar um índice de mesclagem que representa qual dos candidatos é usado para codificar informações de movimento para o bloco atual.
[0131] Além disso, em alguns exemplos, a unidade de compensação de movimento 72 pode primeiro determinar se o candidato ATMVP está disponível. Por exemplo, a unidade de compensação de movimentopode determinar um bloco correspondente ao bloco atual em uma imagem de referência e determinar se as informações de movimento estão disponíveis para o bloco correspondente. A unidade de compensação de movimento 72 pode então determinar que o candidato ATMVP (isto é, o bloco correspondente) está disponível quando as informações de movimento estão disponíveis para o bloco correspondente. Em alguns exemplos, a unidade de compensação de movimento 72 pode determinar que as informações de movimento estão disponíveis para o bloco correspondente quando todo o bloco correspondente é predito sem o uso de intrapredição, mas não está disponível quando pelo menos parte do bloco correspondente está predito usando intrapredição.
[0132] De forma semelhante, em alguns exemplos, a unidade de compensação de movimento 72 pode determinar qual dos dois candidatos à ATMVP potenciais deve ser usado como o candidato ATMVP finalmente adicionado à lista de candidatos. Por exemplo, a unidade de compensação de movimento 72 pode formar um primeiro vetor de movimento temporal em relação ao bloco atual que identifica um primeiro candidato ATMVP em uma primeira imagem de origem de movimento, isto é, uma primeira imagem de referência. Se as informações de movimento não estiverem disponíveis para o primeiro candidato ATMVP, aunidade de compensação de movimento72 pode determinar se as informações de movimento estãodisponíveis para um segundo candidatoà ATMVP diferente. O segundo candidato ATMVP pode ser identificado usando o mesmo vetor de movimento temporal referente a uma segunda imagem de referência diferente, um vetor de movimento temporal diferente referente à mesma (ou seja, primeira) imagem de referência, ou um vetor de movimento temporal diferente referente à segundaimagem de referência diferente.As imagens de referência a serem verificadas, conforme discutido acima, podem estar em ordem ascendente de índices de referência em uma lista de imagens de referência. Do mesmo modo, se forem utilizados diferentes vetores de movimento temporal, os vetores de movimento temporal podem ser selecionados em uma ordem predeterminada a partir de vetores temporais de blocos vizinhos ao bloco atual.
[0133] Além disso, a unidade de compensação de movimento 72 pode determinar se um vetor de movimento está disponível para uma sub-PU no candidato ATMVP para uma lista de imagens de referência particular. Se assim for, o vetor de movimento é considerado disponível para essa lista de imagens de referência. Caso contrário, o vetor de movimento é considerado indisponível para essa lista de imagens de referência. Alternativamente, se um vetor de movimento estiver disponível para a outra lista de imagens de referência, a unidade de compensação de movimento 72 pode modificar as informações de movimento dimensionando o vetor de movimento para apontar para uma imagem de referência alvo na primeira lista de imagens de referência, conforme discutido acima.
[0134] A unidade de quantização inversa 76 quantiza em inverso, isto é, desquantiza, coeficientes de transformada quantizados providos no fluxo de bits e decodificados com entropia pela unidade de decodificação de entropia 70. O processo de quantização inversa pode incluir a utilização de um parâmetro de quantização QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.
[0135] A unidade de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada de inteiros inversa ou um processo de transformada inversa conceitualmente semelhante, aos coeficientes de transformada para produzir blocos residuais no domínio do pixel.
[0136] Depois que a unidade de compensação de movimento 72 gera o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado, somando os blocos residuais da unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que executam esta operação de soma. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados para remover artefatos de bloqueio. Outros filtros em loop (no loop de codificação ou após o loop de codificação) também podem ser usados para facilitar as transições de pixels ou de outra forma melhorar a qualidade do vídeo. Os blocos de vídeo decodificados em um determinado quadro ou imagem são então armazenados na memória de imagem de referência 82, que armazena imagens de referência usadas para a compensação de movimento subsequente. A memória de imagem de referência 82 também armazena o vídeo decodificado para apresentação posterior em um dispositivo de exibição, tal como o dispositivo de exibição 32 da FIG. 1.
[0137] Desta forma, o decodificador de vídeo 30 representa um exemplo de um codificador de vídeo configurado para formar, para um bloco atual dos dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos ao bloco atual e, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada do vetor de movimento temporal (ATMVP); codificar um índice na lista de candidatos à mesclagem que identifica um candidato à mesclagem da pluralidade de candidatos à mesclagemna lista de candidatos à mesclagem e codificar o bloco atual de dados de vídeo usando informações de movimento do candidato à mesclagem identificado.
[0138] A FIG. 4 é um diagrama conceitual que ilustra candidatos vizinhos espaciais em HEVC. Os candidatos MV espacial são derivados dos blocos vizinhos mostrados na FIG. 4, para uma PU específica (PU0), embora os métodos de geração dos candidatos dos blocos difiram para os modos de mesclagem e AMVP.
[0139] No modo de mesclagem, até quatro candidatos àMV espacial podem ser derivados com as ordens mostradas na FIG. 4(a) com números, e a ordem é a seguinte: esquerda (0, A1), acima (1, B1), acima à direita (2, B0), abaixo à esquerda (3, A0) e acima à esquerda (4, B2), como mostrado na FIG. 4(a). Ou seja, na FIG. 4(a), o bloco 100 inclui PU0 104A e PU1104B. Quando um codificador de vídeo deve codificar informações de movimento para PU0 104A usando o modo de mesclagem, o codificador de vídeo adiciona informações de movimento dos blocos vizinhos espaciais 108A, 108B, 108C, 108D e 108E a uma lista de candidatos, nessa ordem. Os blocos 108A, 108B, 108C, 108D e 108E também podem ser referidos como, respectivamente, blocos A1, B1, B0, A0 e B2, como em HEVC.
[0140] No modo AVMP, os blocos vizinhos são divididos em dois grupos: um grupo esquerdo que inclui os blocos 0 e 1, e um grupo acima incluindo os blocos 2, 3 e 4 como mostrado na FIG. 4(b). Estes blocos são marcados, respectivamente, como blocos 110A, 110B, 110C, 110D e 110E na FIG. 4(b). Em particular, na FIG. 4(b), o bloco 102 inclui PU0 106A e PU1 106B, e os blocos 110A, 110B, 110C, 110D e 110E representam vizinhos espaciais à PU0 106A. Para cada grupo, o candidato potencial em um bloco vizinho referente à mesma imagem de referência como aquela indicada pelo índice de referência sinalizado tem a maior prioridade a ser escolhida para formar um candidato final do grupo. É possível que todos os blocos vizinhos não contenham um vetor de movimento apontando para a mesma imagem de referência. Portanto, se tal candidato não puder ser encontrado, o primeiro candidato disponível será dimensionado para formar o candidato final; assim, as diferenças de distância temporal podem ser compensadas.
[0141] A FIG. 5 é um diagrama conceitual que ilustra a predição do vetor de movimento temporal em HEVC. Em particular, a FIG. 5(a) ilustra uma CU 120exemplificativa incluindo PU0 122A e PU1 122B. A PU0 122A inclui um bloco central 126 à PU 122 A e um bloco inferior direito 124 à PU0 122A. A FIG. 5(a) também mostra um bloco externo 128 para o qual as informações de movimento podem ser preditas a partir das informações de movimento da PU0 122A, conforme discutido abaixo. A FIG. 5(b) ilustra uma imagem atual 130 incluindo um bloco atual 138 para o qual as informações de movimento devem ser preditas. Em particular, a FIG. 5(b) ilustra uma imagem co- localizada 134 à imagem atual 130 (incluindo o bloco co- localizado 140 ao bloco atual 138), uma imagem de referência atual 132 e uma imagem de referência co- localizada 136. O bloco co-localizado 140 é predito usando o vetor de movimento 144, que é usado como um preditor do vetor de movimento temporal (TMVP) 142 para informações de movimento do bloco 138.
[0142] Um codificador de vídeo pode adicionar um candidato à TMVP (por exemplo, candidato à TMVP 142) à lista de candidatos MV após quaisquer candidatos à vector de movimento espacial se a TMVP estiver habilitada e o candidato à TMVP estiver disponível. O processo de derivação do vetor de movimento para o candidato à TMVP é o mesmo para ambos os modos de mesclagem e AMVP. No entanto, o índice de referência alvo para o candidato à TMVP no modo de mesclagem é definido como 0, de acordo com HEVC.
[0143] A localização do bloco primário para a derivação do candidato à TMVP é o bloco inferior direito fora da PU co-localizada, como mostrado na FIG. 5(a) como o bloco 124 para PU0 122A, para compensar a polarização para os blocos acima e esquerdos usados para gerar candidatos espaciais vizinhos. No entanto, se o bloco 124 estiver localizado fora da linha de CTB atual ou as informações de movimento não estiverem disponíveis para o bloco 124, o bloco é substituído pelo bloco central 126 da PU como mostrado na FIG. 5(a).
[0144] O vector de movimento para o candidato à TMVP 142 é derivado do bloco co-localizado 140 da imagem co-localizada 134, como indicado nas informaçõesem nível da fatia.
[0145] De modo semelhante ao modo direto temporal em AVC, um vetor de movimento do candidato à TMVP pode estar sujeito ao dimensionamento do vetor de movimento, que é realizado para compensar diferenças de distância da contagem de ordem de imagem (POC) entre a imagem atual 130 e a imagem de referência atual 132, e a imagem co- localizada 134 e a imagem de referência co-localizada 136. Ou seja, o vetor de movimento 144 pode ser dimensionado para produzir o candidato à TMVP 142, com base nessas diferenças de POC.
[0146] Vários aspectos dos modos de mesclagem e AMVP de HEVC são discutidos abaixo.
[0147] Dimensionamento do vetor de movimento: assume-se que o valor de um vetor de movimento é proporcional à distância entre as imagens no tempo de apresentação. Um vetor de movimento associa duas imagens: a imagem de referência e a imagem que contém o vetor de movimento (ou seja, a imagem contendo). Quando um vetor de movimento é usado pelo encodificador de vídeo 20 ou decodificador de vídeo 30 para predizer outro vetor de movimento, a distância entre a imagem contendo e a imagem de referência é calculada com base nos valores da Contagem de Ordem de Imagem (POC).
[0148] Para um vetor de movimento a ser predito, a imagem contendo e a imagem de referência associadas são diferentes. Ou seja, existem dois valores de diferença de POC para dois vetores de movimento distintos: um primeiro vetor de movimento a ser predito, e um segundo vetor de movimento usado para predizer o primeiro vetor de movimento. Além disso, a primeira diferença de POC é a diferença entre a imagem atual e a imagem de referência do primeiro vetor de movimento, e a segunda diferença de POC é a diferença entre a imagem contendo o segundo vetor de movimento e a imagem de referência a que se refere o segundo vetor de movimento. O segundo vetor de movimento pode ser dimensionado com base nessas duas distâncias de POC. Para um candidato vizinho espacial, as imagens contendo para os dois vetores de movimento são as mesmas, enquanto as imagens de referência são diferentes. No HEVC, o dimensionamento do vetor de movimento aplica-se tanto à TMVP como à AMVP para candidatos vizinhos espaciais e temporais.
[0149] Geração de candidatos a vetor de movimento artificial: se uma lista de candidatos a vetor de movimento não estiver completa, os candidatos a vetor de movimento artificial podem ser gerados e inseridos no final da lista até a lista incluir um número predeterminado de candidatos.
[0150] No modo de mesclagem, existem dois tipos de candidatos a MV: candidatos combinados derivados apenas para fatias B e candidatos zero utilizados apenas para AMVP se o primeiro tipo não fornecer candidatos artificiaissuficientes.
[0151] Para cada par de candidatos que já estão na lista de candidatos e têm informações de movimento necessárias, os candidatos a vetores de movimento combinados bidirecionais são derivados por uma combinação do vetor de movimento do primeiro candidato que se refere a uma imagem na lista 0 e o vetor de movimento de um segundo candidato que se refere a uma imagem na lista 1.
[0152] Processo de poda para inserção de candidato: os candidatos de diferentes blocos podem ser os mesmos, o que diminui a eficiência de uma lista de candidatos à mesclagem / AMVP. Um processo de poda pode ser aplicado para resolver esse problema. De acordo com o processo de poda, um codificador de vídeo compara um candidato com os outros na lista de candidatos atual para evitar a inserção de um candidato idêntico, até certo ponto. Para reduzir a complexidade, apenas um número limitado de processos de poda são aplicados, em vez de comparar cada candidato potencial com todos os outros candidatos já existentes na lista.
[0153] A FIG. 6 ilustra uma estrutura de predição exemplificativa para 3D-HEVC. 3D-HEVC é uma extensão de vídeo em 3D de HEVC em desenvolvimento por JCT-3V. Certas técnicas relacionadas com as técnicas desta descrição são descritas em relação às FIGS. 6 e 7 abaixo.
[0154] A FIG. 6 mostra uma estrutura de predição multivista para um caso de três vistas. V3 indica a vista de base e uma imagem em uma vista não base (V1 ou V5) pode ser predita a partir de imagens em uma vista dependente (base) domesmoinstância de tempo.
[0155] A predição de amostra entre vistas (a partir de amostras reconstruídas) é suportada em MV-HEVC, uma estrutura de predição típica da qual é mostrada na FIG. 8.
[0156] Tanto MV-HEVC quanto 3D-HEVC são compatíveis com HEVC de forma que a vistade base (textura) seja decodificável pelo decodificador HEVC (versão 1). Um modelo de teste para MV-HEVC e 3D-HEVC é descrito em Zhang et al., “Test Model6 of 3D-HEVC and MV-HEVC”, documento JCT-3V ISO/IEC JTC1/SC29/WG11 N13940, disponível no Website mpeg.chiariglione.org/standards/mpeg-h/high-efficiency- video-coding/test-model-6-3d-hevc-and-mv-hevc a partir de 26 de janeiro de 2015.
[0157] Em MV-HEVC, uma imagem atual em uma vista não base pode ser predita por ambas as imagens na mesma vista e imagens em uma vista de referência da mesma instância de tempo, colocando todas essas imagens em listas de imagens de referência da imagem. Portanto, uma lista de imagens de referência da imagem atual contém imagens de referência temporal e imagens de referência intervista.
[0158] Um vetor de movimento associado a um índice de referência correspondente a uma imagem de referência temporal é designado um vetor de movimento temporal.
[0159] Um vetor de movimento associado a um índice de referência correspondente a uma imagem de referência entre vistas é designado um vetor de movimento de disparidade.
[0160] 3D-HEVC suporta todos os recursos em MV- HEVC. Portanto, é habilitada a predição de amostra intervista como mencionado acima.
[0161] Além disso, são suportadas ferramentas de codificação de textura apenas e ferramentas de codificação relacionadas / dependentes da profundidade mais avançadas.
[0162] As ferramentas de codificação somente de textura exigem frequentemente a identificação dos blocos correspondentes (entre vistas) que podem pertencer ao mesmo objeto. Portanto, a derivação do vetor de disparidade é uma tecnologia básica em 3D-HEVC.
[0163] A FIG. 7 é um diagrama conceitual que ilustra a predição de movimento intervista baseada em sub- PU em 3D-HEVC. A FIG. 7 mostra a imagem atual 160 de uma vista atual (VI) e uma imagem co-localizada 162 em uma vista de referência (V0). A imagem atual 160 inclui uma PU atual 164 incluindo quatro sub-Pus 166A-166D (sub-PUs 166). Os respectivos vetores de disparidade 174A-174D (vetores de disparidade 174) identificam sub-PUs 168A-168D correspondentes às sub-PUs 166 na imagem co-localizada 162. Em 3D-HEVC, um método de predição de movimento intervista em nível de sub-PU para o candidato à mesclagem intervista, ou seja, o candidato derivado de um bloco de referência na vista de referência.
[0164] Quando esse modo é habilitado, a PU atual 164 pode corresponder a uma área de referência (com o mesmo tamanho que a PU atual identificada pelo vetor de disparidade) na vista de referência e a área de referência pode ter informações de movimento mais ricas do que as necessárias para a geração de um conjunto de informações de movimento tipicamente para uma PU. Portanto, um método de predição de movimento intervista em nível de sub-PU (SPIVMP) pode ser usado, como mostrado na FIG. 7.
[0165] Este modo também pode ser sinalizado como um candidato à mesclagem especial. Cada uma das sub-PUs contém um conjunto completo de informações de movimento. Portanto, uma PU pode conter vários conjuntos de informações de movimento.
[0166] Herança de parâmetro de movimento (MPI) baseado em sub-PU em 3D-HEVC: de modo semelhante, em 3D- HEVC, o candidato à MPI também pode ser estendido de forma semelhante à predição de movimento intervista em nível de sub-PU. Por exemplo, se a PU de profundidade atual tiver uma região co-localizada que contenha várias PUs, a PU de profundidade atual pode ser separada em sub-PUs, cada uma pode ter um conjunto diferente de informações de movimento. Este método é chamado de MPI sub-PU. Ou seja, os vetores de movimento 172A-172D das sub-PUs correspondentes 168A-168D podem ser herdados por sub-PUs 166A-166D, como vectores de movimento 170A-170D, como mostrado na FIG. 7.
[0167] Informações relacionadas com sub-PU para codificação de vídeo 2D: no Pedido de Patente norte- americana número de série 61/883.111, que é aqui incorporado por referência em sua totalidade, é descrito um modelo de TMVP avançada baseada em sub-PU. Na codificação de uma camada, é proposto um projeto de predição avançada do vetor de movimento temporal em duasfases.
[0168] Uma primeirafase é derivar um vetor que identifica o bloco correspondente da unidade de predição atual (PU) em uma imagem de referência, e uma segunda fase é extrair vários conjuntos de informações de movimento do bloco correspondente e atribuí-las a sub-PUsda PU. Cada sub-PU da PU, portanto, é compensado por movimento separadamente. O conceito da ATMVP é resumido da seguinte forma: 1. O vetor na primeira fase pode ser derivado de blocos vizinhos espaciais e temporais da PUatual. 2. Esse processo pode ser alcançado como ativando um candidato à mesclagem entre todos os outros candidatos à mesclagem.
[0169] Aplicável à codificação de camada única e à predição do vetor de movimento temporal sub-PU, uma PU ou CU pode ter dados de refinamento de movimento a serem transmitidos em cima dos preditores.
[0170] Vários aspectos de concepção do aplicativo 61/883, 111 são destacados da seguinte maneira: 1. A primeirafase de derivação de vetor também pode ser simplificada por apenas um vetor zero. 2. A primeira fase de derivação de vetor pode incluir a identificação conjunta do vetor de movimento e sua imagem associada. Foram propostas várias maneiras de selecionar a imagem associada e decidir o vetor de movimento como sendo o vetor da primeirafase. 3. Se as informações de movimento durante o processo acima não estiverem disponíveis, o “vetor da primeirafase” é usado para substituição. 4. Um vetor de movimento identificado a partir de um vizinho temporal deve ser dimensionado para ser usado para a sub-PU atual, de forma semelhante ao dimensionamento do vetor de movimento em TMVP. No entanto, cuja imagem de referência esse vetor de movimento pode ser dimensionado pode ser projetada com uma das seguintes maneiras: a. A imagem é identificada por um índice de referência fixo da imagem atual. b. A imagem é identificada como sendo a imagem de referência do vizinho temporal correspondente, se também estiver disponível em uma lista de imagens de referência da imagem atual. c. A imagem édefinida como sendo a imagem co- localizada identificada na primeira fase e de onde os vetores de movimento são capturados.
[0171] A FIG. 8 é um diagrama conceitual que ilustra a predição do movimento da sub-PU a partir de uma imagem de referência. Neste exemplo, a imagem atual 180 inclui uma PU 184 atual (por exemplo, uma PU). Neste exemplo, o vetor de movimento 192 identifica a PU 186 da imagem de referência 182 em relação à PU 184. A PU 186 é dividida em sub-PUs 188A-188D, cada uma tendo respectivos vetores de movimento 190A-190D. Assim, embora a PU 184 atual não seja realmente dividida em sub-PUs separadas, neste exemplo, a PU 184 atual pode ser predita usando informações de movimento das sub-PUs 188A-188D. Em particular, um codificador de vídeo pode codificar sub-PUs da PU 184 atual usando os respectivos vetores de movimento 190A-190D.No entanto, o codificador de vídeo não precisa de elementos de sintaxe de código indicando que a PU 184 atual está dividida em sub-PUs. Desta forma, a PU 184 atual pode ser efetivamente predita usando múltiplos vetores de movimento 190A-190D, herdados das respectivas sub-PUs 188A- 188D, sem a sobrecarga de sinalização dos elementos de sintaxe usados para dividir a PU 184 atual em várias subPUs.
[0172] A FIG. 9 é um diagrama conceitual que ilustra imagens relevantes em ATMVP (semelhante à TMVP). Em particular, a FIG. 9 ilustra a imagem atual 204, a imagem de origem de movimento 206 e as imagens de referência 200, 202. Mais particularmente, a imagem atual 204 inclui o bloco atual 208. O vetor de movimento temporal 212 identifica o bloco correspondente 210 da imagem de origem de movimento 206 em relação ao bloco atual 208. O bloco correspondente 210, por sua vez, inclui o vetor de movimento 214, que se refere à imagem de referência 202 e atua como um preditor avançado do vetor de movimento temporal para pelo menos uma parte do bloco atual 208, por exemplo, uma sub-PU do bloco atual 208. Ou seja, o vetor de movimento 214 pode ser adicionado como um preditor do vetor de movimento candidato para o bloco atual 208. Se for selecionado, pelo menos uma parte do bloco atual 208 pode ser predita usando um vetor de movimento correspondente, a saber, o vetor de movimento 216, que se refere à imagem de referência 200.
[0173] A FIG. 10 é um fluxograma que ilustra um método de exemplo para adicionar um candidato ATMVP a uma lista de candidatos durante um processo de encodificação de acordo com as técnicas desta descrição. O método da FIG. 10 é descrito como sendo executado pelo encodificador de vídeo 20 (FIGs.1 e 2). Deve ser entendido, no entanto, que outros dispositivos de encodificação podem ser configurados para executar este ou um método semelhante.
[0174] Inicialmente, o encodificador de vídeo 20 obtém um bloco de dados de vídeo a ser encodificado (não mostrado na FIG. 10). O bloco pode incluir um conjunto de vizinhos espaciais, como os mostrados nas FIG. 4(a) e FIG. 4(b). A unidade de compensação de movimento 44 pode construir a lista de candidatos, primeiro adicionando um candidato espacial esquerdo à lista de candidatos (250). Ou seja, em relação à FIG. 4(a), assumindo que PU0 104A é o bloco a ser encodificado, o encodificador de vídeo 20 pode primeiro inserir o vizinho espacial 108A na lista de candidatos.
[0175] Em seguida, a unidade de compensação de movimento 44 pode adicionar o candidato espacial acima à lista de candidatos (252). Com relação à FIG. 4(a), o encodificador de vídeo 20 pode inserir o vizinho espacial 108B à lista de candidatos.
[0176] Em seguida, a unidade de compensação de movimento 44 pode adicionar o candidato espacial superior direito à lista de candidatos (254). Com relação à FIG. 4(a), o encodificador de vídeo 20 pode inserir o vizinho espacial 108C à lista de candidatos.
[0177] Em seguida, a unidade de compensação de movimento 44 pode adicionar o candidato espacial inferior esquerdo à lista de candidatos (256). Com relação à FIG. 4(a), o encodificador de vídeo 20 pode inserir o vizinho espacial 108Dà lista de candidatos.
[0178] Em seguida, a unidade de compensação de movimento 44 pode adicionar um candidato a preditor avançado do vetor de movimento temporal (ATMVP) à lista de candidatos (258). Conforme discutido acima, o candidato ATMVP pode representar um bloco correspondente identificado por um vetor temporal, como mostrado e discutido em relação, por exemplo, às FIGS. 8 e 9. Além disso, em alguns exemplos, a unidade de compensação de movimento 44 pode primeiro determinar se o candidato ATMVP está disponível. Por exemplo, a unidade de compensação de movimento pode determinar um bloco correspondente ao bloco atual em uma imagem de referência e determinar se as informações de movimento estão disponíveis para o bloco correspondente. A unidade de compensação de movimento 44 pode então determinar que o candidato ATMVP (isto é, o bloco correspondente) está disponível quando as informações de movimento estão disponíveis para o bloco correspondente. Em alguns exemplos, a unidade de compensação de movimento 44 pode determinar que as informações de movimento estão disponíveis para o bloco correspondente quando todo o bloco correspondente é predito sem o uso de intrapredição, mas não está disponível quando pelo menos parte do bloco correspondente é predito usando intrapredição.
[0179] De forma semelhante, em alguns exemplos, a unidade de compensação de movimento 44 pode determinar qual dos dois candidatos à ATMVP potenciais deve ser usado como o candidato ATMVP finalmente adicionado à lista de candidatos. Por exemplo, a unidade de compensação de movimento 44 pode formar um primeiro vetor de movimento temporal relativo ao bloco atual que identifica um primeiro candidato ATMVP em uma primeira imagem de origem de movimento, isto é, uma primeira imagem de referência. Se as informações de movimento não estiverem disponíveis para o primeiro candidato ATMVP, aunidade de compensação de movimento44 pode determinar se as informações de movimento estãodisponíveis para um segundo candidatoà ATMVP diferente. O segundo candidato ATMVP pode ser identificado usando o mesmo vetor de movimento temporal referente a uma segunda imagem de referência diferente, um vetor de movimento temporal diferente referente à mesma (ou seja, primeira) imagem de referência ou um vetor de movimento temporal diferente referente à segunda imagem de referência diferente. As imagens de referência a serem verificadas, conforme discutido acima, podem estar em ordem ascendente de índices de referência em uma lista de imagens de referência. Do mesmo modo, se forem utilizados diferentes vetores de movimento temporal, os vetores de movimento temporal podem ser selecionados em uma ordem predeterminada a partir de vetores temporais de blocos vizinhos ao bloco atual.
[0180] Além disso, a unidade de compensação de movimento 44 pode determinar se um vetor de movimento está disponível para uma sub-PU no candidato ATMVP para uma lista de imagens de referência particular. Se assim for, o vetor de movimento é considerado disponível para essa lista de imagens de referência. Caso contrário, o vetor de movimento é considerado indisponível para essa lista de imagens de referência. Alternativamente, se um vetor de movimento estiver disponível para a outra lista de imagens de referência, a unidade de compensação de movimento 44 pode modificar as informações de movimento dimensionando o vetor de movimento para apontar para uma imagem de referência alvo na primeira lista de imagens de referência, conforme discutido acima.
[0181] O encodificador de vídeo 20 pode então selecionar um dos candidatos da lista de candidatos (260). Por exemplo, o encodificador de vídeo 20 pode testar a encodificação do bloco usando qualquer um ou todos os candidatos na lista de candidatos. Adicionalmente ou alternativamente, a unidade de estimativa de movimento 42 do encodificador de vídeo 20 pode realizar uma pesquisa de movimento e determinar um vetor de movimento para o bloco, e determinar se deve encodificar o vetor de movimento usando a predição avançada do vetor de movimento (AMVP) ou o modo de mesclagem. No exemplo da FIG. 10, presume-se que o encodificador de vídeo 20 tenha escolhido encodificar informações de movimento usando o modo de mesclagem. Em geral, o encodificador de vídeo 20 (mais particularmente, a unidade de seleção de modo 40) pode determinar qual dos candidatos na lista de candidatos produz as melhores características de distorção de taxa e selecionar esse candidato para ser usado para predizer o bloco.
[0182] Em conformidade, o encodificador de vídeo 20 pode predizer o bloco atual usando o candidato selecionado (262). Ou seja, a unidade de compensação de movimento 44 pode recuperar um ou mais blocos de referência identificados por informações de movimento do candidato selecionado e, em alguns exemplos, pode interpolar valores para pixels fracionários, se as informações de movimento tiverem uma precisão de subpixel.
[0183] O encodificador de vídeo 20 pode então formar um bloco residual para o bloco atual (264). Conforme discutido acima, o somador 50 pode calcular diferenças pixel por pixel entre o bloco atual e o bloco predito, formando o bloco residual. O encodificador de vídeo 20 pode então encodificar informações residuais do bloco residual e encodificar um índice de mesclagem (266). Ou seja, a unidade de processamento de transformada 52 pode transformar o bloco residual, para produzir coeficientes de transformada que representam as informações residuais. A unidade de quantização 54 pode então quantizar os coeficientes de transformada. A unidade de encodificação de entropia 56 pode então encodificar com entropia os coeficientes de transformada quantizados, bem como elementos de sintaxe representativos do modo de codificação de informações de movimento (modo de mesclagem, neste exemplo) e o índice de mesclagem representando o candidato selecionado da lista de candidatos.
[0184] De acordo com este modo, o método da FIG. 10 representa um exemplo de um método que inclui formar, para um bloco atual de dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos ao bloco atual e, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançado do vetor de movimento temporal (ATMVP); codificar um índice na lista de candidatos à mesclagem que identifica um candidato à mesclagem da pluralidade de candidatos de mesclagem na lista de candidatos à mesclagem e codificar o bloco atual de dados de vídeo usando informações de movimento do candidato à mesclagem identificado.
[0185] A FIG. 11 é um fluxograma que ilustra um método de exemplo para adicionar um candidato ATMVP a uma lista de candidatos durante um processo de decodificação de acordo com as técnicas desta descrição. O método da FIG. 11 é descrito como sendo executado pelo decodificador de vídeo 30 (FIGs. 1 e 3). Deve ser entendido, contudo, que outros dispositivos de decodificação podem ser configurados para executar este ou um método semelhante.
[0186] Inicialmente, o decodificador de vídeo 30 obtém um bloco de dados de vídeo a ser encodificado (não mostrado na figura 11). O bloco pode incluir um conjunto de vizinhos espaciais, como os mostrados nas FIG. 4(a) e FIG. 4(b). A unidade de compensação de movimento 72 pode construir a lista de candidatos, primeiro adicionando um candidato espacial esquerdo à lista de candidatos (270). Ou seja, em relação à FIG. 4(a), assumindo que PU0 104A é o bloco a ser encodificado, o decodificador de vídeo 30 pode primeiro inserir o vizinho espacial 108A à lista de candidatos.
[0187] Em seguida, a unidade de compensação de movimento 72 pode adicionar o candidato espacial acima à lista de candidatos (272). Com relação à FIG. 4(a), o decodificador de vídeo 30 pode inserir o vizinho espacial 108B à lista de candidatos.
[0188] Em seguida, a unidade de compensação de movimento 72 pode adicionar o candidato espacial superior direito à lista de candidatos (274). Com relação à FIG. 4(a), o decodificador de vídeo 30 pode inserir o vizinho espacial 108C à lista de candidatos.
[0189] Em seguida, a unidade de compensação de movimento 72 pode adicionar o candidato espacial inferior esquerdo à lista de candidatos (276). Com relação à FIG. 4(a), o decodificador de vídeo 30 pode inserir o vizinho espacial 108D à lista de candidatos.
[0190] Em seguida, a unidade de compensação de movimento 72 pode adicionar um candidato a preditor avançado do vetor de movimento temporal (ATMVP) à lista de candidatos (278). Conforme discutido acima, o candidato ATMVP pode representar um bloco correspondente identificado por um vetor temporal como mostrado e discutido em relação, por exemplo, às FIGs. 8 e 9. Além disso, em alguns exemplos, a unidade de compensação de movimento 72 pode primeiro determinar se o candidato ATMVP está disponível. Por exemplo, a unidade de compensação de movimento pode determinar um bloco correspondente ao bloco atual em uma imagem de referência e determinar se as informações de movimento estão disponíveis para o bloco correspondente. A unidade de compensação de movimento 72 pode então determinar que o candidato ATMVP (isto é, o bloco correspondente) está disponível quando as informações de movimento estão disponíveis para o bloco correspondente. Em alguns exemplos, a unidade de compensação de movimento 72 pode determinar que as informações de movimento estão disponíveis para o bloco correspondente quando todo o bloco correspondente é predito sem o uso de intrapredição, mas não estão disponíveis quando pelo menos parte do bloco correspondente é predito usando intrapredição.
[0191] De forma semelhante, em alguns exemplos, a unidade de compensação de movimento 72 pode determinar qual dos dois candidatos à ATMVP potenciais deve ser usado como o candidato ATMVP finalmente adicionado à lista de candidatos. Por exemplo, a unidade de compensação de movimento 72 pode formar um primeiro vetor de movimento temporal em relação ao bloco atual que identifica um primeiro candidato ATMVP em uma primeira imagem de origem de movimento, isto é, uma primeira imagem de referência. Se as informações de movimento não estiverem disponíveis para o primeiro candidato ATMVP, a unidade de compensação de movimento72 pode determinar se as informações de movimento estãodisponíveis para um segundo candidatoà ATMVP diferente. O segundo candidato ATMVP pode ser identificado usando o mesmo vetor de movimento temporal referente a uma segunda imagem de referência diferente, um vetor de movimento temporal diferente referente à mesma (ou seja, primeira) imagem de referência, ou um vetor de movimento temporal diferente referente à segunda imagem de referência diferente. As imagens de referência a serem verificadas, conforme discutido acima, podem estar em ordem ascendente de índices de referência em uma lista de imagens de referência. Do mesmo modo, se forem utilizados diferentes vetores de movimento temporal, os vetores de movimento temporal podem ser selecionados em uma ordem predeterminada a partir de vetores temporais de blocos vizinhos ao bloco atual.
[0192] Além disso, a unidade de compensação de movimento 72 pode determinar se um vetor de movimento está disponível para uma sub-PU no candidato ATMVP para uma lista de imagens de referência particular. Se assim for, o vetor de movimento é considerado disponível para essa lista de imagens de referência. Caso contrário, o vetor de movimento é considerado indisponível para essa lista de imagens de referência. Alternativamente, se um vetor de movimento estiver disponível para a outra lista de imagens de referência, a unidade de compensação de movimento 72 pode modificar as informações de movimento dimensionando o vetor de movimento para apontar para uma imagem de referência alvo na primeira lista de imagens de referência, conforme discutido acima.
[0193] O decodificador de vídeo 30 pode então decodificar um índice de mesclagem para selecionar um dos candidatos da lista de candidatos (280). Mais particularmente, a unidade de decodificação de entropia 70 do decodificador de vídeo 30 pode decodificar com entropia um ou mais elementos de sintaxe representando se as informações de movimento de um bloco atual são encodificadas usando o modo de mesclagem, bem como um índice de mesclagem representando um candidato selecionado da lista de candidatos.
[0194] Em conformidade, o decodificador de vídeo 30 pode predizer o bloco atual usando o candidato selecionado (282). Ou seja, a unidade de compensação de movimento 72 pode recuperar um ou mais blocos de referência identificados por informações de movimento do candidato selecionado e, em alguns exemplos, pode interpolar valores para pixels fracionários, se as informações de movimento tiverem uma precisão de subpixel.
[0195] O decodificador de vídeo 30 também pode decodificar um bloco residual para o bloco atual (284). Em particular, a unidade de decodificação de entropia 70 pode decodificar coeficientes de transformada quantizados, cuja unidade de quantização inversa 76 pode quantizar inversamente para formar um bloco de transformada. A unidade de transformada inversa 78 pode então transformar inversamente o bloco de transformada para reproduzir o bloco residual. O somador 80 pode então combinar o bloco predito com o bloco residual para decodificar o bloco atual (286), em particular, reconstruindo o bloco atual.
[0196] Desta maneira, o método da FIG. 11 representa um exemplo de um método que inclui formar, para um bloco atual de dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos para o bloco atual e, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada do vetor de movimento temporal (ATMVP); codificar um índice na lista de candidatos à mesclagem que identifica um candidato à mesclagem da pluralidade de candidatos à mesclagem na lista de candidatos à mesclagem e codificar o bloco atual de dados de vídeo usando informações de movimento do candidato à mesclagem identificado.
[0197] Deve ser reconhecido que, dependendo do exemplo, certos atos ou eventos de qualquer das técnicas aqui descritas podem ser realizados em uma sequência diferente, podem ser adicionados, mesclados ou excluídos (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-thread, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[0198] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação destes. Se implementadasem software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio de leitura por computador e executadas por uma unidade de processamento baseada em hardware. Os meios de leitura por computador podem incluir meios de armazenamento de leitura por computador, que correspondem a um meio tangível, tais como meios de armazenamento de dados ou meios de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta forma, meios de leitura por computador geralmente podem corresponder a (1) meios de armazenamento de leitura por computador que não são transitórios ou (2) um meio de comunicação, tal como um sinal ou uma onda de portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e / ou estruturas de dados para a implementação das técnicas descritas nesta invenção. Um produto de programa de computador pode incluir um meio de leitura por computador.
[0199] A título de exemplo, e não de limitação, tais meios de armazenamento de leitura por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente designada como um meio de leitura por computador. Por exemplo, se as instruções são transmitidas de um site, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. No entanto, deve ser entendido que os meios de armazenamento de leitura por computador e os meios de armazenamento de dados não incluem conexões, ondas de portadoras, sinais ou outros meios transitórios, mas são direcionados para meios de armazenamento tangíveis e não transitórios. Disco (disk) e disco (disc), tal como aqui utilizado, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu- ray, onde discos (disks) geralmente reproduzem dados magneticamente, ao passo discos (discs) reproduzem dados de forma óptica com lasers. As combinações dos itens acima também devem ser incluídas no escopo de meios de leitura por computador.
[0200] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuitos integrados específicos de aplicativos (ASICs), arranjos de portas programáveis em campo (FPGA) ou outros circuitos equivalentes integrados ou de lógica discreta. Consequentemente, o termo “processador”, tal como aqui utilizado, pode referir-se a qualquer uma das estruturas anteriores ou a qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e / ou software dedicados configurados para encodificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0201] As técnicas desta invenção podem ser implementadas em uma grande variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de circuitos integrados (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta invenção para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas descritas, mas não requerem necessariamente a realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e / ou firmware adequados.
[0202] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (16)

1. Dispositivo para codificação de dados de vídeo, o dispositivo compreendendo: uma memória configurada para armazenar dados de vídeo; e um codificador de vídeo configurado para: formar, para um bloco atual dos dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos ao bloco atual, caracterizado pelo fato de que codificador de vídeo é adicionalmente configurado para: formar a lista de candidatos à mesclagem incluindo, imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada de vetor de movimento temporal (ATMVP), em que o candidato ATMVP indica que o bloco atual deve ser predito usando um bloco identificado pelo candidato ATMVP que é dividido em uma pluralidade de sub-blocos, cada um dentre a pluralidade de sub-blocos tendo respectivos conjuntos de informações de movimento; codificar um índice na lista de candidatos à mesclagem que identifica o candidato ATMVP dentre a pluralidade de candidatos à mesclagem na lista de candidatos à mesclagem; e codificar, com base no índice que identifica o candidato ATMVP, o bloco atual de dados de vídeo, em que para codificar o bloco atual de dados de vídeo, o codificador de vídeo é configurado para codificar sub- blocos do bloco atual usando as respectivas informações de movimento dos sub-blocos do bloco identificado pelo candidato ATMVP.
2. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que para formar a lista de candidatos à mesclagem, o codificador de vídeo é configurado para: determinar, para o bloco atual, um bloco correspondente em uma imagem de referência; determinar se as informações de movimento estão disponíveis para o bloco correspondente; e formar a lista de candidatos à mesclagem para incluir o candidato ATMVP após determinar que as informações de movimento estão disponíveis para o bloco correspondente.
3. Dispositivo, de acordo com a reivindicação 2, caracterizado pelo fato de que, para determinar se as informações de movimento estão disponíveis para o bloco correspondente, o codificador de vídeo é configurado para determinar se uma parte do bloco correspondente é intrapredita.
4. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que, para formar a lista de candidatos à mesclagem, o codificador de vídeo é configurado para formar o candidato ATMVP a partir de um conjunto representativo de informações de movimento para um bloco correspondente ao bloco atual em uma imagem de referência.
5. Dispositivo, de acordo com a reivindicação 4, caracterizado pelo fato de que, para formar o candidato ATMVP a partir do conjunto representativo de informações de movimento, o codificador de vídeo é configurado para formar o candidato ATMVP a partir de informações de movimento para uma posição predeterminada do bloco correspondente ou para uma unidade de subpredição predeterminada (sub-PU) do bloco correspondente.
6. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que, para formar a lista de candidatos à mesclagem, o codificador de vídeo é configurado para: usar um primeiro vetor de movimento temporal, em relação ao bloco atual, para identificar um primeiro candidato à predição avançada de vetor de movimento temporal (ATMVP) em uma primeira imagem de origem de movimento; quando o primeiro candidato ATMVP estiver disponível, adicionar o primeiro candidato ATMVP à lista de candidatos à mesclagem como o candidato ATMVP; quando o primeiro candidato ATMVP não estiver disponível: usar um segundo vetor de movimento temporal, em relação ao bloco atual, para identificar um segundo candidato ATMVP em uma segunda imagem de origem de movimento; e adicionar o segundo candidato ATMVP à lista de candidatos à mesclagem como o candidato ATMVP.
7. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o primeiro vetor de movimento temporal e o segundo vetor de movimento temporal compreendem o mesmo vetor de movimento temporal, e em que a primeira imagem de origem de movimento e a segunda imagem de origem de movimento compreendem diferentes imagens de origem de movimento.
8. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o primeiro vetor de movimento temporal e o segundo vetor de movimento temporal compreendem diferentes vetores de movimento temporal.
9. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o codificador de vídeo é adicionalmente configurado para selecionar o primeiro vetor de movimento temporal e o segundo vetor de movimento temporal de acordo com uma ordem predeterminada a partir de vetores temporais dos blocos vizinhos.
10. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que para formar a lista de candidatos à mesclagem, o codificador de vídeo é configurado para: determinar se um vetor de movimento está disponível para um sub-bloco do candidato ATMVP para uma lista de imagens de referência X; e adicionar o candidato ATMVP à lista de candidatos após determinar que o vetor de movimento está disponível.
11. Dispositivo, de acordo com a reivindicação 10, caracterizado pelo fato de que quando o vetor de movimento não está disponível para a lista de imagens de referência X, mas está disponível para a lista de imagens de referência Y, em que Y compreende uma lista de imagens de referência diferente da lista de imagens de referência X, o codificador de vídeo sendo configurado para definir o vetor de movimento como estando disponível para a lista de imagens de referência X e dimensionar o vetor de movimento para uma imagem de referência na lista de imagens de referência X.
12. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que o codificador de vídeo compreende um decodificador de vídeo configurado para decodificar o índice, e para codificar o bloco atual, o decodificador de vídeo sendo configurado para: predizer o bloco atual usando as informações de movimento dos sub-blocos do bloco identificado pelo candidato ATMVP para formar um bloco predito; decodificar informações residuais para o bloco atual; e decodificar o bloco atual usando as informações residuais decodificadas e o bloco predito.
13. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que o codificador de vídeo compreende um encodificador de vídeo configurado para encodificar o índice, e em que para codificar o bloco atual, o encodificador de vídeo é configurado para: predizer o bloco atual usando as informações de movimento dos sub-blocos do bloco identificado pelo candidato ATMVP para formar um bloco predito; formar um bloco residual que representa diferenças entre o bloco atual e o bloco predito; e encodificar as informações residuais.
14. Dispositivo, de acordo com a reivindicação 1, caracterizado pelo fato de que o codificador de vídeo é um encodificador de vídeo, e em que o dispositivo compreende adicionalmente um transmissor para transmitir os dados de vídeo encodificados.
15. Método de codificação de dados de vídeo, o método compreendendo: formar, para um bloco atual de dados de vídeo, uma lista de candidatos à mesclagem incluindo uma pluralidade de candidatos à mesclagem, a pluralidade de candidatos à mesclagem incluindo quatro candidatos vizinhos espaciais de quatro blocos vizinhos ao bloco atual e caracterizado pelo fato de que imediatamente após os quatro candidatos vizinhos espaciais, um candidato à predição avançada de vetor de movimento temporal (ATMVP), em que o candidato ATMVP indica que o bloco atual deve ser predito usando um bloco identificado pelo candidato ATMVP que é dividido em uma pluralidade de sub-blocos, cada um dentre a pluralidade de sub-blocos tendo respectivos conjuntos de informações de movimento; codificar um índice na lista de candidatos à mesclagem que identifica o candidato ATMVP dentre a pluralidade de candidatos à mesclagem na lista de candidatos à mesclagem; e codificar, com base no índice que identifica o candidato ATMVP, o bloco atual de dados de vídeo, em que codificar o bloco atual compreende codificar sub-blocos do bloco atual usando as respectivas informações de movimento dos sub-blocos do bloco identificado pelo candidato ATMVP.
16. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executáveis por um computador para realizar as etapas de método conforme definido na reivindicação 15.
BR112017015890-6A 2015-01-26 2016-01-26 Predição avançada do vetor de movimento temporal com base em unidade de subpredição BR112017015890B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562107933P 2015-01-26 2015-01-26
US62/107,933 2015-01-26
US15/005,564 2016-01-25
US15/005,564 US11477477B2 (en) 2015-01-26 2016-01-25 Sub-prediction unit based advanced temporal motion vector prediction
PCT/US2016/014875 WO2016123081A1 (en) 2015-01-26 2016-01-26 Sub-prediction unit based advanced temporal motion vector prediction

Publications (2)

Publication Number Publication Date
BR112017015890A2 BR112017015890A2 (pt) 2018-04-10
BR112017015890B1 true BR112017015890B1 (pt) 2023-10-17

Family

ID=56433539

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112017015890-6A BR112017015890B1 (pt) 2015-01-26 2016-01-26 Predição avançada do vetor de movimento temporal com base em unidade de subpredição

Country Status (13)

Country Link
US (1) US11477477B2 (pt)
EP (1) EP3251361B1 (pt)
JP (1) JP6636530B2 (pt)
KR (1) KR102102029B1 (pt)
CN (1) CN107211156B (pt)
BR (1) BR112017015890B1 (pt)
CA (1) CA2971636C (pt)
EA (1) EA035270B1 (pt)
ES (1) ES2755573T3 (pt)
HU (1) HUE047034T2 (pt)
TN (1) TN2017000288A1 (pt)
TW (1) TWI696382B (pt)
WO (1) WO2016123081A1 (pt)

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10230980B2 (en) 2015-01-26 2019-03-12 Qualcomm Incorporated Overlapped motion compensation for video coding
US10187653B2 (en) * 2015-05-18 2019-01-22 Avago Technologies International Sales Pte. Limited Motor vector prediction using co-located prediction units
WO2017069505A1 (ko) * 2015-10-19 2017-04-27 엘지전자(주) 영상의 부호화/복호화 방법 및 이를 위한 장치
US10560718B2 (en) 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
CN116708781A (zh) * 2016-07-12 2023-09-05 韩国电子通信研究院 图像编码/解码方法以及用于该方法的记录介质
US10721489B2 (en) 2016-09-06 2020-07-21 Qualcomm Incorporated Geometry-based priority for the construction of candidate lists
US10477238B2 (en) 2016-09-07 2019-11-12 Qualcomm Incorporated Sub-PU based bi-directional motion compensation in video coding
US10812791B2 (en) * 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
JP7048503B2 (ja) * 2016-09-27 2022-04-05 シャープ株式会社 復号装置、符号化装置、復号方法、および、符号化方法
CN106507111B (zh) * 2016-11-17 2019-11-15 上海兆芯集成电路有限公司 使用残差补偿的视频编码方法以及使用该方法的装置
US20210136400A1 (en) * 2016-11-29 2021-05-06 Mediatek Inc. Method and apparatus of merge mode derivation for video coding
TWI729607B (zh) 2017-04-21 2021-06-01 美商時美媒體公司 用於藉由預測運動向量及/或快取重複運動向量的玩家輸入運動補償的系統及方法
TWI646823B (zh) * 2017-04-27 2019-01-01 晨星半導體股份有限公司 視訊壓縮方法及視訊壓縮裝置
KR20200012957A (ko) 2017-06-30 2020-02-05 후아웨이 테크놀러지 컴퍼니 리미티드 인터-프레임 예측 방법 및 디바이스
WO2019074273A1 (ko) * 2017-10-10 2019-04-18 한국전자통신연구원 인터 예측 정보를 사용하는 방법 및 장치
US11082716B2 (en) 2017-10-10 2021-08-03 Electronics And Telecommunications Research Institute Method and device using inter prediction information
US10785494B2 (en) * 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
US20190116374A1 (en) * 2017-10-17 2019-04-18 Qualcomm Incorporated Coding motion information of video data using coding structure-based candidate list construction
EP3704856A1 (en) * 2017-11-01 2020-09-09 Vid Scale, Inc. Sub-block motion derivation and decoder-side motion vector refinement for merge mode
US11503333B2 (en) * 2017-11-14 2022-11-15 Qualcomm Incorporated Unified merge candidate list usage
TW201924349A (zh) * 2017-11-17 2019-06-16 晨星半導體股份有限公司 與移動補償相關之影像處理裝置及影像處理方法
US10623746B2 (en) * 2017-12-07 2020-04-14 Tencent America LLC Method and apparatus for video coding
CN108347616B (zh) * 2018-03-09 2020-02-14 中南大学 一种基于可选时域运动矢量预测的深度预测方法及装置
KR20230028586A (ko) 2018-04-01 2023-02-28 엘지전자 주식회사 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2019194502A1 (ko) * 2018-04-01 2019-10-10 엘지전자 주식회사 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2019199141A1 (ko) * 2018-04-13 2019-10-17 엘지전자 주식회사 비디오 코딩 시스템에서 인터 예측 방법 및 장치
US11297348B2 (en) * 2018-04-13 2022-04-05 Mediatek Inc. Implicit transform settings for coding a block of pixels
US10999604B2 (en) 2018-04-13 2021-05-04 Mediatek Inc. Adaptive implicit transform setting
US10397603B1 (en) * 2018-05-08 2019-08-27 Tencent America LLC Method and apparatus for video coding
MX2020012547A (es) * 2018-05-24 2021-02-18 Kt Corp Método y aparato para procesar señal de video.
US11109025B2 (en) 2018-06-04 2021-08-31 Tencent America LLC Method and apparatus for sub-block based temporal motion vector prediction
CN115550664B (zh) * 2018-06-04 2023-08-22 华为技术有限公司 获取运动矢量的方法和装置
GB2588004B (en) 2018-06-05 2023-03-01 Beijing Bytedance Network Tech Co Ltd Interaction between IBC and affine
TWI739120B (zh) 2018-06-21 2021-09-11 大陸商北京字節跳動網絡技術有限公司 合併仿射模式與非合併仿射模式的統一拘束
CN113115046A (zh) 2018-06-21 2021-07-13 北京字节跳动网络技术有限公司 分量相关的子块分割
KR20210029160A (ko) * 2018-06-27 2021-03-15 브이아이디 스케일, 인크. 디코더측 모션 미세 조정의 코딩 지연을 줄이기 위한 방법 및 장치
KR20210025537A (ko) 2018-06-29 2021-03-09 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 하나 또는 다수의 룩업 테이블들을 사용하여 이전에 코딩된 모션 정보를 순서대로 저장하고 이를 사용하여 후속 블록들을 코딩하는 개념
CN114466197A (zh) 2018-06-29 2022-05-10 北京字节跳动网络技术有限公司 用于查找表更新的编码的运动信息的选择
WO2020003278A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Update of look up table: fifo, constrained fifo
TWI744662B (zh) 2018-06-29 2021-11-01 大陸商北京字節跳動網絡技術有限公司 更新查閱資料表(lut)的條件
GB2588006B (en) 2018-06-29 2023-03-22 Beijing Bytedance Network Tech Co Ltd Number of motion candidates in a look up table to be checked according to mode
CN114900696A (zh) 2018-06-29 2022-08-12 抖音视界(北京)有限公司 Lut中的运动候选的检查顺序
CN114125450B (zh) * 2018-06-29 2023-11-17 北京字节跳动网络技术有限公司 一种用于处理视频数据的方法、装置和计算机可读介质
EP3791585A1 (en) 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Partial/full pruning when adding a hmvp candidate to merge/amvp
TWI723446B (zh) 2018-07-02 2021-04-01 大陸商北京字節跳動網絡技術有限公司 具有lic的lut
CN117812256A (zh) * 2018-07-02 2024-04-02 Lg电子株式会社 图像解码设备、图像编码设备和发送设备
WO2020007304A1 (zh) * 2018-07-02 2020-01-09 华为技术有限公司 一种运动矢量预测方法、装置与编解码器
CN112544077B (zh) * 2018-07-16 2023-12-08 Lg电子株式会社 用于子块单元中的时间运动信息预测的帧间预测方法及其装置
WO2020017892A1 (ko) * 2018-07-17 2020-01-23 엘지전자 주식회사 서브블록 단위의 시간적 움직임 벡터 예측을 위한 방법 및 그 장치
CN116320504B (zh) * 2018-07-18 2024-03-29 北京达佳互联信息技术有限公司 使用基于历史的运动向量预测进行视频编码的方法和装置
EP3833020A4 (en) * 2018-07-27 2022-04-27 Samsung Electronics Co., Ltd. METHOD AND DEVICE FOR ENCODING THE IMAGE, AND METHOD AND DEVICE FOR DECODING THE IMAGE BASED ON SUB-BLOCKS
US11539977B2 (en) * 2018-07-31 2022-12-27 Hfi Innovation Inc. Method and apparatus of merge with motion vector difference for video coding
CN110868601B (zh) * 2018-08-28 2024-03-15 华为技术有限公司 帧间预测方法、装置以及视频编码器和视频解码器
CN117319650A (zh) * 2018-08-28 2023-12-29 华为技术有限公司 编码方法、解码方法以及编码装置、解码装置
KR102643422B1 (ko) * 2018-08-29 2024-03-04 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 서브블록 기반 시간적 모션 벡터 예측을 사용한 비디오 코딩의 방법 및 장치
KR102467326B1 (ko) 2018-09-12 2022-11-16 엘지전자 주식회사 영상 코딩 시스템에서 서브 블록 단위의 움직임 예측에 기반한 영상 디코딩 방법 및 장치
CN111064961B (zh) * 2018-09-12 2023-06-09 北京字节跳动网络技术有限公司 视频处理方法和装置
CN112753222A (zh) * 2018-09-21 2021-05-04 交互数字Vc控股公司 视频编码和解码中的运动矢量预测
GB2579763B (en) * 2018-09-21 2021-06-09 Canon Kk Video coding and decoding
WO2020060344A1 (ko) * 2018-09-21 2020-03-26 엘지전자 주식회사 영상 신호를 처리하기 위한 방법 및 장치
TWI818086B (zh) 2018-09-24 2023-10-11 大陸商北京字節跳動網絡技術有限公司 擴展Merge預測
WO2020075053A1 (en) 2018-10-08 2020-04-16 Beijing Bytedance Network Technology Co., Ltd. Generation and usage of combined affine merge candidate
KR102448403B1 (ko) * 2018-10-08 2022-09-28 엘지전자 주식회사 Atmvp 후보를 기반으로 영상 코딩을 수행하는 장치
US11051034B2 (en) * 2018-10-08 2021-06-29 Qualcomm Incorporated History-based motion vector predictor
GB2595054B (en) 2018-10-18 2022-07-06 Canon Kk Video coding and decoding
GB2595053B (en) 2018-10-18 2022-07-06 Canon Kk Video coding and decoding
WO2020084474A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Gradient computation in bi-directional optical flow
CN111093073B (zh) * 2018-10-24 2024-04-19 北京字节跳动网络技术有限公司 用于子块运动矢量预测的基于搜索的运动候选推导
CN111418210A (zh) * 2018-11-06 2020-07-14 北京字节跳动网络技术有限公司 使用几何分割模式的有序的运动候选列表生成
KR20210089155A (ko) 2018-11-10 2021-07-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 페어와이즈 평균 후보 계산에서 라운딩
WO2020098655A1 (en) * 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Motion vector storage for inter prediction
CN112997493B (zh) * 2018-11-13 2024-01-05 北京字节跳动网络技术有限公司 用于单一类型运动候选列表的构建方法
JP7241870B2 (ja) 2018-11-20 2023-03-17 北京字節跳動網絡技術有限公司 部分的な位置に基づく差分計算
EP3857896A4 (en) * 2018-11-22 2021-12-01 Beijing Bytedance Network Technology Co. Ltd. COORDINATION PROCEDURE FOR SUBBLOCK BASED INTERPREDICTION
WO2020108651A1 (en) * 2018-11-29 2020-06-04 Beijing Bytedance Network Technology Co., Ltd. Affine inheritance method in intra block copy mode
WO2020114404A1 (en) 2018-12-03 2020-06-11 Beijing Bytedance Network Technology Co., Ltd. Pruning method in different prediction mode
US11122288B2 (en) * 2018-12-06 2021-09-14 Qualcomm Incorporated Spatio-temporal motion vector prediction patterns for video coding
KR102468805B1 (ko) * 2018-12-12 2022-11-18 엘지전자 주식회사 히스토리 기반 모션 벡터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
WO2020130520A1 (ko) * 2018-12-16 2020-06-25 엘지전자 주식회사 화면간 예측을 사용하여 비디오 신호를 처리하기 위한 방법 및 장치
KR20210103558A (ko) * 2018-12-28 2021-08-23 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 움직임 벡터 예측자 리스트의 생성
JP2020108083A (ja) * 2018-12-28 2020-07-09 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム
JP2022516091A (ja) * 2018-12-29 2022-02-24 ヴィド スケール インコーポレイテッド 履歴ベースの動きベクトル予測
CN113261294A (zh) * 2019-01-02 2021-08-13 Lg 电子株式会社 基于sbtmvp的帧间预测方法和设备
CN111357288B (zh) * 2019-01-03 2021-08-31 深圳市大疆创新科技有限公司 视频图像处理方法与装置
WO2020140243A1 (zh) * 2019-01-03 2020-07-09 北京大学 视频图像处理方法与装置
WO2020140242A1 (zh) * 2019-01-03 2020-07-09 北京大学 视频处理方法和装置
KR20240010576A (ko) 2019-01-10 2024-01-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut 업데이트의 호출
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
WO2020147772A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Motion candidates derivation
US20200288175A1 (en) * 2019-03-06 2020-09-10 Qualcomm Incorporated Signaling of triangle merge mode indexes in video coding
WO2020177755A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Usage of converted uni-prediction candidate
EP3937489A4 (en) * 2019-03-08 2022-08-03 Jvckenwood Corporation MOVING PICTURE CODING DEVICE, MOVING PICTURE CODING METHOD, MOVING PICTURE CODING PROGRAM, MOVING PICTURE DECODING DEVICE, MOVING PICTURE DECODING METHOD, AND MOVING PICTURE DECODING PROGRAM
CN112565759A (zh) 2019-03-11 2021-03-26 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
EP3939300A1 (en) * 2019-03-15 2022-01-19 InterDigital VC Holdings, Inc. Method and device for image encoding and decoding
WO2020192611A1 (en) 2019-03-22 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
CN111953995A (zh) * 2019-05-17 2020-11-17 华为技术有限公司 一种帧间预测的方法和装置
EP3954120A4 (en) * 2019-05-21 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. ADAPTIVE MOTION VECTOR DIFFERENTIAL RESOLUTION FOR AFFIN MODE
KR102627821B1 (ko) 2019-06-04 2024-01-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 이웃 블록 정보를 사용한 모션 후보 리스트 구성
JP7446339B2 (ja) 2019-06-04 2024-03-08 北京字節跳動網絡技術有限公司 幾何学的分割モードコーディングを用いた動き候補リスト
KR102662603B1 (ko) 2019-06-06 2024-04-30 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩을 위한 움직임 후보 리스트 구성
CN116156199B (zh) * 2019-06-07 2023-10-03 北京达佳互联信息技术有限公司 用于视频解码、视频编码的方法、计算设备和存储介质
CN114080812A (zh) * 2019-06-13 2022-02-22 Lg 电子株式会社 使用sbtmvp的基于帧间预测的图像或视频编译
CN113994700A (zh) * 2019-06-13 2022-01-28 北京达佳互联信息技术有限公司 用于视频编解码的运动矢量预测
CN112118447B (zh) * 2019-06-19 2023-06-20 华为技术有限公司 融合候选运动信息列表的构建方法、装置及编解码器
WO2020262901A1 (ko) 2019-06-24 2020-12-30 엘지전자 주식회사 영상 디코딩 방법 및 그 장치
KR20220020959A (ko) * 2019-06-24 2022-02-21 에프쥐 이노베이션 컴퍼니 리미티드 비디오 데이터를 코딩하기 위한 디바이스 및 방법
JP7318099B2 (ja) 2019-07-14 2023-07-31 北京字節跳動網絡技術有限公司 ビデオコーディングにおける変換ブロック・サイズ制約
EP3997877A4 (en) 2019-08-13 2023-05-24 Beijing Bytedance Network Technology Co., Ltd. MOTION ACCURACY IN SUBBLOCK-BASED INTERPREDICTION
CN110740317B (zh) 2019-09-18 2021-10-15 浙江大华技术股份有限公司 子块运动预测、编码方法、编码器及存储装置
WO2021052506A1 (en) 2019-09-22 2021-03-25 Beijing Bytedance Network Technology Co., Ltd. Transform unit based combined inter intra prediction
CN117596389A (zh) 2019-09-28 2024-02-23 北京字节跳动网络技术有限公司 视频编解码中的几何分割模式
KR20240042245A (ko) * 2019-10-10 2024-04-01 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 삼각형 분할을 이용한 비디오 코딩을 위한 방법 및 장치
CN110691253B (zh) * 2019-10-17 2022-03-01 北京大学深圳研究生院 一种基于帧间预测的编解码方法及装置
WO2021073631A1 (en) 2019-10-18 2021-04-22 Beijing Bytedance Network Technology Co., Ltd. Interplay between subpictures and in-loop filtering
EP4082202A4 (en) * 2019-12-24 2023-05-10 Beijing Dajia Internet Information Technology Co., Ltd. MOTION ESTIMATION AREA FOR MERGER CANDIDATES
US11375231B2 (en) * 2020-01-14 2022-06-28 Tencent America LLC Method and apparatus for video coding
US20230104476A1 (en) * 2021-10-05 2023-04-06 Tencent America LLC Grouping based adaptive reordering of merge candidate
WO2024078331A1 (en) * 2022-10-14 2024-04-18 Mediatek Inc. Method and apparatus of subblock-based motion vector prediction with reordering and refinement in video coding

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120287999A1 (en) 2011-05-11 2012-11-15 Microsoft Corporation Syntax element prediction in error correction
HUE043007T2 (hu) 2011-09-09 2019-07-29 Lg Electronics Inc Képek közötti becslési eljárás és berendezés ehhez
US9736489B2 (en) * 2011-09-17 2017-08-15 Qualcomm Incorporated Motion vector determination for video coding
US9571833B2 (en) 2011-11-04 2017-02-14 Nokia Technologies Oy Method for coding and an apparatus
KR20130050406A (ko) 2011-11-07 2013-05-16 오수미 머지 모드에서의 움직임 정보 생성 방법
US9729873B2 (en) 2012-01-24 2017-08-08 Qualcomm Incorporated Video coding using parallel motion estimation
US9325990B2 (en) 2012-07-09 2016-04-26 Qualcomm Incorporated Temporal motion vector prediction in video coding extensions
US9699450B2 (en) 2012-10-04 2017-07-04 Qualcomm Incorporated Inter-view predicted motion vector for 3D video
CN103841425B (zh) 2012-10-08 2017-04-05 华为技术有限公司 用于运动矢量预测的运动矢量列表建立的方法、装置
US9667996B2 (en) 2013-09-26 2017-05-30 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
US9762927B2 (en) 2013-09-26 2017-09-12 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC

Also Published As

Publication number Publication date
BR112017015890A2 (pt) 2018-04-10
HUE047034T2 (hu) 2020-04-28
EP3251361A1 (en) 2017-12-06
ES2755573T3 (es) 2020-04-22
JP6636530B2 (ja) 2020-01-29
JP2018506908A (ja) 2018-03-08
EA201791449A1 (ru) 2017-12-29
CN107211156B (zh) 2019-08-30
US20160219278A1 (en) 2016-07-28
TN2017000288A1 (en) 2019-01-16
CA2971636A1 (en) 2016-08-04
WO2016123081A1 (en) 2016-08-04
CA2971636C (en) 2021-10-12
CN107211156A (zh) 2017-09-26
EP3251361B1 (en) 2019-08-14
US11477477B2 (en) 2022-10-18
TWI696382B (zh) 2020-06-11
TW201640893A (zh) 2016-11-16
EA035270B1 (ru) 2020-05-22
KR102102029B1 (ko) 2020-04-17
KR20170108010A (ko) 2017-09-26

Similar Documents

Publication Publication Date Title
CA2971636C (en) Sub-prediction unit based advanced temporal motion vector prediction
CN109691106B (zh) 一种对视频数据进行编解码的方法、装置及计算机可读存储介质
CN107690809B (zh) 使用空间及/或时间运动信息的子预测单元运动向量预测
KR102033206B1 (ko) 3d 비디오에 대한 진보된 병합/스킵 모드 및 진보된 모션 벡터 예측 (amvp) 모드
ES2900751T3 (es) Extensiones de sintaxis de alto nivel para codificación de vídeo de alta eficacia
EP3011746B1 (en) More accurate advanced residual prediction (arp) for texture coding
WO2019147826A1 (en) Advanced motion vector prediction speedups for video coding
US10158876B2 (en) Backward view synthesis prediction
BR112021005357A2 (pt) aprimoramentos em preditor de vetor de movimento baseado em histórico
KR20190120389A (ko) 아핀 모션 정보 도출
EP3090555B1 (en) Disparity vector and/or advanced residual prediction for video coding
KR20210122887A (ko) 비디오 코딩을 위한 모션 벡터 예측용 병합 후보들
BR112018006266B1 (pt) Fluxo ótico bidirecional avançado para codificação de vídeo
EP2885916A1 (en) Inter-view predicted motion vector for 3d video
WO2015026952A1 (en) Sub-pu-level advanced residual prediction
OA18314A (en) Sub-prediction unit based advanced temporal motion vector prediction.

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/01/2016, OBSERVADAS AS CONDICOES LEGAIS