BR112016006607B1 - Método e dispositivo para processamento de dados de vídeo, e memória legível por computador - Google Patents

Método e dispositivo para processamento de dados de vídeo, e memória legível por computador Download PDF

Info

Publication number
BR112016006607B1
BR112016006607B1 BR112016006607-3A BR112016006607A BR112016006607B1 BR 112016006607 B1 BR112016006607 B1 BR 112016006607B1 BR 112016006607 A BR112016006607 A BR 112016006607A BR 112016006607 B1 BR112016006607 B1 BR 112016006607B1
Authority
BR
Brazil
Prior art keywords
sub
pus
video
block
motion
Prior art date
Application number
BR112016006607-3A
Other languages
English (en)
Other versions
BR112016006607A2 (pt
BR112016006607B8 (pt
Inventor
Ying Chen
Geert Van der Auwera
Li Zhang
Hongbin Liu
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 BR112016006607A2 publication Critical patent/BR112016006607A2/pt
Publication of BR112016006607B1 publication Critical patent/BR112016006607B1/pt
Publication of BR112016006607B8 publication Critical patent/BR112016006607B8/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/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/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/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/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

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

PREVISÃO DE VETOR DE MOVIMENTO TEMPORAL COM BASE EM UNIDADE DE SUBPREVISÃO (PU) EM HEVC E PROJETO DE SUB-PU EM 3D-HEVC. Trata-se de técnicas que são descritas para previsão de movimento com base em unidade de subprevisão (PU) para codificação de vídeo em HEVC e 3D-HEVC. Em um exemplo, as técnicas incluem um modo de previsão de vetor de movimento temporal avançado (TMVP) para prever 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 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 vetores de movimento diferentes e índices de referência para cada uma dentre as sub-PUs e a PU. Em outro exemplo, as técnicas incluem armazenar informações de movimento separadas derivadas para cada sub-PU de uma PU atual prevista com o uso de um modo de previsão de síntese de vista posterior de sub-PU 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 prever PUs subsequentes para (...).

Description

[0001] Este pedido reivindica o benefício do Pedido de Patente Provisório no U.S. 61/883.111, depositado em 26 de setembro 2013, do Pedido de Patente Provisório no U.S. 61/887.915, depositado em 7 de outubro 2013, do Pedido de Patente Provisório no U.S. 61/892.327, depositado em 17 de outubro de 2013 e do Pedido de Patente Provisório no U.S. 61/898.385, depositado em 31 de outubro 2013, em que o conteúdo completo de cada um dos quais é incorporado ao presente 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 de vídeo digital podem ser incorporadas em uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão avançar digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores do tipo laptop ou desktop, computadores do tipo tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digitais, reprodutores de mídia digitais, dispositivos de video game, consoles de video game, celular ou telefones de rádiossatélite, conhecidos como "telefones inteligentes", dispositivos de teleconferência por vídeo, dispositivos de difusão por vídeo e similares. Os dispositivos de vídeo digital implantam 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, criptografar, decodificar e/ou armazenar informações de vídeo digital de modo mais eficaz implantando-se tais técnicas de compressão de vídeo.
[0004] As técnicas de codificação de vídeo realizam predição espacial (intra imagem) e/ou predição espacial (inter imagem) para reduzir ou remover redundância inerente às sequências de vídeo. Para codificação de vídeo com base 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 particionada em blocos de vídeo, que também podem ser chamados de 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 imagem são criptografados com o uso de predição espacial em relação às amostras de referência em blocos próximos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial em relação a amostras de referência em blocos próximos na mesma imagem ou predição temporal em relação às amostras de referência em outras imagens de referência. Imagens podem ser chamadas de quadros e imagens de referência podem ser chamadas de 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 é criptografado 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 indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é criptografado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes residuais, os quais os mesmos podem ser quantizados. O coeficiente de transformada quantizado pode ser disposto inicialmente em uma matriz bidimensional e varrido a fim de produzir um vetor monodimensional de coeficiente de transformada, e a codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
SUMÁRIO
[0006] Em geral, esta revelação descreve técnicas para predição de movimento com base em unidade de subpredição (PU) para codificação de vídeo no padrão de Codificação de Vídeo de Alta Eficácia (HEVC) e na extensão em 3D para o padrão HEVC. Em um exemplo, esta revelação descreve técnicas para realizar um modo de predição de vetor de movimento temporal avançado (TMVP) para prever sub-PUs de uma PU em codificação de camada única para a qual o aperfeiçoamento de vetor de movimento pode ser permitido. Convencionalmente, o projeto de sub-PU é apenas habilitado para predição de movimento entre camadas e entre vistas com o uso de um modo de interpredição de fusão que não permite aperfeiçoamento adicional de vetores de movimento previstos. 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 vetores de movimento diferentes e índices de referência para cada uma dentre as sub-PUs e a PU.
[0007] A extensão HEVC em 3D suporta a codificação do formato de vídeo de múltiplas vistas mais profundidade. Em um exemplo, em um modo de predição de síntese de vista posterior de sub-PU, informações de movimento para uma PU atual são previstas a partir de um vetor de movimento de disparidade e uma imagem de referência entre vistas 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 imagem de referência entre vistas. No modo de BVSP de sub-PU, a compensação de movimento é realizada para prever cada uma das sub-PUs da PU com base nas informações de movimento de sub-PU separadas. Convencionalmente, após realizar a compensação de movimento para prever cada uma das sub-PUs, apenas o vetor de movimento de disparidade é armazenado para a PU atual. De acordo com as técnicas de esta revelação, para cada PU prevista 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 prever PUs subsequentes para as quais a PU atual é um bloco próximo.
[0008] Além disso, esta revelação descreve técnicas para aplicar um filtro de desbloqueio a cada unidade de codificação (CU) de um bloco de vídeo para filtrar limites de unidade de transformada (TU) e limites de PU, incluindo sublimites de PU dentro da CU mediante a criação de limites de PU artificiais ou limites de TU artificiais nos sublimites de PU.
[0009] Em um exemplo, esta revelação é direcionada a um método para processamento dados de vídeo que compreendem determinar um primeiro vetor de movimento de estágio para uma PU de uma CU de um bloco de vídeo de blocos próximos 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 imagem de referência que corresponde à PU; particionar a PU em duas ou mais sub-PUs; determinar segundas informações de movimento de estágio para cada uma das sub-PUs do bloco da imagem de referência identificadas 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.
[0010] Em 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 de blocos próximos 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 imagem de referência que corresponde à PU, particionar a PU em duas ou mais sub-PUs, determinar segundas informações de movimento de estágio para cada uma das sub-PUs do bloco da imagem de referência identificada 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 subPUs inclui 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 de blocos próximos 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 imagem de referência que corresponde à PU; meios para particionar a PU em duas ou mais sub-PUs; meios para determinar segundas informações de movimento de estágio para cada uma das subPUs do bloco da imagem de referência identificadas 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 subPUs 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 processamento de dados de vídeo que, quando executadas, fazem com que um ou mais processadores determinem um primeiro vetor de movimento de estágio para uma PU de uma CU de um bloco de vídeo de blocos próximos 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 imagem de referência que corresponde à PU; particionem a PU em duas ou mais sub-PUs; determinem segundas informações de movimento de estágio para cada uma das sub-PUs do bloco da imagem de referência identificada 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 subPUs separadamente com base nas segundas informações de movimento de estágio para cada uma das sub-PUs.
[0013] Em outro exemplo, esta revelação é direcionada a um método para processamento dados de vídeo, em que o método compreende determinar primeiras informações de movimento para uma PU de uma CU de um bloco de vídeo de blocos próximos da PU de acordo com um modo de BVSP, em que 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 imagem de referência entre vistas; dividir a PU em duas ou mais subPUs; determinar segundas informações de movimento para cada uma das sub-PUs, em que as segundas informações de movimento incluem pelo menos um vetor de movimento de disparidade associado a um bloco de profundidade da imagem de referência entre vistas correspondentes a cada uma das sub-PUs; realizar a compensação de movimento para prever cada uma das sub-PUs da imagem de referência entre vistas com base nas segundas informações de movimento; e armazenar as segundas informações de movimento para cada uma das sub-PUs da PU em uma memória a ser usada para prever 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 determinar primeiras informações de movimento para uma PU de uma CU de um bloco de vídeo de blocos próximos da PU de acordo com a modo de BVSP, em que 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 imagem de referência entre vistas, dividir a PU em duas ou mais sub-PUs, determinar segundas informações de movimento para cada uma das sub-PUs, em que as segundas informações de movimento incluem pelo menos um vetor de movimento de disparidade associado a um bloco de profundidade da imagem de referência entre vistas que corresponde a cada uma das sub-PUs e realizar a compensação de movimento para prever cada uma das sub-PUs da imagem de referência entre vistas com base nas segundas informações de movimento. A memória é configurada para armazenar as segundas informações de movimento para cada uma das sub-PUs da PU a ser usada para prever PUs subsequentes.
[0015] Em um exemplo adicional, esta revelação é direcionada a um dispositivo de processamento de vídeo que compreende meios para determinar primeiras informações de movimento para uma PU de uma CU de um bloco de vídeo de blocos próximos da PU de acordo com um modo BVSP, em que 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 imagem de referência entre vistas; meios para particionar a PU em duas ou mais sub-PUs; meios para determinar segundas informações de movimento para cada uma das sub-PUs, em que as segundas informações de movimento incluem pelo menos um vetor de movimento de disparidade associado a um bloco de profundidade da imagem de referência entre vistas correspondentes a cada uma das sub-PUs; meios para realizar a compensação de movimento para prever cada uma dentre as sub-PUs da imagem de referência entre vistas com base nas segundas informações de movimento; e meios para armazenar as segundas informações de movimento para cada uma das sub-PUs da PU em uma memória a ser usada para prever PUs subsequentes.
[0016] Em outro exemplo, esta revelação é direcionada a um meio de armazenamento legível por computador que armazena instruções para processamento de dados de vídeo que, quando executadas, fazem com que um ou mais processadores determinem primeiras informações de movimento para uma PU de uma CU de um bloco de vídeo de blocos próximos da PU de acordo com um modo de BVSP, em que 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 identifiquem uma imagem de referência entre vistas; particionem a PU em duas ou mais sub-PUs; determinem segundas informações de movimento para cada uma das sub-PUs, em que as segundas informações de movimento incluem pelo menos um vetor de movimento de disparidade associado a um bloco de profundidade da imagem de referência entre vistas correspondentes a cada uma das sub-PUs; realizem a compensação de movimento para prever cada uma das sub-PUs da imagem de referência entre vistas com base nas segundas informações de movimento e armazenem as segundas informações de movimento para cada uma das subPUs da PU em uma memória a ser usada para prever PUs subsequentes.
[0017] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos 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 criptação e 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 partiçã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 próximos espaciais para modo de fusão e modo de predição de vetor de movimento avançado (AMVP), respectivamente.
[0022] A Figura 5 A é um diagrama conceitual que ilustra candidatos de predição de vetor de movimento temporal (TMVP).
[0023] A Figura 5B é um diagrama conceitual que ilustra dimensionamento de vetor de movimento (MV) para TMVP.
[0024] A Figura 6 é um fluxograma que ilustra um fluxo de processamento exemplificativo de um processo de filtro de desbloqueio.
[0025] A Figura 7 é um fluxograma que ilustra uma operação exemplificativa de um cálculo de resistência a limite (Bs) para um processo de filtro de desbloqueio.
[0026] A Figura 8 é um diagrama conceitual que ilustra informações reutilizadas ou referidas para um cálculo de Bs em um limite de unidade de árvore de codificação (CTU) para um processo de filtro de desbloqueio.
[0027] A Figura 9 é um diagrama conceitual que ilustra pixels envolvidos em uma decisão de filtro ligado/desligado e uma seleção de filtro forte/fraco para um 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, em que V3 denota a vista de base e uma imagem em uma vista de não base (isto é, VI ou V5) pode ser prevista a partir de imagens na vista de base do mesmo intervalo de tempo.
[0029] A Figura 11 é um diagrama conceitual que ilustra blocos próximos espaciais acessados para derivação de vetor de disparidade com base em bloco próximo (NBDV), em que os blocos próximos espaciais para 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 de síntese de vista posterior (BVSP) que atribui vetores de movimento diferentes para sub-PUs diferentes de uma PU.
[0031] A Figura 13 é um diagrama conceitual que ilustra predição de movimento entre vistas 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 prever sub-PUs em uma PU em codificação de camada única.
[0033] A Figura 15 é um diagrama de blocos que ilustra um exemplo de um criptografador 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 prever 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.
[0036] 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 sublimites de PU dentro da CU.
[0037] A Figura 19 é um fluxograma que ilustra uma operação exemplificativa de um modo de TMVP avançado para prever sub-PUs de uma PU em codificação de camada única.
DESCRIÇÃO DETALHADA
[0038] Esta revelação descreve técnicas para predição de movimento de nível de unidade de subpredição (PU) para codificação de vídeo com o uso da extensão em 3D para o padrão de Codificação de Vídeo de Alta Eficácia (HEVC). A extensão HEVC em 3D suporta a codificação do formato de vídeo de múltiplas vistas mais profundidade. Em codificação de vídeo de múltiplas vistas, uma imagem de vídeo atual pode ser prevista tanto por imagens de referência temporais em uma mesma vista e imagens de referência entre vistas em uma vista de referência.
[0039] Em um exemplo, a predição de síntese de vista em 3D-HEVC pode ser realizada com o uso de um modo de predição de síntese de vista posterior de sub-PU. No modo de BVSP de sub-PU, informações de movimento para uma PU atual são previstas a partir de um vetor de movimento de disparidade e um índice de vista de referência associado que identifica uma imagem de referência entre vistas. No modo de BVSP de sub-PU, a PU atual é particionada 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 imagem de referência entre vistas. A compensação de movimento é realizada para prever cada uma das sub-PUs da PU com base nas informações de movimento de sub-PU separadas. Convencionalmente, após realizar a compensação de movimento para prever cada uma das sub-PUs, 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 prevista 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 prever PUs subsequentes para as quais a PU atual é um bloco próximo.
[0041] Como outro exemplo, esta revelação descreve técnicas para realizar um modo de predição de vetor de movimento temporal avançado (TMVP) para prever sub-PUs de uma PU em codificação de camada única para a qual o aperfeiçoamento de vetor de movimento pode ser permitido. Convencionalmente, o projeto de sub-PU é apenas habilitado para predição de movimento entre camadas e entre vistas com o uso de um modo de interpredição de fusão que não permite aperfeiçoamento adicional de vetores de movimento previstos. 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 vetores de movimento diferentes e índices de referência para cada um dentre as sub-PUs e a PU. Uma sub- PU dentro de uma PU pode ser de tamanho NxN ou NxM, em que N e M podem ser quaisquer números inteiros. Os tamanhos de sub-PU típicos 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 de blocos próximos da PU, em que o primeiro vetor de movimento de estágio identifica um bloco de uma imagem de referência que corresponde à PU atual. Similar à predição de movimento de sub-PU em 3D- HEVC, o tamanho da área correspondente (por exemplo, bloco) da imagem de referência que inclui as sub-PUs menores é o mesmo que o tamanho da PU atual. Dessa maneira, as sub-PUs da PU atual têm sub-PUs correspondentes na área correspondente da imagem de referência identificada com um vetor de movimento único. O primeiro vetor de movimento de estágio pode ser identificado com base nas proximidades espaciais e/ou temporais. De modo alternativo, o primeiro vetor de movimento de estágio pode ser definido para ser constante, por exemplo, 0 ou outro valor predefinido, e está relacionado ao tamanho da PU atual. Em outra alternativa, cada uma das sub-PUs da PU pode identificar seu bloco correspondente da imagem de referência com um vetor de movimento diferente.
[0043] Conforme descrito acima, a PU atual é particionada 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 imagem 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 subPUs incluem pelo menos um vetor de movimento e um índice de referência associado. A compensação de movimento é realizada para prever 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.mt- evry.fr/jct/doc_end_user/docunients/12_Geneva/wgl 1/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 criptografador recente de HEVC, descrita em Il-Koo Kim et al., "High Efficiency Video Coding (HEVC) Test Model 10 (HMIO) Encoder Description, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC 1 /SC2.9/WG 11", 12° Encontro: Geneva, CH, 14 a 23 de janeiro de 2013, está disponível em: http://phenixint- evry.fr/jct/doc_end_user/documents/12_Geneva/wgl 1/JCTVC-L 002-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 2 de agosto de 2013, JCT3V-E1004v6, está disponível em http://phenix.it- sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wgl 1/JCT3 V-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 2 de agosto de 2013, JCT3V-E1001v3, está disponível em http://phenix.it- sudparis.eu/jct2/doc_end_user/docunients/5_Vienna/wgl 1/.TCT3V-E100 l-v3.zip,
[0052] A Figura 1 é um diagrama de blocos que ilustra um sistema de criptaçã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 criptografados 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 video game, 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 criptografados 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 criptografados 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 criptografados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo criptografados 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 criptografados podem ser emitidos da interface de saída 22 para um dispositivo de armazenamento. De modo similar, dados criptografados 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 qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo criptografado 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 criptografados e transmitir esses dados de vídeo criptografados 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 criptografado 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 criptografado armazenados em um servidor de arquivos. A transmissão de dados de vídeo criptografados 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 é criptografado 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 criptografador 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 criptação e/ou decodificação de vídeo digital. Embora, em geral, as técnicas desta revelação sejam realizadas por um dispositivo de criptografia de vídeo, as técnicas também podem ser realizadas por um criptografador/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 criptaçã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 criptografado pelo criptografador 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 criptografador 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 criptografados a partir do dispositivo de fonte 12 e fornecer os dados de vídeo criptografados 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 criptografados a partir do dispositivo de fonte 12 e produzir um disco que contém os dados de vídeo criptografados. 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 2,0 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 (TIM). De modo alternativo, o criptografador 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 portas programáveis em 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 meio 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 criptografador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais criptografadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um criptografador/decodificador combinados (CODEC) em um respectivo dispositivo. Um dispositivo que inclui criptografador 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 criptação intrapredição, a HEVC WD10 pode fornecer tanto quanto trinta e três modos de criptaçã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 imagens. As imagens também podem ser chamadas de "quadros". Uma imagem 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 imagem pode ser monocromática e pode incluir apenas uma matriz de amostras de luma.
[0069] A HEVC WD10 descreve que um quadro ou imagem 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 imagem pode ser particionado 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 filhos e cada nó filho pode, por sua vez, ser um nó pai e ser dividido em outros quatro nós filhos. Um nó filho 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, o particionamento da CU em uma ou mais PUs. Os modos de partição podem diferir entre se a CU é criptografada em modo de omissão ou direto, criptografada em modo intrapredição ou criptografada em modo de interpredição, as PUs podem ser particionadas 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 particionadas, 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 é criptografada 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 imagem de referência para a qual o vetor de movimento aponta e/ou uma lista de imagens 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 criptografador 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 de 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 imagens de vídeo. Um grupo de imagens (GOP) compreende geralmente uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens ou, em outro lugar, que descreve um certo número de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir uma fatia de dados de sintaxe que descrevem um modo de codificação para a respectiva fatia. O criptografador de vídeo 20 opera tipicamente em blocos de vídeo dentro de fatias de vídeo individuais a fim de criptar 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 PIEVC 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 é particionada, enquanto a outra direção é particionada 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 é particionada 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, criptografador 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 imagem não codificada e valores de predição correspondentes às PUs. O criptografador 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 criptografador 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 criptografador 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 criptografador de vídeo 20 pode realizar uma varredura adaptativa. Após varrer o coeficiente de transformada quantizado para formar um vetor monodimensional, o criptografador de vídeo 20 pode criptar 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 de entropia. O criptografador de vídeo 20 também pode criptar 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 criptografador 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 criptografador 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 criptografador de vídeo 20 pode emitir um fluxo de bits que inclui uma sequência de bits que forma uma representação de imagens 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 imagem (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 imagens 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 imagens 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 criptografador 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 imagem, o decodificador de vídeo 30 pode reconstruir a imagem. O decodificador de vídeo 30 pode armazenar imagens decodificadas em um armazenamento temporário de imagem decodificada para emissão e/ou para uso na decodificação de outras imagens.
[0085] Em MV-HEVC e 3D-HEVC, o criptografador 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 imagem 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 imagens de profundidade codificadas de uma vista específica quanto imagens 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 imagens codificadas que têm características de vídeo diferentes de imagens 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 imagens 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 imagens 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 imagem de referência 0 (RefPicList0) e à lista de imagem de referência 1 (RefPicList1) de uma imagem atual. Quando apenas uma lista de imagem de referência está disponível para uma imagem ou fatia, apenas RefPicList0 pode estar disponível e as informações de movimento de cada bloco de uma fatia são 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 imagem de referência na lista de imagem de referência atual (RefPicList0 ou RefPicList1). Um vetor de movimento tem uma componente vertical e um horizontal.
[0089] A contagem de ordem de imagem (POC) é amplamente usada em padrões de codificação de vídeo para identificar uma ordem de exibição de uma imagem. Embora haja casos nos quais duas imagens 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 imagens 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 imagens são tipicamente usados para construção de lista de imagem de referência, a derivação de um conjunto de imagem 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 particionado 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 é particionado 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 é particionado em quatro divisões de 8x8 MB, cada partição de 8x8 MB pode ser adicionalmente particionada 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 particionada 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 imagem. 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 prever 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 imagem 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 imagens 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 imagem 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 previstos 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 PUO 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 imagem 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 imagem 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 imagem atual 102. Um vetor de movimento para um candidato de TMVP é derivado de uma PU colocalizada 104 de imagem 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 imagem colocalizada 106 e a imagem colocalizada de referência 107) e a diferença temporal atual (isto é, entre a imagem atual 102 e a imagem 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 imagens no tempo de apresentação. Um vetor de movimento associa duas imagens: a imagem de referência e a imagem que contêm o vetor de movimento (a saber, a imagem de contenção). Quando um vetor de movimento é utilizado para prever outro vetor de movimento, a distância da imagem de contenção e da imagem de referência é calculada com base nos valores de Contagem de Ordem de Imagem das imagens. Para um vetor de movimento a ser previsto, tanto sua imagem de contenção quanto a imagem 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 imagens contentoras para os dois vetores de movimento são as mesmas enquanto as imagens 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 imagem na lista 0 e um vetor de movimento de um segundo candidato que se refere a uma imagem 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, imagens 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)) 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.
[0122] As variáveis a seguir são definidas para a decisão de filtro ligado/desligado:
Figure img0002
[0123] 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.
[0124] Adicionalmente, se a condição for cumprida, as variáveis dE, dEpl e dEp2 estão em conjunto como a seguir:
[0125] dE é definido igual a 1
[0126] Se dpO + dp3 < (β + (β » 1)) » 3, a variável dEp1 é um conjunto igual a 1
[0127] Se dqO + dq3 < (β + (β » I)) » 3, a variável dEql é um conjunto igual a 1
[0128] Uma decisão de filtro ligado/desligado é tomada de uma maneira similar conforme descrito acima para o segundo conjunto de quatro linhas 119.
[0129] 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
[0130] A decisão de se seleciona filtragem forte ou fraca para o segundo conjunto de quatro linhas 119 é tomada de uma maneira similar.
[0131] 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
[0132] 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.
[0133] Delta (Δ) é definido como a seguir.
Figure img0005
[0134] Quando abs(Δ) for menor que tC *10,
Figure img0006
[0135] Se dEp1 for igual a 1,
Figure img0007
[0136] Se dEq1 for igual a 1,
Figure img0008
[0137] 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
[0138] 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.
[0139] 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 imagem em uma vista de não base (isto é, V1 ou V5) pode ser prevista a partir de imagens na vista de base do mesmo intervalo de tempo. A predição de amostra entre vistas, 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.
[0140] Em MV-HEVC, uma imagem atual em uma vista de não base (isto é, V1 ou V5) pode ser prevista tanto pelas imagens na mesma vista quanto pelas imagens em uma vista de referência do mesmo período de tempo mediante a inclusão de todas essas imagens em listas de imagem de referência para a imagem atual. Uma lista de imagem de referência da imagem atual, portanto, contém tanto as imagens de referência temporais quanto as imagens de referência entre vistas. Um vetor de movimento associado a um índice de referência que corresponde a uma imagem 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 imagem de referência entre vistas é indicado como um vetor de movimento de disparidade.
[0141] A extensão HEVC em 3D suporta todos os recursos de MV-HEVC de modo que a predição de amostra entre vistas 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 entre vistas que pertencem ao mesmo objeto. A derivação de vetor de disparidade, portanto, é uma tecnologia básica em 3D-HEVC.
[0142] 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 entre vistas for habilitada, os vetores de movimento que correspondem às imagens de referência entre vistas, 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.
[0143] 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, AO, Al, BO, B l 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.
[0144] É 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 imagem colocalizada, conforme usado no modo de TMVP e, além disso, outra imagem que pode ter uma chance melhor de usar compensação de movimento de disparidade, por exemplo, uma imagem de acesso aleatório ou uma imagem que tem uma ID temporal mais baixa. Para cada temporal imagem, 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 entre vistas na imagem da vista de referência, como em, por exemplo, predição de movimento entre vistas e predição residual entre vistas.
[0145] 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.
[0146] 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).
[0147] 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:
[0148] 1. Localizar um bloco de profundidade correspondente com base no vetor de disparidade derivado pelo esquema de NBDV para uma PU atual em uma imagem 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.
[0149] 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.
[0150] 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 entre vistas para a PU atual. O vetor de disparidade não refinado (de NBDV), no entanto, pode ser usado para predição residual entre vistas 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.
[0151] 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.
[0152] A Figura 12 é um diagrama conceitual que ilustra um modo de BVSP 124 que atribui vetores de movimento diferentes para sub-PUs diferentes de uma PU atual 126 em uma imagem 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 imagem de referência entre as vistas 128. Essa primeira etapa do modo de BVSP pode ser substancialmente similar à derivação de NBDV descrita acima.
[0153] A PU atual 126 é, então, adicionalmente particionada em sub-regiões ou sub-PUs. Por exemplo, uma PU com seu tamanho indicado por NxM pode ser adicionalmente particionada 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 imagem de vista de profundidade de referência 129 associada a uma imagem de referência entre vistas 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 a zero. Essa segunda etapa do modo de BVSP pode ser substancialmente similar à derivação de Do-NBDV descrita acima.
[0154] Após cada sub-região ou sub-PU de PU atual 126 ter suas informações de movimento previstas, o motor de compensação de movimento de HEVC pode ser usado para prever cada sub-região ou sub-PU de PU atual 126 de imagem de referência entre vistas 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 prever 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.
[0155] 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.
[0156] 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.
[0157] 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 entre vistas de nível de sub-PU é descrito para o candidato de fusão entre vistas, isto é, o candidato derivado de um bloco de referência em uma imagem de referência entre vistas.
[0158] A Figura 13 é um diagrama conceitual que ilustra predição de movimento entre vistas 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 entre vistas é 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 entre vistas de nível de sub-PU (SPIVMP) é, portanto, proposto em que a PU atual 134 é particionada 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 SPIV MP, 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.
[0159] No Pedido Provisório no U.S. 61/858.089, depositado em 24 de julho de 2013, intitulado “ADVANCED MOTION PREDICTION FOR 3D VIDEO CODING” por Ying Chen e Li Zhang, é proposto que o candidato de MPI também pode ser estendido de uma maneira similar à predição de movimento entre vistas 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.
[0160] Os projetos de sub-PU em 3D-HEVC, incluindo BVSP de sub-PU, predição de movimento entre vistas de sub-PU e MPI de sub-PU, descritos acima podem passar por algumas questões.
[0161] Primeiro, conforme descrito acima, no modo de BVSP de sub-PU, a compensação de movimento é realizada para prever 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 imagem de referência entre vistas identificada por um vetor de movimento de disparidade selecionado para a PU atual. Após realizar a compensação de movimento para prever cada uma das sub-PUs, no entanto, apenas o vetor de movimento de disparidade que corresponde a cada lista de imagem de referência é armazenado para a PU atual. Nesse caso, quando a PU atual é usada para prever 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.
[0162] 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.
[0163] 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 imagem. 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.
[0164] 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 é subparticionada. 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.
[0165] Esta revelação descreve diversas técnicas para abordar as questões descritas acima.
[0166] 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 prever cada uma das sub-PUs da PU atual com base nas informações de movimento de sub-PU separadas derivadas com base nos blocos correspondentes de profundidade de uma imagem de referência entre vistas 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 imagem de referência é armazenado para o PU atual. O único vetor de movimento de disparidade é armazenado para cada lista de imagem 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.
[0167] De acordo com as técnicas desta revelação, para cada PU prevista com o uso do modo de BVSP de sub-PU, uma codificação de vídeo dispositivo, isto é, criptografador 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 criptografador 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 imagem decodificada, com uma lista de imagem de referência que inclui a imagem de referência entre vistas identificadas por um índice de vista de referência associado ao vetor de movimento de disparidade para a PU atual.
[0168] As informações de movimento adicionais mais completas armazenadas para a PU atual podem, então, ser usadas para prever PUs subsequentes para as quais a PU atual é um bloco próximo. Por exemplo, o criptografador 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 prever 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 criptografador 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 criptografador 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 prever as sub-PUs da PU subsequente. A operação de prever 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.
[0169] Em relação à segunda questão descrita acima, esta revelação descreve técnicas para realizar um modo de TMVP avançado para prever 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 criptografador 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.
[0170] As Figuras 14A e 14B são diagramas conceituais que ilustram o modo de TMVP avançado para prever 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 imagem de referência para a PU atual 173 na imagem 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 imagem de referência e indica cada um dos conjuntos de informações de movimento para uma das sub PUs de PU atual 173 na imagem 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.
[0171] Aplicável à codificação de camada única e TMVP de sub-PU, o criptografador 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.
[0172] Em outro exemplo, similar à HEVC, os dados de aperfeiçoamento de movimento para vetores de movimento de sub-PU podem ser transmitidos do criptografador 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 imagem 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 imagens de referência diferentes identificadas pelos valores de índice de referência diferentes das subPUs ou PUs.
[0173] 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.
[0174] 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 imagem de referência a partir da qual são determinadas as informações de movimento de nível de sub-PU.
[0175] 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.
[0176] 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.
[0177] 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.
[0178] 4. O índice de referência com uma distância de POC mais próxima à imagem 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".
[0179] 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.
[0180] 6. Visto que a imagem usada para TMVP é tipicamente fixada para cada fatia, como em AVC e IIEVC, o índice de referência primário pode ser o mesmo que o índice de referência que indica a TMVP. 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 imagem 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 imagem identificada por RefPicListU pertence ou à RefPicList0 ou à RefPicList1 ou a ambas e não há imagem que pertença à RefPicListU, mas não em RefPicList0 ou RefPicList1. A RefPicListU não tem duas imagens idênticas. De modo alternativo e, além disso, RefPicListU pode conter apenas imagens de referência temporais dentro da mesma camada ou marcadas como imagens de curto prazo.
[0181] 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.
[0182] 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.
[0183] 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.
[0184] 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.
[0185] Quando um índice de referência e a "primeiro vetor de estágio" são identificados, a imagem de referência que é usada para determinar as informações de movimento de sub-PU é identificada, bem como a região na imagem de referência que corresponde à PU atual. Em um caso, um índice de referência pode indicar uma imagem de referência que é diferente da imagem a ser usada para TMVP devido a, por exemplo, em que o índice de referência é derivado e a imagem usada para TMVP é explicitamente sinalizada. Nesse caso, o índice de referência pode ser alterado para identificar a imagem usada para TMVP e o vetor de movimento pode ser dimensionado em direção à imagem usada para TMVP com base em distâncias de POC.
[0186] 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 imagem de referência identificada.
[0187] 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 imagem 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 imagem de referência é gerado para cada uma das sub-PUs na PU atual, similar à predição de movimento entre vistas 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 imagem de referência alvo para cada lista de imagem de referência.
[0188] Conforme ilustrado na Figura 14B, a imagem de referência 183 identificada pelo vetor de movimento 186 dentro da sub-PU correspondente 185 da imagem de referência de fonte de movimento 182 é PicOri, a imagem de referência (isto é, imagem de fonte de movimento) 182 que contém a sub-PU correspondente 185 é PicT, a imagem atual 180 é PicCur e a imagem 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 prever uma sub-PU de PU 181 na imagem 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 imagem de referência que não é a imagem 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.
[0189] 1. Escalonar o vetor de movimento em direção a um índice de referência fixado da imagem 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 imagem. Verifique que as operações de multiplicação e desvio acima podem ser simplificadas de uma maneira similar como em TMVP de HEVC.
[0190] 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.
[0191] b. O índice de referência fixado pode ser derivado dos blocos próximos espaciais.
[0192] 2. Escalonar o vetor de movimento sempre em direção à imagem de referência da sub-PU correspondente, que é PicOri: MV' = MV * (POC(PieOri)- POC(PicCur))/(POC(PicOri)-POC(PicT)).
[0193] 3. Escalonar o vetor de movimento sempre em direção à imagem colocalizada, que é PicT: MV' = MV * (POC(PicT)-POC(PieCur))/(POC(PicOri)-POC(PicT)).
[0194] Conforme indicado acima, a imagem de referência de alvo de cada lista de imagem de referência é definida para a imagem de referência que tem um índice de referência igual a 0 na lista de imagem de referência. Em outro exemplo, a imagem de referência de alvo de cada lista de imagem de referência é definida para a mesma imagem 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.
[0195] 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.
[0196] 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 imagem de referência, mas antes de armazenar de fato o bloco de vídeo reconstruído em um armazenamento temporário de imagem decodificada de criptografador de vídeo 20 e/ou decodificador de vídeo 30.
[0197] Em um primeiro exemplo, logo antes de aplicar um filtro de desbloqueio à CU que inclui PUs com sub-PUs, o criptografador 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.
[0198] 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 criptografador 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 criptografador 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 criptografador 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.
[0199] 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.
[0200] 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.
[0201] 1. Quando a árvore de transformada tem 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.
[0202] 2. Quando a árvore de transformada tem 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:
[0203] 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 filhos, o seguinte se aplica:
[0204] i. Estabelecer cbf_luma, cbf_cb, e cbf_cr do nó para ser o mesmo que aquele do nó pai e split_transform_flag igual a 0;
[0205] ii. Estabelecer o nó atual para o nó filho, e ir para a etapa a.
[0206] b. Para o nó atual, se split_transform_flag for 1, para cada um dentre os quatro nós filhos, o seguinte se aplica: estabelecer o nó atual para o nó filho, e ir para a etapa a.
[0207] 3. De modo alternativo, quando uma hierarquia de árvore de transformada é 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.
[0208] 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) é diferente de 0, ou, de outro modo, 0.
[0209] 5. Quando a árvore de transformada tem 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.
[0210] a. A split_transform_flag da CU é definida primeiro em 1.
[0211] b. Se a particionamento da CU é NxN, a PU normal corresponde a um nó. Se o particionamento da CU for 2NxN ou Nx2N, a PU normal corresponde a dois nós.
[0212] 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.
[0213] 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.
[0214] 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.
[0215] 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.
[0216] 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.
[0217] 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.
[0218] 2. Para qualquer PU normal em uma CU avançada, a mesma é definida para ser uma ou mais unidades de codificação.
[0219] 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.
[0220] 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.
[0221] 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ó pai 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ó pai na árvore quadrática.
[0222] 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.
[0223] 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.
[0224] 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:
[0225] a. Para cada uma dentre as áreas quadradas de um quarto do nó atual em ordem de varredura de rastreio, o seguinte se aplica:
[0226] i. Estabelecer essa área de um quatro como um nó filho.
[0227] ii. Se o nó filho 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 particionamento de 2Nx2N.
[0228] 1. De modo alternativo, ou adicionalmente, o valor de CBF de cada componente do nó filho é definido para ser 0.
[0229] 2. De modo alternativo, ou adicionalmente, o sinalizador de divisão de TU da unidade de codificação é definido para ser 0.
[0230] iii. Além disso, se o nó filho é codificado com sub-PUs, e contém mais que 1 sub-PU, um sinalizador de divisão é definido a 1 para o nó filho (desse modo, considerado como uma árvore de codificação) e o seguinte se aplica:
[0231] 1. Alternativamente, além disso, se o valor de CBF não está presente para o nó filho, o mesmo é definido igual ao valor de CBF do nó atual de nível mais alto (o nó pai desse nó filho).
[0232] 2. Estabelecer o nó filho como o nó atual e ir para a etapa a.
[0233] iv. Além disso, se o nó filho contém apenas 1 sub-PU, o nó filho é 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).
[0234] 1. O modo de particionamento do nó filho é definido para ser o modo de particionamento da sub- PU
[0235] a. Se o modo de particionamento da sub- PU for 2Nx2N, a sub-PU contém um bloco de 2Nx2N e o modo de particionamento da unidade de codificação é definido para ser 2Nx2N.
[0236] b. Se o modo de particionamento da sub- PU for Nx2N, a sub-PU contém dois blocos de Nx2N e o modo de particionamento da unidade de codificação é definida para ser Nx2N.
[0237] c. Se o modo de particionamento da sub- PU for 2NxN, a sub-PU contém dois blocos de 2NxN e o modo de particionamento da unidade de codificação é definido para ser 2NxN.
[0238] 2. De modo alternativo, ou adicionalmente, se o valor de CBF não está presente para o nó filho, o mesmo é definido igual ao valor de CBF do nó atual de nível mais alto (o nó pai desse nó filho).
[0239] 3. De modo alternativo, ou adicionalmente, o sinalizador de divisão de TU da unidade de codificação é definido para ser 0.
[0240] 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 pelo menos uma parte de cada sub-PU.
[0241] 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.
[0242] 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:
[0243] 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 filhos, o seguinte se aplica:
[0244] i. Estabelecer a cbf_luma, cbf_cb, e cbf_cr do nó para ser a mesma que aquela do nó pai e a split_transform_flag igual a 0;
[0245] ii. Estabelecer o nó atual para o nó filho, e ir para a etapa a.
[0246] b. Para o nó atual, se split_transform_flag for 1, para cada um dentre os quatro nós filhos, o seguinte se aplica: estabelecer o nó atual para o nó filho, e ir para a etapa a.
[0247] 3. De modo alternativo, quando hierarquia de árvore de transformada é introduzida para um nó 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ó dividido recentemente são definidos para 0.
[0248] 4. De modo alternativo, quando hierarquia de árvore de transformada é introduzida para um nó e cbf_luma, cbf_cb, e cbf_cr são 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.
[0249] 5. Quando a árvore de transformada tem 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.
[0250] a. A split_transform_flag da CU é definida primeiro a 1.
[0251] b. Se o particionamento da CU for NxN, a PU normal corresponde a um nó normal. Se o particionamento da CU for 2NxN ou Nx2N, a PU normal corresponde a dois nós normais. Se o particionamento da CU for 2NxnU, 2NxnD, nLx2N ou nRx2N, a PU normal corresponde a 0 ou 2 nós normais.
[0252] 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.
[0253] 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.
[0254] 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.
[0255] 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 a 0, ou, de outro modo, 0.
[0256] Alguns detalhes de implantação exemplificativa são fornecidos abaixo. O texto abaixo indica as modificações propostas ao 3D-HEVC WDl para implantação de parte das técnicas descritas nessa revelação.
PROCESSO DE DECODIFICAÇÃO H.8.1 PROCESSO DE DECODIFICAÇÃO GERAL
[0257] 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 imagem contenham dados de segmento de fatia para cada unidade de árvore de codificação da imagem, de modo que a divisão da imagem 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 particionamento da imagem.
H.8.5.3.3.2 PROCESSO DE SELEÇÃO DE IMAGEM DE REFERÊNCIA
[0258] A entrada a esse processo é um índice de referência refldxLX.
[0259] A saída desse processo é uma imagem 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.
[0260] A imagem de referência de saída RefPiclistaX[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 PicHeigbtlnSamplesC de amostras de croma refPicLXCb e refPicLXCr.
[0261] As matrizes de amostra de imagem 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 imagem decodificada anteriormente.
H.8.7 PROCESSO DE MODIFICAÇÃO DE ÁRVORE DE TRANSFORMADA H.8.7.1 GERAL
[0262] 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 particionamento 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.
[0263] 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:
[0264] - 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 particionamento 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
[0265] As entradas a esse processo são:
[0266] - 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 imagem atual,
[0267] - 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,
[0268] - tamanho de bloco de codificação de luma nCbS,
[0269] - uma variável que especifica a profundidade de árvore de codificação cuDepth,
[0270] - matriz de sinalizador de divisão de árvore de codificação split_cu_flag,
[0271] - matriz de sinalizador de divisão de árvore de transformada split_transform_flag,
[0272] - matriz de sinalizador de unidade de subpredição subPuFlag,
[0273] - tamanho de unidade de subpredição subPuSize,
[0274] A saída desse processo é a modificação de:
[0275] - matriz de sinalizador de divisão de árvore de transformada spHt_transform_flag,
[0276] Dependendo do valor de split_cu_flag[xCb + xB0][yCb + yB0][cuDepth], o seguinte se aplica:
[0277] - Se split_cu_flag[xCb + xB0][yCb + yB0][cuDepth] for igual a 1, as seguintes etapas ordenadas se aplicam:
[0278] 1. - As variáveis xB1 e yB1 são derivadas conforme o seguinte:
[0279] - A variável xB1 é definida igual a xB0 + (nCbS » 1).
[0280] - A variável yB1 é definida igual a yB0 + (nCbS » 1).
[0281] 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 definido igual a cuDepth + 1, matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de particionamento de unidade de codificação PariMode, 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.
[0282] 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 definido igual a cuDepth + 1, matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de particionamento 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.
[0283] 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 definido igual a cuDepth + 1, matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de particionamento 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] 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 definido igual a cuDepth + 1, matriz de sinalizador de divisão de árvore de codificação split_cu_flag, matriz de modo de particionamento de unidade de codificação PariMode, 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] - Caso contrário, (split_cu_flag[xCb+xB0] [yCb+yB0][cuDepth] é igual a 0), se nCbS for maior que subPUSize, as seguintes etapas ordenadas se aplicam:
[0286] 1. - As variáveis xB1 e yB1 são derivadas conforme o seguinte:
[0287] - A variável xB1 é definida igual a xB0 + (nCbS » 1).
[0288] - A variável yB1 é definida igual a yB0 + (nCbS » 1).
[0289] 2. Derivar variável subPuDebiockingFlag seguindo as etapas em ordem:
[0290] - subPuDebiockingFlag é definida igual a 0.
[0291] - Se subPuFlag [xCb + xB0][yCb + yBQ] for igual a 1, subPuDebiockingFlag é definida igual a 1.
[0292] - Se subPuFlag [xCb + xB1][yCb + yB0] for igual a 1, subPuDebiockingFlag é definida igual a 1.
[0293] - Se subPuFlag [xCb + xB0 j[yCb + yBI] for igual a 1, subPuDebiockingFlag é definido igual a 1.
[0294] - Se subPuFlag [xCb + xB1 j[yCb + yBI] for igual a 1, subPuDebiockingFlag é definido igual a 1.
[0295] - Se PariMode[xCb + xBQ][yCb + yB0] for igual a PART_nLx2N, ou
[0296] 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, subPuDebiockingFlag for definido igual a 0.
[0297] 3. Se subPuDebiockingFlag for igual a 1, as seguintes etapas ordenadas se aplicam:
[0298] - se split_transform_flagi xCb + xB0][yCb + yB0] [cuDepth] é igual a 0, definir split_transform_flag[xCb + xB0][yCb + yB0 J[cuDepth] como igual a 1.
[0299] - 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 spiit_transform_flag como saída.
H.8.7.3 PROCESSO DE MODIFICAÇÃO DE ÁRVORE DE TRANSFORMADA DE CODIFICAÇÃO DE LUMA DE MOCK
[0300] As entradas a esse processo são: - 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 imagem atual,
[0301] - 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,
[0302] - variáveis que especificam tamanho de bloco nCbS,
[0303] - uma variável que especifica a profundidade de árvore de transformada trafoDepth,
[0304] - matriz de sinalizador de divisão de árvore de transformada split_transform_flag,
[0305] - matriz de sinalizador de unidade de subpredição subPuFlag,
[0306] - tamanho de unidade de subpredição subPuSize,
[0307] A saída desse processo é a modificação de:
[0308] - matriz de sinalizador de divisão de árvore de transformada split_transform_flag,
[0309] Se nCbS for maior que subPUSize, as seguintes etapas ordenadas se aplicam.
[0310] - As variáveis xB1 e yB1 são derivadas conforme o seguinte:
[0311] - A variável xB1 é definida igual a xB0 + (nCbS » 1).
[0312] - A variável yB1 é definida igual a yB0 + (nCbS » 1).
[0313] - Para x em xB0, xB1
[0314] - Para y em yB0, yB1
[0315] - se subPuFlag[xCb + x][yCb + y] for igual a 1
[0316] - se spiit_transform_flag[xCb + x][yCb + y] [trafoDepth + 1] for igual a 0 estabelecer split_transform_flag[xCb + x][yCb + y][trafoDepth + 1] para ser igual a 1.
[0317] - 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 bloco tamanho 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.
[0318] - caso contrário, (se split_transform_flag[xCb + x][yCb + y][trafoDepth + 1] é igual a 1),
[0319] - 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 bloco tamanho 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
[0320] A Figura 15 é um diagrama de blocos que ilustra um exemplo de criptografador de vídeo 20 que pode ser configurado para implantar as técnicas dessa revelação. O criptografador de vídeo 20 pode realizar a intra e a intercodificado (incluindo a codificação de entre vistas) 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 criptografador 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 criptar informações de crominância (por exemplo, reutilizando-se as informações de particionamento, 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 gravura 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 gravuras 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.
[0321] Conforme mostrado na Figura 15, criptografador 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 criptografado. No exemplo da Figura 15, criptografador 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 imagem 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 criptaçã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 particionamento 48. Para a reconstrução de bloco de vídeo, o criptografador 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).
[0322] 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 imagem decodificada 64 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso em dados de vídeo de criptação pelo criptografador 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 imagem 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 gravura 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 chipe com outros componentes de codificador de vídeo 2,0, ou fora do chipe em relação àqueles componentes.
[0323] 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 intraprevisõ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.
[0324] Além do mais, a unidade de partição 48 pode particionar blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de particionamento anteriores em passos de codificação anteriores. Por exemplo, a unidade de partição 48 pode particionar inicialmente um quadro ou fatia em LCUs, e particionar 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 o particionamento 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.
[0325] 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 partição e outras tais informações de sintaxe, para a unidade de codificação por entropia 56.
[0326] 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 gravura 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).
[0327] 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 criptografador de vídeo 20 pode calcular valores para posições de pixel sub inteiro de imagens de referência armazenadas na memória temporária de imagem 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 gravura 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.
[0328] 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 gravura de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagem de referência (lista 0) ou uma segunda lista de imagem de referência (lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória temporária de imagem decodificada 64. As listas de imagem 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.
[0329] 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 gravuras 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.
[0330] A unidade de intrapredição 46 pode intraprever 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 criptar um bloco atual. Em alguns exemplos, a unidade de processamento de intrapredição 46 pode criptar um bloco atual com o uso de vários modos intraprevisões, por exemplo, durante passos de criptaçã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.
[0331] 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.
[0332] 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 criptar as informações que indicam o modo de intrapredição selecionado. O codificador de vídeo 20 pode incluir nos dados de conimagem 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.
[0333] 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.
[0334] 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.
[0335] 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 criptaçã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 Particionamento de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação por entropia. No caso de codificação de entropia com base em contexto, o contexto pode ter base em blocos vizinhos. Após a codificação de 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.
[0336] 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 imagens de referência armazenadas no armazenamento temporário de imagem 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 imagem 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.
[0337] O criptografador de vídeo 20 pode criptar 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 intraprever blocos de mapas de profundidade, enquanto a unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem interprever 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 criptografador 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 criptografador de vídeo 20 pode usar os valores de faixa de profundidade atualizados e os valores de precisão para gerar uma imagem 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 entre vistas.
[0338] O criptografador de vídeo 20 representa um exemplo de um criptografador 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 criptografador 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.
[0339] Em um exemplo, o criptografador de vídeo 20 pode ser configurado para realizar um modo de BVSP de sub-PU para prever uma PU que inclui duas ou mais subPUs, no modo de BVSP de sub-PU, a unidade de compensação de movimento 44 de criptografador 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 imagem de referência entre vistas. A unidade de compensação de movimento 44, então, particiona 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 imagem de referência entre vistas que corresponde a cada uma das subPUs. A unidade de compensação de movimento 44 realiza a compensação de movimento para prever 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 prevista com o uso do modo de BVSP de sub-PU, o criptografador 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 imagem decodificada 64. As informações de movimento adicionais armazenadas para a PU atual podem, então, ser usadas para prever PUs subsequentes para as quais a PU atual é um bloco próximo.
[0340] Em outro exemplo, o criptografador de vídeo 20 pode ser configurado para realizar um modo de TMVP avançado para prever 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 criptografador de vídeo 20 determina um primeiro vetor de movimento de estágio para uma PU atual que identifica um bloco de uma imagem de referência que corresponde à PU atual. A unidade de compensação de movimento 44, então, particiona 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 imagem 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 prever cada uma das sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma das subPUs. 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.
[0341] Em outro exemplo, criptografador 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 criptografador 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 sub-PUs 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.
[0342] 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 imagem 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.
[0343] 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 gravura 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 gravura decodificada 82 pode ser uma memória de gravura 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 imagem 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 gravura 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 chipe com outros componentes de decodificador de vídeo 30, ou fora do chipe em relação àqueles componentes.
[0344] 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 de 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 de 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.
[0345] Quando a fatia de vídeo for codificada como uma fatia intracodificada (1), 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 imagem 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 imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, que usa as técnicas dessa revelação com base nas imagens de referência armazenadas no armazenamento temporário de imagem 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 imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo intercriptografado da fatia, situações de interpredição para cada bloco de vídeo intercriptografado da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0346] 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 criptografador de vídeo 20 a partir dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos preditivos.
[0347] 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.
[0348] 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 imagem dados são, então, armazenados no armazenamento temporário de imagem decodificada 82, que armazena imagens de referência usadas para a composição de movimento subsequente. O armazenamento temporário de imagem 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.
[0349] 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 intraprever os blocos de mapas de profundidade, enquanto a unidade de compensação de movimento 72 podem interprever 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 imagem 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 entre vistas.
[0350] 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.
[0351] Em um exemplo, o decodificador de vídeo 30 pode ser configurado para realizar um modo de BVSP de sub-PU para prever 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 imagem de referência de entre vistas, a unidade de compensação de movimento 72, então, particiona 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 imagem de referência entre vistas que corresponde a cada uma das subPUs, a unidade de compensação de movimento 72 realiza a compensação de movimento para prever 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 imagem decodificada 82. As informações de movimento adicionais armazenadas para a PU atual podem, então, ser usadas para prever PUs subsequentes para as quais a PU atual é um bloco próximo.
[0352] Em outro exemplo, o decodificador de vídeo 30 pode ser configurado para realizar um modo de TMVP avançado para prever 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 imagem de referência que corresponde à PU atual. A unidade de compensação de movimento 72, então, particiona 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 imagem 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 prever 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 subPUs.
[0353] 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.
[0354] A Figura 17 é um fluxograma que ilustra uma operação exemplificativa de prever 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 criptografador de vídeo 20 da Figura 15, ou qualquer outro dispositivo de criptação ou decodificação que opera de acordo com o padrão de 3D-HEVC.
[0355] O decodificador de vídeo 30 recebe um fluxo de bits de vídeo criptografado que representa os blocos de vídeo de uma fatia de vídeo criptografado 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.
[0356] A unidade de compensação de movimento 72 prevê 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 prever 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.
[0357] 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 imagem de referência entre vistas (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 imagem de referência.
[0358] A unidade de compensação de movimento 72, então, particiona 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 subPUs nas quais as segundas informações de movimento incluem pelo menos um vetor de movimento de disparidade associado a um bloco de profundidade da imagem de referência entre vistas 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 imagem de referência entre vistas 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 sub-PUs. O componente vertical do vetor de movimento de disparidade para cada uma das sub-PUs é igual a zero. Em alguns casos, as segundas informações de movimento para cada uma das subPUs podem incluir um vetor de movimento de disparidade que corresponde a cada uma dentre a primeira e a segunda listas de imagem de referência.
[0359] A unidade de compensação de movimento 72 realiza a compensação de movimento para prever cada uma das sub-PUs da PU atual a partir da imagem de referência entre vistas 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 imagem decodificada 82 de decodificador de vídeo 30, a ser usado para prever 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 imagem decodificada 82 associada a uma lista de imagem de referência que inclui a imagem de referência entre vistas 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.
[0360] Convencionalmente, no modo de BVSP de 3D-HEVC, após realizar a compensação de movimento para prever cada uma das sub-PUs, apenas um único vetor de movimento de disparidade que corresponde a cada lista de imagem de referência é armazenado para a PU atual. O único vetor de movimento de disparidade é armazenado para cada lista de imagem 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 prever 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.
[0361] 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 prever 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 prever 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 imagem 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 prever a sub-PUs da PU subsequente.
[0362] 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 imagem decodificada como um bloco de uma imagem 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 criptografador de vídeo 20 da Figura 15, ou qualquer outro dispositivo de criptação ou decodificação que usa um projeto de sub-PU e filtros de desbloqueio.
[0363] 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 é particionada 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.
[0364] 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.
[0365] 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 imagem decodificada 82 como um bloco de uma imagem de referência (156).
[0366] A Figura 19 é um fluxograma que ilustra uma operação exemplificativa de um modo de TMVP avançado para prever 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 criptografador de vídeo 20 da Figura 15, ou qualquer outro dispositivo de criptação ou decodificação que usa um projeto de sub-PU.
[0367] O decodificador de vídeo 30 recebe um fluxo de bits de vídeo criptografado que representa os blocos de vídeo de uma fatia de vídeo criptografado 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.
[0368] A unidade de compensação de movimento 72 prevê 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 prever 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 prever o PU atual.
[0369] Convencionalmente, o projeto de sub-PU é habilitado apenas para a intercamadas ou predição de entre vistas com o uso do modo de interpredição de fusão. Essa revelação descreve um modo de TMVP avançado para prever 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 prever 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 prever a PU.
[0370] 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 imagem 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.
[0371] A unidade de compensação de movimento 72, então, particiona 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 imagem 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 imagem 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.
[0372] 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 prevista 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 criptografado. Nesse exemplo, para indicar o desempenho do modo de TMVP avançado com o uso dos dados de aperfeiçoamento de movimento para prever 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 prever a PU.
[0373] A unidade de compensação de movimento 72 realiza a compensação de movimento para prever cada uma das sub-PUs separadamente com base nas segundas informações de movimento de estágio para cada uma das sub-PUs (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.
[0374] 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.
[0375] A título 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 outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, 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 portadoras, 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), disquete 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.
[0376] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para propósitos gerais, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs) ou outro conjunto de circuitos lógicos equivalentes integrados ou discretos. Portanto, 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.
[0377] As técnicas dessa revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nessa revelação para enfatizar 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.
[0378] Vários exemplos foram descritos. Essas e outras implantações estão dentro do escopo das reivindicações a seguir.

Claims (10)

1. Método para processamento de dados de vídeo caracterizado pelo fato de que compreende: determinar primeiras informações de movimento para uma unidade de predição (PU) (173) de uma unidade de codificação (CU) de um bloco de vídeo de blocos próximos da PU de acordo com um modo de predição de síntese de vista posterior (BVSP), em que determinar as primeira informações de movimento para a PU compreende selecionar primeira informações de movimento como candidata BVSP a partir de uma lista de candidatos de modo de fusão de informações de movimento para predizer a PU, e em que as primeiras informações de movimento incluem pelo menos um vetor de movimento de disparidade (187) e um índice de vista de referência associado que identifica uma imagem de referência entre vistas (182); dividir a PU em duas ou mais sub-PUs (185); determinar segundas informações de movimento para cada uma dentre as sub-PUs, em que as segundas informações de movimento incluem pelo menos um vetor de movimento de disparidade (186) associado a um bloco de profundidade (174) da imagem de referência entre vistas que correspondem a cada uma dentre as sub-PUs; realizar a compensação de movimento para prever cada uma dentre as sub-PUs da imagem de referência entre vistas com base nas segundas informações de movimento; e armazenar as segundas informações de movimento para cada uma dentre as sub-PUs da PU em uma memória a serem usadas para prever PUs subsequentes; prever uma PU subsequente com base nas segundas informações de movimento armazenadas para pelo menos uma dentre as sub-PUs da PU, em que a PU subsequente é um bloco vizinho da PU, e em que a predição da PU subsequente compreende gerar uma lista de candidatos de modo de fusão de informações de movimento para prever a PU subsequente, em que a lista de candidatos de modo de fusão inclui as segundas informações de movimento para pelo menos uma dentre as subPUs da PU armazenada na memória como um candidato de BVSP de sub-PU na lista de candidatos de modo de fusão.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar as segundas informações de movimento para cada uma dentre as sub-PUs compreende derivar o pelo menos um vetor de movimento de disparidade para que cada uma dentre as sub-PUs tenha um componente horizontal igual a um valor de profundidade máximo de quatro pixels de canto para o bloco de profundidade da imagem de referência entre vistas correspondentes a cada uma dentre as sub-PUs, e um componente vertical igual a zero.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar as segundas informações de movimento para cada uma dentre as sub-PUs compreende selecionar as segundas informações de movimento como um candidato de BVSP de sub-PU de uma lista de candidatos de modo de fusão de informações de movimento para prever sub-PUs.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a memória compreende um armazenamento temporário de imagem decodificada, e em que armazenar as segundas informações de movimento compreende armazenar o vetor de movimento de disparidade para cada uma dentre as sub-PUs no armazenamento temporário de imagem decodificada com uma lista de imagem de referência que inclui a imagem de referência entre vistas identificada pelo índice de vista de referência das primeiras informações de movimento para a PU.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: gerar um bloco de predição para cada uma dentre as sub-PUs da PU da imagem de referência entre vistas com base nas segundas informações de movimento; gerar um bloco residual com base no bloco de vídeo e no bloco de predição para cada uma dentre as sub-PUs; e codificar o bloco residual e um indicador pelo menos das primeiras informações de movimento para a PU em um fluxo de bits de vídeo.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: decodificar um bloco residual e um indicador pelo menos das primeiras informações de movimento para a PU a partir de um fluxo de bits de vídeo recebido; gerar um bloco de predição para cada uma dentre as sub-PUs da PU a partir da imagem de referência entre vistas com base nas segundas informações de movimento; e gerar uma versão reconstruída do bloco de vídeo com base no bloco residual e no bloco de predição para cada uma dentre as sub-PUs.
7. Dispositivo de processamento de vídeo caracterizado pelo fato de que compreende: uma memória configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória e configurados para: determinar primeiras informações de movimento para uma unidade de predição (PU) (173) de uma unidade de codificação (CU) de um bloco de vídeo de blocos próximos da PU de acordo com um modo de predição de síntese de vista posterior (BVSP), em que determinar as primeira informações de movimento para a PU compreende selecionar primeira informações de movimento como um BVSP candidata a partir de uma lista de candidatos de modo de fusão de informações de movimento para predizer a PU, e em que as primeiras informações de movimento incluem pelo menos um vetor de movimento de disparidade (187) e um índice de vista de referência associado que identifica uma imagem de referência entre vistas (182), dividir a PU em duas ou mais sub-PUs (185), determinar segundas informações de movimento para cada uma dentre as sub-PUs, em que as segundas informações de movimento incluem pelo menos um vetor de movimento de disparidade (186) associado a um bloco de profundidade (174) da imagem de referência entre vistas que corresponde a cada uma dentre as sub-PUs e realizar a compensação de movimento para prever cada uma dentre as sub-PUs a partir da imagem de referência entre vistas com base nas segundas informações de movimento, em que a memória é configurada para armazenar as segundas informações de movimento para cada uma dentre as sub-PUs da PU a ser usada para prever PUs subsequentes; e prever uma PU subsequente com base nas segundas informações de movimento armazenadas para pelo menos uma dentre as sub-PUs da PU, em que a PU subsequente é um bloco vizinho da PU, e em que o um ou mais processadores são configurados para gerar uma lista de candidatos de modo de fusão de informações de movimento para prever a PU subsequente, em que a lista de candidatos de modo de fusão inclui as segundas informações de movimento para pelo menos uma dentre as sub-PUs da PU armazenada na memória como um candidato de BVSP de sub-PU na lista de candidatos de modo de fusão.
8. Dispositivo, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo de processamento de vídeo compreende um dispositivo de codificação de vídeo, e em que o um ou mais processadores são configurados para: gerar um bloco de predição para cada uma dentre as sub-PUs da PU a partir da imagem de referência entre vistas com base nas segundas informações de movimento; gerar um bloco residual com base no bloco de vídeo e no bloco de predição para cada uma dentre as sub-PUs; e codificar o bloco residual e um indicador de pelo menos as primeiras informações de movimento para a PU em um fluxo de bits de vídeo.
9. Dispositivo, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo de processamento de vídeo compreende um dispositivo de codificação de vídeo, e em que o um ou mais processadores são configurados para: decodificar um bloco residual e um indicador pelo menos das primeiras informações de movimento para a PU a partir de um fluxo de bits de vídeo recebido; gerar um bloco de predição para cada uma dentre as sub-PUs da PU a partir da imagem de referência entre vistas com base nas segundas informações de movimento; e gerar uma versão reconstruída do bloco de vídeo com base no bloco residual e no bloco de predição para cada uma dentre as sub-PUs.
10. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma para processamento de dados de vídeo que, quando executadas, fazem com que um ou mais processadores realizem o método, conforme definido nas reivindicações 1 a 6.
BR112016006607A 2013-09-26 2014-09-26 Método e dispositivo para processamento de dados de vídeo, e memória legível por computador BR112016006607B8 (pt)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201361883111P 2013-09-26 2013-09-26
US61/883,111 2013-09-26
US201361887915P 2013-10-07 2013-10-07
US61/887,915 2013-10-07
US201361892327P 2013-10-17 2013-10-17
US61/892,327 2013-10-17
US201361898385P 2013-10-31 2013-10-31
US61/898,385 2013-10-31
US14/496,991 US9667996B2 (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
US14/496,991 2014-09-25
PCT/US2014/057732 WO2015048453A1 (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
BR112016006607A2 BR112016006607A2 (pt) 2017-08-01
BR112016006607B1 true BR112016006607B1 (pt) 2023-01-31
BR112016006607B8 BR112016006607B8 (pt) 2023-02-14

Family

ID=52690924

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016006607A BR112016006607B8 (pt) 2013-09-26 2014-09-26 Método e dispositivo para processamento de dados de vídeo, e memória legível por computador

Country Status (10)

Country Link
US (1) US9667996B2 (pt)
EP (1) EP3050295B1 (pt)
JP (1) JP6339183B2 (pt)
KR (1) KR101904624B1 (pt)
CN (1) CN105580365B (pt)
BR (1) BR112016006607B8 (pt)
ES (1) ES2753958T3 (pt)
HK (1) HK1219602A1 (pt)
HU (1) HUE047090T2 (pt)
WO (1) WO2015048453A1 (pt)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104412597B (zh) * 2012-07-05 2017-09-08 联发科技股份有限公司 用于3d视频编码的统一视差矢量推导的方法及装置
US9544612B2 (en) * 2012-10-04 2017-01-10 Intel Corporation Prediction parameter inheritance for 3D video coding
US9762927B2 (en) 2013-09-26 2017-09-12 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
WO2015131387A1 (en) * 2014-03-07 2015-09-11 Qualcomm Incorporated Simplified sub-prediction unit (sub-pu) motion parameter inheritence (mpi)
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
CN104079944B (zh) * 2014-06-30 2017-12-01 华为技术有限公司 视频编码的运动矢量列表构建方法和系统
EP3189660B1 (en) * 2014-09-30 2023-07-12 HFI Innovation Inc. Method of adaptive motion vector resolution for video coding
US10459084B2 (en) * 2014-12-30 2019-10-29 Nokia Technologies Oy Range sensing using a hybrid range sensing device
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
WO2016165069A1 (en) * 2015-04-14 2016-10-20 Mediatek Singapore Pte. Ltd. Advanced temporal motion vector prediction in video coding
US10681371B2 (en) * 2015-06-07 2020-06-09 Lg Electronics Inc. Method and device for performing deblocking filtering
KR101782156B1 (ko) * 2015-06-11 2017-09-26 인텔렉추얼디스커버리 주식회사 적응적인 디블록킹 필터링을 이용하는 영상 부호화 방법과 영상 복호화 방법 및 장치
CN113473120A (zh) 2015-06-11 2021-10-01 英迪股份有限公司 使用自适应去块滤波编码和解码图像的方法及其装置
WO2017045101A1 (en) * 2015-09-14 2017-03-23 Mediatek Singapore Pte. Ltd. Advanced deblocking filter in video coding
US10212444B2 (en) * 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
CN107027040B9 (zh) 2016-01-29 2020-08-28 华为技术有限公司 一种去除块效应的滤波方法及装置
WO2017205700A1 (en) * 2016-05-25 2017-11-30 Arris Enterprises Llc Binary, ternary and quad tree partitioning for jvet coding of video data
WO2018034373A1 (ko) * 2016-08-19 2018-02-22 엘지전자(주) 영상 처리 방법 및 이를 위한 장치
KR102569476B1 (ko) * 2016-10-11 2023-08-24 엘지전자 주식회사 영상 코딩 시스템에서 인트라 예측에 따른 영상 디코딩 방법 및 장치
WO2018097692A2 (ko) * 2016-11-28 2018-05-31 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
JP6565885B2 (ja) * 2016-12-06 2019-08-28 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム、並びに画像復号化装置、画像復号化方法及び画像復号化プログラム
CN109005412B (zh) * 2017-06-06 2022-06-07 北京三星通信技术研究有限公司 运动矢量获取的方法及设备
CN115643399A (zh) 2017-08-22 2023-01-24 松下电器(美国)知识产权公司 图像编码器和图像解码器
WO2019047763A1 (en) * 2017-09-08 2019-03-14 Mediatek Inc. METHODS AND APPARATUSES FOR PROCESSING IMAGES IN AN IMAGE OR VIDEO ENCODING SYSTEM
US10542279B2 (en) * 2017-09-25 2020-01-21 Intel Corporation Temporal motion vector prediction control in video coding
US11394992B2 (en) * 2018-03-14 2022-07-19 Hfi Innovation Inc. Methods and apparatuses of generating average candidates in video coding systems
WO2019190199A1 (ko) 2018-03-27 2019-10-03 주식회사 케이티 비디오 신호 처리 방법 및 장치
US10728542B2 (en) * 2018-04-09 2020-07-28 Tencent America LLC Methods and apparatuses for sub-block motion vector prediction
JP7104186B2 (ja) 2018-06-05 2022-07-20 北京字節跳動網絡技術有限公司 Ibcとatmvpとの間でのインタラクション
WO2019237287A1 (zh) * 2018-06-13 2019-12-19 华为技术有限公司 视频图像的帧间预测方法、装置及编解码器
CN110636298B (zh) 2018-06-21 2022-09-13 北京字节跳动网络技术有限公司 对于Merge仿射模式和非Merge仿射模式的统一约束
EP4307671A3 (en) 2018-06-21 2024-02-07 Beijing Bytedance Network Technology Co., Ltd. Sub-block mv inheritance between color components
US11546628B2 (en) * 2018-06-27 2023-01-03 Vid Scale, Inc. Methods and apparatus for reducing the coding latency of decoder-side motion refinement
JP7460617B2 (ja) 2018-06-29 2024-04-02 北京字節跳動網絡技術有限公司 Lut更新条件
BR112020024142A2 (pt) 2018-06-29 2021-03-02 Beijing Bytedance Network Technology Co., Ltd. método para processamento de vídeo, aparelho para codificação de dados de vídeo, meio de armazenamento e meio de gravação legíveis por computador não transitório
EP3794825A1 (en) 2018-06-29 2021-03-24 Beijing Bytedance Network Technology Co. Ltd. Update of look up table: fifo, constrained fifo
EP4322533A3 (en) 2018-06-29 2024-03-06 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in lut
WO2020003282A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Managing motion vector predictors for video coding
CN114900694A (zh) 2018-06-29 2022-08-12 抖音视界(北京)有限公司 哪个查找表需要更新或不更新
TWI719525B (zh) 2018-06-29 2021-02-21 大陸商北京字節跳動網絡技術有限公司 Lut與amvp之間的交互
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
TWI748202B (zh) 2018-07-02 2021-12-01 大陸商北京字節跳動網絡技術有限公司 Lamvr中取整和修剪的順序
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
US11457234B2 (en) * 2018-10-08 2022-09-27 Lg Electronics Inc. Apparatus for performing image coding on basis of ATMVP candidate
CN111083489B (zh) 2018-10-22 2024-05-14 北京字节跳动网络技术有限公司 多次迭代运动矢量细化
CN112997495B (zh) 2018-11-10 2024-02-20 北京字节跳动网络技术有限公司 当前图片参考中的取整
CN111436228A (zh) 2018-11-12 2020-07-21 北京字节跳动网络技术有限公司 组合帧间-帧内预测的简化
WO2020103872A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Prediction refinement for combined inter intra prediction mode
WO2020103852A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Difference calculation based on patial position
CN113170174B (zh) 2018-11-30 2024-04-12 寰发股份有限公司 视频编码系统中用于决定储存用运动向量的视频处理方法和装置
CN113196771B (zh) 2018-12-21 2023-12-22 北京字节跳动网络技术有限公司 基于运动矢量精度的运动矢量范围
CN113597760A (zh) 2019-01-02 2021-11-02 北京字节跳动网络技术有限公司 视频处理的方法
WO2020143741A1 (en) 2019-01-10 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Invoke of lut updating
CN113348669A (zh) * 2019-01-13 2021-09-03 北京字节跳动网络技术有限公司 交织预测和其他编解码工具之间的交互
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
CN113302937A (zh) 2019-01-16 2021-08-24 北京字节跳动网络技术有限公司 运动候选推导
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
CN113574890B (zh) * 2019-03-11 2024-04-12 北京字节跳动网络技术有限公司 基于指定的候选的成对运动候选列的构造
WO2020190084A1 (ko) * 2019-03-21 2020-09-24 에스케이텔레콤 주식회사 서브블록 단위 복원 방법 및 영상 복호화 장치
WO2020192611A1 (en) 2019-03-22 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
WO2020200269A1 (en) 2019-04-02 2020-10-08 Beijing Bytedance Network Technology Co., Ltd. Decoder side motion vector derivation
JP7391109B2 (ja) * 2019-05-11 2023-12-04 北京字節跳動網絡技術有限公司 ビデオ処理におけるコーディングツールの選択的使用
EP3949415A4 (en) 2019-05-16 2022-08-03 Beijing Bytedance Network Technology Co., Ltd. PART-BASED DETERMINATION OF MOTION INFORMATION REFINING
JP2022538064A (ja) * 2019-06-19 2022-08-31 エルジー エレクトロニクス インコーポレイティド デフォルト(default)マージモードに基づいて予測サンプルを導き出す映像デコーディング方法及びその装置
US11138751B2 (en) * 2019-07-06 2021-10-05 Toyota Research Institute, Inc. Systems and methods for semi-supervised training using reprojected distance loss
CN114556918A (zh) 2019-10-12 2022-05-27 北京字节跳动网络技术有限公司 细化视频编解码工具的使用和信令
US20220086457A1 (en) 2020-09-17 2022-03-17 Lemon Inc. Subpicture track referencing and processing
US11895321B2 (en) * 2021-03-29 2024-02-06 Qualcomm Incorporated Template matching based advanced motion vector predictor (AMVP) candidate list construction with non-adjacent candidates and AMVP index signaling
US11729395B2 (en) * 2021-11-26 2023-08-15 Huawei Technologies Co., Ltd. Methods and devices for extracting motion vector data from compressed video data

Family Cites Families (11)

* 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
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
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
US9948915B2 (en) 2013-07-24 2018-04-17 Qualcomm Incorporated Sub-PU motion prediction for texture and depth coding
US9762927B2 (en) 2013-09-26 2017-09-12 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC

Also Published As

Publication number Publication date
EP3050295A1 (en) 2016-08-03
HK1219602A1 (zh) 2017-04-07
BR112016006607A2 (pt) 2017-08-01
KR20160058823A (ko) 2016-05-25
EP3050295B1 (en) 2019-08-07
ES2753958T3 (es) 2020-04-15
US20150085935A1 (en) 2015-03-26
JP2016537841A (ja) 2016-12-01
CN105580365A (zh) 2016-05-11
BR112016006607B8 (pt) 2023-02-14
US9667996B2 (en) 2017-05-30
JP6339183B2 (ja) 2018-06-06
KR101904624B1 (ko) 2018-10-04
HUE047090T2 (hu) 2020-04-28
WO2015048453A1 (en) 2015-04-02
CN105580365B (zh) 2018-10-26

Similar Documents

Publication Publication Date Title
BR112016006607B1 (pt) Método e dispositivo para processamento de dados de vídeo, e memória legível por computador
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
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
ES2842109T3 (es) Predicción residual avanzada basada en bloques para la codificación de vídeo 3D
ES2874552T3 (es) Diseño de codificación y descodificación en modo de paleta
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
ES2904510T3 (es) Uso de una imagen actual como una referencia para la codificación de vídeo
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
WO2019147826A1 (en) Advanced motion vector prediction speedups for video coding
BR112016007760B1 (pt) Método e aparelho de decodificação de dados de vídeo e método de codificação de dados de vídeo
BR112015032150B1 (pt) Intra-predição a partir de bloco preditivo
BR112017020102B1 (pt) Processo de amostragem descendente para modo de previsão de modelo linear
BR112016000866B1 (pt) Processamento de compensação de iluminação para codificação de vídeo
BR112017003073B1 (pt) Unificação de cópia de intrabloco e interpredição
BR112016000863B1 (pt) Previsão residual de componente intercor
BR112016000465B1 (pt) Previsão de paleta em codificação de vídeo com base em paleta
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
BR112016022085B1 (pt) Determinação de tamanho de paleta, entradas de paleta e filtragem de blocos codificados por paleta em codificação de vídeo
BR112016008369B1 (pt) Extensão de padrão de wedgelet para intracodificação de profundidade
BR112016008224B1 (pt) Escalabilidade de gama de cores com base em tabela de pesquisa tridimensional em codificação de vídeo de múltiplas camadas
KR20150139953A (ko) 백워드 뷰 합성 예측
BR112016008241B1 (pt) Indicação de processamento paralelo em codificação de vídeo
BR112020011099A2 (pt) intra-predição com pixels vizinhos distantes
BR112016007360B1 (pt) Previsão ponderada explícita de alta precisão para codificação de vídeo
BR112021014603A2 (pt) Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo

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.