BR112016006574B1 - Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc - Google Patents

Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc Download PDF

Info

Publication number
BR112016006574B1
BR112016006574B1 BR112016006574-3A BR112016006574A BR112016006574B1 BR 112016006574 B1 BR112016006574 B1 BR 112016006574B1 BR 112016006574 A BR112016006574 A BR 112016006574A BR 112016006574 B1 BR112016006574 B1 BR 112016006574B1
Authority
BR
Brazil
Prior art keywords
sub
pus
current
video
block
Prior art date
Application number
BR112016006574-3A
Other languages
English (en)
Other versions
BR112016006574B8 (pt
BR112016006574A2 (pt
Inventor
Ying Chen
Li Zhang
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 BR112016006574A2 publication Critical patent/BR112016006574A2/pt
Publication of BR112016006574B1 publication Critical patent/BR112016006574B1/pt
Publication of BR112016006574B8 publication Critical patent/BR112016006574B8/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/53Multi-resolution motion estimation; Hierarchical motion estimation
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

PREDIÇÃO DE VETOR DE MOVIMENTO TEMPORAL COM BASE EM UNIDADE DE SUBPREDIÇÃO (PU) EM HEVC E PROJETO DE SUB-PU EM 3D-HEVC. As técnicas são descritas para a predição de movimento baseada em unidade de subpredição (PU) para a codificação de vídeo em HEVC e em 3D-HEVC. Em um exemplo, as técnicas incluem um modo de predição de vetor de movimento temporal avançado (TMVP) para predizer as sub-PUs de uma PU em codificação de única camada para a qual o refinamento de vetor de movimento pode ser permitido. O modo de TMVP avançado inclui determinar vetores de movimento para a PU em pelo menos dois estágios para derivar informações de movimento para a PU que incluem diferentes vetores de movimento e índices de referência para cada uma das sub-PUs da PU. Em um outro exemplo, as técnicas incluem armazenar informações de movimento separadas derivadas para cada sub-PU de uma PU atual predita com o uso de um modo de predição por síntese de vista posterior de sub-PU (BVSP) mesmo após a compensação de movimento ser realizada. As informações de movimento adicionais armazenadas para a PU atual podem ser usadas para predizer as PUs subsequentes (...).

Description

[0001] Este pedido reivindica o benefício do pedido de patente provisório US no 61/883.111, depositado em 26 de setembro de 2013, cujo conteúdo total está incorporado ao persente documento a título de referência.
CAMPO DA TÉCNICA
[0002] Esta revelação refere-se à codificação de vídeo.
ANTECEDENTES
[0003] As capacidades do vídeo digital podem ser incorporadas em uma ampla faixa de dispositivos, que inclui televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores do tipo laptop ou desktop, computadores do tipo tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de vídeo game, consoles de vídeo game, telefones de rádio celular ou por satélite, denominados “telefones inteligentes”, dispositivos de teleconferência por vídeo, dispositivos de streaming de vídeo, e semelhantes. Os dispositivos de vídeo digital implantam as técnicas de compressão de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC), e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de modo mais eficiente ao implementar tais técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo realizam a predição espacial (intrafiguração) e/ou predição temporal (interfiguração) para reduzir ou remover a redundância inerente nas sequências de vídeo. Para a codificação de vídeo baseada em bloco, uma fatia de vídeo (isto é, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também pode ser referido como blocos em árvore, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma figuração são codificados com o uso de predição espacial em relação às amostras de referência em blocos vizinhos na mesma figuração. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma figuração podem usar a predição espacial em relação às amostras de referência em blocos vizinhos na mesma figuração ou predição temporal em relação às amostras de referência em outras figurações de referência. As figurações podem ser referidas como quadros, e as figurações 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 diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais que indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para a compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel em um domínio de transformada, que resulta em coeficientes de transformada residuais, que podem, então, ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em uma matriz bidimensional, podem ser varridos a fim de produzir um vetor unidimensional de coeficientes de transformada, e a codificação por entropia pode ser aplicada para alcançar a compressão mais uniforme.
SUMÁRIO
[0006] Em geral, essa revelação descreve técnicas para a predição de movimento baseada em unidade de subpredição (PU) para a codificação de vídeo no padrão de Codificação de Vídeo de Alta Eficiência (HEVC) e na extensão 3D para o padrão HEVC. Em um exemplo, essa revelação descreve técnicas para realizar um modo de predição de vetor de movimento temporal avançado (TMVP) para predizer sub-PUs de uma PU na codificação de única camada para a qual o refinamento de vetor de movimento pode ser permitido. De modo convencional, o projeto de Sub-PU só é possibilitado para a predição de movimento intercamadas ou intervistas com o uso de um modo de interpredição de fusão que não permite o refinamento adicional de vetores de movimento preditos. O modo de TMVP avançado inclui determinar vetores de movimento para a PU em pelo menos dois estágios para derivar informações de movimento para a PU que inclui diferentes vetores de movimento e índices de referência para cada uma das sub-PUs da PU.
[0007] A extensão 3D-HEVC suporta a codificação de formato de vídeo de múltiplas vistas mais profundidade. Em um exemplo, em um modo de predição por síntese de vista posterior de sub-PU (BVSP), as informações de movimento para uma PU atual são preditas a partir de um vetor de movimento de disparidade e uma figuração de referência intervistas associada, e o vetor de movimento de disparidade é refinado com base nas informações de movimento de sub-PU associadas aos blocos de profundidade da figuração de referência intervistas. No modo de BVSP de sub-PU, a compensação de movimento é realizada para predizer cada uma das sub-PUs da PU com base nas informações de movimento de sub-PU separadas. De modo convencional, após realizar a compensação de movimento para predizer cada uma das sub-PUs, apenas o vetor de movimento de disparidade é armazenado para a PU atual. De acordo com as técnicas desta revelação, para cada PU predita com o uso do modo de BVSP de sub-PU, um dispositivo de codificação de vídeo armazena as informações de movimento separadas divididas para cada uma das sub-PUs da PU atual mesmo após a compensação de movimento ser realizada. As informações de movimento adicionais armazenadas para a PU atual podem, então, ser usadas para predizer as PUs subsequentes para as quais a PU atual é um bloco vizinho.
[0008] Além disso, essa revelação descreve técnicas para aplicar o filtro de desbloqueio à cada unidade de codificação (CU) de um bloco de vídeo para filtrar os limites de unidade de transformada de filtro (TU) e limites de PU que incluem limites de sub-PU dentro da CU ao criar limites de PU artificiais ou limites de TU artificiais nos limites de sub-PU.
[0009] Em um exemplo, esta revelação é direcionada a um método de processamento de dados de vídeo que compreende determinar um primeiro vetor de movimento de estágio para uma PU de uma CU de um bloco de vídeo a partir de blocos vizinhos da PU como um primeiro estágio de um modo de TMVP avançado, em que o primeiro vetor de movimento de estágio identifica um bloco de uma figuração de referência que correspondem à PU; dividir a PU em duas ou mais sub-PUs; determinar segundas informações de movimento de estágio para cada uma das sub-PUs a partir do bloco da figuração de referência identificado pelo vetor de movimento de primeiro estágio como um segundo estágio do modo de TMVP avançado, em que as segundas informações de movimento de estágio para cada uma das sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado; e realizar a compensação de movimento para cada uma das sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma das subPUs.
[0010] Em um outro exemplo, esta revelação é direcionada a um dispositivo de processamento de vídeo que compreende uma memória configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória. Os um ou mais processadores são configurados para determinar um primeiro vetor de movimento de estágio para uma PU de uma CU de um bloco de vídeo a partir de blocos vizinhos da PU como um primeiro estágio de um modo de TMVP avançado, em que o primeiro vetor de movimento de estágio identifica um bloco de uma figuração de referência que corresponde à PU, dividir a PU em duas ou mais sub-PUs, determinar segundas informações de movimento de estágio para cada uma das sub-PUs a partir do bloco da figuração de referência identificado pelo primeiro vetor de movimento de estágio como um segundo estágio do modo de TMVP avançado, em que as segundas informações de movimento de estágio para cada uma das sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado, e realizar a compensação de movimento para cada uma das sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma das sub-PUs.
[0011] Em um exemplo adicional, esta revelação é direcionada a um dispositivo de processamento de vídeo que compreende meios para determinar um primeiro vetor de movimento de estágio para uma PU de uma CU de um bloco de vídeo a partir de blocos vizinhos da PU como um primeiro estágio de um modo de TMVP avançado, em que o primeiro vetor de movimento de estágio identifica um bloco de uma figuração de referência que corresponde à PU; meios para dividir a PU em duas ou mais sub-PUs; meios para determinar segundas informações de movimento de estágio para cada uma das sub-PUs a partir do bloco da figuração de referência identificado pelo primeiro vetor de movimento de estágio como um segundo estágio do modo de TMVP avançado, em que as segundas informações de movimento de estágio para cada uma das sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado; e meios para realizar a compensação de movimento para cada uma das sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma das sub-PUs.
[0012] Em um exemplo adicional, esta revelação é direcionada a um meio de armazenamento legível por computador que armazena instruções para processar dados de vídeo que, quando executadas, fazem com que um ou mais processadores determine um primeiro vetor de movimento de estágio para uma PU de uma CU de um bloco de vídeo a partir de blocos vizinhos da PU como um primeiro estágio de um modo de TMVP avançado, em que o primeiro vetor de movimento de estágio identifica um bloco de uma figuração de referência que corresponde à PU; divida a PU em duas ou mais sub-PUs; determine segundas informações de movimento de estágio para cada uma das sub-PUs a partir do bloco da figuração de referência identificado pelo primeiro vetor de movimento de estágio como um segundo estágio do modo de TMVP avançado, em que as segundas informações de movimento de estágio para cada uma das sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado; e realize a compensação de movimento para cada uma das sub- PUs separadamente com base nas segundas informações de movimento de estágio para cada uma das sub-PUs.
[0013] Em um outro exemplo, esta revelação é direcionada a um método de processamento de dados de vídeo, sendo que o método compreende determinar informações de primeiro movimento para uma PU de uma CU de um bloco de vídeo a partir de blocos vizinhos da PU de acordo com um modo de BVSP, em que as informações de primeiro movimento incluem pelo menos um vetor de movimento de disparidade e um índice de vista de referência associado que identifica uma figuração de referência intervistas; dividir a PU em duas ou mais sub-PUs; determinar informações de segundo movimento para cada uma das sub-PUs, em que as informações de segundo movimento incluem pelo menos um vetor de movimento de disparidade associado a um bloco de profundidade da figuração de referência intervistas que corresponde a cada uma das sub-PUs; realizar a compensação de movimento para predizer cada uma das sub-PUs a partir da figuração de referência intervistas com base nas informações de segundo movimento; e armazenar as informações de segundo movimento para cada uma das sub-PUs da PU em uma memória a ser usada para predizer as PUs subsequentes.
[0014] Em um exemplo adicional, esta revelação é direcionada a um dispositivo de processamento de vídeo que compreende uma memória configurada para armazenar dados de vídeo, e um ou mais processadores em comunicação com a memória. Os um ou mais processadores são configurados para determinam informações de primeiro movimento para uma PU de uma CU de um bloco de vídeo a partir de blocos vizinhos da PU de acordo com um modo de BVSP, em que as informações de primeiro movimento incluem pelo menos um vetor de movimento de disparidade e um índice de vista de referência associado que identificam uma figuração de referência intervistas, dividem a PU em duas ou mais sub-PUs, determinam as informações de segundo movimento para cada uma das sub-PUs, em que as informações de segundo movimento incluem pelo menos um vetor de movimento de disparidade associado ao bloco de profundidade da figuração de referência intervistas que corresponde a cada uma das sub-PUs, e realizam a compensação de movimento para predizer cada uma das sub-PUs a partir da figuração de referência intervistas com base nas informações de segundo movimento. A memória é configurada para armazenar as informações de segundo movimento para cada uma das sub-PUs da PU a ser usada para predizer as PUs subsequentes.
[0015] Em um exemplo adicional, esta revelação é direcionada ao dispositivo de processamento de vídeo que compreende meios para determinar as informações de primeiro movimento para uma PU de uma CU de um bloco de vídeo a partir de blocos vizinhos da PU de acordo com um modo de BVSP, em que as informações de primeiro movimento incluem pelo menos um vetor de movimento de disparidade e um índice de vista de referência associado que identifica uma figuração de referência intervistas; meios para dividir a PU em duas ou mais sub-PUs; meios para determinar informações de segundo movimento para cada uma das sub-PUs, em que as informações de segundo movimento incluem pelo menos um vetor de movimento de disparidade associado ao bloco de profundidade da figuração de referência intervistas que corresponde a cada uma das sub-PUs; meios para realizar a compensação de movimento para predizer cada uma das sub-PUs a partir da figuração de referência intervistas com base nas informações de segundo movimento; e meios para armazenar as informações de segundo movimento para cada uma das sub-PUs da PU em uma memória a ser usada para predizer as PUs subsequentes.
[0016] Em um outro exemplo, esta revelação é direcionada ao meio de armazenamento legível por computador que armazena instruções para processar dados de vídeo que, quando executadas, fazem com que um ou mais processadores determine informações de primeiro movimento para uma PU de uma CU de um bloco de vídeo a partir de blocos vizinhos da PU de acordo com um modo de BVSP, em que as informações de primeiro movimento incluem pelo menos um vetor de movimento de disparidade e um índice de vista de referência associado que identifica uma figuração de referência intervistas; divida a PU em duas ou mais sub-PUs; determine as informações de segundo movimento para cada uma das sub-PUs, em que as informações de segundo movimento incluem pelo menos um vetor de movimento de disparidade associado ao bloco de profundidade da figuração de referência intervistas que corresponde a cada uma das sub-PUs; realize a compensação de movimento para predizer cada uma das subPUs a partir da figuração de referência intervistas com base nas informações de segundo movimento; e armazene as informações de segundo movimento para cada uma das sub-PUs da PU em uma memória a ser usada para predizer as PUs subsequentes.
[0017] Os detalhes de um ou mais exemplos são estabelecidos nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição e dos desenhos e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0018] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e de decodificação de vídeo exemplificativo que pode utilizar as técnicas desta revelação.
[0019] A Figura 2 é um diagrama conceitual que ilustra oito modos de divisão para definir unidades de predição (PUs) de uma unidade de codificação (CU).
[0020] A Figura 3 é um diagrama conceitual que ilustra uma estrutura de árvore de transformada dentro de uma CU.
[0021] As Figuras 4A e 4B são diagramas conceituais que ilustram candidatos vizinhos espaciais para o modo de fusão e o modo de predição de vetor de movimento avançado (AMVP), respectivamente.
[0022] A Figura 5A é um diagrama conceitual que ilustra os candidatos de predição de vetor de movimento temporal (TMVP).
[0023] A Figura 5B é um diagrama conceitual que ilustra o escalonamento de vetor de movimento (MV) para TMVP.
[0024] A Figura 6 é um diagrama de fluxo que ilustra um fluxo de processamento exemplificativo de um processo de filtro de desbloqueio.
[0025] A Figura 7 é um diagrama de fluxo que ilustra uma operação exemplificativa de um cálculo de resistência limite (Bs) para o processo de filtro de bloqueio.
[0026] A Figura 8 é um diagrama conceitual que ilustra informações reutilizadas e referidas para um cálculo de Bs em um limite de unidade de árvore de codificação (CTU) para o processo de filtro de desbloqueio.
[0027] A Figura 9 é um diagrama conceitual que ilustra pixels envolvidos em uma decisão de filtro ativada/desativada e uma seleção de filtro forte/fraca para o processo de filtro de desbloqueio.
[0028] A Figura 10 é um diagrama conceitual que ilustra uma estrutura de predição de múltiplas vistas para casos de 3 vistas, onde V3 denota a vista de base e uma figuração em uma vista de não base (isto é, V1 ou V5) pode ser predita a partir das figurações na vista de base da mesma ocasião de tempo.
[0029] A Figura 11 é um diagrama conceitual que ilustra blocos vizinhos espaciais acessados para a derivação de vetor de disparidade baseado em bloco vizinho (NBDV), onde os blocos vizinhos espaciais para a derivação de NBDV são os mesmos que aqueles acessados para o modo de fusão e o modo de AMVP.
[0030] A Figura 12 é um diagrama conceitual que ilustra um modo de predição por síntese de vista posterior (BVSP) que atribui diferentes vetores de movimento para diferentes sub-PUs de uma PU.
[0031] A Figura 13 é um diagrama conceitual que ilustra a predição de movimento intervistas de nível de sub-PU.
[0032] As Figuras 14A e 14B são diagramas conceituais que ilustram um modo de TMVP avançado para predizer as sub-PUs em uma PU em codificação de única camada.
[0033] A Figura 15 é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar as técnicas desta revelação.
[0034] A Figura 16 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implantar as técnicas desta revelação.
[0035] A Figura 17 é um fluxograma que ilustra uma operação exemplificativa de predizer uma PU atual com o uso de um modo de BVSP de sub-PU e de armazenar o armazenamento de informações de movimento de sub-PU determinado.
[0036] A Figura 18 é um fluxograma que ilustra uma operação exemplificativa de aplicar o filtro de desbloqueio a cada CU de um bloco de vídeo para filtrar os limites de TU e limites de PU que incluem os limites de sub-PU dentro da CU.
[0037] A Figura 19 é um fluxograma que ilustra uma operação exemplificativa de um modo de TMVP avançado para predizer as sub-PUs de uma PU em codificação de única camada.
DESCRIÇÃO DETALHADA
[0038] Esta revelação descreve técnicas para a predição de movimento de nível de unidade de subpredição (PU) para a codificação de vídeo com o uso da extensão 3D para o padrão de Codificação de Vídeo de Alta Eficiência (HEVC). A extensão 3D-HEVC suporta a codificação de formato de profundidade mais vídeo múltiplas vistas, na codificação de vídeo de múltiplas vistas, uma figuração de vídeo atual pode ser predita por ambas as figurações de referência temporal em figurações de referência da mesma vista e intervistas em uma vista de referência.
[0039] Em um exemplo, a predição por síntese de vista em 3D-HEVC pode ser realizada com o uso em um modo de predição por síntese de vista posterior de sub-PU (BVSP). No modo de BVSP de sub-PU, as informações de movimento para uma PU atual são preditas a partir de um vetor de movimento de disparidade e um índice de vista de referência associado que identifica uma figuração de referência intervistas. No modo de BVSP de sub-PU, a PU atual é dividida em duas ou mais sub-PUs, e o vetor de movimento de disparidade é refinado com base nas informações de movimento de sub-PU derivadas para cada uma das sub-PUs com base em um bloco de profundidade correspondente da figuração de referência intervistas. A compensação de movimento é realizada para predizer cada uma das sub-PUs da PU com base nas informações de movimento de sub-PU separadas. De modo convencional, após realizar a compensação de movimento para predizer cada uma das subPUs, apenas o vetor de movimento de disparidade é armazenado para a PU atual.
[0040] De acordo com as técnicas desta revelação, para cada PU predita com o uso do modo de BVSP de sub-PU, um dispositivo de codificação de vídeo armazena as informações de movimento separadas derivadas para cada uma das sub-PUs da PU atual mesmo após a compensação de movimento ser realizada. As informações de movimento adicionais armazenadas para a PU atual podem, então, ser usadas para predizer as PUs subsequentes para as quais a PU atual é um bloco vizinho.
[0041] Como um outro exemplo, esta revelação descreve técnicas para realizar um modo de predição de vetor de movimento temporal avançado (TMVP) para predizer as sub-PUs de uma PU em codificação de única camada para as quais o refinamento de vetor de movimento pode ser permitido. De modo convencional, o projeto de SUB-PU só é possibilitado para a predição de movimento intercamadas ou intervistas com o uso de um modo de interpredição de fusão que não permite o refinamento adicional de vetores de movimento preditos. O modo de TMVP avançado inclui determinar vetores de movimento para a PU em pelo menos dois estágios para derivar informações de movimento para a PU que incluem diferentes vetores de movimento e índices de referência para cada uma das sub-PUs da PU. Uma sub-PU dentro de uma PU pode ser do tamanho NxN ou NxM, em que N e M podem ser quaisquer números inteiros. Os típicos tamanhos de sub-PU podem ser 4x4, 8x8, 4x8 ou 8x4.
[0042] De acordo com as técnicas desta revelação, um primeiro vetor de movimento de estágio é determinado para uma PU atual a partir de blocos vizinhos da PU, onde o primeiro vetor de movimento de estágio identifica um bloco de uma figuração de referência que corresponde à PU atual. Semelhante à predição de movimento de sub-PU em 3D-HEVC, o tamanho da área correspondente (por exemplo, bloco) da figuração de referência que inclui as sub-PUs menores é o mesmo que o tamanho da PU atual. Desse modo, as sub-PUs da PU atual têm sub-PUs correspondentes na área correspondente da figuração de referência identificada com um vetor de movimento exclusivo. O primeiro vetor de movimento de estágio pode ser identificado com base nos vizinhos espaciais e/ou temporais. Alternativamente, o primeiro vetor de movimento de estágio pode ser definido para ser constante, por exemplo, 0 ou um outro valor predefinido, e está relacionado ao tamanho da PU atual. Em uma outra alternativa, cada uma das sub-PUs da PU pode identificar seu bloco da figuração de referência correspondente com um vetor de movimento diferente.
[0043] Conforme descrito acima, a PU atual é dividida em duas ou mais sub-PUs, e as segundas informações de movimento de estágio são determinadas para cada uma das sub-PUs da área correspondente, por exemplo, o bloco da figuração de referência identificado pelo primeiro vetor de movimento de estágio, em que as segundas informações de movimento de estágio para cada uma das sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado. A compensação de movimento é realizada para predizer cada uma das sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma das sub-PUs. Esse processo de TMVP avançado pode ser alcançado mediante a ativação de um candidato de fusão dentre todos os outros candidatos de fusão, o que significa que um candidato de fusão específico é criado para indicar que tal processo precisa ser realizado para a PU atual. Em alguns exemplos, em vez de operar apenas no modo de fusão, uma diferença de vetor de movimento pode ser determinada para refinar o pelo menos um vetor de movimento das segundas informações de movimento de estágio para cada uma das sub-PUs.
[0044] Como exemplo adicional, esta revelação descreve técnicas relacionadas aos processos de filtro de desbloqueio aplicados às unidades de codificação (CUs) de um bloco de vídeo que inclui pelo menos uma PU com múltiplas sub-PUs. Os filtros de desbloqueio para o padrão de HEVC não são projetados para filtrar dentro de uma PU, isto é, junto com sublimites de PU entre sub-PUs adjacentes da PU, devido ao fato de que para blocos de HEVC assume-se que a compensação de movimento é a mesma para toda a PU. As técnicas desta revelação habilitam sublimites de PU a serem desbloqueados mediante a conversão das sub-PUs para uma estrutura não prejudicial de desbloqueio de modo que os filtros de desbloqueio de HEVC possam continuar a ser usados para blocos de 3D-HEVC. As técnicas de desbloqueio propostas podem ser aplicáveis aos codecs de múltiplas camadas, incluindo 3D-HEVC.
[0045] De acordo com as técnicas desta revelação, antes de aplicar um filtro de desbloqueio a uma CU do bloco de vídeo que inclui a PU com as sub-PUs, a CU é convertida a fim de criar limites de PU artificiais ou limites de TU artificiais nos sublimites de PU. Em um exemplo, uma árvore de transformada da CU é convertida a fim de associar a PU a uma hierarquia de árvore de transformada e associar cada uma das sub-PUs a uma TU de modo que os sublimites de PU sejam convertidos aos limites de TU artificiais. Em outro exemplo, a CU é convertida para uma árvore de codificação a fim de associar a PU a uma CU e associar cada uma das sub-PUs a uma PU de modo que os sublimites de PU sejam convertidos para limites de PU artificiais. O filtro de desbloqueio pode, então, ser aplicado aos limites de PU entre duas PUs adjacentes da CU e/ou os limites de TU entre duas TUs adjacentes da CU, incluindo os limites de PU artificiais e os limites de TU artificiais.
[0046] 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-T H.264 (também chamado de ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de Vídeo Escalonável (SVC) e de Codificação de Vídeo de Múltiplas Vistas (MVC). O projeto comum mais recente de MVC é descrito em ITU-T H.264, Série H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services - Coding of moving video, Advanced video coding for generic audiovisual services, Telecommunication Standardization Sector of International Telecommunication Union (ITU), março de 2010.
[0047] Além disso, o projeto de um novo padrão de codificação de vídeo, a saber Codificação de Vídeo de Alta Eficácia (HEVC), foi finalizado pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo de ITU-T (VCEG) e do Grupo de Especialistas de Filme Cinematográfico de ISO/IEC (MPEG). Uma especificação de projeto de HEVC, chamada de "HEVC Working Draft 10" ou "WD10", descrita em Bross et al, "High efficiency video coding (HEVC) text specification draft 10 (para FDIS & Last Call)", Equipe Colaborativa Conjunta em Codificação de Vídeo (JCT-VC) de ITU-T SGI 6 WP3 e ISO/IEC JTC 1/SC29/WG11, 12° Encontro: Geneva, CH, 14 a 23 de janeiro de 2013, JCTVC-L1003v34, está disponível em http://phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wgll/JCTVC-Ll 003-v34.zip.
[0048] O documento padrão finalizado é publicado como ITU-T H.265, Série H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services - Coding of moving video. High efficiency video coding, Telecommunication Standardization Sector of International Telecommunication Union (ITU), abril de 2013. Uma descrição de codificador recente de HEVC, descrita em Il-Koo Kim et al., "High Efficiency Video Coding (HEVC) Test Model 10 (HMIO) Encoder Descodificion, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1 /SC29/WG11", 12° Encontro: Genebra, CH, 14 a 23 de janeiro de 2013, está disponível em: http://phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC- L1002-v3.zip.
[0049] Duas extensões de HEVC que suportam serviços em 3D estão em desenvolvimento pela Equipe de Colaboração Conjunta em codificação de Vídeo em 3D (JCT-3V) do Grupo de Especialistas de Codificação de Vídeo de ITU-T (VCEG) e do Grupo de Especialistas de Filme Cinematográfico de ISO/IEC (MPEG). As duas extensões são a extensão de múltiplas vistas para HEVC (MV-HEVC) e a extensão em 3D para HEVC (3D-HEVC).
[0050] MV-HEVC suporta a codificação de múltiplas vistas de textura sem alterar o projeto de nível de bloco de HEVC. Uma especificação de projeto de MV-HEVC, chamada de Projeto de Trabalho de MV-HEVC 5 (WD5) e descrita em Tech et al, "MV-HEVC Draft Text 5", Equipe Colaborativa Conjunta em Desenvolvimento de Extensão de Codificação de Vídeo em 3D (JCT-3V) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 5° Encontro: Viena, AT, 27 de julho a 02 de agosto de 2013, JCT3V-E1004v6, está disponível em http://phenix.it- sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V -E1004-v6.zip.
[0051] 3D-HEVC suporta a codificação do formato de vídeo de múltiplas vistas mais profundidade e inclui novas ferramentas de codificação integradas além dos módulos de codificação de HEVC. As ferramentas de codificação introduzidas recentemente são aplicáveis tanto para codificação de textura quanto para codificação de profundidade. Uma especificação de projeto de 3D-HEVC, chamada de Projeto de Trabalho de 3D-HEVC 1 (WD 1) e descrita em Tech et al, "3D-HEVC Draft Text 1", Equipe Colaborativa Conjunta em Desenvolvimento de Extensão de Codificação de Vídeo em 3D (JCT-3V) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 5° Encontro: Viena, AT, 27 de julho a 02 de agosto de 2013, JCT3V-E1001v3, está disponível em http://phenix.it- sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V -E100l-v3.zip.
[0052] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificativo 10 que pode utilizar técnicas desta revelação. Conforme mostrado na Figura 1, o sistema inclui um dispositivo de fonte 12 que fornece dados de vídeo codificados a serem decodificados em um tempo posterior por um dispositivo de destino 14. Em particular, o dispositivo de fonte 12 fornece os dados de vídeo para o dispositivo de destino 14 por meio de um meio legível por computador 16. O dispositivo de fonte 12 e o dispositivo de destino 14 pode compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores do tipo de mesa, computadores do tipo notebook (isto é, computador do tipo laptop), computador do tipo tablet, decodificadores de sinais, aparelhos de telefone, como os chamados telefones "inteligentes", os chamados computadores do tipo pad "inteligentes", televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de vídeo jogo, dispositivo de transmissão de vídeo ou similares, em alguns casos, o dispositivo de fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0053] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados por meio de meio legível por computador 16. O meio legível por computador 16 pode compreender qualquer tipo de meio ou dispositivo com capacidade para mover os dados de vídeo codificados do dispositivo de fonte 12 para o dispositivo de destino 14. Em um exemplo, o meio legível por computador 16 pode compreender um meio de comunicação para habilitar o dispositivo de fonte 12 a transmitir dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou 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 formar parte de uma rede com base em pacote, 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 a partir do dispositivo de fonte 12 para o dispositivo de destino 14.
[0054] Em alguns exemplos, dados codificados podem ser emitidos da interface de saída 22 para um dispositivo de armazenamento. De modo similar, dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou quaisquer outros meios de armazenamento digital adequado para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado por dispositivo de fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento por meio de transmissão ou transferência por download. O servidor de arquivos pode ser qualquer tipo de servidor com capacidade para armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Os servidores de arquivos exemplificativos incluem um servidor da web (por exemplo, para um site da web), um servidor FTP, dispositivos de armazenamento fixado à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificado através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem de cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificado armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do dispositivo de armazenamento pode ser uma transmissão de transferência, uma transmissão de transferência por download ou uma combinação das mesmas.
[0055] As técnicas desta revelação não estão necessariamente limitadas a aplicações ou definições sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte a qualquer uma dentre uma variedade de aplicativos de multimídia, como difusões sem fio para televisão, transmissões a cabo para televisão, transmissões por meio de satélite para televisão, transmissões de vídeo por difusão para Internet, como difusão adaptativa dinâmica através de HTTP (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações como difusão de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia por vídeo.
[0056] No exemplo da Figura 1, o dispositivo de fonte 12 inclui a fonte de vídeo 18, a unidade de estimativa de profundidade 19, o codificador 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, a unidade de renderização com base em imagem de profundidade (DIBR) 31 e o dispositivo de exibição 32. Em outros exemplos, um dispositivo de fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de fonte 12 pode receber dados de vídeo a partir de uma fonte de vídeo externa 18, como uma câmera externa. De modo semelhante, 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.
[0057] O sistema ilustrado 10 da Figura 1 é meramente um exemplo. As técnicas desta revelação podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora, em geral, as técnicas desta revelação sejam realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador/decodificador de vídeo, tipicamente chamado de um "CODEC". Além disso, as técnicas desta revelação também podem ser realizadas por um pré-processador de vídeo. O dispositivo de fonte 12 e o dispositivo de destino 14 são simplesmente exemplos de tais dispositivos de codificação nos quais o dispositivo de fonte 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar de uma maneira substancialmente simétrica de modo que cada um dos dispositivos 12, 14 incluem componentes de codificação e decodificação de vídeo. Em conformidade, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre dispositivos de vídeo 12, 14, por exemplos, para transmissão de vídeo, reprodução de vídeo, radiodifusão de vídeo ou telefonia por vídeo.
[0058] A fonte de vídeo 18 do dispositivo de fonte 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo que contém vídeo capturado anteriormente e/ou uma interface de alimentação de vídeo para receber vídeo a partir de um fornecedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo 18 pode gerar dados com base em gráficos de computador como o vídeo de fonte 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 fonte 12 e o dispositivo de destino 14 podem formar o que é conhecido por fones de câmera ou fones de vídeo. Entretanto, conforme mencionado acima, as técnicas descritas nesta revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas às aplicações com fio e/ou sem fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificadas podem, então, ser emitidas pela interface de saída 22 para um meio legível por computador 16.
[0059] A fonte de vídeo 18 pode fornecer múltiplas vistas de dados de vídeo para o codificador de vídeo 20. Por exemplo, a fonte de vídeo 18 pode corresponder a uma matriz de câmeras, em que cada uma tem uma posição horizontal exclusiva relativa a uma cena em particular que está sendo filmada. De modo alternativo, a fonte de vídeo 18 pode gerar dados de vídeo a partir de perspectivas de câmera horizontais divergentes, por exemplo, com o uso de gráficos de computador. A unidade de estimativa de profundidade 19 pode ser configurada para determinar valores para pixels de profundidade que correspondem aos pixels em uma imagem de textura. Por exemplo, a unidade de estimativa de profundidade 19 pode representar uma unidade de Navegação e Determinação da Distância pelo Som (SONAR), uma unidade de Detecção e Sensoriamento de Luz Remoto (LIDAR) ou outra unidade com capacidade para determinar diretamente valores de profundidade substancialmente enquanto grava simultaneamente dados de vídeo de uma cena.
[0060] Adicionalmente ou de modo alternativo, a unidade de estimativa de profundidade 19 pode ser configurada para calcular valores de profundidade indiretamente mediante a comparação de duas ou mais imagens que foram capturadas substancialmente ao mesmo tempo de perspectivas de câmera horizontais diferentes. Mediante o cálculo de disparidade horizontal entre valores de pixel substancialmente similares nas imagens, a unidade de estimativa de profundidade 19 pode aproximar a profundidade de diversos objetos na cena. A unidade de estimativa de profundidade 19 pode ser integrada de modo funcional à fonte de vídeo 18, em alguns exemplos. Por exemplo, quando a fonte de vídeo 18 gera imagens de gráficos de computador, a unidade de estimativa de profundidade 19 pode fornecer mapas de profundidade atual para objetos gráficos, por exemplo, com o uso de coordenadas z de pixels e objetos usados para renderizar imagens de textura.
[0061] O meio legível por computador 16 pode incluir meios transitórios, como uma transmissão por difusão sem fio ou por difusão com fio 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 legíveis por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados a partir do dispositivo de fonte 12 e fornecer os dados de vídeo codificados ao dispositivo de destino 14, por exemplo, por meio de transmissão por rede. De modo similar, um dispositivo de computação de uma instalação de produção de mídia, como uma instalação de rotulação de disco, pode receber dados de vídeo codificados a partir do dispositivo de fonte 12 e produzir um disco que contém os dados de vídeo codificados. Portanto, o meio legível por computador 16 pode ser entendido como incluindo um ou mais meios legíveis por computador de um certo número de formas, em vários exemplos.
[0062] A interface de entrada 28 de dispositivo de destinação 14 recebe informações a partir do meio legível por computador 16. As informações do meio legível por computador 16 podem incluir informações de sintaxe definidas pelo codificador de vídeo 20, que também é usado pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou o 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 dentre uma variedade de dispositivos de visores como um tubo de raio de cátodo (CRT), um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição. Em alguns exemplos, o dispositivo de exibição 32 pode compreender um dispositivo com capacidade para exibir duas ou mais vistas de modo simultâneo ou substancialmente simultâneo, por exemplo, para produzir um efeito visual em 3D para um visualizador.
[0063] A unidade de DIBR 31 de dispositivo de destino 14 pode renderizar vistas sintetizadas com o uso de informações de textura e profundidade de vistas decodificadas recebidas do decodificador de vídeo 30. Por exemplo, a unidade de DIBR 31 pode determinar a disparidade horizontal para dados de pixel de imagens de textura como uma função de valores de pixels em mapas de profundidade correspondente. A unidade de DIBR 31 pode, então, gerar uma imagem sintetizada deslocando-se pixels em uma imagem de textura esquerda ou direita pela disparidade horizontal determinada. Dessa maneira, o dispositivo de exibição 32 pode exibir uma ou mais vistas, que podem corresponder às vistas decodificadas e/ou às vistas sintetizadas, em qualquer combinação. O decodificador de vídeo 30 pode fornecer valores de precisão para faixas de profundidade e parâmetros de câmera para a unidade de DIBR 31, que pode usar as faixas de profundidade e parâmetros de câmera para sintetizar de modo apropriado as vistas.
[0064] Embora não seja mostrado na Figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados a um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação tanto de áudio quanto de vídeo em uma corrente de dados comum ou correntes de dados separadas. Caso aplicável, as unidades MUX-DEMUX podem se conformar ao protocolo multiplexador ITU H.223, ou outros protocolos como protocolo de datagrama de usuário (UDP).
[0065] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, como a padrão de Codificação de Vídeo de Alta Eficiência (HEVC), e podem se conformar ao Modelo de Teste HEVC (HM). De modo alternativo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões de propriedade ou industriais, como o padrão ITU-T H.264, chamado de modo alternativo de MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC) ou extensões de tais padrões, como a extensão de MVC de ITU-T H.264/AVC.
[0066] O codificador de vídeo 20 e o decodificador de vídeo 30, cada um, podem ser implantados como qualquer um dentre uma variedade de conjunto de circuitos de codificador adequado, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis por campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um m eio legível por computador não transitório adequado e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas desta revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinados (CODEC) em um respectivo dispositivo. Um dispositivo que inclui codificador 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, como um telefone celular.
[0067] Inicialmente, as técnicas de codificação exemplificativas de HEVC serão discutidas. A HEVC WD10, citada acima, presume diversas capacidades adicionais de dispositivos de codificação de vídeo relativos aos dispositivos existentes de acordo com, por exemplo, ITU-T H.264/ AVC. Por exemplo, enquanto que H.264 fornece nove modos de codificação intrapredição, a HEVC WD10 pode fornecer tanto quanto trinta e três modos de codificação intrapredição angular mais modos DC e Planos.
[0068] Em HEVC WD10 e outros padrões de codificação de vídeo, uma sequência de vídeo inclui tipicamente uma série de figurações. As figurações também podem ser chamadas de "quadros". Uma figuração pode incluir três matrizes de amostra, SL, SCb e SCr indicados. SL é uma matriz bidimensional (isto é, um bloco) de amostras de luma. SCb é uma matriz bidimensional de amostras de crominância de Cb. SCr é uma matriz bidimensional de amostras de crominância de Cr. As amostras de crominância também podem ser chamadas no presente documento de amostras de "croma". Em outros exemplos, uma figuração pode ser monocromática e pode incluir apenas uma matriz de amostras de luma.
[0069] A HEVC WD10 descreve que um quadro ou figuração de vídeo podem ser divididos em uma sequência de unidade de codificação de árvore (CTUs) ou unidades de codificação maiores (LCU) que incluem tanto amostras de luma quanto de croma. Uma CTU tem um propósito similar ao de um macrobloco do padrão H.264. Uma fatia inclui diversas CTUS consecutivas em ordem de codificação. Um quadro de vídeo ou figuração pode ser dividido em uma ou mais fatias. Cada CTU pode ser dividida em unidades de codificação (CUs) de acordo com uma árvore quadrática. Por exemplo, uma CTU, como um nó raiz da árvore quadrática, pode ser dividida em quatro nós derivados e cada nó derivado pode, por sua vez, ser um nó de origem e ser dividido em outros quatro nós derivados. Um nó derivado não dividido final, como um nó de folha da árvore quadrática, compreende um nó de codificação, isto é, um bloco de vídeo codificado. Os dados de sintaxe associados a um fluxo de dados codificados podem definir um número máximo de vezes que uma CTU pode ser dividida e também podem definir um tamanho mínimo dos nós de codificação.
[0070] 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 ter formato quadrado. O tamanho da CU pode estar na faixa de 8x8 pixels até o tamanho do bloco em árvore com um máximo de 64x64 pixels ou maior. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados a uma CU podem descrever, por exemplo, a divisão da CU em uma ou mais PUs. Os modos de partição podem diferir entre se a CU é codificada em modo de omissão ou direto, codificada em modo intrapredição ou codificada em modo de interpredição, as PUs podem ser divididas para serem não quadradas em formato. Os dados de sintaxe associados a uma CU também podem descrever, por exemplo, a partição da CU em uma ou mais TUs de acordo com uma árvore quadrática. Uma TU pode ser quadrada ou não quadrada em formato.
[0071] O padrão HEVC pWD10 permite transformações de acordo com TUs, que podem ser diferentes para CUs diferentes. As TUs são dimensionadas tipicamente com base no tamanho de PUs dentro de uma dada CU definida por uma CTU ou LCU divididas, embora esse possa nem sempre ser o caso. As TUs têm tipicamente o mesmo tamanho ou são menores que as PUs. Em alguns exemplos, as amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores com o uso de uma estrutura de árvore quadrática conhecida como "árvore quadrática residual" (RQT). Os nós de folha da RQT podem ser chamados de TUs. Os valores de diferença de pixel associados às TUs podem ser transformados para produzir o coeficiente de transformada, que podem ser quantizados.
[0072] Em geral, uma PU inclui dados relacionados ao processo de predição. Por exemplo, quando a PU é codificada entre modos, a PU pode incluir dados que descrevem um modo intrapredição para a PU. Como outro exemplo, quando a PU for codificada em intermodo, a PU pode incluir dados que definem um vetor 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 vertical do 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 de pixel), uma figuração de referência para a qual o vetor de movimento aponta e/ou uma lista de figurações de referência (por exemplo, lista 0 ou lista 1) para o vetor de movimento.
[0073] Em geral, uma TU é usada para os processos de transformada e de quantização. Uma dada CU que tem uma ou mais PUs também pode incluir uma ou mais TUs. Após a predição, o codificador de vídeo 20 pode calcular valores residuais que correspondem à PU. Os valores residuais compreendem valores de diferença de pixel que podem ser transformados em coeficientes de transformada, quantizados e digitalizados com o uso das TUs para produzir coeficientes de transformada em série para codificação por entropia. Esta revelação usa tipicamente o termo "bloco de vídeo" para se referir a um nó de codificação de uma CU. Em alguns casos específicos, esta revelação também pode usar o termo "bloco de vídeo" para se referir a uma CTU, também chamada de uma LCU ou uma CU, que inclui um nó de codificação e PUs e TUs.
[0074] Uma sequência de vídeo inclui tipicamente uma série de quadros ou figurações de vídeo. Um grupo de figurações (GOP) compreende geralmente uma série de uma ou mais das figurações de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das figurações ou, em outro lugar, que descreve um certo número de figurações incluídas no GOP. Cada fatia de uma figuração pode incluir uma fatia de dados de sintaxe que descrevem um modo de codificação para a respectiva fatia. O codificador de vídeo 20 opera tipicamente em blocos de vídeo dentro de fatias de vídeo individuais a fim de codificar 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 variados e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[0075] Como um exemplo, o HEVC WD10 suporta uma predição em diversos tamanhos de PU. Admitindo-se que o tamanho de uma CU particular seja 2Nx2N, o HEVC WD10 suporta 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 HEVC WD10 também sustenta a partição assimétrica para interpredição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Na partição assimétrica, uma direção de uma CU não é dividida, enquanto a outra direção é dividida em 25% e 75%. A porção da CU correspondente aos 25% de partição é indicada por um "n" seguida por uma indicação de "Cima", "Baixo", "Esquerda" ou "Direita". Desse modo, por exemplo, "2NxnU" se refere a uma CU de 2Nx2N que é dividida horizontalmente com uma PU de 2Nx0,5N no topo e uma PU de 2Nx1,5N no fundo.
[0076] Nessa revelação, "NxN" e "N por N" podem ser usados de modo intercambiável para se referir às dimensões de pixel de um bloco de vídeo em termos de dimensões horizontal e vertical, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). De mesmo modo, um bloco NxN, em geral, tem N pixels em uma direção vertical e N pixels em uma direção horizontal, em que N representa um valor de número inteiro não negativo. Os pixels em um bloco podem ser representados em fileiras e colunas. Além disso, os blocos não necessariamente têm a mesma quantidade de pixels tanto na direção horizontal quanto na direção vertical. Por exemplo, os blocos podem compreender NxM pixels, em que M não é necessariamente igual a N.
[0077] Após a codificação de intrapredição ou de interpredição com o uso das PUs de uma CU, codificador de vídeo 20 pode calcular dados residuais para as TUs da CU. As PUs podem compreender dados de pixel no domínio espacial (também chamado de 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 número inteiro, uma transformada em ondeleta ou uma transformada conceitualmente similar para dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre pixels da figuração não codificada e valores de predição correspondentes às PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU e, então, transformar as TUs para produzir o coeficiente de transformada para a CU.
[0078] Após quaisquer transformações para produzir os coeficientes de transformada, o codificador de vídeo 20 pode realizar a quantização do coeficiente de transformada. A quantização, em geral, se refere a um processo no qual os coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados usados para representar os coeficientes, fornecendo compressão adicional. O processo de quantização pode reduzir a profundidade de bits 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, em que n é maior que m.
[0079] Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantizados para produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode realizar uma varredura adaptativa. Após varrer o coeficiente de transformada quantizado para formar um vetor monodimensional, o codificador de vídeo 20 pode codificar por entropia o vetor monodimensional, por exemplo, de acordo com a codificação de comprimento variável adaptativa a contexto (CAVLC), codificação aritmética binária adaptativa a contexto (CABAC), codificação aritmética binária adaptativa a contexto com base em sintaxe (SBAC), codificação por Entropia de Divisão de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação por entropia. O codificador de vídeo 20 também pode codificar por entropia elementos de sintaxe associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0080] Para realizar a CABAC, o 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 relacionar a, por exemplo, se valores vizinhos do símbolo são diferentes de zero ou não. Para realizar a CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. As palavras-código em VLC podem ser construídas de modo que os códigos relativamente mais curtos correspondam a mais símbolos prováveis, enquanto códigos mais longos correspondem a símbolos menos prováveis. Desse modo, o uso de VLC pode conseguir uma economia de bits sobre, por exemplo, o uso de palavras-código de comprimento igual para cada símbolo a ser transmitido. A determinação de probabilidade pode ter como base um contexto atribuído ao símbolo.
[0081] O codificador de vídeo 20 pode emitir um fluxo de bits que inclui uma sequência de bits que forma uma representação de figurações codificadas e dados associados. O fluxo de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Cada uma das unidades de NAL inclui um cabeçalho de unidade de NAL e encapsula uma carga de sequência de byte bruto (RBSP). O cabeçalho de unidade de NAL pode incluir um elemento de sintaxe que indica um código de tipo de unidade de NAL. O código de tipo de unidade de NAL especificado pelo cabeçalho de unidade de NAL de uma unidade de NAL indica o tipo da unidade de NAL. Uma RBSP pode ser uma estrutura de sintaxe que contém um número inteiro de bytes que é encapsulado dentro de uma unidade de NAL. Em alguns exemplos, uma RBSP inclui zero bits.
[0082] Tipos diferentes de unidades de NAL podem encapsular tipos diferentes de RBSPs. Por exemplo, um primeiro tipo de unidade de NAL pode encapsular uma RBSP para um conjunto de parâmetro de figuração (PPS), um segundo tipo de unidade de NAL pode encapsular uma RBSP para uma fatia codificada, um terceiro tipo de unidade de NAL pode encapsular uma RBSP para Informações de Aprimoramento Suplementar (SEI) e assim por diante. Um PPS é uma estrutura de sintaxe que pode conter elementos de sintaxe que se aplicam a zero ou mais figurações codificadas completas. As unidades de NAL que encapsulam RBSPs para dados de codificação de vídeo (conforme oposto às RBSPs para conjuntos de parâmetros e mensagens de SEI) podem ser chamadas de unidades de NAL de camada de codificação de vídeo (VLC). Uma unidade de NAL que encapsula uma fatia codificada pode ser chamada no presente documento de uma unidade de NAL de fatia codificada. Uma RBSP para uma fatia codificada pode incluir um cabeçalho de fatia e dados de fatia.
[0083] O decodificador de vídeo 30 pode receber um fluxo de bits. Além disso, o decodificador de vídeo 30 pode analisar o fluxo de bits para decodificar elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as figurações dos dados de vídeo com base pelo menos em parte nos elementos de sintaxe decodificados do fluxo de bits. O processo para reconstruir os dados de vídeo pode ser geralmente recíproco ao processo realizado pelo codificador de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode usar vetores de movimento de PUs para determinar blocos de predição para as PUs de uma CU atual. O decodificador de vídeo 30 pode usar um vetor de movimento ou vetores de movimento de PUs para gerar blocos de predição para as PUs.
[0084] Além disso, o decodificador de vídeo 30 pode quantizar de modo inverso os blocos de coeficientes associados às TUs da CU atual. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficiente para reconstruir os blocos de transformada associados às TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual mediante a adição das amostras de predição dos blocos de predição para PUs da CU atual para as amostras residuais correspondentes dos blocos de transformada das TUs da CU atual. Reconstruindo-se os blocos de codificação para cada CU de uma figuração, o decodificador de vídeo 30 pode reconstruir a figuração. O decodificador de vídeo 30 pode armazenar figurações decodificadas em um armazenamento temporário de figuração decodificada para emissão e/ou para uso na decodificação de outras figurações.
[0085] Em MV-HEVC e 3D-HEVC, o codificador de vídeo 20 pode gerar um fluxo de bits de múltiplas camadas que compreende uma série de unidades de camada de abstração de rede (NAL). As unidades de NAL diferentes do fluxo de bits podem ser associadas às camadas diferentes do fluxo de bits. Uma camada pode ser definida como um conjunto de unidades de NAL de camada de codificação de vídeo (VLC) e unidades de NAL não VCL associadas que têm o mesmo identificador de camada. Uma camada pode ser equivalente a uma visualização na codificação de vídeo de múltiplas vistas. Na codificação de vídeo de múltiplas vistas, uma camada pode conter todos os componentes de visualização da mesma camada com intervalos de tempo diferentes. Cada componente de vista pode ser uma figuração codificada da cena de vídeo que pertence a uma vista específica em um período de tempo específico. Em 3D-HEVC, uma camada pode conter tanto todas as figurações de profundidade codificadas de uma vista específica quanto figurações de textura codificadas de uma vista específica. De modo similar, no contexto de codificação de vídeo escalonável, uma camada corresponde tipicamente às figurações codificadas que têm características de vídeo diferentes de figurações codificadas em outras camadas. Tais características de vídeo incluem tipicamente resolução espacial e nível de qualidade (Razão Sinal para Ruído). Em HEVC e suas extensões, a escalabilidade de temporal pode ser alcançada dentro de uma camada mediante a definição de um grupo de figurações com um nível temporal particular como uma subcamada.
[0086] Para cada respectiva camada do fluxo de bits, os dados em uma camada inferior podem ser decodificados sem referência aos dados em qualquer camada superior. Na codificação de vídeo escalonável, por exemplo, dados em uma camada de base podem ser decodificados sem referência aos dados em uma camada de aprimoramento. As unidades de NAL encapsulam apenas dados de uma única camada. Uma vista pode ser chamada de uma “camada de base” se o decodificador de vídeo 30 puder decodificar figurações na vista sem referência aos dados de qualquer outra camada. A camada de base pode se conformar à especificação de base de HEVC. Desse modo, as unidades de NAL que encapsulam dados da maior camada remanescente do fluxo de bits podem ser removidas do fluxo de bits sem afetar a capacidade de decodificação de dados nas camadas remanescentes do fluxo de bits. Em MV-HEVC e 3D-HEVC, as camadas superiores podem incluir componentes de visualização adicionais.
[0087] Alguns recursos gerais de codificação de vídeo serão agora discutidos em maiores detalhes. Inicialmente, informações de movimento serão discutidas. Para cada bloco, um conjunto de informações de movimento pode estar disponível. Um conjunto de informações de movimento inclui informações de movimento para direções de predição avançar e regredir. No presente documento, as direções de predição avançar e regredir são duas direções de predição de um modo de predição bidirecional e os termos “avançar” e “regredir” não necessariamente têm um significado de geometria; em vez disso, os mesmos correspondem à lista de figuração de referência 0 (RefPicList0) e à lista de figuração de referência 1 (RefPicList1) de uma figuração atual. Quando apenas uma lista de figuração de referência está disponível para uma figuração ou fatia, apenas RefPicList0 pode estar disponível e as informações de movimento de cada bloco de uma fatia são sempre avançar.
[0088] Para cada direção de predição, as informações de movimento incluem um índice de referência e um vetor de movimento. Em alguns casos, para simplicidade, um próprio vetor de movimento pode ser referenciado de uma maneira que seja assumido que o mesmo tem um índice de referência associado. Um índice de referência é usado para identificar uma figuração de referência na lista de figuração de referência atual (RefPicList0 ou RefPicList1). Um vetor de movimento tem uma componente vertical e um horizontal.
[0089] A contagem de ordem de figuração (POC) é amplamente usada em padrões de codificação de vídeo para identificar uma ordem de exibição de uma figuração. Embora haja casos nos quais duas figurações dentro de uma sequência de vídeo codificada podem ter o mesmo valor de POC, isso tipicamente não ocorre dentro de uma sequência de vídeo codificada. Quando múltiplas sequências de vídeo codificadas estão presentes em um fluxo de bits, as figurações com um mesmo valor de POC podem estar mais próximas umas das outras em termos de ordem de decodificação. Os valores de POC de figurações são tipicamente usados para construção de lista de figuração de referência, a derivação de um conjunto de figuração de referência como em HEVC e escalonagem de vetor de movimento.
[0090] Algumas técnicas específicas em H.264/AVC serão agora discutidas. Inicialmente, a estrutura de macrobloco em AVC será discutida. Em H.264/AVC, cada inter macrobloco (MB) pode ser dividido em quatro maneiras diferentes: uma partição 16x16 MB, duas divisões 16x8 MB, duas divisões 8x16 MB ou quatro divisões 8x8 MB. As divisões de MB diferentes em uma MB podem ter valores de índice de referência diferentes para cada direção (RefPicList0 ou RefPicList1). Quando um MB não é dividido em quatro divisões de 8x8 MB, o mesmo tem apenas um vetor de movimento para cada partição de MB em cada direção. Quando um MB é dividido em quatro divisões de 8x8 MB, cada partição de 8x8 MB pode ser adicionalmente dividida em sub- blocos, cada um dos quais pode ter um vetor de movimento diferente em cada direção.
[0091] Há quatro maneiras diferentes para obter sub-blocos de uma partição de 8x8 MB: um sub-bloco 8x8, dois sub-blocos 8x4, dois sub-blocos 4x8 ou quatro sub-blocos 4x4. Cada sub-bloco pode ter um vetor de movimento diferente em cada direção. Os vetores de movimento, portanto, estão presentes em um nível igual a ou maior que o nível de sub-bloco.
[0092] O modo direto temporal em AVC será agora discutido. Em AVC, o modo direto temporal pode ser habilitado ou no nível MB ou o nível de partição de MB para modos de omissão ou diretos em fatias de B. Para cada partição de MB, os vetores de movimento do bloco colocado com a partiçã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 colocalizado é escalonado com base nas distâncias de POC.
[0093] Algumas técnicas específicas em HEVC serão agora discutidas. Em HEVC, a maior unidade de codificação (CU) em uma fatia é chamada de um bloco de árvore de codificação (CTB). Um CTB inclui uma árvore quadrática e os nós da árvore quadrática são CUs. O tamanho de um CTB pode estar na faixa de 16x16 a 64x64 no perfil principal de HEVC, embora tecnicamente tamanhos de CTB de 8x8 possam ser suportados. O tamanho de uma CU pode estar na faixa de tão grande quanto o mesmo tamanho que o CTB para tão pequeno quanto 8x8. Cada CU é codificada com um modo. Quando uma CU é intercodificada, a CU pode ser adicionalmente dividida em duas ou quatro unidades de predição (PUs) ou se torna apenas uma PU quando a partição adicional não se aplica. Quando a CU é intercodificada, um conjunto de informações de movimento está presente para cada PU da CU. Além disso, cada PU da CU é codificada com um modo de interpredição exclusivo para derivar o conjunto associado de informações de movimento.
[0094] A Figura 2 é um diagrama conceitual que ilustra oito modos de partição 33A-33H ("modos de partição 33") para definir PUs de uma CU. Uma PU é uma região na qual a predição é aplicada que é definida pela partição da CU. Conforme mostrado na Figura 2, uma PU não é restringida para ser quadrado em formato, a fim de facilitar a partição da CU para correlacionar os limites de objetos reais na figuração. Cada CU inclui uma, duas ou quatro PUs, dependendo do modo de partição. Em alguns exemplos, quando duas PUs estão presentes em um CU, as PUs podem ser retângulos com metade do tamanho, como nos modos de partição PART_2NxN 33B e PART_Nx2N 33C. Em outros exemplos, quando duas PUs estão presentes em uma CU, as PUs podem ser dois retângulos com tamanhos de um quatro ou três quartos do tamanho da CU, como nos modos de partição PART_2NxnU 33E, PART_2NxnD 33F, PART_nLx2N 33G e PART_nRx2N 33H. Os modos de partição PART_2Nx2N 33A e PART_JNxN 33D são usados para uma CU intracodificada. O modo de partição PART_NxN 33D é permitido apenas quando o tamanho de CU correspondente é igual ao tamanho de CU mínimo.
[0095] A Figura 3 é um diagrama conceitual que ilustra uma estrutura de árvore de transformada 34 dentro de uma CU. Cada CU corresponde a uma árvore de transformada, que é uma árvore quadrática, a folha a qual é uma unidade de transformada (TU). Cada uma das TUs em estrutura de árvore de transformada 34 é uma região quadrada na qual os processos de transformada e quantização são aplicados que é definida por partição de árvore quadrática da CU. Conforme mostrado na Figura 3, uma TU é sempre quadrada em formato. Uma TU pode ter amostras tão grandes quanto 32x32 ou amostras reduzidas a 4x4. Uma profundidade de árvore quadrática máxima, isto é, até que ponto a estrutura de árvore de transformada 34 pode ser dividida para formar nós de folha, é ajustável e especificada na sintaxe de cabeçalho de fatia. Para uma inter-CU, uma TU pode ser maior que uma PU, isto é, a TU pode conter limites de PU. Para uma intra-CU, no entanto, uma TU não pode ultrapassar os limites de PU.
[0096] Um elemento de sintaxe rqt_root_cbf igual a 1 especifica que uma estrutura de sintaxe transform_tree está presente para uma CU atual. O elemento de sintaxe rqt_root_cbf igual a 0 especifica que a estrutura de sintaxe transform_tree não está presente para a CU atual. Quando o elemento de sintaxe rqt_root_cbf não está presente, seu valor é inferido para ser igual a 1. Quando o elemento de sintaxe rqt_root_cbf é igual a 0, a árvore de transformada contém apenas um nó, o que significa que não é adicionalmente dividido e um split_transform_flag é igual a 0. Para um nó dentro da árvore de transformada, se a mesma tem um split_transform_flag igual a 1, a mesma é adicionalmente dividida em quatro nós e uma folha da árvore de transformada tem um split_transform_flag igual a 0.
[0097] Por uma questão de simplicidade, se uma TU ou árvore de transformada corresponder a um bloco que não tem uma transformada, a mesma ainda pode ser considerada como uma TU ou unidade de transformada devido ao fato de que a hierarquia da própria transformada ainda existe, embora a transformada não seja aplicada. Tipicamente, uma transformada omitiu um bloco que corresponde a uma unidade de transformada.
[0098] Um sinalizador de bloco codificado (cbf) de uma TU igual a 1 especifica que a TU contém um ou mais níveis de coeficiente de transformada diferente de zero, isto é, não igual a 0. Um CBF de uma TU igual a 0 especifica que todos os níveis de coeficiente de transformada da TU são iguais a 0. Um CBF é ajustado para cada componente da TU, isto é, um CBF é definido para cada um dentre componentes de luminância (Y) e crominância (Cb e Cr).
[0099] No padrão de HEVC, há dois modos de interpredição, chamados de modos de predição de vetor de movimento avançado e de fusão (AMVP), para predizer movimento para uma unidade de predição atual (PU). Um modo de omissão é considerado um caso especial do modo de fusão. Ou o AMVP ou modo de fusão, uma lista de candidato de vetor de movimento (MV) é mantida incluindo múltiplos preditores de vetor de movimento. Os vetores de movimento, bem como índices de referência associados no modo de fusão, são gerados para a PU atual mediante a seleção de um dos candidatos da lista de candidato de MV.
[0100] No modo de fusão, uma lista de candidato de MV inclui até cinco candidatos. Um candidato de fusão pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento que correspondem tanto às listas de figuração de referência (lista 0 e lista 1) quanto os índices de referência associados. Se um candidato de fusão for identificado por um índice de fusão para a PU atual, os vetores de movimento e figurações de referência associadas são usados para a predição da PU atual.
[0101] No modo de AMVP, a lista de candidato de MV inclui apenas dois candidatos. Um candidato de AMVP contém vetores de movimento que correspondem a ambas as listas de figuração de referência (lista 0 e lista 1). Se um candidato de AMVP for identificado por um índice de AMVP para a PU atual, um índice de referência precisa ser explicitamente sinalizado para cada direção de predição potencial ou da lista 0 ou da lista 1 junto com o índice de AMVP visto que o candidato de AMVP inclui apenas um vetor de movimento. No modo de AMVP, os vetores de movimento preditos podem ser adicionalmente refinados mediante a sinalização de uma diferença de vetor de movimento e da realização de escalonagem de vetor de movimento.
[0102] Conforme descrito acima, um candidato de fusão inclui um conjunto de informações de movimento completo enquanto um candidato de AMVP inclui apenas um vetor de movimento para uma direção de predição específica e índice de referência explicitamente sinalizado. Os candidatos para ambos os modos são derivados de modo similar dos mesmos blocos próximos espaciais e temporais da PU atual.
[0103] As Figuras 4A e 4B são diagramas conceituais que ilustram candidatos próximos espaciais para o modo de fusão e o modo de AMVP, respectivamente. Os candidatos de MV espaciais são derivados dos blocos próximos mostrados nas Figuras 4A e 4B, para uma PU atual (PU0), embora os métodos para gerar os candidatos dos blocos difiram para os modos de fusão e de AMVP.
[0104] No modo de fusão, até quatro candidatos de MV espaciais podem ser derivados dos blocos próximos de PU0 90 na ordem numerada mostrada na Figura 4A. No exemplo ilustrado da Figura 4A, a ordem é como a seguir: bloco esquerdo (0), bloco acima (1), bloco direito acima (2), bloco esquerdo abaixo (3) e bloco esquerdo acima (4).
[0105] No modo de AMVP, até dois candidatos de MV espaciais podem ser derivados dos blocos próximos de PU0 92 na ordem numerada mostrada na Figura 4B. Os blocos próximos de PU0 92 são divididos em dois grupos: um grupo esquerdo incluindo o bloco esquerdo abaixo (0) e o bloco esquerdo (1) e um grupo acima incluindo o bloco direito acima (2), o bloco acima (3) e o bloco esquerdo acima (4), conforme mostrado, na Figura 4B. Para cada grupo, um vetor de movimento para um bloco próximo que se refere à mesma figuração de referência que o índice de referência explicitamente sinalizado para PU0 92 tem a maior prioridade de ser escolhido para formar um candidato de MV final do grupo. Em alguns exemplos, é possível que nenhum dos blocos próximos tenha um vetor de movimento que sinaliza para a figuração de referência explicitamente sinalizado. Se tal candidato de MV não puder ser encontrado, o primeiro vetor de movimento disponível será dimensionado para formar o candidato de MV final do grupo. Nesse caso, quaisquer diferenças de distância temporais serão compensadas.
[0106] A Figura 5A é um diagrama conceitual que ilustra candidatos de predição de vetor de movimento temporal (TMVP) para uma PU atual (PU0) 94. Um candidato de TMVP, se habilitado e disponível, é adicionado na lista de candidato de MV após os candidatos de MV espaciais. O processo de vetor de movimento derivação para um candidato de TMVP é o mesmo tanto para o modo de fusão quanto para os modos de AMVP. No modo de fusão, no entanto, o índice de referência de alvo para o candidato de TMVP é sempre definido como 0.
[0107] A localização de bloco primário para derivação de candidato de TMVP é o bloco direito de fundo fora de uma PU colocalizada (PU1) 96 de PUO 94, conforme mostrado na Figura 5A como bloco T 97. O bloco direito de fundo T 97 é selecionado para compensar a inclinação para os blocos acima e esquerdo usados para gerar os candidatos próximos espaciais. Se, no entanto, o bloco direito de fundo T estiver localizado fora da LCU atual 98 de PUO 94 (isto é, em posição 99) ou as informações de movimento para o bloco direito de fundo T 97 não estão disponíveis, o bloco usado para a derivação de candidato de TMVP é substituído com um bloco central T 95 de PU0 94.
[0108] A Figura 5B é um diagrama conceitual que ilustra escalonagem de MV para o modo de TMVP para uma PU atual 100 na figuração atual 102. Um vetor de movimento para um candidato de TMVP é derivado de uma PU colocalizada 104 de figuração colocalizada 106, indicada no nível de fatia. Similar ao modo direto temporal em AVC, descrito acima, um vetor de movimento do candidato de TMVP pode ser gerado para PU atual 100 com o uso de escalonagem, que é realizado para compensar as diferenças entre a distância temporal colocalizada (isto é, a distância entre a figuração colocalizada 106 e a figuração colocalizada de referência 107) e a diferença temporal atual (isto é, entre a figuração atual 102 e a figuração atual de referência 103), conforme mostrado na Figura 5B.
[0109] Outros aspectos de predição de vetor de movimento em HEVC serão agora discutidos. Em escalonagem de vetor de movimento, assume-se que o valor de vetores de movimento é proporcional à distância de figurações no tempo de apresentação. Um vetor de movimento associa duas figurações: a figuração de referência e a figuração que contêm o vetor de movimento (a saber, a figuração de contenção). Quando um vetor de movimento é utilizado para predizer outro vetor de movimento, a distância da figuração de contenção e da figuração de referência é calculada com base nos valores de Contagem de Ordem de Figuração das figurações. Para um vetor de movimento a ser predito, tanto sua figuração de contenção quanto a figuração de referência associada podem ser diferentes. Nesse caso, uma nova distância (com base em POC) é calculada. O vetor de movimento é dimensionado com base nessas duas distâncias de POC. Para um candidato próximo espacial, as figurações contentoras para os dois vetores de movimento são as mesmas enquanto as figurações de referência são diferentes. Em HEVC, a escalonagem de vetor de movimento se aplica tanto a TMVP quanto a AMVP para candidatos próximos espaciais e temporais.
[0110] Na geração de candidato de vetor de movimento artificial, se uma lista de candidato de vetor de movimento não estiver completa (isto é, menor que o número prescrito de candidatos que estão disponíveis), os candidatos de vetor de movimento artificiais podem ser gerados e inseridos no final da lista até que lista inclua o número prescrito de candidatos. No modo de fusão, há dois tipos de candidatos de MV artificiais: um candidato combinado derivado apenas para fatias de B e candidatos zero usados apenas para AMVP se o primeiro tipo não fornecer candidatos artificiais suficientes. Para cada par de candidatos que já está na lista de candidato e tem as informações de movimento necessárias, candidatos de vetor de movimento combinados bidirecionais são derivados com base em uma combinação de um vetor de movimento de um primeiro candidato que se refere a uma figuração na lista 0 e um vetor de movimento de um segundo candidato que se refere a uma figuração na lista 1.
[0111] No processo de remoção para inserção de candidato, candidatos de blocos diferentes podem ser os mesmos, o que reduz a eficácia de uma lista de candidato de fusão/AMVP. Um processo de remoção pode ser aplicado para endereçar esse problema. O processo de remoção compara um candidato em relação aos outros na lista de candidato atual para evitar inserir um candidato idêntico em certas circunstâncias. Para reduzir a complexidade, apenas um número limitado de processos de remoção pode ser aplicado, em vez de comparar cada candidato potencial com todos os outros candidatos existentes.
[0112] Um processo de filtro de desbloqueio em HEVC será descrito agora. O processo de filtro de desbloqueio é realizado para cada CU de um bloco de vídeo na mesma ordem que o processo de decodificação. Primeiro, bordas verticais são filtradas (isto é, filtragem horizontal) e, então, bordas horizontais são filtradas (isto é, filtragem vertical). A filtragem de desbloqueio é aplicada aos limites de bloco dentro da CU que são determinados para serem filtrados, tanto para componentes de luma quanto de croma. Em alguns exemplos, limites de bloco de 8x8 são filtrados enquanto limites de bloco de 4x4 não são processados a fim de reduzir a complexidade. Dois tipos de limites estão envolvidos no processo de filtro de desbloqueio: limites de TU e limites de PU. Os limites de CU também são considerados, visto que os limites de CU são necessariamente também limites de TU e PU.
[0113] A Figura 6 é um fluxograma que ilustra um fluxo de processamento exemplificativo 108 de um processo de filtro de desbloqueio. Um limite pode ter três valores de situação de filtragem: nenhuma filtragem, filtragem fraca e filtragem forte. Cada decisão de filtragem tem como base resistência ao limite, Bs, e valores limiares, β e tC.
[0114] A Figura 7 é um fluxograma que ilustra uma operação exemplificativa de um cálculo de resistência a limite (Bs) 110 para um processo de filtro de desbloqueio. A resistência ao limite (Bs) reflete o quanto um processo de filtragem pode ser necessário para o limite. Por exemplo, um valor de Bs de 2 indica filtragem forte, um valor de Bs de 1 indica filtragem fraca e um valor de Bs de 0 indica nenhuma filtragem de desbloqueio.
[0115] Deixar P e Q serem definidos como blocos que estão envolvidos na filtragem, enquanto P representa o bloco localizado à esquerda (no invólucro de borda vertical) ou acima (no invólucro de borda horizontal) do limite a ser desbloqueado e Q representa o bloco localizado à direita (no invólucro de borda vertical) ou acima (no invólucro de borda horizontal) do limite a ser desbloqueado. A operação ilustrada na Figura 7 indica como o valor de Bs é calculado com base no modo de intracodificação, a existência de coeficientes de transformada diferente de zero, figurações de referência, número de vetores de movimento e diferenças de vetor de movimento.
[0116] A Figura 8 é um diagrama conceitual que ilustra informações reutilizadas ou referidas para um cálculo de Bs entre pixels em uma grade 112 em um limite de unidade de árvore de codificação (CTU) 113 para um processo de filtro de desbloqueio. O Bs é calculado em uma base de bloco 4x4, mas o mesmo é mapeado novamente para uma grade de 8x8. O máximo dos dois valores de Bs que correspondem a 8 pixels que contêm uma linha na grade de 4x4 é selecionado como o Bs para limites na grade de 8x8. No limite de CTU 113, as informações sobre cada segundo bloco (em uma grade de 4x4) para a esquerda ou acima são usadas novamente conforme representado na Figura 8, a fim de reduzir a exigência de memória de armazenamento temporário de linha.
[0117] Os valores limiares β' e tC' estão envolvidos na decisão de filtro ligado/desligado, seleção de filtro forte e fraco e processo de filtragem fraco. Os valores limiares são derivados do valor do parâmetro de quantização de luma, Q, conforme mostrado na Tabela 1 abaixo. TABELA 1 - DERIVAÇÃO DE VARIÁVEIS DE LIMIAR DE ENTRADA Q
Figure img0001
[0118] A variável β é derivada de β’ como a seguir:
[0119] β = β' * (1 « (BitDepthy-8))
[0120] A variável tc é derivada de tC' como a seguir:
[0121] tC = tC' * (1 « (BitDepthy-8))
[0122] A Figura 9 é um diagrama conceitual que ilustra pixels no bloco P 116 e bloco Q 117 envolvido em uma decisão de filtro ligado/desligado e uma seleção de filtro forte/fraco para um processo de filtro de desbloqueio no limite 114. A decisão de filtro ligado/desligado é tomada com o uso de quatro linhas de pixels que ultrapassam o limite 114 que são, cada uma, agrupadas como uma unidade (mostrada na Figura 9 com o uso de caixas com contorno pretas) para reduzir complexidade computacional. Os seis pixels incluídos em cada uma das duas caixas em um primeiro conjunto de quatro linhas 118 são usados para determinar se o filtro está ligado ou desligado para o primeiro conjunto de quatro linhas 118. Os seis pixels incluídos em cada uma das duas caixas em um segundo conjunto de quatro linhas 119 são usados para determinar se o filtro está ligado ou desligado para o segundo conjunto de quatro linhas 119.
[0123] As variáveis a seguir são definidas para a decisão de filtro ligado/desligado:
Figure img0002
[0124] Se dp0+dq0+dp3+dq3 < β, a filtragem para o primeiro conjunto de quatro linhas 118 é ligada e o processo de seleção de filtro forte/fraco é aplicado. Se essa condição não for cumprida, nenhuma filtragem é tomada para o primeiro conjunto de quatro linhas 118.
[0125] Adicionalmente, se a condição for cumprida, as variáveis dE, dEp1 e dEp2 estão em conjunto como a seguir:
[0126] dE é definido igual a 1
[0127] Se dp0 + dp3 < (β + (β » 1)) » 3, a variável dEp1 é um conjunto igual a 1
[0128] Se dq0 + dq3 < (β + (β » I)) » 3, a variável dEq1 é um conjunto igual a 1
[0129] Uma decisão de filtro ligado/desligado é tomada de uma maneira similar conforme descrito acima para o segundo conjunto de quatro linhas 119.
[0130] Se a filtragem for ligada, uma decisão é tomada entre filtragem forte e fraca. Os pixels envolvidos são os mesmos que aqueles usados para a decisão de filtro ligado/desligado, conforme representado na Figura 9. Se os dois conjuntos a seguir de condições são cumpridas, um filtro forte é usado para filtragem do primeiro conjunto de quatro linhas 118. De outro modo, um filtro fraco é usado.
Figure img0003
[0131] A decisão de se seleciona filtragem forte ou fraca para o segundo conjunto de quatro linhas 119 é tomada de uma maneira similar.
[0132] Para filtragem forte, os valores de pixel filtrados são obtidos pelas equações a seguir. Verifique que três pixels são modificados com o uso de quatro pixels como uma entrada para cada um dentre o bloco P 116 e o bloco Q 117.
Figure img0004
[0133] Para filtragem fraca, os valores de pixel filtrados são obtidos pelas equações a seguir. Verifique que dois pixels são modificados com o uso de três pixels como uma entrada para cada um dentre o bloco P 116 e o bloco Q 117.
[0134] Delta (Δ) é definido como a seguir.
Figure img0005
[0135] Quando abs(Δ) for menor que tC *10,
Figure img0006
[0136] Se dEp1 for igual a 1,
Figure img0007
[0137] Se dEq1 for igual a 1,
Figure img0008
[0138] As decisões de desbloqueio descritas acima são para filtragem de componentes de luma. A resistência ao limite Bs para filtragem de croma é hereditária a partir de luma. Se for Bs > 1, a filtragem de croma é realizada. Nenhum processo de seleção de filtro é realizado para croma, visto que apenas um filtro pode ser aplicado. Os valores de amostra filtrados p0' e q0' são derivados como a seguir.
Figure img0009
[0139] Algumas técnicas específicas em HEVC serão agora discutidas. A extensão de vídeo em 3D do padrão de HEVC (3D-HEVC) está sob desenvolvimento por JCT-3V. A extensão 3D-HEVC suporta a codificação do formato de vídeo de múltiplas vistas mais profundidade.
[0140] A Figura 10 é um diagrama conceitual que ilustra uma estrutura de predição de múltiplas vistas para casos de 3 vistas, em que V3 denota a vista de base e uma figuração em uma vista de não base (isto é, V1 ou V5) pode ser predita a partir de figurações na vista de base do mesmo intervalo de tempo. A predição de amostra intervistas, que usa a estrutura de predição de múltiplas vistas 120 ilustrada na Figura 10 é suportada pela extensão de múltiplas vistas de HEVC (MV-HEVC). Tanto MV-HEVC quanto 3D-HEVC são compatíveis com HEVC de uma maneira que a vista de base ou de textura (isto é, V3) seja decodificável por um decodificador de HEVC.
[0141] Em MV-HEVC, uma figuração atual em uma vista de não base (isto é, V1 ou V5) pode ser predita tanto pelas figurações na mesma vista quanto pelas figurações em uma vista de referência do mesmo período de tempo mediante a inclusão de todas essas figurações em listas de figuração de referência para a figuração atual. Uma lista de figuração de referência da figuração atual, portanto, contém tanto as figurações de referência temporais quanto as figurações de referência intervistas. Um vetor de movimento associado a um índice de referência que corresponde a uma figuração de referência temporal é indicado como um vetor de movimento temporal. Um vetor de movimento associado a um índice de referência que corresponde a uma figuração de referência intervistas é indicado como um vetor de movimento de disparidade.
[0142] A extensão HEVC em 3D suporta todos os recursos de MV-HEVC de modo que a predição de amostra intervistas também seja suportada por 3D-HEVC. Além disso, a extensão HEVC em 3D suporta ferramentas de codificação de apenas textura mais avançadas e ferramentas de codificação dependentes/relacionadas à profundida, que não são suportadas pela extensão de MV-HEVC. As ferramentas de codificação de apenas textura podem exigir a identificação dos blocos correspondentes intervistas que pertencem ao mesmo objeto. A derivação de vetor de disparidade, portanto, é uma tecnologia básica em 3D-HEVC.
[0143] Um aspecto-chave de tecnologia de codificação de múltiplas vistas é para identificar os blocos correspondentes de diferente vistas por derivação precisa e eficaz dos vetores de disparidade. Em 3D-HEVC, Bloco Próximo com base em derivação de Vetor de Disparidade (NBDV) é projetado de uma maneira similar aos modos de AMVP e de fusão em HEVC. Os vetores de disparidade, no entanto, são puramente derivados de blocos próximos, então, nenhum bit adicional é necessário para aperfeiçoamento adicional ou escalonagem dos vetores de disparidade. Quando a predição de amostra intervistas for habilitada, os vetores de movimento que correspondem às figurações de referência intervistas, a saber, vetores de movimento de disparidade, já estão presentes junto com vetores de movimento normais, a saber, vetores de movimento temporais, no campo de movimento para um bloco atual. A ideia básica de derivação de NBDV é fazer uso dos vetores de movimento de disparidade no campo de movimento, mediante a verificação de apenas os blocos próximos espaciais e temporais.
[0144] A Figura 11 é um diagrama conceitual que ilustra blocos próximos espaciais acessados para derivação de NBDV para um bloco atual 122, em que os blocos próximos espaciais para derivação de NBDV são os mesmos que aqueles acessados para modo de fusão e modo de AMVP. Os blocos próximos espaciais, A0, A1, B0, B1 e B2, acessados para NBDV são os mesmos que aqueles acessados para os modos de AMVP e fusão, conforme mostrado nas Figuras 4A e 4B e a Figura 11.
[0145] É altamente possível, no entanto, que não haja bloco espacial próximo de bloco atual 122 que tenha quaisquer vetores de movimento de disparidade associados. Nessa facilidade, os blocos próximos temporais também são verificados. Os blocos próximos temporais de bloco atual 122 são os blocos na figuração colocalizada, conforme usado no modo de TMVP e, além disso, outra figuração que pode ter uma chance melhor de usar compensação de movimento de disparidade, por exemplo, uma figuração de acesso aleatório ou uma figuração que tem uma ID temporal mais baixa. Para cada temporal figuração, similar ao modo de TMVP ilustrado na Figura 5A, os blocos centrais e de direita de fundo são verificados. Todos os blocos próximos espaciais e temporais de bloco atual 122 são verificados em ordem. Uma vez que um vetor de movimento de disparidade é identificado, o vetor de disparidade de bloco atual 122 é derivado para ser o mesmo que o vetor de movimento de disparidade identificado e o processo de derivação de NBDV é finalizado. O vetor de disparidade de bloco atual 122 é usada para identificar o bloco de referência intervistas na figuração da vista de referência, como em, por exemplo, predição de movimento intervistas e predição residual intervistas.
[0146] Em 3D-HEVC, pode ser possível armazenar alguns vetores de disparidade derivados como resultados de derivação de NBDV a serem adicionalmente usados para blocos próximos. Tais vetores de disparidade derivados são chamados de vetores de disparidade implícitos (IDVs). Por exemplo, se a derivação de NBDV não identificar quaisquer vetores de movimento de disparidade de blocos próximos, os blocos próximos espaciais podem ser verificados novamente para identificar quaisquer IDVs disponíveis dos blocos próximos espaciais a serem usados para derivar o vetor de disparidade final para o bloco atual 122. Recentemente, 3D- HEVC também incluía simplificações dos métodos de NBDV mediante a verificação de poucos blocos próximos espaciais e temporais.
[0147] A predição de síntese de vista (VSP) em 3D-HEVC é realizada por dois módulos técnicos maiores: Predição de Síntese de Vista Posterior e de NBVD Orientado por Profundidade (Do-NBDV) (BVSP).
[0148] Em derivação de Do-NBDV, o vetor de disparidade gerado pelo esquema de NBDV pode ser adicionalmente refinado com o uso de informações no mapa de profundidade codificado. Dessa maneira, a precisão do vetor de disparidade ou pode ser aprimorada ao assumir o benefício das informações codificadas no mapa de profundidade de vista de base. As etapas de aperfeiçoamento são descritas a seguir:
[0149] 1. Localizar um bloco de profundidade correspondente com base no vetor de disparidade derivado pelo esquema de NBDV para uma PU atual em uma figuração de vista de profundidade codificada anteriormente (como na vista de base) da mesma unidade de acesso; em que o tamanho do bloco de profundidade correspondente é o mesmo que aquele de PU atual.
[0150] 2. Calcular um vetor de disparidade para a PU atual do bloco de profundidade correspondente com base no valor máximo dos quatro valores de profundidade de pixel de canto. O valor máximo é definido igual ao componente horizontal do vetor de disparidade calculado, enquanto o componente vertical do vetor de disparidade é definido como zero.
[0151] O vetor de disparidade do esquema de NBDV é, então, substituído por esse vetor de disparidade derivado recentemente do esquema de Do-NBDV e o vetor de disparidade refinado (de Do-NBDV) é usado para predição de movimento intervistas para a PU atual. O vetor de disparidade não refinado (de NBDV), no entanto, pode ser usado para predição residual intervistas para a PU atual. Além disso, o vetor de disparidade refinado pode ser armazenado como o um vetor de movimento da PU atual se o mesmo for codificado em modo de BVSP.
[0152] O modo de BVSP é realizado como um candidato de modo de fusão especial que tem seu conjunto de vetor de movimento de início a ser um vetor de movimento de disparidade. Tal candidato é chamado de um candidato de BVSP. Quando um bloco espacial próximo de uma PU atual for codificado em um modo de BVSP, o vetor de disparidade associado e índice de vista de referência do bloco próximo são usados para definir um candidato de BVSP adicional para a PU atual. O candidato de modo de fusão espacial derivado de tal bloco espacial próximo é marcado com um sinalizador de BVSP igual a 1.
[0153] A Figura 12 é um diagrama conceitual que ilustra um modo de BVSP 124 que atribui vetores de movimento diferentes para as sub-PUs diferentes de uma PU atual 126 em uma figuração atual 125. Nesta revelação, o modo de BVSP atual em 3D-HEVC pode ser chamado de modo de BVSP de sub-PU, no modo de BVSP, as primeiras informações de movimento são determinadas para a PU atual 126 dos blocos próximos espaciais ou temporais de PU atual 126. Conforme descrito acima, as primeiras informações de movimento podem ser selecionadas como um candidato de BVSP em uma lista de candidato de modo de fusão. As primeiras informações de movimento incluem um vetor de movimento de disparidade e um índice de vista de referência associado que identifica uma figuração de referência entre as vistas 128. Essa primeira etapa do modo de BVSP pode ser substancialmente similar à derivação de NBDV descrita acima.
[0154] A PU atual 126 é, então, adicionalmente dividida em sub-regiões ou sub-PUs. Por exemplo, uma PU com seu tamanho indicado por NxM pode ser adicionalmente dividida em diversas sub-regiões ou sub-PUs com tamanhos iguais a KxL (em que K e L pode ser 8 ou 4, mas ambas não podem ser 4). Para cada sub-região ou sub-PU, as segundas informações de movimento são determinadas incluindo um vetor de movimento de disparidade separado derivado mediante o acesso a um dos blocos de profundidade correspondentes 130 em uma figuração de vista de profundidade de referência 129 associada a uma figuração de referência intervistas 128 identificada pelo índice de vista de referência associado ao primeiro vetor de disparidade. Mais especificamente, para cada sub-PU de PU atual 126, um valor máximo dos quatro pixels de canto de um dos blocos de profundidade correspondentes 130 é selecionado e convertido para um componente horizontal do vetor de movimento de disparidade para a sub-PU; em que o vetor de movimento de disparidade tem um componente vertical igual à zero. Essa segunda etapa do modo de BVSP pode ser substancialmente similar à derivação de Do-NBDV descrita acima.
[0155] Após cada sub-região ou sub-PU de PU atual 126 ter suas informações de movimento preditas, o motor de compensação de movimento de HEVC pode ser usado para predizer cada sub-região ou sub-PU de PU atual 126 de figuração de referência intervistas 128 com base nas segundas informações de movimento para cada sub-PU. No modo de BVSP, após realizar a compensação de movimento para predizer cada sub-PU de PU atual 126, apenas o primeiro vetor de movimento de disparidade incluído nas primeiras informações de movimento selecionadas para a PU atual 126 é armazenado para a PU atual 126 e os vetores de disparidade separados incluídos nas segundas informações de movimento para as sub-PUs são descartados.
[0156] Com o modo de BVSP, cada PU pode ter mais de um conjunto de informações de movimento, o que significa que sub-PUs dentro de uma PU podem ter vetores de movimento diferentes. Isso é diferente de HEVC, em que cada PU tem apenas um conjunto de informações de movimento. Tipicamente, no modo de BVSP, embora as sub-PUs dentro de uma PU possam ter vetores de movimento diferentes, os valores de índice de referência para as sub-PUs são os mesmos. O aumento de complexidade do modo de BVSP encontra- se principalmente em consumo de potência aumentado e a complexidade de pior caso é similar à compensação de movimento de HEVC desde que o tamanho, bem como situação de bipredição, das sub-PUs nunca é menor que o tamanho do bloco de compensação de movimento habilitado em HEVC.
[0157] Em 3D-HEVC, uma vista de profundidade é codificada após a vista de textura associada. Quando uma PU na vista de profundidade é codificada, as informações de movimento da vista de textura dentro da região colocalizada da PU podem criar um candidato de fusão para a PU atual. Nesse caso, o candidato de fusão pode ser chamado de candidato de herança de parâmetro de movimento (MPI) e que contém um conjunto de informações de movimento completo.
[0158] Em JCT3V-E0184, Jicheng An et al, 3D- CE3.h se refere a: "Sub-PU level inter-view motion prediction", Equipe Colaborativa Conjunta em Extensões de Codificação de Vídeo em 3D de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 5° Encontro: Viena, AT, 27 de julho a 2 de agosto de 2013, o uso de um método de predição de movimento intervistas de nível de sub-PU é descrito para o candidato de fusão intervistas, isto é, o candidato derivado de um bloco de referência em uma figuração de referência intervistas.
[0159] A Figura 13 é um diagrama conceitual que ilustra predição de movimento intervistas de nível de sub-PU 131 para uma PU atual 134 em uma vista atual (V1) 132. Quando o modo de predição de movimento intervistas é habilitado, a PU atual 134 pode corresponder a uma área de referência com o mesmo tamanho que a PU atual identificada pelo vetor de disparidade em uma vista de referência (V0) 136. Em alguns casos, a área de referência pode ter informações de movimento mais completas que o necessário para a geração de apenas um conjunto de informações de movimento para a PU atual 134. Um método de predição de movimento intervistas de nível de sub-PU (SPIVMP) é, portanto, proposto em que a PU atual 134 é dividida em múltiplas sub-PUs e o vetor de disparidade (DV) é usado para identificar blocos de referência 138 em vista de referência (V0) 136 para cada uma das sub-PUs de PU atual 134. No modo de SPIVMP, cada uma das sub-PUs de PU atual 134 tem um conjunto de informações de movimento completo copiado de blocos de referência 138 de modo que a PU atual 134 possa conter múltiplos conjuntos de informações de movimento. O modo de SPIVMP também pode ser sinalizado como um candidato de modo de fusão especial, similar ao modo de BVSP de sub-PU descrito acima.
[0160] No Pedido Provisório no US. 61/858.089, depositado em 24 de julho de 2013, intitulado “ADVANCED MOTION PREDICTION FOR 3D VIDEO CODING”, de Ying Chen e Li Zhang, é proposto que o candidato de MPI também pode ser estendido de uma maneira similar à predição de movimento intervistas de nível de sub-PU. Por exemplo, se a PU de profundidade atual tem uma região colocalizada que contém múltiplas PUs, a PU de profundidade atual pode ser separada em sub-PUs, cada uma das quais pode ter um conjunto de informações de movimento diferente. Esse método pode ser chamado de MPI de sub-PU.
[0161] Os projetos de sub-PU em 3D-HEVC, incluindo BVSP de sub-PU, predição de movimento intervistas de sub-PU e MPI de sub-PU, descritos acima podem passar por algumas questões.
[0162] Primeiro, conforme descrito acima, no modo de BVSP de sub-PU, a compensação de movimento é realizada para predizer cada uma das sub-PUs de uma PU atual com base nas informações de movimento de sub-PU separadas derivadas com base nos blocos correspondentes de profundidade de uma figuração de referência intervistas identificada por um vetor de movimento de disparidade selecionado para a PU atual. Após realizar a compensação de movimento para predizer cada uma das sub-PUs, no entanto, apenas o vetor de movimento de disparidade que corresponde a cada lista de figuração de referência é armazenado para a PU atual. Nesse caso, quando a PU atual é usada para predizer uma PU subsequente, as sub-PUs da PU atual são vistas como tendo os mesmos vetores de movimento de modo que o modo de BVSP de sub-PU tenha pouco impacto no aprimoramento de precisão de predição de vetor de movimento.
[0163] Segundo, o projeto de sub-PU atual é apenas habilitado quando a predição entre camadas é habilitada. O projeto de sub-PU, no entanto, pode ser aplicável para aprimorar a precisão de uso de compensação de movimento em predição de camada única. Além disso, o projeto de sub-PU atual é apenas aplicável ao modo de predição entre a fusão na qual nenhum aperfeiçoamento adicional dos vetores de movimento de candidato é permitido. O projeto de sub-PU atual, portanto, não pode ser habilitado para os modos de predição de movimento nos quais o aperfeiçoamento de movimento é permitido, por exemplo, o modo de AMVP para codecs com base em HEVC.
[0164] Terceiro, os filtros de desbloqueio usados em HEVC são tipicamente mantidos inalterados em extensões de HEVC, incluindo 3D-HEVC. O projeto de filtro de desbloqueio atual em HEVC, no entanto, pode não filtrar limites das sub-PUs devido ao fato de que se assume que, em HEVC, os blocos na mesma TU dentro de uma PU tenham movimento compensado como um bloco completo de uma única figuração. Nesse caso, espera-se que nenhum artefato de desbloqueio esteja presente ou seja removido de dentro de uma PU. A fim de desbloquear sublimites de PU sem alterar o projeto de filtro de desbloqueio na extensão HEVC em 3D, esta revelação descreve converter uma sub-PU para uma estrutura não prejudicial de desbloqueio antes de um processo de filtro de desbloqueio ser aplicado. Por exemplo, antes do processo de filtragem de desbloqueio, cada PU que utiliza o projeto de sub-PU pode ser convertida para uma ou mais árvores de codificação, em que cada sub-PU possa se tornar uma PU em uma CU que é um nó da respectiva árvore de codificação. Nesse exemplo, a estrutura de árvore de codificação é compatível com projeto de sintaxe de HEVC.
[0165] No entanto, algumas questões adicionais podem ocorrer com a solução acima. Como um primeiro exemplo, se uma unidade de predição A (PU A) for codificada com interpredição normal e outra unidade de predição (PU B) dentro da mesma CU que a PU A é codificada com sub-PUs, as PUs precisarão ser convertidas em duas CUs e a filtragem pode ocorrer dentro da PU A, que não é subdividida. Como um segundo exemplo, quando uma TU se aplica a uma CU completa, que inclui pelo menos uma PU com sub-PUs, a CU pode ser convertida para múltiplas CUs, múltiplas CUs com a mesma TU não é suportada por HEVC.
[0166] Esta revelação descreve diversas técnicas para abordar as questões descritas acima.
[0167] Em relação à primeira questão descrita acima, no modo de BVSP de sub-PU em 3D-HEVC, após realizar a compensação de movimento para predizer cada uma das subPUs da PU atual com base nas informações de movimento de sub-PU separadas derivadas com base nos blocos correspondentes de profundidade de uma figuração de referência intervistas identificadas por um vetor de movimento de disparidade selecionado para a PU atual, apenas o vetor de movimento de disparidade que corresponde a cada lista de figuração de referência é armazenado para o PU atual. O único vetor de movimento de disparidade é armazenado para cada lista de figuração de referência muito embora a compensação de movimento da PU tenha como base múltiplos vetores de movimento incluídos nas informações de movimento separadas derivadas para as múltiplas sub-PUs da PU atual.
[0168] De acordo com as técnicas desta revelação, para cada PU predita com o uso do modo de BVSP de sub-PU, uma codificação de vídeo dispositivo, isto é, codificador de vídeo 20 e/ou decodificador de vídeo 30, preserva, por exemplo, armazena ou mantém, as informações de movimento separadas derivadas para cada uma das sub-PUs da PU atual mesmo após a compensação de movimento ser realizada. Como exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem armazenar o vetor de movimento de disparidade derivado para cada uma das sub-PUs em uma memória, como um armazenamento temporário de figuração decodificada, com uma lista de figuração de referência que inclui a figuração de referência intervistas identificadas por um índice de vista de referência associado ao vetor de movimento de disparidade para a PU atual.
[0169] As informações de movimento adicionais mais completas armazenadas para a PU atual podem, então, ser usadas para predizer PUs subsequentes para as quais a PU atual é um bloco próximo. Por exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem gerar uma lista de candidato de modo de fusão de informações de movimento para predizer uma PU subsequente que inclui as informações de movimento armazenadas para pelo menos uma das sub-PUs da PU atual como um candidato de BVSP de sub-PU na lista de candidato de modo de fusão. Em um exemplo, se a PU subsequente for codificada no modo de BVSP de sub-PU, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode não precisar derivar as informações de movimento separadas para cada uma das sub-PUs da PU subsequente. Em vez disso, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem selecionar as informações de movimento separadas como o candidato de BVSP de sub-PU da lista de candidato de modo de fusão de informações de movimento para predizer as sub-PUs da PU subsequente. A operação de predizer uma PU no modo de BVSP de sub-PU e armazenar as informações de movimento derivadas para cada uma das sub-PUs da PU é descrita em maiores detalhes abaixo em relação à Figura 17.
[0170] Em relação à segunda questão descrita acima, esta revelação descreve técnicas para realizar um modo de TMVP avançado para predizer sub-PUs de uma PU em codificação de camada única para a qual o aperfeiçoamento de vetor de movimento pode ser permitido. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para realizar o modo de TMVP avançado, que inclui determinar vetores de movimento para a PU em pelo menos dois estágios para derivar informações de movimento para a PU que incluem vetores de movimento diferentes e índices de referência para cada uma das sub-PUs da PU.
[0171] As Figuras 14A e 14B são diagramas conceituais que ilustram o modo de TMVP avançado para predizer sub-PUs em uma PU em codificação de camada única. Conforme ilustrado na Figura 14A, o primeiro estágio 170 do modo de TMVP avançado determina um vetor de movimento que identifica um bloco correspondente 174 em uma figuração de referência para a PU atual 173 na figuração atual e o segundo estágio 172 do modo de TMVP avançado extrai múltiplos conjuntos de informações de movimento de sub-PUs de bloco correspondente 174 na figuração de referência e indica cada um dos conjuntos de informações de movimento para uma das sub-PUs de PU atual 173 na figuração atual. Cada sub-PU da PU atual 173, portanto, é movimento compensado separadamente. O vetor de movimento no primeiro estágio 170 pode ser derivado de blocos próximos espaciais e temporais da PU atual 173. Em um exemplo, o primeiro vetor de movimento de estágio pode ser selecionado como um candidato de modo de fusão dentre todos os outros candidatos de modo de fusão, que pode ou não incluir um candidato similar ao candidato de TMVP em HEVC. Em outro exemplo, o primeiro vetor de movimento de estágio pode ser selecionado como um candidato de modo de AMVP dentre todos os outros candidatos de modo de AMVP e refinados. Nesse exemplo, quando uma sub-PU se depara com um vetor de movimento indisponível para cada direção de predição, um vetor de movimento representativo pode ser usado.
[0172] Aplicável à codificação de camada única e TMVP de sub-PU, o codificador de vídeo 20 ou decodificador de vídeo 30 pode determinar dados de aperfeiçoamento de movimento, por exemplo, uma diferença de vetor de movimento, para uma PU ou CU que é sinalizada com os índices de preditor de movimento para as litas de candidato de MV. Em um exemplo, para cada direção de predição, uma única diferença de vetor de movimento pode ser determinada, e é aplicável a todos os vetores de movimento das sub-PUs ou PUs. Em outro exemplo, para cada direção de predição, diferenças de vetor de movimento separadas podem ser determinadas para cada uma das sub-PUs ou PUs. Além disso, para cada componente horizontal ou vertical, os valores de diferença de vetor de movimento podem ser transformados e os coeficientes transformados resultantes podem ser adicionalmente quantizados ou truncados e codificados de modo similar aos resíduos de pixel em codecs de vídeo.
[0173] Em outro exemplo, similar à HEVC, os dados de aperfeiçoamento de movimento para vetores de movimento de sub-PU podem ser transmitidos do codificador de vídeo 20 para o decodificador de vídeo 30 quando um candidato de MV de sub-PU é adicionado a uma lista de candidato de modo de AMVP e não adicionado a uma lista de candidato de modo de fusão. Em um exemplo alternativo, um candidato de MV de sub-PU pode se aplicar apenas se os valores de índice de referência associados a todos os vetores de movimento das sub-PUs ou PUs forem os mesmos. Em outro exemplo alternativo, um candidato de MV de sub-PU pode sempre se aplicar e os valores de índice de referência associados a todos os vetores de movimento das sub-PUs são explicitamente transmitidos. Além disso, se a quantização ou transformada dos valores de diferença de vetor de movimento se aplicar, os vetores de movimento podem ser dimensionados em direção a uma figuração de referência fixada. Após as diferenças de vetor de movimento serem coletas, as diferenças são adicionadas aos vetores de movimento dimensionados. Posteriormente, os vetores de movimento são dimensionados novamente em direção a suas respectivas figurações de referência diferentes identificadas pelos valores de índice de referência diferentes das sub-PUs ou PUs.
[0174] A seção seguinte fornece detalhes de implantação exemplificativos em relação ao modo de TMVP avançado, descrito acima, para facilidades nas quais os valores de índice de referência associados aos vetores de movimento das sub-PUs ou PUs são diferentes. A identificação do primeiro vetor de movimento de estágio será discutida primeiro. O primeiro vetor de movimento de estágio é convertido a partir dos blocos próximos espaciais da PU atual, que contêm vetores de movimento temporais. Os blocos próximos espaciais pertencem àqueles usados para predição de vetor de movimento típica, por exemplo, os blocos usados em AMVP e fusão para HEVC.
[0175] Quando os blocos próximos espaciais têm vetores de movimento de candidato que são associados aos valores de índice de referência diferentes, um dos processos de decisão a seguir é aplicado para decidir qual índice de referência é usado para identificar a figuração de referência a partir da qual são determinadas as informações de movimento de nível de sub-PU.
[0176] 1. Os blocos com um valor de índice de referência menor são escolhidos. Dentre os mesmos, aquele que é acessado antes é escolhido para retornar o vetor de movimento temporal para ser o "primeiro vetor de estágio". Assume-se que os blocos são acessados em uma certa ordem com base nas localizações espaciais relativas dos blocos.
[0177] 2. Os blocos com um valor de índice de referência menor são escolhidos. Os vetores de movimento desses blocos são ponderados (se mais de um) para serem o "primeiro vetor de estágio", de modo alternativo, uma operação de meio pode ser usada.
[0178] 3. O índice de referência com uma frequência maior dentre os índices de referência dos blocos próximos é escolhido. Dentre os blocos que têm aquele índice de referência, ou o vetor de movimento que é acessado primeiro é escolhido ou a média (por exemplo, meio) dos vetores de movimento é usada para ser o "primeiro vetor de estágio". De modo alternativo, outras funções matemáticas podem ser aplicadas para obter o primeiro vetor de movimento de estágio.
[0179] 4. O índice de referência com uma distância de POC mais próxima à figuração atual é escolhido. Dentre os blocos que têm aquele índice de referência, ou o vetor de movimento que é acessado primeiro é escolhido ou uma média (por exemplo, meio ou outra função matemática) dos vetores de movimento é usada para ser o "primeiro vetor de estágio".
[0180] 5. Um índice de referência primário é sinalizado no cabeçalho de fatia e blocos com um índice de referência igual ao índice de referência primário são escolhidos para produzir o "primeiro vetor de estágio", com métodos similares àqueles descritos acima. Quando nenhum bloco tem um índice de referência igual ao índice de referência primário, os métodos descritos acima para escolher o índice de referência podem ser usados.
[0181] 6. Visto que a figuração usada para TMVP é tipicamente fixada para cada fatia, como em AVC e HEVC, o índice de referência primário pode ser o mesmo que o índice de referência que indica a TMVP.
[0182] 7. O índice de referência acima poderia ser um índice ou para RefPicList0 ou para RefPicList1. De modo alternativo, uma união de lista de figuração de referência (RefPicListU) pode ser gerada por RefPicList0 e RefPicList1 e o índice de referência pode ser o índice para a RefPicListU. Verifique que qualquer figuração identificada por RefPicListU pertence ou à RefPicList0 ou à RefPicList1 ou a ambas e não há figuração que pertença à RefPicListU, mas não em RefPicList0 ou RefPicList1. A RefPicListU não tem duas figurações idênticas. De modo alternativo e, além disso, RefPicListU pode conter apenas figurações de referência temporais dentro da mesma camada ou marcadas como figurações de curto prazo.
[0183] 8. De modo alternativo, o índice de referência e o "primeiro vetor de estágio" pode ser selecionado dentre os candidatos de modo de fusão.
[0184] a. Em um exemplo, o índice de referência e o "primeiro vetor de estágio" são selecionados dentre um candidato de modo de fusão espacial derivado de uma posição de bloco relativa, por exemplo, bloco esquerdo próximo.
[0185] b. De modo alternativo, o índice de referência e o "primeiro vetor de estágio" pode ser selecionado a partir do primeiro candidato disponível na lista de candidato de modo de fusão.
[0186] c. Além disso, quando o candidato de fusão selecionado usa bipredição, o vetor de movimento e o índice de referência podem ser selecionados a partir de um dentre os conjuntos fundidos de informações de movimento.
[0187] Quando um índice de referência e a "primeiro vetor de estágio" são identificados, a figuração de referência que é usada para determinar as informações de movimento de sub-PU é identificada, bem como a região na figuração de referência que corresponde à PU atual. Em um caso, um índice de referência pode indicar uma figuração de referência que é diferente da figuração a ser usada para TMVP devido a, por exemplo, em que o índice de referência é derivado e a figuração usada para TMVP é explicitamente sinalizada. Nesse caso, o índice de referência pode ser alterado para identificar a figuração usada para TMVP e o vetor de movimento pode ser dimensionado em direção à figuração usada para TMVP com base em distâncias de POC.
[0188] Na descrição acima, a identificação do "primeiro vetor de estágio" utiliza apenas blocos próximos espaciais. De modo alternativo, blocos próximos temporais podem ser usados para identificar o "primeiro vetor de estágio", no qual as posições dos blocos próximos temporais são similares aos blocos usados em NBDV. Tais posições incluem uma posição central da PU atual ou uma posição direita de fundo da PU atual, em que cada uma está localizada em uma figuração de referência identificada.
[0189] A geração de movimento de sub-PU para TMVP será agora discutida. Cada sub-PU de uma PU atual pode localizar uma sub-PU correspondente dentro do bloco correspondente da figuração de referência identificada pelo "primeiro vetor de estágio". Um conjunto de informações de movimento derivado das informações de movimento dentro da sub-PU correspondente da figuração de referência é gerado para cada uma das sub-PUs na PU atual, similar à predição de movimento intervistas de nível de sub-PU descrita acima. Se as informações de movimento das sub-PUs correspondentes estiverem indisponíveis, o "primeiro vetor de estágio" pode ser usado para as sub-PUs da PU atual como um substituto. Visto que cada sub-PU pode ter um índice de referência diferente para cada direção de predição, diversas técnicas são propostas para a escalonagem dos vetores de movimento para uma figuração de referência alvo para cada lista de figuração de referência.
[0190] Conforme ilustrado na Figura 14B, a figuração de referência 183 identificada pelo vetor de movimento 186 dentro da sub-PU correspondente 185 da figuração de referência de fonte de movimento 182 é PicOri, a figuração de referência (isto é, figuração de fonte de movimento) 182 que contém a sub-PU correspondente 185 é PicT, a figuração atual 180 é PicCur e a figuração de referência de alvo 184 é PicTarg. Assume-se para propósitos de discussão que o vetor de movimento 186 é MV e o vetor de movimento dimensionado é MV', isto é, o preditor de vetor de movimento 188 para predizer uma sub-PU de PU 181 na figuração atual 180. Verifique que quando um vetor de movimento temporal 187 identificado no primeiro estágio do modo de TMVP avançado é associado a uma figuração de referência que não é a figuração a partir da qual as informações de movimento de sub-PU são derivadas, a escalonagem de vetores de movimento com base em distância de POC também pode ser possível.
[0191] 1. Escalonar o vetor de movimento em direção a um índice de referência fixado da figuração atual: MV’= MV * (POC(PicTarg)-POC(PicCur))/(POC(PicOri)- POC(PicT)), em que a função POC() retorna o valor de POC de uma certa figuração. Verifique que as operações de multiplicação e desvio acima podem ser simplificadas de uma maneira similar como em TMVP de HEVC.
[0192] a. O índice de referência fixado pode ser o mesmo para a fatia inteira, por exemplo, o mesmo pode ser definido igual a 0, como em HEVC.
[0193] b. O índice de referência fixado pode ser derivado dos blocos próximos espaciais.
[0194] 2. Escalonar o vetor de movimento sempre em direção à figuração de referência da sub-PU correspondente, que é PicOri: MV' = MV * (POC(PicOri)- POC(PicCur))/(POC(PicOri)-POC(PicT)).
[0195] 3. Escalonar o vetor de movimento sempre em direção à figuração colocalizada, que é PicT: MV' = MV * (POC(PicT)-POC(PicCur))/(POC(PicOri)-POC(PicT)).
[0196] Conforme indicado acima, a figuração de referência de alvo de cada lista de figuração de referência é definida para a figuração de referência que tem um índice de referência igual a 0 na lista de figuração de referência. Em outro exemplo, a figuração de referência de alvo de cada lista de figuração de referência é definida para a mesma figuração de referência identificada junto com o "primeiro vetor de estágio", conforme descrito acima. A operação da TMVP avançada para predição de vetor de movimento de nível de sub-PU é descrita em maiores detalhes abaixo em relação à Figura 19.
[0197] Em relação à terceira questão descrita acima, esta revelação descreve técnicas relacionadas aos processos de filtro de desbloqueio aplicados às CUs de um bloco de vídeo que inclui pelo menos uma PU com múltiplas sub-PUs. As técnicas desta revelação habilitam sublimites de PU a serem desbloqueados mediante a conversão das sub-PUs para uma estrutura não prejudicial de desbloqueio de modo que os filtros de desbloqueio de HEVC possam continuar a ser usados para blocos de 3D-HEVC. Dessa maneira, a entrada para o filtro de desbloqueio pode se alterar para habilitar a filtragem dos artefatos robustos junto com os limites de sub-PUs enquanto mantém o filtro de desbloqueio inalterado. Nesta revelação, uma CU que é pelo menos parcialmente codificada com sub-PUs é chamada de uma CU avançada e uma PU codificada com sub-PUs dentro de uma CU avançada codificada se refere a uma PU avançada. Outras PUs na CU avançada, se houver, são chamadas de PUs normais.
[0198] Diversas técnicas são descritas nesta revelação para introduzir as bordas para as sub-PUs para o filtro de desbloqueio a fim de eliminar os artefatos junto com os sublimites de PU. Um processo de conversão de sub- PU, conforme descrito nesta revelação, pode ser introduzido em 3D-HEVC logo antes de um processo de filtragem de desbloqueio, isto é, após a reconstrução de um bloco de vídeo para armazenamento como uma figuração de referência, mas antes de armazenar de fato o bloco de vídeo reconstruído em um armazenamento temporário de figuração decodificada de codificador de vídeo 20 e/ou decodificador de vídeo 30.
[0199] Em um primeiro exemplo, logo antes de aplicar um filtro de desbloqueio à CU que inclui PUs com sub-PUs, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para converter cada PU que utiliza o projeto de sub-PU em uma ou mais árvores de codificação de modo que cada uma das sub-PUs possa se tornar uma PU nas unidades de codificação que são os nós das árvores de codificação. Nesse exemplo, os limites de sub-PU são convertidos para os limites de PU artificiais para fins de desbloqueio de filtro. A estrutura de árvore de codificação é preferencialmente compatível ao projeto de sintaxe de HEVC.
[0200] Em outros exemplos, antes de aplicar um filtro de desbloqueio a uma CU do bloco de vídeo que inclui a PU com as sub-PUs, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para, em vez disso, converter a CU a fim de criar limites de PU artificiais ou limites de TU artificiais nos sublimites de PU. Em um exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para converter uma árvore de transformada da CU a fim de associar a PU a uma hierarquia de árvore de transformada e associar cada uma das sub-PUs a uma TU. Nesse exemplo, os limites de sub-PU são convertidos para os limites de TU artificiais para fins de desbloqueio de filtro. Em outro exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode ser configurado para converter a CU a uma árvore de codificação a fim de associar a PU a uma CU e associar cada uma das sub-PUs a uma PU. Nesse exemplo, os limites de sub-PU são convertidos para os limites de PU artificiais para fins de desbloqueio de filtro. A estrutura de árvore de codificação é preferencialmente compatível ao projeto de sintaxe de HEVC.
[0201] Em qualquer um dos exemplos acima, após converter os sub-PUs em estruturas favoráveis a desbloqueio, o filtro de desbloqueio pode ser aplicado aos limites de PU entre duas PUs adjacentes da CU e/ou dos limites de TU entre duas TUs adjacentes da CU, incluindo os limites de PU artificiais e os limites de TU artificiais.
[0202] Para o exemplo descrito acima, no qual a árvore de transformada da CU é convertida a fim de associar a PU a uma hierarquia de árvore de transformada e associar cada uma das sub-PUs a uma TU de modo que os limites de sub-PU sejam convertidos para os limites de TU artificiais, um ou mais dentre os seguintes processos de decisões podem ser aplicados.
[0203] 1. Quando a árvore de transformada tiver uma raiz com split_transfonn_flag igual a 1, os nós que correspondem à PU normal (se houver) da CU avançada não são alterados.
[0204] 2. Quando a árvore de transformada tiver uma raiz com split_transform_flag igual a 1, um nó em uma PU avançada é alterado para introduzir uma hierarquia de árvore de transformada conforme o seguinte:
[0205] a. Para o nó atual, se split_transform_flag for 0, e o tamanho de TU for maior que o tamanho de sub-PU, estabelecer split_transform_flag a 1, e para cada dos quatro nós derivados, o seguinte se aplica:
[0206] i. Estabelecer cbf_luma, cbf_cb, e cbf_cr do nó para ser o mesmo que aquele do nó de origem e split_transform_flag igual a 0;
[0207] ii. Estabelecer o nó atual para o nó derivado, e ir para a etapa a.
[0208] b. Para o nó atual, se split_transform_flag for 1, para cada um dentre os quatro nós derivados, o seguinte se aplica: estabelecer o nó atual para o nó derivado, e ir para a etapa a.
[0209] 3. De modo alternativo, quando uma hierarquia de árvore de transformada for introduzida para uma PU e cbf_luma, cbf_cb, e cbf_cr são definidas para um nó dividido recentemente, a cbf_luma, cbf_cb, e cbf_cr do nó são definidas para 0.
[0210] 4. De modo alternativo, quando uma hierarquia de árvore de transformada é introduzida para uma PU e cbf_luma (ou cbf_cb, ou cbf_cr) são definidas para um nó dividido recentemente, a cbf_luma (ou cbf_cb, ou cbf_cr) do nó é definida para qualquer valor de número inteiro positivo diferente de zero (por exemplo, 1) se cbf_luma (ou cbf_cb, ou cbf_cr) for diferente de 0, ou, de outro modo, 0.
[0211] 5. Quando a árvore de transformada tiver uma raiz com split_transform_flag igual a 0, uma PU normal (se houver) é dividida em unidades de transformada, com as seguintes etapas em ordem.
[0212] a. A split_transform_flag da CU é definida primeiro em 1.
[0213] b. Se a divisão da CU for NxN, a PU normal corresponde a um nó. Se a divisão da CU for 2NxN ou Nx2N, a PU normal corresponde a dois nós.
[0214] c. Cada um dos nós acima dentro de uma PU normal é definido para ter split_transform_flag definido a 0 e cbf_luma, cbf_cb, e cbf_cr definido igual a cbf_luma, cbf_eb, e cbf_cr da unidade de transformada original que cobre toda CU avançada.
[0215] d. Para cada uma das PUs avançadas da CU, 1 ou 2 nós que cobrem a região quadrada da PU são primeiro gerados, e, para cada nó, a hierarquia de árvore de transformada é introduzida de modo semelhante à etapa 2, 3 ou 4 acima.
[0216] 6. De modo alternativo à etapa 5 acima, para cada um dos nós acima dentro de uma PU normal, cbf_luma, cbf_cb, e cbf_cr são definidas iguais a 0.
[0217] 7. De modo alternativo à etapa 4 acima, para cada um dos nós acima dentro de uma PU normal, sua cbf_luma (ou cbf_cb ou cbf_cr) é definida igual a qualquer valor de número inteiro positivo diferente de zero (por exemplo, 1) se cbf_luma (ou cbf_cb, ou cbf_cr) é diferente de 0, ou, de outro modo, 0.
[0218] Para o exemplo descrito acima no qual a CU é convertida para uma árvore de codificação a fim de associar a PU a uma CU e associar cada uma das sub-PUs a uma PU de modo que os limites de sub-PU sejam convertidos para os limites de PU artificiais, um ou mais dentre os processos de decisões a seguir podem ser aplicados.
[0219] 1. Após a conversão, a CU avançada atual se tornará a raiz da árvore de codificação, a saber, a raiz convertida, que é uma árvore quadrática que contém pelo menos quatro unidades de codificação.
[0220] 2. Para qualquer PU normal em uma CU avançada, a mesma é definida para ser uma ou mais unidades de codificação.
[0221] 3. Além disso, o valor de CBF de cada um dos componentes das unidades de codificação convertidas convertido a partir das PUs normais em uma CU avançada é adicionalmente definido como 0. Dessa forma, a filtragem dentro de uma PU de interpredição normal é evitada mesmo se a PU tiver sido convertidas em duas CUs.
[0222] a. Para qualquer PU avançada, o valor de CBF da árvore de codificação convertida ou da unidade de codificação que é um nível abaixo da raiz convertida, é definida como diferente de zero se o valor de CBF da CU avançada atual for diferente de zero.
[0223] b. Adicionalmente, para qualquer CU ou PU convertidas ou árvore de codificação dentro de uma PU avançada, se a mesma não tiver originalmente um valor de CBF sinalizado, a mesma é definida para ser a mesma que o valor de CBF do seu nó de origem na árvore quadrática, ou para a mesma situação zero ou situação diferente de zero que o valor de CBF do seu nó de origem na árvore quadrática.
[0224] 4. De modo alternativo, para uma CU avançada, uma única unidade de transformada não pode ser aplicada para toda CU, que significa que se uma PU normal está dentro da CU avançada, a mesma precisa conter uma unidade de transformada que não é compartilhada por outra PU da CU.
[0225] a. De modo alternativo, ou adicionalmente, para cada PU avançada, os nós de folha da árvore de transformada são distribuídos um nível maior que a sub-PU ou mais profundo, que significa que cada uma das quatro sub-PUs dentro de uma CU convertida tem uma única unidade de transformada sinalizada.
[0226] 5. Mais especificamente, se uma CU com tamanho de 2Lx2L contém uma PU que utiliza o projeto de sub-PU, então, a seguinte conversão é realizada para todas as PUs na CU. Um sinalizador de divisão igual a 1 é definido para a CU avançada atual e o seguinte se aplica e o nó atual é definido para ser a CU:
[0227] a. Para cada uma dentre as áreas quadradas de um quarto do nó atual em ordem de varredura de rastreio, o seguinte se aplica:
[0228] i. Estabelecer essa área de um quatro como um nó derivado.
[0229] ii. Se o nó derivado não for codificado com sub-PUs, o mesmo é definido para ser uma unidade de codificação (com sinalizador de divisão igual a 0) com divisão de 2Nx2N.
[0230] 1. De modo alternativo, ou adicionalmente, o valor de CBF de cada componente do nó derivado é definido para ser 0.
[0231] 2. De modo alternativo, ou adicionalmente, o sinalizador de divisão de TU da unidade de codificação é definido para ser 0.
[0232] iii. Além disso, se o nó derivado for codificado com sub-PUs, e contiver mais de 1 sub-PU, um sinalizador de divisão é definido a 1 para o nó derivado (desse modo, considerado como uma árvore de codificação) e o seguinte se aplica:
[0233] 1. Alternativamente, além disso, se o valor de CBF não estiver presente para o nó derivado, o mesmo é definido igual ao valor de CBF do nó atual de nível mais alto (o nó de origem desse nó derivado).
[0234] 2. Estabelecer o nó derivado como o nó atual e ir para a etapa a.
[0235] iv. Além disso, se o nó derivado contém apenas 1 sub-PU, o nó derivado é definido para ser a folha da árvore de codificação, desse modo, uma unidade de codificação (com sinalizador de divisão igual a 0).
[0236] 1. O modo de divisão do nó derivado é definido para ser o modo de divisão da sub-PU
[0237] a. Se o modo de divisão da sub-PU for 2Nx2N, a sub-PU contém um bloco de 2Nx2N e o modo de divisão da unidade de codificação é definido para ser 2Nx2N.
[0238] b. Se o modo de divisão da sub-PU for Nx2N, a sub-PU contém dois blocos de Nx2N e o modo de divisão da unidade de codificação é definida para ser Nx2N.
[0239] c. Se o modo de divisão da sub-PU for 2NxN, a sub-PU contém dois blocos de 2NxN e o modo de divisão da unidade de codificação é definido para ser 2NxN.
[0240] 2. De modo alternativo, ou adicionalmente, se o valor de CBF não estiver presente para o nó derivado, o mesmo é definido igual ao valor de CBF do nó atual de nível mais alto (o nó de origem desse nó derivado).
[0241] 3. De modo alternativo, ou adicionalmente, o sinalizador de divisão de TU da unidade de codificação é definido para ser 0.
[0242] Como outra alternativa para o exemplo descrito acima, no qual a árvore de transformada da CU é convertida a fim de associar a PU a uma hierarquia de árvore de transformada e associar cada uma das sub-PUs a uma TU de modo que os limites de sub-PU sejam convertidos para os limites de TU artificiais, um ou mais dentre os seguintes processos de decisões podem ser aplicados para uma parte de cada sub-PU.
[0243] 1. Quando a árvore de transformada tem uma raiz com split_transform_flag igual a 1, os nós normais que contêm apenas PUs normais (ou parte de PUs normais) da CU avançada não são alteradas.
[0244] 2. Quando a árvore de transformada tem uma raiz com split_transform_flag igual a 1, um nó avançado que contém qualquer sub-PU (ou parte de sub-PU) é alterada para introduzir a hierarquia de árvore de transformada conforme o seguinte:
[0245] a. Para o nó atual, se o mesmo contém qualquer sub-PU (ou parte de sub-PU), e a split_transform_flag for 0, e o tamanho de TU for maior que o tamanho de sub-PU, estabelecer a split_transform_flag a 1, e para cada um dentre os quatro nós derivados, o seguinte se aplica:
[0246] i. Estabelecer a cbf_luma, cbf_cb, e cbf_cr do nó para ser a mesma que aquela do nó de origem e a split_transform_flag igual a 0;
[0247] ii. Estabelecer o nó atual para o nó derivado, e ir para a etapa a.
[0248] b. Para o nó atual, se split_transform_flag for 1, para cada um dentre os quatro nós derivados, o seguinte se aplica: estabelecer o nó atual para o nó derivado, e ir para a etapa a.
[0249] 3. De modo alternativo, quando hierarquia de árvore de transformada for introduzida para um nó e cbf_luma, cbf_cb, e cbf_cr forem definidas para um nó dividido recentemente, a cbf_luma, cbf_cb, e cbf_cr do nó dividido recentemente são definidos para 0.
[0250] 4. De modo alternativo, quando hierarquia de árvore de transformada for introduzida para um nó e cbf_luma, cbf_cb, e cbf_cr forem definidas para um nó dividido recentemente, a cbf_luma (ou cbf_cb, ou cbf_cr) do nó dividido recentemente é definido para qualquer valor de número inteiro positivo diferente de zero (por exemplo, 1) se cbf_luma (ou cbf_cb, ou cbf_cr) for diferente de 0, ou, de outro modo, 0.
[0251] 5. Quando a árvore de transformada tiver uma raiz com split_transform_flag igual a 0, um nó normal que contém apenas PUs normais (ou parte de PUs normais) deve ser dividido em unidades de transformada, com as seguintes etapas em ordem.
[0252] a. A split_transform_flag da CU é definida primeiro a 1.
[0253] b. Se a divisão da CU for NxN, a PU normal corresponde a um nó normal. Se a divisão da CU for 2NxN ou Nx2N, a PU normal corresponde a dois nós normais. Se a divisão da CU for 2NxnU, 2NxnD, nLx2N ou nRx2N, a PU normal corresponde a 0 ou 2 nós normais.
[0254] c. Cada um dos nós normais acima é definido para ter split_transform_flag definida igual a 0 e cbf_luma, cbf_cb, e cbf_cr definida igual a cbf_luma, cbf_cb, e cbf_cr da unidade de transformada original que cobre toda CU avançada.
[0255] d. Para cada um dos nós avançados que contêm qualquer sub-PU (ou parte de sub-PU) da CU, a hierarquia de árvore de transformada é introduzida de modo semelhante à etapa 2, 3 ou 4 acima.
[0256] 6. De modo alternativo à etapa 5 acima, para cada um dos nós normais acima, cbf_luma, cbf_cb e cbf_cr são definidas iguais a 0.
[0257] 7. De modo alternativo à etapa 4 acima, para cada um dos nós normais acima, sua cbf_luma (ou cbf_cb ou cbf_cr) é definida igual a qualquer valor de número inteiro positivo diferente de zero (por exemplo, 1) se cbf_luma (ou cbf_cb, ou cbf_cr) for diferente de 0, ou, de outro modo, 0.
[0258] Alguns detalhes de implantação exemplificativa são fornecidos abaixo. O texto abaixo indica as modificações propostas ao 3D-HEVC WD1 para implantação de parte das técnicas descritas nessa revelação.
PROCESSO DE DECODIFICAÇÃO H.8.1 PROCESSO DE DECODIFICAÇÃO GERAL
[0259] 3. Os processos nas subcláusulas 8.4, 8.5, 8.6, 8.7 e 8.8 especificam os processos de decodificação com o uso de elementos de sintaxe em todas as camadas de estrutura de sintaxe, é uma exigência de conformidade de fluxo de bits que as fatias codificadas da figuração contenham dados de segmento de fatia para cada unidade de árvore de codificação da figuração, de modo que a divisão da figuração em fatias, a divisão das fatias em segmentos de fatia, e a divisão dos segmentos de fatia em unidades de codificação de árvore formam, cada um, um divisão da figuração.
H.8.5.3.3.2 PROCESSO DE SELEÇÃO DE FIGURAÇÃO DE REFERÊNCIA
[0260] A entrada a esse processo é um índice de referência refldxLX.
[0261] A saída desse processo é uma figuração de referência que consiste de uma matriz bidimensional de amostras de luma refPicLXL e duas matrizes bidimensionais de amostras de croma refPicLXCb e refPicLXCr.
[0262] A figuração de referência de saída RefPiclistX[refldxLX] consiste de uma pic_width_in_luma_samples por matriz de pic_height_in_luma_samples de amostras de luma refPicLXL e duas PicWidthlnSamplesC por matrizes de PicHeightlnSamplesC de amostras de croma refPicLXCb e refPicLXCr.
[0263] As matrizes de amostra de figuração de referência refPicLXL, refPicLXCb, e refPicLXCr corresponde às amostras de amostra decodificadas SL, SCb, e SCr derivadas através da subcláusula 8.7 e subcláusula 8.8 para uma figuração decodificada anteriormente.
H.8.7 PROCESSO DE MODIFICAÇÃO DE ÁRVORE DE TRANSFORMADA H.8.7.1 GERAL
[0264] As entradas a esse processo são: matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de divisão de unidade de codificação PartMode, sinalizador de divisão de árvore de transformada split_transform_flag, matriz de sinalizador de unidade de subpredição de unidade de codificação subPuFlag, tamanho de unidade de sub predição subPuSize. As saídas desse processo são a matriz de sinalizador de divisão modificada de árvore de transformada split_transform_flag.
[0265] Para cada unidade de codificação, se a mesma é codificada no modo de interpredição e contém unidade de predição que utiliza o projeto de unidade de subpredição, o sinalizador de divisão de árvore de transformada é modificada para fazer com que o limite de unidade de subpredição seja o limite de unidade de transformada:
[0266] - O processo de modificação de árvore de transformada especificado na subcláusula 8.7.2 é invocado com a localização de luma (xCb, yCb), a localização de luma (xB0, yB0) definida igual a (0, 0), o tamanho de bloco de codificação de luma nCbS definido igual a (1 « Log2MaxCbSize), profundidade de árvore de codificação cuDepth definida igual a 0, a matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de divisão de unidade de codificação PartMode, a matriz de sinalizador de divisão de árvore de transformada split_transform_flag, a matriz de sinalizador de unidade de subpredição subPuFlag e o tamanho de unidade de subpredição subPuSize como entradas, e a matriz de sinalizador de divisão modificada de árvore de transformada split_transform_flag como saída.
H.8.7.2 PROCESSO DE MODIFICAÇÃO DE ÁRVORE DE TRANSFORMADA DE UNIDADE DE CODIFICAÇÃO QUE CONTÉM UNIDADE DE SUBPREDIÇÃO
[0267] As entradas a esse processo são:
[0268] - uma localização de luma (xCb, yCb) que especifica a amostra de topo do lado esquerdo do bloco de codificação de luma atual em relação à amostra de luma de topo do lado esquerdo da figuração atual,
[0269] - uma localização de luma (xB0, yB0) que especifica a amostra de topo do lado esquerdo do bloco de luma atual em relação à amostra de topo do lado esquerdo do bloco de codificação de luma atual,
[0270] - tamanho de bloco de codificação de luma nCbS,
[0271] - uma variável que especifica a profundidade de árvore de codificação cuDepth,
[0272] - matriz de sinalizador de divisão de árvore de codificação split_cu_flag,
[0273] - matriz de sinalizador de divisão de árvore de transformada split_transform_flag,
[0274] - matriz de sinalizador de unidade de subpredição subPuFlag,
[0275] - tamanho de unidade de subpredição subPuSize,
[0276] A saída desse processo é a modificação de:
[0277] - matriz de sinalizador de divisão de árvore de transformada split_transform_flag,
[0278] Dependendo do valor de split_cu_flag[xCb + xB0][yCb + yB0][cuDepth], o seguinte se aplica:
[0279] - Se split_cu_flag[xCb + xB0][yCb + yB0][cuDepth] for igual a 1, as seguintes etapas ordenadas se aplicam:
[0280] 1. - As variáveis xB1 e yB1 são derivadas conforme o seguinte:
[0281] - A variável xB1 é definida igual a xB0 + (nCbS >> 1).
[0282] - A variável yB1 é definida igual a yB0 + (nCbS >> 1).
[0283] 2. O processo de modificação de árvore de transformada conforme especificado nessa subcláusula é invocado com a localização de luma (xCb, yCb), a localização de luma (xB0, yB0), tamanho de bloco de codificação de luma nCbS definido igual a (nCbS >> 1), profundidade de árvore de codificação cuDepth definida igual a cuDepth + 1, matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de divisão de unidade de codificação PartMode, matriz de sinalizador de divisão de árvore de transformada split_transform_flag, matriz de sinalizador de unidade de subpredição subPuFlag, tamanho de unidade de subpredição subPuSize, como entradas, e a matriz de sinalizador de divisão modificada de árvore de transformada split_transform_flag como saída.
[0284] 3. O processo de modificação de árvore de transformada conforme especificado nessa subcláusula é invocado com a localização de luma (xCb, yCb), a localização de luma (xB1, yB0), o tamanho de bloco de codificação de luma nCbS definido igual a (nCbS >> 1), profundidade de árvore de codificação cuDepth definida igual a cuDepth + 1, matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de divisão de unidade de codificação PartMode, matriz de sinalizador de divisão de árvore de transformada split_transform_flag, matriz de sinalizador de unidade de subpredição subPuFlag, tamanho de unidade de subpredição subPuSize, como entradas, e a matriz de sinalizador de divisão modificada de árvore de transformada split_transform_flag como saída.
[0285] 4. O processo de modificação de árvore de transformada conforme especificado nessa subcláusula é invocado com a localização de luma (xCb, yCb), a localização de luma (xB0, yB1), o tamanho de bloco de codificação de luma nCbS definido igual a (nCbS >> 1), profundidade de árvore de codificação cuDepth definida igual a cuDepth + 1, matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de divisão de unidade de codificação PartMode, matriz de sinalizador de divisão de árvore de transformada split_transform_flag, matriz de sinalizador de unidade de subpredição subPuFlag, tamanho de unidade de subpredição subPuSize, como entradas, e a matriz de sinalizador de divisão modificada de árvore de transformada split_transform_flag como saída.
[0286] 5. O processo de modificação de árvore de transformada conforme especificado nessa subcláusula é invocado com a localização de luma (xCb, yCb), a localização de luma (xB1, yB1), tamanho de bloco de codificação de luma nCbS definido igual a (nCbS >> 1), profundidade de árvore de codificação cuDepth definida igual a cuDepth + 1, matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de divisão de unidade de codificação PartMode, matriz de sinalizador de divisão de árvore de transformada split_transform_flag, matriz de sinalizador de unidade de subpredição subPuFlag, tamanho de unidade de subpredição subPuSize, como entradas, e a matriz de sinalizador de divisão modificada de árvore de transformada split_transform_flag como saída.
[0287] - De outro modo, (split_cu_flag[xCb+xB0] [yCb+yB0][cuDepth] é igual a 0), se nCbS for maior que subPUSize, as seguintes etapas ordenadas se aplicam:
[0288] 1. - As variáveis xB1 e yB1 são derivadas conforme o seguinte:
[0289] - A variável xB1 é definida igual a xB0 + (nCbS >> 1).
[0290] - A variável yB1 é definida igual a yB0 + (nCbS >> 1).
[0291] 2. Derivar variável subPuDeblockingFlag seguindo as etapas em ordem:
[0292] - subPuDeblockingFlag é definida igual a 0.
[0293] - Se subPuFlag [xCb + xB0][yCb + yB0] for igual a 1, subPuDeblockingFlag é definida igual a 1.
[0294] - Se subPuFlag [xCb + xB1][yCb + yB0] for igual a 1, subPuDeblockingFlag é definida igual a 1.
[0295] - Se subPuFlag [xCb + xB0] [yCb + yB1] for igual a 1, subPuDeblockingFlag é definido igual a 1.
[0296] - Se subPuFlag [xCb + xB1] [yCb + yB1] for igual a 1, subPuDeblockingFlag é definido igual a 1.
[0297] - Se PartMode[xCb + xB0][yCb + yB0] for igual a PART_nLx2N, ou
[0298] PartMode[xCb + xB0][yCb + yB0] é igual a PART_nRx2N, ou PartMode[xCb + xB0][yCb + yB0] é igual a PART_2NxnU, ou PartMode[xCb + xB0][yCb + yB0] é igual a PART_2NxnD, subPuDeblockingFlag for definido igual a 0.
[0299] 3. Se subPuDeblockingFlag for igual a 1, as seguintes etapas ordenadas se aplicam:
[0300] - se split_transform_flag[xCb + xB0][yCb + yB0] [cuDepth] for igual a 0, definir split_transform_flag[xCb + xB0][yCb + yB0][cuDepth] como igual a 1.
[0301] - O processo de modificação de árvore de transformada especificado na subcláusula 8.7.3 é invocado com a localização de luma (xCb, yCb), a localização de luma (xB0, yB0), a profundidade de árvore de codificação cuDepth, o bloco tamanho nCbS, a matriz de sinalizador de divisão de árvore de transformada split_transform_flag, a matriz de sinalizador de unidade de subpredição de unidade de predição subPuFlag, a matriz de tamanho de unidade de subpredição de unidade de predição subPuSize como entradas, e a matriz de sinalizador de divisão modificada de árvore de codificação split_transform_flag como saída.
H.8.7.3 PROCESSO DE MODIFICAÇÃO DE ÁRVORE DE TRANSFORMADA DE CODIFICAÇÃO DE LUMA DE BLOCO
[0302] As entradas nesse processo são:
[0303] - uma localização de luma (xCb, yCb) que especifica a amostra de topo do lado esquerdo do bloco de predição de luma atual em relação à amostra de luma de topo do lado esquerdo da figuração atual,
[0304] - uma localização de luma (xB0, yB0) que especifica a amostra de topo do lado esquerdo do bloco de luma atual em relação à amostra de topo do lado esquerdo do bloco de codificação de luma atual,
[0305] - variáveis que especificam tamanho de bloco nCbS,
[0306] - uma variável que especifica a profundidade de árvore de transformada trafoDepth,
[0307] - matriz de sinalizador de divisão de árvore de transformada split_transform_flag,
[0308] - matriz de sinalizador de unidade de subpredição subPuFlag,
[0309] - tamanho de unidade de subpredição subPuSize,
[0310] A saída desse processo é a modificação de:
[0311] - matriz de sinalizador de divisão de árvore de transformada split_transform_flag,
[0312] Se nCbS for maior que subPUSize, as seguintes etapas ordenadas se aplicam.
[0313] - As variáveis xB1 e yB1 são derivadas conforme o seguinte:
[0314] - A variável xB1 é definida igual a xB0 + (nCbS >> 1).
[0315] - A variável yB1 é definida igual a yB0 + (nCbS >> 1).
[0316] - Para x em xB0, xB1
[0317] - Para y em yB0, yB1
[0318] - se subPuFlag[xCb + x][yCb + y] for igual a 1
[0319] - se split_transform_flag[xCb + x][yCb + y] [trafoDepth + 1] for igual a 0
[0320] estabelecer split_transform_flag[xCb + x][yCb + y][trafoDepth + 1] para ser igual a 1.
[0321] - O processo de modificação de árvore de transformada especificado nessa subcláusula é invocado com a localização de luma (xCb, yCb), a localização de luma (xCb + x, yCb + y), a profundidade de árvore de transformada trafoDepth é definida igual a trafoDepth + 1, o tamanho de bloco nCbS é definido igual a (nCbS >> 1), a matriz de sinalizador de divisão de árvore de transformada split_transform_flag, a matriz de sinalizador de unidade de subpredição subPuFlag, o tamanho de unidade de subpredição subPuSize como entradas, e a matriz de sinalizador de divisão modificada de árvore de codificação split_transform_flag como saída.
[0322] - de outro modo, (se split_transform_flag[xCb + x][yCb + y][trafoDepth + 1] for igual a 1),
[0323] - O processo de modificação de árvore de transformada especificado nessa subcláusula é invocado com a localização de luma (xCb, yCb), a localização de luma (xCb + x, yCb + y), a profundidade de árvore de transformada trafoDepth é definida igual a trafoDepth + 1, o tamanho de bloco nCbS é definido igual a (nCbS >> 1), a matriz de sinalizador de divisão de árvore de transformada split_transform_flag, a matriz de sinalizador de unidade de subpredição subPuFlag, o tamanho de unidade de subpredição subPuSize como entradas, e a matriz de sinalizador de divisão modificada de árvore de codificação split_transform_flag como saída.
H.8.8 PROCESSO DE FILTRO EM CIRCUITO
[0324] A Figura 15 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20 que pode ser configurado para implantar as técnicas dessa revelação. O codificador de vídeo 20 pode realizar a intra e a intercodificado (incluindo a codificação de intervistas) de blocos de vídeo dentro de fatias de vídeo, por exemplo, fatias tanto de imagens de textura quanto de mapas de profundidade. As informações de textura geralmente incluem informações de luminância (brilho ou intensidade) e de crominância (cor, por exemplo, matizes vermelhas e matizes azuis). Em alguns exemplos, o codificador de vídeo 20 pode determinar modos de codificação relativos às fatias de luminância, e reusar as informações de predição da codificação das informações de luminância para codificar informações de crominância (por exemplo, reutilizando-se as informações de divisão, seleções de modo de intrapredição, vetores de movimento ou similares). A intracodificação tem base na predição espacial para reduzir ou remover a redundância espacial no vídeo dentro de um quadro de vídeo ou figuração dados. A intercodificação tem base na predição temporal para reduzir ou remover a redundância temporal no vídeo dentro de quadros ou figurações adjacentes de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer um dentre vários modos de codificação com base em espaço. Os intermodos, como predição monodirecional (modo P) ou bipredição (modo B), podem se referir a qualquer um dentre vários modos de codificação com base em tempo.
[0325] Conforme mostrado na Figura 15, codificador de vídeo 20 recebe um bloco atual de vídeo (isto é, um bloco de dados de vídeo, como um bloco de luminância, um bloco de crominância ou um bloco de profundidade) dentro de um quadro de vídeo (por exemplo, uma imagem de textura ou um mapa de profundidade) a ser codificado. No exemplo da Figura 15, codificador de vídeo 20 inclui a unidade de seleção de modo 40, a memória de dados de vídeo 41, o armazenamento temporário de figuração decodificada 64, o somador 50, a unidade de processamento de transformada 52, a unidade de quantização 54, a unidade de filtro 63 e a unidade de codificação por entropia 56. A unidade de filtro 63 pode aplicar um processo de filtro de desbloqueio conforme descrito nessa revelação. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, a unidade de estimativa de movimento 42, a unidade de processamento de intrapredição 46 e a unidade de divisão 48. Para a reconstrução de bloco de vídeo, o codificador de vídeo 20 também pode incluir a unidade de quantização inversa 58, a unidade de processamento de transformada inversa 60 e o somador 62. A unidade filtro 63 pode incluir um filtro de desbloqueio e um filtro SAO para filtrar os limites de bloco para remover os artefatos de bloqueio do vídeo reconstruído. Filtros adicionais (em circuito ou pós-circuito) também podem ser usados adicionalmente ao filtro de desbloqueio. Tais filtros não são mostrados para propósitos de brevidade, mas caso desejado, podem filtrar o resultado do somador 50 (como um filtro em circuito).
[0326] A memória de dados de vídeo 41 pode armazenar dados de vídeo a serem codificados pelos componentes de codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 41 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O armazenamento temporário de figuração decodificada 64 pode ser uma memória de figuração de referência que armazena dados de vídeo de referência para uso em dados de vídeo de codificação pelo codificador de vídeo 20, por exemplo, em modos de intra ou intercodificado. A memória de dados de vídeo 41 e o armazenamento temporário de figuração decodificada 64 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 41 e o armazenamento temporário de figuração decodificada 64 podem ser fornecidos pelo menos dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 41 pode ser no chip com outros componentes de codificador de vídeo 20, ou fora do chip em relação àqueles componentes.
[0327] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo a ser codificado. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo. A unidade de estimativa de movimento 42 e a unidade de compensação de modo 44 realizam 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 fornecer predição temporal. A unidade de processamento de intrapredições 46 pode realizar de modo alternativo a codificação intrapreditiva do bloco de vídeo recebido em relação a um ou mais blocos próximos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer predição espacial. O codificador de vídeo 20 pode realizar múltiplos passos de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0328] Além do mais, a unidade de divisão 48 pode dividir blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de divisão anteriores em passos de codificação anteriores. Por exemplo, a unidade de divisão 48 pode dividir inicialmente 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 de distorção de taxa). A unidade de seleção de modo 40 pode produzir adicionalmente uma estrutura de dados de árvore quadrática que indica a divisão de uma LCU em sub-CUs. As CUs de nó-folha da árvore quadrática podem incluir uma ou mais PUs e uma ou mais TUs.
[0329] 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 para o somador 50 para gerar dados de bloco residuais e para o somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores intramodo, informações de divisão e outras tais informações de sintaxe, para a unidade de codificação por entropia 56.
[0330] A unidade de estimativa de movimento 42 e a unidade de compensação de modo 44 podem ser altamente integradas, mas são ilustradas separadamente para propósitos de conceito. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estima o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de um PU de um bloco de vídeo dentro de um quadro ou figuração de vídeo atual em relação a um bloco de predição dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual que está codificado dentro do quadro atual (ou outra unidade codificada).
[0331] Um bloco de predição é um bloco que se encontra em correspondência muito próxima ao bloco a ser codificado, em termos de diferença de pixels, que pode ser determinado pelo somatório da diferença absoluta (SAD), somatório da diferença quadrada (SSD) ou outras medidas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel sub inteiro de figurações de referência armazenadas na memória temporária de figuração decodificada 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições fracionadas de pixel da figuração de referência. Portanto, a unidade de estimativa de movimento 42 pode realizar uma busca de movimento em relação a todas as posições de pixel e posições fracionadas de pixel e emitir um vetor de movimento com precisão fracionada de pixel.
[0332] 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 pela comparação da posição da PU em relação à posição de um bloco de predição de uma figuração de referência. A figuração de referência pode ser selecionada a partir de uma primeira lista de figuração de referência (Lista 0) ou uma segunda lista de figuração de referência (Lista 1), cada uma das quais identifica uma ou mais figurações de referência armazenadas na memória temporária de figuração decodificada 64. As listas de figuração de referência podem ser construídas com o uso das técnicas desta revelação. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e a unidade de compensação de modo 44.
[0333] A compensação de movimento, realizada pela unidade de compensação de modo 44, pode envolver obter ou gerar o bloco de predição 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 modo 44 podem ser integradas de modo funcional, em alguns exemplos. Mediante o recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de modo 44 pode localizar o bloco de predição ao qual o vetor de movimento aponta em uma das listas de figurações de referência. O somador 50 forma um bloco de vídeo residual subtraindo-se valores de pixel do bloco de predição dos valores de pixel do bloco de vídeo atual que está codificado, o que forma a diferença de valores de pixels, conforme discutido abaixo. Em geral, a unidade de estimativa de movimento 42 realiza a estimativa de movimento em relação a componentes de luma, e a unidade de compensação de modo 44 usa vetores de movimento calculados com base nos componentes de luma tanto para os componentes de croma quanto para os componentes de luma. Dessa maneira, a compensação de movimento unidade 44 pode usar novamente informações de movimento determinadas para componentes de luma para codificar componentes de croma de modo que a unidade de estimativa de movimento 42 não precise realizar uma pesquisa de movimento para os componentes de croma. 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.
[0334] A unidade de intrapredição 46 pode intrapredizer ou calcular um bloco atual, como uma alternativa à interpredição realizada pela unidade de estimativa de movimento 42 e a unidade de compensação de modo 44, conforme descrito acima. Em particular, a unidade de processamento de intrapredição 46 pode determinar um modo de intrapredição a ser usado para codificar um bloco atual. Em alguns exemplos, a unidade de processamento de intrapredição 46 pode codificar um bloco atual com o uso de vários modos intrapredições, por exemplo, durante passos de codificação separados, e a unidade de processamento de intrapredição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intrapredição apropriado para o uso a partir dos modos testados.
[0335] Por exemplo, a unidade de intrapredição 46 pode calcular valores de distorção de taxa com o uso de uma análise de distorção de taxa para os vários modos de intrapredição testados, e selecionar o modo de intrapredição que tem as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original não codificado que foi codificado para produzir o bloco codificado, assim como uma taxa de bits (ou seja, vários bits) usados para produzir o bloco codificado. A unidade de processamento de intrapredição 46 pode calcular razões a partir de distorções e taxas para os vários blocos codificados para determinar qual modo de intrapredição exibe o melhor valor de distorção de taxa para o bloco.
[0336] Após selecionar um modo de intrapredição para um bloco, a unidade de processamento de intrapredição 46 pode fornecer informações que indicam o modo de intrapredição selecionado para o bloco em relação à unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar as informações que indicam o modo de intrapredição selecionado. O codificador de vídeo 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, que podem incluir uma pluralidade de tabelas de índices de modo de intrapredição e uma pluralidade de tabelas de índices de modo de intrapredição modificados (também referidas como tabelas de mapeamento de palavras-código), as definições de codificação de contextos para vários blocos, e indicações de um modo de intrapredição mais provável, uma tabela de índices de modo de intrapredição e uma tabela de índices de modo de intrapredição modificados para usar para cada um dos contextos.
[0337] O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo-se os dados de predição da unidade de seleção de modo 40 a partir do bloco de vídeo original que está codificado. O somador 50 representa o componente ou os componentes que realizam essa operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente similar, ao bloco residual, o que produz um bloco de vídeo que compreende valores de coeficiente de transformada residuais. A unidade de processamento de transformada 52 pode realizar outras transformadas que sejam conceitualmente similares à DCT. As transformadas em ondeleta, transformadas de números inteiros, transformadas de subfaixa ou outros tipos de transformadas também podem ser usadas. Em todo caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficiente de transformada residual.
[0338] A transformada pode converter as informações residuais provenientes de um domínio de valor de pixel para um domínio de transformada, como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar o coeficiente de transformada resultante para a unidade de quantização 54. A unidade de quantização 54 quantiza o coeficiente de transformada para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54, então, pode realizar uma varredura da matriz, incluindo o coeficiente de transformada quantizado. Alternativamente, a unidade de codificação por entropia 56 pode realizar a varredura.
[0339] Após a quantização, a unidade de codificação por entropia 56 codifica por entropia o coeficiente de transformada quantizado. Por exemplo, uma unidade de codificação por entropia 56 pode realizar codificação de comprimento variável adaptativa a contexto (CAVLC), codificação aritmética binária adaptativa a contexto (CABAC), codificação aritmética binária adaptativa a contexto com base em sintaxe (SBAC), codificação por Entropia de Divisão de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação por entropia. No caso de codificação por entropia com base em contexto, o contexto pode ter base em blocos vizinhos. Após a codificação por entropia pela unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, o decodificador de vídeo 30) ou arquivado para transmissão ou recuperação posterior.
[0340] A unidade de quantização regredir 58 e a unidade de processamento de transformada regredir 60 aplicam quantização regredir e transformada regredir, respectivamente, para reconstruir o bloco residual no domínio de pixels, por exemplo, para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando-se o bloco residual a um bloco de predição de uma dentre as figurações de referência armazenadas no armazenamento temporário de figuração decodificada 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 subinteiros para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado de movimento produzido pela unidade de compensação de modo 44 para produzir um bloco de vídeo reconstruído para o armazenamento na memória temporária de figuração decodificada 64. O bloco de vídeo reconstruído pode ser usado pela unidade de estimativa de movimento 42 e pela unidade de compensação de modo 44 como um bloco de referência para intercodifcar um bloco em um quadro de vídeo subsequente.
[0341] O codificador de vídeo 20 pode codificar mapas de profundidade de uma maneira que se assemelhe substancialmente técnicas de codificação para componentes de luminância de codificação, embora sem componentes de crominância correspondentes. Por exemplo, a unidade de processamento de intrapredição 46 pode intrapredizer blocos de mapas de profundidade, enquanto a unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem interpredizer os blocos de mapas de profundidade. No entanto, conforme discutido acima, durante a interpredição de mapas de profundidade, a unidade de compensação de movimento 44 pode escalonar (isto é, ajustar) os valos de mapas de profundidade de referência com base nas diferenças nas faixas de profundidade e valores de precisão para as faixas de profundidade. Por exemplo, se os valores de profundidade máxima diferentes no mapa de profundidade atual e um mapa de profundidade de referência correspondem à mesma profundidade do mundo real, o codificador de vídeo 20 pode escalonar o valor de profundidade máxima do mapa de profundidade de referência para ser igual ao valor de profundidade máxima no mapa de profundidade atual, para propósitos de predição. Adicional ou alternativamente, o codificador de vídeo 20 pode usar os valores de faixa de profundidade atualizados e os valores de precisão para gerar uma figuração de síntese de vista para predição de síntese de vista, por exemplo, com o uso de técnicas substancialmente semelhantes à predição de intervistas.
[0342] O codificador de vídeo 20 representa um exemplo de um codificador de vídeo que pode ser configurado para realizar qualquer uma das técnicas descritas nessa revelação, sozinho ou em qualquer combinação. Por exemplo, o codificador de vídeo 20 pode ser configurado para realizar as técnicas para predição de movimento de nível de sub-PU para codificação de vídeo em 3D-HEVC.
[0343] Em um exemplo, o codificador de vídeo 20 pode ser configurado para realizar um modo de BVSP de sub-PU para predizer uma PU que inclui duas ou mais sub-PUs, no modo de BVSP de sub-PU, a unidade de compensação de movimento 44 de codificador de vídeo 20 determina as primeiras informações de movimento para uma PU atual que incluem pelo menos um vetor de movimento de disparidade e um índice de vista de referência associado que identifica uma figuração de referência intervistas. A unidade de compensação de movimento 44, então, dividi a PU atual em duas ou mais sub-PUs, e determina as segundas informações de movimento para cada uma das sub-PUs que inclui pelo menos um vetor de movimento de disparidade associado a um bloco de profundidade da figuração de referência intervistas que corresponde a cada uma das sub-PUs. A unidade de compensação de movimento 44 realiza a compensação de movimento para predizer cada uma das sub-PUs da PU com base nas segundas informações de movimento para cada uma das sub-PUs. De acordo com as técnicas desta revelação, para cada PU predita com o uso do modo de BVSP de sub-PU, o codificador de vídeo armazena as segundas informações de movimento derivadas para cada uma das subPUs da PU atual mesmo após a compensação de movimento ser realizada. As segundas informações de movimento podem ser armazenadas no armazenamento temporário de figuração decodificada 64. As informações de movimento adicionais armazenadas para a PU atual podem, então, ser usadas para predizer PUs subsequentes para as quais a PU atual é um bloco próximo.
[0344] Em outro exemplo, o codificador de vídeo 20 pode ser configurado para realizar um modo de TMVP avançado para predizer sub-PUs de uma PU em codificação de camada única para a qual o aperfeiçoamento de vetor de movimento pode ser permitido. No modo de TMVP avançado, a unidade de compensação de movimento 44 de codificador de vídeo 20 determina um primeiro vetor de movimento de estágio para uma PU atual que identifica um bloco de uma figuração de referência que corresponde à PU atual. A unidade de compensação de movimento 44, então, dividi a PU atual em duas ou mais sub-PUs, e determina as segundas informações de movimento de estágio para cada uma das subPUs a partir do bloco da figuração de referência identificada pelo primeiro vetor de movimento de estágio, em que as segundas informações de movimento de estágio para cada uma das sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado. A unidade de compensação de movimento 44 realiza a compensação de movimento para predizer cada uma das sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma das sub-PUs. Em alguns exemplos, a unidade de compensação de movimento 44 pode determinar uma diferença de vetor de movimento para aperfeiçoar o pelo menos um vetor de movimento das segundas informações de movimento de estágio para cada uma das sub-PUs.
[0345] Em outro exemplo, codificador de vídeo 20 pode ser configurado para realizar as técnicas relacionadas aos processos de filtro de desbloqueio aplicado às CUs de um bloco de vídeo que inclui pelo menos uma PU com múltiplas sub-PUs. De acordo com as técnicas desta revelação, antes de aplicar um filtro de desbloqueio a uma CU do bloco de vídeo que inclui a PU com as sub-PUs, a unidade de filtro 63 do codificador de vídeo 20 converte a CU a fim de criar limites de PU artificiais ou limites de TU artificiais nos limites de sub-PU. Em um exemplo, a unidade de filtro 63 converte uma árvore de transformada da CU a fim de associar a PU a uma hierarquia de árvore de transformada e associar cada uma das sub-PUs a uma TU de modo que os limites de sub-PU sejam convertidos para os limites de TU artificiais. Em outro exemplo, a unidade de filtro 63 converte a CU para uma árvore de codificação a fim de associar a PU a uma CU e associar cada uma das subPUs a uma PU de modo que os limites de sub-PU sejam convertidos para limites de PU artificiais. A unidade de filtro 63, então, aplica o filtro de desbloqueio para os limites de PU entre duas PUs adjacentes da CU e/ou os limites de TU entre duas TUs adjacentes da CU, incluindo os limites de PU artificiais e os limites de TU artificiais.
[0346] A Figura 16 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo 30 que pode implantar as técnicas dessa revelação. No exemplo da Figura 16, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, a memória de dados de vídeo 71, a unidade de compensação de movimento 72, a unidade de processamento de intrapredição 74, a unidade de quantização inversa 76, a unidade de processamento de transformada inversa 78, o armazenamento temporário de figuração decodificada 82, a unidade de filtro 83 e o somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, realizar um passo de decodificação geralmente recíproco ao passo de codificação descrito em relação ao codificador de vídeo 20 (Figura 15). A unidade de compensação de movimento 72 pode gerar dados de predição com base em vetores de movimento recebidos a partir da unidade de decodificação por entropia 70, enquanto a unidade de processamento de intrapredição 74 pode gerar dados de predição com base em indicadores de modo de intrapredição recebidos a partir da unidade de decodificação por entropia 70.
[0347] A memória de dados de vídeo 71 pode armazenar dados de vídeo, tal como um fluxo de bits de vídeo codificado, a ser decodificado pelos componentes de decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 71 podem ser obtidos, por exemplo, a partir do meio legível por computador 16, por exemplo, a partir de uma fonte de vídeo local, tal como uma câmera, através de comunicação de rede sem fio ou com fio de dados de vídeo ou através do acesso de meio de armazenamento de dados físicos. A memória de dados de vídeo 71 pode formar um armazenamento temporário de figuração codificada (CPB) que armazena dados de vídeo codificados a partir de um fluxo de bits de vídeo codificado. O armazenamento temporário de figuração decodificada 82 pode ser uma memória de figuração de referência que armazena dados de vídeo de referência para uso em dados de vídeo de decodificação pelo decodificador de vídeo 30, por exemplo, em modos de intra ou intercodificação. A memória de dados de vídeo 71 e o armazenamento temporário de figuração decodificada 82 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 71 e o armazenamento temporário de figuração decodificada 82 podem ser fornecidos pelo menos dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 71 pode ser no chip com outros componentes de decodificador de vídeo 30, ou fora do chip em relação àqueles componentes.
[0348] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados provenientes do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores de modo de intrapredição e outros elementos de sintaxe. A unidade de decodificação por entropia 70 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de modo 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.
[0349] Quando a fatia de vídeo for codificada como uma fatia intracodificada (I), a unidade de processo 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 provenientes de blocos decodificados anteriormente do quadro ou da figuração atual. Quando o quadro de vídeo for codificado como uma fatia intercodificada (por exemplo, B ou P), 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 a partir da unidade de decodificação por entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das figurações de referência dentro de uma das listas de figurações de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, que usa as técnicas dessa revelação com base nas figurações de referência armazenadas no armazenamento temporário de figuração decodificado 82. 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-se os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual em decodificação. Por exemplo, a unidade de compensação de modo 72 usa uma parte 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 ou fatia P), informações de construção para uma ou mais dentre as listas de figurações de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, situações 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.
[0350] 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 por usar filtros de interpolação conforme usado pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para pixels subinteiros de blocos de referência. Nesse caso, a unidade de compensação de modo 72 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos preditivos.
[0351] A unidade de quantização inversa 76 quantiza inversamente, por exemplo, de-quantiza, o coeficiente de transformada quantizado fornecido no fluxo de bits e decodificado pela unidade de decodificação por entropia 70. O processo de quantização inversa pode incluir o uso 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, de modo semelhante, um grau de quantização inversa que deve ser aplicada, a unidade de processamento de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada inversa de número inteiro, ou um processo de transformada inversa semelhante conceitualmente, para os coeficientes de transformada a fim de produzir blocos residuais no domínio de pixel.
[0352] Após a unidade de compensação de movimento 72 gerar 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-se os blocos residuais provenientes da unidade de processamento de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 90 representa o componente ou os componentes que realizam essa operação de soma. A unidade de filtro 63 pode aplicar um processo de filtro de desbloqueio. A unidade filtro 63 pode incluir um filtro de desbloqueio e um filtro SAO para filtrar os limites de bloco para remover os artefatos de bloqueio do vídeo reconstruído. Filtros adicionais (em circuito ou pós-circuito) também podem ser usados adicionalmente ao filtro de desbloqueio. Tais filtros não são mostrados para propósitos de brevidade, mas caso desejado, podem filtrar o resultado do somador 80 (como um filtro em circuito). Os blocos de vídeo decodificados em um quadro ou figuração dados são, então, armazenados no armazenamento temporário de figuração decodificada 82, que armazena figurações de referência usadas para a composição de movimento subsequente. O armazenamento temporário de figuração decodificada 82 também armazena o vídeo decodificado para a apresentação posterior em um dispositivo de exibição, tal como dispositivo de exibição 32 da Figura 1.
[0353] O decodificador de vídeo 30 pode decodificar os mapas de profundidade de maneira que se assemelha substancialmente às técnicas de decodificação para componentes de luminância de decodificação, embora sem corresponder aos componentes crominância. Por exemplo, unidade de processamento de intrapredição 74 pode intrapredizer os blocos de mapas de profundidade, enquanto a unidade de compensação de movimento 72 podem interpredizer os blocos de mapas de profundidade. No entanto, conforme discutido acima, durante a interpredição de mapas de profundidade, a unidade de compensação de movimento 72 pode escalonar (isto é, ajustar) os valos de mapas de profundidade de referência com base nas diferenças nas faixas de profundidade e valores de precisão para as faixas de profundidade. Por exemplo, se os valores de profundidade máxima diferentes no mapa de profundidade atual e um mapa de profundidade de referência correspondem à mesma profundidade do mundo real, o decodificador de vídeo 30 pode escalonar o valor de profundidade máxima do mapa de profundidade de referência para ser igual ao valor de profundidade máxima no mapa de profundidade atual, para fins de predição. Adicional ou alternativamente, o decodificador de vídeo 30 pode usar os valores de faixa de profundidade atualizados e os valores de precisão para gerar uma figuração de síntese de vista para predição de síntese de vista, por exemplo, com o uso de técnicas substancialmente semelhantes à predição de intervistas.
[0354] O decodificador de vídeo 30 representa um exemplo de um decodificador de vídeo que pode ser configurado para realizar qualquer uma das técnicas descritas nessa revelação, sozinho ou em qualquer combinação. Por exemplo, o decodificador de vídeo 30 pode ser configurado para realizar as técnicas para predição de movimento de nível de sub-PU para codificação de vídeo em 3D-HEVC.
[0355] Em um exemplo, o decodificador de vídeo 30 pode ser configurado para realizar um modo de BVSP de sub-PU para predizer uma PU que inclui duas ou mais sub-PUs, no modo de BVSP de sub-PU, a unidade de compensação de movimento 72 de decodificador de vídeo 30 determina as primeiras informações de movimento para uma PU atual que inclui pelo menos um vetor de movimento de disparidade e um índice de vista de referência associado que identifica uma figuração de referência de intervistas, a unidade de compensação de movimento 72, então, dividi a PU atual em duas ou mais sub-PUs, e determina as segundas informações de movimento para cada uma das sub-PUs que incluem pelo menos um vetor de movimento de disparidade associado a um bloco de profundidade da figuração de referência intervistas que corresponde a cada uma das sub-PUs, a unidade de compensação de movimento 72 realiza a compensação de movimento para predizer cada uma das sub-PUs da PU com base nas segundas informações de movimento para cada uma das sub-PUs. De acordo com as técnicas dessa revelação, para cada PU codificada no modo de BVSP de sub- PU, o decodificador de vídeo 30 armazena as segundas informações de movimento derivadas para cada uma das subPUs da PU atual, mesmo após a compensação de movimento ser realizada. As segundas informações de movimento podem ser armazenadas no armazenamento temporário de figuração decodificada 82. As informações de movimento adicionais armazenadas para a PU atual podem, então, ser usadas para predizer PUs subsequentes para as quais a PU atual é um bloco próximo.
[0356] Em outro exemplo, o decodificador de vídeo 30 pode ser configurado para realizar um modo de TMVP avançado para predizer sub-PUs de uma PU em codificação de camada única para a qual o aperfeiçoamento de vetor de movimento pode ser permitido. No modo de TMVP avançado, a unidade de compensação de movimento 72 de decodificador de vídeo 30 determina um primeiro vetor de movimento de estágio para uma PU atual que identifica um bloco de uma figuração de referência que corresponde à PU atual. A unidade de compensação de movimento 72, então, dividi a PU atual em duas ou mais sub-PUs, e determina as segundas informações de movimento de estágio para cada uma das subPUs a partir do bloco da figuração de referência identificada pelo primeiro vetor de movimento de estágio, em que as segundas informações de movimento de estágio para cada uma das sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado. A unidade de compensação de movimento 72 realiza a compensação de movimento para predizer cada uma das sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada da sub-PUs. Em alguns exemplos, a unidade de compensação de movimento 72 pode determinar uma diferença de vetor de movimento para aperfeiçoar o pelo menos um vetor de movimento das segundas informações de movimento de estágio para cada uma das sub-PUs.
[0357] Em outro exemplo, decodificador de vídeo 30 pode ser configurado para realizar as técnicas relacionadas aos processos de filtro de desbloqueio aplicado às CUs de um bloco de vídeo que inclui pelo menos uma PU com múltiplas sub-PUs. De acordo com as técnicas desta revelação, antes de aplicar um filtro de desbloqueio a uma CU do bloco de vídeo que inclui a PU com as sub-PUs, a unidade de filtro 83 do decodificador de vídeo 30 converte a CU a fim de criar limites de PU artificiais ou limites de TU artificiais nos limites de sub-PU. Em um exemplo, a unidade de filtro 83 converte uma árvore de transformada da CU a fim de associar a PU a uma hierarquia de árvore de transformada e associar cada uma das sub-PUs a uma TU de modo que os limites de sub-PU sejam convertidos para os limites de TU artificiais. Em outro exemplo, a unidade de filtro 83 converte a CU para uma árvore de codificação a fim de associar a PU a uma CU e associar cada uma das sub-PUs a uma PU de modo que os limites de sub-PU sejam convertidos para limites de PU artificiais. A unidade de filtro 83, então, aplica o filtro de desbloqueio para os limites de PU entre duas PUs adjacentes da CU e/ou os limites de TU entre duas TUs adjacentes da CU, incluindo os limites de PU artificiais e os limites de TU artificiais.
[0358] A Figura 17 é um fluxograma que ilustra uma operação exemplificativa de predizer uma PU atual com o uso de um modo de BVSP de sub-PU e armazenar o armazenamento de informações de movimento de sub-PU determinado. A operação ilustrada é descrita nessa revelação em relação ao decodificador de vídeo 30 da Figura. 16. Em outros exemplos, a operação ilustrada pode ser realizada pelo codificador de vídeo 20 da Figura 15, ou qualquer outro dispositivo de codificação ou decodificação que opera de acordo com o padrão de 3D-HEVC.
[0359] O decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa os blocos de vídeo de uma fatia de vídeo codificado e elementos de sintaxe associados. A unidade de decodificação por entropia 70 de decodificador de vídeo 30 decodifica o fluxo de bits para gerar coeficientes de transformada quantizados, as informações de movimento e indicadores de modo de predição, e outros elementos de sintaxe. A unidade de decodificação por entropia 70 envia o coeficiente de transformada quantizada decodificada para a unidade de quantização inversa 76 e para unidade de processamento de transformada inversa 78 para reconstruir blocos residuais dos blocos de vídeo a serem decodificados. A unidade de decodificação por entropia 70 envia as informações de movimento e indicadores de modo de interpredição decodificados para a unidade de compensação de movimento 72.
[0360] A unidade de compensação de movimento 72 prediz cada PU de cada CU dos blocos de vídeo a serem decodificados de acordo com aquele indicado dentre os modos de fusão ou de interpredição de AMVP. Por exemplo, no modo de fusão, a unidade de compensação de movimento 72 pode gerar uma lista de candidato de modo de fusão de informações de movimento que incluem informações de movimento, isto é, vetores de movimento e índices de referência associados, de blocos próximos espaciais e temporais da PU atual. Nesse caso, as informações de movimento decodificado podem incluir um índice de fusão que indica um dentre os conjuntos de informações de movimento na lista de candidato de modo de fusão para predizer a PU atual. No modo de BVSP, a lista de candidato de modo de fusão inclui um candidato de BVSP especial que tem informações de movimento que incluem um vetor de movimento de disparidade e um índice de vista de referência associado, e as informações de profundidade são usadas para aperfeiçoar as informações de movimento.
[0361] De acordo com as técnicas dessa revelação, a unidade de compensação de movimento 72 determina as primeiras informações de movimento para uma PU atual a partir dos blocos próximos da PU de acordo com o modo de BVSP na qual as primeiras informações de movimento incluem pelo menos um vetor de movimento de disparidade e um índice de vista de referência associado que identifica uma figuração de referência intervistas (140). Conforme descrito acima, a unidade de compensação de movimento 72 pode selecionar as primeiras informações de movimento para a PU atual como o candidato de BVSP a partir da lista de candidato de modo de fusão. Em alguns casos, as primeiras informações de movimento para a PU atual podem incluir um vetor de movimento de disparidade que corresponde a cada uma dentre a primeira e a segunda listas de figuração de referência.
[0362] A unidade de compensação de movimento 72, então, dividi a PU atual em duas ou mais sub-PUs (142). A unidade de compensação de movimento 72 determina as segundas informações de movimento para cada uma das sub-PUs nas quais as segundas informações de movimento incluem pelo menos um vetor de movimento de disparidade associado a um bloco de profundidade da figuração de referência intervistas que corresponde a cada uma das sub-PUs (144). Por exemplo, a unidade de compensação de movimento 72 pode selecionar um valor máximo dos quatro pixels de canto para o bloco de profundidade da figuração de referência intervistas que corresponde a cada uma das sub-PUs, e converter o valor máximo para um componente horizontal do vetor de movimento de disparidade para cada uma das subPUs. O componente vertical do vetor de movimento de disparidade para cada uma das sub-PUs é igual à zero. Em alguns casos, as segundas informações de movimento para cada uma das sub-PUs podem incluir um vetor de movimento de disparidade que corresponde a cada uma dentre a primeira e a segunda listas de figuração de referência.
[0363] A unidade de compensação de movimento 72 realiza a compensação de movimento para predizer cada uma das sub-PUs da PU atual a partir da figuração de referência intervistas com base nas segundas informações de movimento (146). Após realizar a compensação de movimento, o decodificador de vídeo 30 armazena as segundas informações de movimento para cada uma das sub-PUs da PU atual em uma memória, por exemplo, o armazenamento temporário de figuração decodificada 82 de decodificador de vídeo 30, a ser usado para predizer PUs subsequentes (148). Por exemplo, o decodificador de vídeo 30 pode armazenar o vetor de movimento de disparidade derivado para cada uma das sub-PUs em armazenamento temporário de figuração decodificada 82 associada a uma lista de figuração de referência que inclui a figuração de referência intervistas identificada pelo índice de vista de referência das primeiras informações de movimento para a PU. Após gerar um bloco de predição para cada uma das sub-PUs da PU durante a compensação de movimento, o decodificador de vídeo 30 gera uma versão reconstruída do bloco de vídeo com base em uma versão reconstruída de um bloco residual correspondente e o bloco de predição para cada uma das sub-PUs.
[0364] Convencionalmente, no modo de BVSP de 3D-HEVC, após realizar a compensação de movimento para predizer cada uma das sub-PUs, apenas um único vetor de movimento de disparidade que corresponde a cada lista de figuração de referência é armazenado para a PU atual. O único vetor de movimento de disparidade é armazenado para cada lista de figuração de referência mesmo se a compensação de movimento da PU tiver como base múltiplos vetores de movimento para as múltiplas sub-PUs da PU. Nesse caso, quando a PU atual é usada para predizer uma PU subsequente, as sub-PUs da PU atual são vistas como tendo os mesmos vetores de movimento de modo que o modo de BVSP de sub-PU tenha pouco impacto no aprimoramento de precisão de predição de vetor de movimento.
[0365] De acordo com as técnicas dessa revelação, para cada PU codificada no modo de BVSP de sub- PU, o decodificador de vídeo 30 armazena as segundas informações de movimento derivadas para cada uma das sub-PUs da PU atual, mesmo após a compensação de movimento ser realizada. As informações de movimento adicionais armazenadas para a PU atual podem, então, ser usadas para predizer PUs subsequentes para as quais as PUs atuais é um bloco próximo. Por exemplo, unidade de compensação de movimento 72 pode gerar uma lista de candidato de modo de fusão de informações de movimento para predizer uma PU subsequente que inclui as segundas informações de movimento para pelo menos uma dentre as sub-PUs da PU armazenada no armazenamento temporário de figuração decodificada 82, como um candidato de BVSP de sub-PU na lista de candidato de modo de fusão. Em um exemplo, se a PU subsequente for codificada no modo de BVSP de sub-PU, a unidade de compensação de movimento 72 pode não precisar derivar as segundas informações de movimento para cada uma das sub-PUs da PU subsequente. Em vez disso, a unidade de compensação de movimento 72 pode, em vez disso, selecionar as segundas informações de movimento conforme o candidato de BVSP de sub-PU da lista de candidato de modo de fusão de informações de movimento para predizer a sub-PUs da PU subsequente.
[0366] A Figura 18 é um fluxograma que ilustra uma operação exemplificativa de aplicar um filtro de desbloqueio para cada CU de um bloco de vídeo para filtrar limites de TU e limites de PU que incluem limites de sub-PU dentro da CU. O filtro de desbloqueio é aplicado após a reconstrução do bloco de vídeo e antes de armazenar o bloco de vídeo em um armazenamento temporário de figuração decodificada como um bloco de uma figuração de referência. A operação ilustrada é descrita nessa revelação em relação ao decodificador de vídeo 30 da Figura 16. Em outros exemplos, a operação ilustrada pode ser realizada no circuito de reconstrução de bloco de vídeo de codificador de vídeo 20 da Figura 15, ou qualquer outro dispositivo de codificação ou decodificação que usa um projeto de sub-PU e filtros de desbloqueio.
[0367] O decodificador de vídeo 30 gera uma versão reconstruída de um bloco de vídeo com base em uma versão reconstruída de um bloco residual correspondente e um bloco de predição (150). O bloco de vídeo inclui pelo menos uma CU, e a CU pode incluir pelo menos uma PU que é dividida em duas ou mais sub-PUs. Conforme descrito acima em relação à Figura 17, unidade de compensação de movimento 72 de decodificador de vídeo 30 pode gerar um bloco de predição durante a compressão de vídeo para cada uma das sub-PUs da PU. Os filtros de desbloqueio para o padrão de HEVC não são projetados para filtrar dentro de uma PU, isto é, junto com limites de sub-PU, devido ao fato de que para blocos de HEVC assume-se que a compensação de movimento é a mesma para toda a PU. Essa revelação descreve técnicas para converter uma PU com sub-PUs em uma estrutura não prejudicial de desbloqueio de modo que os filtros de desbloqueio de HEVC possam continuar a ser usados para blocos de 3D-HEVC.
[0368] Antes de aplicar um filtro de desbloqueio à CU do bloco de vídeo que inclui a PU com as duas ou mais sub-PUs, a unidade de filtro 83 de decodificador de vídeo 30 converte a CU para criar limites de PU artificiais ou limites de TU artificiais nos limites de sub-PU entre duas sub-PUs adjacentes da PU (152). Em um exemplo, a unidade de filtro 83 converte uma árvore de transformada da CU a fim de associar a PU a uma hierarquia de árvore de transformada e associar cada uma das sub-PUs a uma TU de modo que os limites de sub-PU sejam convertidos para os limites de TU artificiais. Em outro exemplo, a unidade de filtro 83 converte a CU para uma árvore de codificação a fim de associar a PU a uma CU e associar cada uma das sub-PUs a uma PU de modo que os limites de sub-PU sejam convertidos para limites de PU artificiais.
[0369] A unidade de filtro 83, então, aplica o filtro de desbloqueio para os limites de PU entre duas PUs adjacentes da CU e/ou os limites de TU entre duas TUs adjacentes da CU, incluindo os limites de PU artificiais e os limites de TU artificiais. Após filtrar cada uma dentre as CUs da versão reconstruída do bloco de vídeo, a unidade de filtro 83 armazena o bloco de vídeo no armazenamento temporário de figuração decodificada 82 como um bloco de uma figuração de referência (156).
[0370] A Figura 19 é um fluxograma que ilustra uma operação exemplificativa de um modo de TMVP avançado para predizer sub-PUs de uma PU em codificação de camada única. A operação ilustrada é descrita nessa revelação em relação ao decodificador de vídeo 30 da Figura 16. Em outros exemplos, a operação ilustrada pode ser realizada pelo codificador de vídeo 20 da Figura 15, ou qualquer outro dispositivo de codificação ou decodificação que usa um projeto de sub-PU.
[0371] O decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa os blocos de vídeo de uma fatia de vídeo codificado e elementos de sintaxe associados. A unidade de decodificação por entropia 70 de decodificador de vídeo 30 decodifica o fluxo de bits para gerar coeficientes de transformada quantizados, as informações de movimento e indicadores de modo de predição, e outros elementos de sintaxe. A unidade de decodificação por entropia 70 envia o coeficiente de transformada quantizada decodificada para a unidade de quantização inversa 76 e para unidade de processamento de transformada inversa 78 para reconstruir blocos residuais dos blocos de vídeo a serem decodificados. A unidade de decodificação por entropia 70 envia as informações de movimento e indicadores de modo de interpredição decodificados para a unidade de compensação de movimento 72.
[0372] A unidade de compensação de movimento 72 prediz cada PU de cada CU dos blocos de vídeo a serem decodificados de acordo com aquele indicado dentre os modos de fusão ou de interpredição de AMVP. Por exemplo, no modo de fusão, a unidade de compensação de movimento 72 pode gerar uma lista de candidato de modo de fusão de informações de movimento que inclui informações de movimento, isto é, vetores de movimento e índices de referência associados, de blocos próximos espaciais e temporais da PU atual. Nesse caso, as informações de movimento decodificado podem incluir um índice de fusão que indica um dentre os conjuntos de informações de movimento na lista de candidato de modo de fusão para predizer a PU atual. Em outro exemplo, no modo de AMVP, a unidade de compensação de movimento 72 pode gerar uma lista de candidato de modo de AMVP que inclui apenas vetores de movimento dos blocos próximos espaciais e temporais da PU atual. Nesse caso, as informações de movimento decodificado podem incluir um índice de AMVP que indica um dentre os vetores de movimento na lista de candidato de modo de AMVP, e também inclui um índice de referência explicitamente sinalizado e qualquer diferença de vetor de movimento para aperfeiçoar o vetor de movimento selecionado para predizer o PU atual.
[0373] Convencionalmente, o projeto de sub-PU é habilitado apenas para a intercamadas ou predição de intervistas com o uso do modo de interpredição de fusão. Essa revelação descreve um modo de TMVP avançado para predizer as sub-PUs de uma PU na codificação de camada única para a qual o aperfeiçoamento de vetor de movimento pode ser permitido. Em um exemplo, para indicar o desempenho do modo de TMVP avançado para predizer a PU atual, a unidade de compensação de movimento 72 pode gerar um candidato de TMBP avançado na lista de candidato de modo de fusão para a PU, em que a seleção do candidato de TMBP avançado indica o desempenho do modo de TMVP avançado para predizer a PU.
[0374] De acordo com as técnicas dessa revelação, a unidade de compensação de movimento 72 determina um primeiro vetor de movimento de estágio para uma PU atual a partir dos blocos próximos da PU que identificam um bloco de uma figuração de referência que corresponde a PU atual (160). Como um exemplo, a unidade de compensação de movimento 72 pode derivar o primeiro vetor de movimento de estágio a partir dos blocos próximos espaciais e/ou dos blocos próximos temporais da PU atual. Como outro exemplo, a unidade de compensação de movimento 72 pode selecionar o primeiro vetor de movimento de estágio a partir de uma lista de candidato de modo de fusão para a PU atual. Em outros exemplos, o primeiro vetor de movimento de estágio pode ser definido para ser uma constante ou um valor predefinido.
[0375] A unidade de compensação de movimento 72, então, dividi a PU atual em duas ou mais sub-PUs (162). A unidade de compensação de movimento 72 determina as segundas informações de movimento de estágio para cada uma das sub-PUs a partir do bloco da figuração de referência identificado pelo primeiro vetor de movimento de estágio, em que as segundas informações de movimento de estágio para cada uma das sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado (164). Em alguns casos, as segundas informações de movimento de estágio para cada uma das sub-PUs podem incluir um vetor de movimento que corresponde a cada uma dentre a primeira e segunda listas de figuração de referência. No caso em que pelo menos um dentre os vetores de movimento das segundas informações de movimento de estágio para uma dentre as subPUs não está disponível, a unidade de compensação de movimento 72 pode usar um vetor de movimento representativo, como o primeiro vetor de movimento de estágio, para a uma dentre as sub-PUs.
[0376] Em alguns exemplos, em vez de operar puramente no modo de fusão, o aperfeiçoamento de vetor de movimento semelhante ao modo de AMVP pode ser habilitado. Por exemplo, a unidade de compensação de movimento 72 pode determinar os dados de aperfeiçoamento de movimento para a PU atual predita com o uso do modo de TMVP avançado. Em um caso, a unidade de compensação de movimento 72 pode determinar uma diferença de vetor de movimento aplicável às segundas informações de movimento de estágio para uma ou mais dentre as sub-PUs. Conforme descrito acima, a diferença de vetor de movimento pode ser sinalizada nas informações de movimento incluídas no fluxo de bits de vídeo codificado. Nesse exemplo, para indicar o desempenho do modo de TMVP avançado com o uso dos dados de aperfeiçoamento de movimento para predizer a PU atual, a unidade de compensação de movimento 72 pode gerar um candidato de TMBP avançado na lista de candidato de modo de AMVP para a PU, em que a seleção do candidato de TMBP avançado indica o desempenho do modo de TMVP avançado com o uso dos dados de aperfeiçoamento de movimento para predizer a PU.
[0377] A unidade de compensação de movimento 72 realiza a compensação de movimento para predizer cada uma das sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma das subPUs (166). Após gerar um bloco de predição para cada uma das sub-PUs da PU durante a compensação de movimento, o decodificador de vídeo 30 gera uma versão reconstruída do bloco de vídeo com base em uma versão reconstruída de um bloco residual correspondente e no bloco de predição para cada uma das sub-PUs.
[0378] Em um ou mais exemplos, as funções descritas podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implantado em software, as funções podem ser armazenadas em, ou transmitidas sobre, como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento com base em hardware. As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, que correspondem a uma mídia tangível como mídias de armazenamento de dados ou mídias de comunicação que incluem qualquer mídia que facilite a transferência de um programa de computador proveniente de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa maneira, meios legíveis por computador, em geral, podem corresponder a (1) meios de armazenamento legíveis por computador tangíveis que são não transitórios ou (2) um meio de comunicação como um sinal ou onda de portador. As mídias de armazenamento de dados podem ser quaisquer mídias disponíveis que possam ser acessadas por um ou mais computadores ou um ou mais processadores para recuperar instruções, estruturas de código e/ou dados para a implantação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0379] Por meio de exemplo, e não de limitação, tais mídias de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outros dispositivos de armazenamento de disco óptico, armazenamento de disco magnético ou memória flash, ou qualquer outro meio que possa ser usado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Também, qualquer conexão pode ser propriamente denominada um meio legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um sítio da web, servidor ou outra fonte remota com o uso de um cabo coaxial, cabo de fibra óptica, par trançado, linha de inscrição digital (DSL) ou tecnologias sem fio como infravermelho, rádio e micro-onda, então, o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou as tecnologias sem fio como infravermelho, rádio e micro-onda estão incluídos na definição de mídia. Deve ser entendido, entretanto, que as mídias de armazenamento legíveis por computador e as mídias de armazenamento de dados não incluem conexões, ondas transportadoras, sinais ou outras mídias transitórias, mas são, em vez disso, direcionadas para mídias não transientes e tangíveis. O disco magnético e o disco óptico, conforme usados no presente documento, incluem disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disco flexível e disco Blu- ray, em que os discos magnéticos, em geral, reproduzem os dados de modo magnético, enquanto os discos ópticos reproduzem os dados de modo óptico com lasers. As combinações dos supracitados também devem ser abrangidas pelo escopo de meios legíveis por computador.
[0380] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para fins gerais, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis por campo (FPGAs) ou outro conjunto de circuitos lógicos equivalentes integrados ou discretos. Dessa maneira, o termo "processador", conforme usado no presente documento pode se referir a qualquer uma das estruturas supracitadas ou qualquer outra estrutura adequada para a implantação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos dedicados de hardware e/ou software configurados para cifrar e decodificar ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[0381] As técnicas dessa revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone, um circuito integrado (ICE) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nessa revelação para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Em vez disso, conforme 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 interoperativos, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0382] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (14)

1. Método de processamento de dados de vídeo em um modo de predição de vetor de movimento temporal, TMVP, avançado, o método caracterizado por compreender: como um primeiro estágio do modo de TMVP avançado, determinar um primeiro vetor de movimento de estágio para uma unidade de predição, PU, atual (173) de uma unidade de codificação, CU, dos dados de vídeo ao derivar o primeiro vetor de movimento de estágio a partir de blocos vizinhos espaciais e/ou blocos vizinhos temporais da PU (160) atual, em que o primeiro vetor de movimento de estágio identifica um bloco (174) de uma figuração de referência, em que o bloco corresponde à PU atual, e em que um CU pode conter um ou mais PUs; dividir a PU atual em duas ou mais sub-Pus, em que sub-PUs da PU atual possuem sub-PUs no bloco correspondente de figuração de referência (162), e em que pelo menos algumas das sub-PUs do bloco correspondente têm, cada uma, um conjunto associado de informações de movimento; como um segundo estágio do modo de TMVP avançado, extrair as informações de movimento dos sub-Pus do bloco da figuração de referência, e atribuir cada conjunto das informações de movimento, como segundas informações de movimento de estágio, para o sub-PU correspondente da PU (174) atual, em que as segundas informações de movimento de estágio para cada uma dentre as sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado; e realizar compensação de movimento para cada uma dentre as sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma dentre as sub-Pus (166).
2. Método, de acordo a reivindicação 1, caracterizado pela determinação do primeiro vetor de movimento de estágio para a PU atual compreender selecionar o primeiro vetor de movimento de estágio a partir de uma lista de candidatos de modo de fusão para a PU atual.
3. Método, de acordo a reivindicação 1, caracterizado pelo método compreender adicionalmente gerar um candidato de TMVP avançado em uma lista de candidatos de modo de fusão para a PU atual, em que a seleção do candidato de TMVP avançado indica o desempenho do modo de TMVP avançado para predizer a PU atual.
4. Método, de acordo a reivindicação 1, caracterizado por compreender adicionalmente, com base no pelo menos um vetor de movimento das segundas informações de movimento de estágio para uma dentre as sub-Pus correspondentes que está indisponível, usar um vetor de movimento representativo para a sub-PU correspondente da PU atual, em que o vetor de movimento representativo compreender o primeiro vetor de movimento de estágio.
5. Método, de acordo a reivindicação 1, caracterizado por compreender adicionalmente determinar dados de refinamento de movimento para a PU atual.
6. Método, de acordo a reivindicação 5, caracterizado por determinar os dados de refinamento de movimento compreender determinar uma diferença de vetor de movimento único para a PU atual para refinamento das segundas informações de movimento de estágio para cada um dos sub-Pus da PU atual.
7. Método, de acordo com a reivindicação 5, caracterizado por determinar os dados de refinamento de movimento compreender determinar uma diferença de vetor de movimento diferente para as segundas informações de movimento de estágio para cada um dos sub-PUs da PU atual.
8. Método, de acordo com a reivindicação 5, caracterizado por compreender adicionalmente gerar um candidato de TMVP avançado em uma lista de candidatos de modo de predição de vetor de movimento avançado, AMVP, para a PU atual, em que a seleção do candidato de TMVP avançado indica que o modo de TMVP avançado é realizado com o uso dos dados de refinamento de movimento para predizer a PU atual.
9. Método, de acordo a reivindicação 1, caracterizado por compreender adicionalmente: gerar um bloco preditivo para cada uma dentre as sub-PUs da PU atual com base nas informações de segundo movimento; gerar um bloco residual com base no bloco de vídeo e no bloco preditivo para cada uma dentre as sub-PUs da PU atual; e codificar o bloco residual e um indicador de pelo menos o vetor de movimento de primeiro estágio de movimento para a PU atual em um fluxo de bits de vídeo.
10. Método, de acordo a reivindicação 1, caracterizado por compreender adicionalmente: decodificar um bloco residual e um indicador do pelo menos primeiro vetor de movimento de estágio para a PU atual a partir de um fluxo de bits de vídeo recebido; gerar um bloco preditivo para cada uma dentre as sub-PUs da PU atual com base nas informações de segundo movimento; e gerar uma versão reconstruída do bloco de vídeo com base no bloco residual e no bloco preditivo para cada uma dentre as sub-PUs da PU atual.
11. Dispositivo de processamento de vídeo (20, 30) para processamento de dados de vídeo em um modo de predição de vetor de movimento temporal, TMVP, avançado, o dispositivo caracterizado por compreender: uma memória (41, 71) configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória e configurado para: como um primeiro estágio do modo de TMVP avançado, determinar um primeiro vetor de movimento de estágio para uma unidade de predição, PU, atual (173) de uma unidade de codificação, CU, dos dados de vídeo ao derivar o primeiro vetor de movimento de estágio a partir de blocos vizinhos espaciais e/ou blocos vizinhos temporais da PU atual, em que o primeiro vetor de movimento de estágio identifica um bloco (174) de uma figuração de referência, em que o bloco corresponde à PU atual, e em que um CU pode conter um ou mais PUs; dividir (162) a PU atual em duas ou mais sub-Pus, de modo que cada sub-PU da PU atual possui sub-PUs correspondentes no bloco correspondente de figuração de referência, e em que pelo menos alguns dos sub-PUs do bloco correspondente têm, cada, um conjunto associado de informações de movimento; como um segundo estágio do modo de TMVP avançado, extrair as informações de movimento dos sub-PUs do bloco da figuração de referência, e atribuir cada conjunto das informações de movimento, como segundas informações de movimento de estágio, para o sub-PU correspondente da PU (173) atual, em que as segundas informações de movimento de estágio para cada uma dentre as sub-PUs incluem pelo menos um vetor de movimento e um índice de referência associado; e realizar compensação de movimento para cada uma dentre as sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma dentre as sub-Pus.
12. Dispositivo, de acordo com a reivindicação 11 caracterizado pelo dispositivo de processamento de vídeo compreender um dispositivo de codificação de vídeo e em que o um ou mais processadores são configurados para: gerar um bloco preditivo para cada uma dentre as sub-PUs da PU atual com base nas informações de segundo movimento; gerar um bloco residual com base no bloco de vídeo e no bloco preditivo para cada uma dentre as sub-PUs da PU atual; e codificar o bloco residual e um indicador de pelo menos o vetor de movimento de primeiro estágio de movimento para a PU atual em um fluxo de bits de vídeo.
13. Dispositivo, de acordo com a reivindicação 11, caracterizado pelo dispositivo de processamento de vídeo compreender um dispositivo de decodificação de vídeo e em que o um ou mais processadores são configurados para: decodificar um bloco residual e um indicador do pelo menos primeiro vetor de movimento de estágio para a PU atual a partir de um fluxo de bits de vídeo recebido; gerar um bloco preditivo para cada uma dentre as sub-PUs da PU atual com base nas informações de segundo movimento; e gerar uma versão reconstruída do bloco de vídeo com base no bloco residual e no bloco preditivo para cada uma dentre as sub-PUs da PU atual.
14. Memória caracterizada por compreender instruções para processar dados de vídeo que, quando executadas, fazem com que um ou mais processadores realizem o método conforme definido em qualquer uma das reivindicações 1 a 10.
BR112016006574A 2013-09-26 2014-09-26 Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc BR112016006574B8 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361883111P 2013-09-26 2013-09-26
US61/883,111 2013-09-26
US14/497,128 2014-09-25
US14/497,128 US9762927B2 (en) 2013-09-26 2014-09-25 Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
PCT/US2014/057739 WO2015048459A1 (en) 2013-09-26 2014-09-26 Sub-prediction unit (pu) based temporal motion vector prediction in hevc and sub-pu design in 3d-hevc

Publications (3)

Publication Number Publication Date
BR112016006574A2 BR112016006574A2 (pt) 2017-08-01
BR112016006574B1 true BR112016006574B1 (pt) 2023-01-31
BR112016006574B8 BR112016006574B8 (pt) 2023-02-14

Family

ID=52690922

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016006574A BR112016006574B8 (pt) 2013-09-26 2014-09-26 Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc

Country Status (10)

Country Link
US (1) US9762927B2 (pt)
EP (1) EP3050296B1 (pt)
JP (1) JP6545667B2 (pt)
KR (1) KR101967967B1 (pt)
CN (1) CN105580364B (pt)
BR (1) BR112016006574B8 (pt)
CA (1) CA2922410C (pt)
ES (1) ES2732013T3 (pt)
HU (1) HUE043882T2 (pt)
WO (1) WO2015048459A1 (pt)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10038919B2 (en) * 2014-05-29 2018-07-31 Apple Inc. In loop chroma deblocking filter
US10218957B2 (en) * 2014-06-20 2019-02-26 Hfi Innovation Inc. Method of sub-PU syntax signaling and illumination compensation for 3D and multi-view video coding
EP3189660B1 (en) * 2014-09-30 2023-07-12 HFI Innovation Inc. Method of adaptive motion vector resolution for video coding
US11477477B2 (en) * 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
EP3254466A1 (en) * 2015-02-05 2017-12-13 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. 3d-video codec supporting inter-component prediction
US10958927B2 (en) 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
US10681371B2 (en) * 2015-06-07 2020-06-09 Lg Electronics Inc. Method and device for performing deblocking filtering
US10271064B2 (en) * 2015-06-11 2019-04-23 Qualcomm Incorporated Sub-prediction unit motion vector prediction using spatial and/or temporal motion information
WO2017205700A1 (en) * 2016-05-25 2017-11-30 Arris Enterprises Llc Binary, ternary and quad tree partitioning for jvet coding of video data
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
KR102569476B1 (ko) * 2016-10-11 2023-08-24 엘지전자 주식회사 영상 코딩 시스템에서 인트라 예측에 따른 영상 디코딩 방법 및 장치
WO2018099269A1 (en) * 2016-11-29 2018-06-07 Mediatek Inc. Method and apparatus of merge mode derivation for video coding
JP6565885B2 (ja) * 2016-12-06 2019-08-28 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム、並びに画像復号化装置、画像復号化方法及び画像復号化プログラム
CN117395394A (zh) * 2017-03-22 2024-01-12 韩国电子通信研究院 使用参考块的预测方法和装置
US10582209B2 (en) * 2017-03-30 2020-03-03 Mediatek Inc. Sub-prediction unit temporal motion vector prediction (sub-PU TMVP) for video coding
US10523934B2 (en) * 2017-05-31 2019-12-31 Mediatek Inc. Split based motion vector operation reduction
EP3451665A1 (en) * 2017-09-01 2019-03-06 Thomson Licensing Refinement of internal sub-blocks of a coding unit
JP2021010046A (ja) * 2017-10-06 2021-01-28 シャープ株式会社 画像符号化装置及び画像復号装置
EP3682635A1 (en) 2017-10-09 2020-07-22 Huawei Technologies Co., Ltd. Memory access window for sub prediction block motion vector derivation
JP7382332B2 (ja) * 2017-11-01 2023-11-16 ヴィド スケール インコーポレイテッド マージモード用のサブブロック動き導出およびデコーダサイド動きベクトル精緻化
US11750832B2 (en) * 2017-11-02 2023-09-05 Hfi Innovation Inc. Method and apparatus for video coding
US10623746B2 (en) * 2017-12-07 2020-04-14 Tencent America LLC Method and apparatus for video coding
WO2019146718A1 (ja) * 2018-01-29 2019-08-01 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN116962717A (zh) * 2018-03-14 2023-10-27 Lx 半导体科技有限公司 图像编码/解码方法、存储介质和发送方法
WO2019190199A1 (ko) * 2018-03-27 2019-10-03 주식회사 케이티 비디오 신호 처리 방법 및 장치
CA3095616A1 (en) 2018-03-29 2019-10-03 Arris Enterprises Llc System and method for deblocking hdr content
KR102502175B1 (ko) 2018-04-01 2023-02-21 엘지전자 주식회사 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
JP7088606B2 (ja) 2018-04-02 2022-06-21 エスゼット ディージェイアイ テクノロジー カンパニー リミテッド 動画処理方法、画像処理装置、プログラム、符号化デバイス、及び復号化デバイス
CN112088532A (zh) * 2018-05-07 2020-12-15 交互数字Vc控股公司 编码/解码中的数据依赖性
JP7104186B2 (ja) 2018-06-05 2022-07-20 北京字節跳動網絡技術有限公司 Ibcとatmvpとの間でのインタラクション
WO2019234673A1 (en) * 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Chroma dmvr
EP4307671A3 (en) 2018-06-21 2024-02-07 Beijing Bytedance Network Technology Co., Ltd. Sub-block mv inheritance between color components
CN110636298B (zh) 2018-06-21 2022-09-13 北京字节跳动网络技术有限公司 对于Merge仿射模式和非Merge仿射模式的统一约束
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
WO2020035029A1 (en) * 2018-08-17 2020-02-20 Mediatek Inc. Method and apparatus of simplified sub-mode for video coding
KR102162998B1 (ko) * 2018-08-28 2020-10-07 인하대학교 산학협력단 Hevc 인코더에서 움직임 예측의 병렬처리 이후 발생하는 표준 amvp 생성 시간 단축 방법 및 장치
CN114363610B (zh) 2018-08-29 2022-09-16 北京达佳互联信息技术有限公司 视频编码的方法、计算设备和存储介质
BR112021000616A2 (pt) * 2018-09-05 2021-04-13 Panasonic Intellectual Property Corporation Of America Codificador, decodificador, método de codificação e método de decodificação
US11665365B2 (en) * 2018-09-14 2023-05-30 Google Llc Motion prediction coding with coframe motion vectors
WO2020065518A1 (en) 2018-09-24 2020-04-02 Beijing Bytedance Network Technology Co., Ltd. Bi-prediction with weights in video coding and decoding
CN111083489B (zh) 2018-10-22 2024-05-14 北京字节跳动网络技术有限公司 多次迭代运动矢量细化
CN111083484A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 基于子块的预测
CN112997495B (zh) 2018-11-10 2024-02-20 北京字节跳动网络技术有限公司 当前图片参考中的取整
CN111436228A (zh) 2018-11-12 2020-07-21 北京字节跳动网络技术有限公司 组合帧间-帧内预测的简化
WO2020103852A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Difference calculation based on patial position
WO2020103872A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Prediction refinement for combined inter intra prediction mode
CN113170181B (zh) 2018-11-29 2023-12-08 北京字节跳动网络技术有限公司 块内拷贝模式中的仿射继承方法
US11800089B2 (en) * 2019-01-02 2023-10-24 Lg Electronics Inc. SbTMVP-based inter prediction method and apparatus
US10869050B2 (en) * 2019-02-09 2020-12-15 Tencent America LLC Method and apparatus for video coding
JP7263529B2 (ja) 2019-02-14 2023-04-24 北京字節跳動網絡技術有限公司 デコーダ側精緻化ツールのサイズ選択アプリケーション
CN113545076A (zh) 2019-03-03 2021-10-22 北京字节跳动网络技术有限公司 基于图片头中的信息启用bio
WO2020177755A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Usage of converted uni-prediction candidate
JP7448558B2 (ja) * 2019-03-15 2024-03-12 インターデイジタル ヴィーシー ホールディングス インコーポレイテッド 画像エンコーディングおよびデコーディングのための方法およびデバイス
WO2020190084A1 (ko) 2019-03-21 2020-09-24 에스케이텔레콤 주식회사 서브블록 단위 복원 방법 및 영상 복호화 장치
WO2020200269A1 (en) 2019-04-02 2020-10-08 Beijing Bytedance Network Technology Co., Ltd. Decoder side motion vector derivation
CN113170130A (zh) * 2019-05-02 2021-07-23 株式会社 Xris 图像信号编码/解码方法及其装置
EP3949415A4 (en) 2019-05-16 2022-08-03 Beijing Bytedance Network Technology Co., Ltd. PART-BASED DETERMINATION OF MOTION INFORMATION REFINING
CN114097228B (zh) 2019-06-04 2023-12-15 北京字节跳动网络技术有限公司 具有几何分割模式编解码的运动候选列表
CN117395397A (zh) 2019-06-04 2024-01-12 北京字节跳动网络技术有限公司 使用临近块信息的运动候选列表构建
US20220232219A1 (en) * 2019-06-11 2022-07-21 Lg Electronics Inc. Image or video coding based on temporal motion information in units of subblocks
CN114080812A (zh) 2019-06-13 2022-02-22 Lg 电子株式会社 使用sbtmvp的基于帧间预测的图像或视频编译
WO2020251320A1 (ko) * 2019-06-13 2020-12-17 엘지전자 주식회사 서브블록 단위의 시간적 움직임 벡터 예측자 후보 기반 영상 또는 비디오 코딩
KR102630798B1 (ko) 2019-06-13 2024-01-29 엘지전자 주식회사 Sbtmvp 기반 영상 또는 비디오 코딩
CN114175636B (zh) 2019-07-14 2024-01-12 北京字节跳动网络技术有限公司 自适应参数集中的自适应环路滤波的指示
BR112022003641A2 (pt) 2019-09-01 2022-05-24 Beijing Bytedance Network Tech Co Ltd Método e aparelho para processar dados de vídeo, e, meios de armazenamento e de gravação legíveis por computador não transitórios
WO2021061826A1 (en) * 2019-09-24 2021-04-01 Futurewei Technologies, Inc. Filter flags for subpicture deblocking
US20220368951A1 (en) * 2019-09-24 2022-11-17 Hfi Innovation Inc. Method and Apparatus of Separated Coding Tree Coding with Constraints on Minimum CU Size
WO2021057996A1 (en) 2019-09-28 2021-04-01 Beijing Bytedance Network Technology Co., Ltd. Geometric partitioning mode in video coding
WO2021072375A1 (en) * 2019-10-10 2021-04-15 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatuses for video coding using triangle partition
WO2021068921A1 (en) * 2019-10-10 2021-04-15 Beijing Bytedance Network Technology Co., Ltd. Motion vector handling in geometry partition mode
CN114556918A (zh) 2019-10-12 2022-05-27 北京字节跳动网络技术有限公司 细化视频编解码工具的使用和信令
AU2021215741A1 (en) * 2020-02-04 2022-09-08 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods about signaling high level syntax
WO2021196231A1 (zh) * 2020-04-03 2021-10-07 Oppo广东移动通信有限公司 变换方法、编码器、解码器以及存储介质
US20220086457A1 (en) 2020-09-17 2022-03-17 Lemon Inc. Subpicture track referencing and processing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030235250A1 (en) 2002-06-24 2003-12-25 Ankur Varma Video deblocking
US20060002474A1 (en) 2004-06-26 2006-01-05 Oscar Chi-Lim Au Efficient multi-block motion estimation for video compression
US7720154B2 (en) * 2004-11-12 2010-05-18 Industrial Technology Research Institute System and method for fast variable-size motion estimation
BRPI0717639A2 (pt) * 2006-10-30 2013-11-12 Nippon Telegraph & Telephone Método de geração de informações de referência preditas, métodos de codificação de decodificação de vídeo, aparelhos destinados aos mesmos, programas destinados aos mesmos, e mídias de armazenamento que armazenam os programas
JP4977094B2 (ja) * 2008-06-25 2012-07-18 株式会社東芝 画像符号化方法
US20120113326A1 (en) 2010-11-04 2012-05-10 Stmicroelectronics, Inc. System and method for detecting motion vectors in a recursive hierarchical motion estimation system using a non-rasterized scan
WO2012096614A2 (en) 2011-01-14 2012-07-19 Telefonaktiebolaget L M Ericsson (Publ) A method for filter control and a filtering control device
WO2012128242A1 (ja) * 2011-03-18 2012-09-27 ソニー株式会社 画像処理装置、画像処理方法、及び、プログラム
US9247266B2 (en) * 2011-04-18 2016-01-26 Texas Instruments Incorporated Temporal motion data candidate derivation in video coding
US9736489B2 (en) * 2011-09-17 2017-08-15 Qualcomm Incorporated Motion vector determination for video coding
WO2013053309A1 (en) 2011-10-11 2013-04-18 Mediatek Inc. Method and apparatus of motion and disparity vector derivation for 3d video coding and hevc
WO2013059504A1 (en) * 2011-10-21 2013-04-25 Dolby Laboratories Licensing Corporation Hierarchical motion estimation for video compression and motion analysis
US20130114717A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
US20130188715A1 (en) * 2012-01-09 2013-07-25 Qualcomm Incorporated Device and methods for merge list reordering in video coding
CN102984521B (zh) * 2012-12-12 2015-04-08 四川大学 基于时域相关性的高性能视频编码帧间模式判决方法
WO2014166068A1 (en) * 2013-04-09 2014-10-16 Mediatek Inc. Refinement of view synthesis prediction for 3-d video coding
US9948915B2 (en) 2013-07-24 2018-04-17 Qualcomm Incorporated Sub-PU motion prediction for texture and depth coding
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

Also Published As

Publication number Publication date
US9762927B2 (en) 2017-09-12
EP3050296A1 (en) 2016-08-03
JP2016537839A (ja) 2016-12-01
CA2922410C (en) 2019-09-17
BR112016006574B8 (pt) 2023-02-14
BR112016006574A2 (pt) 2017-08-01
JP6545667B2 (ja) 2019-07-17
US20150085929A1 (en) 2015-03-26
EP3050296B1 (en) 2019-03-20
CA2922410A1 (en) 2015-04-02
CN105580364A (zh) 2016-05-11
WO2015048459A1 (en) 2015-04-02
HUE043882T2 (hu) 2019-09-30
CN105580364B (zh) 2019-02-15
ES2732013T3 (es) 2019-11-20
KR101967967B1 (ko) 2019-04-10
KR20160058824A (ko) 2016-05-25

Similar Documents

Publication Publication Date Title
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
BR112016006607B1 (pt) Método e dispositivo para processamento de dados de vídeo, e memória legível por computador
CN112956190B (zh) 仿射运动预测
ES2866035T3 (es) Restricción de los valores señalizados de píxeles de escape en la codificación de vídeo por el modo de paleta
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
ES2842109T3 (es) Predicción residual avanzada basada en bloques para la codificación de vídeo 3D
JP6535673B2 (ja) 非対称動き分割を使用するビデオコーディング技法
ES2796824T3 (es) Simplificaciones en la obtención de vectores de disparidad y la predicción de vectores de movimiento en codificación de vídeo 3D
BR112021005357A2 (pt) aprimoramentos em preditor de vetor de movimento baseado em histórico
WO2019147826A1 (en) Advanced motion vector prediction speedups for video coding
BR112015032150B1 (pt) Intra-predição a partir de bloco preditivo
BR112017003073B1 (pt) Unificação de cópia de intrabloco e interpredição
BR112017020102B1 (pt) Processo de amostragem descendente para modo de previsão de modelo linear
BR112015032977B1 (pt) Equipamento e método para codificar informações de vídeo, equipamento e método para decodificar informações de vídeo, e memória legível por computador
BR112016000866B1 (pt) Processamento de compensação de iluminação para codificação de vídeo
BR112016000863B1 (pt) Previsão residual de componente intercor
BR112014006185B1 (pt) Método e aparelho para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo, e memória legível por computador
KR20150139953A (ko) 백워드 뷰 합성 예측
WO2014055833A1 (en) Inter-view predicted motion vector for 3d video
BR112015016011B1 (pt) Método de decodificação de vídeo inter-vista ou intercamada, método de codificação de vídeo inter-vista ou inter-camada, dispositivo e memória legível por computador
BR112016008369B1 (pt) Extensão de padrão de wedgelet para intracodificação de profundidade
BR112021014603A2 (pt) Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo
CN113519159A (zh) 视频编解码的方法和装置
BR112016006677B1 (pt) Tipo de dependência inter-vista em mv-hevc
BR112020025982A2 (pt) sinalização de preditor de vetor de movimento de unidade de subpredição

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
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/09/2014, OBSERVADAS AS CONDICOES LEGAIS

B16C Correction of notification of the grant [chapter 16.3 patent gazette]

Free format text: REFERENTE A RPI 2717 DE 31/01/2023, QUANTO AO ITEM (73) ENDERECO DO TITULAR.