BR112021003783A2 - método, aparelho e sistema para codificar e decodificar uma árvore de blocos de amostras de vídeo - Google Patents

método, aparelho e sistema para codificar e decodificar uma árvore de blocos de amostras de vídeo Download PDF

Info

Publication number
BR112021003783A2
BR112021003783A2 BR112021003783-7A BR112021003783A BR112021003783A2 BR 112021003783 A2 BR112021003783 A2 BR 112021003783A2 BR 112021003783 A BR112021003783 A BR 112021003783A BR 112021003783 A2 BR112021003783 A2 BR 112021003783A2
Authority
BR
Brazil
Prior art keywords
chroma
luma
options
samples
encoding
Prior art date
Application number
BR112021003783-7A
Other languages
English (en)
Inventor
Christopher James Rosewarne
Original Assignee
Canon Kabushiki Kaisha
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 Canon Kabushiki Kaisha filed Critical Canon Kabushiki Kaisha
Publication of BR112021003783A2 publication Critical patent/BR112021003783A2/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/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/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/117Filters, e.g. for pre-processing or post-processing
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/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/186Methods 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 a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Color Television Systems (AREA)

Abstract

MÉTODO, APARELHO E SISTEMA PARA CODIFICAR E DECODIFICAR UMA ÁRVORE DE BLOCOS DE AMOSTRAS DE VÍDEO. A presente invenção refere-se a um sistema e um método de decodificar blocos de codificação de uma unidade de árvore de codificação em um quadro de imagem, a partir de um fluxo de bits. O método compreende receber o quadro de imagem, o quadro de imagem tendo um formato de croma em que os canais croma do quadro de imagem são subamostrados em relação a um canal luma do quadro de imagem; e determinar as opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação. O método também compreende determinar as opções de divisão em croma para os canais croma da unidade de árvore de codificação de acordo com as dimensões da região, as opções de divisão em croma sendo diferentes das opções de divisão em luma, as opções de divisão em croma permitidas resul-tando em blocos de croma intra-preditos com um tamanho mínimo de 16 amostras; e decodificar os blocos de codificação da unidade de árvore de codificação determinando sinalizadores a partir do fluxo de bits para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma determinadas.

Description

“MÉTODO, APARELHO E SISTEMA PARA CODIFICAR E DECODIFICAR UMA ÁRVORE DE BLOCOS DE AMOSTRAS DE VÍDEO” Referência a Pedido(s) Relacionado(s)
[0001] Este pedido reivindica o benefício sob 35 U.S.C. §119 da data de depósito do pedido de patente australiana No. 2018233042, depositado em 21 de setembro de 2018, incorporado aqui por referência em sua totalidade como se fosse totalmen- te apresentado neste documento.
CAMPO DA INVENÇÃO
[0002] A presente invenção refere-se geralmente ao processamento de sinal de vídeo digital e, em particular, a um método, aparelho e sistema para codificar e de- codificar uma árvore de blocos de amostras de vídeo. A presente invenção também se refere a um produto de programa de computador, incluindo um meio legível por computador, tendo nele gravado um programa de computador para codificar e deco- dificar uma árvore de blocos de amostras de vídeo.
FUNDAMENTOS DA INVENÇÃO
[0003] Muitos aplicativos para codificação de vídeo existem atualmente, incluindo aplicativos para transmissão e armazenamento de dados de vídeo. Muitos padrões de codificação de vídeo também foram desenvolvidos e outros estão atualmente em desenvolvimento. Desenvolvimentos recentes na padronização de codificação de vídeo levaram à formação de um grupo denominado “Equipe Conjunta de Especialis- tas em Vídeo” (JVET). A Equipe Conjunta de Especialistas em Vídeo (JVET) inclui membros do Grupo de Estudo 16, Pergunta 6 (SG16 / Q6) do Setor de Padronização de Telecomunicações (ITU-T) da União Internacional de Telecomunicações (ITU), também conhecido como “Grupo de Especialistas em Codificação de Vídeo “(VCEG), e membros das Organizações Internacionais para Padronização / Comitê Técnico Conjunto 1 da Comissão Eletrotécnica Internacional / Subcomitê 29 / Grupo de Trabalho 11 (ISO / IEC JTC1 / SC29 / WG11), também conhecido como “Grupo de Especialistas em Imagens em Movimento” ( MPEG).
[0004] A Equipe Conjunta de Especialistas em Vídeo (JVET) lançou uma Cha- mada de Propostas (CfP), com respostas analisadas em sua 10ª reunião em San
Diego, EUA. As respostas enviadas demonstraram capacidade de compressão de vídeo superando significativamente o atual padrão de compressão de vídeo de últi- ma geração, ou seja: “codificação de vídeo de alta eficiência” (HEVC). Com base neste desempenho superior, foi decidido iniciar um projeto para desenvolver um no- vo padrão de compressão de vídeo, a ser denominado “codificação de vídeo versátil” (VVC). Prevê-se que o VVC atenda à demanda contínua por desempenho de com- pressão cada vez mais alto, especialmente à medida que os formatos de vídeo au- mentam em capacidade (por exemplo, com resolução mais alta e taxa de quadros mais alta) e atenda à demanda crescente do mercado por entrega de serviço em WANs, onde os custos de largura de banda são relativamente altos. Ao mesmo tem- po, o VVC deve ser implementável em processos contemporâneos de silício e ofere- cer uma compensação aceitável entre o desempenho obtido e o custo de implemen- tação (por exemplo, em termos de área de silício, carga do processador CPU, utili- zação de memória e largura de banda).
[0005] Os dados de vídeo incluem uma sequência de quadros de dados de ima- gem, cada um dos quais inclui um ou mais canais de cor. Geralmente, um canal de cor primária e dois canais de cor secundária são necessários. O canal de cor primá- ria é geralmente descrito como o canal ‘luma’ e o(s) canal(ais) de cor secundária são geralmente descritos como canais ‘croma’. Embora os dados de vídeo sejam tipica- mente exibidos em um espaço de cor RGB (vermelho-verde-azul), esse espaço de cor tem um alto grau de correlação entre as três respectivas componentes. A repre- sentação de dados de vídeo vista por um codificador ou decodificador geralmente usa um espaço de cor tal como YCbCr. YCbCr concentra a luminância, mapeada para ‘luma’ de acordo com uma função de transferência, em um canal Y (primário) e croma nos canais Cb e Cr (secundários). Além disso, os canais Cb e Cr podem ser amostrados espacialmente a uma taxa mais baixa em comparação com o canal lu- ma, por exemplo, metade horizontalmente e metade verticalmente – conhecido co- mo um ‘formato de croma 4:2:0’. O formato de croma 4:2:0 é comumente usado em aplicativos de “consumidor”, tal como streaming de vídeo na Internet, transmissão de televisão e armazenamento em discos Blu-RayTM. A subamostragem dos canais Cb e Cr na metade da taxa horizontalmente e não subamostragem verticalmente é co- nhecida como um ‘formato de croma 4:2:2’. O formato de croma 4:2:2 é tipicamente usado em aplicativos profissionais, incluindo captura de material para produção ci- nematográfica e similares. A maior taxa de amostragem do formato de croma 4:2:2 torna o vídeo resultante mais resistente às operações de edição, tal como gradação de cor. Antes da distribuição aos consumidores, o material em formato de croma 4:2:2 é frequentemente convertido para o formato de croma 4:2:0 e então codificado antes da distribuição aos consumidores. Além do formato de croma, o vídeo também é caracterizado pela resolução e taxa de quadros. Resoluções exemplificativas são definiçõesão ultra-alta (UHD) com uma resolução de 3840 x 2160 ou ‘8K’ com uma resolução de 7680 x 4320, e as taxas de quadros exemplificativas são 60 ou 120 Hz. As taxas de amostragem de luma podem variar de amostras de aproximadamente 500 mega por segundo a amostras de vários gigas por segundo. Para o formato de croma 4:2:0, a taxa de amostragem de cada canal croma é um quarto da taxa de amostragem de luma, e para o formato de croma 4:2:2, a taxa de amostragem de cada canal croma é a metade da taxa de amostragem de luma.
[0006] O padrão VVC é um codec “baseado em bloco”, no qual os quadros são divididos em primeiro lugar em uma matriz quadrada de regiões conhecidas como “unidades de árvore de codificação” (CTUs). As CTUs geralmente ocupam uma área relativamente grande, tal como 128 × 128 amostras de luma. No entanto, as CTUs nas bordas direita e inferior de cada quadro podem ter áreas menores. Associada a cada CTU está uma ‘ árvore de codificação’ para o canal luma e uma árvo- re de codificação adicional para os canais croma. Uma árvore de codificação define uma decomposição da área da CTU em um conjunto de blocos, também conhecidos como ‘blocos de codificação’ (CBs). Também é possível que uma única árvore de codificação especifique blocos tanto para o canal luma quanto para os canais croma, caso em que os blocos são descritos como ‘unidades de codificação’ (CUs), cada CU tendo um bloco de codificação para cada canal de cor. Os CBs são processados para codificação ou decodificação em uma ordem particular. Como uma consequên- cia do uso do formato de croma 4:2:0, uma CTU com uma árvore de codificação de luma para uma área de 128 × 128 amostras de luma tem uma árvore de codificação de croma correspondente para uma área de 64 × 64 amostras de croma, colocada com a área de 128 × 128 amostras de luma. Quando uma única árvore de codifica- ção está em uso para o canal luma e os canais croma, as coleções de blocos colo- cados para uma determinada área são geralmente descritas como ‘unidades’, por exemplo, as CUs mencionadas acima, bem como ‘unidades de predição’ (PUs) e ‘unidades de transformada’ (TUs). Quando árvores de codificação separadas são usadas para uma determinada área, os CBs mencionados acima, bem como ‘blocos de predição’ (PBs) e ‘blocos de transformada’ (TBs) são usados.
[0007] Não obstante a distinção acima entre ‘unidades’ e ‘blocos’, o termo ‘bloco’ pode ser usado como um termo geral para áreas ou regiões de um quadro às quais as operações são aplicadas a todos os canais de cor.
[0008] Para cada CU, uma predição (PU) do conteúdo (valores de amostra) da área correspondente de dados de quadro é gerada (uma ‘unidade de predição’). Além disso, é formada uma representação da diferença (ou ‘residual’ no domínio espacial) entre a predição e o conteúdo da área como visto na entrada para o codifi- cador. A diferença em cada canal de cor pode ser transformada e codificada como uma sequência de coeficientes residuais, formando uma ou mais TUs para uma de- terminada CU. A transformada aplicada pode ser uma Transformada Discreta de Cosseno (DCT) ou outra transformada, aplicada a cada bloco de valores residuais. Esta transformada primária é aplicada separadamente, ou seja, a transformada bi- dimensional é realizada em duas passagens. O bloco é primeiramente transformado aplicando uma transformada unidimensional a cada linha de amostras no bloco. Em seguida, o resultado parcial é transformado aplicando uma transformada unidimen- sional a cada coluna do resultado parcial para produzir um bloco final de coeficientes de transformada que decorre substancialmente as amostras residuais. Transforma- das de vários tamanhos são suportadas pelo padrão VVC, incluindo transformadas de blocos retangulares, com cada dimensão lateral sendo uma potência de dois. Os coeficientes de transformada são quantizados para codificação de entropia em um fluxo de bits.
[0009] Quando a predição espacial (‘predição intra’) é usada para gerar PBs, um conjunto de amostras de referência é usado para gerar amostras preditas para o PB atual. As amostras de referência incluem amostras adjacentes ao PB que já foram ‘reconstruídas’ (a adição de amostras residuais a amostras de predição intra). Essas amostras adjacentes formam uma linha acima do PB e uma coluna à esquerda do PB. A linha e a coluna também se estendem além do limite do PB para incluir amos- tras próximas adicionais. Devido aos blocos de varredura em uma varredura de or- dem Z, algumas das amostras de referência terão sido reconstruídas no bloco ime- diatamente precedente. O uso de amostras do bloco imediatamente precedente re- sulta em uma dependência de retorno que pode limitar a taxa de transferência de blocos através de um codificador ou decodificador de vídeo.
SUMÁRIO DA INVENÇÃO
[0010] É um objetivo da presente invenção superar substancialmente, ou pelo menos melhorar, uma ou mais desvantagens dos arranjos existentes.
[0011] Um aspecto da presente descrição fornece um método de decodificação de blocos de codificação de uma unidade de árvore de codificação em um quadro de imagem, a partir de um fluxo de bits, o método compreendendo: receber o quadro de imagem, o quadro de imagem tendo um formato de croma em que os canais croma do quadro de imagem são subamostrados em relação a um canal luma do quadro de imagem; determinar opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; determinar as opções de divisão em croma para os canais croma da unidade de árvore de codificação de acordo com as dimensões da região, as opções de divisão em croma sendo diferentes das opções de divisão em luma, as opções de divisão em croma permitidas resultando em blocos de predição intra de croma com um tamanho mínimo de 16 amostras; e decodificar os blocos de codifica- ção da unidade de árvore de codificação determinando sinalizadores a partir do fluxo de bits para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma determinadas.
[0012] De acordo com outro aspecto, o tamanho do bloco de croma é um múlti-
plo de 16 amostras para canais croma do quadro de imagem.
[0013] De acordo com outro aspecto, as opções de divisão em luma determina- das resultam em um tamanho de bloco de luma que é um múltiplo de 16 amostras para um canal luma do quadro de imagem.
[0014] De acordo com outro aspecto, os blocos de croma com uma largura de duas amostras são codificados usando uma divisão do bloco em sub-blocos, cada sub-bloco de tamanho 2 por 8 amostras.
[0015] De acordo com outro aspecto, os blocos de croma tendo uma altura de duas amostras são codificados usando uma divisão do bloco em sub-blocos, cada sub-bloco de tamanho 8 por 2 amostras.
[0016] Outro aspecto da presente descrição fornece um meio legível por compu- tador não transitório tendo um programa de computador nele armazenado para im- plementar um método de decodificação de blocos de codificação de uma unidade de árvore de codificação em um quadro de imagem, a partir de um fluxo de bits, o pro- grama compreendendo: código para receber o quadro de imagem, o quadro de ima- gem tendo um formato de croma em que os canais croma do quadro de imagem são subamostrados em relação a um canal luma do quadro de imagem; código para de- terminar as opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; código para determinar as opções de divisão em croma para os canais croma da unidade de árvore de codificação de acordo com as dimensões da região, as opções de divisão em croma sendo diferentes das opções de divisão em luma, as opções de divisão em croma permitidas resultando em blocos de croma intra- preditos com um tamanho mínimo de 16 amostras; e código para decodificar os blo- cos de codificação da unidade de árvore de codificação determinando sinalizadores a partir do fluxo de bits para selecionar uma das opções de divisão em luma deter- minadas e uma das opções de divisão em croma determinadas.
[0017] Outro aspecto da presente descrição fornece um decodificador de vídeo, configurado para: receber uma unidade de árvore de codificação de um quadro de imagem a partir de um fluxo de bits, o quadro de imagem tendo um formato de cro-
ma em que os canais croma do quadro de imagem são subamostrados em relação a um canal luma do quadro de imagem; determinar opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; determinar as opções de divisão em croma para os canais croma da unidade de árvore de codificação de acordo com as dimensões da região, as opções de divisão em croma sendo diferentes das op- ções de divisão em luma, as opções de divisão em croma permitidas resultando em blocos de croma intra-preditos com um tamanho mínimo de 16 amostras; e decodifi- car blocos de codificação da unidade de árvore de codificação determinando sinali- zadores a partir do fluxo de bits para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma determinadas.
[0018] Outro aspecto da presente descrição fornece um sistema, compreenden- do: uma memória; e um processador, em que o processador é configurado para executar código armazenado na memória para implementar um método de decodifi- cação de blocos de codificação de uma unidade de árvore de codificação em um quadro de imagem, a partir de um fluxo de bits, o método compreendendo: receber o quadro de imagem, o quadro de imagem tendo um formato de croma em que os ca- nais croma do quadro de imagem são subamostrados em relação a um canal luma do quadro de imagem; determinar as opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; determinar as opções de divisão em croma para os canais croma da unidade de árvore de codificação de acordo com as dimensões da região, as opções de divisão em croma sendo diferentes para as opções de divi- são em luma, as opções de divisão em croma permitidas resultando em blocos de croma com um tamanho mínimo de 16 amostras; e decodificar os blocos de codifica- ção da unidade de árvore de codificação determinando sinalizadores a partir do fluxo de bits para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma permitidas determinadas.
[0019] Outros aspectos também são descritos.
BREVE DESCRIÇÃO DOS DESENHOS
[0020] Pelo menos uma modalidade da presente invenção será agora descrita com referência aos seguintes desenhos e apêndices, nos quais:
[0021] A Figura 1 é um diagrama de blocos esquemático que mostra um sistema de codificação e decodificação de vídeo.
[0022] As Figuras 2A e 2B formam um diagrama de blocos esquemático de um sistema de computador de propósito geral no qual um ou ambos os sistemas de co- dificação e decodificação de vídeo da Figura 1 podem ser praticados.
[0023] A Figura 3 é um diagrama de blocos esquemático que mostra módulos funcionais de um codificador de vídeo.
[0024] A Figura 4 é um diagrama de blocos esquemático que mostra módulos funcionais de um decodificador de vídeo.
[0025] A Figura 5 é um diagrama de blocos esquemático que mostra as divisões disponíveis de um bloco em um ou mais blocos na estrutura de árvore de codifica- ção de vídeo versátil.
[0026] A Figura 6 é uma ilustração esquemática de um fluxo de dados para atin- gir as divisões permitidas de um bloco em um ou mais blocos em uma estrutura de árvore de codificação de vídeo versátil.
[0027] As Figuras 7A e 7B mostram uma divisão exemplificativa de uma unidade de árvore de codificação (CTU) em uma série de unidades de codificação.
[0028] A Figura 8 é um diagrama que mostra uma coleção de tamanhos de blo- cos de transformada e padrões de varredura associados.
[0029] A Figura 9 é um diagrama que mostra regras para gerar listas de divisões permitidas em uma árvore de codificação de luma e uma árvore de codificação de croma.
[0030] A Figura 10 é um fluxograma de um método para codificar uma árvore de codificação de um quadro de imagem em um fluxo de bits de vídeo.
[0031] A Figura 11 é um fluxograma de um método para decodificar uma árvore de codificação de um quadro de imagem a partir de um fluxo de bits de vídeo.
[0032] A Figura 12 é um fluxograma de um método para codificar árvores de co- dificação de luma e de croma de um quadro de imagem em um fluxo de bits de ví-
deo.
[0033] A Figura 13 é um fluxograma de um método para decodificar árvores de codificação de luma e de croma de um quadro de imagem a partir de um fluxo de bits de vídeo.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0034] Quando referência é feita em quaisquer um ou mais dos desenhos em anexo às etapas e / ou recursos, que têm os mesmos números de referência, essas etapas e / ou recursos têm para os fins desta descrição a(s) mesma(s) função(ões) ou operação(ões), a menos que a intenção contrária apareça.
[0035] Conforme descrito acima, o uso de amostras a partir do bloco imediata- mente precedente resulta em uma dependência de retorno que pode limitar a taxa de transferência de blocos através de um codificador ou decodificador de vídeo. Mé- todos para aliviar a gravidade do laço de dependência de retorno resultante são de- sejáveis para garantir que uma alta taxa de blocos de processamento possa ser mantida, conforme necessário para aplicativos típicos de codificação e decodificação em tempo real. O laço de dependência de retorno é particularmente problemático para as altas taxas de amostragem de formatos de vídeo contemporâneos, por exemplo, de 500 a 4000 amostras por segundo, enquanto as frequências de relógio de ASIC (circuitos integrados de aplicação específica) são tipicamente da ordem de centenas de MHz.
[0036] A Figura 1 é um diagrama de blocos esquemático que mostra módulos funcionais de um sistema de codificação e decodificação de vídeo 100. O sistema 100 pode utilizar regras diferentes para subdivisões permitidas de regiões nas árvo- res de codificação de luma e de croma para reduzir a taxa de processamento de bloco de pior caso encontrada. Por exemplo, o sistema 100 pode operar de modo que os blocos sejam sempre dimensionados como um múltiplo de 16 (dezesseis) amostras, independentemente da razão de aspecto do bloco. A codificação do coefi- ciente residual também pode explorar o múltiplo do tamanho do bloco de 16, inclusi- ve no caso de blocos com largura ou altura de duas amostras.
[0037] O sistema 100 inclui um dispositivo de origem 110 e um dispositivo de destino 130. Um canal de comunicação 120 é usado para comunicar informações de vídeo codificadas a partir do dispositivo de origem 110 para o dispositivo de destino
130. Em alguns arranjos, o dispositivo de origem 110 e o dispositivo de destino 130 podem compreender um ou ambos os respectivos aparelhos de telefone celular ou “smartphones”, caso no qual o canal de comunicação 120 é um canal sem fio. Em outros arranjos, o dispositivo de origem 110 e o dispositivo de destino 130 podem compreender equipamento de videoconferência, caso no qual o canal de comunica- ção 120 é tipicamente um canal com fio, tal como uma conexão de internet. Além disso, o dispositivo de origem 110 e o dispositivo de destino 130 podem compreen- der qualquer um de uma ampla gama de dispositivos, incluindo dispositivos que su- portam transmissões de televisão pelo ar, aplicativos de televisão a cabo, aplicativos de vídeo pela Internet (incluindo streaming) e aplicativos onde os dados de vídeo codificados são capturados em algum meio de armazenamento legível por computa- dor, tal como unidades de disco rígido em um servidor de arquivos.
[0038] Como mostrado na Figura 1, o dispositivo de origem 110 inclui uma fonte de vídeo 112, um codificador de vídeo 114 e um transmissor 116. A fonte de vídeo 112 compreende tipicamente uma fonte de dados de quadro de vídeo capturados (mostrado como 113), tal como um sensor de captura de imagem, uma sequência de vídeo capturada anteriormente armazenada em um suporte de gravação não transi- tório, ou um feed de vídeo a partir de um sensor de captura de imagem remoto. A fonte de vídeo 112 também pode ser uma saída de uma placa gráfica de computa- dor, por exemplo, exibindo a saída de vídeo de um sistema operacional e vários aplicativos em execução em um dispositivo de computação, por exemplo, um com- putador tablet. Exemplos de dispositivos de origem 110 que podem incluir um sensor de captura de imagem como a fonte de vídeo 112 incluem smartphones, filmadoras de vídeo, câmeras de vídeo profissionais e câmeras de vídeo em rede.
[0039] O codificador de vídeo 114 converte (ou ‘codifica’) os dados de quadro capturados (indicados por uma seta 113) a partir da fonte de vídeo 112 em um fluxo de bits (indicado por uma seta 115), conforme descrito posteriormente com referên- cia à Figura 3. O fluxo de bits 115 é transmitido pelo transmissor 116 através do ca-
nal de comunicação 120 como dados de vídeo codificados (ou “informações de ví- deo codificadas”). Também é possível que o fluxo de bits 115 seja armazenado em um dispositivo de armazenamento não transitório 122, tal como uma memória “Flash” ou uma unidade de disco rígido, até que seja transmitido posteriormente pelo canal de comunicação 120, ou no lugar da transmissão pelo canal de comunicação
120.
[0040] O dispositivo de destino 130 inclui um receptor 132, um decodificador de vídeo 134 e um dispositivo de exibição 136. O receptor 132 recebe dados de vídeo codificados a partir do canal de comunicação 120 e passa os dados de vídeo recebi- dos para o decodificador de vídeo 134 como um fluxo de bits (indicado por uma seta 133). O decodificador de vídeo 134 então emite os dados de quadro decodificados (indicados por uma seta 135) para o dispositivo de exibição 136. Os dados de qua- dro decodificados 135 têm o mesmo formato de croma que os dados de quadro 113. Exemplos do dispositivo de exibição 136 incluem um tubo de raios catódicos, uma tela de cristal líquido, tal como em smartphones, tablets, monitores de computador ou em aparelhos de televisão independentes. Também é possível que a funcionali- dade de cada um do dispositivo de origem 110 e do dispositivo de destino 130 seja incorporada em um único dispositivo, exemplos dos quais incluem aparelhos de tele- fone e tablets.
[0041] Não obstante os dispositivos exemplificados mencionados acima, cada um do dispositivo de origem 110 e do dispositivo de destino 130 pode ser configura- do dentro de um sistema de computação de propósito geral, tipicamente através de uma combinação de componentes de hardware e software. A Figura 2A ilustra tal sistema de computador 200, que inclui: um módulo de computador 201; dispositivos de entrada tal como um teclado 202, um dispositivo apontador mouse 203, um digi- talizador 226, uma câmera 227, que pode ser configurada como a fonte de vídeo 112, e um microfone 280; e dispositivos de saída incluindo uma impressora 215, um dispositivo de exibição 214, que pode ser configurado como o dispositivo de exibição 136, e alto-falantes 217. Um dispositivo transceptor Modulador-Demodulador (Mo- dem) externo 216 pode ser usado pelo módulo de computador 201 para se comuni-
car com e a partir de uma rede de comunicações 220 via uma conexão 221. A rede de comunicações 220, que pode representar o canal de comunicação 120, pode ser uma rede de área ampla (WAN), tal como a Internet, uma rede de telecomunicações celular, ou uma WAN privada. Quando a conexão 221 é uma linha telefônica, o mo- dem 216 pode ser um modem tradicional “de conexão discada”. Alternativamente, quando a conexão 221 é uma conexão de alta capacidade (por exemplo, cabo ou óptica), o modem 216 pode ser um modem de banda larga. Um modem sem fio também pode ser usado para conexão sem fio à rede de comunicações 220. O dis- positivo transceptor 216 pode fornecer a funcionalidade do transmissor 116 e do re- ceptor 132 e o canal de comunicação 120 pode ser incorporado na conexão 221.
[0042] O módulo de computador 201 inclui tipicamente pelo menos uma unidade de processador 205 e uma unidade de memória 206. Por exemplo, a unidade de memória 206 pode ter memória de acesso aleatório semicondutora (RAM) e memó- ria somente de leitura semicondutora (ROM). O módulo de computador 201 também inclui uma série de interfaces de entrada / saída (I / O) incluindo: uma interface de áudio - vídeo 207 que se acopla à tela de vídeo 214, alto-falantes 217 e microfone 280; uma interface I / O 213 que se acopla ao teclado 202, mouse 203, digitalizador 226, câmera 227 e, opcionalmente, um comando de jogos ou outro dispositivo de interface humana (não ilustrado); e uma interface 208 para o modem externo 216 e impressora 215. O sinal a partir da interface de áudio - vídeo 207 para o monitor de computador 214 é geralmente a saída de uma placa gráfica de computador. Em al- gumas implementações, o modem 216 pode ser incorporado dentro do módulo de computador 201, por exemplo, dentro da interface 208. O módulo de computador 201 também tem uma interface de rede local 211, que permite o acoplamento do sistema de computador 200 via uma conexão 223 a uma rede de comunicações de área local 222, conhecida como Rede de Área Local (LAN). Conforme ilustrado na Figura 2A, a rede de comunicações local 222 também pode acoplar à rede ampla 220 por meio de uma conexão 224, que tipicamente incluiria um dispositivo denomi- nado “firewall” ou dispositivo de funcionalidade similar. A interface de rede local 211 pode compreender uma placa de circuito EthernetTM, um arranjo sem fio BluetoothTM ou um arranjo sem fio IEEE 802.11; no entanto, vários outros tipos de interfaces po- dem ser praticados para a interface 211. A interface de rede local 211 também pode fornecer a funcionalidade do transmissor 116 e do receptor 132 e o canal de comu- nicação 120 também pode ser incorporado na rede de comunicações local 222.
[0043] As interfaces I / O 208 e 213 podem permitir uma ou ambas de conectivi- dade serial e paralela, a primeira sendo tipicamente implementada de acordo com os padrões de Barramento Serial Universal (USB) e tendo conectores USB correspon- dentes (não ilustrados). Os dispositivos de armazenamento 209 são fornecidos e tipicamente incluem uma unidade de disco rígido (HDD) 210. Outros dispositivos de armazenamento, tal como uma unidade de disquete e uma unidade de fita magnéti- ca (não ilustrada), também podem ser usados. Uma unidade de disco óptico 212 é tipicamente fornecida para atuar como uma fonte de dados não volátil. Dispositivos de memória portáteis, tal como discos ópticos (por exemplo, CD-ROM, DVD, Disco Blu rayTM), USB-RAM, portáteis, discos rígidos externos e disquetes, por exemplo, podem ser usados como fontes apropriadas de dados para o sistema de computador
200. Tipicamente, qualquer um do HDD 210, unidade óptica 212, redes 220 e 222 também pode ser configurado para operar como a fonte de vídeo 112, ou como um destino para dados de vídeo decodificados a serem armazenados para reprodução via a tela 214. O dispositivo de origem 110 e o dispositivo de destino 130 do sistema 100 podem ser incorporados no sistema de computador 200.
[0044] Os componentes 205 a 213 do módulo de computador 201 tipicamente se comunicam por meio de um barramento interconectado 204 e de uma maneira que resulta em um modo de operação convencional do sistema de computador 200 co- nhecido por aqueles versados na técnica relevante. Por exemplo, o processador 205 é acoplado ao barramento do sistema 204 usando uma conexão 218. Da mesma forma, a memória 206 e a unidade de disco óptico 212 são acopladas ao barramento do sistema 204 por conexões 219. Exemplos de computadores nos quais os arranjos descritos podem ser praticados incluem IBM-PC’s e compatíveis, Sun SPARCsta- tions, Apple MacTM ou sistemas de computador similares.
[0045] Quando apropriado ou desejado, o codificador de vídeo 114 e o decodifi-
cador de vídeo 134, bem como os métodos descritos abaixo, podem ser implemen- tados usando o sistema de computador 200. Em particular, o codificador de vídeo 114, o decodificador de vídeo 134 e métodos a serem descritos, podem ser imple- mentados como um ou mais programas de aplicativo de software 233 executáveis dentro do sistema de computador 200. Em particular, o codificador de vídeo 114, o decodificador de vídeo 134 e as etapas dos métodos descritos são afetados pelas instruções 231 (ver Figura 2B) no software 233 que são realizadas dentro do sistema de computador 200. As instruções de software 231 podem ser formadas como um ou mais módulos de código, cada um para executar uma ou mais tarefas particula- res. O software também pode ser dividido em duas partes separadas, nas quais uma primeira parte e os módulos de código correspondentes executam os métodos des- critos e uma segunda parte e os módulos de código correspondentes gerenciam uma interface de usuário entre a primeira parte e o usuário.
[0046] O software pode ser armazenado em um meio legível por computador, incluindo os dispositivos de armazenamento descritos abaixo, por exemplo. O sof- tware é carregado no sistema de computador 200 a partir do meio legível por com- putador e, em seguida, executado pelo sistema de computador 200. Um meio legível por computador tendo tal software ou programa de computador gravado no meio legível por computador é um produto de programa de computador. O uso do produto de programa de computador no sistema de computador 200, de preferência, afeta um aparelho vantajoso para implementar o codificador de vídeo 114, o decodificador de vídeo 134 e os métodos descritos.
[0047] O software 233 é tipicamente armazenado no HDD 210 ou na memória
206. O software é carregado no sistema de computador 200 a partir de um meio le- gível por computador, e executado pelo sistema de computador 200. Assim, por exemplo, o software 233 pode ser armazenado em um meio de armazenamento de disco opticamente legível (por exemplo, CD-ROM) 225 que é lido pela unidade de disco óptico 212.
[0048] Em alguns casos, os programas de aplicativo 233 podem ser fornecidos ao usuário codificados em um ou mais CD-ROMs 225 e lidos através da unidade
212 correspondente ou, alternativamente, podem ser lidos pelo usuário a partir das redes 220 ou 222. Além disso, o software também pode ser carregado no sistema de computador 200 a partir de outro meio legível por computador. O meio de armaze- namento legível por computador refere-se a qualquer meio de armazenamento tan- gível não transitório que fornece instruções e / ou dados gravados para o sistema de computador 200 para execução e / ou processamento. Exemplos de tais meios de armazenamento incluem disquetes, fita magnética, CD-ROM, DVD, Disco Blu-rayTM, uma unidade de disco rígido, uma ROM ou circuito integrado, memória USB, um dis- co magneto-óptico ou um cartão legível por computador, tal como um cartão PCMCIA e similares, sejam ou não esses dispositivos internos ou externos do módu- lo de computador 201. Exemplos de meios de transmissão legíveis por computador transitórios ou não tangíveis que também podem participar no fornecimento do sof- tware, programas de aplicativos, instruções e / ou dados de vídeo ou dados de vídeo codificados para o módulo de computador 401 incluem canais de transmissão de rádio ou infravermelho, bem como uma conexão de rede com outro computador ou dispositivo de rede, e a Internet ou Intranets incluindo transmissões de correio ele- trônico e informações gravadas em sites da rede e similares.
[0049] A segunda parte do programa de aplicativo 233 e dos módulos de código correspondentes mencionados acima pode ser executada para implementar uma ou mais interfaces gráficas de usuário (GUIs) a serem renderizadas ou representadas de outra forma na tela 214. Por meio da manipulação típica do teclado 202 e do mouse 203, um usuário do sistema de computador 200 e do aplicativo pode manipu- lar a interface de uma maneira funcionalmente adaptável para fornecer comandos de controle e / ou entrada para os aplicativos associados com a(s) GUI(s). Outras for- mas de interfaces de usuário funcionalmente adaptáveis também podem ser imple- mentadas, tal como uma interface de áudio utilizando prompts de voz emitidos por meio dos alto-falantes 217 e comandos de voz do usuário introduzidos por meio do microfone 280.
[0050] A Figura 2B é um diagrama de blocos esquemático detalhado do proces- sador 205 e uma “memória” 234. A memória 234 representa uma agregação lógica de todos os módulos de memória (incluindo o HDD 209 e a memória semicondutora 206) que podem ser acessados pelo módulo de computador 201 na Figura 2A.
[0051] Quando o módulo de computador 201 é inicialmente ligado, um programa de autoteste de inicialização (POST) 250 é executado. O programa POST 250 é tipi- camente armazenado em uma ROM 249 da memória semicondutora 206 da Figura 2A. Um dispositivo de hardware, tal como a ROM 249 armazenando software, é às vezes é chamado de suporte lógico inalterável. O programa POST 250 examina o hardware dentro do módulo de computador 201 para garantir o funcionamento ade- quado e, tipicamente, verifica o processador 205, a memória 234 (209, 206) e um módulo de software de sistemas de entrada-saída (BIOS) básico 251, também tipi- camente armazenado na ROM 249, para operação correta. Uma vez que o progra- ma POST 250 foi executado com sucesso, a BIOS 251 ativa a unidade de disco rígi- do 210 da Figura 2A. A ativação da unidade de disco rígido 210 faz com que um programa carregador de carga inicial 252 que está residente na unidade de disco rígido 210 seja executado através do processador 205. Isso carrega um sistema operacional 253 na memória RAM 206, na qual o sistema operacional 253 começa a operação. O sistema operacional 253 é um aplicativo de nível de sistema, executá- vel pelo processador 205, para cumprir várias funções de alto nível, incluindo geren- ciamento de processador, gerenciamento de memória, gerenciamento de dispositivo, gerenciamento de armazenamento, interface de aplicativo de software e interface de usuário genérica.
[0052] O sistema operacional 253 gerencia a memória 234 (209, 206) para ga- rantir que cada processo ou aplicativo em execução no módulo de computador 201 tenha memória suficiente para executar sem colidir com a memória alocada para outro processo. Além disso, os diferentes tipos de memória disponíveis no sistema de computador 200 da Figura 2A devem ser usados adequadamente para que cada processo possa ser executado de forma eficaz. Consequentemente, a memória agregada 234 não é destinada a ilustrar como determinados segmentos de memória são alocados (a menos que indicado de outra forma), mas sim a fornecer uma visão geral da memória acessível pelo sistema de computador 200 e como tal é usado.
[0053] Como mostrado na Figura 2B, o processador 205 inclui uma série de mó- dulos funcionais, incluindo uma unidade de controle 239, uma unidade lógica aritmé- tica (ALU) 240 e uma memória local ou interna 248, às vezes chamada de memória cache. A memória cache 248 inclui tipicamente um número de registros de armaze- namento 244-246 em uma seção de registro. Um ou mais barramentos internos 241 interconectam funcionalmente esses módulos funcionais. O processador 205 tipica- mente também tem uma ou mais interfaces 242 para se comunicar com dispositivos externos através do barramento de sistema 204, usando uma conexão 218. A me- mória 234 é acoplada ao barramento 204 usando uma conexão 219.
[0054] O programa de aplicativo 233 inclui uma sequência de instruções 231 que pode incluir instruções de ramificação e laço condicionais. O programa 233 também pode incluir dados 232 que são usados na execução do programa 233. As instru- ções 231 e os dados 232 são armazenados em localizações de memória 228, 229, 230 e 235, 236, 237, respectivamente. Dependendo do tamanho relativo das instru- ções 231 e das localizações de memória 228-230, uma instrução particular pode ser armazenada em uma única localização de memória, conforme representado pela instrução mostrada na localização de memória 230. Alternativamente, uma instrução pode ser segmentada em um número de partes, cada uma das quais é armazenada em uma localização de memória separada, conforme representado pelos segmentos de instrução mostrados nas localizações de memória 228 e 229.
[0055] Em geral, o processador 205 recebe um conjunto de instruções que são executadas no mesmo. O processador 205 espera por uma entrada subsequente, à qual o processador 205 reage executando outro conjunto de instruções. Cada entra- da pode ser fornecida a partir de uma ou mais de uma série de fontes, incluindo da- dos gerados por um ou mais dos dispositivos de entrada 202, 203, dados recebidos a partir de uma fonte externa através de uma das redes 220, 202, dados recupera- dos a partir de um dos dispositivos de armazenamento 206, 209 ou dados recupera- dos a partir de um meio de armazenamento 225 inserido no leitor correspondente 212, todos representados na Figura 2A. A execução de um conjunto de instruções pode, em alguns casos, resultar na saída de dados. A execução também pode en-
volver o armazenamento de dados ou variáveis na memória 234.
[0056] O codificador de vídeo 114, o decodificador de vídeo 134 e os métodos descritos podem usar variáveis de entrada 254, que são armazenadas na memória 234 em localizações de memória correspondentes 255, 256, 257. O codificador de vídeo 114, o decodificador de vídeo 134 e o os métodos descritos produzem variá- veis de saída 261, que são armazenadas na memória 234 em localizações de me- mória correspondentes 262, 263, 264. Variáveis intermediárias 258 podem ser ar- mazenadas em localizações de memória 259, 260, 266 e 267.
[0057] Com referência ao processador 205 da Figura 2B, os registros 244, 245, 246, a unidade lógica aritmética (ALU) 240 e a unidade de controle 239 trabalham juntos para realizar sequências de micro-operações necessárias para realizar ciclos de “busca, decodificação e execução” para cada instrução no conjunto de instruções que compõe o programa 233. Cada ciclo de busca, decodificação e execução com- preende: uma operação de busca, que busca ou lê uma instrução 231 a partir de uma localização de memória 228, 229, 230; uma operação de decodificação na qual a unidade de controle 239 deter- mina qual instrução foi buscada; e uma operação de execução na qual a unidade de controle 239 e / ou a ALU 240 executam a instrução.
[0058] Depois disso, um outro ciclo de busca, decodificação e execução para a próxima instrução pode ser executado. Da mesma forma, um ciclo de armazenamen- to pode ser realizado pelo qual a unidade de controle 239 armazena ou grava um valor em uma localização de memória 232.
[0059] Cada etapa ou subprocesso no método das Figuras 10 a 13, a ser des- crito, está associado a um ou mais segmentos do programa 233 e é tipicamente rea- lizado pela seção de registro 244, 245, 247, a ALU 240 e a unidade de controle 239 no processador 205 trabalhando juntas para executar os ciclos de busca, decodifica- ção e execução para cada instrução no conjunto de instruções para os segmentos observados do programa 233.
[0060] A Figura 3 é um diagrama de blocos esquemático que mostra os módulos funcionais do codificador de vídeo 114. A Figura 4 é um diagrama de blocos esque- mático que mostra os módulos funcionais do decodificador de vídeo 134. Geralmen- te, os dados passam entre os módulos funcionais dentro do codificador de vídeo 114 e do decodificador de vídeo 134 em grupos de amostras ou coeficientes, tal como divisões de blocos em sub-blocos de um tamanho fixo, ou como matrizes. O codifi- cador de vídeo 114 e o decodificador de vídeo 134 podem ser implementados usan- do um sistema de computador de propósito geral 200, como mostrado nas Figuras 2A e 2B, onde os vários módulos funcionais podem ser implementados por hardware dedicado dentro do sistema de computador 200, por software executável dentro do sistema de computador 200, tal como um ou mais módulos de código de software do programa aplicativo de software 233 residente na unidade de disco rígido 205 e sen- do controlado em sua execução pelo processador 205. Alternativamente, o codifica- dor de vídeo 114 e o decodificador de vídeo 134 podem ser implementados por uma combinação de hardware dedicado e software executável dentro do sistema de computador 200. O codificador de vídeo 114, o decodificador de vídeo 134 e os mé- todos descritos podem, alternativamente, ser implementados em hardware dedicado, tal como um ou mais circuitos integrados executando as funções ou subfunções dos métodos descritos. Tal hardware dedicado pode incluir unidades gráficas de proces- samento (GPUs), processadores de sinais digitais (DSPs), produtos padrão de apli- cação específica (ASSPs), circuitos integrados de aplicação específica (ASICs), ar- ranjos de portas programáveis em campo (FPGAs) ou um ou mais microprocessado- res e memórias associadas. Em particular, o codificador de vídeo 114 compreende os módulos 310-386 e o decodificador de vídeo 134 compreende os módulos 420- 496 que podem, cada um, ser implementados como um ou mais módulos de código de software do programa de aplicativo de software 233.
[0061] Embora o codificador de vídeo 114 da Figura 3 seja um exemplo de um pipeline de codificação de vídeo de codificação de vídeo versátil (VVC), outros co- decs de vídeo também podem ser usados para executar os estágios de processa- mento aqui descritos. O codificador de vídeo 114 recebe dados de quadro captura-
dos 113, tal como uma série de quadros, cada quadro incluindo um ou mais canais de cor. Os dados de quadro 113 podem estar em um formato de croma 4:2:0 ou um formato de croma 4:2:2. Um particionador de bloco 310, em primeiro lugar, divide os dados de quadro 113 em CTUs, geralmente em formato quadrado e configuradas de modo que um tamanho particular para as CTUs seja usado. O tamanho das CTUs pode ser de 64 × 64, 128 × 128 ou 256 × 256 amostras de luma, por exemplo. O par- ticionador de bloco 310 divide ainda cada CTU em um ou mais CBs de acordo com uma árvore de codificação de luma e uma árvore de codificação de croma. Os CBs têm uma variedade de tamanhos e podem incluir razões de aspecto quadradas e não quadradas. A operação do particionador de bloco 310 é ainda descrita com refe- rência à Figura 10. No entanto, no padrão VVC, CBs, CUs, PUs e TUs sempre têm comprimentos laterais que são potências de dois. Assim, um CB atual, representado como 312, é emitido a partir do particionador de bloco 310, progredindo de acordo com uma iteração sobre um ou mais blocos da CTU, de acordo com a árvore de co- dificação de luma e a árvore de codificação de croma da CTU. As opções para parti- cionar CTUs em CBs são ainda descritas abaixo com referência às Figuras 5 e 6.
[0062] As CTUs resultantes da primeira divisão dos dados de quadro 113 podem ser escaneadas em ordem de varredura raster e podem ser agrupadas em uma ou mais ‘fatias’. Uma fatia pode ser uma fatia ‘intra’ (ou ‘I’). Uma fatia intra (fatia I) indica que cada CU na fatia passa por predição intra. Alternativamente, uma fatia pode ser uni ou bi-predita (fatia ‘P’ ou ‘B’, respectivamente), indicando disponibilidade adicio- nal de uni-predição e bi-predição na fatia, respectivamente.
[0063] Para cada CTU, o codificador de vídeo 114 opera em dois estágios. No primeiro estágio (descrito como um estágio de ‘busca’), o particionador de bloco 310 testa várias configurações potenciais de uma árvore de codificação. Cada configura- ção potencial de uma árvore de codificação tem CBs ‘candidatos’ associados. O primeiro estágio envolve testar vários CBs candidatos para selecionar CBs forne- cendo alta eficiência de compressão com baixa distorção. O teste geralmente envol- ve uma otimização Lagrangiana em que um CB candidato é avaliado com base em uma combinação ponderada da taxa (custo de codificação) e da distorção (erro em relação aos dados de quadro de entrada 113). Os ‘melhores’ CBs candidatos (os CBs com a menor taxa / distorção avaliada) são selecionados para codificação sub- sequente no fluxo de bits 115. Incluído na avaliação dos CBs candidatos está uma opção de usar um CB para uma determinada área ou para dividir ainda mais a área de acordo com várias opções de divisão e codificar cada uma das áreas menores resultantes com mais CBs, ou dividir as áreas ainda mais. Como uma consequência, tanto os CBs quanto a própria árvore de codificação são selecionados no estágio de busca.
[0064] O codificador de vídeo 114 produz um bloco de predição (PB), indicado por uma seta 320, para cada CB, por exemplo, o CB 312. O PB 320 é uma predição do conteúdo do CB associado 312. Um módulo subtrator 322 produz uma diferença, indicada como 324 (ou ‘residual’, referindo-se à diferença estar no domínio espacial), entre o PB 320 e o CB 312. A diferença 324 é uma diferença de tamanho de bloco entre as amostras correspondentes no PB 320 e no CB 312. A diferença 324 é trans- formada, quantizada e representada como um bloco de transformada (TB), indicado por uma seta 336. O PB 320 e o TB 336 associado são tipicamente escolhidos a partir de um dos muitos CBs candidatos possíveis, por exemplo, com base no custo ou distorção avaliada.
[0065] Um bloco de codificação candidato (CB) é um CB resultante de um dos modos de predição disponíveis para o codificador de vídeo 114 para o PB associado e o residual resultante. Cada CB candidato resulta em um ou mais TBs correspon- dentes, conforme descrito a seguir com referência à Figura 8. O TB 336 é uma re- presentação quantizada e transformada da diferença 324. Quando combinado com o PB predito no decodificador de vídeo 114, o TB 336 reduz a diferença entre os CBs decodificados e o CB 312 original à custa de sinalização adicional em um fluxo de bits.
[0066] Cada bloco de codificação candidato (CB), que é o bloco de predição (PB) em combinação com um bloco de transformada (TB), tem, portanto, um custo de codificação associado (ou ‘taxa’) e uma diferença associada (ou ‘distorção’). A taxa é tipicamente medida em bits. A distorção do CB é tipicamente estimada como uma diferença nos valores de amostra, tal como uma soma das diferenças absolutas (SAD) ou uma soma das diferenças quadradas (SSD). A estimativa resultante de cada PB candidato é determinada por um seletor de modo 386 usando a diferença 324 para determinar um modo de predição intra (representado por uma seta 388). A estimativa dos custos de codificação associados a cada modo de predição candidato e à codificação residual correspondente pode ser realizada a um custo significativa- mente menor do que a codificação de entropia do residual. Consequentemente, uma série de modos candidatos pode ser avaliada para determinar um modo ótimo em um sentido de taxa-distorção.
[0067] A determinação de um modo ótimo em termos de taxa-distorção é tipica- mente alcançada usando uma variação da otimização Lagrangiana. A seleção do modo de predição intra 388 tipicamente envolve determinar um custo de codificação para os dados residuais resultantes da aplicação de um modo de predição intra par- ticular. O custo de codificação pode ser aproximado usando uma “soma das diferen- ças transformadas absolutas” (SATD) em que uma transformada relativamente sim- ples, tal como uma transformada de Hadamard, é usada para obter um custo residu- al transformado estimado. Em algumas implementações usando transformadas rela- tivamente simples, os custos resultantes do método de estimativa simplificado são monotonicamente relacionados aos custos reais que, de outra forma, seriam deter- minados a partir de uma avaliação completa. Em implementações com custos esti- mados relacionados monotonicamente, o método de estimativa simplificado pode ser usado para tomar a mesma decisão (ou seja, modo de predição intra) com uma re- dução na complexidade no codificador de vídeo 114. Para permitir a possível não monotonicidade na relação entre os custos estimados e reais, o método de estimati- va simplificado pode ser usado para gerar uma lista dos melhores candidatos. A não monotonicidade pode resultar de outras decisões de modo disponíveis para a codifi- cação de dados residuais, por exemplo. A lista dos melhores candidatos pode ser composta por um número arbitrário. Uma busca mais completa pode ser realizada usando os melhores candidatos para estabelecer escolhas de modo ótimas para co- dificar os dados residuais para cada um dos candidatos, permitindo uma seleção final do modo de predição intra juntamente com outras decisões de modo.
[0068] As outras decisões de modo incluem uma capacidade de saltar uma transformada direta, conhecida como ‘salto de transformada’. Saltar as transforma- das é adequado para dados residuais que carecem de correlação adequada para custo de codificação reduzido por meio da expressão como funções de base de transformada. Certos tipos de conteúdo, tal como gráficos relativamente simples ge- rados por computador, podem apresentar comportamento similar. Para uma “trans- formada saltada”, os coeficientes residuais ainda são codificados, embora a própria transformada não seja executada.
[0069] O processamento de otimização lagrangiana ou similar pode ser empre- gue para selecionar um particionamento ótimo de uma CTU em CBs (pelo particio- nador de bloco 310), bem como a seleção de um melhor modo de predição a partir de uma pluralidade de possibilidades. Através da aplicação de um processo de oti- mização Lagrangiana dos modos candidatos no módulo seletor de modo 386, o mo- do de predição intra com a medição de menor custo é selecionado como o ‘melhor’ modo. O ‘melhor’ modo é o modo de predição intra selecionado 388 e também é co- dificado no fluxo de bits 115 por um codificador de entropia 338. A seleção do modo de predição intra 388 pela operação do módulo seletor de modo 386 estende-se à operação do particionador de bloco 310. Por exemplo, os candidatos para seleção do modo de predição intra 388 podem incluir modos aplicáveis a um determinado bloco e, adicionalmente, modos aplicáveis a múltiplos blocos menores que coletiva- mente são colocados com o dado bloco. Em casos que incluem modos aplicáveis a um dado bloco e blocos menores colocados, o processo de seleção de candidatos implicitamente é também um processo de determinar a melhor decomposição hie- rárquica da CTU em CBs.
[0070] No segundo estágio de operação do codificador de vídeo 114 (descrito como um estágio de ‘codificação’), uma iteração sobre a árvore de codificação de luma selecionada e a árvore de codificação de croma selecionada e, portanto, cada CB selecionado, é realizada no codificador de vídeo 114. Na iteração, os CBs são codificados no fluxo de bits 115, conforme descrito mais adiante neste documento.
[0071] O codificador de entropia 338 suporta tanto codificação de comprimento variável de elementos de sintaxe quanto codificação aritmética de elementos de sin- taxe. A codificação aritmética é suportada usando um processo de codificação arit- mética binária adaptativo ao contexto. Elementos de sintaxe codificados aritmetica- mente consistem de sequências de um ou mais ‘compartimentos’. Os compartimen- tos, como bits, têm um valor de ‘0’ ou ‘1’. No entanto, os compartimentos não são codificados no fluxo de bits 115 como bits discretos. Os compartimentos têm um va- lor predito associado (ou “provável” ou “mais provável”) e uma probabilidade associ- ada, conhecida como um “contexto”. Quando o compartimento real a ser codificado corresponde ao valor predito, um ‘símbolo mais provável’ (MPS) é codificado. Codifi- car um símbolo mais provável é relativamente não dispendioso em termos de bits consumidos. Quando o compartimento real a ser codificado não corresponde ao va- lor provável, um ‘símbolo menos provável’ (LPS) é codificado. Codificar um símbolo menos provável tem um custo relativamente alto em termos de bits consumidos. As técnicas de codificação de compartimento permitem a codificação eficiente de com- partimentos em que a probabilidade de ‘0’ versus ‘1’ é distorcida. Para um elemento de sintaxe com dois valores possíveis (ou seja, um ‘sinalizador’), um único compar- timento é adequado. Para elementos de sintaxe com muitos valores possíveis, uma sequência de compartimentos é necessária.
[0072] A presença de compartimentos posteriores na sequência pode ser deter- minada com base no valor dos compartimentos anteriores na sequência. Além disso, cada compartimento pode estar associado a mais de um contexto. A seleção de um contexto particular pode ser dependente de compartimentos anteriores no elemento de sintaxe, os valores de compartimento de elementos de sintaxe vizinhos (ou seja, aqueles de blocos vizinhos) e similares. Cada vez que um compartimento codificado por contexto é codificado, o contexto que foi selecionado para aquele compartimento (se houver) é atualizado de uma maneira que reflete o novo valor do compartimento. Como tal, o esquema de codificação aritmética binária é dito adaptativo.
[0073] Também são suportados pelo codificador de vídeo 114 os compartimen- tos que não têm um contexto (‘compartimentos de desvio’). Os compartimentos de desvio são codificados assumindo uma distribuição equiprovável entre um ‘0’ e um ‘1’. Assim, cada compartimento ocupa um bit no fluxo de bits 115. A ausência de um contexto economiza memória e reduz a complexidade e, portanto, compartimentos de desvio são usados quando a distribuição de valores para o compartimento parti- cular não é distorcida. Um exemplo de um codificador de entropia que emprega con- texto e adaptação é conhecido na técnica como CABAC (codificador aritmético biná- rio adaptativo ao contexto) e muitas variantes deste codificador têm sido empregues na codificação de vídeo.
[0074] O codificador de entropia 338 codifica o modo de predição intra 388 usando uma combinação de compartimentos codificados ao contexto e codificados por desvio. Tipicamente, uma lista de ‘modos mais prováveis’ é gerada no codifica- dor de vídeo 114. A lista de modos mais prováveis é tipicamente de um comprimento fixo, tal como três ou seis modos, e pode incluir modos encontrados em blocos pre- cedentes. Um compartimento codificado por contexto codifica um sinalizador que indica se o modo de predição intra é um dos modos mais prováveis. Se o modo de predição intra 388 é um dos modos mais prováveis, sinalização adicional, usando compartimentos codificados por desvio, é codificada. A sinalização adicional codifi- cada é indicativa de qual modo mais provável corresponde ao modo de predição in- tra 388, por exemplo, usando uma coluna de compartimento unário truncada. Caso contrário, o modo de predição intra 388 é codificado como um ‘modo restante’. A codificação como um modo restante usa uma sintaxe alternativa, tal como um código de comprimento fixo, também codificado usando compartimentos codificados por desvio, para expressar modos de predição intra que não os presentes na lista de modos mais prováveis.
[0075] Um módulo multiplexador 384 emite o PB 320 de acordo com o melhor modo de predição intra 388 determinado, selecionando a partir do modo de predição testado de cada CB candidato. Os modos de predição candidatos não precisam in- cluir todos os modos de predição concebíveis suportados pelo codificador de vídeo
114.
[0076] Os modos de predição se esquadram amplamente em duas categorias.
Uma primeira categoria é a “predição intra-quadro” (também descrita como “predição intra”). Na predição intra-quadro, uma predição para um bloco é gerada, e o método de geração pode usar outras amostras obtidas a partir do quadro atual. Para um PB de predição intra, é possível que diferentes modos de predição intra sejam usados para luma e croma e, assim, a predição intra é descrita principalmente em termos de operação sobre PBs.
[0077] A segunda categoria de modos de predição é ‘predição inter-quadro’ (também descrita como ‘predição inter’). Na predição inter-quadros, uma predição para um bloco é produzida usando amostras a partir de um ou dois quadros que precedem o quadro atual em uma ordem de quadros de codificação no fluxo de bits. Além disso, para predição inter-quadros, uma única árvore de codificação é tipica- mente usada para o canal luma e os canais croma. A ordem dos quadros de codifi- cação no fluxo de bits pode diferir da ordem dos quadros quando capturados ou exi- bidos. Quando um quadro é usado para predição, o bloco é dito ‘uni-predito’ e tem um vetor de movimento associado. Quando dois quadros são usados para predição, o bloco é dito “bi-predito” e tem dois vetores de movimento associados. Para uma fatia P, cada CU pode ser intra-predita ou uni-predita. Para uma fatia B, cada CU pode ser intra-predita, uni-predita ou bi-predita. Os quadros são tipicamente codifi- cados usando uma estrutura de ‘grupo de imagens’, permitindo uma hierarquia tem- poral de quadros. Uma hierarquia temporal de quadros permite que um quadro faça referência a uma imagem precedente e a uma imagem subsequente na ordem de exibição dos quadros. As imagens são codificadas na ordem necessária para garan- tir que as dependências para decodificação de cada quadro sejam atendidas.
[0078] Uma subcategoria de predição inter é descrita como ‘modo de salto’. Os modos de predição inter e salto são descritos como dois modos distintos. No entan- to, tanto o modo de predição inter quanto o modo de salto envolvem vetores de mo- vimento que fazem referência a blocos de amostras de quadros precedentes. A pre- dição inter envolve um delta de vetor de movimento codificado, especificando um vetor de movimento em relação a um preditor de vetor de movimento. O preditor de vetor de movimento é obtido a partir de uma lista de um ou mais vetores de movi-
mento candidatos, selecionados com um ‘índice de mesclagem’. O delta de vetor de movimento codificado fornece um deslocamento espacial para uma predição de ve- tor de movimento selecionada. A predição inter também usa um residual codificado no fluxo de bits 133. O modo de salto usa apenas um índice (também denominado ‘índice de mesclagem’) para selecionar um dentre vários candidatos a vetor de mo- vimento. O candidato selecionado é usado sem qualquer sinalização adicional. Além disso, o modo de salto não oferece suporte à codificação de quaisquer coeficientes residuais. A ausência de coeficientes residuais codificados quando o modo de salto é usado significa que não há necessidade de realizar transformadas para o modo de salto. Portanto, o modo de salto tipicamente não resulta em problemas de proces- samento de pipeline. Problemas de processamento de pipeline podem ser o caso para CUs intra-preditas e CUs inter-preditas. Devido à sinalização limitada do modo de salto, o modo de salto é útil para obter um desempenho de compressão muito alto quando quadros de referência de qualidade relativamente alta estão disponíveis. CUs bi-preditas em camadas temporais superiores de uma estrutura de grupo de imagens de acesso aleatório tipicamente têm imagens de referência de alta qualida- de e candidatos a vetor de movimento que refletem com precisão o movimento sub- jacente.
[0079] As amostras são selecionadas de acordo com um vetor de movimento e índice de imagem de referência. O vetor de movimento e o índice de imagem de re- ferência se aplicam a todos os canais de cor e, portanto, a predição inter é descrita principalmente em termos de operação em PUs em vez de PBs. Dentro de cada ca- tegoria (ou seja, predição intra-quadro e inter-quadros), diferentes técnicas podem ser aplicadas para gerar a PU. Por exemplo, a predição intra pode usar valores a partir de linhas e colunas adjacentes de amostras previamente reconstruídas, em combinação com uma direção para gerar uma PU de acordo com um processo de filtragem e geração prescrito. Alternativamente, a PU pode ser descrita usando um pequeno número de parâmetros. Os métodos de predição inter podem variar no nú- mero de parâmetros de movimento e sua precisão. Os parâmetros de movimento tipicamente compreendem um índice de quadro de referência, indicando quais qua-
dros de referência a partir de listas de quadros de referência devem ser usados mais uma tradução espacial para cada um dos quadros de referência, mas pode incluir mais quadros, quadros especiais ou parâmetros afins complexos tais como como escalonamento e rotação. Além disso, um processo de refinamento de movimento pré-determinado pode ser aplicado para gerar estimativas de movimento denso com base em blocos de amostra referenciados.
[0080] Tendo determinado e selecionado um “melhor” PB 320, e subtraído o PB 320 do bloco de amostra original no subtrator 322, um residual com menor custo de codificação, representado como 324, é obtido e submetido à compressão com per- das. O processo de compressão com perdas compreende as etapas de transforma- da, quantização e codificação de entropia. Um módulo de transformada 326 aplica uma transformada direta à diferença 324, convertendo a diferença 324 para o domí- nio da frequência, e produzindo coeficientes de transformada representados por uma seta 332. A transformada direta é tipicamente separável, transformando um conjunto de linhas e, em seguida, um conjunto de colunas de cada bloco. A transformada de cada conjunto de linhas e colunas é realizada aplicando transformadas unidimensio- nais primeiro a cada linha de um bloco para produzir um resultado parcial e, em se- guida, a cada coluna do resultado parcial para produzir um resultado final.
[0081] Os coeficientes de transformada 332 são passados para um módulo quantizador 334. No módulo 334, a quantização de acordo com um ‘parâmetro de quantização’ é realizada para produzir coeficientes residuais, representados pela seta 336. O parâmetro de quantização é constante para um dado TB e, portanto, resulta em um escalonamento uniforme para a produção de coeficientes residuais para um TB. Um escalonamento não uniforme também é possível pela aplicação de uma ‘matriz de quantização’, em que o fator de escalonamento aplicado para cada coeficiente residual é derivado de uma combinação do parâmetro de quantização e da entrada correspondente em uma matriz de escalonamento, tipicamente tendo um tamanho igual ao do TB. Os coeficientes residuais 336 são fornecidos ao codificador de entropia 338 para codificação no fluxo de bits 115. Tipicamente, os coeficientes residuais de cada TB com pelo menos um coeficiente residual significativo da TU são varridos para produzir uma lista ordenada de valores, de acordo com um padrão de varredura. O padrão de varredura geralmente varre o TB como uma sequência de 4 x 4 ‘sub-blocos’, fornecendo uma operação de varredura regular na granularidade de 4 x 4 conjuntos de coeficientes residuais, com o arranjo de sub-blocos depen- dendo do tamanho do TB. Além disso, o modo de predição 388 e o particionamento de bloco correspondente também são codificados no fluxo de bits 115.
[0082] Conforme descrito acima, o codificador de vídeo 114 precisa de acesso a uma representação de quadro correspondente à representação de quadro vista no decodificador de vídeo 134. Assim, os coeficientes residuais 336 são também quan- tizados inversamente por um módulo desquantizador 340 para produzir coeficientes de transformada inversa, representados por uma seta 342. Os coeficientes de trans- formada inversa 342 são passados através de um módulo de transformada inversa 348 para produzir amostras residuais, representadas por uma seta 350, da TU. Um módulo de soma 352 adiciona as amostras residuais 350 e a PU 320 para produzir amostras reconstruídas (indicadas por uma seta 354) da CU.
[0083] As amostras reconstruídas 354 são passadas para uma cache de amostra de referência 356 e um módulo de filtros em laço 368. A cache de amostra de refe- rência 356, tipicamente implementada usando RAM estática em um ASIC (evitando assim o dispendioso acesso à memória fora do chip) fornece o mínimo armazena- mento de amostra necessário para satisfazer as dependências para gerar PBs intra- quadro para CUs subsequentes no quadro. As dependências mínimas tipicamente incluem um “armazenador temporário de linha” de amostras ao longo da parte inferi- or de uma linha de CTUs, para uso pela próxima linha de CTUs e armazenamento temporário de coluna cuja extensão é definida pela altura da CTU. A cache de amos- tra de referência 356 fornece amostras de referência (representadas por uma seta 358) para um filtro de amostra de referência 360. O filtro de amostra 360 aplica uma operação de suavização para produzir amostras de referência filtradas (indicadas por uma seta 362). As amostras de referência filtradas 362 são usadas por um mó- dulo de predição intra-quadro 364 para produzir um bloco intra-predito de amostras, representado por uma seta 366. Para cada modo de predição intra candidato, o mó-
dulo de predição intra-quadro 364 produz um bloco de amostras, isto é, 366.
[0084] O módulo de filtros em laço 368 aplica vários estágios de filtragem às amostras reconstruídas 354. Os estágios de filtragem incluem um ‘filtro de desbloca- gem’ (DBF) que aplica suavização alinhada aos limites da CU para reduzir artefatos resultantes de descontinuidades. Outro estágio de filtragem presente no módulo de filtros em laço 368 é um ‘filtro em laço adaptativo’ (ALF), que aplica um filtro adapta- tivo baseado em Wiener para reduzir ainda mais a distorção. Um outro estágio de filtragem disponível no módulo de filtros em laço 368 é um filtro de ‘deslocamento adaptativo de amostra’ (SAO). O filtro SAO opera primeiro classificando as amostras reconstruídas em uma ou várias categorias e, de acordo com a categoria alocada, aplicando um deslocamento no nível da amostra.
[0085] As amostras filtradas, representadas por uma seta 370, são emitidas a partir do módulo de filtros em laço 368. As amostras filtradas 370 são armazenadas em um armazenador temporário de quadros 372. O armazenador temporário de quadros 372 tipicamente tem a capacidade de armazenar várias (por exemplo, até 16) imagens e, portanto, é armazenado na memória 206. O armazenador temporário de quadros 372 não é tipicamente armazenado usando a memória no chip devido ao grande consumo de memória necessário. Como tal, o acesso ao armazenador tem- porário de quadros 372 é dispendioso em termos de largura de banda de memória. O armazenador temporário de quadros 372 fornece quadros de referência (represen- tados por uma seta 374) para um módulo de estimativa de movimento 376 e um mó- dulo de compensação de movimento 380.
[0086] O módulo de estimativa de movimento 376 estima um número de ‘vetores de movimento’ (indicados como 378), cada um sendo um deslocamento espacial cartesiano a partir da localização do presente CB, referenciando um bloco em um dos quadros de referência no armazenador temporário de quadros 372. Um bloco filtrado de amostras de referência (representado como 382) é produzido para cada vetor de movimento. As amostras de referência filtradas 382 formam outros modos candidatos disponíveis para potencial seleção pelo seletor de modo 386. Além disso, para uma determinada CU, a PU 320 pode ser formada usando um bloco de refe-
rência (‘uni-predita’) ou pode ser formada usando dois blocos de referência (‘bi- predita’). Para o vetor de movimento selecionado, o módulo de compensação de movimento 380 produz o PB 320 de acordo com um processo de filtragem suportan- do precisão de subpixel nos vetores de movimento. Como tal, o módulo de estimati- va de movimento 376 (que opera em muitos vetores de movimento candidatos) pode executar um processo de filtragem simplificado em comparação com aquele do mó- dulo de compensação de movimento 380 (que opera no candidato selecionado ape- nas) para atingir complexidade computacional reduzida.
[0087] Embora o codificador de vídeo 114 da Figura 3 seja descrito com referên- cia à codificação de vídeo versátil (VVC), outros padrões ou implementações de co- dificação de vídeo também podem empregar os estágios de processamento dos módulos 310-386. Os dados de quadro 113 (e fluxo de bits 115) também podem ser lidos a partir da (ou gravados na) memória 206, da unidade de disco rígido 210, de um CD-ROM, de um disco Blu-rayTM ou outro meio de armazenamento legível por computador. Além disso, os dados de quadro 113 (e fluxo de bits 115) podem ser recebidos a partir de (ou transmitidos para) uma fonte externa, tal como um servidor conectado à rede de comunicações 220 ou um receptor de radiofrequência.
[0088] O decodificador de vídeo 134 é mostrado na Figura 4. Embora o decodifi- cador de vídeo 134 da Figura 4 seja um exemplo de um pipeline de decodificação de vídeo de codificação de vídeo versátil (VVC), outros codecs de vídeo também po- dem ser usados para realizar os estágios de processamento aqui descritos. Como mostrado na Figura 4, o fluxo de bits 133 é inserido no decodificador de vídeo 134. O fluxo de bits 133 pode ser lido a partir da memória 206, da unidade de disco rígido 210, de um CD-ROM, um disco Blu-rayTM ou outro meio de armazenamento legível por computador não transitório. Alternativamente, o fluxo de bits 133 pode ser rece- bido a partir de uma fonte externa, tal como um servidor conectado à rede de comu- nicações 220 ou um receptor de radiofrequência. O fluxo de bits 133 contém ele- mentos de sintaxe codificados que representam os dados de quadro capturados a serem decodificados.
[0089] O fluxo de bits 133 é inserido em um módulo decodificador de entropia
420. O módulo decodificador de entropia 420 extrai elementos de sintaxe a partir do fluxo de bits 133 e passa os valores dos elementos de sintaxe para outros módulos no decodificador de vídeo 134. O módulo decodificador de entropia 420 se aplica um algoritmo CABAC para decodificar os elementos de sintaxe a partir do fluxo de bits
133. Os elementos de sintaxe decodificados são usados para reconstruir parâmetros dentro do decodificador de vídeo 134. Os parâmetros incluem coeficientes residuais (representados por uma seta 424) e informações de seleção de modo, tal como um modo de predição intra (representado por uma seta 458). As informações de seleção de modo também incluem informações tais como vetores de movimento, e o partici- onamento de cada CTU em um ou mais CBs. Os parâmetros são usados para gerar PBs, tipicamente em combinação com dados de amostra de CBs previamente deco- dificados.
[0090] Os coeficientes residuais 424 são introduzidos em um módulo desquanti- zador 428. O módulo desquantizador 428 realiza a quantização inversa (ou ‘escalo- namento’) nos coeficientes residuais 424 para criar coeficientes de transformada re- construídos, representados por uma seta 440, de acordo com um parâmetro de quantização. Se o uso de uma matriz de quantização inversa não uniforme for indi- cado no fluxo de bits 133, o decodificador de vídeo 134 lê uma matriz de quantiza- ção a partir do fluxo de bits 133 como uma sequência de fatores de escalonamento e dispõe os fatores de escalonamento em uma matriz. O escalonamento inverso usa a matriz de quantização em combinação com o parâmetro de quantização para criar os coeficientes de transformada reconstruídos 440.
[0091] Os coeficientes de transformada reconstruídos 440 são passados para um módulo de transformada inversa 444. O módulo 444 transforma os coeficientes do domínio da frequência de volta para o domínio espacial. O TB é efetivamente ba- seado em valores de coeficientes residuais significativos e valores de coeficientes residuais não significativos. O resultado da operação do módulo 444 é um bloco de amostras residuais, representado por uma seta 448. As amostras residuais 448 são iguais em tamanho à CU correspondente. As amostras residuais 448 são fornecidas a um módulo de soma 450. No módulo de soma 450, as amostras residuais 448 são adicionadas a um PB decodificado (representado como 452) para produzir um bloco de amostras reconstruídas, representado por uma seta 456. As amostras reconstruí- das 456 são fornecidas a uma cache de amostras reconstruídas 460 e a um módulo de filtragem em laço 488. O módulo de filtragem em laço 488 produz blocos recons- truídos de amostras de quadro, representados como 492. As amostras de quadro 492 são gravadas em um armazenador temporário de quadros 496.
[0092] A cache de amostras reconstruídas 460 opera de forma similar à cache de amostras reconstruídas 356 do codificador de vídeo 114. A cache de amostras reconstruídas 460 fornece armazenamento para amostra reconstruída necessária para predição intra de CBs subsequentes sem a memória 206 (por exemplo, usando os dados 232 em vez disso, que tipicamente é a memória no chip). As amostras de referência, representadas por uma seta 464, são obtidas a partir da cache de amos- tras reconstruídas 460 e fornecidas a um filtro de amostras de referência 468 para produzir amostras de referência filtradas indicadas pela seta 472. As amostras de referência filtradas 472 são fornecidas a um módulo de predição intra-quadro 476. O módulo 476 produz um bloco de amostras intra-preditas, representado por uma seta 480, de acordo com o parâmetro de modo de predição intra 458 sinalizado no fluxo de bits 133 e decodificado pelo decodificador de entropia 420.
[0093] Quando a predição intra é indicada no fluxo de bits 133 para o CB atual, as amostras intra-preditas 480 formam o PB decodificado 452 através de um módulo multiplexador 484.
[0094] Quando a predição inter é indicada no fluxo de bits 133 para o CB atual, um módulo de compensação de movimento 434 produz um bloco de amostras inter- preditas, representadas como 438, usando um vetor de movimento e índice de qua- dro de referência para selecionar e filtrar um bloco de amostras a partir de um arma- zenador temporário de quadros 496. O bloco de amostras 498 é obtido a partir de um quadro previamente decodificado armazenado no armazenador temporário de quadros 496. Para bi-predição, dois blocos de amostras são produzidos e combina- dos para produzir amostras para o PB decodificado 452. O armazenador temporário de quadros 496 é preenchido com dados de bloco filtrados 492 a partir de um módu-
lo de filtragem em laço 488. Tal como acontece com o módulo de filtragem em laço 368 do codificador de vídeo 114, o módulo de filtragem em laço 488 aplica qualquer, pelo menos, ou todas as operações de filtragem de DBF, ALF e SAO. O módulo de filtragem em laço 368 produz os dados de bloco filtrados 492 a partir das amostras reconstruídas 456.
[0095] A Figura 5 é um diagrama de blocos esquemático que mostra uma cole- ção 500 de divisões disponíveis de uma região em uma ou mais sub-regiões na es- trutura em árvore de codificação de vídeo versátil. As divisões mostradas na coleção 500 estão disponíveis para o particionador de bloco 310 do codificador 114 para di- vidir cada CTU em uma ou mais CUs ou CBs de acordo com uma árvore de codifi- cação, conforme determinado pela otimização Lagrangiana, conforme descrito com referência à Figura 3.
[0096] Embora a coleção 500 mostre apenas regiões quadradas sendo divididas em outras, possivelmente sub-regiões não quadradas, deve ser entendido que o di- agrama 500 está mostrando as potenciais divisões, mas não exigindo que a região de conteúdo seja quadrada. Se a região de conteúdo não for quadrada, as dimen- sões dos blocos resultantes da divisão são escalonadas de acordo com a razão de aspecto do bloco de conteúdo. Uma vez que uma região não é mais dividida, ou se- ja, em um nó folha da árvore de codificação, uma CU ocupa essa região. A subdivi- são particular de uma CTU em uma ou mais CUs pelo particionador de bloco 310 é descrita como a ‘árvore de codificação’ da CTU. O processo de subdividir regiões em sub-regiões deve terminar quando as sub-regiões resultantes atingirem um tamanho de CU mínimo. Além de restringir as CUs para proibir tamanhos menores do que, por exemplo, 4 × 4, as CUs são restringidas a ter uma largura ou altura mínima de quatro. Outros mínimos, tanto em termos de largura e altura quanto em termos de largura ou altura, também são possíveis. O processo de subdivisão também pode terminar antes do nível mais profundo de decomposição, resultando em uma CU maior do que o tamanho de CU mínimo. É possível que nenhuma divisão ocorra, resultando em uma única CU ocupando a totalidade da CTU. Uma única CU ocu- pando a totalidade da CTU é o maior tamanho de unidade de codificação disponível.
Além disso, as CUs onde não ocorre divisão são maiores do que o tamanho da regi- ão de processamento. Como um resultado da divisão binária ou ternária no nível mais alto de uma árvore de codificação, tamanhos de CU, tal como 64x128, 128x64, 32x128 e 128x32, são possíveis, cada um dos quais também é maior do que o ta- manho da região de processamento. Exemplos de CUS maiores do que o tamanho da região de processamento descritos posteriormente com referência à Figura 10.
[0097] Nos nós folha da árvore de codificação existem CUs, sem subdivisão adi- cional. Por exemplo, um nó folha 510 contém uma CU. Nos nós não-folha da árvore de codificação existe uma divisão em dois ou mais nós adicionais, cada um dos quais pode conter um nó folha que, portanto, uma CU ou conter divisões adicionais em regiões menores.
[0098] Uma divisão quad-tree 512 divide a região de conteúdo em quatro regiões de tamanhos iguais, como mostrado na Figura 5. Em comparação com HEVC, a co- dificação de vídeo versátil (VVC) atinge flexibilidade adicional com a adição de uma divisão binária horizontal 514 e um divisão binária vertical 516. Cada uma das divi- sões 514 e 516 divide a região de conteúdo em duas regiões de tamanhos iguais. A divisão ocorre ao longo de um limite horizontal (514) ou limite vertical (516) dentro do bloco de conteúdo.
[0099] Flexibilidade adicional é alcançada na codificação de vídeo versátil com a adição de uma divisão horizontal ternária 518 e uma divisão vertical ternária 520. As divisões ternárias 518 e 520 dividem o bloco em três regiões, limitadas horizontal- mente (518) ou verticalmente (520) ao longo de ¼ e ¾ da largura ou altura da região de conteúdo. A combinação de quad-tree, árvore binária e árvore ternária é descrita como ‘QTBTTT’. A raiz da árvore inclui zero ou mais divisões quad-tree (a seção ‘QT’ da árvore). Uma vez que a seção QT termina, zero ou mais divisões binárias ou ternárias podem ocorrer (a seção ‘multi-tree’ ou ‘MT’ da árvore), finalmente termi- nando em CBs ou CUs nos nós folha da árvore. Quando a árvore descreve todos os canais de cor, os nós folha da árvore são CUs. Quando a árvore descreve o canal luma ou os canais croma, os nós folha da árvore são CBs.
[0100] Em comparação com HEVC, que suporta apenas quad-tree e, portanto,
apenas suporta blocos quadrados, o QTBTTT resulta em muitos mais tamanhos de CU possíveis, particularmente considerando a possível aplicação recursiva de divi- sões de árvore binária e / ou árvore ternária. O potencial para tamanhos de bloco incomuns (não quadrados) pode ser reduzido restringindo as opções de divisão para eliminar divisões que resultariam em uma largura ou altura de bloco menor que qua- tro amostras ou em não ser um múltiplo de quatro amostras. Geralmente, a restrição se aplicaria ao considerar amostras de luma. No entanto, nos arranjos descritos, a restrição pode ser aplicada separadamente aos blocos para os canais croma. A apli- cação da restrição às opções de divisão para canais croma pode resultar em diferen- tes tamanhos de bloco mínimo para luma versus croma, por exemplo, quando os dados de quadro estão no formato de croma 4:2:0 ou no formato de croma 4:2:2. Cada divisão produz sub-regiões com uma dimensão lateral inalterada, dividida pela metade ou dividida em quartos, em relação à região de conteúdo. Então, como o tamanho da CTU é uma potência de dois, as dimensões laterais de todas as CUs também são potências de dois.
[0101] A Figura 6 é um fluxograma esquemático que ilustra um fluxo de dados 600 de uma estrutura QTBTTT (ou ‘árvore de codificação’) usada na codificação de vídeo versátil. A estrutura QTBTTT é usada para cada CTU para definir uma divisão da CTU em uma ou mais CUs. A estrutura QTBTTT de cada CTU é determinada pelo particionador de bloco 310 no codificador de vídeo 114 e codificada no fluxo de bits 115 ou decodificada do fluxo de bits 133 pelo decodificador de entropia 420 no decodificador de vídeo 134. O fluxo de dados 600 caracteriza ainda as combinações permitidas disponíveis para o particionador de bloco 310 para dividir uma CTU em uma ou mais CUs, de acordo com as divisões mostradas na Figura 5.
[0102] A partir do nível superior da hierarquia, ou seja, na CTU, zero ou mais divisões quad-tree são executadas primeiro. Especificamente, uma decisão de divi- são quad-tree (QT) 610 é feita pelo particionador de bloco 310. A decisão em 610 retornando um símbolo ‘1’ indica uma decisão de dividir o nó atual em quatro sub- nós de acordo com a divisão quad-tree 512. O resultado é a geração de quatro no- vos nós, como em 620, e para cada novo nó, recorrendo de volta à decisão de divi-
são QT 610. Cada novo nó é considerado em ordem raster (ou Z-scan). Alternativa- mente, se a decisão de divisão QT 610 indicar que nenhuma divisão adicional deve ser realizada (retorna um símbolo ‘0’), o particionamento quad-tree cessa e as divi- sões multi-tree (MT) são subsequentemente consideradas.
[0103] Em primeiro lugar, uma decisão de divisão MT 612 é feita pelo particiona- dor de bloco 310. Em 612, uma decisão para realizar uma divisão MT é indicada. Retornar um símbolo ‘0’ na decisão 612 indica que nenhuma divisão adicional do nó em sub-nós deve ser realizada. Se nenhuma divisão adicional de um nó for realiza- da, então o nó é um nó folha da árvore de codificação e corresponde a uma CU. O nó folha é emitido em 622. Alternativamente, se a divisão MT 612 indicar uma deci- são de realizar uma divisão MT (retorna um símbolo ‘1’), o particionador de bloco 310 prossegue para uma decisão de direção 614.
[0104] A decisão de direção 614 indica a direção da divisão MT como horizontal (‘H’ ou ‘0’) ou vertical (‘V’ ou ‘1’). O particionador de bloco 310 prossegue para uma decisão 616 se a decisão 614 retornar um ‘0’ indicando uma direção horizontal. O particionador de bloco 310 prossegue para uma decisão 618 se a decisão 614 retor- nar um ‘1’ indicando uma direção vertical.
[0105] Em cada uma das decisões 616 e 618, o número de partições para a divi- são MT é indicado como dois (divisão binária ou nó ‘BT’) ou três (divisão ternária ou ‘TT’) na divisão BT / TT. Ou seja, uma decisão de divisão BT / TT 616 é feita pelo particionador de bloco 310 quando a direção indicada a partir de 614 é horizontal e uma decisão de divisão BT / TT 618 é feita pelo particionador de bloco 310 quando a direção indicada a partir de 614 é vertical.
[0106] A decisão de divisão BT / TT 616 indica se a divisão horizontal é a divisão binária 514, indicada pelo retorno de um ‘0’, ou a divisão ternária 518, indicada pelo retorno de um ‘1’. Quando a decisão de divisão BT / TT 616 indica uma divisão biná- ria, em uma etapa de geração de nós HBT CTU 625, dois nós são gerados pelo par- ticionador de bloco 310, de acordo com a divisão horizontal binária 514. Quando a divisão BT / TT 616 indica uma divisão ternária, em uma etapa de geração de nós HTT CTU 626, três nós são gerados pelo particionador de bloco 310, de acordo com a divisão horizontal ternária 518.
[0107] A decisão de divisão BT / TT 618 indica se a divisão vertical é a divisão binária 516, indicada pelo retorno de um ‘0’, ou a divisão ternária 520, indicada pelo retorno de ‘1’. Quando a divisão BT / TT 618 indica uma divisão binária, em uma etapa 627 de geração de nós VBT CTU, dois nós são gerados pelo particionador de bloco 310, de acordo com a divisão binária vertical 516. Quando a divisão BT / TT 618 indica uma divisão ternária, na etapa 628 de geração de nós VTT CTU, três nós são gerados pelo particionador de bloco 310, de acordo com a divisão ternária verti- cal 520. Para cada nó resultante das etapas 625-628, a recursão do fluxo de dados 600 de volta à decisão de divisão MT 612 é aplicada, em uma ordem da esquerda para a direita ou de cima para baixo, dependendo da direção 614. Como uma con- sequência, divisões de árvore binária e de árvore ternária podem ser aplicadas para gerar CUs tendo uma variedade de tamanhos.
[0108] Os conjuntos de divisões permitidas e não permitidas em cada nó de uma árvore de codificação são ainda descritos com referência à Figura 9.
[0109] As Figuras 7A e 7B fornecem uma divisão exemplificativa 700 de uma CTU 710 em uma série de CUs ou CBs. Uma CU exemplificativa 712 é mostrada na Figura 7A. A Figura 7A mostra um arranjo espacial de CUs na CTU 710. A divisão exemplificativa 700 também é mostrada como uma árvore de codificação 720 na Fi- gura 7B.
[0110] Em cada nó não-folha na CTU 710 da Figura 7A, por exemplo, nós 714, 716 e 718, os nós contidos (que podem ser divididos ou podem ser CUs) são varri- dos ou atravessados em uma ‘ordem Z’ para criar listas de nós, representados como colunas na árvore de codificação 720. Para uma divisão quad-tree, a varredura em ordem Z resulta na ordem superior esquerda para direita seguida da ordem inferior esquerda para direita. Para divisões horizontais e verticais, a varredura de ordem Z (travessia) simplifica para uma varredura de cima para baixo e uma varredura da esquerda para a direita, respectivamente. A árvore de codificação 720 da Figura 7B lista todos os nós e CUs de acordo com a ordem de varredura aplicada. Cada divi- são gera uma lista de dois, três ou quatro novos nós no próximo nível da árvore até que um nó folha (CU) seja alcançado.
[0111] Tendo decomposto a imagem em CTUs e ainda em CUs pelo particiona- dor de bloco 310, e usando as CUs para gerar cada bloco residual (324), conforme descrito com referência à Figura 3, os blocos residuais são submetidos à transfor- mada direta e quantização pelo codificador de vídeo 114. Os TBs 336 resultantes são subsequentemente varridos para formar uma lista sequencial de coeficientes residuais, como parte da operação do módulo de codificação de entropia 338. Um processo equivalente é realizado no decodificador de vídeo 134 para obter TBs a partir do fluxo de bits 133.
[0112] O exemplo das Figuras 7A e 7B descreve uma árvore de codificação apli- cável tanto ao canal luma quanto ao canal croma. No entanto, o exemplo das Figu- ras 7A e 7B também ilustra o comportamento em termos de travessia de uma árvore de codificação aplicável apenas ao canal luma ou uma árvore de codificação aplicá- vel apenas aos canais croma. Para árvores de codificação com muitas divisões ani- nhadas, as opções de divisão disponíveis em níveis mais profundos são restringidas por restrições nos tamanhos de bloco disponíveis para as pequenas regiões corres- pondentes. Restrições nos tamanhos de bloco disponíveis para pequenas regiões são impostas para evitar que o pior caso de taxa de processamento de bloco tão alta de modo a impor uma carga excessiva nas implementações. Em particular, uma res- trição de que os tamanhos dos blocos devem ser múltiplos de 16 (dezesseis) amos- tras em croma permite implementações para processar amostras em uma granulari- dade de 16 (dezesseis) amostras. Restringir os tamanhos dos blocos a múltiplos de dezesseis amostras é particularmente relevante para o laço de retorno de ‘recons- trução intra’, que é o caminho no decodificador de vídeo 134 da Figura 4 envolvendo os módulos 450, 460, 468, 476 e 484, e um caminho equivalente no codificador de vídeo 114. Em particular, restringir o tamanho do bloco a um múltiplo de 16 (dezes- seis) amostras ajuda a manter o rendimento no modo de predição intra. Por exem- plo, arquiteturas de microprocessador de ‘instruções múltiplas, dados simultâneos’ (SIMD) comumente operam em palavras amplas que podem conter 16 amostras. Além disso, as arquiteturas de hardware podem usar barramentos amplos, tal como barramentos com uma largura de 16 amostras para transferir amostras ao longo do laço de retorno de reconstrução intra. Se um tamanho de bloco menor é usado, por exemplo, quatro amostras, o barramento seria subutilizado, por exemplo, apenas um quarto da largura do barramento contendo dados de amostra. Embora um barramen- to subutilizado possa lidar com blocos menores (ou seja, menos de dezesseis amos- tras), no pior dos cenários, tal como muitos ou todos os blocos sendo de tamanho relativamente pequeno, a subutilização pode resultar na prevenção da operação em tempo real de um codificador (114) ou decodificador (134). Para predição inter, cada bloco depende de amostras de referência obtidas a partir de um armazenador tem- porário de quadros (tal como o armazenador temporário 372 ou 496). Como o arma- zenador temporário de quadros é preenchido com amostras de referência quando processando um quadro precedente, não há laço de dependência de retorno afetan- do a operação bloco a bloco para a produção de blocos inter-preditos. Além do laço de dependência de retorno que se refere à reconstrução intra-quadro, existe um laço de retorno adicional e simultâneo que se refere à determinação do modo de predição intra 458. O modo de predição intra 458 é determinado selecionando-se um modo a partir de uma lista de modos mais prováveis, ou selecionando-se um modo a partir de uma lista de modos restantes. A determinação da lista de modos mais prováveis e da lista de modos restantes requer os modos de predição intra de blocos vizinhos. Quando tamanhos de bloco relativamente pequenos são usados, a lista de modos mais prováveis e a lista de modos restantes precisam ser determinadas com mais frequência, isto é, em uma frequência governada pelo tamanho do bloco nas amos- tras e a taxa de amostragem do canal.
[0113] A Figura 8 é um diagrama que mostra uma coleção 800 de tamanhos de bloco de transformada e padrões de varredura associados para os canais croma que resultam do uso de um formato de croma 4:2:0. A coleção 800 também pode ser usada para o formato de croma 4:2:2. Os arranjos descritos são adequados para uso com quadros de imagem tendo um formato de croma em que os canais croma do quadro de imagem são subamostrados em relação a um canal luma do quadro de imagem, em particular para formatos 4:2:0 e 4:2:2. A coleção 800 não inclui todos os tamanhos possíveis de bloco de transformada de croma. Apenas blocos de trans- formada de croma com uma largura menor ou igual a dezesseis ou uma altura me- nor ou igual a oito são mostrados na Figura 8. Blocos de croma com largura e altura maiores podem ocorrer, mas não são mostrados na Figura 8 para facilitar a referên- cia. Os tamanhos adicionais de transformada de croma são 2 × 16, 4 × 16, 8 × 16, 16 × 16 e 32 × 32 para o caso em que a árvore de codificação é compartilhada entre os canais luma e croma. Para o caso em que a árvore de codificação dos canais croma é separada da árvore de codificação do canal luma (uma ‘árvore de codifica- ção dupla’), os seguintes tamanhos adicionais de transformada de croma também estão disponíveis: 2 × 32, 4 × 32, 8 × 32, 16 × 32, 32 × 2, 32 × 4, 32 × 8 e 32 × 16. No entanto, a coleção 800 demonstra uma abordagem para varredura de TBs que pode ser aplicada da mesma forma para varredura de TBs maiores.
[0114] Um conjunto de tamanhos de transformada proibidos 810 inclui tamanhos de bloco de transformada 2 × 2, 2 × 4 e 4 × 2, todos os quais têm áreas de menos de dezesseis amostras. Em outras palavras, um tamanho mínimo de transformada de 16 (dezesseis) amostras de croma resulta da operação dos arranjos descritos, em particular para CBs intra-preditos. Ocorrências dos tamanhos de transformada proibidos 810 são evitadas determinando opções de divisão, conforme descrito com referência à Figura 9. Coeficientes residuais nas transformadas são varridos em uma abordagem de duas camadas, onde a transformada é dividida em ‘sub-blocos’ (ou ‘grupos de coeficientes’). A varredura ocorre ao longo de um caminho de varredura do último coeficiente significativo (diferente de zero) de volta em direção ao coefici- ente DC (superior esquerdo). O caminho de varredura é definido como a progressão dentro de cada sub-bloco (a ‘camada inferior’) e a progressão de um sub-bloco para o próximo (a ‘camada superior’). Na coleção 800, um 8 × 2 TB 820 usa um sub-bloco 8 × 2, ou seja, um sub-bloco contendo dezesseis coeficientes residuais. Um 2 × 8 TB 822 usa um sub-bloco 2 × 8, ou seja, também contendo dezesseis coeficientes resi- duais.
[0115] TBs tendo uma largura ou altura de dois, e a outra dimensão um múltiplo de oito, usam vários sub-blocos 2 × 8 ou 8 × 2. Por conseguinte, os blocos de croma em alguns casos tendo uma largura de duas amostras são codificados usando uma divisão do bloco em sub-blocos, cada um de tamanho 2 × 8 amostras e os blocos de croma tendo uma altura de duas amostras são, em alguns casos, codificados usan- do uma divisão do bloco em sub-blocos, cada um com tamanho de 8 × 2 amostras. Por exemplo, um 16 × 2 TB 816 tem dois sub-blocos 8 × 2, cada sub-bloco sendo varrido como mostrado para o TB 820. A progressão da varredura de um sub-bloco para o próximo como mostrado na progressão de sub-bloco 817.
[0116] Um 2 × 32 TB (não mostrado na Figura 8) usa quatro sub-blocos 2 × 8, dispostos como uma matriz um por quatro. Os coeficientes residuais em cada sub- bloco são varridos como mostrado para 2 × 8 TB 822, com sub-blocos progredindo do sub-bloco mais baixo até o sub-bloco mais alto da matriz um por quatro.
[0117] TBs maiores seguem uma progressão de varredura similar. Para todos os TBs com largura e altura cada uma sendo maior ou igual a quatro, uma varredura de sub-bloco 4 × 4 é usada. Por exemplo, um 4 × 8 TB 823 usa uma varredura de sub- bloco 4 × 4 824, com uma progressão do sub-bloco inferior para o sub-bloco superi- or. Um 4x4 TB 825 pode ser verificado de maneira similar. Um 8 × 8 TB 829 usa uma progressão 830 para os quatro sub-blocos 4 × 4. Em todos os casos, a varredu- ra dentro de um sub-bloco e a progressão de sub-bloco para sub-bloco segue uma varredura diagonal para trás, ou seja, a varredura avança do ‘último’ coeficiente re- sidual significativo de volta para o coeficiente residual superior esquerdo do TB. A Figura 8 também mostra a ordem de varredura em um 8 × 4 TB 832, um 16 × 4 TB 834 e um 16 × 8 TB 836, por exemplo. Além disso, dependendo da posição do últi- mo coeficiente significativo ao longo do caminho de varredura, apenas a parte do sub-bloco contendo o último coeficiente residual significativo da última posição do coeficiente significativo de volta para o coeficiente residual superior esquerdo do sub-bloco precisa para ser verificada. Os sub-blocos mais ao longo do caminho de varredura em uma direção para frente (ou seja, mais perto do canto inferior direito do bloco) não precisam ser varridos. A coleção 800 e, em particular, os tamanhos de transformada proibidos 810 impõem restrições à capacidade de dividir regiões (ou nós) de uma árvore de codificação em sub-regiões (ou sub-nós), conforme descrito com referência à Figura 9.
[0118] Em um sistema VVC usando 2 × 2, 2 × 4 e 4 × 2 TBs (o conjunto de TBs 810), um sub-bloco 2 × 2 pode ser empregue para TBs de largura e / ou altura de duas amostras. Conforme descrito acima, o uso de TBs 810 aumenta as restrições de transferência no laço de dependência de retorno de reconstrução intra. Além dis- so, o uso de um sub-bloco com apenas quatro coeficientes aumenta a dificuldade de analisar os coeficientes residuais em taxas de transferência mais altas. Em particu- lar, para cada sub-bloco, um “mapa de significância” indica a significância de cada coeficiente residual nele contido. A codificação de um sinalizador de significância de um valor estabelece a magnitude do coeficiente residual como sendo pelo menos um e a codificação de um sinalizador de valor zero estabelece a magnitude do coefi- ciente residual como zero. A magnitude do coeficiente residual (de um em diante) e o sinal são codificados apenas para coeficientes residuais ‘significativos’. Nenhum bit de significância é codificado e uma magnitude (a partir de zero) é sempre codifi- cada para o coeficiente DC. Os codificadores e decodificadores de alta taxa de transferência podem precisar codificar ou decodificar vários compartimentos de ma- pa de significância por ciclo de relógio para manter a operação em tempo real. A di- ficuldade de codificação e decodificação multi-compartimento por ciclo aumenta quando as dependências inter-compartimentos são mais numerosas, por exemplo, quando um tamanho de sub-bloco menor é usado. No sistema 100, os tamanhos de sub-bloco são 16 (não obstante a exceção do sub-bloco que contém o último coefi- ciente significativo), independentemente do tamanho do bloco.
[0119] A Figura 9 é um diagrama que mostra um conjunto de regras 900 para gerar listas de divisões permitidas em uma árvore de codificação de luma e uma ár- vore de codificação de croma quando a predição intra está em uso. Para quadros particulares, incluindo o primeiro quadro de uma sequência de quadros, todos os blocos usam predição intra. Outros quadros podem permitir uma mistura de blocos inter-preditos e intra-preditos. Embora o conjunto completo de divisões disponíveis de uma árvore de codificação tenha sido descrito com referência à Figura 6, as res- trições nos tamanhos de transformada disponíveis impõem restrições às opções de divisão específicas para um determinado tamanho de região. Conforme descrito abaixo, as opções de divisão para cada um dos canais luma e croma são determi- nadas de acordo com as dimensões de uma região de uma unidade de árvore de codificação correspondente.
[0120] Como o VVC permite o uso de diferentes árvores de codificação para amostras de luma e croma, as opções de divisão permitidas para amostras de croma são diferentes das opções de divisão para amostras de luma. O conjunto de regras 900 é dividido em um conjunto de regras 920 para uma região de croma e um con- junto de regras 910 para uma região de luma. Regras separadas são mostradas pa- ra a árvore de codificação de luma e a árvore de codificação de croma, permitindo que uma coleção diferente de blocos de transformada seja usada para o canal luma e os canais croma. Em particular, não há nenhum requisito de que a coleção de blo- cos disponíveis para o canal luma e os canais croma seja relacionada por formato de croma. Ao atravessar os nós de uma árvore de codificação, uma lista de divisões permitidas é obtida verificando a disponibilidade de um conjunto de opções de divi- são com o tamanho da região. As opções de divisão que resultam em regiões que podem ser codificadas usando CBs são adicionadas à lista de divisões permitidas. Para uma região a ser codificada usando um CB, o tamanho da região deve permitir a codificação com um número inteiro de transformadas de um tamanho particular da coleção 800. O tamanho particular é selecionado como sendo o maior tamanho que não excede o tamanho da região (considerando largura e altura). Como tal, para re- giões menores, uma única transformada é usada e quando o tamanho da região ex- cede o da maior transformada disponível, a maior transformada disponível é coloca- da lado a lado para ocupar a totalidade da região.
[0121] Ao processar uma região de croma com o conjunto 920, uma lista de divi- são inicial de opções de divisão é gerada. Cada opção de divisão é testada em rela- ção ao tamanho da região para determinar se a opção de divisão resultaria em sub- regiões de um tamanho proibido, que é menor do que o tamanho das transformadas da coleção 800. Opções de divisão resultando em sub-regiões de tamanhos permiti- dos, que corresponde a um número inteiro do tamanho mínimo de transformada da coleção 800, são adicionadas a uma lista de divisão em croma permitida 970.
[0122] Por exemplo, se no modo QT (correspondendo à decisão 610 da Figura 6), divisões quad-tree não são permitidas se a região for de tamanho 8 × 8 no forma- to 4:2:0 ou 8 × 16 no formato 4:2:2 como a divisão resultaria em tamanhos de trans- formada de 2 × 2 ou 2 × 4, respectivamente, para os canais croma. Os tamanhos de região que são permitidos são indicados por uma seta 921. Similarmente, outras di- visões permitidas para o conjunto de regras de croma 920 são indicadas pelas setas 922, 923, 924, 925 e 926 e conforme discutido em relação às Figuras 10 e 11 abai- xo.
[0123] Os tamanhos de região para os canais croma são descritos em termos da grade de amostra de luma. Por exemplo, uma região 8 × 4 corresponde a uma trans- formada 4 × 2 para os canais croma quando o formato de croma 4:2:0 está em uso. Quando o formato de croma 4:2:2 está em uso, uma região 8 × 4 corresponde a uma transformada 4 × 4 em croma. Quando o formato de croma 4:4:4 está em uso, o croma não é subamostrado em relação ao luma e, portanto, o tamanho da transfor- mada em croma corresponde ao tamanho da região.
[0124] As divisões de transformada de luma permitidas referem-se a uma restri- ção de tamanho mínimo diferente, com 4 × 4 não permitido. Embora um PB 4 × 4 luma atenda ao requisito de ser um múltiplo de 16 amostras, a taxa de amostragem em luma é quatro vezes a taxa de amostragem de cada canal croma para vídeo no formato de croma 4:2:0. Mesmo que os blocos de predição 4 × 4 luma não levem à subutilização do barramento (por exemplo, em arquiteturas SIMD ou arquiteturas de barramento de 16 amostras de largura), é difícil para o laço de retorno de reconstru- ção intra e o laço de retorno de determinação de modo de predição intra acomodar a operação em taxas de amostragem relativamente altas. A proibição de blocos 4 × 4 no canal luma reduz a severidade dos laços de retorno a um nível em que a imple- mentação em altas taxas de amostragem é viável. De maneira similar ao conjunto de regras 920, as divisões permitidas no conjunto 910 são mostradas pelas setas 901 a 906 e usadas para gerar uma lista 972 de divisões permitidas. As opções de divisão permitidas são ainda descritas em relação às Figuras 10 e 11 abaixo.
[0125] A Figura 10 mostra um método 1000 de codificação de uma árvore de codificação de um quadro de imagem em um fluxo de bits de vídeo. O método 1000 é realizado para cada árvore de codificação de luma e árvore de codificação de cro- ma, conforme descrito com referência à Figura 12, resultando na determinação de cada árvore de codificação para uma CTU e na codificação das árvores de codifica- ção resultantes no fluxo de bits 115. O método 1000 pode ser incorporado por apa- relhos, tais como um FPGA configurado, um ASIC ou um ASSP. Além disso, o mé- todo 1000 pode ser realizado pelo codificador de vídeo 114 sob a execução do pro- cessador 205. Como tal, o método 1000 pode ser armazenado em meio de armaze- namento legível por computador e / ou na memória 206. O método 1000, invocado para a árvore de codificação de luma e a árvore de codificação de croma de cada CTU, começa em uma etapa de geração de opções de divisão inicial 1010, com um ‘nó atual’ (ou região atual) sendo a raiz da árvore de codificação de luma, ou seja, uma região ocupando toda a CTU. O método 1000 é implementado pelo codificador 114 para cada uma das árvores de codificação de luma e croma quando os dados de quadro 113 são recebidos pelo particionador de bloco 310.
[0126] Na etapa de geração de opções de divisão inicial 1010, o processador 205 gera opções de divisão para o nó atual da árvore de codificação. As opções de divisão são geradas para o canal luma ou canal de croma, dependendo da iteração do método 1000. Inicialmente, a árvore de codificação está em um estágio quad-tree (QT) onde a única divisão permitida é uma divisão quad-tree (a divisão 512 da Figu- ra 5), ou a cessação da divisão (ver 510 da Figura 5). Além disso, para um quadro ou fatia codificada para usar apenas blocos intra-preditos, as árvores de codificação de luma e croma incluem uma divisão quad-tree em seus nós raiz. Consequente- mente, para uma CTU de 128 × 128, o maior CB luma intra-predito é 64 × 64 e o maior CB croma intra-predito é 32 × 32 quando o formato de croma 4:2:0 é usado. Para um quadro de uma fatia codificada para usar um ou ambos os blocos intra- preditos e inter-preditos, as árvores de codificação de luma e croma não precisam incluir uma divisão quadtree em seus nós raiz. No entanto, os CBs intra-preditos não têm permissão para abranger os limites de uma grade de amostra luma 64 × 64.
Quando a divisão quad-tree cessa, a árvore de codificação é considerada no estágio multi-tree (MT), correspondendo à decisão 312 da Figura 6. No estágio multi-tree, as opções de divisão são (i) cessar a divisão (ou seja, 510), caso em que a região cor- respondente ao nó atual é codificada usando um CB, ou (ii) continuar a divisão. Co- mo opções de divisão inicial, podem ser usadas divisões binárias e ternárias nas direções horizontal e vertical (ver 514-520 da Figura 5). Como um resultado da etapa 1010, é criada uma lista de todas as divisões possíveis para o estágio de árvore de codificação (ou seja, QT ou MT). O controle no processador 205 avança da etapa 1010 para uma etapa de determinar o formato de croma 1020.
[0127] Na etapa de determinação do formato de croma 1020, o processador 205 determina o formato de croma dos dados de quadro 113 como um dos formatos de croma 4:2:0 ou 4:2:2. O formato de croma é uma propriedade dos dados de quadro e não muda durante a operação. O formato de croma é, portanto, fornecido ao codi- ficador de vídeo 113 por meio de um arquivo de configuração ou registro. O formato de croma determinado é codificado no fluxo de bits 113, por exemplo, usando um elemento de sintaxe ‘croma_format_idc’, codificado apenas uma vez para o vídeo. O controle no processador 205 avança da etapa 1020 para uma etapa de geração de divisões permitidas 1030.
[0128] Na etapa de geração de divisões permitidas 1030, o processador 205 aplica regras para restringir os tipos de divisão permitida a cada opção de divisão da etapa 1010 para produzir uma lista de divisões permitidas. Quando processando a árvore de codificação de luma, uma lista de divisões em luma permitidas 972 é cria- da pela execução da etapa 1030. Quando processando a árvore de codificação de croma, uma lista de divisões em croma permitidas 970 é criada na execução da eta- pa 1030. As regras que restringem os tipos de divisão permitida consideram os ta- manhos de transformada disponíveis em cada canal luma e canal croma.
[0129] Geralmente, para uma transformada N × M no canal luma, há uma trans- formada N/2 × M/2 disponível para os canais croma quando o formato de croma 4:2:0 é usado ou uma transformada N/2 × M disponível para os canais croma quan- do o formato de croma 4:2:2 é usado. Como tal, as regras de divisão são geralmente equivalentes para os canais luma e croma. No entanto, existem exceções para ta- manhos de bloco pequenos. Em particular, as transformadas em luma 4 × 8 e 8 × 4 não têm as transformadas 2 × 4 e 4 × 2 correspondentes em croma. Também não são permitidas as divisões que resultam em uma transformada em luma de 4 × 4 ou uma transformada em croma 2 × 2. As regras são equivalentes no canal luma e no canal croma, já que o tamanho da região da transformada em croma 2 × 2 é 4 × 4 amostras de luma para o formato de croma 4:2:0.
[0130] Na medida em que o conjunto de transformada em luma é diferente do conjunto de transformada em croma, existem diferenças nas opções de divisão per- mitidas entre luma e croma. Quando processando um nó luma na árvore de codifica- ção, para cada opção de divisão (510-520 como mostrado na Figura 9), o tamanho da região do nó luma é avaliado. O caso sem divisão (510) é sempre permitido e, portanto, sempre adicionado à lista de divisões em luma permitidas 972, conforme mostrado pela seta 912. A divisão quad-tree (512) não é permitida quando o tama- nho da região é 8 × 8, evitando usar o tamanho de transformada em luma não permi- tido 4 × 4. Para tamanhos de região maiores, a divisão qua-dtree é permitida e adici- onada à lista de divisões em luma permitidas 972, conforme mostrado pela seta 911. Quando no estágio MT da árvore de codificação de luma, as seguintes divisões não são permitidas para evitar o uso de uma transformada em luma 4 × 4: - Divisão binária horizontal da região 4 × 8 (evitar pares de blocos 4 × 4). As divisões restantes são permitidas, conforme mostrado pela seta
913. - Divisão binária vertical da região 8 × 4 (evitar pares de blocos 4 × 4). As divisões restantes são permitidas, conforme mostrado pela seta 914. - Divisão ternária horizontal de 4 × 16 ou região menor (evitar que o pri- meiro e o terceiro bloco de divisão sejam blocos 4 × 4). As divisões restantes são permitidas, conforme mostrado pela seta 915. - Divisão ternária vertical de 16 × 4 ou região menor (evitar que o primeiro e o terceiro bloco de divisão sejam blocos 4 × 4). As divisões restantes são permitidas, conforme mostrado pela seta 916.
[0131] Além disso, qualquer divisão em luma que resultaria em um bloco com uma largura de altura inferior a quatro é proibida. Desde que as restrições sobre a divisão devido a evitar a largura ou altura sendo menor do que quatro e o tamanho do bloco sendo 4 × 4 não sejam encontradas, a divisão é adicionada à lista de divi- sões em luma permitidas 972.
[0132] Quando processando um nó croma em uma árvore de codificação de croma, para cada opção de divisão, a regra correspondente em relação ao tamanho da região do nó é consultada para determinar se a opção de divisão deve ser adicio- nada à lista de divisões em croma permitidas 970. Tal como acontece com a árvore de codificação de luma, a árvore de codificação de croma começa em um estágio ‘QT’ (correspondendo à decisão 610 da Figura 6) onde uma divisão quad-tree 512 ou nenhuma divisão 510 é permitida. Uma vez que uma divisão 510 não tenha ocor- rido, a árvore de codificação entra no estágio ‘MT’ (correspondendo à decisão 612 da Figura 6). No estágio MT, (i) uma não divisão indica a presença de um CB ocu- pando a região associada ao nó, ou (ii) ocorre uma das divisões 514-520. A ocorrên- cia de uma das divisões 514-520 divide a região em sub-regiões. Cada uma das sub-regiões resultantes é avaliada também para determinar as opções de divisão permitidas.
[0133] Se, no estágio QT de uma árvore de codificação e usando o formato de croma 4:2:0, o nó tem um tamanho de região que atingiu 8 × 8 (isto é, transformada em croma 4 × 4), nenhuma divisão quad-tree adicional é possível. Além disso, ne- nhuma outra opção de divisão está disponível. A opção disponível é ter uma divisão “não divisão” adicionada à divisão em croma permitida para o nó. Como uma conse- quência, um único 4 × 4 CB existe no nó.
[0134] Se, no estágio QT de uma árvore de codificação e usando um formato de croma 4:2:2, o nó tem um tamanho de região de 8 × 16 (ou seja, transformada em croma 4 × 8), nenhuma divisão quad-tree adicional é possível e a etapa 1030 entra no estágio MT da árvore de codificação. Uma região 8 × 16 no estágio MT pode ter uma única transformada em croma 4 × 8 ou pode ter uma divisão horizontal resul- tando em duas regiões 8 × 8 e, portanto, um par de transformadas em croma 4 × 4 ou uma divisão vertical resultando em duas regiões 4 × 16 e, portanto, um par de transformadas em croma 2 × 8. Na árvore de codificação de croma no estágio MT, divisões que resultariam em regiões de tamanho 4 × 4, 4 × 8 e 8 × 4 e, portanto, in- troduzem transformadas de tamanho 2 × 2, 2 × 4 e 4 × 2 são proibidas, e são lista- das da seguinte forma: - Divisão binária horizontal da região 8 × 8 (evitar o par de transformadas em croma 4 × 2) ou região 4 × 16 (evitar o par de transformadas em croma 2 × 4). As divisões restantes são permitidas, conforme mostra- do pela seta 923. - Divisão binária vertical da região 8 × 8 (evitar o par de transformadas em croma 2 × 4) ou região 16 × 4 (evitar o par de transformadas em cro- ma 4 × 2). As divisões restantes são permitidas, conforme mostrado pela seta 924. - Divisão ternária horizontal da região 4 × 16 (evitar a primeira e a terceira sub-região usando transformadas em croma 2 × 2 e a sub-região cen- tral 2 × 4 usando a transformada em croma) ou região 8 × 16 (evitar as transformadas em croma 2 × 4 na primeira e na terceira sub-região). As divisões restantes são permitidas, conforme mostrado pela seta
925. - Divisão ternária vertical da região 16 × 4 (evitar a primeira e a terceira sub-região usando transformadas em croma 2 × 2 e a sub-região cen- tral 4 × 2 usando a transformada em croma) ou região 16 × 8 (evitar as transformadas em croma 4 × 2 na primeira e na terceira sub-região). As divisões restantes são permitidas, conforme mostrado pela seta
926.
[0135] Além das restrições acima, as divisões que resultariam em sub-regiões com uma largura ou altura inferior a dois são proibidas. Considerando cada opção de divisão da etapa 1010, as regras acima são consultadas e as opções de divisão que não são proibidas são adicionadas à lista de opções de divisão em croma 970 na execução da etapa 1030. Uma vez que as opções de divisão iniciais foram refi-
nadas para uma lista de divisões permitidas (a lista 970 para croma e a lista 972 pa- ra luma), o particionador de bloco 310 seleciona uma das divisões permitidas avali- ando os modos de predição e os custos de codificação de acordo com uma otimiza- ção Lagrangiana. O controle no processador 205 avança da etapa 1030 para um teste de divisões permitidas de zero 1040.
[0136] No teste de divisões permitidas de zero 1040, o processador 205 testa se a lista de opções de divisão (970 ou 972) contém apenas uma entrada “não divisão” (a divisão 510). Se assim for (“SIM” na etapa 1040), nenhuma outra divisão é possí- vel. Um CB existe no nó atual e o controle no processador 205 avança para uma etapa de codificar o bloco de codificação 1070. Se as divisões forem possíveis (“NÃO” na etapa 1040), então o controle no processador 205 avança para uma eta- pa de teste do estágio da árvore de codificação 1050.
[0137] Na etapa de teste de estágio da árvore de codificação 1050, o processa- dor 205 verifica o estágio do presente nó na árvore de codificação, isto é, se o está- gio é QT ou MT. Se o nó estiver no estágio QT, a decisão do particionador de bloco 310 é permanecer no estágio QT e o controle no processador 205 avança para uma etapa de codificar divisão QT 1055. Se o nó estiver no estágio MT ou a decisão do particionador de bloco 310 é transitar do estágio QT para o estágio MT para o nó atual da árvore de codificação, o controle no processador 205 avança para uma eta- pa de codificar divisão MT 1060.
[0138] Na etapa de codificar divisão QT 1055, o codificador de entropia 338, sob execução do processador 205, codifica um sinalizador de divisão QT (conforme des- crito em relação à decisão 610 da Figura 6) com um valor de ‘1’ no fluxo de bits 115. O sinalizador de divisão QT com um valor de 1 indica uma divisão do nó atual em quatro sub-modos, que é a divisão quad-tree 512. O controle no processador 205 avança da etapa 1055 para uma etapa de recursão de sub-regiões 10100.
[0139] Na etapa de codificar divisão MT 1060, o codificador de entropia 338, sob execução do processador 205, codifica sinalizadores adicionais no fluxo de bits 115 para indicar o tipo de divisão MT. Se o nó atual está em uma transição do estágio QT para o estágio MT da árvore de codificação, um sinalizador de divisão QT (con-
forme descrito em relação à decisão 610 da Figura 6) com um valor de ‘0’ é codifica- do no fluxo de bits 115. Se pelo menos uma divisão diferente do caso ‘não divisão’ for permitida, conforme determinado na etapa 1030, um sinalizador de divisão MT indica a seleção de uma não divisão 510 (codificar um ‘0’ para um sinalizador de di- visão MT, ver a decisão 612 da Figura 6). A etapa 1060 retorna um “NÃO” e o con- trole no processador 205 avança para a etapa de codificar bloco de codificação
1070.
[0140] Caso contrário, a seleção de uma das divisões 514-520 pelo particionador de bloco 310 é indicada pela codificação de um ‘1’ para um sinalizador de divisão MT, ou seja, 612. A etapa 1060 retorna “SIM” e o controle no processador 205 avan- ça para uma etapa de codificar divisão B/T H/V 1090.
[0141] Na etapa de codificar o bloco de codificação 1070, o codificador de entro- pia 338, sob execução do processador 205, codifica o modo de predição e os coefi- cientes residuais do bloco de codificação para o fluxo de bits 115. Para CBs intra- preditos, um modo de predição intra é codificado e para CBs inter-preditos, um vetor de movimento é codificado. Os coeficientes residuais são codificados de acordo com uma varredura progredindo do último coeficiente residual significativo no caminho de varredura de volta para o coeficiente DC do bloco.
[0142] Além disso, os coeficientes são agrupados em ‘sub-blocos’, para os quais um sinalizador de sub-bloco codificado é codificado, se apropriado, indicando a pre- sença de pelo menos um coeficiente residual significativo no sub-bloco. Se nenhum coeficiente residual significativo estiver presente no sub-bloco, não há necessidade de codificar sinalizadores de significância individuais para cada coeficiente residual no sub-bloco. O sub-bloco que contém o último coeficiente residual significativo não requer um sinalizador de sub-bloco codificado. Um sinalizador de sub-bloco codifi- cado não é codificado para o sub-bloco que contém o coeficiente residual DC (canto superior esquerdo do bloco). Os tamanhos de sub-blocos são sempre 4 × 4 em luma e em croma são 2 × 8 ou 4 × 4 ou 8 × 2 para um determinado bloco, como mostrado na Figura 8. Assim, o tamanho do sub-bloco é sempre 16, que está de acordo com tamanhos de bloco que são sempre um múltiplo de 16, como é o caso na coleção
800. O controle no processador 205 avança da etapa 1070 para uma última etapa de teste de bloco de codificação 1080.
[0143] No último teste de bloco de codificação 1080, o processador 205 determi- na se o bloco de codificação atual é o último CB na árvore de codificação. Em virtu- de da varredura hierárquica de ordem Z, o último CB é o CB que ocupa o canto infe- rior direito da CTU. Se o CB atual for o último na árvore de codificação (“SIM” na etapa 1080), o método 1000 termina. Uma vez que o método 1000 tenha processa- do a árvore de codificação de luma, o método 1000 é invocado para processar a ár- vore de codificação de croma. O processador 205 pode executar duas ocorrências do método 1000 em paralelo para processar a árvore de codificação de luma e a árvore de codificação de croma. Se as duas ocorrências do método 1000 são reali- zadas em paralelo, o codificador de entropia 338 executa a operação em luma e em croma de uma maneira serializada para produzir um fluxo de bits determinístico. Ou seja, o fluxo de bits produzido por um codificador paralelo deve ser decodificável por um decodificador serial. Caso contrário, se a etapa 1080 retornar “NÃO”, o nó atual avança para o próximo nó de acordo com a varredura hierárquica de ordem Z, como exemplificado nas Figuras 7A e 7B. O controle no processador 205 avança para a etapa de geração de opções de divisão inicial 1010.
[0144] Na etapa de divisão de codificação B/T H/V 1090, o codificador de entro- pia 338, sob execução do processador 205, codifica sinalizadores adicionais no fluxo de bits 115, indicando qual divisão da lista de divisões permitidas foi selecionada pelo particionador de bloco 310. Se a lista de divisões permitidas inclui apenas uma divisão diferente do caso ‘não divisão’, a divisão deve ter sido selecionada pelo par- ticionador de bloco 310 e não há necessidade de codificar sinalizadores adicionais para identificar a divisão. Se a lista de divisões permitidas inclui divisões em ambas as direções horizontal e vertical, o codificador de entropia 338 codifica um sinaliza- dor indicando a direção da divisão que foi selecionada pelo particionador de bloco
310. Se a lista de divisões permitidas inclui divisões binárias e ternárias, o codifica- dor de entropia 338 codifica um sinalizador indicando o tipo (isto é, binário ou terná- rio) da divisão que foi selecionada pelo particionador de bloco 310. O controle no processador 205 avança da etapa 1090 para a etapa de recursão das sub-regiões
10100.
[0145] Na etapa de recursão das sub-regiões 10100, o processador 205 gera sub-regiões de acordo com a divisão determinada da etapa 1030. O método 1000 é invocado recursivamente para cada uma das sub-regiões ou nós gerados, resultan- do em uma recursão em toda a árvore de codificação. A invocação recursiva do mé- todo 1000 avança de uma sub-região ou nó para o próximo de acordo com uma var- redura hierárquica de ordem Z da árvore de codificação, como mostrado nas Figuras 7A e 7B. Quando os nós filhos resultantes de uma divisão foram processados pelo método 1000 para gerar sub-regiões, a recursão avança para o próximo nó irmão na árvore de codificação. Se não houver mais nós irmãos, a recursão avança para o nó pai, ponto no qual o próximo nó (por exemplo, um irmão do pai) é selecionado como o próximo nó para o qual as sub-regiões devem ser geradas. Onde o nó pai está no estágio QT da árvore de codificação, o retorno a um nó pai resulta no retorno ao es- tágio QT da árvore de codificação.
[0146] Consequentemente, cada uma das etapas 1055, 1060, 1090 e 1070 ope- ra para codificar sinalizadores para as opções de divisão permitidas determinadas para o fluxo de bits. Cada opção de divisão é determinada para um dos canais cro- ma ou luma. As opções de divisão podem ser determinadas com base nas dimen- sões das regiões da árvore de codificação.
[0147] A Figura 11 mostra um método 1100 para decodificar uma árvore de codi- ficação em um quadro de imagem de um fluxo de bits de vídeo. O método 1100 é realizado para cada árvore de codificação de luma e árvore de codificação de croma, conforme descrito com referência à Figura 13, resultando na decodificação de cada árvore de codificação para uma CTU e a partir do fluxo de bits 133. O método 1100 pode ser incorporado pelo aparelho tal como um FPGA configurado, um ASIC ou um ASSP. Além disso, o método 1100 pode ser executado pelo decodificador de vídeo 134 sob execução do processador 205. Como tal, o método 1100 pode ser armaze- nado em meio de armazenamento legível por computador e / ou na memória 206. O método 1100, invocado para a árvore de codificação de luma e a árvore de codifica-
ção de croma de cada CTU, começa em uma etapa de gerar opções de divisão ini- cial 1110, com um ‘nó atual’ (ou região atual) sendo a raiz do luma ou árvore de co- dificação, que é uma região ocupando a CTU inteira.
[0148] Na etapa de gerar opções de divisão inicial 1110, o processador 205 gera opções de divisão para o nó atual da árvore de codificação. Inicialmente, a árvore de codificação está em um estágio quad-tree (QT) em que a única divisão permitida é uma divisão quad-tree (a divisão 512), ou uma cessação da divisão (a divisão 510). Além disso, para um quadro ou fatia codificada para usar apenas blocos de predição intra, as árvores de codificação de luma e croma incluem uma divisão quad-tree em seus nós raiz. Quando a divisão quad-tree termina, a árvore de codificação está no estágio multi-tree (MT). No estágio multi-tree, as opções de divisão são cessar a di- visão (usar 510), caso em que a região correspondente ao nó atual é codificada usando um CB, ou continuar a divisão. Como opções de divisão inicial, estão dispo- níveis divisões binárias e ternárias nas direções horizontal e vertical (as divisões 514-520). Como um resultado da etapa 1110, é criada uma lista de todas as divisões possíveis para o estágio da árvore de codificação (isto é, QT ou MT). O controle no processador 205 avança para uma etapa de determinação do formato de croma
1120.
[0149] Na etapa de determinação do formato de croma 1120, o processador 205 determina o formato de croma dos dados de quadro 135 como um dos formatos de croma 4:2:0 ou 4:2:2. Por exemplo, um elemento de sintaxe ‘croma_format_idc’ pode ser lido a partir do fluxo de bits 113 pelo decodificador de entropia 420, sob execu- ção do processador 205, para determinar o formato de croma. O controle no proces- sador 205 avança da etapa 1120 para uma etapa de gerar divisões permitidas 1130.
[0150] Na etapa de gerar divisões permitidas 1130, o processador 205 aplica regras para restringir os tipos de divisão permitidos a cada opção de divisão da eta- pa 1110 para produzir uma lista de divisões permitidas. Quando processando a árvo- re de codificação de luma, uma lista de divisões em luma permitidas 972 é criada. A etapa 1130 opera de acordo com a mesma maneira que a etapa 1030 do método 100 e, assim, as listas de divisão permitidas de nós nas árvores de codificação de luma e croma no decodificador de vídeo 134 são as mesmas que as listas de divisão permitidas de nós nas árvores de codificação de luma e croma no codificador de ví- deo 114. A etapa 1030 opera para gerar uma das listas de divisões permitidas 970 e 972 dependendo se a árvore de codificação de luma ou croma está sendo proces- sada. Conforme descrito em relação à etapa 1030 e à Figura 9, as opções de divisão em croma são diferentes das opções de divisão em luma e as opções de divisão em croma resultam em blocos com um tamanho mínimo de 16 amostras. O controle no processador 205 avança para uma etapa de teste QT / MT 1140.
[0151] Na etapa de teste QT / MT 1140, o processador 205 testa se o presente nó (região) está no estágio QT da árvore de codificação ou no estágio MT da árvore de codificação. Se o presente nó estiver no estágio QT da árvore de codificação e a lista de divisões permitidas incluir a opção ‘divisão quad’ (a divisão 512), o controle no processador avança para uma etapa de decodificação de divisão QT 1155. Se o presente nó estiver no estágio QT da árvore de codificação e a lista de divisões permitidas não inclui a opção ‘divisão quad’, ou seja, somente a opção ‘não divisão’ é permitida, o estágio da árvore de codificação muda para o estágio ‘MT’ e o contro- le no processador 205 avança para o teste de divisões permitidas de zero 1150. Se a árvore de codificação já estiver no estágio MT, o controle no processador 205 avança para o teste de divisões permitidas de zero 1150.
[0152] No teste de divisões permitidas de zero 1150, o processador 205 testa se a lista de opções de divisão, ou seja, 970 ou 972 para árvores de codificação de croma e luma, respectivamente, contém apenas uma entrada “não divisão” (510). Se a lista de opções de divisão contém apenas uma entrada não divisão, então nenhu- ma divisão adicional será possível e um CB existe no nó atual. A etapa 1150 retorna “SIM” e o controle no processador avança para uma etapa de decodificar bloco de codificação 1170. Se mais divisões forem possíveis (“NÃO” na etapa 1150), então o controle no processador avança para uma etapa de decodificar divisão MT 1160.
[0153] Na etapa de decodificar divisão QT 1055, o decodificador de entropia 420, sob execução do processador 205, decodifica um sinalizador de divisão QT (ou seja, 610) a partir do fluxo de bits 133 indicando se uma divisão do nó atual em quatro sub-modos, ou seja, uma divisão quad-tree 512 está para ocorrer. Se uma divisão quad-tree não ocorrer (“NÃO” na etapa 1155), o controle no processador 205 avança para o teste de divisões permitidas de zero 1150. Se uma divisão quad-tree ocorrer (“SIM” na etapa 1155), o controle no processador 205 avança para uma etapa de recursão das sub-regiões 11100.
[0154] Na etapa de decodificar divisão MT 1060, o decodificador de entropia 420, sob execução do processador 205, decodifica sinalizadores adicionais a partir do fluxo de bits 133 para indicar o tipo de divisão MT. Se pelo menos uma divisão dife- rente do caso ‘não divisão’ for permitida, conforme determinado na etapa 1130, um sinalizador de divisão MT indica a seleção de uma não divisão 510 (decodificar um ‘0’ para um sinalizador de divisão MT, ou seja, 612). A etapa 1060 retorna “NÃO” e o controle no processador 205 avança para a etapa de decodificar bloco de codifica- ção 1170. Caso contrário, a necessidade de selecionar uma das divisões 514-520 das divisões permitidas (970 ou 972) é indicada pela decodificação de um ‘1’ para o sinalizador de divisão MT, ou seja, 612. A etapa 1060 retorna “SIM” e o controle no processador 205 avança para uma etapa de decodificar divisão B/T H/V 1190.
[0155] Na etapa de decodificar o bloco de codificação 1170, o decodificador de entropia 420, sob execução do processador 205, decodifica o modo de predição e os coeficientes residuais do bloco de codificação a partir do fluxo de bits 133. Para CBs intra-preditos, um modo de predição intra é decodificado e para CBs inter-preditos, um vetor de movimento é decodificado. Os coeficientes residuais são decodificados de acordo com uma varredura progredindo do último coeficiente residual significativo no caminho de varredura de volta para o coeficiente DC do bloco. Além disso, os coeficientes são agrupados em ‘sub-blocos’, para os quais um sinalizador de sub- bloco codificado pode ser decodificado indicando a presença de pelo menos um coe- ficiente residual significativo no sub-bloco. Se nenhum coeficiente residual significa- tivo estiver presente no sub-bloco, não há necessidade de decodificar sinalizadores de significância individuais para cada coeficiente residual no sub-bloco. O sub-bloco que contém o último coeficiente residual significativo não requer decodificação de um sinalizador de sub-bloco e um sinalizador de sub-bloco codificado não é decodi-
ficado para o sub-bloco contendo o coeficiente residual DC (canto superior esquerdo do bloco). Os tamanhos de sub-blocos são sempre 4 × 4 em luma e em croma são 2 × 8 ou 4 × 4 ou 8 × 2 para um determinado bloco, como mostrado na Figura 8. As- sim, o tamanho do sub-bloco é sempre 16, que está de acordo com os tamanhos de bloco que são sempre múltiplos de 16, como é o caso na coleção 800. O controle no processador 205 avança para a última etapa de teste de bloco de codificação 1180.
[0156] No último teste de bloco de codificação 1180, o processador 205 determi- na se o bloco de codificação atual é o último CB na árvore de codificação. Em virtu- de da varredura hierárquica de ordem Z, o último CB é aquele que ocupa o canto inferior direito da CTU. Se o CB atual for o último na árvore de codificação, a etapa 1180 retorna “SIM” e o método 1100 termina. Uma vez que o método 1100 decodifi- cou a árvore de codificação de luma, o método 1100 é invocado para decodificar a árvore de codificação de croma. Caso contrário, o nó atual avança para o próximo de acordo com a varredura hierárquica de ordem Z, como exemplificado nas Figuras 7A e 7B. A etapa 1180 retorna “NÃO” e o controle no processador 205 avança para a etapa de geração de opções de divisão inicial 1110. Para analisar corretamente o fluxo de bits 133, o decodificador de vídeo 134 tipicamente lê sinalizadores e outros elementos de sintaxe na mesma ordem em que foram escritos pelo codificador de vídeo 113. No entanto, outras operações podem ser realizadas em uma ordem dife- rente e / ou simultaneamente, desde que suas dependências sejam atendidas. Por exemplo, conjuntos de operações, tal como aquelas para reconstrução intra em luma e croma, podem ser realizados em paralelo.
[0157] Na etapa de decodificar divisão B/T H/V 1190, o decodificador de entropia 420, sob execução do processador 205, decodifica sinalizadores adicionais a partir do fluxo de bits 133, indicando qual divisão da lista de divisões permitidas deve ser realizada pelo decodificador de vídeo 134. Quando a lista de divisões permitidas in- clui apenas uma divisão diferente do caso ‘não divisão’, a divisão precisa ser reali- zada, pois não há outras alternativas. Consequentemente, não há necessidade de decodificar sinalizadores adicionais para identificar a divisão. O controle no proces- sador 205 então avança para a etapa de recursão das sub-regiões 11100. Quando a lista de divisões permitidas inclui divisões nas direções horizontal e vertical, decodifi- car um sinalizador indicando a direção da divisão a partir do fluxo de bits 133. Se a lista de divisões permitidas incluir ambas as divisões binárias e ternárias, um sinali- zador indicando o tipo (ou seja, binário ou ternário) da divisão é decidido a partir do fluxo de bits 133. Se a lista de divisões permitidas incluir divisões binárias e terná- rias, um sinalizador indicando o tipo (ou seja, binário ou ternário) da divisão é decidi- do a partir do fluxo de bits 133. O controle no processador 205 avança para a etapa de recursão das sub-regiões 11100.
[0158] Na etapa de recursão de sub-regiões 11100, as sub-regiões do processa- dor 205 de acordo com a divisão determinada da etapa 1190 ou 1155 são geradas e o método 1100 é invocado para cada uma dessas sub-regiões ou nós, resultando em uma recursão em toda a árvore de codificação. A invocação recursiva do método 1100 avança de uma sub-região ou nó para o próximo de acordo com uma varredura hierárquica de ordem Z da árvore de codificação, como mostrado nas Figuras 7A e 7B. Se os nós filhos resultantes de uma divisão foram processados para gerar blo- cos ou sub-regiões, a recursão avança para o próximo nó irmão na árvore de codifi- cação. Se não houver mais nós irmãos, a recursão avança para o nó ou região pai. O próximo nó (por exemplo, um irmão do pai) é selecionado como o próximo nó para processar. Se o nó pai estiver no estágio QT da árvore de codificação, o retorno pa- ra um nó pai resultará no retorno ao estágio QT da árvore de codificação.
[0159] Consequentemente, as etapas 1155, 1160, 1190 e 1170 operam para de- codificar as unidades de codificação da unidade de árvore de codificação, determi- nando sinalizadores a partir do fluxo de bits 133 para selecionar uma das opções de divisão em luma e uma das opções de divisão em croma determinadas na etapa
1130.
[0160] Como um resultado dos métodos 1000 e 1100 e, em particular, das eta- pas 1030 e 1130, blocos intra-preditos relativamente pequenos para o canal croma que são difíceis de processar a uma taxa elevada no laço de reconstrução intra são evitados. Evitar os pequenos blocos facilita a implementação em alta resolução e / ou taxas de quadro, onde a ‘taxa de pixel’ (pixels por segundo que precisam ser pro-
cessados) é alta sem degradação inaceitável da qualidade.
[0161] A Figura 12 mostra um método 1200 para a codificação de árvores de codificação de luma e croma de um quadro de imagem em um fluxo de bits de vídeo. O método 1200 pode ser incorporado por um aparelho, tal como um FPGA configu- rado, um ASIC ou um ASSP. Além disso, o método 1200 pode ser executado pelo decodificador de vídeo 114 sob execução do processador 205. Como tal, o método 1200 pode ser armazenado em meio de armazenamento legível por computador e / ou na memória 206. O método 1200 começa em uma etapa de divisão de quadro em CTUs 1210.
[0162] Na etapa de divisão de quadro em CTUs 1210, o particionador de bloco 310, sob execução do processador 205, divide um quadro atual dos dados de qua- dro 113 em uma matriz de CTUs. Uma progressão de codificação nas CTUs resul- tantes da divisão começa. O controle no processador avança da etapa 1210 para uma etapa de codificar árvore de codificação de luma 1220.
[0163] Na etapa de codificar árvore de codificação de luma 1220, o codificador de vídeo 114, sob execução do processador 205, realiza o método 1000 para deter- minar e codificar a árvore de codificação de luma de uma CTU atual no fluxo de bits
115. A CTU atual é selecionada uma das CTUs resultantes a partir da execução da etapa 1210. O controle no processador 205 avança da etapa 1220 para uma etapa de codificar árvore de codificação de croma 1230.
[0164] Na etapa de codificar árvore de codificação de croma 1230, o codificador de vídeo 114, sob execução do processador 205, executa o método 1000 para de- terminar e codificar a árvore de codificação de croma da CTU atual no fluxo de bits
115. O controle no processador 205 avança da etapa 1230 para uma última etapa de teste de CTU 1240.
[0165] Na última etapa de teste de CTU 1240, o processador 205 testa se a CTU atual é a última na fatia ou quadro. Se não (“NÃO” na etapa 1240), o codificador de vídeo 114 avança para a próxima CTU no quadro e o controle no processador 205 avança da etapa 1240 de volta para a etapa 1220 para continuar o processamento das CTUs restantes no quadro. Se a CTU for a última no quadro ou fatia, a etapa
1240 retorna “SIM” e o método 1200 termina.
[0166] A Figura 13 é um fluxograma de um método 1300 para decodificar árvo- res de codificação de luma e croma de um quadro de imagem a partir de um fluxo de bits de vídeo. O método 1300 pode ser incorporado por aparelho, tal como um FPGA configurado, um ASIC ou um ASSP. Além disso, o método 1300 pode ser executado pelo decodificador de vídeo 134 sob execução do processador 205. Como tal, o mé- todo 1300 pode ser armazenado em meio de armazenamento legível por computa- dor e / ou na memória 206. O método 1300 começa em uma etapa de divisão de quadro em CTUs 1310.
[0167] Na etapa de divisão de quadro em CTUs 1310, o decodificador de vídeo 134, sob execução do processador 205, determina uma divisão de um quadro atual dos dados de quadro 133 que deve ser decodificado em uma matriz de CTUs. Uma progressão de decodificação sobre as CTUs resultantes da divisão determinada co- meça. O controle no processador avança da etapa 1310 para uma etapa de decodi- ficação de árvore de codificação de luma 1320.
[0168] Na etapa de decodificação da árvore de codificação de luma 1320, o de- codificador de vídeo 134, sob execução do processador 205, realiza o método 1100 uma primeira vez para a CTU atual decodificar a árvore de codificação d luma da CTU atual a partir do fluxo de bits 133. A CTU atual é uma selecionada das CTUs resultantes da execução da etapa 1310. O controle no processador 205 avança da etapa 1320 para uma etapa de decodificação da árvore de codificação de croma
1330.
[0169] Na etapa de decodificação da árvore de codificação de croma 1330, o decodificador de vídeo 134, sob execução do processador 205, executa o método 1100 uma segunda vez para a CTU atual decodificar a árvore de codificação de croma da CTU atual a partir do fluxo de bits 133. O controle no processador 205 avança da etapa 1330 para uma última etapa de teste de CTU 1340.
[0170] Na última etapa de teste de CTU 1340, o processador 205 testa se a CTU atual é a última na fatia ou quadro. Se não (“NÃO” na etapa 1340), o decodificador de vídeo 134 avança para a próxima CTU no quadro e o controle no processador
205 avança da etapa 1340 de volta para a etapa 1320 para continuar a decodificar CTUs a partir do fluxo de bits. Se a CTU for a última no quadro ou fatia, a etapa 1340 retorna “SIM” e o método 1300 termina.
[0171] O agrupamento de coeficientes residuais em sub-blocos de tamanho 16 (dezesseis) facilita a implementação do codificador de entropia 338 e do decodifica- dor de entropia 420, por exemplo, usando como descrito em relação aos TBs 816 e 823 da Figura 8. Em particular, agrupar coeficientes residuais em sub-blocos de ta- manho 16 facilita a implementação da codificação aritmética de compartimentos co- dificados por contexto, como para o mapa de significância, para permitir o uso de um padrão fixo de contextos dentro de cada sub-bloco. Aplicabilidade Industrial
[0172] Os arranjos descritos são aplicáveis às indústrias de computador e de processamento de dados e, particularmente, para o processamento de sinal digital para a codificação e decodificação de sinais, tais como sinais de vídeo e imagem, alcançando alta eficiência de compressão.
[0173] Em contrato com HEVC, os sistemas VVC permitem o uso de árvores de codificação separadas para canais luma e croma para maior flexibilidade. No entan- to, conforme discutido acima, um problema resultante pode ocorrer devido ao uso de blocos de croma menores que afetam a taxa de transferência. Os arranjos aqui des- critos determinam regras apropriadas à medida que cada unidade de árvore de codi- ficação é processada para ajudar a evitar problemas de taxa de transferência. Além disso, conforme descrito acima, os arranjos descritos podem auxiliar no fornecimento de maior eficiência e precisão da codificação aritmética de compartimentos codifica- dos por contexto usados para descrever cada árvore de codificação, dadas as re- gras para evitar problemas de taxa de transferência.
[0174] O anterior descreve apenas algumas modalidades da presente invenção, e modificações e / ou alterações podem ser feitas nas mesmas sem abandonar o escopo e o espírito da invenção, as modalidades sendo ilustrativas e não restritivas.
[0175] (Austrália apenas) No contexto desta especificação, a palavra “compre- endendo” significa “incluindo principalmente, mas não necessariamente exclusiva-
mente” ou “tendo” ou “incluindo”, e não “consistindo apenas de”. Variações da pala- vra “compreendendo”, tal como “compreendem” e “compreende”, têm significados correspondentemente variados.

Claims (20)

REIVINDICAÇÕES
1. Método para decodificar blocos de codificação de uma unidade de ár- vore de codificação em uma imagem, a partir de um fluxo de bits, caracterizado pelo fato de que compreende: obter a unidade de árvore de codificação na imagem a partir do fluxo de bits, a unidade de árvore de codificação tendo canais croma e um canal luma; determinar opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; determinar as opções de divisão em croma para os canais croma da uni- dade de árvore de codificação de acordo com as dimensões de uma região da uni- dade de árvore de codificação, as opções de divisão em croma sendo diferentes das opções de divisão em luma, as opções de divisão em croma permitidas resultando em blocos de croma intra-preditos com um tamanho mínimo de 16 amostras; e decodificar os blocos de codificação da unidade de árvore de codificação determinando sinalizadores a partir do fluxo de bits para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma determi- nadas.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que cada tamanho dos blocos de croma intra-preditos é um múltiplo de 16 amostras para os canais croma da imagem.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as opções de divisão em luma determinadas resultam em um tamanho de bloco de luma que é um múltiplo de 16 amostras para o canal luma da imagem.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as opções de divisão em luma determinadas resultam em um tamanho de bloco de luma que é um múltiplo de 16 amostras para o canal luma da imagem, e um blo- co de croma intra-predito tendo uma largura de duas amostras entre os blocos de croma intra-preditos é codificado usando uma divisão do bloco de croma intra- predito em sub-blocos, cada sub-bloco de tamanho 2 por 8 amostras.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as opções de divisão em luma determinadas resultam em um tamanho de bloco de luma que é um múltiplo de 16 amostras para o canal luma da imagem, e um blo- co de croma intra-predito tendo uma altura de duas amostras entre os blocos de croma intra-preditos é codificado usando uma divisão do bloco de croma intra- predito em sub-blocos, cada sub-bloco de tamanho 8 por 2 amostras.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as opções de divisão em croma são diferentes das opções de divisão em luma, mesmo se as dimensões da região usada para determinar as opções de divisão em luma são as mesmas das dimensões da região usada para determinar as opções de divisão em croma.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que uma árvore de codificação da unidade de árvore de codificação para o canal luma é separada de uma árvore de codificação da unidade de árvore de codificação para os canais croma.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que tanto as dimensões da região usada para determinar as opções de divisão em luma quanto as dimensões da região usada para determinar as opções de divisão em croma são medidas em amostras de luma.
9. Método para codificar blocos de codificação de uma unidade de árvore de codificação em uma imagem, a partir de um fluxo de bits, caracterizado pelo fato de que compreende: obter a imagem, em que a unidade de árvore de codificação na imagem tem canais croma e um canal luma; determinar as opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; determinar as opções de divisão em croma para os canais croma da uni- dade de árvore de codificação de acordo com as dimensões de uma região da uni- dade de árvore de codificação, as opções de divisão em croma sendo diferentes das opções de divisão em luma, as opções de divisão em croma permitidas resultando em blocos de croma intra-preditos com um tamanho mínimo de 16 amostras; e codificar sinalizadores usados para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma determinadas.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que cada tamanho dos blocos de croma intra-preditos é um múltiplo de 16 amostras para os canais croma da imagem.
11. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que as opções de divisão em luma determinadas resultam em um tamanho de bloco de luma que é um múltiplo de 16 amostras para o canal luma da imagem.
12. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que as opções de divisão em luma determinadas resultam em um tamanho de bloco de luma que é um múltiplo de 16 amostras para o canal luma da imagem, e um blo- co de croma intra-predito tendo uma largura de duas amostras entre os blocos de croma intra-preditos é codificado usando uma divisão do bloco de croma intra- predito em sub-blocos, cada sub-bloco de tamanho de 2 por 8 amostras.
13. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que as opções de divisão em luma determinadas resultam em um tamanho de bloco de luma que é um múltiplo de 16 amostras para o canal luma da imagem, e um blo- co de croma intra-predito tendo uma altura de duas amostras entre os blocos de croma intra-preditos é codificado usando uma divisão do bloco de croma intra- predito em sub-blocos, cada sub-bloco de tamanho de 8 por 2 amostras.
14. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que as opções de divisão em croma é diferente das opções de divisão em luma, mesmo se as dimensões da região usada para determinar as opções de divisão em luma são as mesmas das dimensões da região usada para determinar as opções de divisão em croma.
15. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que uma árvore de codificação da unidade de árvore de codificação para o canal luma é separada de uma árvore de codificação para os canais croma.
16. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que tanto as dimensões da região usada para determinar as opções de divisão em luma quanto as dimensões da região usada para determinar as opções de divisão em croma são medidas em amostras de luma.
17. Aparelho de decodificação de vídeo, caracterizado pelo fato de que compreende: uma unidade de obtenção configurada para obter uma unidade de árvore de codificação em uma imagem a partir de um fluxo de bits, a unidade de árvore de codificação tendo canais croma e um canal luma; uma primeira unidade de determinação configurada para determinar as opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; uma segunda unidade de determinação configurada para determinar as opções de divisão em croma para os canais croma da unidade de árvore de codifi- cação de acordo com as dimensões de uma região da unidade de árvore de codifi- cação, as opções de divisão em croma sendo diferentes das opções de divisão em luma, as opções de divisão em croma permitidas resultando em blocos de croma intra-preditos com um tamanho mínimo de 16 amostras; e uma unidade de decodificação configurada para decodificar os blocos de codificação da unidade de árvore de codificação determinando sinalizadores a partir do fluxo de bits para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma determinadas.
18. Aparelho de codificação, caracterizado pelo fato de que compreende: uma unidade de obtenção configurada para obter uma imagem, em que a unidade de árvore de codificação na imagem tem canais croma e um canal luma; uma primeira unidade de determinação configurada para determinar as opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; uma segunda unidade de determinação configurada para determinar as opções de divisão em croma para os canais croma da unidade de árvore de codifi-
cação de acordo com as dimensões de uma região da unidade de árvore de codifi- cação, as opções de divisão em croma sendo diferentes das opções de divisão em luma, as opções de divisão em croma permitidas resultando em blocos de croma intra-preditos com um tamanho mínimo de 16 amostras; e uma unidade de codificação configurada para codificar sinalizadores usa- dos para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma determinadas.
19. Meio de armazenamento legível por computador não transitório, ca- racterizado por armazenar instruções para fazerem com que um computador execu- te um método de decodificação de blocos de codificação de uma unidade de árvore de codificação em um imagem, a partir de um fluxo de bits, o método compreenden- do: obter a unidade de árvore de codificação na imagem a partir do fluxo de bits, a unidade de árvore de codificação tendo canais croma e um canal luma; determinar opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; determinar as opções de divisão em croma para os canais croma da uni- dade de árvore de codificação de acordo com as dimensões de uma região da uni- dade de árvore de codificação, as opções de divisão em croma sendo diferentes das opções de divisão em luma, as opções de divisão em croma permitidas resultando em blocos de croma intra-preditos com um tamanho mínimo de 16 amostras; e decodificar os blocos de codificação da unidade de árvore de codificação determinando sinalizadores a partir do fluxo de bits para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma determi- nadas.
20. Meio de armazenamento legível por computador não transitório, ca- racterizado por armazenar instruções para fazerem com que um computador execu- te um método de codificação de blocos de codificação de uma unidade de árvore de codificação em um imagem, a partir de um fluxo de bits, o método compreendendo:
obter a imagem, em que a unidade de árvore de codificação na imagem tem canais croma e um canal luma; determinar as opções de divisão em luma para o canal luma da unidade de árvore de codificação de acordo com as dimensões de uma região da unidade de árvore de codificação; determinar as opções de divisão em croma para os canais croma da uni- dade de árvore de codificação de acordo com as dimensões de uma região da uni- dade de árvore de codificação, as opções de divisão em croma sendo diferentes das opções de divisão em luma, as opções de divisão em croma permitidas resultando em blocos de croma intra-preditos com um tamanho mínimo de 16 amostras; e codificar sinalizadores usados para selecionar uma das opções de divisão em luma determinadas e uma das opções de divisão em croma determinadas.
BR112021003783-7A 2018-09-21 2019-06-25 método, aparelho e sistema para codificar e decodificar uma árvore de blocos de amostras de vídeo BR112021003783A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2018233042 2018-09-21
AU2018233042A AU2018233042A1 (en) 2018-09-21 2018-09-21 Method, apparatus and system for encoding and decoding a tree of blocks of video samples
PCT/AU2019/050658 WO2020056452A1 (en) 2018-09-21 2019-06-25 Method, apparatus and system for encodng and decoding a tree of blocks of video samples

Publications (1)

Publication Number Publication Date
BR112021003783A2 true BR112021003783A2 (pt) 2021-05-18

Family

ID=69886764

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021003783-7A BR112021003783A2 (pt) 2018-09-21 2019-06-25 método, aparelho e sistema para codificar e decodificar uma árvore de blocos de amostras de vídeo

Country Status (10)

Country Link
US (5) US11595699B2 (pt)
EP (1) EP3854091A4 (pt)
JP (2) JP7191211B2 (pt)
KR (1) KR20210050572A (pt)
CN (1) CN112771866A (pt)
AU (1) AU2018233042A1 (pt)
BR (1) BR112021003783A2 (pt)
MX (1) MX2021003054A (pt)
TW (2) TWI820165B (pt)
WO (1) WO2020056452A1 (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3836542B1 (en) 2018-08-28 2023-10-11 Huawei Technologies Co., Ltd. Picture partition method and device
BR112021013444A2 (pt) * 2019-01-08 2021-10-19 Huawei Technologies Co., Ltd. Método, aparelho e sistema de predição de imagem, dispositivo, e mídia de armazernamento
CN113273197A (zh) * 2019-02-03 2021-08-17 北京字节跳动网络技术有限公司 视频块分割模式的信令通知
AU2019201649A1 (en) 2019-03-11 2020-10-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
BR112022002006A2 (pt) * 2019-08-06 2022-03-29 Beijing Bytedance Network Tech Co Ltd Método de processamento de vídeo, aparelho de processamento de vídeo, e, mídia legível por computador
EP4008109A4 (en) 2019-09-02 2022-09-14 Beijing Bytedance Network Technology Co., Ltd. ENCODING MODE DETERMINATION BASED ON COLOR FORMAT
MX2022003122A (es) 2019-09-21 2022-04-06 Beijing Bytedance Network Tech Co Ltd Modo intra basado para croma de restriccion de tama?o.
US11432018B2 (en) * 2020-05-11 2022-08-30 Tencent America LLC Semi-decoupled partitioning for video coding
CN111598186B (zh) * 2020-06-05 2021-07-16 腾讯科技(深圳)有限公司 基于纵向联邦学习的决策模型训练方法、预测方法及装置
DE102021116357A1 (de) 2020-06-29 2021-12-30 Tyco Electronics Amp Korea Co., Ltd. Steckeranordnung
KR20230002091A (ko) * 2021-06-29 2023-01-05 주식회사 케이티 화면내 예측 기반의 비디오 신호 부호화/복호화 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2390072C (en) * 2002-06-28 2018-02-27 Adrian Gh Podoleanu Optical mapping apparatus with adjustable depth resolution and multiple functionality
US20100220215A1 (en) * 2009-01-12 2010-09-02 Jorge Rubinstein Video acquisition and processing systems
CN105120265B (zh) 2009-08-12 2019-01-29 汤姆森特许公司 用于改进的帧内色度编码和解码的方法及装置
PL2728869T3 (pl) 2011-06-30 2022-02-28 Sun Patent Trust Sposób dekodowania obrazów
US9807401B2 (en) 2011-11-01 2017-10-31 Qualcomm Incorporated Transform unit partitioning for chroma components in video coding
US8964849B2 (en) 2011-11-01 2015-02-24 Blackberry Limited Multi-level significance maps for encoding and decoding
EP2595380B1 (en) 2011-11-19 2015-10-21 BlackBerry Limited Multi-level significance map scanning
WO2013102293A1 (en) * 2012-01-04 2013-07-11 Mediatek Singapore Pte. Ltd. Improvements of luma-based chroma intra prediction
AU2012200319B2 (en) * 2012-01-19 2015-11-26 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the significance map for residual coefficients of a transform unit
EP2810440A1 (en) 2012-02-04 2014-12-10 General Instrument Corporation Devices and methods for context reduction in last significant coefficient position coding
US10009612B2 (en) * 2012-04-12 2018-06-26 Hfi Innovation Inc. Method and apparatus for block partition of chroma subsampling formats
WO2013180023A1 (ja) * 2012-06-01 2013-12-05 シャープ株式会社 算術復号装置、画像復号装置、算術符号化装置、および画像符号化装置
US9538175B2 (en) 2012-09-26 2017-01-03 Qualcomm Incorporated Context derivation for context-adaptive, multi-level significance coding
AU2012232992A1 (en) 2012-09-28 2014-04-17 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the transform units of a coding unit
JP6270861B2 (ja) 2012-11-08 2018-01-31 キヤノン株式会社 符号化単位の変換単位を符号化および復号するための方法、装置およびシステム
US11284103B2 (en) * 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
EP2908524A1 (en) * 2014-02-14 2015-08-19 France Brevets An apparatus for encoding an ultra-high definition video sequence
JP2014143716A (ja) 2014-03-12 2014-08-07 Sony Corp 画像処理装置および方法、プログラム、並びに記録媒体
WO2016074147A1 (en) * 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
US10362310B2 (en) * 2015-10-21 2019-07-23 Qualcomm Incorporated Entropy coding techniques for display stream compression (DSC) of non-4:4:4 chroma sub-sampling
CN105472389B (zh) * 2015-12-01 2018-11-16 上海交通大学 一种用于超高清视频处理系统的片外缓存压缩方法
RU2739251C2 (ru) 2016-02-11 2020-12-22 Томсон Лайсенсинг Способ и устройство для кодирования/декодирования элемента изображения, содержащего данные изображения, представленные каналом составляющей яркости и, по меньшей мере, одним каналом составляющей цветности
CA3037685C (en) * 2016-09-20 2023-03-28 Bae Keun Lee Method and apparatus for processing video signal
US10368080B2 (en) * 2016-10-21 2019-07-30 Microsoft Technology Licensing, Llc Selective upsampling or refresh of chroma sample values
US11190762B2 (en) * 2017-06-21 2021-11-30 Lg Electronics, Inc. Intra-prediction mode-based image processing method and apparatus therefor
EP3836542B1 (en) 2018-08-28 2023-10-11 Huawei Technologies Co., Ltd. Picture partition method and device

Also Published As

Publication number Publication date
US20220046288A1 (en) 2022-02-10
US20230164363A1 (en) 2023-05-25
US11595699B2 (en) 2023-02-28
EP3854091A1 (en) 2021-07-28
MX2021003054A (es) 2021-05-27
WO2020056452A1 (en) 2020-03-26
US11910028B2 (en) 2024-02-20
EP3854091A4 (en) 2022-08-31
TW202234885A (zh) 2022-09-01
TWI820714B (zh) 2023-11-01
US20230164365A1 (en) 2023-05-25
US20230164364A1 (en) 2023-05-25
JP2022500926A (ja) 2022-01-04
JP7391175B2 (ja) 2023-12-04
US20230156243A1 (en) 2023-05-18
KR20210050572A (ko) 2021-05-07
TW202013961A (zh) 2020-04-01
JP7191211B2 (ja) 2022-12-16
JP2023025180A (ja) 2023-02-21
US11930224B2 (en) 2024-03-12
US20230156242A1 (en) 2023-05-18
AU2018233042A1 (en) 2020-04-09
CN112771866A (zh) 2021-05-07
TWI820165B (zh) 2023-11-01

Similar Documents

Publication Publication Date Title
BR112021003783A2 (pt) método, aparelho e sistema para codificar e decodificar uma árvore de blocos de amostras de vídeo
JP2021530124A (ja) ビデオサンプルの変換されたブロックを符号化および復号するための方法、装置、およびシステム
US20220116600A1 (en) Method, apparatus and system for encoding and decoding a transformed block of video samples
US20240146912A1 (en) Method, apparatus and system for encoding and decoding a tree of blocks of video samples
JP2023123706A (ja) ビデオサンプルのブロックを符号化及び復号するための方法、装置、及びプログラム
TWI788262B (zh) 用以編碼和解碼視頻樣本之區塊樹的方法、設備及系統
US20210306679A1 (en) Method, apparatus and system for encoding and decoding a transformed block of video samples
US12003787B2 (en) Method, apparatus and system for encoding and decoding a tree of blocks of video samples
AU2020202285A1 (en) Method, apparatus and system for encoding and decoding a block of video samples