BR112021010946A2 - Partição de unidade de transformada (tu) com base em árvore para codificação de vídeo - Google Patents

Partição de unidade de transformada (tu) com base em árvore para codificação de vídeo Download PDF

Info

Publication number
BR112021010946A2
BR112021010946A2 BR112021010946-3A BR112021010946A BR112021010946A2 BR 112021010946 A2 BR112021010946 A2 BR 112021010946A2 BR 112021010946 A BR112021010946 A BR 112021010946A BR 112021010946 A2 BR112021010946 A2 BR 112021010946A2
Authority
BR
Brazil
Prior art keywords
block
residual
tree
partition
transform
Prior art date
Application number
BR112021010946-3A
Other languages
English (en)
Inventor
Hilmi Enes EGILMEZ
Vadim SEREGIN
Amir Said
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112021010946A2 publication Critical patent/BR112021010946A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

Um decodificador de vídeo pode receber, em um fluxo de bits que compreende uma representação codificada de dados de vídeo, informações que indicam se um bloco residual é particionado e informações que indicam um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição. O decodificador de vídeo pode determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub-blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição. O decodificador de vídeo pode produzir os dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais e pode decodificar o bloco atual utilizando os dados residuais.

Description

“PARTIÇÃO DE UNIDADE DE TRANSFORMADA (TU) COM BASE EM ÁRVORE PARA CODIFICAÇÃO DE VÍDEO”
[0001] Este pedido reivindica o benefício do Pedido dos E.U.A., N.º 16/715.274, depositado a 16 de dezembro de 2019, e do Pedido Provisório dos E.U.A., N.º 62/782.292, depositado a 19 de dezembro de 2018, cada um dos quais são por este incorporados à guisa de referência em sua totalidade.
CAMPO TÉCNICO
[0002] Esta revelação refere-se à codificação e decodificação de vídeo.
ANTECEDENTES
[0003] Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, que incluem televisões digitais, sistemas de broadcast direto digitais, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, computadores tablet, leitoras de livros eletrônicos, câmeras digitais, dispositivos de gravação digitais, tocadores de meios digitais, dispositivos para jogos de vídeo, consoles para jogos de vídeo, telefones celulares ou de rádio-satélite, os chamados “telefones inteligentes”, dispositivos de teleconferência de vídeo, dispositivos de fluxo contínuo de vídeo e semelhante. Os dispositivos de vídeo digital implementam técnicas de compactação de vídeo, tais como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC), ITU-T H.265 Codificação de Vídeo de Alta Eficácia (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir,
receber, codificar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficaz pela implementação de tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover a redundância inerente a sequências de vídeo. Para codificação de vídeos com base em blocos, uma fatia de vídeo (como, por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser particionada em blocos de vídeo, e podem ser também referidos como unidades de árvores de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados utilizando-se predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem utilizar predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e as imagens de referência podem ser referidas como quadros de referência.
SUMÁRIO
[0005] Em geral, esta revelação descreve técnicas relacionadas à codificação de transformada, que é um elemento dos padrões de compactação de vídeo modernos. As técnicas exemplares podem fornecer particionamento mais flexível de blocos residuais, tais como unidades de transformada (TUs) e podem aperfeiçoar os ganhos de codificação.
[0006] Em um exemplo, um método de decodificação de dados de vídeo inclui receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição. O método inclui adicionalmente determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub-blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição. O método inclui adicionalmente produzir os dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais. O método inclui adicionalmente decodificar o bloco atual utilizando-se os dados residuais.
[0007] Em outro exemplo, um dispositivo para decodificar dados de vídeo inclui uma memória configurada para armazenar dados de vídeo. O dispositivo inclui adicionalmente um processador implementado em circuitos e configurado para: receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição; determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub-blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição; produzir os dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais; e decodificar o bloco atual utilizando os dados residuais.
[0008] Em outro exemplo, um meio de armazenamento passível de leitura por computador que tem instruções armazenadas nele que, quando executadas, fazem com que um processador: receba, em um fluxo de bits que compreende uma representação codificada de dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição; determine, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub- blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição; produza os dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais; e decodifique o bloco atual utilizando os dados residuais.
[0009] Em outro exemplo, um dispositivo para decodificar dados de vídeo inclui meios para receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição. O dispositivo inclui adicionalmente meios para determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub- blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição. O dispositivo inclui adicionalmente meios para produzir os dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais. O dispositivo inclui adicionalmente meios para decodificar o bloco atual utilizando-se os dados residuais.
[0010] Em outro exemplo, um método de codificação de dados de vídeo inclui determinar que um bloco residual para um bloco atual de dados de vídeo é particionado de acordo com um tipo de árvore de partição em uma pluralidade de sub-blocos residuais. O método inclui adicionalmente a codificação de um fluxo de bits como uma representação codificada de dados de vídeo que sinaliza informações indicativas de se o bloco residual é particionado e outros sinais de informações indicativas do tipo de árvore de partição para o bloco residual que é particionado.
[0011] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui uma memória configurada para armazenar dados de vídeo. O dispositivo inclui adicionalmente um processador implementado em circuitos e configurado para: determinar que um bloco residual para um bloco atual dos dados de vídeo está particionado de acordo com um tipo de árvore de partição em uma pluralidade de sub-blocos residuais; e codificar um fluxo de bits como uma representação codificada de dados de vídeo que sinaliza informações indicativas de se o bloco residual é particionado e sinalizar adicionalmente informações indicativas do tipo de árvore de partição para o bloco residual que é particionado.
[0012] Os detalhes de um ou mais aspecto das técnicas são apresentados nos desenhos anexos e na descrição que se segue. Outros recursos, objetos e vantagens destas técnicas se tornarão evidentes a partir da descrição, desenhos e das reivindicações.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[0013] A Figura 1 é um diagrama de blocos que mostra um exemplo de sistema de codificação e decodificação de vídeo que pode efetuar as técnicas desta revelação.
[0014] As Figuras 2A e 2B são diagramas conceituais que mostram um exemplo de estrutura de árvore binária quad-tree (QTBT) e uma unidade de árvore de codificação (CTU) correspondente.
[0015] As Figuras 3A e 3B são diagramas conceituais que mostram um exemplo de esquema de transformada com base em uma quad-tree residual de HEVC.
[0016] A Figura 4 é um diagrama de blocos que mostra um exemplo de sistema para codificação de vídeo híbrido com seleção de transformada adaptativa.
[0017] As Figuras 5A e 5B são diagramas conceituais que mostram as transformadas horizontais e verticais como uma implementação de transformada separada.
[0018] A Figura 6 é um diagrama conceitual que mostra a sinalização de transformadas.
[0019] A Figura 7 é um diagrama conceitual que mostra o respectivo particionamento com base em árvore em um bloco.
[0020] A Figura 8 é um diagrama conceitual que mostra exemplos de particionamento com base em quad-tree, particionamento em árvore binária e particionamento em árvore tripla.
[0021] A Figura 9 é um diagrama de blocos que mostra um exemplo de codificador de vídeo que pode efetuar as técnicas desta revelação.
[0022] A Figura 10 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo que pode efetuar as técnicas desta revelação.
[0023] A Figura 11 é um fluxograma que mostra um exemplo de método para codificar um bloco atual. A Figura 12 é um fluxograma que mostra um exemplo de método para decodificar um bloco atual de dados de vídeo.
[0024] A Figura 13 é um fluxograma que mostra um exemplo de método para decodificar um bloco atual de dados que tem um bloco residual que é particionado de acordo com um tipo de árvore de partição.
[0025] A Figura 14 é um fluxograma que mostra um exemplo de método para codificar um bloco atual de dados que tem um bloco residual que é particionado de acordo com um tipo de árvore de partição.
DESCRIÇÃO DETALHADA
[0026] Esta revelação refere-se à codificação de transformadas. Na codificação de transformadas, para um codificador de vídeo, há um bloco de dados residual (como, por exemplo, residual entre o bloco atual que é codificado e o bloco de predição). Os dados residuais são transformados do domínio espacial para um domínio de frequência, o que resulta em um bloco de coeficientes de transformada de coeficientes de transformada. O decodificador de vídeo recebe o bloco de coeficientes de transformada (ou possivelmente um bloco de coeficientes de transformada depois da quantização) e efetua a quantização inversa (se necessário) e a transformada inversa para reconstruir os dados residuais de volta ao domínio espacial de valores.
[0027] Uma unidade de transformada (TU) inclui um bloco de transformadas de amostras luma e blocos de transformadas de amostras croma correspondentes. Um bloco de transformadas pode ser um bloco retangular MxN de amostras resultantes de uma transformada no processo de decodificação, e a transformada pode ser uma parte do processo de decodificação pelo qual um bloco de coeficientes de transformada é convertido para um bloco de valores no domínio espacial. Por conseguinte, um bloco residual pode ser um exemplo de uma TU. O bloco residual pode ter dados residuais transformados do domínio de amostra para o domínio de frequência e incluir uma pluralidade de coeficientes de transformada. A codificação de transformadas é descrita com mais detalhes em M. Wien, Codificação de Vídeo de Alta Eficácia: Ferramentas e Especificação de Codificação, Springer-Verlag, Berlin,
2015.
[0028] Conforme descrito em mais detalhes, em um ou mais exemplos descritos nesta revelação, vários desenhos de partição com base em árvore podem ser utilizados para a codificação de transformadas com o esquema de transformada chamado transformada múltipla adaptativa (ou de múltiplos núcleos) (AMT) ou conjunto de transformadas múltiplas (MTS). AMT e MTS podem referir-se às mesmas ferramentas de transformadas, pois, devido a uma alteração de nome entre os padrões de codificação de vídeo, a AMT agora é conhecida como MTS.
[0029] Exemplos de esquemas de transformada são descritos na Publicação de Patente dos E.U.A. N.º 2016/0219290 e X Zhao, S. Lee, J. Chen, L. Zhang, X. Li, Y Chen, M Karczewicz, e H. Liu, Transformadas Múltiplas Aperfeiçoadas para Predições Residuais, janeiro de 2015, também na Publicação de Patente dos E.U.A., N.º 2018/0020218 e X. Zhao, V. Seregin, M. Karczewicz, e J. Chen, Tabela de Consulta Aperfeiçoada para Transformadas Múltipas Aperfeiçoadas, Jul. 2016, e também no Pedido dos E.U.A., N.º 16/426.749, depositado a 30 de maio de 2019 e H. E. Egilrnez, Y.-H Chao, A. Said, V. Seregin, e M.
Karczewicz, Transformadas múltiplas adaptativas com overhead de sinalização reduzido.
[0030] Conforme descrito em mais detalhes, em alguns exemplos, um bloco residual pode ser particionado em uma pluralidade de sub-blocos residuais (como, por exemplo, sub-TUs). Esta revelação descreve exemplos técnicos de caminhos nos quais um codificador de vídeo pode sinalizar, e um decodificador de vídeo pode determinar, que um bloco residual está particionado em sub-blocos residuais, e uma maneira na qual o bloco residual é particionado (como, por exemplo, o tipo de partição). Além do mais, pode haver uma pluralidade de tipos de transformadas que o codificador de vídeo pode utilizar para efetuar transformada dos dados residuais no domínio de amostra para domínio de frequência e uma pluralidade de tipos de transformadas que o decodificador de vídeo pode utilizar para efetuar transformada (como, por exemplo, transformada inversa) dos dados do domínio de frequência de volta para dados residuais no domínio de amostra. Esta revelação descreve exemplos de caminhos para determinar o tipo de transformada.
[0031] A Figura 1 é um diagrama de blocos que mostra um exemplo de sistema de codificação e decodificação de vídeo 100 que pode efetuar as técnicas desta revelação. As técnicas desta revelação são geralmente direcionadas à codificação (codificação e/ou decodificação) de dados de vídeo. Em geral, os dados de vídeo incluem quaisquer dados para processar um vídeo. Assim, os dados de vídeo podem incluir vídeo bruto, não codificado, vídeo codificado,
vídeo decodificado (como, por exemplo, reconstruído) e metadados de vídeo, tal como dados de sinalização.
[0032] Conforme mostrado na Figura 1, neste exemplo, o sistema 100 inclui um dispositivo de origem 102 que fornece dados de vídeo codificados a serem decodificados e exibidos por um dispositivo de destino 116. Em particular, o dispositivo de origem 102 fornece os dados de vídeo para o dispositivo de destino 116 por meio de um meio passível de leitura por computador 110. O dispositivo de origem 102 e o dispositivo de destino 116 podem compreender qualquer um de uma ampla faixa de dispositivos, que inclui computadores de mesa, computadores notebook (isto é, laptop), computadores tablet, set-top boxes, aparelhos telefônicos tal como telefones inteligentes, televisões, câmeras, dispositivos de exibição, reprodutores de meios digitais, consoles de jogos de vídeo, dispositivo de transmissão contínua de vídeo ou semelhantes. Em alguns casos, o dispositivo de origem 102 e o dispositivo de destino 116 podem ser equipados para comunicação sem fio e, assim, podem ser referidos como dispositivos de comunicação sem fio.
[0033] No exemplo da Figura 1, o dispositivo de origem 102 inclui a fonte de vídeo 104, a memória 106, o codificador de vídeo 200 e a interface de saída 108. O dispositivo de destino 116 inclui a interface de entrada 122, o decodificador de vídeo 300, a memória 120 e o dispositivo de exibição 118. De acordo com esta revelação, o codificador de vídeo 200 do dispositivo de origem 102 e o decodificador de vídeo 300 do dispositivo de destino 116 podem ser configurados para aplicar as técnicas para partição com base em árvore para codificação de vídeo. Assim, o dispositivo de origem 102 representa um exemplo de um dispositivo de codificação de vídeo, enquanto o dispositivo de destino 116 representa um exemplo de um dispositivo de decodificação de vídeo. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de origem 102 pode receber dados de vídeo a partir de uma fonte de vídeo externa, tal como uma câmera externa. De modo semelhante, o dispositivo de destino 116 pode efetuar interface com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.
[0034] Conforme mostrado na Figura 1, o sistema 100 é meramente um exemplo. Em geral, qualquer dispositivo de codificação e/ou decodificação de vídeo digital pode efetuar técnicas para partição com base em árvore para codificação de vídeo. O dispositivo de origem 102 e o dispositivo de destino 116 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo de origem 102 gera dados de vídeo codificados para transmissão ao dispositivo de destino 116. Esta revelação se refere a um dispositivo de “codificação”, tal como um dispositivo que efetua codificação (codificação e/ou decodificação) de dados. Assim, o codificador de vídeo 200 e o decodificador de vídeo 300 representam exemplos de dispositivos de codificação, em particular, um codificador de vídeo e um decodificador de vídeo, respectivamente. Em alguns exemplos, os dispositivos 102, 116 podem funcionar de uma maneira substancialmente simétrica, de tal modo que cada um dos dispositivos 102, 116 inclua componentes de codificação e decodificação de vídeo. Portanto, o sistema 100 pode suportar transmissão de vídeo unidirecional ou bidirecional entre os dispositivos 102, 116, como, por exemplo, para transmissão contínua de vídeo, reprodução de vídeo, broadcast de vídeo ou telefonia por vídeo.
[0035] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (isto é, dados de vídeo brutos e não codificados) e fornece uma série sequencial de imagens (também conhecidas como “quadros”) dos dados de vídeo para o codificador de vídeo 200, que codifica os dados para as imagens. A fonte de vídeo 104 do dispositivo de origem 102 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo que contém vídeo bruto capturado anteriormente e/ou uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo. Como alternativa adicional, a fonte de vídeo 104 pode gerar dados baseados em gráficos de computador como o vídeo de origem ou uma combinação de vídeo ao vivo, vídeo depositado e vídeo gerado por computador. Em cada caso, o codificador de vídeo 200 codifica os dados de vídeo capturados, pré- capturados ou gerados por computador. O codificador de vídeo 200 pode redispor as imagens a partir da ordem recebida (algumas vezes referida como “ordem de exibição”) em uma ordem de codificação para codificação. O codificador de vídeo 200 pode gerar um fluxo de bits que inclui dados de vídeo codificados. O dispositivo de origem 102 pode então transmitir dados de vídeo codificados por meio de interface de saída 108 para o meio passível de leitura por computador 110 para recepção e/ou recuperação pela, como, por exemplo, interface de entrada 122 do dispositivo de destino 116.
[0036] A Memória 106 do dispositivo de origem 102 e a memória 120 do dispositivo de destino 116 representam memórias de propósito geral. Em algum exemplo, as memórias 106, 120 podem armazenar dados brutos de vídeo, como, por exemplo, vídeo bruto a partir da fonte de vídeo 104 e dados de vídeo brutos e decodificados a partir do decodificador de vídeo 300. Além disso, ou alternativamente, as memórias 106, 120 podem armazenar instruções de software executáveis por, como, por exemplo, codificador de vídeo 200 e decodificador de vídeo 300, respectivamente. Embora mostrado separadamente do codificador de vídeo 200 e do decodificador de vídeo 300 neste exemplo, deve ficar entendido que o codificador de vídeo 200 e o decodificador de vídeo 300 também podem incluir memórias internas para finalidades funcionalmente semelhantes ou equivalentes. Além disso, as memórias 106, 120 podem armazenar dados de vídeo codificados, como, por exemplo, saída a partir do codificador de vídeo 200 e entrada para o decodificador de vídeo 300. Em alguns exemplos, partes das memórias 106, 120 podem ser alocadas como um ou mais armazenadores de vídeo, como, por exemplo, para armazenar dados de vídeo brutos, decodificados e/ou codificados.
[0037] O meio passível de leitura por computador 110 pode representar qualquer tipo de meio ou dispositivo capaz de transportar os dados de vídeo codificados do dispositivo de origem 102 para o dispositivo de destino 116. Em um exemplo, o meio passível de leitura por computador 110 representa um meio de comunicação para permitir que o dispositivo de origem 102 transmita dados de vídeo codificados diretamente para o dispositivo de destino 116 em tempo real, como, por exemplo, por meio de uma rede de radiofrequência ou rede com base em computador. A interface de saída 108 pode modular um sinal de transmissão que inclui os dados de vídeo codificados, e a interface de entrada 122 pode modular o sinal de transmissão recebido, de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou cabeado, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede com base em pacotes, tal como uma rede de área local, uma rede de área estendida ou uma rede global, tal 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 origem 102 para o dispositivo de destino 116.
[0038] Em alguns exemplos, o dispositivo de origem 102 pode transmitir dados codificados da interface de saída 108 para o dispositivo de armazenamento 116. De modo semelhante, o dispositivo de destino 116 pode acessar dados codificados a partir do dispositivo de armazenamento 116 por meio de interface de entrada 122. O dispositivo de armazenamento 116 pode incluir qualquer um de diversos meios de armazenamento de dados distribuídos ou acessados localmente, tais como uma unidade de 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.
[0039] Em alguns exemplos, o dispositivo de origem 102 pode transmitir dados de vídeo codificados para o servidor de arquivos 114 ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 102. O dispositivo de destino 116 pode acessar dados de vídeo armazenados a partir do servidor de arquivos 114 por meio de fluxo contínuo ou download. O servidor de arquivos 114 pode ser qualquer tipo de dispositivo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados para o dispositivo de destino 116. O servidor de arquivos 114 pode representar um servidor da web (como, por exemplo, para um sítio da Web), um Protocolo de Transferência de Arquivos (FTP), um dispositivo de rede de entrega de conteúdo ou um dispositivo de armazenamento anexado à rede (NAS). O dispositivo de destino 116 pode acessar dados de vídeo codificados a partir do servidor de arquivos 114 através de qualquer conexão de dados padrão, inclusive uma conexão de Internet. Isso pode incluir um canal sem fio (como, por exemplo, uma conexão Wi-Fi), uma conexão cabeada (como, por exemplo, DSL, modem a cabo etc.) ou uma combinação de ambos que seja adequada para acessar os dados de vídeo codificados armazenados no servidor de arquivos 114. O servidor de arquivos 114 e a interface de entrada 122 podem ser configurados para funcionar de acordo com um protocolo de transmissão de fluxo contínuo, um protocolo de transmissão de download ou uma combinação deles.
[0040] A interface de saída 108 e a interface de entrada 122 podem representar transmissores/receptores sem fio, modems, componentes de rede cabeados (como, por exemplo, placas de Ethernet), componentes de comunicação sem fio que funcionam de acordo com qualquer um dos diversos padrões IEEE 802.11 ou outros componentes físicos. Em exemplos onde a interface de saída 108 e a interface de entrada 122 compreendem componentes sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tal como dados de vídeo codificados, de acordo com um padrão de comunicação celular, como o 4G, o 4G-LTE (Evolução de Longo Prazo), a LTE Avançada, o 5G ou semelhantes. Em alguns exemplos onde a interface de saída 108 compreende um transmissor sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tal como dados de vídeo codificados, de acordo com outros padrões sem fio, tais como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (como, por exemplo, ZigBeeTM), um padrão BluetoothTM ou semelhante. Em alguns exemplos, o dispositivo de origem 102 e/ou o dispositivo de destino 116 podem incluir os respectivos dispositivos de sistema em um chip (SoC). Por exemplo, o dispositivo de origem 102 pode incluir um dispositivo SoC para efetuar a funcionalidade atribuída ao decodificador de vídeo 300 e/ou interface de entrada 122.
[0041] As técnicas desta revelação podem ser aplicadas à codificação de vídeo em suporte a qualquer uma de uma diversidade de aplicações multimídia, tais como broadcast de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo por fluxo contínuo de Internet, tal como fluxo contínuo adaptativo dinâmico através de HTTP (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outros aplicativos.
[0042] A interface de entrada 122 do dispositivo de destino 116 recebe um fluxo de bits de vídeo codificado do meio passível de leitura por computador 110 (como, por exemplo, o dispositivo de armazenamento 112, o servidor de arquivos 114 ou semelhante). O meio passível de leitura por computador de fluxo de bits de vídeo codificado 110 pode incluir informações de sinalização definidas pelo codificador de vídeo 200, que também é utilizado pelo decodificador de vídeo 300, tal como elementos de sintaxe que têm valores que descrevem características e/ou processamento de blocos de vídeo ou outras unidades codificadas (como, por exemplo, fatias, figuras, grupos de figuras, sequências ou semelhantes). O dispositivo de exibição 118 exibe imagens decodificadas dos dados de vídeo decodificados para um usuário. O dispositivo de exibição 118 pode representar qualquer um de uma variedade de dispositivos de exibição, tal como um tubo de raios catódicos (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo emissor de luz orgânica (OLED) ou outro tipo de dispositivo de exibição.
[0043] Embora não mostrado na Figura 1, em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser integrados a um codificador de áudio e/ou decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e/ou software, para manipular fluxos contínuos multiplexados, que incluem tanto áudio quanto vídeo em um fluxo contínuo de dados comum. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo multiplexador ITU H.223 ou com outros protocolos, tal como o protocolo de datagrama de usuário (UDP).
[0044] O codificador de vídeo 200 e o decodificador de vídeo 300, cada, podem ser implementados como qualquer um de uma variedade de circuitos adequados de codificador e/ou decodificador, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados específicos para aplicativo (ASICs), arranjos de portas programáveis no campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação deles. Quando as técnicas são implementadas parcialmente no software, um dispositivo pode armazenar instruções para o software em um meio passível de leitura por computador não transitório adequado e executar as instruções no hardware utilizando um ou mais processadores para efetuar as técnicas desta revelação. Cada um dos codificadores de vídeo 200 e decodificadores de vídeo 300 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo. Um dispositivo que inclui codificador de vídeo 200 e/ou decodificador de vídeo 300 pode compreender um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio, como um telefone celular.
[0045] O codificador de vídeo 200 e o decodificador de vídeo 300 podem funcionar de acordo com um padrão de codificação de vídeo, como o ITU-T H.265, também conhecido como Codificação de Vídeo de Alta Eficácia (HEVC) ou extensivos a ele, tal como a visualização múltipla e/ou extensões de codificação de vídeo escalonáveis. Alternativamente, o codificador de vídeo 200 e o decodificador de vídeo 300 podem funcionar de acordo com outros padrões proprietários ou industriais, tal como o Modelo de Teste de Exploração Conjunta (JEM) ou ITU-T H.266, também referido como Codificação Versátil de Vídeo (VVC). Um rascunho do padrão VVC é descrito em Bross, et alii. “Codificação Versátil de Vídeo (Rascunho 6)”, Equipe Conjunta de Especialistas de Vídeo (JVET) de ITU-T SG 16 WP 3 e ISO/JEC JTC 1/SC 29/WG 11, 15.º Encontro: Gotemburgo, SE, de 3 a 12 de julho de 2019, JVET-O2001-vE (daqui por diante “Rascunho VVC 6”). Um rascunho mais recente do padrão VVC é descrito em Bross, et alii. “Codificação de Vídeo Versátil (Rescunho 7)”, Equipe de Especialistas de Vídeo Conjunta (JVET) de ITU-T SG 16WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 16.º Encontro: Genebra, CH, 1-11 de outubro de 2019, JVET- P2001-v9 (daqui por diante “Rascunho VVC 7”). As técnicas desta revelação, contudo, não estão limitadas a qualquer padrão de codificação específico.
[0046] Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem efetuar a codificação de imagens baseada em bloco. O termo “bloco” geralmente se refere a uma estrutura que inclui dados a serem processados (como, por exemplo, codificados, decodificados ou utilizados de outra forma no processo de codificação e/ou decodificação). Por exemplo, um bloco pode incluir uma matriz bidimensional de amostras de dados de luminância e/ou crominância. Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar dados de vídeo representados no formato YUV (como, por exemplo, Y, Cb, Cr). Isto é, ao invés de codificar dados vermelho, verde e azul (RGB) para amostras de uma imagem, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar os componentes de luminância (luma) e crominância (croma), onde os componentes de crominância podem incluir tanto componentes de crominância de matiz vermelha quanto de matiz azul. Em alguns exemplos, o codificador de vídeo 200 converte dados formatados RGB recebidos em uma representação YUV antes da codificação e o decodificador de vídeo 300 converte a representação YUV no formato RGB. Alternativamente, as unidades de pré-processamento e pós- processamento (não mostradas) podem efetuar essas conversões.
[0047] Esta revelação pode geralmente referir- se à codificação (como, por exemplo, codificação e decodificação) de imagens para incluir o processo de codificação ou decodificação de dados da imagem. De modo semelhante, esta revelação pode referir-se à codificação de blocos de uma imagem para incluir o processo de codificação ou decodificação de dados para os blocos, como, por exemplo, predição e/ou codificação residual. Um fluxo de bits de vídeo codificado geralmente inclui uma série de valores para elementos de sintaxe representativos de decisões de codificação (como, por exemplo, modos de codificação) e particionamento de imagens em blocos. Assim, as referências à codificação de uma figura ou bloco devem geralmente ser entendidas como valores de codificação para elementos de sintaxe que formam a imagem ou bloco.
[0048] A HEVC define diversos blocos, que incluem unidades de codificação (CUs), unidades de predição (PUs) e unidades de transformadas (TUs). De acordo com a HEVC, um codificador de vídeo (tal como o codificador de vídeo 200) particiona uma unidade de árvore de codificação (CTU) em CUs de acordo com uma estrutura quad-tree. Isto é, o codificador de vídeo particiona CTUs e CUs em quatro quadrados iguais e não sobrepostos, e cada nó do quad-tree tem ou zero ou quatro nós filhos. Os nós sem nós filhos podem ser referidos como “nós folhas” e as CUs de tais nós folhas podem incluir uma ou mais PUs e/ou uma ou mais TUs. O codificador de vídeo pode particionar adicionalmente PUs e TUs. O codificador de vídeo pode adicionalmente particionar PUs e TUs. Por exemplo, em HEVC, um quad-tree residual (RQT) representa o particionamento de TUs. Em HEVC, as PUs representam dados de inter-predição, enquanto as TUs representam dados residuais. As CUs que são intra- preditas incluem informações de intra-predição, tal como uma indicação de modo intra.
[0049] Como outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para funcionar de acordo com JEM ou VVC. De acordo com JEM ou VVC, um codificador de vídeo (tal como o codificador de vídeo 200) particiona uma imagem em uma pluralidade de unidades de árvore de codificação (CTUs). O codificador de vídeo 200 pode particionar uma CTU de acordo com uma estrutura de árvore, tal como uma estrutura de árvore binária quad-tree (QTBT) ou estrutura de árvore de múltiplos tipos (MTT). A estrutura QTBT remove os conceitos de múltiplos tipos de partição, tal como a separação entre CUs, PUs e TUs da HEVC. Contudo, em alguns exemplos, TUs e CUs podem ser particionadas de modo diferente. Ou seja, a TU pode incluir uma pluralidade de sub-TUs que têm uma forma e tamanho diferente que o da CU. Uma estrutura QTBT inclui dois níveis: um primeiro nível particionado de acordo com o particionamento em quad-tree e um segundo nível particionado de acordo com o particionamento em árvore binária. Um nó raiz da estrutura QTBT corresponde a uma CTU. Os nós folha das árvores binárias correspondem às unidades de codificação (CUs).
[0050] Em uma estrutura de particionamento MTT, os blocos podem ser particionados utilizando-se uma partição quad-tree (QT), um particionamento em árvore binária (BT) e um ou mais tipos de partições em árvore tripla (TT) (também chamada de árvore ternária (TT)). Uma partição em árvore tripla ou ternária é uma partição onde um bloco é dividido em três sub-blocos. Em alguns exemplos, uma partição em árvore tripla ou ternária divide um bloco em três sub-blocos sem dividir o bloco original através do centro. Os tipos de partição em MTT (como, por exemplo, QT, BT e TT) podem ser simétricos ou assimétricos.
[0051] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem utilizar uma única estrutura QTBT ou MTT para representar cada um dos componentes da luminância e crominância, enquanto em outros exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem utilizar duas ou mais estruturas QTBT ou MTT, tal como uma estrutura QTBT/MTT para o componente de luminância e outra estrutura QTBT/MTT para ambos os componentes de crominância (ou duas estruturas QTBT/MTT para os respectivos componentes de crominância).
[0052] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para utilizar particionamento em quad-tree por HEVC, particionamento QTBT, particionamento MTT ou outras estruturas de particionamento. Para propósitos explicativos, a descrição das técnicas desta revelação é apresentada com relação ao particionamento QTBT. Contudo, deve ficar entendido que as técnicas desta revelação também podem ser aplicadas a codificadores de vídeo configurados para utilizar particionamento em quad-tree ou, como também, outros tipos de particionamento.
[0053] Os blocos (como, por exemplo, CTUs ou CUs) podem ser agrupados por diversos modos em uma imagem. Como um exemplo, um bloco pode referir-se a uma região retangular de fileiras de CTU dentro de um recorte de imagem específico em uma imagem. Um recorte de imagem pode ser uma região retangular de CTUs dentro de uma coluna de recortes de imagem específica e uma fileira de recortes de imagem específica em uma imagem. Uma coluna de recortes de imagem refere-se a uma região retangular de CTUs que tem uma altura igual à altura da imagem e uma largura especificada por elementos de sintaxe (como, por exemplo,
como em um conjunto de parâmetros de imagem). Uma fileira de recortes de imagem refere-se a uma região retangular de CTUs que tem uma altura especificada por elementos de sintaxe (como, por exemplo, como em um conjunto de parâmetros de imagem) e uma largura igual à largura da imagem.
[0054] Em alguns exemplos, um recorte de imagem pode ser particionado em múltiplos blocos, cada um dos quais pode incluir uma ou mais fileiras de CTU dentro do recorte de imagem. Um recorte de imagem que não é particionado em múltiplos blocos também pode ser referido como um bloco. Contudo, um bloco que na verdade é um subconjunto de um recorte de imagem não pode ser referido como um recorte de imagem.
[0055] Os blocos em uma imagem também podem ser dispostos em uma fatia. Uma fatia pode ser um número inteiro de blocos de uma imagem que pode estar contida exclusivamente em uma única unidade de camada de abstração de rede (NAL). Em alguns exemplos, uma fatia inclui um número de recortes de imagem completo ou apenas uma sequência consecutiva de recortes de imagem completos de um recorte de imagem.
[0056] Esta revelação pode utilizar “NxN” e “N por N” de modo intercambiável para se referir às dimensões da amostra de um bloco (tal como uma CU ou outro bloco de vídeo) em termos de dimensões verticais e horizontais, como, por exemplo, amostras 16x16 ou amostras 16 por 16. Em geral, uma CU 16x16 tem 16 amostras na direção vertical (y = 16) e 16 amostras na direção horizontal (x = 16). De modo semelhante, uma CU NxN geralmente tem N amostras na direção vertical e N amostras na direção horizontal, onde N representa um valor de número inteiro não negativo. As amostras em uma CU podem ser dispostas em linhas e colunas. Além do mais, as CUs não necessariamente têm o mesmo número de amostras na direção horizontal que na direção vertical. Por exemplo, as CUs podem compreender amostras NxM, onde M não é necessariamente igual a N.
[0057] O codificador de vídeo 200 codifica dados de vídeo para CUs representando predição e/ou informações residuais e outras informações. As informações de predição indicam como a CU deve ser predita de modo a formar um bloco de predição para a CU. As informações residuais geralmente representam diferenças de amostra por amostra entre as amostras da CU anteriores à codificação e ao bloco de predição.
[0058] Para predizer uma CU, o codificador de vídeo 200 pode de maneira geral formar um bloco de predição para a CU através de inter-predição ou intra-predição. A inter-predição de maneira geral se refere à predição da CU a partir de dados de uma imagem anteriormente codificada, enquanto a intra-predição de maneira geral se refere à predição da CU a partir de dados anteriormente codificados da mesma imagem. Para efetuar inter-predição, o codificador de vídeo 200 pode gerar o bloco de predição utilizando um ou mais vetores de movimento. O codificador de vídeo 200 pode de maneira geral efetuar uma busca de movimento para identificar um bloco de referência que se corresponda com proximidade à CU, por exemplo, em termos de diferenças entre a CU e o bloco de referência. O codificador de vídeo 200 pode calcular uma métrica de diferença utilizando uma soma de diferença absoluta (SAD), uma soma de diferenças ao quadrado (SSD), diferença absoluta média (MAD), diferença ao quadrado média (MSD) ou outros cálculos de diferenças para determinar se um bloco de referência se corresponde com proximidade à CU atual. Em alguns exemplos, o codificador de vídeo 200 pode predizer a CU atual utilizando predição unidirecional ou predição bidirecional.
[0059] Alguns exemplos de JEM e VVC também fornecem um modo de compensação de movimento afim, que pode ser considerado um modo de inter-predição. No modo de compensação de movimento afim, o codificador de vídeo 200 pode determinar dois ou mais vetores de movimento que representam movimento não translacional, tal como aumentar ou diminuir o zoom, rotação, movimento em perspectiva ou outros tipos de movimento irregular.
[0060] Para efetuar a intra-predição, o codificador de vídeo 200 pode selecionar um modo de intra- predição para gerar o bloco de predição. Alguns exemplos de JEM e VVC fornecem sessenta e sete modos de intra-predição estão disponíveis, inclusive diversos modos direcionais, bem como o modo planar e o modo DC. Em geral, o codificador de vídeo 200 seleciona um modo de intra-predição que descreve amostras vizinhas de um bloco atual (como, por exemplo, um bloco de uma CU) a partir do qual efetua predição de amostras do bloco atual. Tais amostras de maneira geral podem estar acima, acima e à esquerda ou à esquerda do bloco atual na mesma imagem que o bloco atual, presumindo-se o codificador de vídeo 200 que codifica CTUs e CUs em ordem de varredura raster (esquerda para a direita, de cima para baixo).
[0061] O codificador de vídeo 200 codifica dados que representam o modo de predição para um bloco atual. Por exemplo, para modos de inter-predições, o codificador de vídeo 200 pode codificar dados que representam qual dos diversos modos de inter-predições disponíveis são utilizados, bem como informações de movimento para o modo correspondente. Para inter-predição unidirecional ou bidirecional, por exemplo, o codificador de vídeo 200 pode codificar vetores de movimento utilizando a predição de vetor de movimento avançada (AMVP) ou o modo de mistura. O codificador de vídeo 200 pode utilizar modos semelhantes para codificar vetores de movimento para o modo de compensação de movimento afim.
[0062] Em seguida à predição, tal como intra- predição ou inter-predição de um bloco, o codificador de vídeo 200 pode calcular dados residuais para o bloco. Os dados residuais, tal como um bloco residual, representam amostras por diferenças de amostras entre o bloco e um bloco de predição para o bloco, formado utilizando-se o modo de predição correspondente. O codificador de vídeo 200 pode aplicar uma ou mais transformadas ao bloco residual para produzir dados transformados em um domínio de transformada ao invés do domínio de amostra. O resultado da transformada para o bloco residual pode ser um bloco residual no domínio da transformada (também chamado de domínio da frequência). O bloco residual é um exemplo de uma TU e, em um ou mais exemplos, a TU pode ser particionada adicionalmente em uma pluralidade de sub-TUs (como, por exemplo, sub-blocos residuais).
[0063] Como um exemplo, o codificador de vídeo 200 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada de wavelet ou uma transformada conceitualmente semelhante aos dados de vídeo residuais.
Além disso, o codificador de vídeo 200 pode aplicar uma transformada secundária em seguida à primeira transformada, tal como uma transformada secundária não separável dependente de modo (MDNSST), uma transformada dependente de sinal, uma transformada de Karhunen-Loeve (KLT), ou semelhante.
O codificador de vídeo 200 produz coeficientes de transformada em seguida à aplicação de uma ou mais transformadas.
Pode haver outros tipos de transformadas e os exemplos descritos nesta revelação podem utilizar um ou mais dos tipos de transformadas.
Por exemplo, o codificador de vídeo 200 pode ser configurado para selecionar um tipo de transformada para utilização para efetuar transformada do domínio de amostras para o domínio de transformadas (como, por exemplo, frequência), e o decodificador de vídeo 300 pode ser configurado para selecionar um tipo de transformada para utilização para efetuar transformada (como, por exemplo, transformada inversa) do domínio de transformadas de volta ao domínio de amostras.
Em alguns exemplos, o codificador de vídeo 200 pode ser configurado para selecionar e o decodificador de vídeo 300 pode ser configurado para inferir o tipo de transformada a ser utilizada com base em diversos critérios, de modo que o codificador de vídeo 200 e o decodificador de vídeo 300 selecionem o mesmo tipo de transformada.
Ao inferir o tipo de transformada, o codificador de vídeo 200 pode não necessitar sinalizar explicitamente informações indicativas do tipo de transformada e o decodificador de vídeo 300 pode não necessitar receber informações indicativas do tipo de transformada.
[0064] Conforme observado acima, em seguida a quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 200 pode efetuar a quantização dos coeficientes de transformada. Quantização de maneira geral refere-se a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes de transformada, o que proporciona mais compactação. Ao efetuar o processo de quantização, o codificador de vídeo 200 pode reduzir a profundidade de bits associada com alguns ou todos os coeficientes de transformada. Por exemplo, o codificador de vídeo 200 pode arredondar um valor de n-bits para um valor de m-bits durante a quantização, onde n é maior do que m. Em alguns exemplos, para efetuar a quantização, o codificador de vídeo 200 pode efetuar um deslocamento para a direita bit a bit do valor a ser quantizado.
[0065] Em seguida à quantização, o codificador de vídeo 200 pode efetuar varredura dos coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional, o que inclui os coeficientes de transformada quantizados. A varredura pode ser desenhada para colocar coeficientes de transformada de energia mais elevada (e, portanto, de frequência mais baixa) na frente do vetor e para colocar coeficientes de transformada de energia mais baixa (e, portanto, de frequência mais elevada) na parte de trás do vetor. Em alguns exemplos, o codificador de vídeo 200 pode utilizar uma ordem de varredura predefinida para efetuar varredura dos coeficientes de transformada quantizados para produzir um vetor serializado e, em então, codificar por entropia os coeficientes de transformada quantizados do vetor. Em outros exemplos, o codificador de vídeo 200 pode efetuar uma varredura adaptativa. Depois de efetuar varredura dos coeficientes de transformada quantizados para formar o vetor unidimensional, o codificador de vídeo 200 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação aritmética binária adaptativa ao contexto (CABAC). O codificador de vídeo 200 também pode codificar por entropia os valores de codificação para elementos de sintaxe que descrevem metadados associados com os dados de vídeo codificados para utilização pelo decodificador de vídeo 300 na decodificação dos dados de vídeo.
[0066] Para efetuar CABAC, o codificador de vídeo 200 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode estar relacionado a, por exemplo, se valores vizinhos do símbolo são de valor zero ou não. A determinação da probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0067] O codificador de vídeo 200 pode adicionalmente gerar dados de sintaxe, tal como dados de sintaxe com base em bloco, dados de sintaxe com base em imagem e dados de sintaxe com base em sequência, para o decodificador de vídeo 300, como, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia ou outros dados de sintaxe, tais como um conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de vídeo (VPS). O decodificador de vídeo 300 também pode decodificar tais dados de sintaxe para determinar como decodificar os dados de vídeo correspondentes.
[0068] Dessa maneira, o codificador de vídeo 200 pode gerar um fluxo de bits que inclui dados de vídeo codificados, como, por exemplo, elementos de sintaxe que descrevem o particionamento de uma imagem em blocos (como, por exemplo, CUs) e predição e/ou informações residuais para os blocos. Por fim, o decodificador de vídeo 300 pode receber o fluxo de bits e decodificar os dados de vídeo codificados.
[0069] Em geral, o decodificador de vídeo 300 efetua um processo recíproco ao que foi efetuado pelo codificador de vídeo 200 para decodificar os dados de vídeo codificados do fluxo de bits. Por exemplo, o decodificador de vídeo 300 pode decodificar valores para os elementos de sintaxe do fluxo de bits utilizando CABAC de uma maneira substancialmente semelhante, embora recíproca, ao processo de codificação CABAC do codificador de vídeo 200. Os elementos de sintaxe podem definir informações de particionamento de uma imagem em CTUs, e o particionamento de cada CTU de acordo com uma estrutura de partição correspondente, tal como uma estrutura QTBT, para definir CUs da CTU. Os elementos de sintaxe podem definir adicionalmente informações de predição e residuais para blocos (como, por exemplo, CUs) de dados de vídeo.
[0070] A informação residual pode ser representada por, por exemplo, coeficientes de transformada quantizados. O decodificador de vídeo 300 pode efetuar quantização inversa e transformada inversa nos coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 300 utiliza um modo de predição sinalizado (intra ou inter- predição) e informações de predição relacionadas (como, por exemplo, informações de movimento para inter-predição) para formar um bloco de predição para o bloco. O decodificador de vídeo 300 pode então combinar o bloco de predição e o bloco residual (em uma base de amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 300 pode efetuar um processamento adicional, como efetuar um processo de desbloqueio para reduzir artefatos visuais ao longo dos limites do bloco.
[0071] De acordo com as técnicas desta revelação, um bloco residual (como, por exemplo, TU) pode ser particionado para formar uma pluralidade de sub-blocos residuais (como, por exemplo, sub-TUs). Por exemplo, uma TU pode ser particionada em um de: quatro sub-TUs quadradas (tal como particionamento em quad-tree), duas sub-TUs retangulares (tal como particionamento binário) ou três sub-TUs retangulares (tal como particionamento ternário). Outro exemplo pode ser uma TU particionada em quatro sub- TUs retangulares. Além do mais, pode haver uma pluralidade de diferentes tipos de transformadas (como, por exemplo, diferentes tipos de transformadas de cosseno discretas (DCTs) e transformadas de seno discretas (DSTs)).
[0072] Esta revelação descreve exemplos de modalidades nos quais o codificador de vídeo 200 pode sinalizar e o decodificador de vídeo 300 pode determinar se um bloco residual (como, por exemplo, TU) está particionado e uma maneira no qual o bloco residual é particionado (como, por exemplo, determinar um tipo de árvore de partição). Além disso, esta revelação descreve exemplos de modalidades nos quais se determina o tipo de transformada (também chamado de núcleo de transformada) a ser utilizada.
[0073] Por exemplo, o decodificador de vídeo 300 pode receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição. O decodificador de vídeo 300 pode determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub-blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição. O decodificador de vídeo 300 pode produzir os dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais. O decodificador de vídeo 300 pode decodificar o bloco atual utilizando os dados residuais.
[0074] Em outro exemplo, o codificador de vídeo 200 pode determinar que um bloco residual para um bloco atual de dados de vídeo é particionado de acordo com um tipo de árvore de partição em uma pluralidade de sub- blocos residuais. O codificador de vídeo 200 pode codificar um fluxo de bits como uma representação codificada de dados de vídeo que sinaliza informações indicativas de se o bloco residual é particionado e outros sinais de informações indicativas do tipo de árvore de partição para o bloco residual que é particionado.
[0075] Esta revelação pode de maneira geral referir-se a “sinalizar” determinadas informações, tais como elementos de sintaxe. O termo “sinalizar” pode de modo geral referir-se à comunicação de valores para elementos de sintaxe e/ou outros dados utilizados para decodificar dados de vídeo codificados. Ou seja, o codificador de vídeo 200 pode sinalizar valores para os elementos de sintaxe no fluxo de bits. Em geral, a sinalização refere-se à geração de um valor no fluxo de bits. Conforme observado acima, o dispositivo de origem 102 pode transportar o fluxo de bits para o dispositivo de destino 116 substancialmente em tempo real, ou não em tempo real, tal como pode ocorrer quando armazena elementos de sintaxe para o dispositivo de armazenamento 112 para recuperação posterior pelo dispositivo de destino 116.
[0076] As Figuras 2A e 2B são diagramas conceituais que mostram um exemplo de estrutura de árvore binária quad-tree (QTBT) 130 e uma unidade de árvore de codificação (CTU) correspondente 132. As linhas sólidas representam a divisão de quad-tree e as linhas pontilhadas indicam a divisão de árvore binária. Em cada nó de divisão (isto é, não folha) da árvore binária, um sinalizador é sinalizado para indicar qual tipo de divisão (isto é, horizontal ou vertical) é utilizado, onde 0 indica divisão horizontal e 1 indica divisão vertical neste exemplo. Para a divisão de quad-tree, não há necessidade de indicar o tipo de divisão, pois os nós quad-tree dividem um bloco horizontalmente e verticalmente em quatro sub-blocos com tamanho igual. Por conseguinte, o codificador de vídeo 200 pode codificar e o decodificador de vídeo 300 pode decodificar elementos de sintaxe (tal como informações de divisão) para uma região de nível de árvore da estrutura QTBT 130 (isto é, as linhas sólidas) e elementos de sintaxe (tal como informações de divisão) para um nível de árvore de predição da estrutura QTBT 130 (isto é, as linhas tracejadas). O codificador de vídeo 200 pode codificar e o decodificador de vídeo 300 pode decodificar dados de vídeo, tal como dados de predição e transformada, para CUs representadas por nós folhas terminais da estrutura QTBT
130.
[0077] Em geral, a CTU 132 da Figura 2B pode ser associada a parâmetros que definem tamanhos de blocos correspondentes aos nós da estrutura QTBT 130 nos primeiro e segundo níveis. Esses parâmetros podem incluir um tamanho de CTU (que representa um tamanho de CTU 132 em amostras), um tamanho de quad-tree mínimo (MinQTSize, que representa um tamanho de nó folha de quad-tree permitido mínimo), um tamanho máximo de árvore binária (MaxBTSize, que representa um tamanho de nó raiz de árvore quad-tree permitido mínimo), uma profundidade de árvore binária máxima (MaxBTDepth, que representa uma profundidade de árvore binária permitida máxima) e um tamanho de árvore binária mínimo (MinBTSize, que representa o tamanho de nó folha de árvore binária permitido mínimo).
[0078] O nó raiz de uma estrutura QTBT que corresponde a uma CTU pode ter quatro nós filhos no primeiro nível da estrutura QTBT, cada um dos quais pode ser particionado de acordo com o particionamento em quad- tree. Isto é, os nós do primeiro nível são ou nós folha (sem nós filhos) ou têm quatro nós filhos. O exemplo de estrutura QTBT 130 representa tais nós como a inclusão do nó pai e dos nós filhos que têm linhas sólidas para ramificações. Se os nós do primeiro nível não forem maiores que o tamanho de nó raiz de árvore binária permitido máximo (MaxBTSize), eles podem ser particionados adicionalmente pelas respectivas árvores binárias. A divisão de árvore binária de um nó pode ser iterada até que os nós resultantes a partir da divisão atinjam o tamanho de nó de folha de árvore binária permitido mínimo (MinBTSize) ou a profundidade de árvore binária permitida máxima (MaxBTDepth). O exemplo de estrutura QTBT 130 representa tais nós com linhas tracejadas para ramificações. O nó folha de árvore binária é referido como uma unidade de codificação (CU), que é utilizada para predição (como, por exemplo, predição intra-imagem ou inter-imagem) e transformada, sem qualquer particionamento adicional. Conforme discutido acima, as CUs também podem ser referidas como “blocos de vídeo” ou “blocos”.
[0079] Em um exemplo da estrutura de particionamento QTBT, o tamanho da CTU é configurado como 128x128 (amostras luma e duas amostras croma 64x64 correspondentes), o MinQTSize é configurado como 16x16, o
MaxBTSize é configurado como 64x64, o MinBTSize (para largura e altura) é configurado como 4, e MaxBTDepth é configurado como 4. O particionamento em quad-tree é aplicado primeiro à CTU para gerar nós folhas de quad-tree. Os nós folhas de quad-tree podem ter um tamanho de 16x16 (isto é, o MinQTSize) a 128x128 (isto é, o tamanho da CTU). Se o nó folha quad-tree for de 128x128, ele não será dividido adicionalmente pela árvore binária, pois o tamanho excede o MaxBTSize (isto é, 64x64, neste exemplo). Caso contrário, o nó folha quad-tree será adicionalmente particionado pela árvore binária. Portanto, o nó folha quad-tree também é o nó raiz para a árvore binária e tem a profundidade da árvore binária como 0. Quando a profundidade da árvore binária atinge MaxBTDepth (4, neste exemplo), nenhuma divisão adicional é permitida. Quando o nó de árvore binária tem uma largura igual a MinBTSize (4, neste exemplo), isso implica que nenhuma outra divisão horizontal adicional é permitida. De modo semelhante, um nó de árvore binária que tem uma altura igual a MinBTSize implica que nenhuma divisão vertical adicional é permitida para esse nó de árvore binária. Conforme observado acima, os nós folhas da árvore binária são referidos como CUs e são processados adicionalmente de acordo com a predição e transformada sem particionamento adicional.
[0080] Conforme descrito acima, o codificador de vídeo 200 pode aplicar uma ou mais transformadas ao bloco residual, para produzir dados transformados em um domínio de transformadas ao invés do domínio de amostra (como, por exemplo, para gerar um bloco residual no domínio de transformadas). O que segue descreve exemplos de transformadas, tais como transformada discreta de seno (DST) e transformada de cosseno discreta (DCT). O esquema de transformada utilizado em HEVC também é descrito.
[0081] A transformada indica o processo de derivação de uma representação alternativa do sinal de entrada. Dado um vetor de N pontos x = [x0, x1, ...,xN-1]T e um conjunto de vetores dados {Φ0, Φ1, ..., ΦM-1}, x pode ser aproximado ou representado exatamente utilizando-se uma combinação linear de Φ0, Φ1, ..., ΦM-1, que pode ser formulado conforme o seguinte,
[0082] Conforme acima, pode ser uma aproximação ou equivalente de x. O vector f = [f1, f2, ..., fM-1] é chamado de vetor de coeficientes de transformada e {Φ0, Φ1, ..., ΦM-1} são os vetores de base de transformada.
[0083] No cenário de codificação de vídeo, os coeficientes de transformada são aproximadamente não correlacionados e esparsos. Por exemplo, a energia do vetor de entrada x é compactada somente em poucos coeficientes de transformada e os coeficientes de transformada majoritários restantes são tipicamente próximos a 0.
[0084] Os dados de entrada para transformadas utilizados pelo codificador de vídeo 200 e decodificador de vídeo 300 podem ser diferentes. Por exemplo, para o codificador de vídeo 200, os dados de entrada que são transformados são dados residuais para gerar o bloco de coeficientes de transformada pela conversão de valores de domínio espacial do residual em valores de domínio de frequência (como, por exemplo, valores de coeficiente) do bloco de coeficientes de transformada. Para o decodificador de vídeo 300, os dados de entrada que são transformados é o bloco de coeficientes de transformada (como, por exemplo, possivelmente depois da desquantização) para gerar os dados residuais pela conversão dos valores de domínio de frequência do bloco de coeficientes de transformada em valores de domínio espacial do residual. Como o decodificador de vídeo 300 efetua o inverso do processo do codificador de vídeo 200, a transformada efetuada pelo decodificador de vídeo 300 pode ser considerada como uma transformada inversa. Para facilitar, a revelação descreve transformadas de dados de entrada com o entendimento de que os dados de entrada são diferentes para o codificador de vídeo 200 e o decodificador de vídeo 300 e que a transformada efetuada pelo decodificador de vídeo 300 pode ser o inverso da transformada efetuada pelo codificador de vídeo 200.
[0085] Fornecidos os dados de entrada específicos, a transformada ótima em termos de compactação de potência é a assim chamada transformada de Karhunen- Loeve (KLT), que utiliza os vetores próprios da matriz de covariância dos dados de entrada como os vetores de base da transformada. Portanto, a KLT é uma transformada dependente de dados e não tem uma formulação matemática geral. Contudo, de acordo com determinadas suposições (como, por exemplo, quando os dados de entrada formam um processo de Markov estacionário de primeira ordem), a KLT correspondente é de fato um membro da família sinusoidal de transformadas unitárias, que é introduzida no Pedido dos E.U.A., N.º 16/426.749, depositado a 30 de maio de 2019 e H. E. Egilrnez, Y. H. Chao, A. Said, V. Seregin e M Karczewicz, Transformadas múltiplas adaptativas com overhead de sinalização reduzida. A família sinusoidal de transformadas unitárias indica transformadas que utilizam vetores de base de transformada formulados conforme o seguinte: Φm(k) = A.eike = B.e-ike
[0086] Conforme acima, e é a base do logaritmo natural aproximadamente igual a 2,71828, A, B e Φ são números complexos em geral e dependem do valor de m.
[0087] Várias transformadas bem conhecidas, que incluem a Fourier discreta, cosseno, seno e KLT (para processos de Markov estacionários de primeira ordem) são membros desta família senoidal de transformadas unitárias. De acordo com Jain, A. K., Uma família sinusoidal de transformadas unitárias, Trans. IEEE, em Análise de Padrões e Inteligência de Máquinas, 1, 356, 1979, o conjunto completo de famílias de transformadas de cosseno discreta (DCT) e transformadas de seno discreta (DST) inclui totalmente 16 transformadas com base em diferentes tipos (isto é, diferentes valores de A, B e Φ), e uma definição completa dos diferentes tipos de DCT e DST são fornecidos abaixo.
[0088] Presume-se que o vetor de N pontos de entrada seja denotado como x = [x0, x1, ..., xN-1]T e é transformado em outro vetor de coeficientes de transformada de N pontos denotado como y = [y0, y1, ..., yN-1]T multiplicando-se uma matriz, o processo do qual pode ser mostrado adicionalmente de acordo com uma das seguintes formulações de transformada, em que k faixas de 0 até N-1, inclusive DCT de Tipo I (DCT-1): DCT de Tipo II (DCT-2): onde caso contrário
[0089] DCT de Tipo III (DCT-3): onde caso contrário DCT de Tipo IV (DCT-4): DCT de Tipo V (DCT-5): onde caso contrário caso contrário DCT de Tipo VI (DCT-6):
onde caso contrário caso contrário
DCT de Tipo VII (DCT-7):
onde caso contrário caso contrário
DCT de Tipo VIII (DCT-8):
DST de Tipo I (DST-1):
DST de Tipo II (DST-2):
onde caso contrário
DST de Tipo III (DST-3):
onde caso contrário
DST de Tipo IV (DST-4):
DST de Tipo V (DST-5):
DST de Tipo VI (DST-6):
DST de Tipo VII (DST-7):
DST de Tipo VIII (DST-8):
onde caso contrário caso contrário
[0090] O tipo de transformada é especificado pela formulação matemática da função de base da transformada, como, por exemplo, DST-VII de 4 pontos e DST- VII de 8 pontos têm o mesmo tipo de transformada, independentemente do valor de N.
[0091] Sem perda de generalidade, todos os tipos de transformadas acima podem ser representados utilizando-se a formulação generalizada abaixo:
[0092] Na equação acima, T é a matriz de transformada especificada pela definição de uma determinada transformada, como, por exemplo, DCT de Tipo-I~DCT de Tipo- VIII, ou DST de Tipo-I~DST de Tipo-VIII, e os vetores de linha de T, como, por exemplo, [Ti,0, Ti,1, Ti,2,..., Ti,N-1] são os vetores de base de 1.ª transformada. Uma transformada aplicada ao vetor de entrada de N pontos é chamada de transformada de N pontos.
[0093] É também observado que as formulações de transformada acima, que são aplicadas nos dados de entrada 1-D x, podem ser representadas na forma de multiplicação de matriz, conforme abaixo
[0094] Na equação acima, T indica a matriz de transformada, x indica o vetor de dados de entrada e y indica o vetor de coeficientes de transformada de saída.
[0095] O que se segue descreve a transformada para dados de entrada bidimensionais (2-D). As transformadas descritas acima podem ser aplicadas em dados de entrada 1-D e as transformadas também podem ser estendidas para as fontes de dados de entrada 2-D. Por exemplo, presume-se que que X seja um arranjo de dados MxN de entrada. Alguns métodos de aplicação de transformadas em dados de entrada 2-D incluem as transformadas 2-D separáveis e não separáveis.
[0096] Uma transformada 2-D separável aplica transformadas 1-D para os vetores horizontais e verticais de X sequencialmente, formulados conforme abaixo:
[0097] Na equação acima, C e R denotam as matrizes de transformadas MxM e NxN dadas, respectivamente. A partir da formulação, C aplica as transformadas 1-D para os vetores de coluna de X, enquanto R aplica as transformadas 1-D para os vetores de linha de X. Nesta revelação, para simplificar, denota-se as transformadas C e R como esquerda (vertical) e direita (horizontal) e ambos formam um par de transformadas. Existem casos onde C é igual a R e é uma matriz ortogonal. Em tais casos, a transformada 2-D separável é determinada por apenas uma matriz de transformada.
[0098] Uma transformada 2-D não separável primeiro reorganiza todos os elementos de X em um único vetor, nomeadamente X’, de modo a fazer o seguinte mapeamento matemático, conforme um exemplo:
[0099] Então, uma transformada 1-D T’ é aplicada para X’, conforme abaixo:
[0100] Na equação acima, T’ é uma matriz de transformada (M*N) x (M*N).
[0101] Na codificação de vídeo, as transformadas 2-D separáveis são sempre aplicadas, uma vez que as transformadas 2-D exigem muito menos contagens de operação (adição, multiplicação) em comparação com as transformadas 1-D.
[0102] A seguir são descritos os tipos de transformadas aplicadas em HEVC. Em alguns codecs de vídeo, tal como H.264/AVC, uma aproximação por número inteiro da Transformada de Cosseno Discreta (DCT) de Tipo-II de 4 e 8 pontos é sempre aplicada tanto para predição residual Intra quanto para Inter. Para melhor acomodar as diversas estatísticas de amostras residuais, tipos mais flexíveis de transformadas diferentes da DCT de Tipo-II são utilizados no codec de vídeo de última geração. Por exemplo, em HEVC, uma aproximação por número inteiro da Transformada de Seno Discreta (DST) de Tipo VII de 4 pontos é utilizada para predição residual Intra, que é tanto teoricamente provada quanto validada experimentalmente, em S. A. Martucci, “Convolução simétrica e as transformadas de seno e cosseno discretas”; Processamento de Sig. de Trans IEEE SP-42, 1038-1051 (1994), em que a DST de Tipo-VII é mais eficiente do que a DCT de Tipo-II para vetores residuais gerados ao longo das direções de predição Intra (como, por exemplo, a DST de Tipo-VII é mais eficiente que a DCT de Tipo-II para vetores residuais de linha gerados pela direção de predição Intra horizontal). Em HEVC, uma aproximação por número inteiro de DST de Tipo-VII de 4 pontos é aplicada apenas para blocos residuais de predição Intra de luma 4x4. A DST- VII de 4 pontos utilizada em HEVC é mostrada abaixo, DST-VII 4x4: {29, 55, 74, 84} {74, 74, 0, -74} {84, -29, -74, 55} {55, -84, 74, -29}
[0103] Em HEVC, para blocos residuais que não são blocos residuais de predição Intra de luma de 4x4, aproximações por número inteiro da DCT de Tipo-Il de 4 pontos, 8 pontos, 16 pontos e 32 pontos também são aplicadas, conforme mostrado abaixo: DCT-II de 4 pontos: {64, 64, 64, 64} {83, 36, -36, -83} {64, -64, -64, 64} {36, -83, 83, -36} DCT-II de 8 pontos: {64, 64, 64, 64, 64, 64, 64, 64} {89, 75, 50, 18, -18, -50, -75, -89} {83, 36, -36, -83, -83, -36, 36, 83} {75, -18, -89, -50, 50, 89, 18, -75} {64, -64, -64, 64, 64, -64, -64, 64} {50, -89, 18, 75, -75, -18, 89, -50} {36, -83, 83, -36, -36, 83, -83, 36} {18, -50, 75, -89, 89, -75, 50, -18} DCT-II de 16 pontos: {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}
{90, 87, 80, 70, 57, 43, 25, 9, -9, -25, -43, - 57, -70, -80, -87, -90} {89, 75, 50, 18, -18, -50, -75, -89, -89, -75, - 50, -18, 18, 50, 75, 89} {87, 57, 9, -43, -80, -90, -70, -25, 25, 70, 90, 80, 43, -9, -57, -87} {83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83} {80, 9, -70, -87, -25, 57, 90, 43, -43, -90, -57, 25, 87, 70, -9, -80} {75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75} {70, -43, -87, 9, 90, 25, -80, -57, 57, 80, -25, -90, -9, 87, 43, -70} {64, -64, -64, 64, 64, -64, -64, 64, 64, -64, - 64, 64, 64, -64, -64, 64} {57, -80, -25, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 25, 80, -57} {50, -89, 18, 75, -75, -18, 89, -50, -50, 89, - 18, -75, 75, 18, -89, 50} {43, -90, 57, 25, -87, 70, 9, -80, 80, -9, -70, 87, -25, -57, 90, -43} {36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36} {25, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, - 43, 80, -90, 70, -25} {18, -50, 75, -89, 89, -75, 50, -18, -18, 50, - 75, 89, -89, 75, -50, 18} {9, -25, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 25, -9}
DCT-II de 32 pontos: {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 6, 64, 64, 64, 64} {90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 46, 38, 31, 22, 13, 4, -4, -13, -22, -31, -38, -46, -54, -61, -67, -73, -78, -82, -85, -88, -90, -90} {90, 87, 80, 70, 57, 43, 25, 9, -9, -25, -43, - 57, -70, -80, -87, -90, -90, -87, -80, -70, -57, -43, -25, -9, 9, 25, 43, 57, 70, 80, 87, 90} {90, 82, 67, 46, 22, -4, -31, -54, -73, -85, -90, -88, -78, -61, -38, - 13, 13, 38, 61, 78, 88, 90, 85, 73, 54, 31, 4, -22, -46, -67, -82, -90} {89, 75, 50, 18, -18, -50, -75, -89, -89, -75, - 50, -18, 18, 50, 75, 89, 89, 75, 50, 18, -18, -50, -75, - 89, -89, -75, -50, -18, 18, 50, 75, 89} {88, 67, 31, -13, -54, -82, -90, -78, -46, -4, 38, 73, 90, 85, 61, 22, -22, -61, -85, -90, -73, -38, 4, 46, 78, 90, 82, 54, 13, -31, -67, -88} {87, 57, 9, -43, -80, -90, -70, -25, 25, 70, 90, 80, 43, -9, -57, -87, -87, -57, -9, 43, 80, 90, 70, 25, - 25, -70, -90, -80, -43, 9, 57, 87} {85, 46, -13, -67, -90, -73, -22, 38, 82, 88, 54, -4, -61, -90, -78, -31, 31, 78, 90, 61, 4, -54, -88, -82, - 38, 22, 73, 90, 67, 13, -46, -85} {83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83}
{82, 22, -54, -90, -61, 13, 78, 85, 31, -46, -90, -67, 4, 73, 88, 38, -38, -88, -73, -4, 67, 90, 46, -31, - 85, -78, -13, 61, 90, 54, -22, -82} {80, 9, -70, -87, -25, 57, 90, 43, -43, -90, -57, 25, 87, 70, -9, -80, -80, -9, 70, 87, 25, -57, -90, -43, 43, 90, 57, -25, -87, -70, 9, 80} {78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 31, 90, 54, -38, -90, -46, 46, 90, 38, -54, -90, -31, 61, 88, 22, -67, -85, -13, 73, 82, 4, -78} {75,-18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75, 75, -18, -89, -50, 50, 89, 18, -75, - 75, 18, 89, 50, -50, -89, -18, 75} {73, -31, -90, -22, 78, 67, -38, -90, -13, 82, 61, -46, -88, -4, 85, 54, -54, -85, 4, 88, 46, -61, -82, 13, 90, 38, -67, -78, 22, 90, 31, -73} {70, -43, -87, 9, 90, 25, -80, -57, 57, 80, -25, -90, -9, 87, 43, -70, -70, 43, 87, -9, -90, -25, 80, 57, - 57, -80, 25, 90, 9, -87, -43, 70} {67, -54, -78, 38, 85, -22, -90, 4, 90, 13, -88, -31, 82, 46, -73, -61, 61, 73, -46, -82, 31, 88, -13, -90, -4, 90, 22, -85, -38, 78, 54, -67} {64, -64, -64, 64, 64, -64, -64, 64, 64, -64,-64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64 ,- 64, 64, 64, -64, -64, 64, 64, -64, -64, 64} {61, -73, -46, 82, 31, -88, -13, 90, -4, -90, 22, 85, -38, -78, 54, 67, -67, -54, 78, 38, -85, -22, 90, 4, - 90, 13, 88, -31, -82, 46, 73, -61} {57, -80, -25, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 25, 80, -57, -57, 80, 25, -90, 9, 87, -43, -70, 70, 43, -87, -9, 90, -25, -80, 57}
{54, -85, -4, 88, -46, -61, 82, 13, -90, 38, 67, -78, -22, 90, -31, -73, 73, 31, -90, 22, 78, -67,-38, 90, - 13, -82, 61, 46, -88, 4, 85, -54} {50, -89, 18, 75, -75, -18, 89, -50, -50, 89, - 18, -75, 75, 18, -89, 50, 50, -89, 18, 75, -75, -18, 89, - 50, -50, 89, -18, -75, 75, 18, -89, 50} {46, -90, 38, 54, -90, 31, 61, -88, 22, 67, -85, 13, 73, -82, 4, 78, -78, -4, 82, -73, -13, 85, -67, -22, 88, -61, -31, 90, -54, -38, 90, -46} {43, -90, 57, 25, -87, 70, 9, -80, 80, -9, -70, 87, -25, -57, 90, -43, -43, 90, -57, -25, 87, -70, -9, 80, -80, 9, 70, -87, 25, 57, -90, 43} {38, -88, 73, -4, -67, 90, -46, -31, 85, -78, 13, 61, -90, 54, 22, -82, 82, -22, -54, 90, -61, -13, 78, -85, 31, 46, -90, 67, 4, -73, 88, -38} {36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36} {31, -78, 90, -61, 4, 54, -88, 82, -38, -22, 73, -90, 67, -13, -46, 85, -85, 46, 13, -67, 90, -73, 22, 38, - 82, 88, -54, -4, 61, -90, 78, -31} {25, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, - 43, 80, -90, 70, -25, -25, 70, -90, 80, -43, -9, 57, -87, 87, -57, 9, 43, -80, 90, -70, 25} {22, -61, 85, -90, 73, -38, -4, 46, -78, 90, -82, 54, -13, -31, 67, -88, 88, -67, 31, 13, -54, 82, -90, 78, - 46, 4, 38, -73, 90, -85, 61, -22} {18, -50, 75, -89, 89, -75, 50, -18, -18, 50, - 75, 89, -89, 75, -50, 18, 18, -50, 75, -89, 89, -75, 50, - 18, - 18, 50, -75, 89, -89, 75, -50, 18}
{13, -38, 61, -78, 88, -90, 85, -73, 54, -31, 4, 22, -46, 67, -82, 90, -90, 82, -67, 46, -22, -4, 31, -54, 73, - 85, 90, -88, 78, -61, 38, -13} {9, -25, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 25, -9, -9, 25, -43, 57, -70, 80, -87, 90, - 90, 87, -80, 70, -57, 43, -25, 9} {4, -13, 22, -31, 38, -46, 54, -61, 67, -73, 78, -82, 85, -88, 90, -90, 90, -90, 88, -85, 82, -78, 73, - 67, 61, -54, 46, -38, 31, -22, 13, -4}
[0104] As Figuras 3A e 3B são diagramas conceituais que mostram um exemplo de esquema de transformada com base em uma quad-tree residual de HEVC. Em HEVC, uma estrutura de codificação de transformada que utiliza a quad-tree residual (RQT) é aplicada para adaptar diversas características de blocos residuais, o que é descrito sumariamente em J. Han, A. Saxena e K. Rose, “Encaminhamento conjunto da predição espacial otimizada e transformada adaptativa de vídeo/imagem”, IEEE, Conferência Internacional sobre Acústica, Fala e Processamento de Sinais (ICASSP), março de 2010, pp. 726-729. Informações adicionais acerca de RQT estão disponíveis em: http://www.hhi.fraunhofer.de/fields-of- competence/image-processing/research-groups/image-video- coding/hevc-high-efficiency-video-coding/transform-coding- using-the-residual-quad-tree-rqt.html
[0105] Em RQT, cada imagem é dividida em unidades de árvore de codificação (CTU), que são codificadas em ordem de varredura raster para um bloco ou fatia específicos. Uma CTU é um bloco quadrado e representa a raiz de uma quad-tree, isto é, a árvore de codificação. O tamanho da CTU pode variar de amostras luma de 8x8 a 64x64, mas tipicamente é utilizada 64x64. Cada CTU pode ser adicionalmente dividida em blocos quadrados menores chamados unidades de codificação (CUs). Depois que a CTU é dividida recursivamente em CUs, cada CU é adicionalmente dividida em unidades de predição (PU) e unidades de transformada (TU). O particionamento de uma CU em TUs é executado recursivamente com base em uma abordagem quad- tree, portanto o sinal residual de cada CU é codificado por uma estrutura em árvore, nomeadamente, a quad-tree residual (RQT). A RQT permite tamanhos de TU de amostras luma de 4x4 a 32x32.
[0106] A Figura 3A mostra um exemplo onde a CU 134 inclui 10 TUs, rotuladas com as letras de a j, e o particionamento de bloco correspondente. Cada nó de RQT 136 mostrado na Figura 3B é de fato uma unidade de transformada (TU) que corresponde à Figura 3A. As TUs individuais são processadas na ordem de travessia em árvore de profundidade-primeiro, que é mostrada na Figura 3A em ordem alfabética, na qual segue uma varredura recursiva Z com travessia em profundidade-primeiro. A abordagem quad-tree permite a adaptação da transformada para as características de frequência espacial variáveis do sinal residual.
[0107] Tipicamente, tamanhos de bloco de transformadas maiores, que têm suporte espacial maior, fornecem melhor resolução de frequência. Contudo, tamanhos de bloco de transformadas menores, que têm suporte espacial menor, fornecem melhor resolução espacial. A contrapartida entre os dois, resoluções espacial e de frequência, é escolhida pela decisão de modo do codificador, por exemplo,
com base na técnica de otimização de distorção de taxa. A técnica de otimização de taxa de distorção calcula uma soma ponderada de bits de codificação e distorção de reconstrução, isto é, o custo de distorção de taxa para cada modo de codificação (como, por exemplo, uma estrutura de divisão RQT específica) e seleciona o modo de codificação com menor custo de distorção de taxa como o melhor modo.
[0108] Três parâmetros são definidos na RQT: a profundidade máxima da árvore, o tamanho de transformada permitido mínimo e o tamanho de transformada permitido máximo. Os tamanhos mínimo e máximo de transformada podem variar na faixa de amostras de 4x4 a 32x32, que correspondem aos blocos de transformadas suportados mencionados no parágrafo anterior. A profundidade permitida máxima da RQT restringe o número de TUs. Uma profundidade máxima igual a zero significa que um bloco de codificação (CB) não pode ser dividido ainda mais se cada TB incluído atingir o tamanho de transformada máximo permitido, como, por exemplo, 32x32.
[0109] Todos esses parâmetros interagem e influenciam a estrutura da RQT. Considere-se um caso, no qual o tamanho do CB raiz é de 64x64, a profundidade máxima é igual a zero e o tamanho máximo de transformada é igual a 32x32. Nesse caso, o CB deve ser particionado pelo menos uma vez, pois caso contrário, isso levaria a um TB de 64x64, o que não é permitido. Os parâmetros RQT, isto é, profundidade de RQT máxima, tamanho de transformada mínimo e máximo, são transmitidos no fluxo de bits no nível de conjunto de parâmetros de sequência. Em relação à profundidade RQT, diferentes valores podem ser especificados e sinalizados para as CUs codificadas intra e inter.
[0110] A transformada quad-tree é aplicada para ambos os blocos residuais Intra e Inter. Tipicamente, a transformada DCT-II do mesmo tamanho da partição quad- tree residual atual é aplicada para um bloco residual. Contudo, se o bloco quad-tree residual atual é de 4x4 e é gerado pela predição Intra, a transformada DST-VII de 4x4 acima é aplicada.
[0111] Em HEVC, as transformadas de tamanho maior, como, por exemplo, as transformadas de 64x64, não são adotadas principalmente devido ao seu benefício limitado considerando-se a sua complexidade relativamente alta para vídeos de resolução relativamente menor.
[0112] A Figura 4 é um diagrama de blocos que mostra um exemplo de sistema 140 para codificação de vídeo híbrido com seleção de transformada adaptativa. As técnicas exemplares descritas nesta revelação são aplicáveis a um esquema de codificação de transformada adaptativa típico mostrado na Figura 4, onde para cada bloco de resíduos de predição, diferentes transformadas podem ser escolhidas pelo codificador e a escolha da transformada é codificada como informação secundária para sinalização.
[0113] Neste exemplo, o sistema 140 inclui a unidade de separação de bloco 142, o bloco de unidade de transformadas 144, a unidade de quantização 146, a unidade de predição de bloco 148, o banco de transformadas 150, a unidade de codificação por entropia 152, o armazenador de quadros 154, a unidade de transformada inversa 156, a unidade de quantização inversa 158, a unidade de geração residual 160 e o bloco de unidade de reprodução 162.
[0114] Em geral, a unidade de separação de bloco 142 produz blocos a partir de uma imagem (isto é, um quadro) de dados de vídeo. A unidade de predição de bloco 148 gera um bloco de predição (p) para um bloco atual e a unidade de geração residual 160 gera um bloco residual (r) a partir do bloco atual (não codificado) e do bloco de predição (p). O armazenador de quadros 154 (também conhecido como armazenador de imagem decodificada (DPB)) armazena dados decodificados da imagem atual e quadros anteriormente decodificados, se houver. A unidade de predição de bloco 148 pode gerar o bloco de predição a partir de dados anteriormente decodificados de uma ou mais imagens armazenadas no armazenador de quadros 154.
[0115] O bloco de unidade de transformadas 144 aplica uma ou mais transformadas (T(t)) ao bloco residual, inclusive dados residuais no domínio espacial, para gerar um bloco de transformadas (T(t)r) que representa os dados residuais no domínio de frequência. A transformada (T(t)) pode ser, por exemplo, uma transformada de cosseno discreta (DCT), uma transformada de seno discreta (DST), transformadas horizontais e/ou verticais, transformadas de Karhunen-Loeve (KLT5) ou qualquer outra de tais transformadas. O bloco de unidade de transformadas 144 fornece o bloco de transformadas (T(t)r) para a unidade de quantização 146 e uma indicação da transformada (t) para o banco de transformadas 150 e a unidade de codificação por entropia 152. O banco de transformadas 150 fornece uma ou mais matrizes de transformadas para o bloco de unidade de transformadas 144 e a unidade de transformada inversa 156.
[0116] De acordo com as técnicas desta revelação, o bloco de unidade de transformadas 144 pode particionar um bloco residual de um bloco atual de acordo com um tipo de árvore de particionamento, tal como um de: particionamento em quad-tree, particionamento em árvore binária, particionamento em árvore ternária ou particionamento da TU em quatro, conforme discutido abaixo, em uma pluralidade de sub-blocos residuais, e o bloco de unidade de transformadas pode fornecer uma indicação do particionamento do bloco residual para a unidade de codificação por entropia 152.
[0117] A unidade de quantização 146 quantifica os coeficientes de transformada do bloco de transformadas e fornece o bloco de transformadas quantizadas para a unidade de codificação por entropia 152 e a unidade de quantização inversa 158. A unidade de codificação por entropia 152 codifica os elementos de sintaxe que representam, por exemplo, a indicação de transformada (t), os coeficientes de transformada quantizados, as informações de predição (como, por exemplo, um modo de predição e informações correspondentes, tal como uma localização de dados de referência a serem utilizados no modo de predição, como, por exemplo, informações de movimento para inter-predição).
[0118] A unidade de codificação por entropia 152 pode utilizar as técnicas desta revelação para codificar por entropia a representação de elementos de sintaxe para um bloco residual se o bloco residual estiver particionado e, se o bloco residual estiver particionado,
como o bloco residual é particionado. A unidade de codificação por entropia 152 pode codificar, para um bloco residual, um sinalizador que sinaliza se o bloco residual é particionado. Quando o bloco residual estiver particionado em uma pluralidade de sub-blocos, a unidade de codificação por entropia 152 também pode codificar um valor de índice que indica o tipo de particionamento para o bloco residual. Por exemplo, o bloco de unidade de transformadas 144 pode ser configurado para construir uma lista que inclui informações para um conjunto de tipos de árvore. O conjunto de tipos de árvore inclui um ou mais de particionamento em quad-tree e particionamento em árvore binária. O conjunto de tipos de árvore também pode incluir particionamento em árvore ternária e particionamento da TU em quatro. O exemplo dos diferentes tipos de árvore é descrito com mais detalhes abaixo. O bloco de unidade de transformadas 144 pode determinar um valor de índice que identifica o tipo de particionamento a partir do conjunto de tipos de árvore e a unidade de codificação por entropia 152 pode codificar o valor de índice. A unidade de codificação por entropia 152 também pode codificar qualquer outra informação de particionamento para o bloco residual, tal como, se o bloco residual é particionado horizontalmente ou verticalmente, se a partição é simétrica ou assimétrica, e semelhantes.
[0119] A unidade de quantização inversa 158 pode quantizar por inversão (isto é, desquantizar) os coeficientes de transformada quantizados recebidos a partir da unidade de quantização 146. A unidade de transformada inversa 156 pode determinar um particionamento de blocos residuais com base nos elementos de sintaxe codificados por entropia que indicam se um bloco de partição é particionado e como ele é particionado, para determinar o particionamento do bloco residual, e pode aplicar um esquema de transformada inversa aos coeficientes de transformada recebidos a partir da unidade de quantização inversa 158 para reproduzir o bloco residual (r’) para o bloco atual. O bloco de unidade de reprodução 162 combina adicionalmente o bloco de predição (p) a partir da unidade de predição de bloco 148 com o bloco residual reproduzido (r’) para formar um bloco decodificado, que é armazenado no armazenador de quadros 154.
[0120] As técnicas desta revelação podem ser efetuadas pelo sistema 140 ou um sistema de decodificação correspondente. Em geral, as técnicas desta revelação são aplicáveis a um esquema de codificação de transformada adaptativa, onde para cada bloco de resíduos de predição, diferentes transformadas podem ser selecionadas por um codificador de vídeo 200, sinalizado como informação secundária e determinado por um decodificador de vídeo 300 utilizando-se as informações secundárias. As informações secundárias são um exemplo e não devem ser consideradas limitantes.
[0121] Na prática, para reduzir a complexidade computacional, os blocos de transformadas são comumente calculados de uma maneira separável, isto é, as linhas horizontais e verticais são transformadas independentes, conforme mostrado nas Figuras 5A e 5B. As Figuras 5A e 5B são diagramas conceituais que mostram transformadas horizontais e verticais como implementação de transformadas separadas. A Figura 5A representa um conjunto de transformadas horizontais H 170, enquanto a Figura 5B representa um conjunto de transformadas verticais W 172. Em particular, as linhas horizontais e verticais de valores residuais podem ser transformadas independentes que utilizam as transformadas horizontais 170 e as transformadas verticais 172, respectivamente.
[0122] Em padrões de codificação de vídeo anteriores à HEVC, apenas uma transformada separável fixa é utilizada, onde a DCT-2 é utilizada tanto verticalmente quanto horizontalmente. Em HEVC, além da DCT-2, a DST-7 também é utilizada para blocos de 4x4 como uma transformada separável fixa. A Publicação de Patente dos E.U.A., N.º 2016/0219290 e a Publicação de Patente dos E.U.A., N.º 2018/0020218 cobrem extensões adaptativas dessas transformadas fixas, e um exemplo da AMT na Publicação de Patente dos E.U.A., N.º 2016/0219290 foi adotado no Modelo Experimental Conjunto (JEM) da Equipe de Especialistas em Vídeo Conjunta (JVET) X. Zhao, J. Chen, M. Karczewicz, L. Zhang, X. Li e W. -J. Chien, “Transformada múltipla aperfeiçoada para codificação de vídeo”, Conferência para Compactação de Proc. De Dados, pp. 73-82, março de 2016.
[0123] Os projetos de AMT descritos na Publicação de Patente dos E.U.A., N.º 2016/0219290 e na Publicação de Patente dos E.U.A., N.º 2018/0020218, oferecem 5 opções de transformadas para o codificador de vídeo 200 selecionar em uma base por bloco (esta seleção é de maneira geral feita com base em uma métrica de distorção de taxa) Logo então, o índice de transformadas selecionado é sinalizado para o decodificador de vídeo 300.
[0124] A Figura 6 é um diagrama conceitual que mostra a sinalização de transformada. Por exemplo, a Figura 6 mostra a sinalização proposta na Publicação de Patente dos E.U.A., N.º 2016/0219290 e na Publicação de Patente dos E.U.A., N.º 2018/0020218, onde 1 bit é utilizado para sinalizar a transformada padrão e 2 bits adicionais (isto é, 3 bits no total) são utilizados para sinalizar 4 transformadas. Por exemplo, uma das cinco transformadas (transformadas padrão) é sinalizada utilizando-se 0 (isto é, 1 bit) e as outras quatro transformadas são sinalizadas utilizando-se 3 bits (isto é, 100, 101, 110 e 111).
[0125] Na Publicação de Patente dos E.U.A., N.º 2016/0219290, e na Publicação de Patente dos E.U.A., Nº 2018/0020218, a transformada padrão é selecionada como a DCT 2-D separável, que aplica a DCT-2 tanto verticalmente quanto horizontalmente. O resto das AMTs são definidos com base nas informações intra-modo na Publicação de Patente dos E.U.A., N.º 2016/0219290. A Publicação de Patente dos E.U.A., N.º 2018/0020218, propõe uma extensão da Publicação de Patente dos E.U.A., N.º 2016/0219290, ao definir o conjunto dessas 4 transformadas com base no modo de predição e nas informações de tamanho de bloco.
[0126] Em uma versão do software de referência VVC, o VTM 3.0, é utilizado o esquema de sinalização mostrado na Figura 6. Especificamente, para cada unidade de codificação (CU), um bit único (um sinalizador) é utilizado para determinar se (i) a DCT2 é utilizada tanto na direção horizontal quanto na vertical ou (ii) dois bits adicionais (chamados de índices AMT/MTS) são utilizados para especificar as transformadas 1-D aplicadas horizontalmente ou verticalmente. Essas 4 transformadas são definidas atribuindo-se DST-7/DCT-8 para serem aplicadas em linhas/colunas de um dado bloco. Por exemplo, o índice MTS = 0 corresponde à transformada separável que aplica a DST-7 tanto horizontalmente quanto verticalmente, e o índice MTS = 1 corresponde à aplicação da DCT-8 horizontalmente e a DST-7 verticalmente.
[0127] Atualmente em VVC (e o software de referência VTM-3.0), o esquema de transformada pode não ter um método de particionamento flexível para unidades de transformada (TUs), onde os tamanhos de bloco de transformadas são iguais aos tamanhos de unidade de codificação (CU). Na prática, um melhor desempenho de compactação pode ser alcançado utilizando-se técnicas de particionamento de TU, tal como a RQT (descrita acima), uma vez que o particionamento permite que as transformadas capturem a energia localizada em diferentes regiões por meio de um particionamento mais flexível. Esta revelação revela diversos desenhos de partição com base em árvore que incluem o esquema AMT/MTS atualmente adotado em VVC (VTM-
3.0).
[0128] Aspectos da presente revelação descrevem um esquema de particionamento mais flexível para unidades de transformada (TUs) que permite que um maior desempenho de compactação seja alcançado e descreve como as transformadas podem ser selecionadas para tais partições. As técnicas exemplares podem ser efetuadas pelo codificador de vídeo 200 e/ou decodificador de vídeo 300. Para facilitar, os exemplos são descritos com a Figura 7 e a Figura 8. Por exemplo, a Figura 7 é um diagrama conceitual que mostra o respectivo particionamento com base em árvore em um bloco. Enquanto isso, a Figura 8 é um diagrama conceitual que mostra exemplos de particionamento com base em quad-tree, particionamento em árvore binária e particionamento em árvore tripla. Conforme mostrado na Figura 8, no particionamento com base em árvore tripla, uma unidade de transformada (TU), tal como o bloco 192A ou o bloco 192B, é particionada em três sub-TUs (como, por exemplo, P0, P1 e P2). No particionamento em quad-tree, uma TU, tal como o bloco 192C, é particionada em quatro sub-TUs (como, por exemplo, P0, P1, P2 e P3) que são quadradas. No particionamento em árvore binária, uma TU, tal como o bloco 192D, o bloco 192E, o bloco 192F e/ou o bloco 192D, é particionada em duas sub-TUs (como, por exemplo, P0 e P1).
[0129] Uma TU pode ser particionada em um nível ou em múltiplos níveis (profundidades > 0). Assim, uma TU pode ser particionada em uma pluralidade de sub-TUs e uma ou mais da pluralidade de sub-TUs podem ser elas prórias divididas adicionalmente, e assim por diante. Alternativamente, uma TU não pode ser particionada e o tamanho do bloco para a TU pode ser o mesmo que o tamanho do bloco para a CU (profundidade = 0). Ao longo desta revelação, o termo “bloco residual” e “sub-blocos residuais” são utilizados. Deve ficar entendido que uma TU é um exemplo de um bloco residual e a pluralidade de sub- TUs é um exemplo de uma pluralidade de sub-blocos residuais e que as técnicas aqui discutidas em relação a um bloco residual são igualmente aplicáveis a uma TU. De modo semelhante, as técnicas aqui discutidas em relação a uma TU também são igualmente aplicáveis a um bloco residual.
[0130] Uma TU em um determinado nível de partição pode ser particionado com base em uma árvore. Exemplos de árvores e partições correspondentes incluem os exemplos mostrados na Figura 7. Por exemplo, o particionamento em quad-tree 181A é o particionamento de um bloco com base em quad-tree 182, onde uma TU quadrada ou não quadrada é particionada em quatro sub-TUs particionando-se uma TU tanto horizontalmente quanto verticalmente. Por exemplo, o bloco 190A é particionado de acordo com o particionamento em quad-tree 181A em quatro blocos quadrados de mesmo tamanho. O particionamento da TU 181B em quatro é o particionamento de um bloco com base na quad-tree 184, onde uma TU quadrada ou não quadrada é particionada em quatro sub-TUs apenas pelo particionamento horizontal da TU ou apenas pelo particionamento vertical da TU. Por exemplo, o bloco 190B é particionado verticalmente de acordo com o particionamento da TU em quatro em quatro partições retangulares verticais e o bloco 190C é particionado horizontalmente de acordo com o particionamento da TU em quatro em quatro partições retangulares horizontais. Como tal, um bloco residual, tal como uma TU, pode ser particionado de acordo com pelo menos um de: particionamento em quad-tree 181A, particionamento da TU 181B em quatro.
[0131] O particionamento em árvore binária 181C é um particionamento de um bloco com base na árvore binária 186 onde uma TU quadrada ou não quadrada é particionada em duas sub-TUs, que são obtidas particionando-se uma TU ou horizontalmente ou verticalmente. Os blocos 190D e 190G são cada um divididos verticalmente de acordo com a partição em árvore binária 181C em duas partições retangulares verticais, enquanto os blocos 190E e 190F são divididos horizontalmente de acordo com a partição em árvore binária 181C em duas partições retangulares horizontais. Os blocos 190D e 190E são particionados simetricamente para resultar em blocos 190D e 190E, cada um com duas partições do mesmo tamanho. Enquanto isso, os blocos 190F e 190G são particionados assimetricamente para resultar em blocos 190F e 190G, cada um com duas partições de tamanhos diferentes. Como tal, um bloco residual, tal como uma TU, pode ser particionado de acordo com o particionamento em árvore binária 181C. O particionamento em árvore tripla 181D (também referido como particionamento em árvore ternária) é um particionamento de um bloco com base na árvore tripla 188 (também conhecida como árvore ternária), onde uma TU quadrada ou não quadrada é particionada em três sub-TUs, que são obtidas particionando-se uma TU ou horizontalmente ou verticalmente em duas localizações separadas. Por exemplo, o bloco 190H é particionado horizontalmente de acordo com o particionamento triplo da árvore em três partições retangulares horizontais, enquanto o bloco 1901 é particionado verticalmente de acordo com o particionamento triplo da árvore em três partições retangulares verticais. Como tal, um bloco residual, tal como uma TU, pode ser particionado de acordo com a partição em árvore tripla 181D.
[0132] Um particionamento de TU pode ser aplicado a blocos de TU quadrados ou não quadrados. A Figura 7 mostra um exemplo de particionamento de blocos quadrados, mas as técnicas são também aplicáveis a blocos não quadrados, de modo que uma TU retangular e, portanto, não quadrada, pode ser igualmente particionada de acordo com as árvores de partição descritas ao longo desta revelação. Por exemplo, se uma TU quadrada for particionada de acordo com uma árvore binária em duas TUs retangulares, uma ou ambas as TUs retangulares também podem ser particionadas de acordo com uma das árvores de partição. Como tal, um bloco residual, tal como uma TU, pode ser quadrado ou não quadrado, e ambos os blocos residuais quadrados e não quadrados podem ser igualmente particionados de acordo com as técnicas aqui reveladas.
[0133] Para sinalizar as informações de partição, um sinalizador (como, por exemplo, um sinalizador de divisão) pode ser sinalizado no fluxo de bits para determinar se há uma divisão na TU. Se a TU for particionada (isto é, se o sinalizador de divisão estiver ativado), uma informação adicional de particionamento/divisão pode ser sinalizada para especificar o tipo de particionamento. Tais informações de índice adicionais podem ser o tipo de árvore (como, por exemplo, quad-tree, árvore binária, árvore ternária e/ou divisão da TU em quatro).
[0134] Por exemplo, o codificador de vídeo 200 pode determinar que um bloco residual para um bloco atual de dados de vídeo é particionado de acordo com um tipo de árvore de partição em uma pluralidade de sub-blocos residuais e pode codificar um fluxo de bits como uma representação codificada de dados de vídeo que sinaliza informações indicativas de se o bloco residual é particionado, e sinalizar informações adicionais indicativas do tipo de árvore de partição para o bloco residual que é particionado. De modo semelhante, o decodificador de vídeo pode receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição.
[0135] Para um dado/sinalizado tipo de árvore, um tipo de partição pode ser sinalizado adicionalmente. Por exemplo, para o caso de árvore tripla (como, por exemplo, partição em árvore tripla 181D), um bit único pode ser utilizado para especificar se uma TU é dividida horizontalmente, tal como no bloco 190H, ou dividida verticalmente, tal como no bloco 1901. Para os casos de árvore binária (como, por exemplo, particionamento em árvore binária 181C), a sinalização pode especificar se uma TU é dividida horizontalmente, tal como nos blocos 190E e 190F, ou dividida verticalmente, tal como nos blocos 190D e 190G, bem como se a TU é dividida simetricamente, tal como nos blocos 190D e 190E, ou dividida assimetricamente, tal como nos blocos 190F e 190G. Por exemplo, o fluxo de bits que sinaliza as informações indicativas do tipo de árvore de partição para o bloco residual pode incluir informações de índice em um conjunto de tipos de árvore e o conjunto de informações de tipos de árvore pode incluir um ou mais de um particionamento em quad-tree e um particionamento em árvore binária. Além disso, quando as informações indicativas do tipo de árvore de partição para o bloco residual indicam que o tipo de árvore de partição é um de um particionamento em árvore binária, o fluxo de bits pode sinalizar adicionalmente informações indicativas de se o bloco residual é dividido horizontalmente ou dividido verticalmente.
[0136] Em alguns exemplos, dada uma coleção de sub-TUs obtida depois do particionamento das TUs, sinalizadores de bloco codificados (chamados de cbfs em VVC) podem ser inferidos e/ou restritos, dependendo do modo de predição, tipo de árvore de partição, tipo de partição ou qualquer outro aspecto de informações que são codificadas no fluxo de bits. Por exemplo, a sub-TU denotada como P1 nos blocos 192A e 192B da Figura 8 pode ser restrita a sempre ter um sinalizador cbf desativado (sinalizador = 0) de modo que nenhuma sinalização cbf seja necessária para P1. Um esquema semelhante também pode ser utilizado para inferir ou restringir sinalizadores de salto de transformada para cada uma das sub-TUs.
[0137] Em alguns exemplos, dada uma coleção de sub-TUs obtida depois do particionamento, um índice AMT/MTS pode ser sinalizado para cada uma sub-TU para especificar a transformada separável aplicada para essa sub-TU. Por esse caminho, múltiplas transformadas podem ser aplicadas a cada uma sub-TU.
[0138] Em alguns exemplos, uma seleção de transformadas, tal como índices AMT/MTS e/ou sinalizador, ainda pode ser sinalizada no nível de TU, mesmo a TU sendo dividida em sub-TUs. Nestes exemplos, cada sub-TU pode utilizar a escolha de transformada sinalizada. Neste caso, o overhead pode ser poupado para cada sub-TU e as vantagens da transformada granular mais fina ainda podem ser utilizadas.
[0139] Em alguns exemplos, dada uma coleção de sub-TUs obtida depois do particionamento, os núcleos de transformadas para as sub-TUs podem ser restritos ou inferidos em ou na direção horizontal, ou na vertical ou em ambas as direções. Um exemplo de restrição ou inferência é feito com base no modo de predição, tipo de árvore de partição, tipo de partição ou qualquer outra informação secundária. Nesse caso, um índice AMT/MTS (ou definição de transformada) pode ser restrito ou inferido com base no modo de predição, tipo de árvore de partição, tipo de partição ou qualquer outra informação secundária.
[0140] Em alguns exemplos, ao invés de restringir ou inferir uma determinada base de transformada, a modelagem de contexto pode ser aplicada com base nas regras de restrição/inferência. Em um exemplo, um contexto é atribuído para os casos, quando uma regra de restrição é aplicada, em tal caso a seleção de transformadas ainda é possível (diferente quando esta seleção de transformadas não é possível devido à restrição), mas um contexto é atribuído para sinalizar tal seleção de transformadas, como resultado o overhead de transformada pode ser codificado de modo mais eficiente e todas as seleções de transformadas estão disponíveis. O contexto atribuído pode ser um contexto separado diferente a partir do contexto já existente na sinalização de seleção de transformadas.
[0141] Nos seguintes exemplos de restrição, as mesmas regras podem ser utilizadas para atribuição de contexto na sinalização de overhead de seleção de transformadas. Exemplos de tais desenhos incluem o seguinte.
[0142] Dada uma TU particionada em quad-tree (conforme mostrado na Figura 7 como o bloco 190A e na Figura 8 como o bloco 192C), a transformada de sub-TU P0 pode ser restrita de modo que a DCT-8 seja utilizada tanto vertical quanto horizontalmente, a transformada de sub-TU P1 pode ser restrita de modo que a DST-7 seja aplicada horizontalmente e igualmente a DST-8 seja utilizada verticalmente, a transformada de sub-TU P2 pode ser restrita de modo que a DCT-8 seja aplicada horizontalmente e igualmente a DST-7 seja utilizada verticalmente, a transformada de sub-TU P3 pode ser restrita de modo que a DST-7 seja utilizada tanto verticalmente quanto horizontalmente.
[0143] Dada uma TU particionada em quad-tree (conforme mostrado na Figura 7 como o bloco 190A e na Figura 8 como o bloco 192C), todas as sub-TUs (P0, P1, P2 e P3) podem ser restritas de modo que a DST-7 seja utilizada tanto verticalmente quanto horizontalmente. Em outro exemplo, a DCT-2 pode ser utilizada ao invés da DST-7 ou da DCT-8.
[0144] Dada uma TU particionada em árvore binária (conforme mostrado na Figura 7 como blocos 190D- 190G e na Figura 8 como blocos 192D-192G), a transformada de sub-TUs pode ser inferida/restrita conforme o seguinte. Para divisões horizontais, tais como os blocos 190E e 190F na Figura 7 e os blocos 192E e 192F na Figura 8, a DCT-2 pode ser utilizada horizontalmente e a DCT8 pode ser utilizada verticalmente para a transformada de sub-TU P0, e a DCT-2 pode ser utilizada horizontalmente e a DST-7 pode ser utilizada verticalmente para a transformada de sub-TU P1. Para divisões verticais, tal como mostrado na Figura 7 como os blocos 190D e os 190G e na Figura 8 como blocos 192D e 192G, a DCT-8 pode ser utilizada horizontalmente e a DCT-2 pode ser utilizada verticalmente para a transformada de sub-TU P0, e a DST-7 pode ser utilizada horizontalmente e a DCT-2 pode ser utilizada verticalmente para a transformada de sub-TU P1. Ao invés da DCT-2, a DST-7 ou a DCT-8 também podem ser utilizadas como transformadas para os dois casos acima.
[0145] Um ou combinações dos métodos acima podem ser utilizados apenas para as CUs intra-preditas. Um ou combinações dos métodos acima podem ser utilizados apenas para as CUs inter-preditas. Um ou combinações dos métodos acima podem ser utilizados para as CUs intra e inter preditas. Um ou combinações dos métodos acima podem ser utilizados para canais de luma ou croma ou ambos. Um particionamento de TU e o esquema de transformada associado podem ser definidos com base em um ou combinações dos métodos acima.
[0146] A Figura 9 é um diagrama de blocos que mostra um exemplo de um codificador de vídeo que pode efetuar as técnicas desta revelação. A Figura 9 é fornecida para propósitos explicativos e não deve ser considerada limitante das técnicas, conforme amplamente exemplificado e descrito nesta revelação. Para propósitos explicativos,
esta revelação descreve o codificador de vídeo 200 no contexto de padrões de codificação de vídeo, tal como o padrão de codificação de vídeo HEVC e o padrão de codificação de vídeo H.266 em desenvolvimento. Contudo, as técnicas desta revelação não estão limitadas a esses padrões de codificação de vídeo e são de modo geral aplicáveis à codificação e decodificação de vídeo.
[0147] No exemplo da Figura 9, o codificador de vídeo 200 inclui a memória de dados de vídeo 230, a unidade de seleção de modo 202, a unidade de geração residual 204, a unidade de processamento de transformadas 206, a unidade de quantização 208, a unidade de quantização inversa 210, a unidade de processamento de transformadas inversas 212, a unidade de reconstrução 214, a unidade de filtro 216, o armazenador de imagem decodificada (DPB) 218 e a unidade de codificação por entropia 220. Qualquer ou toda a memória de dados de vídeo 230, a unidade de seleção de modo 202, a unidade de geração residual 204, a unidade de processamento de transformadas 206, a unidade de quantização 208, a unidade de quantização inversa 210, a unidade de processamento de transformadas inversas 212, a unidade de reconstrução 214, a unidade de filtro 216, o DPB 218 e a unidade de codificação por entropia 220 podem ser implementadas em um ou mais processadores ou em circuitos de processamento. Por exemplo, as unidades do codificador de vídeo 200 podem ser implementadas como um ou mais circuitos ou elementos lógicos como parte do circuito de hardware ou como parte de um processador, ASIC, de FPGA. Além disso, o codificador de vídeo 200 pode incluir processadores adicionais ou alternativos ou circuitos de processamento para efetuar estas e outras funções.
[0148] A memória de dados de vídeo 230 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 200. O codificador de vídeo 200 pode receber os dados de vídeo armazenados na memória de dados de vídeo 230 a partir da, por exemplo, fonte de vídeo 104 (Figura 1). O DPB 218 pode atuar como uma memória de imagem de referência que armazena dados de vídeo de referência para utilização na predição de dados de vídeo subsequentes pelo codificador de vídeo 200. A memória de dados de vídeo 230 e o DPB 218 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), que inclui DRAM síncrona (SDRAM), RAM magneto-resistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 230 e o DPB 218 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em diversos exemplos, a memória de dados de vídeo 230 pode estar embutida em chip com outros componentes do codificador de vídeo 200, conforme mostrado, ou não embutida chip em relação a esses componentes.
[0149] Nesta revelação, a referência à memória de dados de vídeo 230 não deve ser interpretada como sendo limitada à memória interna do codificador de vídeo 200, a menos que especificamente descrita como tal, ou à memória externa do codificador de vídeo 200, a menos que especificamente descrita como tal. Ao invés disso, a referência à memória de dados de vídeo 230 deve ser entendida como memória de referência que armazena os dados de vídeo que o codificador de vídeo 200 recebe para codificação (como, por exemplo, dados de vídeo para um bloco atual que deve ser codificado). A memória 106 da Figura 1 também pode fornecer armazenamento temporário de saídas de diversas unidades do codificador de vídeo 200.
[0150] As diversas unidades da Figura 9 são mostradas para auxiliar com entendimento as operações efetuadas pelo codificador de vídeo 200. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação deles. Os circuitos de função fixa se referem aos circuitos que fornecem funcionalidade específica e são pré-configurados nas operações que podem ser efetuadas. Circuitos programáveis referem-se a circuitos que podem ser programados para efetuar diversas tarefas e fornecem funcionalidade flexível nas operações que podem ser efetuadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que fazem com que os circuitos programáveis funcionem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (como, por exemplo, para receber parâmetros ou parâmetros de saída), mas os tipos de operações que os circuitos de função fixa efetuam são geralmente imutáveis. Em alguns exemplos, a uma ou mais unidades podem ser blocos de circuitos distintos (função fixa ou programável) e, em alguns exemplos, uma ou mais unidades podem ser circuitos integrados.
[0151] O codificador de vídeo 200 pode incluir unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), circuitos digitais, circuitos analógicos e/ou núcleos programáveis, formados a partir de circuitos programáveis. Em exemplos onde as operações do codificador de vídeo 200 são efetuadas utilizando-se o software executado pelos circuitos programáveis, a memória 106 (Figura 1) pode armazenar o código de objeto do software que o codificador de vídeo 200 recebe e executa, ou outra memória no codificador de vídeo 200 (não mostrado) pode armazenar tais instruções.
[0152] A memória de dados de vídeo 230 é configurada para armazenar dados de vídeo recebidos. O codificador de vídeo 200 pode recuperar uma imagem a partir dos dados de vídeo da memória de dados de vídeo 230 e fornecer os dados de vídeo para a unidade de geração residual 204 e unidade de seleção de modo 202. Os dados de vídeo na memória de dados de vídeo 230 podem ser dados de vídeo brutos que devem ser codificados.
[0153] A unidade de seleção de modo 202 inclui uma unidade de estimação de movimento 222, uma unidade de compensação de movimento 224 e uma unidade intra-predição
226. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para efetuar a predição de vídeo de acordo com outros modos de predição. Como exemplos, a unidade de seleção de modo 202 pode incluir uma unidade de paleta, uma unidade de cópia intra-bloco (que pode ser parte da unidade de estimação de movimento 222 e/ou unidade de compensação de movimento 224), uma unidade afim, uma unidade de modelo linear (LM), ou semelhante. [0154] A unidade de seleção de modo 202 geralmente coordena múltiplas passagens de codificação para testar combinações de parâmetros de codificação e valores de distorção de taxa resultantes para tais combinações. Os parâmetros de codificação podem incluir o particionamento de CTUs em CUs, modos de predição para as CUs, tipos de transformada para dados residuais das CUs, parâmetros de quantização para dados residuais das CUs e assim por diante. A unidade de seleção de modo 202 pode por último selecionar a combinação de parâmetros de codificação que tem valores de distorção de taxa que são melhores do que as outras combinações testadas.
[0155] O codificador de vídeo 200 pode particionar uma imagem recuperada a partir da memória de dados de vídeo 230 em uma série de CTUs e encapsular uma ou mais CTUs dentro de uma fatia. A unidade de seleção de modo 202 pode particionar uma CTU da imagem de acordo com uma estrutura de árvore, como a estrutura QTBT ou a estrutura quad-tree da HEVC descrita acima. Conforme descrito acima, o codificador de vídeo 200 pode formar uma ou mais CUs a partir do particionamento de uma CTU de acordo com a estrutura em árvore. Essa CU também pode ser referida geralmente de “bloco de vídeo” ou “bloco”.
[0156] Em geral, a unidade de seleção de modo 202 também controla os seus componentes (como, por exemplo, unidade de estimação de movimento 222, unidade de compensação de movimento 224 e unidade de predição 226) para gerar um bloco de predição para um bloco atual (como, por exemplo, uma CU atual ou em HEVC, a parte sobreposta de uma PU e uma TU). Para inter-predição de um bloco atual, a unidade de estimação de movimento 222 pode efetuar uma busca de movimento para identificar um ou mais blocos de referência que se correspondam proximamente em uma ou mais imagens de referência (como, por exemplo, uma ou mais imagens anteriormente codificadas armazenadas em DPB 218). Em particular, a unidade de estimação de movimento 222 pode calcular um valor representativo de o quanto é semelhante um bloco de referência potencial com o bloco atual, por exemplo, de acordo com a soma da diferença absoluta (SAD), a soma das diferenças ao quadrado (SSD), a diferença absoluta média (MAD), a diferença ao quadrado média (MSD) ou semelhantes. A unidade de estimação de movimento 222 pode geralmente efetuar esses cálculos utilizando diferenças de amostra por amostra entre o bloco atual e o bloco de referência que é considerado. A unidade de estimação de movimento 222 pode identificar um bloco de referência que tem um valor mais baixo resultante a partir desses cálculos, indicando um bloco de referência que mais se corresponda com maior proximidade ao bloco atual.
[0157] A unidade de estimação de movimento 222 pode formar um ou mais vetores de movimento (MVs) que definem as posições dos blocos de referência nas imagens de referência em relação à posição do bloco atual em uma imagem atual. A unidade de estimação de movimento 222 pode então fornecer os vetores de movimento para a unidade de compensação de movimento 224. Por exemplo, para inter- predição unidirecional, a unidade de estimação de movimento 222 pode fornecer um único vetor de movimento, enquanto que para a inter-predição bidirecional, a unidade de estimação de movimento 222 pode fornecer dois vetores de movimento. A unidade de compensação de movimento 224 pode então gerar um bloco de predição utilizando os vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados do bloco de referência utilizando o vetor de movimento. Como outro exemplo, se o vetor de movimento tiver precisão de amostra fracionária, a unidade de compensação de movimento 224 pode interpolar valores para o bloco de predição de acordo com um ou mais filtros de interpolação. Além disso, para inter-predição bidirecional, a unidade de compensação de movimento 224 pode recuperar dados para dois blocos de referência identificados pelos respectivos vetores de movimento e combinar os dados recuperados, como, por exemplo, através da média de amostra por amostra ou média ponderada.
[0158] Como outro exemplo, para intra- predição, ou codificação de intra-predição, a unidade 226 de intra-predição pode gerar o bloco de predição a partir de amostras vizinhas ao bloco atual. Por exemplo, para modos direcionais, a unidade de intra-predição 226 pode geralmente combinar matematicamente valores de amostras vizinhas e preencher esses valores calculados na direção definida através do bloco atual para produzir o bloco de predição. Como outro exemplo, para o modo DC, a unidade intra-predição 226 pode calcular uma média das amostras vizinhas no bloco atual e gerar o bloco de predição para incluir essa média resultante para cada amostra do bloco de predição.
[0159] A unidade de seleção de modo 202 fornece o bloco de predição para a unidade de geração residual 204. A unidade de geração residual 204 recebe uma versão não codificada, bruta, do bloco atual a partir da memória de dados de vídeo 230 e o bloco de predição a partir da unidade de seleção de modo 202. A unidade de geração residual 204 calcula diferenças de amostra por amostra entre o bloco atual e o bloco de predição. As diferenças de amostra por amostra resultantes definem um bloco residual para o bloco atual. Em alguns exemplos, a unidade de geração residual 204 também pode determinar diferenças entre os valores de amostra no bloco residual para gerar um bloco residual utilizando modulação por código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada utilizando-se um ou mais circuitos subtratores que efetuam subtração binária.
[0160] Em exemplos onde a unidade de seleção de modo 202 particiona CUs em PUs, cada PU pode ser associada com uma unidade de predição luma e com as unidades de predição croma correspondentes. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar PUs que têm diversos tamanhos. Conforme indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação luma da CU e o tamanho de uma PU pode se referir ao tamanho de uma unidade de predição luma da PU. Presumindo-se que o tamanho de uma CU específica seja 2Nx2N, o codificador de vídeo 200 pode suportar tamanhos de PU de 2Nx2N ou NxN para predição intra e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN ou semelhantes para predição inter. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para predição inter.
[0161] Em exemplos onde a unidade de seleção de modo 202 não particiona adicionalmente uma CU em PUs, cada CU pode ser associada a um bloco de codificação luma e aos blocos de codificação croma correspondentes. Conforme acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação luma da CU. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar tamanhos de CU de 2Nx2N, 2NxN ou Nx2N.
[0162] Para outras técnicas de codificação de vídeo, tal como codificação no modo de cópia intra-bloco, a codificação no modo afim e codificação no modo de modelo linear (LM), tal como alguns exemplos, unidade de seleção de modo 202, por meio das respectivas unidades associadas com as técnicas de codificação, gera um bloco de predição para o bloco atual que é codificado. Em alguns exemplos, tal como codificação no modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de predição e, ao invés disso, gerar elementos de sintaxe que indicam a maneira pela qual se reconstrói o bloco com base em uma paleta selecionada. Em tais modos, a unidade de seleção de modo 202 pode fornecer esses elementos de sintaxe para a unidade de codificação por entropia 220 a ser codificada.
[0163] Conforme descrito acima, a unidade de geração residual 204 recebe os dados de vídeo para o bloco atual e o bloco de predição correspondente. A unidade de geração residual 204 então gera um bloco residual para o bloco atual. Para gerar o bloco residual, a unidade de geração residual 204 calcula diferenças de amostra por amostra entre o bloco de predição e o bloco atual.
[0164] De acordo com as técnicas desta revelação, como parte da geração de um bloco residual (isto é, uma unidade de transformada) para o bloco atual, a unidade de geração residual 204 pode particionar o bloco residual para o bloco atual em uma pluralidade de sub- blocos residuais (isto é, unidades de transformada) de acordo com um tipo de árvore de partição. A unidade de geração residual 204 pode efetuar tal particionamento para blocos residuais quadrados, bem como blocos residuais não quadrados (como, por exemplo, blocos residuais retangulares) para gerar sub-blocos residuais quadrados, bem como não quadrados, e a unidade de geração residual 204 também pode particionar um ou mais dos sub-blocos residuais.
[0165] Conforme discutido acima, um bloco de partição pode ser particionado em sub-blocos residuais de acordo com um ou mais de: um particionamento em quad-tree, um particionamento em árvore binária, um particionamento em árvore ternária ou um particionamento da TU em quatro, tal como mostrado nas Figuras 7 e 8. Em alguns exemplos, um bloco de partição pode ser particionado em sub-blocos residuais de acordo com um ou mais de: um particionamento em quad-tree ou um particionamento em árvore binária.
[0166] Quando a unidade de geração residual 204 particiona um bloco residual de acordo com um particionamento em árvore binária, um particionamento em árvore ternária ou um particionamento da TU em quatro, a unidade de geração residual 204 pode dividir horizontalmente o bloco residual ou dividir verticalmente o bloco residual. Por exemplo, os blocos 190C, 190E, 190F e
190H da Figura 7 mostram exemplos de divisão horizontal enquanto os blocos 190B, 190D, 190G e 1901 da Figura 7 mostram exemplos de divisão vertical.
[0167] Quando a unidade de geração residual 204 particiona um bloco residual de acordo com um particionamento em árvore binária ou um particionamento em árvore ternária para dividir horizontalmente ou dividir verticalmente o bloco residual, a unidade de geração residual 204 pode dividir simetricamente o bloco residual ou pode dividir assimetricamente o bloco residual. Por exemplo, os blocos 190D e 190E da Figura 7 mostram exemplos de divisão simétrica, enquanto os blocos 190F e 190G da Figura 7 mostram exemplos de divisão assimétrica.
[0168] A unidade de processamento de transformadas 206 aplica uma ou mais transformadas ao bloco residual para gerar um bloco de coeficientes de transformada (aqui referido como um “bloco de coeficientes de transformada”). A unidade de processamento de transformadas 206 pode aplicar diversas transformadas a um bloco residual para formar o bloco de coeficientes de transformada. Por exemplo, a unidade de processamento de transformadas 206 pode aplicar uma transformada discreta de co-seno (DCT), uma transformada direcional, uma transformada de Karhunen-Loeve (KLT) ou uma transformada conceitualmente semelhante a um bloco residual. Em alguns exemplos, a unidade de processamento de transformadas 206 pode efetuar múltiplas transformadas em um bloco residual, como, por exemplo, uma transformada primária e uma transformada secundária, tal como uma transformada rotacional. Em alguns exemplos, a unidade de processamento de transformadas 206 não aplica transformadas a um bloco residual.
[0169] Em alguns exemplos, a unidade de processamento de transformadas 206 pode aplicar múltiplas transformadas de um esquema de transformada múltipla (MT) a um bloco residual para um bloco atual, inclusive a aplicação de múltiplas transformadas de um esquema de MT a cada um da pluralidade de sub-blocos residuais resultantes do particionamento de um bloco residual. O esquema de MT pode definir, como, por exemplo, uma transformada primária e uma transformada secundária a serem aplicadas ao bloco residual. Adicionalmente ou alternativamente, o esquema de MT pode definir uma transformada horizontal e uma transformada vertical, tal como aquelas mostradas nas Figuras 5A e 5B, conforme discutido acima. Em qualquer caso, a unidade de processamento de transformadas 206 pode aplicar cada transformada do esquema MT ao bloco residual para gerar coeficientes de transformada de um bloco de coeficientes de transformada.
[0170] Por exemplo, a unidade de processamento de transformadas 206 pode selecionar uma transformada para cada um da pluralidade de sub-blocos residuais, onde a seleção da transformada para um respectivo bloco residual da pluralidade de sub-blocos residuais é um índice de seleção de transformadas múltipla (MTS) para o respectivo bloco residual. Por este modo, uma transformada múltipla pode ser selecionada para cada sub-bloco residual.
[0171] Em outro exemplo, a unidade de processamento de transformadas 206 pode selecionar uma transformada para um bloco residual que é aplicado a cada um da pluralidade de sub-blocos residuais resultante da partição do bloco residual. Por exemplo, uma transformada múltipla pode ser selecionada para um bloco residual que é aplicado a cada sub-bloco residual resultante da partição do bloco residual. No exemplo do bloco 192C na Figura 8, a transformada múltipla selecionada para o bloco 192C pode ser aplicada a cada um dos sub-blocos residuais P0, P1, P2 e P3.
[0172] De acordo com as técnicas da presente revelação, a unidade de processamento de transformadas 206 pode determinar um sinalizador de bloco codificado (cbf) e/ou um sinalizador de salto de transformadas para cada um da pluralidade de sub-blocos residuais. Um sinalizador de bloco codificado pode sinalizar informações com referência a se pelo menos um nível não-zero de coeficientes de transformada é transmitido para o sub-bloco residual. Um sinalizador de salto de transformadas pode sinalizar informações com referência a se a transformada é ignorada para o sub-bloco residual.
[0173] De acordo com as técnicas da presente revelação, a unidade de processamento de transformadas 206 pode determinar núcleos de transformadas para a pluralidade de sub-blocos residuais resultantes do particionamento de um bloco residual com base pelo menos em parte em um de: um tipo de árvore de partição para o bloco residual ou um tipo de particionamento para o bloco residual.
[0174] De acordo com as técnicas da presente revelação, a unidade de processamento de transformadas 206 pode determinar atribuições de contexto para a pluralidade de sub-blocos residuais com base, pelo menos em parte, em um de: um tipo de árvore de partição para o bloco residual ou um tipo de particionamento para o bloco residual. Em alguns exemplos, a unidade de processamento de transformadas 206 pode determinar as atribuições de contexto para a pluralidade de sub-blocos residuais para componentes luma do bloco atual e/ou componentes croma do bloco atual. [0175] Em um exemplo, quando a unidade de processamento de transformadas 206 determina que o bloco residual é particionado de acordo com um particionamento em quad-tree em quatro sub-blocos residuais, a unidade de processamento de transformadas 206 pode determinar que a DCT-8 é utilizada tanto como uma transformada horizontal quanto uma transformada vertical para um primeiro sub-bloco residual da pluralidade de sub-blocos residuais, essa DST-7 é utilizada na transformada horizontal e a DST-8 é utilizada como a transformada vertical para um segundo sub- bloco residual da pluralidade de sub-blocos residuais, que a DCT-8 é utilizada na transformada horizontal e a DST-7 é utilizada como a transformada vertical para um terceiro sub-bloco residual da pluralidade de sub-blocos residuais, e que a DST-7 é utilizada tanto como a transformada horizontal quanto a transformada vertical para um quarto sub-bloco residual da pluralidade de sub-blocos residuais.
[0176] Em outro exemplo, quando a unidade de processamento de transformadas 206 determina que o bloco residual é particionado de acordo com um particionamento em quad-tree em quatro sub-blocos residuais, a unidade de processamento de transformadas 206 pode determinar que a DST-7 é utilizada tanto como uma transformada horizontal quanto uma transformada vertical para cada um da pluralidade de sub-blocos residuais.
[0177] Em outro exemplo, quando a unidade de processamento de transformadas 206 determina que o bloco residual é particionado de acordo com um particionamento em quad-tree em quatro sub-blocos residuais, a unidade de processamento de transformadas 206 pode determinar que a DCT-2 é utilizada como pelo menos um de: uma transformada horizontal ou uma transformada vertical para um ou mais da pluralidade de sub-blocos residuais. Assim, como, por exemplo, a DCT-2 pode ser utilizada como a transformada horizontal e a DST-7 ou a DCT-8 pode ser utilizada como a transformada vertical para um ou mais da pluralidade de sub-blocos residuais, e a DCT-2 pode ser utilizada como a transformada vertical e a DST-7 ou a DCT-8 pode ser utilizada como a transformada horizontal para um ou mais da pluralidade de sub-blocos residuais.
[0178] Em outro exemplo, quando a unidade de processamento de transformadas 206 determina que o bloco residual é particionado de acordo com um particionamento em árvore binária em dois sub-blocos residuais, e que o tipo de partição para o bloco residual é uma divisão horizontal, a unidade de processamento de transformadas 206 pode determinar que a DCT-2 é utilizada como uma transformada horizontal e a DCT-8 é utilizada como uma transformada vertical para um primeiro sub-bloco residual da pluralidade de sub-blocos residuais, e que a DCT-2 é utilizada como a transformada horizontal e a DST-7 é utilizada como a transformada vertical para um segundo sub-bloco residual da pluralidade de sub-blocos residuais.
[0179] Em outro exemplo, quando a unidade de processamento de transformadas 206 determina que o bloco residual é particionado de acordo com um particionamento em árvore binária em dois sub-blocos residuais, e que o tipo de partição para o bloco residual é uma divisão vertical, a unidade de processamento de transformadas 206 pode determinar que a DCT-8 é utilizada como uma transformada horizontal e a DCT-2 é utilizada como uma transformada vertical para um primeiro sub-bloco residual da pluralidade de sub-blocos residuais, e que a DST-7 é utilizada como a transformada horizontal e a DCT-2 é utilizada como a transformada vertical para um segundo sub-bloco residual da pluralidade de sub-blocos residuais.
[0180] Em outro exemplo, quando a unidade de processamento de transformadas 206 determina que o bloco residual é particionado de acordo com um particionamento em árvore binária em dois sub-blocos residuais, a unidade de processamento de transformadas 206 pode determinar que um de: a DST-7 ou a DCT-8 é utilizada como pelo menos um de: uma transformada horizontal ou como uma transformada vertical para um ou mais da pluralidade de sub-blocos residuais. A utilização de DST-7 ou DCT-8 pode ser no lugar de DCT-2 nos exemplos de particionamento em árvore binária descritos acima.
[0181] Em alguns exemplos, a unidade de processamento de transformadas inversas 206 pode determinar atribuições de contexto para um bloco residual com base, pelo menos em parte, no tamanho do bloco residual. Por exemplo, quando o bloco residual tem um tamanho pequeno, tal como menor que ou igual a 16 amostras (como, por exemplo, um bloco 4x4 que tem um tamanho de 16 amostras), e quando o bloco residual é particionado de acordo com um particionamento em árvore binária, a unidade de processamento de transformadas inversas 206 pode determinar as atribuições de contexto para a pluralidade de sub-blocos residuais de modo que a DST-7 seja utilizada como a transformada horizontal e a transformada vertical para cada um da pluralidade de sub-blocos residuais.
[0182] Em outro exemplo, quando o bloco residual tem um tamanho grande, tal como maior ou igual a 16 amostras (como, por exemplo, um bloco 4x8 que tem um tamanho de 32 amostras), e quando o bloco residual é particionado de acordo com um particionamento em árvore binária, a unidade de processamento de transformadas 206 pode determinar as atribuições de contexto para a pluralidade de sub-blocos residuais de modo que a DCT-2 é utilizada como uma transformada horizontal e a DST-7 é utilizada como uma transformada vertical para um primeiro sub-bloco residual da pluralidade de sub-blocos residuais, e que a DCT-2 é utilizada como a transformada vertical e a DST-7 é utilizada como a transformada horizontal para um segundo sub-bloco residual da pluralidade de sub-blocos residuais.
[0183] Em outro exemplo, quando o bloco residual tem um tamanho horizontal ou um tamanho vertical que é menor ou igual a 2 amostras (como, por exemplo, um bloco 2x8), a unidade de processamento de transformadas 206 pode determinar que nenhuma transformada deve ser aplicada à pluralidade de sub-blocos residuais.
[0184] Em alguns exemplos, a unidade de processamento de transformadas 206 pode determinar as atribuições de contexto para a pluralidade de sub-blocos residuais com base no bloco atual que é um bloco intra- predito. Em alguns exemplos, a unidade de processamento de transformadas 206 pode determinar as atribuições de contexto para a pluralidade de sub-blocos residuais com base no bloco atual que é um bloco inter-predito.
[0185] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficientes de transformada, para produzir um bloco de coeficientes de transformada quantizado. A unidade de quantização 208 pode quantizar os coeficientes de transformada de um bloco de coeficientes de transformada de acordo com um valor de parâmetro de quantização (QP) associado com o bloco atual. O codificador de vídeo 200 (como, por exemplo, por meio da unidade de seleção de modo 202) pode ajustar o grau de quantização aplicado aos blocos de coeficientes associados com o bloco atual pelo ajuste do valor de QP associado com a CU. A quantização pode introduzir perda de informação e, assim, os coeficientes de transformada quantizados podem ter menor precisão do que os coeficientes de transformada originais produzidos pela unidade de processamento de transformada 206.
[0186] A unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 podem aplicar quantização inversa e transformadas inversas a um bloco de coeficientes de transformada quantizado, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficientes de transformada. A unidade de reconstrução 214 pode produzir um bloco reconstruído correspondente ao bloco atual (embora potencialmente com algum grau de distorção) com base no bloco residual reconstruído e em um bloco de predição gerado pela unidade de seleção de modo 202. Por exemplo, a unidade de reconstrução 214 pode adicionar amostras do bloco residual reconstruído para amostras correspondentes a partir do bloco de predição gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[0187] A unidade de filtro 216 pode efetuar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 216 pode efetuar operações de desbloqueio para reduzir artefatos de bloqueio ao longo das bordas das CUs. As operações da unidade de filtro 216 podem ser saltadas, em alguns exemplos.
[0188] O codificador de vídeo 200 armazena blocos reconstruídos em DPB 218. Por exemplo, em exemplos onde as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 214 pode armazenar blocos reconstruídos em DPB 218. Nos exemplos em que as operações da unidade de filtro 216 são necessárias, a unidade de filtro 216 pode armazenar os blocos reconstruídos filtrados em DPB 218. A unidade de estimação de movimento 222 e a unidade de compensação de movimento 224 podem recuperar uma imagem de referência a partir de DPB 218, formada a partir dos blocos reconstruídos (e potencialmente filtrados), para inter-predizer blocos de imagens codificadas subsequentemente. Além disso, a unidade de intra-predição 226 pode utilizar blocos reconstruídos em
DPB 218 de uma imagem atual para predispor intra-predizer outros blocos na imagem atual.
[0189] Em geral, a unidade de codificação por entropia 220 pode codificar elementos de sintaxe recebidos a partir de outros componentes funcionais do codificador de vídeo 200. Por exemplo, a unidade de codificação por entropia 220 pode codificar por entropia blocos de coeficientes de transformada quantizados a partir da unidade de quantização 208. Como outro exemplo, unidade de codificação por entropia 220 pode codificar por entropia elementos de sintaxe de predição (como, por exemplo, informações de movimento para inter-predição ou informações intra-modo para intra-predição) a partir da unidade de seleção de modo 202. A unidade de codificação por entropia 220 pode efetuar uma ou mais operações de codificação de entropia nos elementos de sintaxe, que são outro exemplo de dados de vídeo, para gerar dados codificados por entropia. Por exemplo, a unidade de codificação por entropia 220 pode efetuar uma operação CABAC, uma operação de codificação de tamanho variável adaptativa ao contexto (CAVLC), uma operação de codificação de comprimento de variável para variável (V2V), uma operação de codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), uma operação de codificação por entropia com particionamento de intervalos de probabilidade (PIPE), uma operação de operação de codificação de Golomb Exponencial ou outro tipo de operação de codificação de entropia nos dados. Em alguns exemplos, a unidade de codificação por entropia 220 pode funcionar no modo de desvio, onde os elementos de sintaxe não são codificados por entropia.
[0190] De acordo com as técnicas desta revelação, a unidade de codificação por entropia 220 pode, para um bloco residual, codificar por entropia informações de particionamento associadas com o bloco residual.
Tais informações de particionamento associadas com o bloco residual podem indicar se o bloco residual é particionado.
Se o bloco residual é particionado, as informações de particionamento codificadas por entropia podem adicionalmente indicar o tipo de árvore de partição para o bloco residual.
O tipo de árvore de partição pode ser um de: um particionamento em quad-tree, um particionamento em árvore binária, um particionamento em árvore ternária ou um particionamento da TU em quatro.
Para indicar o tipo de árvore de partição, as informações de particionamento codificadas por entropia podem incluir um índice em uma lista de possíveis tipos de particionamento.
Se o tipo de árvore de partição for um de: o particionamento em árvore binária, o particionamento em árvore ternária ou o particionamento da TU em quatro, as informações de particionamento codificadas por entropia podem sinalizar adicionalmente mais informações indicativas de um tipo de particionamento para o bloco residual que indica se o bloco residual é dividido horizontalmente ou dividido verticalmente.
Além disso, se o tipo de árvore de partição para o bloco residual for o particionamento em árvore binária ou o particionamento em árvore ternária, as informações codificadas por entropia podem sinalizar adicionalmente mais informações indicativas de se a TU é simetricamente ou assimetricamente dividida.
[0191] A unidade de codificação por entropia 220 também pode, para um bloco residual, codificar por entropia outras informações associadas com o bloco residual. Por exemplo, a unidade de codificação por entropia 220 pode codificar uma indicação da transformada que é selecionada para cada um da pluralidade de sub-blocos residuais resultante da partição do bloco residual, tal como um índice MTS para cada um dos respectivos sub-blocos residuais. Em outro exemplo, a unidade de codificação por entropia 220 pode codificar uma indicação de uma transformada que é selecionada para o bloco residual, onde a transformada selecionada é aplicada a cada um da pluralidade de sub-blocos residuais resultantes do particionamento do bloco residual.
[0192] De acordo com alguns aspectos desta revelação, a unidade de codificação por entropia 220 pode se abster de codificar informações associadas com atribuições de contexto para a pluralidade de sub-blocos residuais resultantes do particionamento de um bloco residual ou núcleos de transformadas para a pluralidade de sub-blocos residuais. Ao invés disso, o decodificador de vídeo 300 pode inferir tais informações com referência o bloco residual com base em outras informações associadas com o bloco residual que é codificado pela unidade de codificação por entropia 220, tal como se o bloco residual é particionado, o tipo de árvore de partição de acordo com o qual o bloco residual é particionado, o tipo de partição do bloco residual, bem como outras informações secundárias codificadas por entropia pela unidade de codificação por entropia 220.
[0193] O codificador de vídeo 200 pode enviar um fluxo de bits que inclui os elementos de sintaxe codificados por entropia necessários para reconstruir blocos de uma fatia ou imagem. Em particular, a unidade de codificação por entropia 220 pode enviar o fluxo de bits que inclui, como, por exemplo, a informação de particionamento codificada por entropia associada com o bloco residual, de acordo com as técnicas desta revelação. Como tal, uma vez que o codificador 200 determinou que um bloco residual para um bloco atual de dados de vídeo é particionado de acordo com um tipo de árvore de partição em uma pluralidade de sub-blocos residuais, a unidade de codificação por entropia 220 pode codificar um fluxo de bits como uma representação codificada de dados de vídeo que sinalizam informações indicativas de se o bloco residual é particionado e adicionalmente sinalizam informações indicativas do tipo de árvore de partição para o bloco residual que é particionado.
[0194] As operações descritas acima são descritas com relação a um bloco. Tal descrição deve ser entendida como sendo operações para um bloco de codificação luma e/ou blocos de codificação croma. Conforme descrito acima, em alguns exemplos, o bloco de codificação luma e os blocos de codificação croma são componentes luma e croma de uma CU. Em alguns exemplos, o bloco de codificação luma e os blocos de codificação croma são componentes luma e croma de uma PU.
[0195] Em alguns exemplos, as operações efetuadas com relação a um bloco de codificação luma não necessitam ser repetidas para os blocos de codificação croma. Como exemplo, as operações para identificar um vetor de movimento (MV) e uma imagem de referência para um bloco de codificação luma não necessitam ser repetidas para identificar um MV e uma imagem de referência para os blocos croma. Ao invés disso, o MV para o bloco de codificação luma pode ser escalonado para determinar o MV para os blocos croma, e a imagem de referência pode ser a mesma. Como outro exemplo, o processo de intra-predição pode ser o mesmo para os blocos de codificação luma e os blocos de codificação croma.
[0196] O codificador de vídeo 200 representa um exemplo de um dispositivo configurado para codificar dados de vídeo, que inclui uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em circuitos e configuradas para determinar que um bloco residual para um bloco atual de dados de vídeo é particionado de acordo com um tipo de árvore de partição em uma pluralidade de sub-blocos residuais e codificar um fluxo de bits como uma representação codificada de dados de vídeo que sinaliza informações indicativas de se o bloco residual é particionado e outros sinais de informações indicativas do tipo de árvore de partição para o bloco residual.
[0197] A Figura 10 é um diagrama de blocos que mostra um exemplo de um decodificador de vídeo 300 que pode efetuar as técnicas desta revelação. A Figura 10 é fornecida para propósitos explicativos e não é limitante nas técnicas conforme amplamente exemplificado e descrito nesta revelação. Para propósitos explicativos, esta revelação descreve o decodificador de vídeo 300 de acordo com as técnicas de JEM, VVC e HEVC. Contudo, as técnicas desta revelação podem ser efetuadas por dispositivos de codificação de vídeo que são configurados para outros padrões de codificação de vídeo.
[0198] No exemplo da Figura 10, o decodificador de vídeo 300 inclui memória de armazenador de imagens codificadas (CPB) 320, unidade de decodificação por entropia 302, a unidade de processamento de predição 304, unidade de quantização inversa 306, a unidade de processamento de transformada inversa 308, unidade de reconstrução 310, unidade de filtro 312 e armazenador de imagens decodificadas (DPB) 314. Qualquer ou toda a memória CPB 320, a unidade de decodificação por entropia 302, a unidade de processamento de predição 304, a unidade de quantização inversa 306, a unidade de processamento de transformadas inversas 308, a unidade de reconstrução 310, a unidade de filtro 312 e o DPB 314 podem ser implementadas em um ou mais processadores ou em circuitos de processamento. Por exemplo, as unidades do decodificador de vídeo 300 podem ser implementadas como um ou mais circuitos ou elementos lógicos como parte do circuito de hardware ou como parte de um processador, ASIC, de FPGA. Além disso, o decodificador de vídeo 300 pode incluir processadores adicionais ou alternativos ou circuitos de processamento para efetuar estas e outras funções.
[0199] A unidade de processamento de predição 304 inclui a unidade de compensação de movimento 316 e a unidade de intrapredição 318. A unidade de processamento de predição 304 pode incluir unidades adicionais para efetuar predição de acordo com outros modos de predição. Como exemplos, a unidade de processamento de predição 304 pode incluir uma unidade de paleta, uma unidade de cópia intra- bloco (que pode fazer parte da unidade de compensação de movimento 316), uma unidade afim, uma unidade de modelo linear (LM) ou semelhantes. Em outros exemplos, o decodificador de vídeo 300 pode incluir mais, menos ou diferentes componentes funcionais.
[0200] A memória CPB 320 pode armazenar dados de vídeo, tal como um fluxo de bits de vídeo codificado, a serem decodificados pelos componentes do decodificador de vídeo 300. Os dados de vídeo armazenados na memória CPB 320 podem ser obtidos, por exemplo, a partir do meio passível de leitura por computador 110 (Figura 1). A memória CPB 320 pode incluir um CPB que armazena dados de vídeo codificados (como, por exemplo, elementos de sintaxe) a partir de um fluxo de bits de vídeo codificado. Além disso, a memória CPB 320 pode armazenar dados de vídeo outros que não elementos de sintaxe de uma imagem codificada, tal como dados temporários que representam saídas das diversas unidades do decodificador de vídeo 300. O DPB 314 geralmente armazena imagens decodificadas, as quais o decodificador de vídeo 300 pode enviar e/ou utilizar como dados de vídeo de referência quando decodifica dados ou imagens subsequentes do fluxo de bits de vídeo codificado. A memória CPB 320 e DPB 314 podem ser formadas por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), que inclui DRAM síncrona (SDRAM), RAM magneto-resistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória CPB 320 e DPB 314 podem ser fornecidas pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em diversos exemplos, a memória CPB 320 pode estar embutida em chip com outros componentes do decodificador de vídeo 300 ou não embutida chip em relação a esses componentes.
[0201] Adicionalmente ou alternativamente, em alguns exemplos, o decodificador de vídeo 300 pode recuperar dados de vídeo codificados a partir da memória 120 (Figura 1). Isto é, a memória 120 pode armazenar dados conforme discutido acima com a memória CPB 320. De modo semelhante, a memória 120 pode armazenar instruções a serem executadas pelo decodificador de vídeo 300, quando algumas ou todas as funcionalidades do decodificador de vídeo 300 são implementadas no software a ser executado por circuitos de processamento do decodificador de vídeo 300. Como tal, a memória CPB 320, juntamente com outros componentes do decodificador de vídeo 300 da Figura 10, representam exemplos de meios para receber um fluxo de bits.
[0202] As diversas unidades mostradas na Figura 4 são mostradas para auxiliar com entendimento as operações efetuadas pelo decodificador de vídeo 300. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação deles. Semelhante à Figura 3, os circuitos de função fixa se referem a circuitos que fornecem funcionalidade específica e são pré-configurados nas operações que podem ser efetuadas. Circuitos programáveis se referem a circuitos que podem ser programados para efetuar diversas tarefas e fornecem funcionalidade flexível nas operações que podem ser efetuadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que fazem com que os circuitos programáveis funcionem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (como, por exemplo, para receber parâmetros ou parâmetros de saída), mas os tipos de operações que os circuitos de função fixa efetuam são geralmente imutáveis. Em alguns exemplos uma ou mais unidades podem ser blocos de circuitos distintos (de função fixa ou programável) e, em alguns exemplos, uma ou mais unidades podem ser circuitos integrados.
[0203] O decodificador de vídeo 300 pode incluir ALUs, EFUs, circuitos digitais, circuitos analógicos e/ou núcleos programáveis formados a partir de circuitos programáveis. Em exemplos onde as operações do decodificador de vídeo 300 são efetuadas por software em execução nos circuitos programáveis, a memória embutida em chip ou não embutida em chip pode armazenar instruções (como, por exemplo, código de objeto) do software que o decodificador de vídeo 300 recebe e executa.
[0204] A unidade de decodificação por entropia 302 pode receber dados de vídeo codificados a partir do CPB e decodificar por entropia os dados de vídeo para reproduzir elementos de sintaxe. A unidade de processamento de predição 304, a unidade de quantização inversa 306, a unidade de processamento de transformada inversa 308, a unidade de reconstrução 310 e a unidade de filtro 312 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos a partir do fluxo de bits.
[0205] Em geral, o decodificador de vídeo 300 reconstrói uma imagem sobre uma base de bloco por bloco. O decodificador de vídeo 300 pode efetuar uma operação de reconstrução em cada bloco individualmente (onde o bloco que é atualmente reconstruído, isto é, decodificado, pode ser referido como um “bloco atual”).
[0206] A unidade de decodificação por entropia 302 pode decodificar por entropia elementos de sintaxe que definem coeficientes de transformada quantizados de um bloco de coeficientes de transformada quantizado, bem como informações de transformada, tal como um parâmetro de quantização (QP) e/ou indicações de modo de transformada.
[0207] De acordo com as técnicas desta revelação, o decodificador de vídeo 300 pode receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição. As informações indicativas de se um bloco residual é particionado e as informações indicativas de um tipo de árvore de partição para o bloco residual podem ser elementos de sintaxe que sinalizam se o bloco residual é particionado e, em caso afirmativo, o tipo de árvore de partição para o bloco residual.
[0208] Em alguns exemplos, as informações indicativas do tipo de árvore de partição para o bloco residual podem ser informações de índice em um conjunto de tipos de árvore e a unidade de decodificação por entropia 302 pode determinar o tipo de árvore de partição com base nas informações de índice recebidas. Por exemplo, o conjunto de informações de tipos de árvore pode incluir um ou mais de um particionamento em quad-tree e um particionamento em árvore binária,
[0209] Em alguns exemplos, o fluxo de bits recebido pelo decodificador de vídeo 300 pode ainda incluir informações indicativas de se o bloco residual é dividido horizontalmente ou dividido verticalmente e/ou se o bloco residual é dividido simetricamente ou dividido assimetricamente.
[0210] Por exemplo, o fluxo de bits pode incluir, para um bloco residual, um sinalizador que sinaliza se o bloco residual é particionado. Se o sinalizador estiver ativado, o fluxo de bits pode incluir um índice em uma lista de tipos de árvore de partição para indicar o tipo de árvore de partição para particionamento do bloco residual, tal como por meio de múltiplos bits para o índice em uma lista dos seguintes tipos de árvore de partição: particionamento em quad-tree, particionamento em árvore binária, particionamento em árvore ternária e particionamento da TU em quatro. O fluxo de bits também pode incluir, se necessário, um sinalizador que sinaliza se o bloco residual é dividido horizontalmente ou dividido verticalmente, e se o bloco residual é dividido simetricamente ou dividido assimetricamente.
[0211] A unidade de decodificação por entropia 302 pode decodificar por entropia as informações de particionamento associadas com um bloco residual para um bloco atual de dados que é decodificado a partir do fluxo de bits. Em particular, a unidade de decodificação por entropia 302 pode decodificar as informações de particionamento para determinar se o bloco residual é particionado. Se as informações de particionamento para os dados residuais no fluxo de bits sinalizam que o bloco residual é particionado, a unidade de decodificação por entropia 302 pode decodificar adicionalmente as informações de particionamento para determinar o tipo de árvore de partição para o bloco residual. A depender do tipo de árvore de partição para o bloco residual, a unidade de decodificação por entropia 302 pode decodificar as informações de particionamento para o bloco residual no fluxo de bits para determinar se o bloco residual é dividido horizontalmente ou dividido verticalmente, bem como se o bloco residual é dividido simetricamente ou dividido assimetricamente. Como tal, a unidade de decodificação por entropia 302, juntamente com outros componentes do decodificador de vídeo 300 da Figura 10, representam exemplos de meios para determinar que o bloco residual é particionado de acordo com o tipo de árvore de partição em uma pluralidade de sub-blocos residuais.
[0212] Além disso, em alguns exemplos, a unidade de decodificação por entropia 302 também pode, para um bloco residual de um bloco atual de dados, decodificar por entropia outras informações associadas com o bloco residual. Por exemplo, a unidade de decodificação por entropia 302 pode decodificar uma indicação da transformada que é selecionada para cada um da pluralidade de sub-blocos residuais resultantes do particionamento do bloco residual, tal como um índice MTS para cada um dos respectivos sub- blocos residuais.
[0213] Em outro exemplo, a unidade de decodificação por entropia 302 pode decodificar uma indicação de uma transformada que é selecionada para o bloco residual, onde a transformada selecionada é aplicada a cada um da pluralidade de sub-blocos residuais resultantes do particionamento do bloco residual. Tal transformada que é selecionada para o bloco residual pode ser sinalizada no fluxo de bits no nível do bloco residual, poupando-se overhead durante as indicações de transformadas separadas para cada um dos sub-blocos residuais enquanto se preserva a capacidade de particionamento de um bloco residual em uma pluralidade de sub-blocos residuais.
[0214] De acordo com as técnicas da presente revelação, a unidade de decodificação por entropia 302 pode inferir ou restringir um sinalizador de bloco codificado (cbf) e/ou um sinalizador de salto de transformadas para cada um da pluralidade de sub-blocos residuais com base em informações, tal como o modo de predição para o bloco atual, o tipo de árvore de partição para o bloco residual, o tipo de partição para o bloco residual ou qualquer outra informação secundária incluída no fluxo de bits. Um sinalizador de bloco codificado pode sinalizar informações sobre se pelo menos um nível não-zero de coeficientes de transformada é transmitido para o sub-bloco residual. Um sinalizador de salto de transformadas pode sinalizar informações com relação se a transformada é saltada para o sub-bloco residual. Por exemplo, a unidade de decodificação por entropia 302 pode restringir um sub-bloco residual para que sempre tenha um sinalizador de bloco codificado desativado (sinalizador = 0) de modo que nenhuma sinalização cbf seja necessária para o sub-bloco residual.
[0215] A unidade de decodificação por entropia 302 pode fornecer essas informações associadas com o bloco residual para a unidade de processamento de transformadas inversas 308. Assim, depois da unidade de quantização inversa 306 formar o bloco de coeficientes de transformada, a unidade de processamento de transformadas inversas 308 pode utilizar tais informações associadas com o bloco residual juntamente com um ou mais blocos de coeficientes de transformada fornecidos pela unidade de quantização inversa 306 para gerar um bloco residual associado com o bloco atual.
[0216] A unidade de quantização inversa 306 pode utilizar o QP associado com o bloco de coeficientes de transformada quantizado para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa para a unidade de quantização inversa 306 aplicar. A unidade de quantização inversa 306 pode, como, por exemplo, efetuar uma operação de deslocamento à esquerda bit a bit para quantizar inversamente os coeficientes de transformada quantizados. A unidade de quantização inversa 306 pode, por esse modo formar um bloco de coeficientes de transformada que inclui coeficientes de transformada.
[0217] Depois da unidade de quantização inversa 306 formar o bloco de coeficientes de transformada, a unidade de processamento de transformadas inversas 308 pode aplicar uma ou mais transformadas inversas ao bloco de coeficientes de transformada para gerar um bloco residual associado com o bloco atual. Por exemplo, a unidade de processamento de transformadas inversas 308 pode aplicar uma DCT inversa, uma transformada inteira inversa, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou outra transformada inversa ao bloco de coeficientes de transformada. Como tal, a unidade de processamento de transformadas inversas 308, juntamente com outros componentes do decodificador de vídeo 300 da Figura 10, representam exemplos de meios para produzir dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais.
[0218] De acordo com as técnicas desta revelação, a unidade de processamento de transformadas inversas 308 pode receber as informações de particionamento associadas com um bloco residual para um bloco atual de dados a partir da unidade de decodificação por entropia 302 e pode determinar um particionamento do bloco residual em uma pluralidade de sub-blocos residuais. Conforme discutido acima, a unidade de decodificação por entropia 302 pode decodificar informações de particionamento para o bloco residual do bloco atual que indica se o bloco residual é particionado, se o bloco residual é dividido horizontalmente ou dividido verticalmente, e se o bloco residual é dividido simetricamente ou dividido assimetricamente. A unidade de processamento inversa 308 pode utilizar tais informações para determinar a pluralidade de sub-blocos residuais resultantes do particionamento do bloco residual para os dados do bloco atual.
[0219] Unidade de processamento de transformadas inversas 308 pode aplicar uma ou mais transformadas inversas a um ou mais blocos de coeficientes de transformada com base, pelo menos em parte, nas informações de particionamento para gerar o bloco residual para o bloco atual de dados de vídeo, inclusive a geração da pluralidade de sub-blocos residuais resultantes do particionamento do bloco residual para os dados do bloco atual. Por este meio, a unidade de processamento de transformadas inversas 308 produz dados residuais para o bloco atual de dados de vídeo.
[0220] Em alguns exemplos, a unidade de processamento de transformadas inversas 308 pode aplicar uma ou mais transformadas inversas indicadas pelas informações decodificadas a partir do fluxo de bits pela unidade de decodificação por entropia 302. Por exemplo, se o fluxo de bits inclui informações que indicam uma transformada que é selecionada para cada um da pluralidade de sub-blocos residuais resultantes do particionamento do bloco residual, tal como um índice MTS para cada um dos respectivos sub-blocos residuais, então a unidade de processamento de transformadas inversas 308 pode aplicar as transformadas selecionadas à pluralidade de sub-blocos residuais. Em outro exemplo, se o fluxo de bits inclui informações que indicam uma transformada que é selecionada para o bloco residual, então a unidade de processamento de transformadas inversas 308 pode aplicar a transformada selecionada a cada um da pluralidade de sub-blocos residuais no bloco residual.
[0221] Em alguns exemplos, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir núcleos de transformadas para a pluralidade de sub-blocos residuais em pelo menos um de: uma direção horizontal ou uma direção vertical com base, pelo menos em parte, nas informações de particionamento para o bloco residual que está incluído no fluxo de bits e/ou outras informações secundárias. Inferir ou restringir os núcleos de transformadas para a pluralidade de sub-blocos residuais inclui inferir ou restringir o índice MTS ou definição de transformada para a pluralidade de sub-blocos residuais com base, pelo menos em parte, nas informações de particionamento para o bloco residual que está incluído no bitstream e/ou outras informações secundárias.
[0222] Inferir ou restringir os núcleos de transformadas significa que os núcleos de transformadas não são sinalizados explicitamente no fluxo de bits. Ao invés disso, os núcleos de transformadas podem ser inferidos ou restritos com base, pelo menos em parte, em outras informações no fluxo de bits. Em um exemplo, os núcleos de transformadas podem ser inferidos ou restritos com base no tipo de árvore de partição do bloco residual sinalizado pelo fluxo de bits, tal como com base em se o bloco residual é particionado de acordo com um particionamento em árvore binária, um particionamento da TU em quatro, ou um particionamento em árvore ternária, com base no tipo de partição do bloco residual, tal como com base em se a árvore residual é dividida horizontalmente ou verticalmente e/ou com base em qualquer outra informação secundária sinalizada no fluxo de bits. A unidade de processamento de transformadas inversas 308 pode aplicar uma ou mais transformadas inversas a um ou mais blocos de coeficientes de transformada com base, pelo menos em parte, nos núcleos de transformadas inferidos ou restritos para a pluralidade de sub-blocos residuais para gerar o bloco residual para o bloco atual de dados de vídeo.
[0223] Em alguns exemplos, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir atribuições de contexto para a pluralidade de sub-blocos residuais com base, pelo menos em parte, nas informações de particionamento para o bloco residual que é incluído no fluxo de bits e/ou outras informações secundárias, e a unidade de processamento de transformadas inversas 308 pode aplicar uma ou mais transformadas inversas a um ou mais blocos de coeficientes de transformada com base, pelo menos em parte, nas atribuições de contexto inferidas ou restritas para a pluralidade de sub-blocos residuais para gerar o bloco residual para o bloco atual de dados de vídeo.
[0224] Quando as atribuições de contexto são inferidas ou restritas, a seleção de transformadas para a pluralidade de sub-blocos residuais ainda pode ser possível, com contextos que são atribuídos para sinalizar tais seleções de transformadas. O contexto atribuído pode ser um contexto separado diferente do contexto já existente na sinalização de seleção de transformadas. Como resultado, o overhead de transformada pode ser codificado de modo mais eficiente e todas as seleções de transformadas podem estar disponíveis.
[0225] Inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos residuais significa que as atribuições de contexto não são explicitamente sinalizadas no fluxo de bits. Ao invés disso, as atribuições de contexto podem ser inferidas ou restritas com base, pelo menos em parte, em outras informações no fluxo de bits. Em um exemplo, as atribuições de contexto podem ser inferidas ou restritas com base no tipo de árvore de partição do bloco residual sinalizado pelo fluxo de bits, como com base em se o bloco residual é particionado de acordo com um particionamento em quad-tree, um particionamento em árvore binária, um particionamento da PU em quatro, ou um particionamento em árvore ternária, com base no tipo de partição do bloco residual, como com base em se a árvore residual é dividida horizontalmente ou verticalmente e/ou com base em qualquer outra informação secundária sinalizada no fluxo de bits. Em alguns exemplos, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos residuais para componentes luma do bloco atual e/ou componentes croma do bloco atual.
[0226] Em um exemplo, quando a unidade de processamento de transformadas inversas 308 determina que o bloco residual é particionado de acordo com uma partição quad-tree em quatro sub-blocos residuais, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos residuais de modo que a DCT-8 é utilizada tanto como uma transformada horizontal quanto uma transformada vertical para um primeiro sub-bloco residual da pluralidade de sub-blocos residuais, que a DST-7 é utilizada na transformada horizontal e a DST-8 é utilizada como a transformada vertical para um segundo sub-bloco residual da pluralidade de sub-blocos residuais, que a DCT-8 é utilizada na transformada horizontal e a DST-7 é utilizada como a transformada vertical para um terceiro sub-bloco residual da pluralidade de sub-blocos residuais, e que a DST-7 é utilizada tanto como a transformada horizontal quanto a transformada vertical para um quarto sub-bloco residual da pluralidade de sub-blocos residuais.
[0227] Em outro exemplo, quando a unidade de processamento de transformadas inversas 308 determina que o bloco residual é particionado de acordo com um particionamento em quad-tree em quatro sub-blocos residuais, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos residuais de modo que a DST-7 é utilizada tanto como uma transformada horizontal quanto uma transformada vertical para cada um da pluralidade de sub-blocos residuais.
[0228] Em outro exemplo, quando a unidade de processamento de transformadas inversas 308 determina que o bloco residual é particionado de acordo com um particionamento em quad-tree em quatro sub-blocos residuais, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos residuais de modo que a DCT-2 é utilizada como pelo menos um de: uma transformada horizontal ou uma transformada vertical para um ou mais da pluralidade de sub-blocos residuais. Assim, por exemplo, a DCT-2 pode ser inferida ou restrita como a transformada horizontal e a DST-7 ou a DCT-8 podem ser inferidas ou restritas como a transformada vertical para um ou mais da pluralidade de sub-blocos residuais, e a DCT-2 pode ser inferida ou restrita como a transformada vertical e a DST-7 ou a DCT-8 podem ser inferidas ou restritas como a transformada horizontal para um ou mais da pluralidade de sub-blocos residuais.
[0229] Em outro exemplo, quando a unidade de processamento de transformadas inversas 308 determina que o bloco residual é particionado de acordo com um particionamento em árvore binária em dois sub-blocos residuais, e que o tipo de partição para o bloco residual é uma divisão horizontal, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos residuais de modo que a DCT-2 seja utilizada como uma transformada horizontal e a DCT-8 seja utilizada como uma transformada vertical para um primeiro sub-bloco residual da pluralidade de sub-blocos residuais blocos, e que a DCT- 2 seja utilizada como a transformada horizontal e a DST-7 seja utilizada como a transformada vertical para um segundo sub-bloco residual da pluralidade de sub-blocos residuais.
[0230] Em outro exemplo, quando a unidade de processamento de transformadas inversas 308 determina que o bloco residual é particionado de acordo com um particionamento em árvore binária em dois sub-blocos residuais, e que o tipo de partição para o bloco residual é uma divisão vertical, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos residuais de modo que a DCT-8 seja utilizada como uma transformada horizontal e a DCT-2 seja utilizada como uma transformada vertical para um primeiro sub-bloco residual da pluralidade de sub-blocos residuais, e que a DST-7 seja utilizada como a transformada horizontal e a DCT-2 seja utilizada como a transformada vertical para um segundo sub- bloco residual da pluralidade de sub-blocos residuais.
[0231] Em outro exemplo, quando a unidade de processamento de transformadas inversas 308 determina que o bloco residual é particionado de acordo com um particionamento em árvore binária em dois sub-blocos residuais, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos de partição blocos de modo que um de: a DST-7 ou a DCT-8 é utilizada como pelo menos um de: uma transformada horizontal ou como uma transformada vertical para um ou mais da pluralidade de sub-blocos residuais. A utilização da DST-7 ou da DCT-8 pode ser no lugar da DCT-2 nos exemplos de particionamento em árvore binária descritos acima.
[0232] Em alguns exemplos, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir atribuições de contexto para um bloco residual com base, pelo menos em parte, no tamanho do bloco residual. Por exemplo, quando o bloco residual tem um tamanho pequeno, como menor ou igual a 16 amostras (como, por exemplo, um bloco 4x4 que tem um tamanho de 16 amostras), e quando o bloco residual é particionado de acordo com um particionamento em árvore binária, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos residuais de modo que a DST-7 seja utilizada como a transformada horizontal e a transformada vertical para cada um da pluralidade de sub-blocos residuais.
[0233] Em outro exemplo, quando o bloco residual tem um tamanho grande, como maior ou igual a 16 amostras (como, por exemplo, um bloco 4x8 que tem um tamanho de 32 amostras), e quando o bloco residual é particionado de acordo com um particionamento em árvore binária, a unidade de processamento de transformadas inversas 308 pode inferir ou restringir as atribuições de contexto para a pluralidade de sub-blocos residuais de modo que a DCT-2 seja utilizada como uma transformada horizontal e a DST-7 seja utilizada como uma transformada vertical para um primeiro sub-bloco residual da pluralidade de sub- blocos residuais, e que a DCT-2 seja utilizada como a transformada vertical e a DST-7 seja utilizada como a transformada horizontal para um segundo sub-bloco residual da pluralidade de sub-blocos residuais.
[0234] Em outro exemplo, quando o bloco residual tem um tamanho horizontal ou um tamanho vertical que é menor ou igual a 2 amostras (como, por exemplo, um bloco de 2x8), a unidade de processamento de transformadas inversas 308 pode inferir ou restringir que nenhuma transformada seja aplicada ao pluralidade de sub-blocos residuais.
[0235] Em alguns exemplos, a unidade de processamento de transformadas inversas 308 pode inferir as atribuições de contexto para a pluralidade de sub-blocos residuais com base no bloco atual que é um bloco de vídeo intra-predito. Em outros exemplos, a unidade de processamento de transformadas inversas 308 pode inferir as atribuições de contexto para a pluralidade de sub-blocos residuais com base no bloco atual que é um bloco de vídeo inter-predito. Em outro exemplo, a unidade de processamento de transformadas inversas 308 pode inferir as atribuições de contexto para a pluralidade de sub-blocos residuais com base no bloco atual que é um bloco de vídeo inter-predito ou um bloco de vídeo intra-predito.
[0236] Além disso, a unidade de processamento de predição 304 gera um bloco de predição de acordo com elementos de sintaxe das informações de predição que foram decodificados por entropia pela unidade de decodificação por entropia 302. Por exemplo, se elementos de sintaxe das informações de predição indicarem que o bloco atual é inter-predito, a unidade de compensação de movimento 316 pode gerar o bloco de predição. Nesse caso, os elementos de sintaxe das informações de predição podem indicar uma imagem de referência no DPB 314 a partir da qual recupera um bloco de referência, bem como um vetor de movimento que identifica uma localização do bloco de referência na imagem de referência com relação à localização do bloco atual na imagem atual. A unidade de compensação de movimento 316 pode geralmente efetuar o processo de inter-predição de uma maneira que é substancialmente semelhante que foi descrita com relação à unidade de compensação de movimento 224 (Figura 9).
[0237] Como outro exemplo, se os elementos de sintaxe de informação de predição indicam que o bloco atual é intra-predito, a unidade de intra-predição 318 pode gerar o bloco de predição de acordo com um modo de intra-predição indicado pelos elementos de sintaxe de informações de predição. Novamente, a unidade de intra-predição 318 pode geralmente efetuar o processo de intra-predição de uma maneira que é substancialmente semelhante àquela descrita em relação à unidade de intra-predição 226 (Figura 9). A unidade intra-predição 318 pode recuperar dados de amostras vizinhas ao bloco atual do DPB 314.
[0238] A unidade de reconstrução 310 pode reconstruir o bloco atual utilizando o bloco de predição e o bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual às amostras correspondentes do bloco de predição para reconstruir o bloco atual. Como tal, a unidade de reconstrução 310, juntamente com outros componentes do decodificador de vídeo 300 da Figura 10, representam exemplos de meios para decodificar um bloco atual utilizando-se dados residuais.
[0239] A unidade de filtro 312 pode executar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 312 pode efetuar operações de desbloqueio para reduzir artefatos de bloqueio ao longo das bordas dos blocos reconstruídos. As operações da unidade de filtro 312 não são necessariamente efetuadas em todos os exemplos.
[0240] O decodificador de vídeo 300 pode armazenar os blocos reconstruídos no DPB 314. Por exemplo, em exemplos onde as operações da unidade de filtro 312 não são efetuadas, a unidade de reconstrução 310 pode armazenar blocos reconstruídos no DPB 314. Em exemplos onde as operações da unidade de filtro 312 são efetuadas, a unidade de filtro 312 pode armazenar os blocos reconstruídos filtrados no DPB 314. Conforme discutido acima, o DPB 314 pode fornecer informações de referência, tais como amostras de uma imagem atual para intra-predição e imagens previamente decodificadas para compensação de movimento subsequente, para a unidade de processamento de predição
304. Além disso, o decodificador de vídeo 300 pode produzir imagens decodificadas (como, por exemplo, vídeo decodificado) a partir do DPB 314 para apresentação subsequente em um dispositivo de exibição, tal como o dispositivo de exibição 118 da Figura 1.
[0241] Desta maneira, o decodificador de vídeo 300 representa um exemplo de um dispositivo de decodificação de vídeo, que inclui uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em circuitos e configuradas para receber, em um fluxo de bits que compreende uma representação codificada do dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição; determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub-blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição; produzir os dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais; e decodificar o bloco atual utilizando os dados residuais.
[0242] A Figura 11 é um fluxograma que mostra um método exemplar para codificar um bloco atual. O bloco atual pode compreender uma CU atual. Embora descrito em relação ao codificador de vídeo 200 (Figuras 1 e 9), deve ficar entendido que outros dispositivos podem ser configurados para efetuar um método semelhante ao da Figura
11.
[0243] Neste exemplo, o codificador de vídeo 200 predita inicialmente o bloco atual (350). Por exemplo, o codificador de vídeo 200 pode formar um bloco de predição para o bloco atual. O codificador de vídeo 200 pode então calcular um bloco residual para o bloco atual (352). Para calcular o bloco residual, o codificador de vídeo 200 pode calcular uma diferença entre o bloco original não codificado e o bloco de predição para o bloco atual. Como parte do cálculo do bloco residual, o codificador de vídeo 200 pode particionar o bloco residual em uma pluralidade de sub-blocos residuais de acordo com pelo menos um de: um particionamento em quad-tree ou um particionamento em árvore binária. Se o codificador de vídeo 200 particionar o bloco residual de acordo com o particionamento em árvore binária, o codificador de vídeo 200 pode particionar horizontalmente ou verticalmente o bloco residual. Além disso, se o codificador de vídeo 200 particionar o bloco residual de acordo com o particionamento em árvore binária, o codificador de vídeo 200 pode particionar simetricamente ou particionar assimetricamente o bloco residual.
[0244] O codificador de vídeo 200 pode, então, transformar e quantizar os coeficientes do bloco residual (354). Em seguida, o codificador de vídeo 200 pode efetuar varredura dos coeficientes de transformada quantizados do bloco residual (356). Durante a varredura, ou depois da varredura, o codificador de vídeo 200 pode codificar por entropia os coeficientes de transformada (358). Por exemplo, o codificador de vídeo 200 pode codificar os coeficientes de transformada utilizando CAVLC ou CABAC. O codificador de vídeo 200 pode, então, enviar os dados codificados por entropia do bloco (360). O codificador de vídeo 200 pode enviar os dados codificados por entropia do bloco como um fluxo de bits. O fluxo de bits pode sinalizar, para um bloco residual, se o bloco residual é particionado, o tipo de árvore de partição utilizado para particionar o bloco residual, informações indicativas de se o bloco residual é particionado e informações indicativas do tipo de árvore de partição para o bloco residual que é particionado.
[0245] A Figura 12 é um fluxograma que mostra um método exemplo para decodificar um bloco atual de dados de vídeo. O bloco atual pode compreender uma CU atual. Embora descrito em relação ao decodificador de vídeo 300 (Figuras 1 e 10), deve ficar entendido que outros dispositivos podem ser configurados para efetuar um método semelhante ao da Figura 12.
[0246] O decodificador de vídeo 300 pode receber dados codificados por entropia para o bloco atual, tal como um fluxo de bits que inclui informações de predição codificadas por entropia e dados codificados por entropia para coeficientes de um bloco residual que corresponde ao bloco atual (370). O decodificador de vídeo 300 pode decodificar por entropia os dados codificados por entropia para determinar as informações de predição para o bloco atual e para reproduzir os coeficientes do bloco residual (372). O decodificador de vídeo 300 pode determinar se o fluxo de bits, para um bloco residual para o bloco atual, inclui informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado.
[0247] O decodificador de vídeo 300 pode predizer o bloco atual (374), como, por exemplo, utilizando um modo intra ou inter-predição conforme indicado pelas informações de predição para o bloco atual, para calcular um bloco de predição para o bloco atual. O decodificador de vídeo 300 pode, então, efetuar varredura inversa dos coeficientes reproduzidos (376), para criar um bloco de coeficientes de transformada quantizados. O decodificador de vídeo 300 pode, então, efetuar quantização inversa e transformada inversa nos coeficientes de transformada para produzir um bloco residual (378). O decodificador de vídeo 300 pode utilizar tais informações em relação ao particionamento do bloco residual para inferir ou restringir a atribuição de contexto e seleção de transformadas para o bloco residual, de modo a efetuar transformada inversa nos coeficientes de transformada para produzir o bloco residual. O decodificador de vídeo 300 pode, em último termo, decodificar o bloco atual por combinação do bloco de predição e do bloco residual (380).
[0248] A Figura 13 é um fluxograma que mostra um método exemplar para decodificar um bloco atual de dados que tem um bloco residual que é particionado de acordo com um tipo de árvore de partição. Embora descrito em relação ao decodificador de vídeo 300 (Figuras 1 e 10), deve ficar entendido que outros dispositivos podem ser configurados para efetuar um método semelhante ao da Figura 13. Em alguns exemplos, o decodificador de vídeo 300 pode incluir um ou mais de uma câmera, um computador, um dispositivo móvel, um dispositivo de receptor de broadcast ou um set- top box. Em alguns exemplos, o decodificador de vídeo 300 inclui pelo menos um de: um circuito integrado, um microprocessador ou um dispositivo de comunicação sem fio. Em alguns exemplos, o decodificador de vídeo 300 inclui um monitor configurado para exibir os dados de vídeo decodificados.
[0249] O decodificador de vídeo 300 pode receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição (400).
[0250] Em alguns exemplos, receber informações indicativas do tipo de árvore de partição pode incluir receber informações de índice em um conjunto de tipos de árvore, e o decodificador de vídeo 300 pode determinar o tipo de árvore de partição com base nas informações de índice recebidas. Em alguns exemplos, o conjunto de informações de tipos de árvore inclui um ou mais de um particionamento em quad-tree e um particionamento em árvore binária. Em alguns exemplos, determinar o tipo de árvore de partição pode incluir determinar se o tipo de árvore de partição é um de um particionamento em árvore binária, e o decodificador de vídeo 300 pode receber informações indicativas de se o bloco residual é dividido horizontalmente ou dividido verticalmente.
[0251] O decodificador de vídeo 300 pode determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub-blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição (402).
[0252] O decodificador de vídeo 300 pode produzir os dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais (404). Em alguns exemplos, o decodificador de vídeo 300 pode inferir, a partir do fluxo de bits, núcleos de transformadas para a pluralidade de sub-blocos residuais em pelo menos um de: uma direção horizontal ou uma direção vertical com base pelo menos em parte em um de: o tipo de árvore de partição para o bloco residual ou um tipo de partição para o bloco residual, em que produzir os dados residuais para o bloco atual pode incluir adicionalmente produzir os dados residuais com base, pelo menos em parte, nos núcleos de transformadas para a pluralidade de sub-blocos residuais.
[0253] O decodificador de vídeo 300 pode decodificar o bloco atual utilizando os dados residuais (406).
[0254] Em alguns exemplos, para decodificar o bloco atual utilizando os dados residuais, o decodificador de vídeo 300 pode decodificar os dados representativos de um modo de predição para o bloco atual, gerar o bloco de predição para o bloco atual utilizando o modo de predição e combinar o bloco de predição com os dados residuais para reproduzir o bloco atual.
[0255] Em alguns exemplos, o bloco atual é inter-predito ou intra-predito. Em alguns exemplos, o bloco atual compreende um bloco luma de uma unidade de codificação (CU). Em alguns exemplos, o bloco atual é uma unidade de codificação (CU) ou um bloco da CU, o bloco residual para o bloco atual é uma unidade de transformada (TU) ou um bloco da TU e a pluralidade de sub-blocos residuais são sub-TUs não quadradas e de um tamanho diferente que o da CU.
[0256] A Figura 14 é um fluxograma que mostra um método exemplar para codificar um bloco atual de dados que tem um bloco residual que é particionado de acordo com um tipo de árvore de partição. Embora descrito em relação ao codificador de vídeo 200 (Figuras 1 e 9), deve ficar entendido que outros dispositivos podem ser configurados para efetuar um método semelhante ao da Figura 14. Em alguns exemplos, o codificador de vídeo 200 pode incluir pelo menos um de: um circuito integrado, um microprocessador ou um dispositivo de comunicação sem fio. Em alguns exemplos, o codificador de vídeo 200 pode incluir uma câmera configurada para capturar os dados de vídeo. Em alguns exemplos, o codificador de vídeo 200 pode incluir um ou mais de: uma câmera, um computador, um dispositivo móvel, um dispositivo receptor de broadcast ou um set-top box.
[0257] O codificador de vídeo 200 pode determinar que um bloco residual para um bloco atual de dados de vídeo é particionado de acordo com um tipo de árvore de partição em uma pluralidade de sub-blocos residuais (450). O codificador de vídeo 200 pode codificar um fluxo de bits como uma representação codificada de dados de vídeo que sinaliza informações indicativas de se o bloco residual é particionado e outros sinais de informações indicativas do tipo de árvore de partição para o bloco residual que é particionado (452).
[0258] Em alguns exemplos, um fluxo de bits como uma representação codificada de dados de vídeo sinaliza informações indicativas de se o bloco residual é particionado e adicionalmente sinalizar informações indicativas do tipo de árvore de partição para o bloco residual que é particionado. Em alguns exemplos, o conjunto de informações de tipos de árvore inclui um ou mais de um particionamento em quad-tree e um particionamento em árvore binária. Em alguns exemplos, quando a informação indicativa do tipo de árvore de partição para o bloco residual indica que o tipo de árvore de partição é um de um particionamento em árvore binária, o fluxo de bits sinaliza adicionalmente informações indicativas de se o bloco residual é dividido horizontalmente ou dividido verticalmente.
[0259] Em alguns exemplos, o bloco atual é uma unidade de codificação (CU) ou um bloco da CU, o bloco residual para o bloco atual é uma unidade de transformada (TU) ou um bloco da TU, e a pluralidade de sub-blocos residuais são sub-TUs não quadradas e de um tamanho diferente que o da CU.
[0260] Deve-se reconhecer que, dependendo do exemplo, determinados atos ou eventos de qualquer uma das técnicas aqui descritas podem ser efetuados em uma sequência diferente, podem ser adicionados, fundidos ou deixados de fora completamente (como, por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além do mais, em determinado exemplos, os atos ou eventos, podem ser efetuados concomitantemente, como, por exemplo, através de processamento com múltiplos fluxos de execução, processamento com interrupções ou múltiplos processadores e não sequencialmente.
[0261] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou em qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio passível de leitura por computador e executadas por uma unidade de processamento baseada em hardware. Os meios passíveis de leitura por computador podem incluir meios de armazenamento passíveis de leitura por computador que correspondem a um meio tangível tal como um meio de armazenamento de dados ou um meio de comunicação que inclui qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, de acordo com um protocolo de comunicação, por exemplo. Desta maneira, os meios passíveis de leitura por computador podem corresponder geralmente a (1) meios de armazenamento passíveis de leitura por computador tangíveis que são não transitórios ou (2) um meio de comunicação tal como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio passível de leitura por computador.
[0262] A título de exemplo, e não de limitação, tais meios de armazenamento passíveis de leitura por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disto, qualquer conexão é apropriadamente denominada de meio passível de leitura por computador. Por exemplo, se as instruções forem transmitidas de um site da Web, servidor ou outra fonte remota utilizando-se um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (“DSL”), ou tecnologias sem fio tais como infravermelho, rádio e microonda, então o cabo coaxial, o cabo de fibra ótica, o par trançado a DSL ou tecnologias sem fio tais como infravermelho, rádio e microonda são incluídos na definição de meio. Deve ficar entendido, contudo, que os meios de armazenamento passíveis de leitura por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas, em vez disso são direcionadas para meios de armazenamento tangíveis não transitórios. Disco (disk e disc, no original) conforme aqui utilizado inclui disco compacto (“CD”), disco de laser, disco ótico, disco versátil digital (“DVD”), disco flexível e disco blu-ray, onde discos (disks) reproduzem usualmente dados magneticamente, enquanto discos (discs) reproduzem dados opticamente com lasers. Combinações desses elementos devem ser incluídas dentro do alcance dos meios passíveis de leitura por computador.
[0263] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados específicos de aplicativo (ASICs), arranjos lógicos programáveis no campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo “processador” aqui utilizado pode referir-se a qualquer uma das estruturas precedentes ou a qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, sob alguns aspectos, a funcionalidade aqui descrita pode ser apresentada dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um CODEC combinado. Além disso, as técnicas podem ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
[0264] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivo ou aparelhos, inclusive um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (um conjunto de chips, por exemplo). Diversos componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para efetuar as técnicas reveladas, mas não exigem necessariamente a efetuação por unidades de hardware diferentes. Em vez disso, conforme descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware inter-operantes, que incluem um ou mais processadores descritos acima, em conjunto com software e/ou firmware adequado.
[0265] Foram descritos diversos exemplos. Estes e outros exemplos estão dentro do alcance das reivindicações seguintes.

Claims (36)

REIVINDICAÇÕES
1. Método de decodificação de dados de vídeo, o método compreendendo: receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição; determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub- blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição; produzir dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais; e decodificar o bloco atual utilizando-se os dados residuais.
2. Método, de acordo com a reivindicação 1, em que receber as informações indicativas do tipo de árvore de partição compreende receber informações de índice em um conjunto de tipos de árvore, o método compreendendo adicionalmente determinar o tipo de árvore de partição com base nas informações de índice recebidas.
3. Método, de acordo com a reivindicação 2, em que o conjunto de tipos de árvore inclui um ou mais de um particionamento em quad-tree e um particionamento em árvore binária.
4. Método, de acordo com a reivindicação 2, em que determinar o tipo de árvore de partição compreende determinar que o tipo de árvore de partição é um particionamento em árvore binária, o método compreendendo adicionalmente receber informações indicativas de se o bloco residual é dividido horizontalmente ou dividido verticalmente.
5. Método, de acordo com a reivindicação 1, que compreende adicionalmente: inferir, a partir do fluxo de bits, núcleos de transformadas para a pluralidade de sub-blocos residuais em pelo menos um de: uma direção horizontal ou uma direção vertical com base pelo menos em parte em um de: o tipo de árvore de partição para o bloco residual ou um tipo de partição para o bloco residual, em que; produzir os dados residuais para o bloco atual compreende produzir os dados residuais com base, pelo menos em parte, nos núcleos de transformadas para a pluralidade de sub-blocos residuais.
6. Método, de acordo com a reivindicação 1, em que o bloco atual é inter-predito ou intra-predito.
7. Método, de acordo com a reivindicação 1, em que o bloco atual compreende um bloco luma de uma unidade de codificação (CU).
8. Método, de acordo com a reivindicação 1, em que: o bloco atual é uma unidade de codificação (CU) ou um bloco da CU;
o bloco residual para o bloco atual é uma unidade de transformada (TU) ou um bloco da TU; e a pluralidade de sub-blocos residuais são sub-TUs não quadradas e de um tamanho diferente que o da CU.
9. Método, de acordo com a reivindicação 1, em que decodificar o bloco atual compreende: decodificar dados representativos de um modo de predição para o bloco atual; gerar o bloco de predição para o bloco atual utilizando-se o modo de predição; e combinar o bloco de predição com os dados residuais para reproduzir o bloco atual.
10. Dispositivo para decodificar dados de vídeo, o dispositivo compreendendo: uma memória configurada para armazenar dados de vídeo; e um processador implementado em circuitos e configurado para: receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição; determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub- blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição;
produzir dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais; e decodificar o bloco atual utilizando-se os dados residuais.
11. Dispositivo, de acordo com a reivindicação 10, em que: o processador configurado para receber informações indicativas do tipo de árvore de partição é adicionalmente configurado para receber informações de índice em um conjunto de tipos de árvore; e o processador é adicionalmente configurado para determinar o tipo de árvore de partição com base nas informações de índice recebidas.
12. Dispositivo, de acordo com a reivindicação 11, em que o conjunto de tipos de árvore inclui um ou mais de um particionamento em quad-tree e um particionamento em árvore binária.
13. Dispositivo, de acordo com a reivindicação 11, em que: o processador configurado para determinar o tipo de árvore de partição é adicionalmente configurado para determinar se o tipo de árvore de partição é um particionamento em árvore binária; e o processador é adicionalmente configurado para receber informações indicativas de se o bloco residual é dividido horizontalmente ou dividido verticalmente.
14. Dispositivo, de acordo com a reivindicação 10, em que o processador é adicionalmente configurado para:
inferir, a partir do fluxo de bits, núcleos de transformadas para a pluralidade de sub-blocos residuais em pelo menos um de: uma direção horizontal ou uma direção vertical com base pelo menos em parte em um de: o tipo de árvore de partição para o bloco residual ou um tipo de partição para o bloco residual, em que; o processador configurado para produzir os dados residuais para o bloco atual é adicionalmente configurado para produzir os dados residuais com base, pelo menos em parte, nos núcleos de transformadas para a pluralidade de sub-blocos residuais.
15. Dispositivo, de acordo com a reivindicação 10, em que o bloco atual é inter-predito ou intra-predito.
16. Dispositivo, de acordo com a reivindicação 10, em que o bloco atual compreende um bloco luma de uma unidade de codificação (CU).
17. Dispositivo, de acordo com a reivindicação 10, em que: o bloco atual é uma unidade de codificação (CU) ou um bloco da CU; o bloco residual para o bloco atual é uma unidade de transformada (TU) ou um bloco da TU; e a pluralidade de sub-blocos residuais são sub-TUs não quadradas e de um tamanho diferente que o da CU.
18. Dispositivo, de acordo com a reivindicação 10, em que o processador configurado para decodificar o bloco atual é adicionalmente configurado para: decodificar dados representativos de um modo de predição para o bloco atual;
gerar o bloco de predição para o bloco atual utilizando o modo de predição; e combinar o bloco de predição com os dados residuais para reproduzir o bloco atual.
19. Dispositivo, de acordo com a reivindicação 10, que compreende adicionalmente uma tela configurada para exibir o bloco atual decodificado.
20. Dispositivo, de acordo com a reivindicação 10, em que o dispositivo compreende um ou mais de uma câmera, um computador, um dispositivo móvel, um dispositivo receptor de broadcast ou um set-top box.
21. Dispositivo, de acordo com a reivindicação 10, em que o dispositivo compreende pelo menos um de: um circuito integrado; um microprocessador; ou um dispositivo de comunicação sem fio.
22. Meio de armazenamento passível de leitura por computador que tem instruções armazenadas nele que, quando executadas, fazem com que um processador: receba, em um fluxo de bits que compreende uma representação codificada de dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição; determine, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub-
blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição; produza dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais; e decodifique o bloco atual utilizando os dados residuais.
23. Dispositivo para decodificar dados de vídeo, o dispositivo compreendendo: meios para receber, em um fluxo de bits que compreende uma representação codificada dos dados de vídeo, informações indicativas de se um bloco residual é particionado e informações indicativas de um tipo de árvore de partição para o bloco residual com base no bloco residual que é particionado, em que o bloco residual é indicativo de uma diferença entre um bloco atual e um bloco de predição; meios para determinar, com base nas informações recebidas, que o bloco residual é particionado e o tipo de árvore de partição para o bloco residual, uma pluralidade de sub-blocos residuais na qual o bloco residual é particionado de acordo com o tipo de árvore de partição; meios para produzir dados residuais para o bloco atual com base, pelo menos em parte, no bloco residual que é particionado de acordo com o tipo de árvore de partição na pluralidade de sub-blocos residuais; e meios para decodificar o bloco atual utilizando- se os dados residuais.
24. Método de codificação de dados de vídeo, o método compreendendo: determinar que um bloco residual para um bloco atual de dados de vídeo é particionado de acordo com um tipo de árvore de partição em uma pluralidade de sub-blocos residuais; e codificar um fluxo de bits como uma representação codificada de dados de vídeo que sinaliza informações indicativas de se o bloco residual é particionado e sinaliza adicionalmente informações indicativas do tipo de árvore de partição para o bloco residual que é particionado.
25. Método, de acordo com a reivindicação 24, em que: o fluxo de bits que sinaliza as informações indicativas do tipo de árvore de partição para o bloco residual inclui informações de índice em um conjunto de tipos de árvore.
26. Método, de acordo com a reivindicação 25, em que o conjunto de tipos de árvore inclui um ou mais de um particionamento em quad-tree e um particionamento em árvore binária.
27. Método, de acordo com a reivindicação 25, em que: quando as informações indicativas do tipo de árvore de partição para o bloco residual indicam que o tipo de árvore de partição é o particionamento em árvore binária, o fluxo de bits sinaliza adicionalmente informações indicativas de se o bloco residual é dividido horizontalmente ou verticalmente.
28. Método, de acordo com a reivindicação 24, em que: o bloco atual é uma unidade de codificação (CU) ou um bloco da CU; o bloco residual para o bloco atual é uma unidade de transformada (TU) ou um bloco da TU; e a pluralidade de sub-blocos residuais são sub-TUs não quadradas e de um tamanho diferente que o da CU.
29. Dispositivo para codificação de dados de vídeo, o dispositivo compreendendo: uma memória configurada para armazenar dados de vídeo; e um processador implementado em circuitos e configurado para: determinar que um bloco residual para um bloco atual de dados de vídeo é particionado de acordo com um tipo de árvore de partição em uma pluralidade de sub-blocos residuais; e codificar um fluxo de bits como uma representação codificada de dados de vídeo que sinaliza informações indicativas de se o bloco residual é particionado e adicionalmente sinalizar informações indicativas do tipo de árvore de partição para o bloco residual que é particionado.
30. Dispositivo, de acordo com a reivindicação 29, em que: o fluxo de bits que sinaliza as informações indicativas do tipo de árvore de partição para o bloco residual inclui informações de índice em um conjunto de tipos de árvore.
31. Dispositivo, de acordo com a reivindicação 30, em que o conjunto de tipos de árvore inclui um ou mais de um particionamento em quad-tree e um particionamento em árvore binária.
32. Dispositivo, de acordo com a reivindicação 31, em que: quando o fluxo de bits sinaliza que o tipo de árvore de partição para o bloco residual é o particionamento em árvore binária, o fluxo de bits sinaliza adicionalmente um tipo de particionamento para o bloco residual que indica se o bloco residual é dividido horizontalmente ou dividido verticalmente.
33. Dispositivo, de acordo com a reivindicação 29, em que: o bloco atual é uma unidade de codificação (CU) ou um bloco da CU; o bloco residual para o bloco atual é uma unidade de transformada (TU) ou um bloco da TU; e a pluralidade de sub-blocos residuais são sub-TUs não quadradas e de um tamanho diferente que o da CU.
34. Dispositivo, de acordo com a reivindicação 29, que compreende adicionalmente uma câmera configurada para capturar os dados de vídeo.
35. Dispositivo, de acordo com a reivindicação 29, em que o dispositivo compreende um ou mais de uma câmera, um computador, um dispositivo móvel, um dispositivo receptor de broadcast ou um st-top box.
36. Dispositivo, de acordo com a reivindicação 29, em que o dispositivo compreende pelo menos um de: um circuito integrado;
um microprocessador; ou um dispositivo de comunicação sem fio.
BR112021010946-3A 2018-12-19 2019-12-17 Partição de unidade de transformada (tu) com base em árvore para codificação de vídeo BR112021010946A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862782292P 2018-12-19 2018-12-19
US62/782,292 2018-12-19
US16/715,274 US11323748B2 (en) 2018-12-19 2019-12-16 Tree-based transform unit (TU) partition for video coding
US16/715,274 2019-12-16
PCT/US2019/066966 WO2020131949A1 (en) 2018-12-19 2019-12-17 Tree-based transform unit (tu) partition for video coding

Publications (1)

Publication Number Publication Date
BR112021010946A2 true BR112021010946A2 (pt) 2021-08-24

Family

ID=71097950

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021010946-3A BR112021010946A2 (pt) 2018-12-19 2019-12-17 Partição de unidade de transformada (tu) com base em árvore para codificação de vídeo

Country Status (17)

Country Link
US (1) US11323748B2 (pt)
EP (1) EP3900337A1 (pt)
JP (1) JP7455840B2 (pt)
KR (1) KR20210103481A (pt)
CN (1) CN113170129A (pt)
AR (1) AR117456A1 (pt)
AU (1) AU2019402886A1 (pt)
BR (1) BR112021010946A2 (pt)
CA (1) CA3120045A1 (pt)
CL (1) CL2021001576A1 (pt)
CO (1) CO2021007864A2 (pt)
IL (1) IL283175A (pt)
MX (1) MX2021007190A (pt)
PH (1) PH12021551118A1 (pt)
SG (1) SG11202105070SA (pt)
TW (1) TW202038617A (pt)
WO (1) WO2020131949A1 (pt)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220295068A1 (en) * 2019-03-13 2022-09-15 Hyundai Motor Company Method and device for efficiently applying transform skip mode to data block
US11172211B2 (en) * 2019-04-04 2021-11-09 Tencent America LLC Method and apparatus for video coding
US11546592B2 (en) * 2020-01-08 2023-01-03 Tencent America LLC Flexible block partitioning for chroma component
US11388401B2 (en) * 2020-06-26 2022-07-12 Google Llc Extended transform partitions for video compression

Family Cites Families (183)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE1000643A5 (fr) 1987-06-05 1989-02-28 Belge Etat Procede de codage de signaux d'image.
JPH01155678A (ja) 1987-12-11 1989-06-19 Matsushita Electric Ind Co Ltd 半導体発光装置
JPH0270127A (ja) 1988-09-06 1990-03-09 Toshiba Corp 変換符号化方式
US5136371A (en) 1990-03-15 1992-08-04 Thomson Consumer Electronics, Inc. Digital image coding using random scanning
EP0586225B1 (en) 1992-08-31 1998-12-23 Victor Company Of Japan, Ltd. Orthogonal transform coding apparatus and decoding apparatus
TW224553B (en) 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
TW297202B (pt) 1993-10-13 1997-02-01 Rca Thomson Licensing Corp
EP0729688A1 (en) 1993-11-15 1996-09-04 National Semiconductor Corporation Quadtree-structured walsh transform coding
KR0183688B1 (ko) 1994-01-12 1999-05-01 김광호 영상부호화방법 및 장치
JP3086396B2 (ja) 1995-03-10 2000-09-11 シャープ株式会社 画像符号化装置及び画像復号装置
KR0178198B1 (ko) 1995-03-28 1999-05-01 배순훈 영상 신호 부호화 장치
US5721822A (en) 1995-07-21 1998-02-24 Intel Corporation Run-length encoding/decoding video signals using scan patterns explicitly encoded into bitstreams
US5790706A (en) 1996-07-03 1998-08-04 Motorola, Inc. Method and apparatus for scanning of transform coefficients
KR100211050B1 (ko) 1996-11-05 1999-07-15 이계철 선택적 양자화 계수 전송 장치 및 방법
JP2002232887A (ja) 1996-11-07 2002-08-16 Matsushita Electric Ind Co Ltd 画像符号化方法および画像符号化装置並びに画像復号化方法および画像復号化装置
EP1689194A3 (en) 1996-11-07 2008-12-10 Panasonic Corporation Image encoder and image decoder
US5974181A (en) 1997-03-20 1999-10-26 Motorola, Inc. Data compression system, method, and apparatus
JPH10271505A (ja) 1997-03-25 1998-10-09 Oki Electric Ind Co Ltd 信号処理装置、符号化回路および復号回路
US5995055A (en) 1997-06-30 1999-11-30 Raytheon Company Planar antenna radiating structure having quasi-scan, frequency-independent driving-point impedance
DE69838630T2 (de) 1997-07-31 2008-08-28 Victor Company of Japan, Ltd., Yokohama Prädiktive Digitalvideosignalkodierung- und Dekodierungsmethode unter Verwendung von Blockinterpolation
CA2340357C (en) 1998-08-10 2005-07-26 Digital Accelerator Corporation Embedded quadtree wavelets in image compression
EP0986026A1 (en) 1998-09-07 2000-03-15 STMicroelectronics S.r.l. Fractal coding of data in the DCT domain
JP4226172B2 (ja) 1998-11-24 2009-02-18 株式会社ハイニックスセミコンダクター 適応的変換方法を用いる映像圧縮符号化装置および復号化装置ならびにその方法
AU1115001A (en) 1999-10-22 2001-05-08 Activesky, Inc. An object oriented video system
US6476805B1 (en) 1999-12-23 2002-11-05 Microsoft Corporation Techniques for spatial displacement estimation and multi-resolution operations on light fields
US6654503B1 (en) 2000-04-28 2003-11-25 Sun Microsystems, Inc. Block-based, adaptive, lossless image coder
US6724818B1 (en) 2000-07-17 2004-04-20 Telefonaktiebolaget Lm Ericsson (Publ) Alternative block orders for better prediction
CN1142683C (zh) 2000-10-13 2004-03-17 清华大学 无转置行列分离二维离散余弦正反变换电路及其方法
JP2002135126A (ja) 2000-10-26 2002-05-10 Seiko Epson Corp 半導体装置及びこれを用いた電子機器
TW589870B (en) 2000-12-19 2004-06-01 Pts Corp Adaptive transforms
US6856701B2 (en) 2001-09-14 2005-02-15 Nokia Corporation Method and system for context-based adaptive binary arithmetic coding
CN100452883C (zh) 2001-12-17 2009-01-14 微软公司 处理视频图像的方法
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
KR100468844B1 (ko) 2002-01-07 2005-01-29 삼성전자주식회사 정지영상 및 동영상을 부호화/복호화하기 위한변환계수들의 최적주사방법
JP4447197B2 (ja) 2002-01-07 2010-04-07 三菱電機株式会社 動画像符号化装置および動画像復号装置
US7190840B2 (en) 2002-01-07 2007-03-13 Hewlett-Packard Development Company, L.P. Transform coefficient compression using multiple scans
BR0304545A (pt) 2002-01-14 2004-11-03 Nokia Corp Método de codificação das imagens em uma sequência de vìdeo digital para fornecer os dados de vìdeo codificados, codificador de vìdeo, método de decodificação dos dados indicativos de uma sequência de vìdeo digital, decodificador de vìdeo, e, sistema de decodificação de vìdeo
CN1620816A (zh) 2002-01-22 2005-05-25 诺基亚有限公司 图像/视频编码器和/或解码器中的编码变换系数
US6757576B2 (en) 2002-02-05 2004-06-29 Gcc, Inc. System and method for drawing and manufacturing bent pipes
KR100508798B1 (ko) 2002-04-09 2005-08-19 엘지전자 주식회사 쌍방향 예측 블록 예측 방법
US20060218482A1 (en) 2002-04-19 2006-09-28 Droplet Technology, Inc. Mobile imaging application, device architecture, service platform architecture and services
US7170937B2 (en) 2002-05-01 2007-01-30 Texas Instruments Incorporated Complexity-scalable intra-frame prediction technique
EP1500281A2 (de) 2002-05-02 2005-01-26 Fraunhofer-Gesellschaft Zur Förderung Der Angewandten Forschung E.V. Kodierung von transformations-koeffizienten in bild- oder videokodierern
EP2290989B1 (en) 2002-05-28 2015-01-28 Sharp Kabushiki Kaisha Method and systems for image intra-prediction mode estimation, communication, and organization
US7145948B2 (en) 2002-05-29 2006-12-05 Koninklijke Philips Electronics N.V. Entropy constrained scalar quantizer for a Laplace-Markov source
US20030231795A1 (en) 2002-06-12 2003-12-18 Nokia Corporation Spatial prediction based intra-coding
US7289674B2 (en) 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
RU2314656C2 (ru) 2002-06-11 2008-01-10 Нокиа Корпорейшн Внутреннее кодирование, основанное на пространственном прогнозировании
CN101039427B (zh) 2002-07-15 2010-06-16 株式会社日立制作所 动态图像的解码方法
US6795584B2 (en) 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
US7463782B2 (en) 2002-11-05 2008-12-09 Canon Kabushiki Kaisha Data encoding with an amplitude model and path between the data and corresponding decoding
US20040091047A1 (en) 2002-11-11 2004-05-13 Sony Corporation Method and apparatus for nonlinear multiple motion model and moving boundary extraction
FI116710B (fi) 2002-12-20 2006-01-31 Oplayo Oy Kuvien koodausmenetelmä ja -järjestely
US20070036215A1 (en) 2003-03-03 2007-02-15 Feng Pan Fast mode decision algorithm for intra prediction for advanced video coding
KR100750110B1 (ko) 2003-04-22 2007-08-17 삼성전자주식회사 4×4인트라 휘도 예측 모드 결정방법 및 장치
JP3756897B2 (ja) 2003-07-30 2006-03-15 株式会社東芝 動画像符号化装置及び動画像符号化方法
US7289562B2 (en) 2003-08-01 2007-10-30 Polycom, Inc. Adaptive filter to improve H-264 video quality
US20050036549A1 (en) 2003-08-12 2005-02-17 Yong He Method and apparatus for selection of scanning mode in dual pass encoding
US7688894B2 (en) 2003-09-07 2010-03-30 Microsoft Corporation Scan patterns for interlaced video content
US7782954B2 (en) 2003-09-07 2010-08-24 Microsoft Corporation Scan patterns for progressive video content
US7379608B2 (en) 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
JP4142563B2 (ja) 2003-12-12 2008-09-03 株式会社エヌ・ティ・ティ・ドコモ 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム
JP4127818B2 (ja) 2003-12-24 2008-07-30 株式会社東芝 動画像符号化方法及びその装置
US7142231B2 (en) 2003-12-29 2006-11-28 Nokia Corporation Method and apparatus for improved handset multi-tasking, including pattern recognition and augmentation of camera images
EP1558039A1 (en) 2004-01-21 2005-07-27 Deutsche Thomson-Brandt Gmbh Method and apparatus for generating/evaluating prediction information in picture signal encoding/decoding
CN100479527C (zh) 2004-02-26 2009-04-15 联合信源数字音视频技术(北京)有限公司 一种帧内预测模式选取方法
JP4542447B2 (ja) 2005-02-18 2010-09-15 株式会社日立製作所 画像の符号化/復号化装置、符号化/復号化プログラム及び符号化/復号化方法
JP5037938B2 (ja) 2004-04-28 2012-10-03 日立コンシューマエレクトロニクス株式会社 画像の符号化/復号化装置、符号化/復号化プログラム及び符号化/復号化方法
US8731054B2 (en) 2004-05-04 2014-05-20 Qualcomm Incorporated Method and apparatus for weighted prediction in predictive frames
US8369402B2 (en) 2004-06-17 2013-02-05 Canon Kabushiki Kaisha Apparatus and method for prediction modes selection based on image formation
US7664184B2 (en) 2004-07-21 2010-02-16 Amimon Ltd. Interpolation image compression
JP2008519484A (ja) 2004-11-04 2008-06-05 トムソン ライセンシング ビデオ・エンコーダにおける高速イントラ・モード予測
JP2006140758A (ja) 2004-11-12 2006-06-01 Toshiba Corp 動画像符号化方法、動画像符号化装置および動画像符号化プログラム
JP4763422B2 (ja) 2004-12-03 2011-08-31 パナソニック株式会社 イントラ予測装置
US8311119B2 (en) 2004-12-31 2012-11-13 Microsoft Corporation Adaptive coefficient scan order
US20060153295A1 (en) 2005-01-12 2006-07-13 Nokia Corporation Method and system for inter-layer prediction mode coding in scalable video coding
US7751478B2 (en) 2005-01-21 2010-07-06 Seiko Epson Corporation Prediction intra-mode selection in an encoder
US7706443B2 (en) 2005-03-11 2010-04-27 General Instrument Corporation Method, article of manufacture, and apparatus for high quality, fast intra coding usable for creating digital video content
JP2006295408A (ja) 2005-04-07 2006-10-26 Matsushita Electric Ind Co Ltd 画像符号化装置及び画像符号化プログラム
EP1711018A1 (en) 2005-04-08 2006-10-11 Thomson Licensing Method and apparatus for encoding video pictures, and method and apparatus for decoding video pictures
US20070014348A1 (en) 2005-04-12 2007-01-18 Nokia Corporation Method and system for motion compensated fine granularity scalable video coding with drift control
EP1768415A1 (en) 2005-09-27 2007-03-28 Matsushita Electric Industrial Co., Ltd. Adaptive scan order of DCT coefficients and its signaling
KR100703200B1 (ko) 2005-06-29 2007-04-06 한국산업기술대학교산학협력단 인트라 부호화 장치 및 방법
KR101088375B1 (ko) 2005-07-21 2011-12-01 삼성전자주식회사 가변 블록 변환 장치 및 방법 및 이를 이용한 영상부호화/복호화 장치 및 방법
US20090123066A1 (en) 2005-07-22 2009-05-14 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method, image decoding method, image encoding program, image decoding program, computer readable recording medium having image encoding program recorded therein,
CN101815224A (zh) 2005-07-22 2010-08-25 三菱电机株式会社 图像编码装置和方法、以及图像解码装置和方法
US7933337B2 (en) 2005-08-12 2011-04-26 Microsoft Corporation Prediction of transform coefficients for image compression
JP2007053561A (ja) 2005-08-17 2007-03-01 Matsushita Electric Ind Co Ltd 画像符号化装置および画像符号化方法
JP4650173B2 (ja) 2005-09-05 2011-03-16 ソニー株式会社 符号化装置、符号化方法、符号化方法のプログラム及び符号化方法のプログラムを記録した記録媒体
US20070070082A1 (en) 2005-09-27 2007-03-29 Ati Technologies, Inc. Sample-level screen-door transparency using programmable transparency sample masks
WO2007046644A1 (en) 2005-10-21 2007-04-26 Electronics And Telecommunications Research Institute Apparatus and method for encoding and decoding moving picture using adaptive scanning
US8200033B2 (en) 2005-11-30 2012-06-12 Koninklijke Philips Electronics N.V. Encoding method and apparatus applying coefficient reordering
US7529484B2 (en) 2005-12-14 2009-05-05 Nec Laboratories America, Inc. Triplexer transceiver using parallel signal detection
CN1801940A (zh) 2005-12-15 2006-07-12 清华大学 整型变换电路和整型变换方法
US7944965B2 (en) 2005-12-19 2011-05-17 Seiko Epson Corporation Transform domain based distortion cost estimation
US8000539B2 (en) 2005-12-21 2011-08-16 Ntt Docomo, Inc. Geometrical image representation and compression
JP2007189276A (ja) 2006-01-11 2007-07-26 Victor Co Of Japan Ltd 画像圧縮装置及び画像圧縮プログラム
KR101246294B1 (ko) 2006-03-03 2013-03-21 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
JP2007267123A (ja) 2006-03-29 2007-10-11 Victor Co Of Japan Ltd 動画像符号化装置
US8036264B2 (en) 2006-05-23 2011-10-11 Lsi Corporation Memory management in video decoding systems
US20080008246A1 (en) 2006-07-05 2008-01-10 Debargha Mukherjee Optimizing video coding
JP2008022405A (ja) 2006-07-14 2008-01-31 Sony Corp 画像処理装置および方法、並びに、プログラム
KR100882949B1 (ko) 2006-08-17 2009-02-10 한국전자통신연구원 화소 유사성에 따라 적응적인 이산 코사인 변환 계수스캐닝을 이용한 부호화/복호화 장치 및 그 방법
RU2407221C1 (ru) 2006-10-10 2010-12-20 Ниппон Телеграф Энд Телефон Корпорейшн Способ и устройство управления кодированием с внутренним предсказанием, программа для них и запоминающий носитель, который хранит программу
JP4908180B2 (ja) 2006-12-20 2012-04-04 株式会社東芝 動画像符号化装置
KR101366086B1 (ko) 2007-01-03 2014-02-21 삼성전자주식회사 잔차 블록의 계수들에 대한 부호화 결정 방법, 장치,인코더 및 디코더
US20100118943A1 (en) 2007-01-09 2010-05-13 Kabushiki Kaisha Toshiba Method and apparatus for encoding and decoding image
JP2008193627A (ja) 2007-01-12 2008-08-21 Mitsubishi Electric Corp 画像符号化装置、画像復号装置、および画像符号化方法、画像復号方法
KR101365570B1 (ko) 2007-01-18 2014-02-21 삼성전자주식회사 인트라 예측 부호화, 복호화 방법 및 장치
EP2123052B1 (en) 2007-01-18 2010-11-24 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Quality scalable video data stream
US8238428B2 (en) 2007-04-17 2012-08-07 Qualcomm Incorporated Pixel-by-pixel weighting for intra-frame coding
US8571104B2 (en) 2007-06-15 2013-10-29 Qualcomm, Incorporated Adaptive coefficient scanning in video coding
US8428133B2 (en) 2007-06-15 2013-04-23 Qualcomm Incorporated Adaptive coding of video block prediction mode
EP3410706B1 (en) 2007-06-29 2021-12-01 Velos Media International Limited Image encoding device and image decoding device
US8437564B2 (en) 2007-08-07 2013-05-07 Ntt Docomo, Inc. Image and video compression using sparse orthonormal transforms
TW200910971A (en) 2007-08-22 2009-03-01 Univ Nat Cheng Kung Direction detection algorithms for H.264 intra prediction
JP5004180B2 (ja) 2007-11-07 2012-08-22 Kddi株式会社 動画像符号化装置および復号装置
WO2009080133A1 (en) 2007-12-21 2009-07-02 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive intra mode selection
EP2081386A1 (en) 2008-01-18 2009-07-22 Panasonic Corporation High precision edge prediction for intracoding
US8024121B2 (en) 2008-01-25 2011-09-20 Smith International, Inc. Data compression method for use in downhole applications
CN101577605B (zh) 2008-05-08 2014-06-18 吴志军 基于滤波器相似度的语音lpc隐藏和提取算法
KR101549823B1 (ko) 2008-09-02 2015-09-04 삼성전자주식회사 적응적 이진화를 이용한 영상 부호화, 복호화 방법 및 장치
KR20100027384A (ko) 2008-09-02 2010-03-11 삼성전자주식회사 예측 모드 결정 방법 및 장치
US20100172409A1 (en) 2009-01-06 2010-07-08 Qualcom Incorporated Low-complexity transforms for data compression and decompression
EP2422520A1 (en) 2009-04-20 2012-02-29 Dolby Laboratories Licensing Corporation Adaptive interpolation filters for multi-layered video delivery
WO2011031332A1 (en) 2009-09-14 2011-03-17 Thomson Licensing Methods and apparatus for efficient video encoding and decoding of intra prediction mode
US20110116539A1 (en) 2009-11-13 2011-05-19 Freescale Semiconductor, Inc. Method and apparatus for video decoding with reduced complexity inverse transform
US20110317757A1 (en) 2010-06-25 2011-12-29 Qualcomm Incorporated Intra prediction mode signaling for finer spatial prediction directions
US9661338B2 (en) 2010-07-09 2017-05-23 Qualcomm Incorporated Coding syntax elements for adaptive scans of transform coefficients for video coding
US8885701B2 (en) 2010-09-08 2014-11-11 Samsung Electronics Co., Ltd. Low complexity transform coding using adaptive DCT/DST for intra-prediction
US9641846B2 (en) 2010-10-22 2017-05-02 Qualcomm Incorporated Adaptive scanning of transform coefficients for video coding
US10992958B2 (en) 2010-12-29 2021-04-27 Qualcomm Incorporated Video coding using mapped transforms and scanning modes
US9807424B2 (en) 2011-01-10 2017-10-31 Qualcomm Incorporated Adaptive selection of region size for identification of samples in a transition zone for overlapped block motion compensation
CN107517384B (zh) 2011-06-16 2020-06-30 Ge视频压缩有限责任公司 解码器、编码器、解码方法、编码方法以及存储介质
US9516316B2 (en) 2011-06-29 2016-12-06 Qualcomm Incorporated VLC coefficient coding for large chroma block
EP2742690B1 (en) * 2011-08-08 2016-07-27 Google Technology Holdings LLC Residual tree structure of transform unit partitioning
MX2014004776A (es) 2011-10-17 2014-07-09 Kt Corp Metodo de transformacion adaptable con base en la prediccion en pantalla y aparato que usa el metodo.
RU2719340C2 (ru) * 2011-10-18 2020-04-17 Кт Корпорейшен Способ декодирования видеосигнала
KR20130049526A (ko) 2011-11-04 2013-05-14 오수미 복원 블록 생성 방법
US9883203B2 (en) 2011-11-18 2018-01-30 Qualcomm Incorporated Adaptive overlapped block motion compensation
US9621894B2 (en) 2012-01-13 2017-04-11 Qualcomm Incorporated Determining contexts for coding transform coefficient data in video coding
US9131210B2 (en) * 2012-03-16 2015-09-08 Texas Instruments Incorporated Low-complexity two-dimensional (2D) separable transform design with transpose buffer management
US9912944B2 (en) * 2012-04-16 2018-03-06 Qualcomm Incorporated Simplified non-square quadtree transforms for video coding
EP2866443A4 (en) 2012-06-22 2016-06-15 Sharp Kk ARITHMETIC DECODING DEVICE, ARITHMETIC CODING DEVICE, IMAGE DECODING DEVICE AND IMAGE DEVICES
US20140044162A1 (en) * 2012-08-08 2014-02-13 Qualcomm Incorporated Adaptive inference mode information derivation in scalable video coding
US9319684B2 (en) 2012-08-21 2016-04-19 Qualcomm Incorporated Alternative transform in scalable video coding
US20140307780A1 (en) 2013-04-11 2014-10-16 Mitsubishi Electric Research Laboratories, Inc. Method for Video Coding Using Blocks Partitioned According to Edge Orientations
CN103402097B (zh) 2013-08-15 2016-08-10 清华大学深圳研究生院 一种自由视点视频深度图编码方法及其失真预测方法
US9445132B2 (en) 2013-09-09 2016-09-13 Qualcomm Incorporated Two level last significant coefficient (LSC) position coding
US10278767B2 (en) 2014-03-27 2019-05-07 Endomedical Concepts, Inc. Vaporization electrodes and electrosurgical devices equipped therewith
US10306229B2 (en) 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
US10230980B2 (en) 2015-01-26 2019-03-12 Qualcomm Incorporated Overlapped motion compensation for video coding
US20180167618A1 (en) * 2015-06-04 2018-06-14 Lg Electronics Inc. Method and device for processing video signal by using graph-based transform
EP3654646A1 (en) * 2015-06-05 2020-05-20 Intellectual Discovery Co., Ltd. Methods for encoding and decoding intra-frame prediction based on block shape
WO2016203981A1 (ja) * 2015-06-16 2016-12-22 シャープ株式会社 画像復号装置及び画像符号化装置
US10123044B2 (en) * 2015-07-16 2018-11-06 Mediatek Inc. Partial decoding circuit of video encoder/decoder for dealing with inverse second transform and partial encoding circuit of video encoder for dealing with second transform
CN106658019B (zh) * 2015-10-31 2019-11-12 华为技术有限公司 参考帧编解码的方法与装置
US20170155905A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Efficient intra video/image coding using wavelets and variable size transform coding
AU2015417837B2 (en) 2015-12-23 2019-07-18 Huawei Technologies Co., Ltd. Method and apparatus for transform coding with block-level transform selection and implicit signaling within hierarchical partitioning
US10212444B2 (en) * 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
CN107566848B (zh) * 2016-06-30 2020-04-14 华为技术有限公司 编解码的方法及装置
KR20180007680A (ko) * 2016-07-13 2018-01-23 한국전자통신연구원 영상 부호화/복호화 방법 및 장치
US10972733B2 (en) 2016-07-15 2021-04-06 Qualcomm Incorporated Look-up table for enhanced multiple transform
US10368107B2 (en) 2016-08-15 2019-07-30 Qualcomm Incorporated Intra video coding using a decoupled tree structure
WO2018045332A1 (en) * 2016-09-02 2018-03-08 Vid Scale, Inc. Methods and apparatus for coded block flag coding in quad-tree plus binary-tree block partitioning
WO2018054506A1 (en) 2016-09-23 2018-03-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Transform block coding
CN107888928B (zh) * 2016-09-30 2020-02-14 华为技术有限公司 运动补偿预测方法和设备
US10880564B2 (en) 2016-10-01 2020-12-29 Qualcomm Incorporated Transform selection for video coding
US11095893B2 (en) 2016-10-12 2021-08-17 Qualcomm Incorporated Primary transform and secondary transform in video coding
CN107959855B (zh) * 2016-10-16 2020-02-14 华为技术有限公司 运动补偿预测方法和设备
FR3058019A1 (fr) * 2016-10-21 2018-04-27 Orange Procede de codage et de decodage de parametres d'image, dispositif de codage et de decodage de parametres d'image et programmes d'ordinateur correspondants
CN108271023B (zh) * 2017-01-04 2021-11-19 华为技术有限公司 图像预测方法和相关设备
KR102559063B1 (ko) * 2017-02-24 2023-07-24 주식회사 케이티 비디오 신호 처리 방법 및 장치
US10904568B2 (en) * 2017-03-09 2021-01-26 Kt Corporation Video signal processing method and device for intra prediction of coding or prediction blocks based on sample position based parameters
US10523966B2 (en) 2017-03-31 2019-12-31 Mediatek Inc. Coding transform blocks
US20180288439A1 (en) 2017-03-31 2018-10-04 Mediatek Inc. Multiple Transform Prediction
WO2018212577A1 (ko) * 2017-05-17 2018-11-22 주식회사 케이티 비디오 신호 처리 방법 및 장치
WO2019076138A1 (en) 2017-10-16 2019-04-25 Huawei Technologies Co., Ltd. METHOD AND APPARATUS FOR ENCODING
US11297348B2 (en) * 2018-04-13 2022-04-05 Mediatek Inc. Implicit transform settings for coding a block of pixels
US10986340B2 (en) 2018-06-01 2021-04-20 Qualcomm Incorporated Coding adaptive multiple transform information for video coding
US11259052B2 (en) 2018-07-16 2022-02-22 Qualcomm Incorporated Transform variations of multiple separable transform selection
US10893286B2 (en) * 2018-10-09 2021-01-12 Tencent America LLC Methods and apparatus for low-complexity MTS
SG11202107974YA (en) * 2019-01-28 2021-08-30 Op Solutions Llc Shape adaptive discrete cosine transform for geometric partitioning with an adaptive number of regions

Also Published As

Publication number Publication date
SG11202105070SA (en) 2021-07-29
AR117456A1 (es) 2021-08-04
KR20210103481A (ko) 2021-08-23
IL283175A (en) 2021-06-30
MX2021007190A (es) 2021-07-21
AU2019402886A1 (en) 2021-06-10
US20200204833A1 (en) 2020-06-25
CA3120045A1 (en) 2020-06-25
JP2022517908A (ja) 2022-03-11
JP7455840B2 (ja) 2024-03-26
PH12021551118A1 (en) 2021-12-13
CN113170129A (zh) 2021-07-23
EP3900337A1 (en) 2021-10-27
US11323748B2 (en) 2022-05-03
CL2021001576A1 (es) 2022-01-07
WO2020131949A1 (en) 2020-06-25
TW202038617A (zh) 2020-10-16
CO2021007864A2 (es) 2021-06-21

Similar Documents

Publication Publication Date Title
CN112204969B (zh) 用于视频编解码的编解码自适应多重变换信息
US10390048B2 (en) Efficient transform coding using optimized compact multi-pass transforms
EP3949399A1 (en) Extended multiple transform selection for video coding
BR112021002967A2 (pt) predição de movimento afim
BR112016021151B1 (pt) Transformada inversa de espaço-cor tanto para vídeo codificado com perdas como sem perdas
BR112020026713A2 (pt) Modo de combinação dependente de suavização intra (mdis) com comutação de filtro de interpolação intra
US11595663B2 (en) Secondary transform designs for partitioned transform units in video coding
BR112021010946A2 (pt) Partição de unidade de transformada (tu) com base em árvore para codificação de vídeo
CA3131886A1 (en) Implicit transform selection in video coding
BR112021006798A2 (pt) suavização e interpolação de intrapredição de ângulo amplo
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
BR112021014879A2 (pt) Modo de inter-intraprevisão para dados de vídeo
BR112021000640A2 (pt) Arredondamento de vetores de movimento para resolução de diferença de vetor de movimento adaptativa e precisão de armazenamento de vetor de movimento aumentada em codificação de vídeo
RU2809181C2 (ru) Сегментация единиц преобразования (tu) на основе дерева для кодирования видео
RU2807684C2 (ru) Неявный выбор преобразования при кодировании видео
KR20220083709A (ko) 비디오 코딩을 위한 파라메트릭 그래프-기반 분리형 변환
BR112016021144B1 (pt) Método e dispositivo de codificação e decodificação de dados de vídeo, e memória legível por computador