BR112021003999A2 - relação entre elementos de restrição de partição - Google Patents

relação entre elementos de restrição de partição Download PDF

Info

Publication number
BR112021003999A2
BR112021003999A2 BR112021003999-6A BR112021003999A BR112021003999A2 BR 112021003999 A2 BR112021003999 A2 BR 112021003999A2 BR 112021003999 A BR112021003999 A BR 112021003999A BR 112021003999 A2 BR112021003999 A2 BR 112021003999A2
Authority
BR
Brazil
Prior art keywords
block
size
video
minqtsizey
image
Prior art date
Application number
BR112021003999-6A
Other languages
English (en)
Inventor
Han Gao
Semih ESENLIK
Jianle Chen
Anand Meher KOTRA
Biao Wang
Zhijie ZHAO
Original Assignee
Huawei Technologies Co., Ltd.
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 Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021003999A2 publication Critical patent/BR112021003999A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/167Position within a video image, e.g. region of interest [ROI]
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Lining And Supports For Tunnels (AREA)
  • Paper (AREA)

Abstract

RELAÇÃO ENTRE ELEMENTOS DE RESTRIÇÃO DE PARTIÇÃO. A presente invenção se refere, em geral, a métodos de codificação de vídeo e particionamento de imagem. Em particular, a invenção está relacionada a relações entre elementos de restrição de partição, definindo-se regras de particionamento para diferentes métodos de particionamento de imagem. A invenção fornece dispositivos e métodos correspondentes para gerar ou processar um fluxo de bits (101) incluindo imagens codificadas, particularmente para definir e incluir elemento de restrição de partição no fluxo de bits (101). Um dos dispositivos é configurado para determinar um tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária (MinQtSizeY (105)), determinar um tamanho de luma máximo de um bloco de codificação a ser dividido usando uma divisão de árvore binária (MaxBtSizeY (102)) com base no MinQtSizeY (105), e incluir informações para o MinQtSizeY (105) determinado no fluxo de bits (101).

Description

“RELAÇÃO ENTRE ELEMENTOS DE RESTRIÇÃO DE PARTIÇÃO” CAMPO TÉCNICO
[0001] A presente revelação se refere, em geral, a métodos de codificação e decodificação de vídeo e particionamento de imagem.
FUNDAMENTOS
[0002] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transmitidos ou de outro modo comunicados através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, os dados de vídeo são geralmente comprimidos antes de serem comunicados pelas redes de telecomunicações dos dias modernos. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento pelo fato de que os recursos de memória podem ser limitados. Os dispositivos de compressão de vídeo frequentemente utilizam o software e/ou hardware na fonte para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo, desse modo, a quantidade de dados necessária para representar as imagens de vídeo digital. Os dados comprimidos são, em seguida, recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas cada vez maiores de maior qualidade de vídeo, técnicas aprimoradas de compressão e descompressão que melhoram a taxa de compressão com pouco ou nenhum sacrifício na qualidade de imagem são desejáveis.
[0003] Convencionalmente, há uma multiplicidade de elementos de restrição de partição, cada elemento restringido do particionamento de imagens (como um vídeo) em relação aos diferentes tipos de métodos de particionamento. Estes diferentes tipos de métodos de particionamento incluem, particularmente, particionamento de árvore binária, particionamento de árvore quaternária e particionamento de árvore ternária. Os elementos de restrição de partição são tipicamente sinalizados incluídos no fluxo de bits incluindo as imagens codificadas. Em seguida, alguns elementos de restrição de partição importantes são descritos.
[0004] Um tamanho do bloco de codificação mínimo (MinCbSizeY) pode ser definido. Como um exemplo, o MinCbSizeY pode ser igual a 8, o que significa que um bloco precursor que tem um tamanho 8x8 não pode ser dividido usando qualquer um dos métodos de particionamento (divisão), visto que o bloco filho resultante é garantidamente menor do que o MinCbSizeY (em largura ou altura). De acordo com um segundo exemplo, se o MinCbSizeY for igual a 8, um bloco precursor que tem um tamanho 8x16 não pode ser particionado usando por exemplo, divisão de árvore quaternária (particionamento), visto que os quatros blocos filhos resultantes teriam um tamanho de 4x8 (largura igual a 4 e altura igual a 8), e a largura do bloco filho resultante seria menor do que o MinCbSizeY. No segundo exemplo foi considerado que o MinCbSizeY se aplica tanto à largura quanto à altura do bloco, embora dois elementos de sintaxe diferente possam ser usados independentemente para limitar a largura e altura.
[0005] Um tamanho do bloco de árvore de codificação máximo (CtbSizeY) pode indicar o tamanho de um bloco de codificação máximo em termos de várias amostras de luma.
[0006] Um tamanho de árvore binária máximo (MaxBtSizeY) pode ser definido como o tamanho de luma máximo (largura ou altura), em termos de várias amostras, de um bloco de codificação que pode ser dividido usando um método de particionamento binário. Como um exemplo, se o MaxBtSizeY for igual a 64, um bloco de codificação que é maior em tamanho, em largura ou altura, não pode ser dividido usando divisão binária. Isto significa que um bloco que tem um tamanho 128x128 não pode ser dividido usando divisão binária, enquanto um bloco que tem um tamanho 64x64 pode ser dividido usando divisão binária.
[0007] Um tamanho de árvore binária mínimo (MinBtSizeY) pode ser definido como o tamanho de luma mínimo (largura ou altura), em termos de várias amostras, de um bloco de codificação que pode ser dividido usando um método de particionamento binário. Como um exemplo, se o MinBtSizeY for igual a 16, um bloco de codificação que é menor ou igual em tamanho, em largura ou altura, não pode ser dividido usando divisão binária. Isto significa que um bloco que tem um tamanho 8x8 não pode ser dividido usando divisão binária, enquanto um bloco que tem um tamanho 32x32 pode ser dividido usando divisão binária.
[0008] Um tamanho de árvore quaternária mínimo (MinQtSizeY)
pode ser definido como o tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária de uma Unidade de Árvore de Codificação (CTU). O tamanho pode indicar a largura ou altura do bloco em número de amostras. Também pode indicar a largura e a altura juntas no caso de blocos quadrados. Como um exemplo, se o MinQtSizeY for igual a 16, um bloco de codificação que tem um tamanho menor do que ou igual a 16 não pode ser particionado em blocos filhos usando o método de divisão de árvore quaternária. Convencionalmente, MinQtSizeY (e seus elementos de sintaxe ‘log2_min_qt_size_intra_slices_minus2’ e ‘log2_min_qt_size_inter_slices_minus2’ sinalizados são usados para indicar o tamanho de bloco de árvore quaternária mínimo. Notavelmente, o elemento de sintaxe do tamanho pode ser um elemento de sintaxe indireto, o que significa que log2_min_qt_size_intra_slices_minus2 pode ser o logaritmo binário (base 2) do número de amostras de luma do bloco de árvore quaternária mínimo.
[0009] Um tamanho do bloco de transformada mínimo (MinTbSizeY) pode ser definido como o tamanho do bloco de transformada mínimo, em termos de várias amostras, de um bloco de codificação que pode ser dividido usando um método de particionamento ternário. Como um exemplo, se o MinTbSizeY for igual a 16, um bloco de codificação que é menor ou igual em tamanho, a largura ou altura não pode ser dividida usando divisão ternária. Isto significa que um bloco que tem um tamanho 8x8 não pode ser dividido usando divisão ternária, enquanto um bloco que tem um tamanho 32x32 pode ser dividido usando divisão ternária.
[0010] Uma profundidade de árvore de múltiplos tipos máxima (MaxMttDepth) pode ser definida como a profundidade de hierarquia máxima para as unidades de codificação resultantes a partir da divisão de árvore de múltiplos tipos de um nó de árvore quaternária ou uma CTU. Uma CTU ou bloco de árvore de codificação (CTB) descreve o tamanho de bloco máximo que é usado para particionar um quadro de imagem. O MaxMttDepth descreve o limite superior para o número de divisões binárias ou ternárias consecutivas que podem ser aplicadas para obter um bloco filho. Como um exemplo, supondo que um tamanho de CTU seja 128x128 (largura igual a 128 e altura igual a 128), e que MaxMttDepth seja igual a 1, cada bloco precursor (128x128 em tamanho) pode primeiro ser dividido dois blocos filhos 128x64 usando divisão binária. Entretanto, os blocos filhos não podem se aplicar a qualquer divisão binária consecutiva (para resultar em blocos filhos 128x32 ou 64x64), visto que o número máximo permitido de divisões binárias é atingido. É observado que MaxMttDepth pode controlar uma profundidade de divisão binária máxima ou uma profundidade máxima de divisão ternária ou ambas ao mesmo tempo. Se isto controlar tanto a profundidade de divisão ternária quanto a ternária ao mesmo tempo, uma divisão binária seguida por uma divisão ternária pode ser contada como duas divisões hierárquicas. Convencionalmente, o MaxMttDepth (e seus elementos de sintaxe ‘max_mtt_hierarchy_depth_inter_slices’ e ‘max_mtt_hierarchy_depth_intra_slices’) são usados para indicar a profundidade de hierarquia máxima para as unidades de codificação resultantes das árvores de múltiplos tipos.
[0011] Além disso, ‘pic_width_in_luma_samples’ é um elemento de sintaxe que especifica um elemento de tamanho de imagem, isto é, a largura de cada imagem decodificada em unidades de amostras de luma. Pic_width_in_luma_samples não devem ser convencionalmente igual a 0 e deve ser um número inteiro múltiplo do MinCbSizeY.
[0012] Do mesmo modo, ‘pic_height_in_luma_samples’ é um elemento de sintaxe que especifica um elemento de tamanho de imagem, isto é, a altura de cada imagem decodificada em unidades de amostras de luma. Pic_height_in_luma_samples não deve ser convencionalmente igual a 0 e deve ser um número inteiro múltiplo de MinCbSizeY.
[0013] Um dos objetivos da codificação de vídeo é fornecer possivelmente alta qualidade com taxa possivelmente baixa. Um dos fatores contribuintes que podem contribuir para este objetivo é aumentar a eficácia da estrutura de fluxo de bits.
SUMÁRIO
[0014] Tendo em vista o problema mencionado acima, as modalidades da invenção visam melhorar a implantação atual do particionamento da imagem. Em particular, um objetivo é aumentar a disponibilidade e flexibilidade dos diferentes métodos de partição de imagem, isto é, métodos de particionamento de árvore binária, árvore quaternária e árvore ternária. Um objetivo é permitir a codificação e decodificação de mais tamanhos de imagem.
[0015] As modalidades da invenção são fornecidas nas reivindicações independentes anexas. As implantações da invenção são definidas adicionalmente nas reivindicações dependentes.
[0016] O anterior e outros objetivos são obtidos pela matéria objeto das reivindicações independentes. As formas de implantação adicionais são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[0017] As modalidades particulares são descritas nas reivindicações independentes anexas, com outras modalidades nas reivindicações dependentes.
[0018] Nas modalidades da invenção, as novas regras de particionamento são estabelecidas, particularmente, definindo-se relações entre os elementos de restrição de partição e sinalização de um fluxo de bits juntamente com as imagens codificadas. Estes podem ser usados para codificar dados de vídeo em um fluxo de bits e decodificar o fluxo de bits nos dados de vídeo decodificados.
[0019] De acordo com um primeiro aspecto, a invenção se refere a um dispositivo para decodificar ou processar um fluxo de bits incluindo imagens codificadas. O dispositivo inclui circuitos configurados para obter, a partir do fluxo de bits (101), um elemento de sintaxe; obter informações para um tamanho mínimo em amostras de luma de um bloco de folha de luma resultante de divisão de árvore quaternária, MinQtSizeY (105); determinar um tamanho máximo em amostras de luma de um bloco de raiz de luma pode ser dividido usando uma divisão de árvore binária, MaxBtSizeY (102) com base nas informações para MinQtSizeY (105) e no elemento de sintaxe obtido.
[0020] Ao definir novas regras de particionamento através de definição de relações entre estes elementos de restrição de partição, o dispositivo de decodificação facilita um aumento na disponibilidade e flexibilidade dos diferentes métodos de partição de imagem, particularmente, árvore quaternária e divisão de árvore binária.
[0021] Em uma possível forma de implantação do método, de acordo com o primeiro aspecto, os circuitos são configurados para determinar o MaxBtSizeY considerando que seu limite inferior é o MinQtSizeY.
[0022] Em uma possível forma de implantação do método, de acordo com o primeiro aspecto ou a implantação mencionada acima, o elemento de sintaxe é um elemento de sintaxe (301) de uma diferença, entre o logaritmo de base 2 do MinQtSizeY (105) e o logaritmo de base 2 do MaxBtSizeY (102).
[0023] Assim, os elementos de restrição de partição relevantes podem ser facilmente inferidos, por exemplo, no lado do decodificador, ao mesmo tempo que reduz a sobrecarga de informações no fluxo de bits. Uma diferença é um exemplo de uma relação. Entretanto, a relação também pode ser um fator de proporcionalidade, esquema de cálculo ou semelhantes, que permite inferir o MaxBtSizeY do MinQtSizeY.
[0024] Em uma possível forma de implantação do método, de acordo com o primeiro aspecto ou a implantação mencionada acima, o elemento de sintaxe é um elemento de sintaxe (301) de uma diferença, entre o MinQtSizeY (105) e o MaxBtSizeY (102), o elemento de sintaxe da diferença pode ser, isto é, log2_diff_max_bt_size_min_qt_size, sinalizando a referida diferença em escala logarítmica com base 2. Tal elemento de sintaxe de diferença fornece uma maneira compacta de sinalizar a diferença.
[0025] Em uma possível forma de implantação do método, de acordo com o primeiro aspecto ou a implantação mencionada acima, os circuitos são configurados para obter o elemento de sintaxe a partir do fluxo de bits dependente de uma profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um bloco de nó folha de árvore quaternária (MaxMttDepth) Assim, os elementos de restrição de partição relevantes podem ser inferidos, por exemplo, no lado do decodificador, ao mesmo tempo que reduz a sobrecarga de informações no fluxo de bits.
[0026] Além disso, ou alternativamente, os circuitos podem ser configurados para não obter qualquer elemento de sintaxe do MaxBtSizeY a partir do fluxo de bits, se o MaxMttDepth for igual a zero.
[0027] Além disso, ou alternativamente, os circuitos podem ser configurados para não obter o elemento de sintaxe a partir do fluxo de bits (101), se o MaxMttDepth (103) não for igual a zero.
[0028] De acordo com um segundo aspecto, a invenção se refere a um dispositivo para gerar ou processar um fluxo de bits incluindo imagens codificadas, o dispositivo (sendo configurado para: determinar um tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária, MinQtSizeY, determinar um tamanho de luma máximo de um bloco de codificação a ser dividido usando uma divisão de árvore binária, MaxBtSizeY com base no MinQtSizeY e incluir informações para o MinQtSizeY determinado no fluxo de bits.
[0029] Este método habilita uma implantação de codificador eficaz em que o fluxo gerado tem uma sintaxe compacta e decodificador habilitado para inferir os parâmetros de restrição de forma eficaz. As vantagens mencionadas acima para o lado do decodificador também se aplicam para o lado do codificador, no qual o fluxo de bits é gerado.
[0030] Em uma possível forma de implantação do método, de acordo com o segundo aspecto ou a implantação mencionada acima, o dispositivo (seus circuitos de processamento) é configurado para determinar o MaxBtSizeY considerando que seu limite inferior é o MinQtSizeY.
[0031] Em uma possível forma de implantação do método, de acordo com o segundo aspecto ou a implantação mencionada acima, o dispositivo para gerar ou processar um fluxo de bits pode ser adicionalmente configurado para incluir um elemento de sintaxe de uma diferença, entre o logaritmo de base 2 do MinQtSizeY (105) e o logaritmo de base 2 do MaxBtSizeY (102) no fluxo de bits (101) no fluxo de bits.
[0032] Em uma possível forma de implantação do método, de acordo com o segundo aspecto ou a implantação mencionada acima, o elemento de sintaxe é um elemento de sintaxe (301) de uma diferença, entre o MinQtSizeY (105) e o MaxBtSizeY (102), o elemento de sintaxe de diferença está sinalizando a referida diferença em escala logarítmica com a base 2.
[0033] Em uma possível forma de implantação do método, de acordo com o segundo aspecto ou a implantação mencionada acima, o dispositivo é configurado para incluir um elemento de sintaxe de um MaxBtSizeY, dependente de uma profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos, MaxMttDepth, no fluxo de bits.
[0034] Em adição ou alternativamente, o dispositivo é configurado para não incluir qualquer elemento de sintaxe do MaxBtSizeY no fluxo de bits, se o MaxMttDepth for igual a zero.
[0035] Em adição ou alternativamente, o dispositivo é configurado para incluir qualquer elemento de sintaxe do MaxBtSizeY no fluxo de bits, se o MaxMttDepth não for igual a zero.
[0036] De acordo com um terceiro aspecto, a invenção se refere a um método fornecido para gerar ou processar um fluxo de bits (incluindo imagens codificadas, incluindo as etapas de: determinar um tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária, MinQtSizeY, determinar um tamanho de luma máximo de um bloco de codificação a ser dividido usando uma divisão de árvore binária, MaxBtSizeY, com base no MinQtSizeY, e incluindo informações para o MinQtSizeY (105) determinado no fluxo de bits.
[0037] De acordo com um quarto aspecto, a invenção se refere a um método fornecido para decodificar ou processar um fluxo de bits incluindo imagens codificadas, compreendendo as etapas de: obter, a partir do fluxo de bits (101), um elemento de sintaxe; obter informações para um tamanho mínimo em amostras de luma de um bloco de folha de luma resultante de divisão de árvore quaternária, MinQtSizeY (105); determinar um tamanho máximo em amostras de luma de um bloco de raiz de luma pode ser dividido usando uma divisão de árvore binária, MaxBtSizeY (102) com base nas informações para MinQtSizeY (105) e no elemento de sintaxe obtido.
[0038] Pelo fato de que o método pode compreender adicionalmente determinar se a divisão binária é pode ser aplicada a um bloco de imagem com base no MaxBtSizeY; obter um bloco de codificação do bloco de imagem com base no resultado da determinação; e obter os valores de amostra reconstruídos do bloco de codificação.
[0039] Pelo fato de que o bloco de imagem pode ser um bloco de luma das imagens codificadas.
[0040] Pelo fato de que o elemento de sintaxe pode especificar uma diferença, entre o logaritmo de base 2 do MaxBtSizeY (102) e o logaritmo de base 2 do MinQtSizeY (105); ou o elemento de sintaxe pode especificar a diferença entre o MaxBtSizeY e o MinQtSizeY.
[0041] Em que o elemento de sintaxe pode ser do cabeçalho de fatia do fluxo de bits.
[0042] O método, de acordo com o terceiro aspecto da invenção pode ser realizado pelo aparelho, de acordo com o primeiro aspecto da invenção. As características e formas de implantação adicionais do método, de acordo com o primeiro aspecto da invenção correspondem às características e formas de implantação do aparelho, de acordo com o terceiro aspecto da invenção.
[0043] O método, de acordo com o quarto aspecto da invenção pode ser realizado pelo aparelho, de acordo com o segundo aspecto da invenção. As características e formas de implantação adicionais do método, de acordo com o segundo aspecto da invenção correspondem às características e formas de implantação do aparelho, de acordo com o quarto aspecto da invenção.
[0044] O método, de acordo com o segundo aspecto pode ser realizado em formas de implantação correspondentes às formas de implantação do primeiro aparelho, de acordo com o primeiro aspecto. Consequentemente, uma forma de implantação do método compreende a(s) característica(s) da forma de implantação correspondente do primeiro aparelho.
[0045] As vantagens dos métodos, de acordo com o quarto aspecto são as mesmas que as das formas de implantação correspondentes do método, de acordo com o terceiro aspecto.
[0046] De acordo com um quinto aspecto, a invenção se refere a um aparelho para decodificar um fluxo de vídeo inclui um processador e uma memória. A memória armazena instruções que fazem com que o processador realize o método, de acordo com o terceiro aspecto.
[0047] De acordo com um sexto aspecto, a invenção se refere a um aparelho para codificar um fluxo de vídeo que inclui um processador e uma memória. A memória armazena instruções que fazem com que o processador realize o método, de acordo com o quarto aspecto.
[0048] De acordo com um sétimo aspecto, uma mídia de armazenamento legível por computador tendo nela instruções armazenadas que, quando executadas, fazem com que um ou mais processadores configurados para codificar dados de vídeo sejam propostos. As instruções fazem com que um ou mais processadores realizem um método, de acordo com o terceiro ou quarto aspecto ou qualquer modalidade possível do terceiro ou quarto aspecto.
[0049] De acordo com um oitavo aspecto, a invenção se refere a um programa de computador compreendendo o código de programa para realizar o método, de acordo com o terceiro ou quarto aspecto ou qualquer modalidade possível do terceiro ou quarto aspecto quando executado em um computador.
[0050] Os detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outras características, objetivos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
[0051] De acordo com uma modalidade, um programa de computador produto é fornecido compreendendo o código de programa para controlar um dispositivo para realizar qualquer um dos métodos mencionados acima quando o código de programa é executado por um ou mais processadores do dispositivo.
[0052] Para fins de clareza, qualquer uma das modalidades reveladas neste relatório pode ser combinada com qualquer uma ou mais das outras modalidades para criar uma nova modalidade no escopo da presente revelação.
[0053] Estas e outras características serão mais claramente compreendidas a partir da seguinte descrição detalhada tomada em conjuntamente com os desenhos anexos e reivindicações.
[0054] Deve ser observado que todos os dispositivos, elementos, unidades e meios descritos no presente pedido podem ser implantados nos elementos de software ou hardware ou qualquer tipo de combinação dos mesmos. Todas as etapas que são realizadas pelas várias entidades descritas no presente pedido, bem como as funcionalidades descritas a serem realizadas pelas várias entidades, pretendem significar que a respectiva entidade está adaptada ou configurada para realizar as respectivas etapas e funcionalidades. Mesmo se, na seguinte descrição das modalidades específicas, uma funcionalidade ou etapa específica a ser realizada pelas entidades externas não seja refletida na descrição de um elemento detalho específico daquela entidade que realiza essa etapa ou funcionalidade específico, deve ser claro para um técnico no assunto que estes métodos e funcionalidades podem ser implantados nos respectivos elementos de software ou hardware ou qualquer tipo de combinação dos mesmos.
BREVE DESCRIÇÃO DOS DESENHOS
[0055] Os aspectos e formas de implantação descritos acima serão explicados na seguinte descrição das modalidades específicas em relação aos desenhos anexos, em que
[0056] A FIG. 1 mostra um dispositivo, de acordo com uma modalidade da invenção.
[0057] A FIG. 2 mostra uma sintaxe SPS RBSP para um dispositivo, de acordo com uma segunda modalidade específica da invenção.
[0058] A FIG. 3 mostra uma sintaxe de cabeçalho de fatia para um dispositivo, de acordo com uma segunda modalidade específica da invenção.
[0059] A FIG. 4 mostra uma sintaxe SPS RBSP para um dispositivo, de acordo com uma terceira modalidade específica da invenção.
[0060] A FIG. 5 mostra uma sintaxe de cabeçalho de fatia para um dispositivo, de acordo com uma quarta modalidade específica da invenção.
[0061] A FIG. 6 mostra uma sintaxe de cabeçalho de fatia para um dispositivo, de acordo com uma quarta modalidade específica da invenção.
[0062] A FIG. 7 mostra um método, de acordo com uma modalidade da invenção.
[0063] A FIG. 8 mostra uma sintaxe SPS RBSP convencional.
[0064] A FIG. 9 mostra uma sintaxe de cabeçalho de fatia convencional.
[0065] A FIG. 10 mostra um dispositivo, de acordo com uma modalidade da invenção.
[0066] A FIG. 11A é um diagrama de bloco que ilustra um sistema de codificação de exemplo que pode implantar as modalidades da revelação.
[0067] A FIG. 11B é um diagrama de bloco que ilustra outro sistema de codificação de exemplo que pode implantar as modalidades da revelação.
[0068] A FIG. 12 é um diagrama de bloco que ilustra um codificador de vídeo de exemplo que pode implantar as modalidades da revelação.
[0069] A FIG. 13 é um diagrama de bloco que ilustra um exemplo de um codificador de vídeo que pode implantar as modalidades da revelação.
[0070] A FIG. 14 é um diagrama esquemático de um dispositivo de rede, de acordo com uma modalidade da revelação.
[0071] A FIG. 15 é um diagrama de bloco simplificado de um aparelho que pode ser usado como um ou tanto o dispositivo de origem 12 quanto o dispositivo de destino 14 da FIG. 11A, de acordo com uma modalidade exemplar.
[0072] As FIGs. 16 A a F mostram diferentes modos de divisão de CU em VVC.
[0073] A FIG. 17A mostra uma partição QT forçada de CTU de fronteira inferior (128x128) de HD (1920x1080).
[0074] A FIG. 17B mostra uma partição BT forçada de CTU de fronteira inferior (128x128) de HD (1920x1080), de acordo com uma modalidade da revelação.
[0075] A FIG. 18 mostra uma definição de fronteira de exemplo.
[0076] A FIG. 19A mostra um exemplo de uma partição QTBT forçada em caso de canto, de acordo com uma modalidade da revelação.
[0077] A FIG. 19B mostra um exemplo de uma partição QTBT forçada para um bloco localizado em um canto, de acordo com uma modalidade da revelação.
[0078] A FIG. 20 mostra uma modalidade de uma definição de fronteira.
[0079] A FIG. 21 é um diagrama ilustrativo de um exemplo de particionamento de bloco usando uma estrutura de árvore binária de árvore quaternária (QTBT).
[0080] A FIG. 22 é um diagrama ilustrativo de um exemplo de estrutura de árvore correspondente ao particionamento de bloco usando a estrutura QTBT da FIG. 6.
[0081] A FIG. 23 é um diagrama ilustrativo de um exemplo de tipos de partição de árvore ternária horizontal.
[0082] A FIG. 24 é um diagrama ilustrativo de um exemplo de tipos de partição de árvore ternária vertical.
[0083] A FIG. 25 é um diagrama de bloco que mostra um exemplo de um codificador de vídeo configurado para implantar as modalidades da invenção;
[0084] A FIG. 26 é um diagrama de bloco que mostra uma estrutura de exemplo de um codificador de vídeo configurado para implantar as modalidades da invenção;
[0085] A FIG. 27 é um diagrama de bloco que mostra uma estrutura de exemplo de um sistema de fornecimento de conteúdo 3100 que realiza um serviço de liberação de conteúdo.
[0086] A FIG. 28 é um diagrama de bloco que mostra uma estrutura de um exemplo de um dispositivo terminal.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0087] Deve ser entendido desde o início que, embora uma implantação ilustrativa de uma ou mais modalidades seja fornecida abaixo, os sistemas e/ou métodos revelados podem ser implantados usando qualquer número de técnicas, sejam atualmente conhecidas ou existentes. A revelação não deve de forma alguma ser limitadas às implantações ilustrativas, desenhos e técnicas ilustradas abaixo, incluindo os projetos e implantações exemplares ilustrados e descritos neste relatório, mas podem ser modificadas no escopo das reivindicações anexas juntamente com seu escopo completo de equivalentes.
[0088] Na seguinte descrição, a referência será feita às figuras anexas, que fazem parte da revelação e que mostram, através de ilustração, aspectos específicos das modalidades da invenção ou aspectos específicos em que as modalidades da presente invenção podem ser usadas. É entendido que as modalidades da invenção podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não representadas nas figuras. A seguinte descrição detalhada, portanto, não deve ser tomada em um sentido limitante e o escopo da presente invenção é definido pelas reivindicações anexas.
[0089] Por exemplo, é entendido que uma revelação em relação a um método descrito também pode ser verdadeira para um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas do método específico forem descritas, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar uma ou a pluralidade de etapas do método descritas (por exemplo, uma unidade que realiza uma ou a pluralidade de etapas, ou uma pluralidade de unidades, que realiza, cada uma, uma ou mais da pluralidade de etapas), mesmo se tais ou mais unidades não forem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico for descrito com base em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir uma etapa para realizar a funcionalidade de uma ou a pluralidade de unidades (por exemplo, uma etapa que realiza a funcionalidade de uma ou a pluralidade de unidades, ou uma pluralidade de etapas, que realizam, cada uma, a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tais ou a pluralidade de etapas não forem explicitamente descritas ou ilustradas nas figuras. Além disso, é entendido que as características de várias modalidades exemplares e/ou aspectos descritos neste relatório podem ser combinadas entre si, a menos que especificamente observado de outro modo.
[0090] A codificação de vídeo tipicamente se refere ao processamento de uma sequência de imagens, que formam o vídeo ou a sequência de vídeos. Em vez do termo “imagem”, o termo “quadro” ou “foto” pode ser usado como sinônimo no campo de codificação de vídeo. A codificação de vídeo usada no presente pedido (ou presente revelação) indica a codificação de vídeo ou decodificação de vídeo. A codificação de vídeo é realizada no lado de origem, tipicamente compreendendo o processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados necessária para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficaz). A decodificação de vídeo é realizada no lado de destino e tipicamente compreende o processamento inverso comparado ao codificador para reconstruir as imagens de vídeo. As modalidades se referem à “codificação” de imagens de vídeo (ou imagens em geral, como será explicado adiante) devem ser entendidas em relação à “codificação” ou “decodificação” para a sequência de vídeos. A combinação da parte de codificação e da parte de decodificação também é referida como CODEC (Codificação e Decodificação).
[0091] No caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, isto é, as imagens de vídeo reconstruídas têm a mesma qualidade que as imagens de vídeo originais (assumindo nenhuma perda de transmissão ou outra perda de dados durante o armazenamento ou transmissão). No caso de codificação de vídeo com perdas, a compressão adicional, por exemplo, por quantização, é realizada, para reduzir a quantidade de dados que representa as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, isto é, a qualidade das imagens de vídeo reconstruídas é inferior ou pior comparado à qualidade das imagens de vídeo originais.
[0092] Vários padrões de codificação de vídeo desde H.261 pertencem ao grupo de “codecs de vídeo híbridos com perdas” (isto é, combinam predição espacial e temporal no domínio de amostra e codificação de transformada 2D para aplicar a quantização no domínio de transformada). Cada imagem de uma sequência de vídeos é tipicamente particionada em um conjunto de blocos não sobrepostos e a codificação é tipicamente realizada em um nível de bloco. Em outras palavras, no codificador, o vídeo é tipicamente processado, isto é, codificado, em um nível de bloco (bloco de vídeo), por exemplo, por meio do uso de predição espacial (imagem intra) e predição temporal (imagem inter) para gerar um bloco de predição, subtraindo o bloco de predição do bloco atual (bloco atualmente processado/a ser processado) para obter um bloco residual, que transforma o bloco residual e quantizando o bloco residual no domínio de transformada para reduzir a quantidade de dados a serem transmitidos (compressão), enquanto no decodificador, o processamento inverso comparado ao codificador é parcialmente aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para a representação. Além disso, o codificador duplica o loop de processamento de decodificador de modo que ambos irão gerar predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para o processamento, isto é, codificação dos blocos subsequentes.
[0093] Como usado neste relatório, o termo “bloco” pode ser uma parte de uma imagem ou um quadro. Por conveniência da descrição, as modalidades da invenção são descritas neste relatório em referência à Codificação de Vídeo de Alta Eficácia (HEVC) ou ao software de referência da Codificação de Vídeo Versátil (VVC), desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). Um técnico no assunto entenderá que as modalidades da invenção não estão limitadas à HEVC ou VVC. Pode se referir a uma CU (unidades de codificação), PU (unidades de predição) e TU (unidades de transformada). Em HEVC, uma CTU (unidade de árvore de codificação) é dividida em CUs por meio do uso de uma estrutura de árvore quaternária denotada como árvore de codificação. A decisão de codificar uma área de imagem usando predição de imagem inter (temporal) ou imagem intra (espacial) é feita no nível de CU. Cada CU pode ser dividida adicionalmente em uma, duas ou quatro PUs, de acordo com o tipo de divisão de PU. Dentro de uma PU, o mesmo processo de predição é aplicado e as informações relevantes são transmitidas para o decodificador com base na PU. Depois de obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs), de acordo com outra estrutura de árvore quaternária similar à árvore de codificação para a CU. No desenvolvimento mais recente da técnica de compressão de vídeo, o quadro de particionamento de Árvore quaternária e Árvore Binária (QTBT) é usado para particionar um bloco de codificação. Na estrutura de bloco QTBT, uma CU pode ter um formato quadrado ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é particionada primeira por uma estrutura de árvore quaternária. O nó de nós de árvore quaternária são particionados adicionalmente por uma estrutura de árvore binária. Os nós folha de árvore binária são chamados de unidades de codificação (CUs), e esta segmentação é usada para prever e transformar o processamento sem qualquer particionamento adicional. Isto significa que a CU, PU e TU têm o mesmo tamanho de bloco na estrutura de bloco de codificação de QTBT. Em paralelo, a partição múltipla, por exemplo, partição de Árvore binária (TT) também foi proposta para ser usada juntamente com a estrutura de bloco QTBT. O termo “dispositivo” também pode ser “aparelho”, “decodificador” ou “codificador”.
[0094] Nas seguintes modalidades de um codificador 20, um decodificador 30 e um sistema de codificação 10 são descritos com base nas Figs. 11 a 13.
[0095] Na seguinte descrição, a referência será feita às figuras anexas, que fazem parte da revelação e que mostram, através de ilustração, aspectos específicos das modalidades da invenção ou aspectos específicos em que as modalidades da presente invenção podem ser usadas. É entendido que as modalidades da invenção podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não representadas nas figuras. A seguinte descrição detalhada, portanto, não deve ser tomada em um sentido limitante e o escopo da presente invenção é definido pelas reivindicações anexas.
[0096] Por exemplo, é entendido que uma revelação em relação a um método descrito também pode ser verdadeira para um dispositivo correspondente ou sistema configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas do método específico forem descritas, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar uma ou a pluralidade de etapas do método descritas (por exemplo, uma unidade que realiza uma ou a pluralidade de etapas, ou uma pluralidade de unidades, que realizam, cada uma, uma ou mais da pluralidade de etapas), mesmo se uma ou tais unidades não forem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico for descrito com base em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir uma etapa para realizar a funcionalidade de uma ou a pluralidade de unidades (por exemplo, uma etapa que realiza a funcionalidade de uma ou a pluralidade de unidades, ou uma pluralidade de etapas que realizam, cada uma, a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se uma ou tal pluralidade de etapas não for explicitamente descrita ou ilustrada nas figuras. Além disso, é entendido que as características das várias modalidades exemplares e/ou aspectos descritos neste relatório podem ser combinadas umas com as outras, a menos que especificamente observado de outro modo.
[0097] A codificação de vídeo tipicamente se refere ao processamento de uma sequência de imagens, que forma o vídeo ou sequência de vídeos. Em vez do termo “imagem”, o termo “quadro” ou “foto” pode ser usado como sinônimo no campo de codificação de vídeo. A codificação de vídeo usada no presente pedido (ou presente revelação) indica codificação de vídeo ou decodificação de vídeo. A codificação de vídeo é realizada no lado de origem, tipicamente compreendendo processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados necessária para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficaz). A decodificação de vídeo é realizada no lado de destino e tipicamente compreende o processamento inverso comparado ao codificador para reconstruir as imagens de vídeo. As modalidades se referem à “codificação” de imagens de vídeo (ou imagens em geral, como será explicado adiante) devem ser entendidas em relação à “codificação” ou “decodificação” para a sequência de vídeos. A combinação da parte de codificação e da parte de decodificação também é referida como CODEC (Codificação e Decodificação).
[0098] Em caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, isto é, as imagens de vídeo reconstruídas têm a mesma qualidade que as imagens de vídeo originais (assumindo nenhuma perda de transmissão ou outra perda de dados durante o armazenamento ou transmissão). Em caso de codificação de vídeo com perdas, a compressão adicional, por exemplo, por quantização, é realizada, para reduzir a quantidade de dados que representa as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, isto é, a qualidade das imagens de vídeo reconstruídas é inferior ou pior comparada à qualidade das imagens de vídeo originais.
[0099] Os vários padrões da codificação de vídeo desde H.261 pertencem ao grupo de “codecs de vídeo híbridos com perdas” (isto é, combinam a predição espacial e temporal no domínio de amostra e codificação de transformada 2D para aplicar a quantização no domínio de transformada). Cada imagem de uma sequência de vídeos é tipicamente particionada em um conjunto de blocos não sobrepostos e a codificação é tipicamente realizada em um nível de bloco. Em outras palavras, no codificador, o vídeo é tipicamente processado, isto é, codificado, em um nível de bloco (bloco de vídeo), por exemplo, por meio do uso de predição espacial (imagem intra) e predição temporal (imagem inter) para gerar um bloco de predição, subtraindo o bloco de predição do bloco atual (bloco atualmente processado/a ser processada) para obter um bloco residual, que transforma o bloco residual e quantiza o bloco residual no domínio de transformada para reduzir a quantidade de dados a ser transmitida (compressão), enquanto no decodificador, o processamento inverso comparado ao codificador é parcialmente aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para a representação. Além disso, o codificador duplica o loop de processamento de decodificador, tal que ambas irão gerar as predições idênticas (por exemplo, predições intra e inter) e/ou reconstruir para o processamento, isto é, codificar os blocos subsequentes.
[0100] Como usado neste relatório, o termo “bloco” pode ser uma parte de uma imagem ou um quadro. Por conveniência da descrição, as modalidades da invenção são descritas neste relatório em referência à Codificação de Vídeo de Alta Eficácia (HEVC) ou ao software de referência da Codificação de Vídeo Versátil (VVC), desenvolvido pela Equipe de Colaboração Conjunta na Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T A (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). Um técnico no assunto entenderá que as modalidades da invenção não são limitadas à HEVC ou VVC. Pode se referir a uma CU (unidades de codificação), PU (unidades de predição) e TU (unidades de transformada). Em HEVC, uma CTU (unidade de árvore de codificação) é dividida em CUs por meio do uso de uma estrutura de árvore quaternária denotada como árvore de codificação. A decisão de codificar uma área de imagem usando predição de imagem inter (temporal) ou imagem intra (espacial) é feita no nível de CU. Cada CU pode ser dividida adicionalmente em uma, duas ou quatro PUs, de acordo com o tipo de divisão de PU. Dentro de uma PU, o mesmo processo de predição é aplicado e as informações relevantes são transmitidas para o decodificador com base em uma PU. Depois de obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs), de acordo com outra estrutura de árvore quaternária similar à árvore de codificação para a CU. No desenvolvimento mais recente da técnica de compressão de vídeo, o quadro de particionamento de Árvore quaternária e Árvore Binária (QTBT) é usado para particionar um bloco de codificação. Na estrutura de bloco QTBT, uma CU pode ter um formato quadrado ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é particionada primeiro por uma estrutura de árvore quaternária. O nó de nós de árvore quaternária são particionados adicionalmente por uma estrutura de árvore binária. Os nós folha de árvore binária são chamados de unidades de codificação (CUs), e esta segmentação é usada para prever e transformar o processamento sem qualquer particionamento adicional. Isto significa que a CU, PU e TU têm o mesmo tamanho de bloco na estrutura de bloco de codificação de QTBT. Em paralelo, a partição múltipla, por exemplo, partição de Árvore Ternária (TT) também foi proposta para ser usada juntamente com a estrutura de bloco QTBT. O termo “dispositivo” também pode ser “aparelho”, “decodificador” ou “codificador”.
[0101] Nas seguintes modalidades de um codificador 20, um decodificador 30 e um sistema de codificação 10 são descritos com base nas Figs. 11 a 13.
[0102] A FIG. 11A é um diagrama de bloco esquemático ou conceitual que ilustra um sistema de codificação de exemplo 10, por exemplo, um sistema de codificação de vídeo 10 que pode utilizar técnicas deste presente pedido (presente revelação). O codificador 20 (por exemplo, codificador de vídeo 20) e o decodificador 30 (por exemplo, decodificador de vídeo 30) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas de acordo com vários exemplos descritos no presente pedido. Como mostrado na FIG. 11A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer dados codificados 13, por exemplo, uma imagem codificada 13, por exemplo, para um dispositivo de destino 14 para a decodificação de dados codificados 13.
[0103] O dispositivo de origem 12 compreende um codificador 20 e pode, adicionalmente, isto é, opcionalmente, compreender uma fonte de imagem 16, uma unidade de pré-processamento 18, por exemplo, uma unidade de pré-processamento de imagem 18 e uma interface de comunicação ou unidade de comunicação 22.
[0104] A fonte de imagem 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, para capturar uma imagem do mundo real e/ou qualquer tipo de uma imagem ou comentário (para a codificação de conteúdo de visor, alguns textos no visor também são considerados uma parte de uma imagem ou foto a ser codificada) que gere o dispositivo, por exemplo, um processador gráfico de computador para gerar uma imagem animada por computador, ou qualquer tipo de dispositivo para obter e/ou fornecer uma imagem do mundo real, uma imagem animada por computador (por exemplo, um conteúdo de visor, uma imagem de realidade virtual (VR)) e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (AR)). A fonte de imagem pode ser qualquer tipo de memória ou armazenamento que armazene qualquer uma das imagens mencionadas anteriormente.
[0105] Uma imagem (digital) é ou pode ser considerada como um arranjo bidimensional ou matriz de amostras com valores de intensidade. Uma amostra no arranjo também pode ser referida como pixel (forma abreviada de elemento de imagem) ou um pel. O número de amostras na direção horizontal e vertical (ou eixo) do arranjo ou imagem define o tamanho e/ou resolução da imagem. Para a representação de cor, tipicamente três componentes de cor são utilizados, isto é, a imagem pode ser representada ou incluir três arranjos de amostra. No formato RBG ou espaço de cor, uma imagem compreende um arranjo de amostra vermelho, verde e azul correspondente. Entretanto, na codificação de vídeo, cada pixel é tipicamente representado em um formato de luminância/crominância ou espaço de cor, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (às vezes L também é usado no lugar) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou luma, abreviado) Y representa o brilho ou intensidade do nível de cinza (por exemplo, como em uma imagem de escala de cinza), enquanto os dois componentes de crominância (ou croma, abreviado) Cb e Cr representam a cromaticidade ou componentes de informações de cor. Consequentemente, uma imagem no formato YCbCr compreende um arranjo de amostra de luminância de valores de amostra de luminância (Y), e dois arranjos de amostra de crominância de valores de crominância (Cb e Cr). As imagens no formato RGB podem ser convertidas ou transformadas no formato YCbCr e vice-versa, o processo também é conhecido como transformação ou conversão de cores. Se uma imagem for monocromática, a imagem pode compreender apenas um arranjo de amostra de luminância.
[0106] A fonte de imagem 16 (por exemplo, fonte de vídeo 16) pode ser, por exemplo, uma câmera para capturar uma imagem, uma memória, por exemplo, uma memória de imagem, compreendendo ou armazenando uma imagem previamente capturada ou gerada, e/ou qualquer tipo de interface (interna ou externa) para obter ou receber uma imagem. A câmera pode ser, por exemplo, uma câmera local ou integrada, integrada no dispositivo de origem, A memória pode ser uma memória local ou integrada, por exemplo,
integrada no dispositivo de origem. A interface pode ser, por exemplo, uma interface externa para receber uma imagem de uma fonte de vídeo externa, por exemplo, um dispositivo de captura de imagem externo como uma câmera, uma memória externa, ou uma imagem externa que gere o dispositivo, por exemplo, um processador gráfico de computador externo, computador ou servidor. A interface pode ser qualquer tipo de interface, por exemplo, uma interface com fio ou sem fio, uma interface óptica, de acordo com qualquer protocolo de interface patenteado ou padronizado. A interface para obter os dados de imagem 17 pode ser a mesma interface ou uma parte da interface de comunicação 22.
[0107] Em distinção à unidade de pré-processamento 18 e o processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 (por exemplo, dados de vídeo 16) também podem ser referidos como imagem bruta ou dados de imagem brutos 17.
[0108] A unidade de pré-processamento 18 é configurada para receber os dados de imagem (brutos) 17 e para realizar o pré-processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem pré-processados 19. O pré-processamento realizado pela unidade de pré-processamento 18 pode, por exemplo, compreender corte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor ou eliminação de ruído. Pode ser entendido que a unidade de pré-processamento 18 pode ser o componente opcional.
[0109] O codificador 20 (por exemplo, codificador de vídeo 20) é configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (os detalhes adicionais serão descritos abaixo, por exemplo, com base na FIG. 12 ou FIG. 14).
[0110] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir os dados de imagem codificados 21 (ou qualquer versão processada adicional dos mesmos) através do canal de comunicação 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[0111] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta, ou para processar os dados de imagem codificados 21 para, respectivamente, antes de armazenar os dados codificados 13 e/ou transmitir os dados codificados 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo para a decodificação ou armazenamento.
[0112] O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30) e pode, adicionalmente, isto é, opcionalmente, compreender uma interface de comunicação ou unidade de comunicação 28, uma unidade de pós-processamento 32 e um dispositivo de exibição 34.
[0113] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer versão processada adicional dos mesmos), por exemplo, diretamente do dispositivo de origem 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados e fornecer os dados de imagem codificados 21 para o decodificador 30.
[0114] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 ou os dados codificados 13, por exemplo, diretamente do dispositivo de origem 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados.
[0115] A interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas para transmitir ou receber os dados de imagem codificados 21 ou dados codificados 13 através de um enlace de comunicação direto entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão direta com fio ou sem fio ou através de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer combinação da mesma ou, qualquer tipo de rede privada e pública ou qualquer tipo de combinação das mesmas.
[0116] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, pacotes, e/ou processar os dados de imagem codificados usando qualquer tipo de codificação de transmissão ou processamento para a transmissão através de um enlace de comunicação ou rede de comunicação.
[0117] A interface de comunicação 28, que forma a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para desempacotar os dados codificados 13 para obter os dados de imagem codificados 21.
[0118] A interface de comunicação 28, que forma a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de decodificação ou processamento e/ou desempacotamento de transmissão correspondente para obter os dados de imagem codificados 21.
[0119] Tanto a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais como indicado pela seta para os dados de imagem codificados 13 na FIG. 11A apontando do dispositivo de origem 12 para o dispositivo de destino 14 ou interfaces de comunicação bidirecionais e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para reconhecer e trocar quaisquer outras informações relacionadas ao enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificados.
[0120] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (os detalhes adicionais serão descritos abaixo, por exemplo, com base na FIG. 13 ou FIG. 15).
[0121] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também chamados de dados de imagem reconstruídos), por exemplo, a imagem decodificada 31, para obter dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, corte ou reamostragem ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para a exibição, por exemplo, pelo dispositivo de exibição 34.
[0122] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processados 33 para a exibição da imagem, por exemplo, para um usuário ou observador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de visor para representar a imagem reconstruída, por exemplo, um visor ou monitor integrado ou externo. O visor pode, por exemplo, compreender visores de cristal líquido (LCD), visores de diodos emissores de luz orgânicos (OLED), visores de plasma, projetores, visores de micro LED, cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer tipo de outro visor.
[0123] Embora a FIG. 11A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades dos dispositivos também podem compreender ambas as funcionalidades, tanto o dispositivo de origem 12 ou a funcionalidade correspondente quanto o dispositivo de destino 14 ou a funcionalidade correspondente. Em tais modalidades, o dispositivo de origem 12 ou a funcionalidade correspondente e o dispositivo de destino 14 ou a funcionalidade correspondente podem ser implantados usando o mesmo hardware e/ou software ou pelo hardware e/ou software separado ou qualquer combinação dos mesmos.
[0124] Como será evidente para o técnico no assunto com base na descrição, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou dispositivo de destino 14, como mostrado na FIG. 11A, podem variar, dependendo do dispositivo e aplicação reais.
[0125] O codificador 20 (por exemplo, um codificador de vídeo 20) e o decodificador 30 (por exemplo, um decodificador de vídeo 30), cada um, podem ser implantados como qualquer um de uma variedade de circuitos adequados, tais como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos da aplicação (ASICs), arranjos de porta programável em campo (FPGAs), lógica discreta, hardware ou quaisquer combinações dos mesmos. Se as técnicas forem implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia de armazenamento legível por computador não transitória adequada e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta revelação. Qualquer um do anterior (incluindo hardware, software, uma combinação de hardware e software, etc.) pode ser considerado para ser um ou mais processadores. Cada um do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais podem ser integrados como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo.
[0126] O codificador 20 pode ser implantado através de circuitos de processamento 46 para incorporar os vários módulos como discutido em relação ao codificador 20 da FIG. 12 e/ou qualquer outro sistema de codificador ou subsistema descrito neste relatório. O decodificador 30 pode ser implantado através de circuitos de processamento 46 para incorporar os vários módulos como discutido em relação ao decodificador 30 da FIG. 13 e/ou qualquer outro sistema de decodificador ou subsistema descrito neste relatório. Os circuitos de processamento podem ser configurados para realizar as várias operações como discutido adiante. Como mostrado na FIG. 15, se as técnicas forem implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia de armazenamento legível por computador não transitória adequada e pode executar as instruções no hardware usando um ou mais processadores para realizar as técnicas desta revelação. Tanto o codificador de vídeo 20 quanto o decodificador de vídeo 30 podem ser integrados como parte de um codificador/decodificador combinado (CODEC) em um único dispositivo, por exemplo, como mostrado na FIG. 11B.
[0127] O dispositivo de origem 12 pode ser referido como um dispositivo de codificação de vídeo ou um aparelho de codificação de vídeo. O dispositivo de destino 14 pode ser referido como um dispositivo de decodificação de vídeo ou um aparelho de decodificação de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 podem ser exemplos do dispositivo de codificação de vídeos ou dos aparelhos de codificação de vídeo.
[0128] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla faixa de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou fixos, por exemplo, computadores notebook ou laptop, telefones móveis, smartphones, computadores tabletes ou tablet, câmeras, computadores de área de trabalho, set-top boxes, televisões,
dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivos de transmissão de vídeo (tais como servidores de serviços de conteúdo ou servidores de liberação de conteúdo), dispositivo receptor de broadcast, dispositivo transmissor de broadcast ou semelhantes e podem utilizar nenhum ou qualquer tipo de sistema operacional.
[0129] Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para a comunicação sem fio. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0130] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na FIG. 11A é meramente um exemplo e as técnicas do presente pedido podem se aplicar às configurações de codificação de vídeo (por exemplo, a codificação de vídeo ou a decodificação de vídeo) que não necessariamente incluem qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados são recuperados a partir de uma memória local, transmitidos através de uma rede ou semelhantes. Um dispositivo de codificação de vídeo pode codificar e armazenar dados para a memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados da memória. Em alguns exemplos, a codificação e a decodificação são realizadas pelos dispositivos que não comunicam uns com os outros, mas simplesmente codificam dados para a memória e/ou recuperam e decodificam dados da memória.
[0131] Por conveniência da descrição, as modalidades da invenção são descritas neste relatório, por exemplo, para referência à Codificação de Vídeo de Alta Eficácia (HEVC) ou para o software de referência da Codificação de Vídeo Versátil (VVC), do padrão de codificação de vídeo da próxima geração desenvolvido pela Equipe de Colaboração Conjunta na Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialista em Imagem em Movimento ISO/IEC (MPEG). Um técnico no assunto entenderá que as modalidades da invenção não são limitadas à HEVC ou VVC. Deve ser entendido que, para cada um dos exemplos descritos acima com referência ao codificador de vídeo 20, o decodificador de vídeo 30 pode ser configurado para realizar um processo recíproco. Em relação aos elementos de sintaxe de sinalização, o decodificador de vídeo 30 pode ser configurado para receber e analisar tal elemento de sintaxe e decodificar os dados de vídeo associados consequentemente. Em alguns exemplos, o codificador de vídeo 20 pode codificar com entropia um ou mais elementos de sintaxe no fluxo de bits de vídeo codificado. Em tais exemplos, o decodificador de vídeo 30 pode analisar tal elemento de sintaxe e decodificar os dados de vídeo associados consequentemente.
[0132] A FIG. 11B é um diagrama ilustrativo de outro sistema de codificação de vídeo de exemplo 40 incluindo o codificador 20 da FIG. 12 e/ou decodificador 30 da FIG. 13, de acordo com uma modalidade exemplar. O sistema 40 pode implantar técnicas de acordo com vários exemplos descritos no presente pedido. Na implantação ilustrada, o sistema de codificação de vídeo 40 pode incluir dispositivo(s) de geração de imagem 41, codificador de vídeo 100, decodificador de vídeo 30 (e/ou um codificador de vídeo implantado através de circuitos lógicos 47 de unidade(s) de processamento 46), uma antena 42, um ou mais processador(es) 43, um ou mais armazenamento(s) de memória 44 e/ou um dispositivo de exibição 45.
[0133] Como ilustrado, dispositivo(s) de geração de imagem 41, antena 42, unidade(s) de processamento 46, circuitos lógicos 47, codificador de vídeo 20, decodificador de vídeo 30, processador(es) 43, armazenamento(s) de memória 44 e/ou dispositivo de exibição 45, podem ser capazes de se comunicar um com o outro. Como discutido, embora ilustrado tanto com o codificador de vídeo 20 quanto com o decodificador de vídeo 30, o sistema de codificação de vídeo 40 pode incluir apenas o codificador de vídeo 20 ou apenas o decodificador de vídeo 30 em vários exemplos.
[0134] Como mostrado, em alguns exemplos, o sistema de codificação de vídeo 40 pode incluir a antena 42. A antena 42 pode ser configurada para transmitir ou receber um fluxo de bits codificado dos dados de vídeo, por exemplo. Além disso, em alguns exemplos, o sistema de codificação de vídeo 40 pode incluir o dispositivo de exibição 45. O dispositivo de exibição 45 pode ser configurado para apresentar os dados de vídeo. Como mostrado, em alguns exemplos, os circuitos lógicos 47 podem ser implantados através de unidade(s) de processamento 46. A(s) unidade(s) de processamento 46 podem incluir a lógica de circuito integrado específico da aplicação (ASIC), processador(es) gráficos, processador(es) de uso geral ou semelhantes. O sistema de codificação de vídeo 40 também pode incluir processador(es) opcional 43, que pode similarmente incluir a lógica de circuito integrado específico da aplicação (ASIC), processador(es) gráficos, processador(es) de uso geral ou semelhantes. Em alguns exemplos, os circuitos lógicos 47 podem ser implantados através de hardware, hardware dedicado de codificação de vídeo ou semelhantes e processador(es) 43 podem implantar o software de uso geral, sistemas operacionais ou semelhantes. Além disso, armazenamento(s) de memória 44 pode ser qualquer tipo de memória, tal como memória volátil (por exemplo, Memória de Acesso Aleatório Estática (SRAM), Memória de Acesso Aleatório Dinâmica (DRAM), etc.) ou memória não volátil (por exemplo, memória flash, etc.) e assim por diante. Em um exemplo não limitante, armazenamento(s) de memória 44 pode ser implantado por memória cache. Em alguns exemplos, os circuitos lógicos 47 podem acessar armazenamento(s) de memória 44 (para a implantação de um buffer de imagem, por exemplo). Em outros exemplos, os circuitos lógicos 47 e/ou unidade(s) de processamento 46 podem incluir armazenamentos de memória (por exemplo, cache ou semelhantes) para a implantação de um buffer de imagem ou semelhantes.
[0135] Em alguns exemplos, o codificador de vídeo 100 implantado através de circuitos lógicos pode incluir um buffer de imagem (por exemplo, através de unidade(s) de processamento 46 ou armazenamento(s) de memória 44)) e uma unidade de processamento gráfico (por exemplo, através de unidade(s) de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao buffer de imagem. A unidade de processamento gráfico pode incluir o codificador de vídeo 100 como implantado através de circuitos lógicos 47 para incorporar os vários módulos como discutido em relação à FIG. 12 e/ou qualquer outro sistema de codificador ou subsistema descrito neste relatório. Os circuitos lógicos podem ser configurados para realizar as várias operações como discutido neste relatório.
[0136] O decodificador de vídeo 30 pode ser implantado de uma maneira similar como implantado através de circuitos lógicos 47 para incorporar os vários módulos como discutido em relação ao decodificador 30 da FIG. 13 e/ou qualquer outro sistema de decodificador ou subsistema descrito neste relatório. Em alguns exemplos, o decodificador de vídeo 30 pode ser implantado através de circuitos lógicos pode incluir um buffer de imagem (por exemplo, através da unidade(s) de processamento 420 ou armazenamento(s) de memória 44)) e uma unidade de processamento gráfico (por exemplo, através de unidade(s) de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao buffer de imagem. A unidade de processamento gráfico pode incluir o decodificador de vídeo 30 como implantado através de circuitos lógicos 47 para incorporar os vários módulos como discutido em relação à FIG. 13 e/ou qualquer outro sistema de decodificador ou subsistema descrito neste relatório.
[0137] Em alguns exemplos, a antena 42 do sistema de codificação de vídeo 40 pode ser configurada para receber um fluxo de bits codificado dos dados de vídeo. Como discutido, o fluxo de bits codificado pode incluir dados, indicadores, valores de índice, dados de seleção de modo ou semelhantes, associados à codificação de um quadro de vídeo como discutido neste relatório, tal como os dados associados à partição de codificação (por exemplo, coeficientes de transformada ou coeficientes de transformada quantizados, indicadores opcionais (como discutido), e/ou dados que definem a partição de codificação). O sistema de codificação de vídeo 40 também pode incluir o decodificador de vídeo 30 acoplado à antena 42 e configurado para decodificar o fluxo de bits codificado. O dispositivo de exibição 45 configurado para apresentar os quadros de vídeo.
[0138] A FIG. 12 mostra um diagrama de bloco esquemático/conceitual de um codificador de vídeo de exemplo 20 que é configurado para implantar as técnicas do presente pedido. No exemplo da FIG. 12, o codificador de vídeo 20 compreende uma unidade de cálculo residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214, um buffer 216, uma unidade de filtro loop 220, um buffer de imagem decodificada (DPB) 230, uma unidade de processamento de predição 260 e uma unidade de codificação de entropia 270. A unidade de processamento de predição 260 pode incluir uma unidade de predição inter 244, uma unidade de predição intra 254 e uma unidade de seleção de modo
262. A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostradas).
Um codificador de vídeo 20, como mostrado na FIG. 12, também pode ser referido como codificador de vídeo híbrido ou um codificador de vídeo, de acordo com um codec de vídeo híbrido.
[0139] Por exemplo, a unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de processamento de predição 260 e a unidade de codificação de entropia 270 formam uma trajetória de sinal direta do codificador 20, enquanto, por exemplo, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro loop 220, o buffer de imagem decodificada (DPB) 230 e a unidade de processamento de predição 260 formam uma trajetória de sinal indireta do codificador, em que a trajetória de sinal indireta do codificador corresponde à trajetória de sinal do decodificador (ver o decodificador 30 na FIG. 13).
[0140] A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 também são referidos formando o “decodificador embutido” do codificador de vídeo 20. O codificador 20 é configurado para receber, por exemplo, pela entrada 202, uma imagem 201 ou um bloco 203 da imagem 201, por exemplo, imagem de uma sequência de imagens que forma um vídeo ou sequência de vídeos. O bloco de imagem 203 também pode ser referido como bloco atual de imagem ou bloco de imagem a ser codificado, e a imagem 201 como imagem atual ou imagem a ser codificada (em particular, na codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagens previamente codificadas e/ou decodificadas da mesma sequência de vídeos, isto é, a sequência de vídeos que também compreende a imagem atual).
[0141] Uma imagem (digital) é ou pode ser considerada como um arranjo bidimensional ou matriz de amostras com valores de intensidade. Uma amostra no arranjo também pode ser referida como pixel (forma abreviada de elemento de imagem) ou um pel. O número de amostras na direção horizontal e vertical (ou eixo) do arranjo ou imagem define o tamanho e/ou resolução da imagem. Para a representação de cor, tipicamente três componentes de cor são utilizados, isto é, a imagem pode ser representada ou incluir três arranjos de amostra. No formato RBG ou espaço de cor, uma imagem compreende um arranjo de amostra vermelho, verde e azul correspondente. Entretanto, na codificação de vídeo, cada pixel é tipicamente representado em um formato de luminância e crominância ou espaço de cor, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (às vezes, L também é usado no lugar) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou luma, abreviado) Y representa o brilho ou intensidade do nível de cinza (por exemplo, como em uma imagem de escala de cinza), enquanto os dois componentes de crominância (ou croma, abreviado) Cb e Cr representam a cromaticidade ou componentes de informações de cor. Consequentemente, uma imagem em formato YCbCr compreende um arranjo de amostra de luminância de valores de amostra de luminância (Y) e dois arranjos de amostra de crominância de valores de crominância (Cb e Cr). As imagens em formato RGB podem ser convertidas ou transformadas em formato YCbCr e vice-versa, o processo também é conhecido como transformação ou conversão de cores. Se uma imagem for monocromática, a imagem pode compreender apenas um arranjo de amostra de luminância. Consequentemente, uma imagem pode ser, por exemplo, um arranjo de amostras de luma em formato monocromático ou um arranjo de amostras de luma e dois arranjos correspondentes de amostras de croma no formato de coloração 4:2:0, 4:2:2 e 4:4:4.
PARTICIONAMENTO
[0142] As modalidades do codificador 20 podem compreender uma unidade de particionamento (não representada na FIG. 12) configurada para particionar a imagem 201 em uma pluralidade de (tipicamente não sobrepostos) blocos de imagem 203. Estes blocos também podem ser referidos como os blocos de raiz, macros blocos (H,264/AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265/HEVC e VVC). A unidade de particionamento pode ser configurada para utilizar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeos e a grade correspondente que define o tamanho de bloco ou para alterar o tamanho de bloco entre as imagens ou subconjuntos ou grupos de imagens e particionar cada imagem nos blocos correspondentes.
[0143] Nas modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 201, por exemplo, um, vários ou todos os blocos que formam a imagem 201. O bloco de imagem 203 também pode ser referido como bloco atual de imagem ou bloco de imagem a ser codificado. Em um exemplo, a unidade de processamento de predição 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas acima.
[0144] Como a imagem 201, o bloco 203 novamente é ou pode ser considerado como um arranjo bidimensional ou matriz de amostras com valores de intensidade (valores de amostra), embora de menor dimensão do que a imagem 201. Em outras palavras, o bloco 203 pode compreender, por exemplo, um arranjo de amostra (por exemplo, um arranjo de luma em caso de uma imagem monocromática 201) ou três arranjos de amostra (por exemplo, um luma e dois arranjos de croma em caso de uma imagem colorida 201) ou qualquer outro número e/ou tipo de arranjos que depende do formato de cor aplicado. O número de amostras na direção horizontal e vertical (ou eixo) do bloco 203 define o do bloco 203. Consequentemente, um bloco pode ser, por exemplo, um arranjo de amostras MxN (coluna M pela linha N) ou um arranjo MxN de coeficientes de transformada.
[0145] O codificador 20 mostrado na FIG. 12 é configurado para codificar a imagem 201, bloco por bloco, por exemplo, a codificação e a predição são realizadas por bloco 203.
[0146] As modalidades do codificador de vídeo 20 mostrado na FIG. 12 podem ser configuradas adicionalmente para particionar e/ou codificar a imagem por meio do uso de fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou codificada usando uma ou mais fatias (tipicamente não sobrepostas) e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, tiles (H.265/HEVC e VVC) ou bricks (VVC)).
[0147] As modalidades do codificador de vídeo 20 mostrado na FIG. 12 podem ser configuradas adicionalmente para particionar e/ou codificar a imagem por meio do uso de fatias/grupos de tile (também referidos como grupos de tile de vídeo) e/ou tiles (também referidas como tiles de vídeo), em que uma imagem pode ser particionada ou codificada usando uma ou mais fatias/grupos de tile (tipicamente não sobrepostos) e cada fatia/grupo de tile pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou um ou mais tiles, em que cada tile, por exemplo, pode estar em formato retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos inteiros ou parciais.
CÁLCULO RESIDUAL
[0148] A unidade de cálculo residual 204 é configurada para calcular um bloco residual 205 com base no bloco de imagem 203 e um bloco de predição 265 (os detalhes adicionais sobre o bloco de predição 265 são fornecidos adiante), por exemplo, subtraindo os valores de amostra do bloco de predição 265 de valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio de amostra.
TRANSFORMADA
[0149] A unidade de processamento de transformada 206 é configurada para aplicar uma transformada, por exemplo, uma transformada de cosseno discreta (DCT) ou transformada de seno discreta (DST), nos valores de amostra do bloco residual 205 para obter os coeficientes de transformada 207 em um domínio de transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio de transformada.
[0150] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações inteiras de DCT/DST, tais como as transformações especificadas para HEVC/H.265. Em comparação a uma transformada DCT ortogonal, tais aproximações inteiras são tipicamente dimensionadas por um determinado fator. De modo a preservar a norma do bloco residual que é processado por transformações diretas e inversas, fatores de escala adicionais são aplicados como parte do processo de transformada. Os fatores de escala são tipicamente escolhidos com base determinadas restrições como fatores de escala sendo uma potência de dois para a operação de deslocamento, profundidade de bits dos coeficientes de transformada, compensação entre precisão e custos de implantação, etc. Os fatores de escala específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212, em um decodificador 30 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 212 em um codificador 20) e fatores de escala correspondentes para a transformada direta, por exemplo, pela unidade de processamento de transformada 206 em um codificador 20 podem ser especificados consequentemente.
[0151] As modalidades do codificador de vídeo 20 (respectivamente, unidade de processamento de transformada 206) podem ser configuradas para emitir parâmetros de transformada, por exemplo, um tipo de transformada ou transformações, por exemplo, diretamente ou codificado ou comprimidos através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e utilizar os parâmetros de transformada para a decodificação.
QUANTIZAÇÃO
[0152] A unidade de quantização 208 é configurada para quantizar os coeficientes de transformada 207 para obter coeficientes de transformada quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial. Os coeficientes de transformada quantizados 209 também podem ser referidos como coeficientes residuais quantizados 209. O processo de quantização pode reduzir a profundidade de bits associada à alguns ou todos os coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo até os coeficientes de transformada de m bits durante a quantização, em que n é maior do que m. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização (QP). Por exemplo, para a quantização escalar, diferentes escalas podem ser aplicadas para obter a quantização mais fina ou grosseira. Os menores tamanhos de etapa de quantização correspondem à quantização mais fina, enquanto maiores tamanhos de etapa de quantização correspondem à quantização grosseira. O tamanho de etapa de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização pode ser, por exemplo, um índice para um conjunto pré-definido de tamanhos de etapa de quantização aplicáveis. Por exemplo, pequenos parâmetros de quantização podem corresponder à quantização fina (pequenos tamanhos de etapa de quantização) e grandes parâmetros de quantização podem corresponder à quantização grosseira (grandes tamanhos de etapa de quantização) ou vice-versa. A quantização pode incluir divisão por um tamanho de etapa de quantização e desquantização correspondente ou inversa, por exemplo, pela quantização inversa 210, pode incluir multiplicação pelo tamanho de etapa de quantização. As modalidades, de acordo com alguns padrões, por exemplo, HEVC, podem ser configuradas para utilizar um parâmetro de quantização para determinar o tamanho de etapa de quantização. Geralmente, o tamanho de etapa de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão. Os fatores de escala adicionais podem ser introduzidos para a quantização e desquantização para armazenar novamente a norma do bloco residual, que pode ser modificada por causa da escala usada na aproximação de ponto fixo da equação para o tamanho de etapa de quantização e parâmetro de quantização. Em uma implantação de exemplo, a escala da transformada inversa e desquantização pode ser combinada. Alternativamente, as tabelas quantização personalizadas podem ser usadas e sinalizadas a partir de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perda, em que a perda aumenta com o aumento dos tamanhos de etapa de quantização.
[0153] As modalidades do codificador de vídeo 20 (respectivamente, unidade de quantização 208) podem ser configuradas para emitir parâmetros de quantização (QP), por exemplo, diretamente ou codificados através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e aplicar os parâmetros de quantização para a decodificação.
[0154] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 nos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base ou usando o mesmo tamanho de etapa de quantização que o da unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora tipicamente não sejam idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada 207.
[0155] A unidade de processamento de transformada inversa 212 é configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada inversa de cosseno discreta (DCT) ou transformada inversa de seno discreta (DST), para obter uma transformada inversa bloco 213 no domínio de amostra. O bloco de transformada inversa 213 também pode ser referido como bloco desquantizado de transformada inversa 213 ou bloco residual de transformada inversa 213.
[0156] A unidade de reconstrução 214 (por exemplo, somador 214) é configurada para adicionar o bloco de transformada inversa 213 (isto é, bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, pela adição de valores de amostra do bloco residual reconstruído 213 e de valores de amostra do bloco de predição 265.
[0157] Opcionalmente, a unidade de buffer 216 (ou “buffer” 216, abreviado), por exemplo, um buffer de linha 216, é configurada para bufferizar ou armazenar o bloco reconstruído 215 e os respectivos valores de amostra, por exemplo, para predição intra. Nas modalidades adicionais, o codificador pode ser configurado para utilizar bloco reconstruídos não filtrados e/ou os respectivos valores de amostra armazenados na unidade de buffer 216 para qualquer tipo de estimativa e/ou predição, por exemplo, predição intra.
[0158] As modalidades do codificador 20 podem ser configuradas tal que, por exemplo, a unidade de buffer 216 não seja usada apenas para armazenar os blocos reconstruídos 215 para predição intra 254, mas também para a unidade de filtro loop 220 (não mostrada na FIG. 12), e/ou tal que, por exemplo, a unidade de buffer 216 e a unidade de buffer de imagem decodificada 230 formam um buffer. As modalidades adicionais podem ser configuradas para utilizar blocos filtrados 221 e/ou blocos ou amostras do buffer de imagem decodificada 230 (ambos não mostrados na FIG. 12) como entrada ou base para predição intra 254.
[0159] A unidade de filtro loop 220 (ou “filtro loop” 220, abreviado), é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221, por exemplo, para suavizar transições de pixel, ou de outro modo, melhorar a qualidade de vídeo. A unidade de filtro loop 220 é destinada a representar um ou mais filtros loop, tais como um filtro de desbloqueio, um filtro de deslocamento adaptativo da amostra (SAO) ou outros filtros, por exemplo, um filtro bilateral ou um filtro loop adaptativo (ALF) ou filtros de nitidez ou suavização ou filtros colaborativos. Embora a unidade de filtro loop 220 seja mostrada na FIG. 12 como sendo um filtro no loop, em outras configurações, a unidade de filtro loop 220 pode ser implantada como um filtro de pós-loop. O bloco filtrado 221 também pode ser referido como bloco filtrado reconstruído
221. O buffer de imagem decodificada 230 pode armazenar os blocos de codificação reconstruídos depois que a unidade de filtro loop 220 realiza as operações de filtragem nos blocos de codificação reconstruídos.
[0160] A unidade de filtro loop 220 (ou “filtro loop” 220, abreviado), é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221 ou, em geral, para filtrar amostras reconstruídas para obter valores de amostra filtrados. A unidade de filtro loop é, por exemplo, configurada para suavizar transições de pixel ou, de outro modo, melhorar a qualidade de vídeo. A unidade de filtro loop 220 pode compreender um ou mais filtros loop, tais como um filtro de desbloqueio, um filtro de deslocamento adaptativo da amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro loop adaptativo (ALF), um filtro de supressão de ruído (NSF) ou qualquer combinação dos mesmos. Em um exemplo, a unidade de filtro loop 220 pode compreender um filtro de desbloqueio, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desbloqueio, SAO e ALF. Em outro exemplo, um processo chamado mapeamento de luma com escala de croma (LMCS) (isto é, o remodelador no loop adaptativo) é adicionado. Este processo é realizado antes do desbloqueio. Em outro exemplo, o processo de filtro de desbloqueio também pode ser aplicado às extremidades de sub-bloco internas, por exemplo, extremidades de sub-blocos afins, extremidades de sub-blocos ATMVP, extremidades de transformada de sub-bloco (SBT) e extremidades de sub-partição intra (ISP). Embora a unidade de filtro loop 220 seja mostrada na FIG. 12 como sendo um filtro no loop, em outras configurações, a unidade de filtro loop 220 pode ser implantada como um filtro de pós-loop. O bloco filtrado 221 também pode ser referido como bloco filtrado reconstruído 221.
[0161] As modalidades do codificador de vídeo 20 (respectivamente, unidade de filtro loop 220) podem ser configuradas para emitir os parâmetros de filtro loop (tais como parâmetros de filtro SAO ou parâmetros de filtro ALF ou parâmetros LMCS), por exemplo, diretamente ou codificados através da unidade de codificação de entropia 270, de modo que, por exemplo, um decodificador 30 possa receber e aplicar os mesmos parâmetros de filtro loop ou filtros loop respectivos para a decodificação.
[0162] O buffer de imagem decodificada (DPB) 230 pode ser uma memória de imagem de referência que armazena dados de imagem de referência para o uso na codificação de dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O DPB 230 e o buffer 216 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em algum exemplo, o buffer de imagem decodificada (DPB) 230 é configurado para armazenar o bloco filtrado 221. O buffer de imagem decodificada 230 pode ser adicionalmente configurado para armazenar outros blocos previamente filtrados, por exemplo, blocos previamente reconstruídos e filtrados 221, da mesma imagem atual ou de diferentes imagens, por exemplo, imagens previamente reconstruídas e pode fornecer imagens completas previamente reconstruídas, isto é, decodificadas (e blocos de referência e amostras correspondentes) e/ou uma imagem atual parcialmente reconstruída (e blocos de referência e amostras correspondentes), por exemplo, para predição inter. Em algum exemplo, se o bloco reconstruído 215 for reconstruído, mas sem a filtragem no loop, o buffer de imagem decodificada (DPB) 230 é configurado para armazenar um ou mais bloco reconstruídos não filtrados 215 ou, em geral, amostras reconstruídas não filtradas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro loop 220 ou qualquer outra versão processada adicional dos blocos reconstruídos ou amostras.
[0163] A unidade de processamento de predição 260, também referida como unidade de processamento de predição de bloco 260, é configurada para receber ou obter o bloco 203 (bloco atual 203 da imagem atual 201) e os dados de imagem reconstruídos, por exemplo, amostras de referência da mesma imagem (atual) do buffer 216 e/ou dados de imagem de referência 231 de uma ou uma pluralidade de imagens previamente decodificadas do buffer de imagem decodificada 230 e, para processar tais dados para predição, isto é, para fornecer um bloco de predição 265, que pode ser um bloco prognosticado de modo inter 245 ou um bloco prognosticado de modo intra 255.
[0164] A unidade de seleção de modo 262 pode ser configurada para selecionar um modo de predição (por exemplo, um modo de predição intra ou inter) e/ou um bloco de predição correspondente 245 ou 255 para ser usado como bloco de predição 265 para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído 215.
[0165] As modalidades da unidade de seleção de modo 262 podem ser configuradas para selecionar o modo de predição (por exemplo, daquele suportado pela unidade de processamento de predição 260), que fornece a melhor correspondência ou, em outras palavras, o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou um sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 262 pode ser configurada para determinar o modo de predição com base na otimização de distorção de taxa (RDO), isto é, selecionar o modo de predição que fornece uma otimização de distorção de taxa mínima ou cuja distorção de taxa associada, pelo menos, atende um critério de seleção de modo de predição.
[0166] Em seguida, o processamento de predição (por exemplo, unidade de processamento de predição 260 e seleção de modo (por exemplo, pela unidade de seleção de modo 262) realizado por um codificador de exemplo 20 será explicado em mais detalhes.
[0167] Além disso ou alternativamente às modalidades mencionadas acima, em outras modalidades, de acordo com a FIG. 25, a unidade de seleção de modo 260 compreende a unidade de particionamento 262, unidade de predição inter 244 e unidade de predição intra 254, e é configurada para receber ou obter dados de imagem originais, por exemplo, um bloco original 203 (bloco atual 203 da imagem atual 17), e dados de imagem reconstruídos, por exemplo, filtrados e/ou amostras reconstruídas não filtradas ou blocos da mesma imagem (atual) e/ou de uma ou uma pluralidade de imagens previamente decodificadas, por exemplo, do buffer de imagem decodificada
230 ou outros buffers (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruídos são usados como dados de imagem de referência para predição, por exemplo, predição inter ou predição intra, para obter um bloco de predição 265 ou preditor 265.
[0168] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição de bloco atual (incluindo sem particionamento) e um modo de predição (por exemplo, um modo de predição intra ou inter) e gerar um bloco de predição correspondente 265, que é usado para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído 215.
[0169] As modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o particionamento e o modo de predição (por exemplo, daqueles suportados ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor correspondência ou, em outras palavras, o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o particionamento e modo de predição com base na otimização de distorção de taxa (RDO), isto é, selecionar o modo de predição que fornece uma distorção de taxa mínima. Termos como “melhor”, “mínimo”, “ideal”, etc., neste contexto não necessariamente se referem a um “melhor”, “mínimo”, “ideal”, etc. geral, mas também podem se referir ao cumprimento de uma terminação ou critério de seleção como um valor que excede ou fica abaixo de um limiar ou outras restrições levando potencialmente a uma “seleção sub-ideal”, mas reduzindo a complexidade e o tempo de processamento.
[0170] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar uma imagem de uma sequência de vídeos em uma sequência de unidades de árvore de codificação (CTUs), e a CTU 203 pode ser particionada adicionalmente em menores partições de bloco ou sub- blocos (que formam novamente blocos), por exemplo, usando iterativamente particionamento de árvore quaternária (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação dos mesmos e,
para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub-blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e os modos de predição são aplicados a cada uma das partições de bloco ou sub-blocos.
[0171] Em seguida, o particionamento (por exemplo, pela unidade de particionamento 260) e o processamento de predição (pela unidade de predição inter 244 e unidade de predição intra 254) realizados por um codificador de vídeo de exemplo 20 serão explicados em mais detalhes.
PARTICIONAMENTO
[0172] A unidade de particionamento 262 pode ser configurada para particionar uma imagem de uma sequência de vídeos em uma sequência de unidades de árvore de codificação (CTUs), e a unidade de particionamento 262 pode particionar (ou dividir) uma unidade de árvore de codificação (CTU) 203 em menores partições, por exemplo, menores blocos de tamanho quadrado ou retangular. Para uma imagem que tem três arranjos de amostra, uma CTU consiste de um bloco N×N de amostras de luma juntamente com dois blocos correspondentes de amostras de croma. O tamanho máximo permitido do bloco de luma em uma CTU é especificado para ser 128×128 na codificação de vídeo versátil em desenvolvimento (VVC), mas pode ser especificado como valor em vez de 128x128 no futuro, por exemplo, 256x256. As CTUs de uma imagem podem estar aglomeradas/agrupadas como fatias/grupos de tiles, ladrilhos ou bricks. Uma tile cobre uma região retangular de uma imagem, e uma tile pode ser dividida em um ou mais bricks. Um brick consiste em várias linhas de CTU dentro de uma tile. Uma tile que não é particionada em múltiplos bricks pode ser referida como um brick. Entretanto, um brick é um subconjunto verdadeiro de uma tile e não é referido como uma tile. Existem dois modos de grupos de tile suportados na VVC, isto é, o modo de fatia/grupo de tile de varredura raster e o modo de fatia retangular. No modo de grupo de tile de varredura raster, uma fatia/grupo de tile contém uma sequência de tiles em varredura raster de tile de uma imagem. No modo de fatia retangular, uma fatia contém vários bricks de uma imagem que foram coletivamente uma região retangular da imagem. Os bricks dentro de uma fatia retangular estão na ordem de varredura raster de brick da fatia. Estes blocos menores (que também podem ser referidos como sub-blocos) podem ser particionados adicionalmente em menores partições. Isto também é referido ao particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco de raiz, por exemplo, no nível de árvore raiz 0 (nível de hierarquia 0, profundidade 0), pode ser particionado recursivamente, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível de hierarquia 1, profundidade 1), em que estes blocos podem ser novamente particionados em dois ou mais blocos de um próximo nível inferior, por exemplo, nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc., até que o particionamento seja encerrado, por exemplo, pelo fato de que um critério de terminação é atendido, por exemplo, uma profundidade de árvore máxima ou tamanho de bloco mínimo é alcançado. Os blocos que não são particionados adicionalmente também são referidos como os blocos de folha ou nós folha da árvore. Uma árvore usando particionamento em duas partições é referida como árvore binária (BT), uma árvore usando particionamento em três partições é referida como árvore ternária (TT) e uma árvore usando particionamento em quatro partições é referida como árvore quaternária (QT).
[0173] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cor separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco de amostras NxN para algum valor de N, tal que a divisão de um componente em CTBs seja um particionamento. A unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cor separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de codificação (CB) pode ser um bloco de amostras MxN para alguns valores de M e N, tal que a divisão de um CTB nos blocos de codificação seja um particionamento.
[0174] Nas modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs por meio do uso de uma estrutura de árvore quaternária denotada como árvore de codificação. A decisão de codificar uma área de imagem usando predição de imagem inter (temporal) ou imagem intra (espacial) é feita no nível de CU de folha. Cada CU de folha pode ser dividida adicionalmente em uma, duas ou quatro PUs, de acordo com o tipo de divisão de PU. Dentro de uma PU, o mesmo processo de predição é aplicado e as informações relevantes são transmitidas para o decodificador com base em uma PU. Depois de obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU de folha pode ser particionada em unidades de transformada (TUs), de acordo com outra estrutura de árvore quaternária similar à árvore de codificação para a CU.
[0175] Nas modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, que é referido como Codificação de Vídeo Versátil (VVC), uma árvore de múltiplos tipos aninhada de árvore quaternária combinada usando estrutura de segmentação de divisões binárias e ternárias, por exemplo, usada para particionar uma unidade de árvore de codificação. Na estrutura de árvore de codificação dentro de uma unidade de árvore de codificação, uma CU pode ter um formato quadrado ou retangular. Por exemplo, a unidade de árvore de codificação (CTU) é particionada primeiro por uma árvore quaternária. Em seguida, os nós folha de árvore quaternária podem ser particionados adicionalmente por uma estrutura de árvore de múltiplos tipos. Existem quatro tipos de divisão na estrutura de árvore de múltiplos tipos, divisão binária vertical (SPLIT_BT_VER), divisão binária horizontal (SPLIT_BT_HOR), divisão ternária vertical (SPLIT_TT_VER) e divisão ternária horizontal (SPLIT_TT_HOR). Os nós folha de árvore de múltiplos tipos são chamados de unidades de codificação (CUs), e a menos que a CU é seja muito grande para o comprimento de transformada máximo, esta segmentação é usada para o processamento de predição e transformada sem qualquer particionamento adicional. Isto significa que, na maioria dos casos, a CU, PU e TU têm o mesmo tamanho de bloco na árvore quaternária com estrutura de bloco de codificação de árvore de múltiplos tipos aninhada. A exceção ocorre quando o comprimento de transformada suportado máximo é menor do que a largura ou altura do componente de cor da CU. A VVC desenvolve um mecanismo de sinalização exclusivo das informações de divisão de partição em árvore quaternária com a estrutura de árvore de codificação de árvore de múltiplos tipos. No mecanismo de sinalização, uma unidade de árvore de codificação (CTU) é tratada como a raiz de uma árvore quaternária e é particionada primeiro por uma estrutura de árvore quaternária. Cada nó folha de árvore quaternária (quando suficientemente grande para permitir) é, em seguida, particionado adicionalmente por uma estrutura de árvore de múltiplos tipos. Na estrutura de árvore de múltiplos tipos, um primeiro sinalizador (mtt_split_cu_flag) é sinalizado para indicar se o nó é particionado adicionalmente; quando um nó é particionado adicionalmente, um segundo sinalizador (mtt_split_cu_vertical_flag) é sinalizado para indicar a direção de divisão e, em seguida, um terceiro sinalizador (mtt_split_cu_binary_flag) é sinalizado para indicar se a divisão é uma divisão binária ou uma divisão ternária. Com base nos valores de mtt_split_cu_vertical_flag e mtt_split_cu_binary_flag, o modo de divisão de árvore de múltiplos tipos (MttSplitMode) de uma CU pode ser derivado por um decodificador com base em uma regra pré-definida ou uma tabela. Deve ser observado, para um determinado projeto, por exemplo, bloco de luma 64×64 e projeto de tubulação de croma 32×32 em decodificadores de hardware de VVC, a divisão TT é proibida quando a largura ou altura de um bloco de codificação de luma é maior do que 64, como mostrado na Figura 6. A divisão TT também é proibida quando a largura ou altura de um bloco de codificação de croma é maior do que 32. O projeto de tubulação irá dividir uma imagem em unidades de dados de tubulação virtuais (VPDUs) que são definidas como unidades não sobrepostas em uma imagem. Nos decodificadores de hardware, VPDUs sucessivas são processadas pelos múltiplos estágios de tubulação simultaneamente. O tamanho de VPDU é aproximadamente proporcional ao tamanho de buffer na maioria dos estágios de tubulação, portanto, é importante manter o tamanho de VPDU pequeno. Na maioria dos decodificadores de hardware, o tamanho de VPDU pode ser definido como tamanho de bloco de transformada máximo (TB). Entretanto, em VVC, a partição de árvore ternária (TT) e árvore binária (BT) pode levar ao aumento dos tamanhos de VPDU.
[0176] Além disso, deve ser observado que, quando uma parte de um bloco de nó de árvore excede a fronteira inferior ou direito da imagem, o bloco de nó de árvore é forçado a ser dividido até que todas as amostras de cada CU codificada estejam localizadas dentro das fronteiras da imagem.
[0177] Como um exemplo, as ferramentas de Sub-Partições Intra (ISP) podem dividir blocos de luma prognosticados de modo intra vertical ou horizontalmente em 2 ou 4 sub-partições, dependendo do tamanho de bloco.
[0178] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas neste relatório. Como descrito acima, o codificador 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ideal de um conjunto de modos de predição (pré-determinados). O conjunto de modos de predição pode compreender, por exemplo, modos de predição intra e/ou modos de predição inter.
[0179] O conjunto de modos de predição intra pode compreender 35 diferentes modos de predição intra, por exemplo, modos não direcionais como modo DC (ou meio) e modo planar, ou modos direcionais, por exemplo, como definido em H.265, ou pode compreender 67 diferentes modos de predição intra, por exemplo, modos não direcionais como modo DC (ou meio) e modo planar, ou modos direcionais, por exemplo, como definido para VVC. Como um exemplo, vários modos de predição intra angular convencionais são substituídos adaptativamente com modos de predição intra grande angular para os blocos não quadrados, por exemplo, como definido em VVC. Como outro exemplo, para evitar as operações de divisão para a predição DC, apenas o lado mais longo é usado para calcular a média para os blocos não quadrados. E, os resultados de predição intra do modo planar podem ser modificados adicionalmente por um método de combinação de dependente predição intra de posição (PDPC).
[0180] A unidade de predição intra 254 é configurada para utilizar amostras reconstruídas de blocos vizinhos da mesma imagem atual para gerar um bloco de predição intra 265, de acordo com um modo de predição intra do conjunto de modos de predição intra.
[0181] A unidade de predição intra 254 (ou, em geral, a unidade de seleção de modo 260) é adicionalmente configurada para emitir os parâmetros de predição intra (ou, em geral, informações indicativas do modo de predição intra selecionado para o bloco) para a unidade de codificação de entropia 270 na forma de elementos de sintaxe 266 para a inclusão nos dados de imagem codificados 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e utilizar os parâmetros de predição para a decodificação.
[0182] O conjunto de (ou possíveis) modos de predição inter depende das imagens de referência disponíveis (isto é, imagens anteriores pelo menos parcialmente decodificadas, por exemplo, armazenadas em DBP 230) e outros parâmetros de predição inter, por exemplo, se a imagem de referência inteira ou apenas uma parte, por exemplo, uma área de janela de pesquisa em torno da área do bloco atual, da imagem de referência é usada para pesquisar um bloco de referência de melhor correspondência, e/ou por exemplo, se a interpolação de pixel for aplicada, por exemplo, interpolação de metade/semi-pel, um quarto de pel e/ou 1/16 de pel ou não.
[0183] Além dos modos de predição acima, modo de salto, modo direto e/ou outro modo de predição inter pode ser aplicado.
[0184] Por exemplo, a Predição de mesclagem estendida, a lista de candidatos de mesclagem de tal modo é construída incluindo os seguintes cinco tipos de candidates em ordem: MVP espacial das Cus vizinhas espaciais, MVP temporal das Cus colocalizadas, MVP com base em histórico de uma tabela FIFO, MVP média de par trançado e MVs zero. E um refinamento de vetor de movimento lateral com base no decodificador de correspondência bilateral (DMVR) pode ser aplicado para aumentar a precisão dos MVs do modo de mesclagem. O modo de mesclagem com MVD (MMVD), que vem do modo de mesclagem com diferenças de vetor de movimento. Um sinalizador MMVD é sinalizado logo após o envio de um sinalizador de salto e sinalizador de mesclagem para especificar se o modo MMVD é usado para uma CU. E um esquema de resolução de vetor de movimento adaptativo do nível de CU (AMVR) pode ser aplicado. O AMVR permite que a MVD da CU seja codificada com precisão diferente. Dependendo do modo de predição para a CU atual, as MVDs da CU atual podem ser selecionadas de forma adaptativa. Quando uma CU é codificada no modo de mesclagem, o modo de inter/predição intra combinado (CIIP) pode ser aplicado à CU atual. A média ponderada dos sinais de inter e predição intra é realizada para obter a predição CIIP. A predição compensada de movimento afim, o campo de movimento afim do bloco é descrito pelas informações de movimento de dois pontos de controle (4 parâmetros) ou três vetores de movimento de ponto de controle (6 parâmetros). A predição de vetor de movimento temporal com base em sub-bloco (SbTMVP), que é similar à predição de vetor de movimento (TMVP) em HEVC, mas prevê os vetores de movimento das sub-CUs dentro da CU atual. O fluxo óptico bidirecional (BDOF), previamente referido como BIO, é uma versão mais simples que requer muito menos computação, especialmente em termos de número de multiplicações e do tamanho do multiplicador. O modo de partição de triângulo, em tal modo, uma CU é dividida igualmente em duas partições no formato de triângulo, usando a divisão diagonal ou a divisão antidiagonal. Além disso, o modo de bipredição é estendido além da média simples para permitir a média ponderada dos dois sinais de predição.
[0185] Além dos modos de predição acima, o modo de salto e/ou modo direto pode ser aplicado.
[0186] A unidade de processamento de predição 260 pode ser adicionalmente configurada para particionar o bloco 203 em menores partições de bloco ou sub-blocos, por exemplo, usando iterativamente o particionamento de árvore quaternária (QT), particionamento binário (BT) ou particionamento de árvore ternária (TT) ou qualquer combinação dos mesmos e, para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub-blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e dos modos de predição aplicados a cada uma das partições de bloco ou sub-blocos.
[0187] A unidade de predição inter 244 pode incluir a unidade de estimativa de movimento (ME) (não mostrada na Fig. 2) e unidade de compensação de movimento (MC) (não mostrada na Fig. 2). A unidade de estimativa de movimento é configurada para receber ou obter o bloco de imagem 203 (bloco atual de imagem 203 da imagem atual 201) e uma imagem decodificada 231 ou, pelo menos, um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de uma ou uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para a estimativa de movimento. Por exemplo, uma sequência de vídeos pode compreender a imagem atual e as imagens previamente decodificadas 231 ou, em outras palavras, a imagem atual e as imagens previamente decodificadas
231 podem fazer parte ou formar uma sequência de imagens que forma uma sequência de vídeos.
[0188] O codificador 20 pode ser, por exemplo, configurado para selecionar um bloco de referência de uma pluralidade de blocos de referência imagens iguais ou diferentes da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência, …) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de predição inter para a unidade de estimativa de movimento (não mostrada na Fig. 2). Este deslocamento também é chamado de vetor de movimento (MV).
[0189] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de predição inter e para realizar a predição inter com base ou usando o parâmetro de predição inter para obter um bloco de predição inter 265. A compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver buscar ou gerar o bloco de predição com base no vetor/bloco de movimento determinado pela estimativa de movimento, que realiza possivelmente interpolações para a precisão de sub-pixel. A filtragem de interpolação pode gerar amostras de pixel adicionais de amostras de pixel conhecidas, aumentando assim, potencialmente, o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Após o recebimento do vetor de movimento para a PU do bloco atual de imagem, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta e uma lista de imagens de referência.
[0190] A unidade de predição intra 254 é configurada para obter, por exemplo, receber, o bloco de imagem 203 (bloco atual de imagem) e um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos vizinhos reconstruídos, da mesma imagem para intraestimativa. O codificador 20 pode ser, por exemplo, configurado para selecionar um modo de predição intra de uma pluralidade de modos de predição intra (pré-determinados).
[0191] As modalidades do codificador 20 podem ser configuradas para selecionar o modo de predição intra com base em um critério de otimização, por exemplo, residual mínimo (por exemplo, o modo de predição intra fornecendo o bloco de predição 255 mais semelhante ao bloco atual de imagem 203) ou distorção de taxa mínima.
[0192] A unidade de predição intra 254 é adicionalmente configurada para determinar com base no parâmetro de predição intra, por exemplo, o modo de predição intra selecionado, o bloco de predição intra 255. Em qualquer caso, depois de selecionar um modo de predição intra para um bloco, a unidade de predição intra 254 também é configurada para fornecer o parâmetro de predição intra, isto é, informações indicativas do modo de predição intra selecionado para o bloco para a unidade de codificação de entropia 270. Em um exemplo, a unidade de predição intra 254 pode ser configurada para realizar qualquer combinação das técnicas de predição intra descritas adiante.
[0193] A unidade de codificação de entropia 270 é configurada para aplicar um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema VLC adaptativo ao contexto (CALVC), um esquema de codificação aritmética, uma codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto com base em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia) nos coeficientes residuais quantizados 209, parâmetros de predição inter, parâmetro de predição intra e/ou parâmetros de filtro loop, individualmente ou em conjunto (ou não) para obter dados de imagem codificados 21 que podem ser emitidos pela saída 272, por exemplo, na forma de um fluxo de bits codificado 21. O fluxo de bits codificado 21 pode ser transmitido para o decodificador de vídeo 30 ou arquivado para posterior transmissão ou recuperação pelo decodificador de vídeo 30. A unidade de codificação de entropia 270 pode ser adicionalmente configurada para codificar com entropia os outros elementos de sintaxe para a fatia de vídeo atual sendo codificada.
[0194] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador 20 não com base em transformada pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para determinados blocos ou quadros. Em outra implantação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade.
[0195] A FIG. 13 mostra um decodificador de vídeo de exemplo 30 que é configurada para implantar as técnicas deste presente pedido. O decodificador de vídeo 30 configurado para receber os dados de imagem codificados (por exemplo, fluxo de bits codificado) 21, por exemplo, codificados pelo codificador 100, para obter uma imagem decodificada 131. Durante o processo de decodificação, o decodificador de vídeo 30 recebe os dados de vídeo, por exemplo, um fluxo de bits de vídeo codificado que representa os blocos de imagem de uma fatia de vídeo codificada e elementos de sintaxe associados, a partir do codificador de vídeo 100.
[0196] No exemplo da FIG. 13, o decodificador 30 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um buffer 316, um filtro loop 320, um buffer de imagem decodificada 330 e uma unidade de processamento de predição 360. A unidade de processamento de predição 360 pode incluir uma unidade de predição inter 344, uma unidade de predição intra 354 e uma unidade de seleção de modo 362. O decodificador de vídeo 30 pode realizar, em alguns exemplos, uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 100 da FIG. 12.
[0197] Como explicado em relação ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 344 e a unidade de predição intra 354, são também referidos como formando o “decodificador embutido” do codificador de vídeo 20. Consequentemente, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro loop 320 pode ser idêntico em função ao filtro loop 220 e o buffer de imagem decodificada 330 pode ser idêntico em função ao buffer de imagem decodificada 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 se aplicam, correspondentemente, às respectivas unidades e funções do decodificador de vídeo 30.
[0198] A unidade de decodificação de entropia 304 é configurada para realizar decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na FIG. 13), por exemplo, qualquer ou todos (decodificados) os parâmetros de predição inter, parâmetro de predição intra, parâmetros de filtro loop e/ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 é adicionalmente configurada para encaminhar parâmetros de predição inter, parâmetro de predição intra e/ou outros elementos de sintaxe para a unidade de processamento de predição
360. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.
[0199] A unidade de decodificação de entropia 304 é configurada para analisar o fluxo de bits 21 (ou, em geral, dados de imagem codificados 21) e realizar, por exemplo, a decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na FIG. 13), por exemplo, qualquer ou todos os parâmetros de predição inter (por exemplo, índice de imagem de referência e vetor de movimento), parâmetro de predição intra (por exemplo, modo de predição intra ou índice), parâmetros de transformada, parâmetros de quantização, parâmetros de filtro loop, e/ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 pode ser configurada para aplicar os algoritmos ou esquemas de decodificação correspondentes aos esquemas de codificação como descrito em relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode ser adicionalmente configurada para fornecer parâmetros de predição inter, parâmetro de predição intra e/ou outros elementos de sintaxe para a unidade de aplicação de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo. Além disso ou como uma alternativa às fatias e respectivos elementos de sintaxe, grupos de tile e/ou tiles e respectivos elementos de sintaxe podem ser recebidos e/ou usados.
[0200] A unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 112, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 114, o buffer 316 pode ser idêntico em função ao buffer 116, o filtro loop 320 pode ser idêntico em função ao filtro loop 120 e o buffer de imagem decodificada 330 pode ser idêntico em função ao buffer de imagem decodificada 130.
[0201] As modalidades do decodificador 30 podem compreender uma unidade de particionamento (não representada na FIG. 13). Em um exemplo, a unidade de processamento de predição 360 do decodificador de vídeo 30 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas acima.
[0202] A unidade de processamento de predição 360 pode compreender uma unidade de predição inter 344 e uma unidade de predição intra 354, em que a unidade de predição inter 344 pode se assemelhar à unidade de predição inter 144 em função, e a unidade de predição intra 354 pode se assemelhar à unidade de predição intra 154 em função. A unidade de processamento de predição 360 é tipicamente configurada para realizar o bloco predição e/ou obter o bloco de predição 365 a partir dos dados codificados 21 e para receber ou obter (explícita ou implicitamente) os parâmetros de predição relacionados e/ou as informações sobre o modo de predição selecionado, por exemplo, a partir da unidade de decodificação de entropia 304.
[0203] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de predição intra 354 da unidade de processamento de predição 360 é configurada para gerar bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e dados de blocos previamente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia codificada de modo inter (isto é, B ou P), a unidade de predição inter 344 (por exemplo, unidade de compensação de movimento) da unidade de processamento de predição 360 é configurada para produzir os blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 304. Para a predição inter, os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma lista de imagens de referência. O decodificador de vídeo 30 pode construir a lista de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas em DPB
330.
[0204] A unidade de processamento de predição 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual analisando os vetores de movimento e outros elementos de sintaxe e utilizar as informações de predição para produzir os blocos de predição para o bloco atual de vídeo sendo decodificado. Por exemplo, a unidade de processamento de predição 360 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usados para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, fatia B, fatia P ou fatia GPB), informações de construção para uma ou mais da lista de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, estado de predição inter para cada bloco de vídeo codificado de modo inter da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0205] A unidade de quantização inversa 310 é configurada para quantizar inversamente, isto é, desquantizar, os coeficientes de transformada quantizados fornecidos no fluxo de bits e decodificados pela unidade de decodificação de entropia 304. O processo de quantização inverso pode incluir a utilização de um parâmetro de quantização calculado pelo codificador de vídeo 100 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa que deve ser aplicado.
[0206] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou, em geral, informações relacionadas à quantização inversa) e coeficientes quantizados dos dados de imagem codificados 21 (por exemplo, pela análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304) e para aplicar com base nos parâmetros de quantização, uma quantização inversa nos coeficientes quantizados decodificados 309 para obter coeficientes desquantizados 311, que também podem ser referidos como coeficientes de transformada 311.
[0207] A unidade de processamento de transformada inversa 312 é configurada para aplicar uma transformada inversa, por exemplo, uma DCT inversa, uma transformada inteira inversa ou um processo de transformada inversa conceitualmente similar, aos coeficientes de transformada de modo a produzir blocos residuais no domínio de pixel.
[0208] A unidade de processamento de transformada inversa 312 pode ser configurada para receber os coeficientes desquantizados 311, também referidos como coeficientes de transformada 311, e para aplicar uma transformada aos coeficientes desquantizados 311 de modo a obter blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser referidos como os blocos de transformada 313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada inteira inversa ou um processo de transformada inversa conceitualmente similar. A unidade de processamento de transformada inversa 312 pode ser adicionalmente configurada para receber os parâmetros de transformada ou informações correspondentes dos dados de imagem codificados 21 (por exemplo, pela análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada aos coeficientes desquantizados 311.
[0209] A unidade de reconstrução 314 (por exemplo, somador 314) é configurada para adicionar o bloco de transformada inversa 313 (isto é, bloco residual reconstruído 313) ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio de amostra, por exemplo, pela adição de valores de amostra do bloco residual reconstruído 313 e de valores de amostra do bloco de predição 365.
[0210] A unidade de filtro loop 320 (no loop de codificação ou depois do loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar as transições de pixel ou, de outro modo, melhorar a qualidade de vídeo. A unidade de filtro loop 320 pode compreender um ou mais filtros loop, tais como um filtro de desbloqueio, um filtro de deslocamento adaptativo da amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro loop adaptativo (ALF), um filtro de supressão de ruído (NSF) ou qualquer combinação dos mesmos. Em um exemplo, a unidade de filtro loop 220 pode compreender um filtro de desbloqueio, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desbloqueio, SAO e ALF. Em outro exemplo, um processo chamado de mapeamento de luma com escala de croma (LMCS) (isto é, o remodelador no loop adaptativo) é adicionado. Este processo é realizado antes do desbloqueio. Em outro exemplo, o processo de filtro de desbloqueio também pode ser aplicado às extremidades de sub-bloco internas, por exemplo, extremidades de sub-blocos afins, extremidades de sub-blocos ATMVP, extremidades de transformada de sub-bloco (SBT) e extremidades de sub-partição intra (ISP). Embora a unidade de filtro loop 320 seja mostrada na FIG. 13 como sendo um filtro no loop, em outras configurações, a unidade de filtro loop 320 pode ser implantada como um filtro de pós-loop.
[0211] Os blocos de vídeo decodificados 321 em um determinado quadro ou imagem são, em seguida, armazenados no buffer de imagem decodificada 330, que armazena imagens de referência usadas para a compensação de movimento subsequente.
[0212] Os blocos de vídeo decodificados 321 de uma imagem são, em seguida, armazenados no buffer de imagem decodificada 330, que armazena as imagens decodificadas 331 como imagens de referência para a compensação de movimento subsequente para outras imagens e/ou para exibição de saída, respectivamente.
[0213] O decodificador 30 é configurado para emitir a imagem decodificada 331, por exemplo, através da saída 332, para a apresentação ou visualização para um usuário.
[0214] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar o fluxo de bits comprimido. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo emitido sem a unidade de filtragem loop 320. Por exemplo, um decodificador não com base em transformada 30 pode quantizar inversamente o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para determinados blocos ou quadros. Em outra implantação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinada em uma única unidade.
[0215] Além disso ou alternativamente às modalidades mencionadas acima, em outras modalidades, de acordo com a FIG. 26, a unidade de predição inter 344 pode ser idêntica à unidade de predição inter 244 (em particular, à unidade de compensação de movimento) e a unidade de predição intra 354 pode ser idêntica à unidade de predição inter 254 em função, e realiza decisões e predição de divisão ou particionamento com base no particionamento e/ou parâmetros de predição ou respectivas informações recebidas dos dados de imagem codificados 21 (por exemplo, pela análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304). A unidade de aplicação de modo 360 pode ser configurada para realizar a predição (predição intra ou inter) por bloco com base nas imagens reconstruídas, blocos ou amostras respectivas (filtradas ou não filtradas) para obter o bloco de predição 365.
[0216] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de predição intra 354 da unidade de aplicação de modo 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e dados dos blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é codificada como uma fatia codificada de modo inter (isto é, B ou P), a unidade de predição inter 344 (por exemplo, unidade de compensação de movimento) da unidade de aplicação de modo 360 é configurada para produzir blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 304. Para a predição inter, os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma da lista de imagens de referência. O decodificador de vídeo 30 pode construir a lista de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas em DPB 330. O mesmo ou similar pode ser aplicado para ou pelas modalidades usando grupos de tile (por exemplo, grupos de tile de vídeo) e/ou tiles (por exemplo, tiles de vídeo), além disso ou alternativamente às fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de tile e/ou tiles I, P ou B.
[0217] A unidade de aplicação de modo 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual analisando os vetores de movimento ou informações relacionadas e outros elementos de sintaxe, e utilizar as informações de predição para produzir os blocos de predição para o bloco atual de vídeo sendo decodificado. Por exemplo, a unidade de aplicação de modo 360 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, fatia B, fatia P ou fatia GPB), informações de construção para uma ou mais da lista de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, estado de predição inter para cada bloco de vídeo codificado de modo inter da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. O mesmo ou similar pode ser aplicado para ou pelas modalidades usando grupos de tile (por exemplo, grupos de tile de vídeo) e/ou tiles (por exemplo, tiles de vídeo), além disso ou alternativamente às fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de tile e/ou tiles I, P ou B.
[0218] As modalidades do decodificador de vídeo 30 mostrado na FIG. 13 podem ser configuradas para particionar e/ou decodificar a imagem por meio do uso de fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias (tipicamente não sobrepostas) e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, tiles (H.265/HEVC e VVC) ou bricks (VVC)).
[0219] As modalidades do decodificador de vídeo 30 mostrado na FIG. 13 podem ser configuradas para particionar e/ou decodificar a imagem por meio do uso de fatias/grupos de tile (também referidos como grupos de tile de vídeo) e/ou tiles (também referidas como tiles de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias/grupos de tile (tipicamente não sobrepostos), e cada fatia/grupo de tile pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou uma ou mais tiles, em que cada tile, por exemplo, pode ter um formato retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou parciais.
[0220] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem loop 320. Por exemplo, um decodificador não com base em transformada 30 pode quantizar inversamente o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para determinados blocos ou quadros. Em outra implantação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[0221] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de uma etapa atual pode ser processado adicionalmente e, em seguida, emitido para a próxima etapa. Por exemplo, depois da filtragem de interpolação, a derivação de vetor de movimento ou filtragem loop, uma operação adicional, tal como grampeamento ou deslocamento, pode ser realizada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem loop.
[0222] A FIG. 14 é um diagrama esquemático de um dispositivo de codificação de vídeo 400, de acordo com uma modalidade da revelação. O dispositivo de codificação de vídeo 400 é adequado para implantar as modalidades reveladas como descrito neste relatório. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador, tal como o decodificador de vídeo 30 da FIG. 11A ou um codificador, tal como o codificador de vídeo 20 da FIG. 11A. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um ou mais componentes do decodificador de vídeo 30 da FIG. 11A ou do codificador de vídeo 20 da FIG. 11A como descrito acima.
[0223] O dispositivo de codificação de vídeo 400 compreende portas de ingresso 410 e unidades receptoras (Rx) 420 para receber dados; um processador, unidade lógica ou unidade de processamento central (CPU) 430 para processar os dados; unidades transmissoras (Tx) 440 e portas de egresso 450 para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo 400 também pode compreender componentes ópticos para elétricos (OE) e componentes elétricos para ópticos (EO) acoplados às portas de ingresso 410, às unidades receptoras 420, às unidades transmissoras 440 e às portas de egresso 450 para saída ou entrada de sinais ópticos ou elétricos.
[0224] O processador 430 é implantado por hardware e software. O processador 430 pode ser implantado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de ingresso 410, unidades receptoras 420, unidades transmissoras 440, portas de egresso 450 e memória 460. O processador 430 compreende um módulo de codificação
470. O módulo de codificação 470 implanta as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 470 implanta, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece uma melhoria substancial para a funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implantado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0225] A memória 460 compreende um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento no fluxo de dados, para armazenar programas, quando tais programas são selecionados para a execução e para armazenar instruções e dados que são lidos durante a execução do programa. A memória 460 pode ser volátil e/ou não volátil e pode ser memória somente de leitura (ROM), memória de acesso aleatório (RAM), memória endereçável de conteúdo ternário (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[0226] A FIG. 15 é um diagrama de bloco simplificado de um aparelho 500 que pode ser usado tanto como o dispositivo de origem 310 quanto o dispositivo de destino 320 da FIG. 11, de acordo com uma modalidade exemplar. O aparelho 500 pode implantar técnicas deste presente pedido descritas acima. O aparelho 500 pode estar na forma de um sistema computacional incluindo múltiplos dispositivos de computação ou na forma de um único dispositivo de computação, por exemplo, um telefone móvel, um computador tablet, um computador laptop, um computador notebook, um computador de área de trabalho e semelhantes.
[0227] Um processador 502 no aparelho 500 pode ser uma unidade de processamento central. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo ou múltiplos dispositivos, capazes de manipular ou processar informações agora existentes ou desenvolvidas no futuro. Embora as implantações reveladas possam ser praticadas com um único processador, como mostrado, por exemplo, o processador 502, as vantagens na velocidade e eficácia podem ser obtidas usando mais do que um processador.
[0228] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente de leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implantação. Qualquer outro tipo de dispositivo de armazenamento adequado pode ser usado como a memória 504. A memória 504 pode incluir o código e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir adicionalmente um sistema operacional 508 e programas de aplicativo 510, os programas de aplicativo 510 incluindo pelo menos um programa que permite o processador 502 realizar os métodos descritos neste relatório. Por exemplo, os programas de aplicativo 510 podem incluir aplicações 1 através de N, que inclui adicionalmente um aplicativo de codificação de vídeo que realiza os métodos descritos neste relatório. O aparelho 500 também pode incluir memória adicional na forma de um armazenamento secundário 514, que pode ser, por exemplo, um cartão de memória usado com um dispositivo de computação móvel. Pelo fato de que as sessões de comunicação de vídeo podem conter uma quantidade de informações significante, elas podem ser armazenadas completamente ou em parte, no armazenamento secundário 514 e carregadas na memória 504 como necessário para o processamento. O aparelho 500 também pode incluir um ou mais dispositivos de saída, tais como um visor 518. O visor 518 pode ser, em um exemplo, um visor sensível ao toque que combina um visor com um elemento sensível ao toque que é operável para detectar entradas de toque. O visor 518 pode ser acoplado ao processador 502 através do barramento 512.
[0229] O aparelho 500 também pode incluir um ou mais dispositivos de saída, tais como um visor 518. O visor 518 pode ser, em um exemplo, um visor sensível ao toque que combina um visor com um elemento sensível ao toque que é operável para detectar entradas de toque. O visor 518 pode ser acoplado ao processador 502 através do barramento 512. Outros dispositivos de saída que permitem a um usuário programar ou, de outro modo, utilizar o aparelho 500 podem ser fornecidos, além disso ou como uma alternativa ao visor 518. Quando o dispositivo de saída é ou inclui um visor, o visor pode ser implantado de várias maneiras, incluindo por um visor de cristal líquido (LCD), um visor de tubo de raios catódicos (CRT), um visor de plasma ou visor de diodo emissor de luz (LED), tal como um visor de LED orgânico (OLED).
[0230] O aparelho 500 também pode incluir ou estar em comunicação com um dispositivo de detecção de imagem 520, por exemplo, uma câmera, ou qualquer outro dispositivo de detecção de imagem 520 agora existentes ou desenvolvidos no futuro que possam detectar uma imagem, tal como a imagem de um usuário que opera o aparelho 500. O dispositivo de detecção de imagem 520 pode ser posicionado de modo que seja direcionado para o usuário que opera o aparelho 500. Em um exemplo, a posição e o eixo óptico do dispositivo de detecção de imagem 520 podem ser configurados de modo que o campo de visão inclua uma área que é diretamente adjacente ao visor 518 e da qual o visor 518 seja visível.
[0231] O aparelho 500 também pode incluir ou estar em comunicação com um dispositivo de detecção de som 522, por exemplo, um microfone, ou qualquer outro dispositivo de detecção de som agora existente ou desenvolvido no futuro que possa detectar sons perto do aparelho 500. O dispositivo de detecção de som 522 pode ser posicionado de modo que seja direcionado para o usuário que opera o aparelho 500 e pode ser configurado para receber sons, por exemplo, fala ou outras elocuções, feitas pelo usuário enquanto o usuário opera o aparelho 500.
[0232] Embora a FIG. 15 represente o processador 502 e a memória 504 do aparelho 500 como sendo integrados em uma única unidade, outras configurações podem ser utilizadas. As operações do processador 502 podem ser distribuídas em múltiplas máquinas (cada máquina tendo um ou mais dos processadores) que podem ser acopladas diretamente ou através de uma área local ou outra rede. A memória 504 pode ser distribuída por múltiplas máquinas, tais como uma memória com base em rede ou memória em múltiplas máquinas que realizam as operações do aparelho 500. Embora representado neste relatório como um único barramento, o barramento 512 do aparelho 500 pode ser composto de múltiplos barramentos. Além disso, o armazenamento secundário 514 pode ser diretamente acoplado aos outros componentes do aparelho 500 ou pode ser acessado através de uma rede e pode compreender uma única unidade integrada, tal como um cartão de memória ou múltiplas unidades, tais como múltiplos cartões de memória. O aparelho 500 pode, assim, ser implantado em uma ampla variedade de configurações.
MODALIDADES COM REFERÊNCIA À RELAÇÃO ENTRE OS ELEMENTOS DE RESTRIÇÃO DE PARTIÇÃO
[0233] A revelação se refere a relações entre os elementos de restrição de partição (definindo regras de particionamento para diferentes métodos de particionamento de imagem), cujos elementos de restrição podem ser sinalizados através de um fluxo de bits que inclui uma pluralidade de imagens codificadas. Consequentemente, a invenção fornece dispositivos e métodos para gerar, decodificar ou processar tal fluxo de bits, particularmente, incluindo os elementos de restrição de partição no fluxo de bits e extraindo a restrição de partição, de acordo com novas regras de particionamento.
[0234] É observado que os nomes dos elementos de sintaxe descritos acima são usados (ao longo deste documento) como são convencionalmente usados. Entretanto, deve ficar claro que estes nomes podem ser alterados sem alterar o contexto técnico. Portanto, o que deve ser considerado importante é o significado lógico dos elementos de sintaxe.
[0235] Atualmente, os elementos de restrição de partição (por exemplo, o MaxBtSizeY, MaxMttDepth e MinQtSizeY) são sinalizados individualmente em sua faixa de definição. Em particular, atualmente, o elemento de sintaxe de CtbSizeY (isto é, log2_ctu_size_minus2), e os elementos de sintaxe do MinQtSizeY (isto é, log2_min_qt_size_intra_slices_minus2 e log2_min_qt_size_inter_slices_minus2), e os elementos de sintaxe do MaxMttDepth (isto é, max_mtt_hierarchy_depth_inter_slices e max_mtt_hierarchy_depth_intra_slices) são sinalizados em uma Conjunto de
Parâmetros de Sequência (SPS). Além disso, o elemento de sintaxe de uma diferença entre o tamanho de CTB de luma e o MaxBtSizeY (isto é, log2_diff_ctu_max_bt_size) é sinalizado em um cabeçalho de fatia. O SPS e o cabeçalho de fatia podem ser incluídos no fluxo de bits da imagem.
[0236] Uma sintaxe de SPS exemplar, particularmente, uma sintaxe de Carga Útil da Sequência de Bytes Bruta de SPS (RBSP), é mostrada na FIG
8. As semânticas SPS RBSP desta sintaxe são como a seguir. ‘pic_width_in_luma_samples’ especifica a largura de cada imagem decodificada em unidades de amostras de luma, não deve ser igual a 0 e deve ser um múltiplo inteiro de MinCbSizeY. ‘pic_height_in_luma_samples’ especifica a altura de cada imagem decodificada em unidades de amostras de luma, não deve ser igual a 0 e deve ser um múltiplo inteiro de MinCbSizeY. ‘log2_ctu_size_minus2’ mais 2 especifica o tamanho de CTB de luma de cada CTU.
[0237] Os elementos CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC e PicHeightInSamplesC são usualmente derivados como a seguir: • CtbLog2SizeY = log2_ctu_size_minus2 + 2 • CtbSizeY = 1 << CtbLog2SizeY • MinCbLog2SizeY = 2 • MinCbSizeY = 1 << MinCbLog2SizeY • MinTbSizeY = 4 • MaxTbSizeY = 64 • PicWidthInCtbsY = Ceil(pic_width_in_luma_samples ÷ CtbSizeY) • PicHeightInCtbsY = Ceil(pic_height_in_luma_samples ÷ CtbSizeY) • PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY • PicWidthInMinCbsY = pic_width_in_luma_samples/MinCbSizeY
• PicHeightInMinCbsY = pic_height_in_luma_samples/MinCbSizeY • PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY • PicSizeInSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples • PicWidthInSamplesC = pic_width_in_luma_samples/SubWidthC • PicHeightInSamplesC = pic_height_in_luma_samples/SubHeightC ‘log2_min_qt_size_intra_slices_minus2’ mais 2 especifica o tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária de uma CTU em fatias com slice_type igual a 2 (I). O valor de log2_min_qt_size_intra_slices_minus2 deve estar na faixa de 0 a CtbLog2SizeY − 2, inclusive. • MinQtLog2SizeIntraY = log2_min_qt_size_intra_slices_minus2 + 2 ‘log2_min_qt_size_inter_slices_minus2’ mais 2 especifica o tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária de uma CTU em fatias com slice_type igual a 0 (B) ou 1 (P). O valor de log2_min_qt_size_inter_slices_minus2 deve estar na faixa de 0 a CtbLog2SizeY − 2, inclusive. • MinQtLog2SizeInterY = log2_min_qt_size_inter_slices_minus2 + 2 ‘max_mtt_hierarchy_depth_inter_slices’ especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 0 (B) ou 1 (P). O valor de max_mtt_hierarchy_depth_inter_slices deve estar na faixa de 0 a CtbLog2SizeY − MinTbLog2SizeY, inclusive. ‘max_mtt_hierarchy_depth_intra_slices’ especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 2 (I). O valor de max_mtt_hierarchy_depth_intra_slices deve estar na faixa de 0 a CtbLog2SizeY − MinTbLog2SizeY, inclusive.
[0238] Além disso, a FIG. 9 mostra uma sintaxe de cabeçalho de fatia exemplar. As semânticas do cabeçalho de fatia desta sintaxe são como a seguir. ‘log2_diff_ctu_max_bt_size’ especifica a diferença entre o tamanho de CTB de luma e o tamanho de luma máximo (largura ou altura) de um bloco de codificação que pode ser dividido usando uma divisão binária. O valor de log2_diff_ctu_max_bt_size deve estar na faixa de 0 a CtbLog2SizeY − MinCbLog2SizeY, inclusive.
[0239] Quando log2_diff_ctu_max_bt_size não está presente, o valor de log2_diff_ctu_max_bt_size é considerado igual a 2.
[0240] Os elementos MinQtLog2SizeY, MaxBtLog2SizeY, MinBtLog2SizeY, MaxTtLog2SizeY, MinTtLog2SizeY, MaxBtSizeY, MinBtSizeY, MaxTtSizeY, MinTtSizeY e MaxMttDepth são usualmente derivados como a seguir: • MinQtLog2SizeY = (slice_type = = I) ? MinQtLog2SizeIntraY : MinQtLog2SizeInterY • MaxBtLog2SizeY = CtbLog2SizeY − log2_diff_ctu_max_bt_size • MinBtLog2SizeY = MinCbLog2SizeY • MaxTtLog2SizeY = (slice_type = = I) ? 5 : 6 • MinTtLog2SizeY = MinCbLog2SizeY • MinQtSizeY = 1 << MinQtLog2SizeY • MaxBtSizeY = 1 << MaxBtLog2SizeY • MinBtSizeY = 1 << MinBtLog2SizeY • MaxTtSizeY = 1 << MaxTtLog2SizeY • MinTtSizeY = 1 << MinTtLog2SizeY • MaxMttDepth = (slice_type == I) ? max_mtt_hierarchy_depth_intra_slices : max_mtt_hierarchy_depth_inter_slices
[0241] Como mostrado na FIG. 8, atualmente a largura e altura de uma sequência de imagens (por exemplo, as imagens de uma sequência de vídeos) são indicadas usando os elementos de sintaxe
‘pic_width_in_luma_samples’ e ‘pic_height_in_luma_samples’. Convencionalmente, estes elementos de sintaxe precisam ser múltiplos do MinCbSizeY, de modo a garantir que uma imagem possa ser particionada em blocos de codificação com tamanho mínimo. Entretanto, embora o pic_height_in_luma_samples e pic_width_in_luma_samples devam ser múltiplos de MinCbSizeY, ainda não é garantido que uma imagem possa ser completamente particionada em blocos usando os métodos disponíveis de divisão de árvore quaternária, árvore binária e árvore ternária, respectivamente. Um exemplo deste problema é explicado como a seguir:
[0242] É exemplarmente considerado que: • MinCbSizeY é igual a 4 • MinQtSizeY é igual a 32 • MaxBtSizeY é igual a 16
[0243] Neste exemplo, se o pic_width_in_luma_samples = 132 e pic_width_in_luma_samples = 132, embora a largura e a altura da imagem sejam múltiplos de 4, ainda não é possível particionar completamente a imagem. A razão é que um bloco precursor com por exemplo, um tamanho de 32x32 não pode ser particionado usando divisão binária ou divisão de árvore quaternária, pelo fato de que se a divisão de árvore quaternária fosse aplicada, a limitação MinQtSizeY seria violada e se a divisão binária fosse aplicada, a limitação MaxBtSizeY seria violada. Em outras palavras, não é possível gerar um bloco com uma largura ou altura igual a 4, que é, entretanto, necessário para completar o particionamento da imagem.
[0244] Assim, como exemplificado acima, há atualmente um problema de particionamento de uma imagem respeitando completamente as regras de particionamento convencionais. Isto é realmente um problema principal, visto que significa que alguns tamanhos de imagem não possam ser codificados e não possam ser decodificados.
[0245] A FIG. 1 mostra um dispositivo 100, de acordo com uma modalidade da invenção geral. O dispositivo 100 é adequado para gerar ou processar, isto é, manipular, um fluxo de bits 101 incluindo as imagens codificadas, por exemplo, um fluxo de bits de vídeo. O dispositivo 100 pode ser incluído ou pode compreender, um codificador configurado para codificar as imagens e gerar o fluxo de bits 101. O dispositivo 100 pode determinar as relações entre os elementos de restrição de partição, e pode incluir estes elementos de restrição de partição e/ou suas relações no fluxo de bits 101. Desse modo, o dispositivo 100 pode adicionar os elementos de restrição de partição e/ou relações a uma sintaxe SPS e/ou sintaxe de cabeçalho de fatia no fluxo de bits 101.
[0246] Em uma maneira similar, um dispositivo decodificador analisa o fluxo de bits e/ou infere a partir do fluxo de bits e, aplicando as regras pré- definidas, os parâmetros de restrição relacionados ao particionamento. O parâmetro de restrição, em seguida, ajuda a decodificar e rearmazenar atualmente as partições. O codificador e o decodificador operam (processam) na mesma sintaxe.
[0247] Em particular, o dispositivo 100 é configurado para determinar um MaxBtSizeY 102 e/ou para determinar um MaxMttDepth 103 e um MinCbSizeY 104. Em seguida, o dispositivo 100 é configurado para determinar um MinQtSizeY 105 com base no MaxBtSizeY 102 e/ou com base no MaxMttDepth 103 e MinCbSizeY 104. Finalmente, o dispositivo 100 é configurado para incluir o MinQtSizeY 105 determinado no fluxo de bits 101, indireta (isto é, incluindo informações a partir das quais o MinQtSizeY 105 pode ser derivado) ou diretamente.
[0248] Em um dispositivo 100, de acordo com uma primeira modalidade específica da invenção, que se baseia no dispositivo 100 mostrado na FIG. 1, a faixa de valor de MinQtSizeY 105 pode ser limitada com base no valor do MaxBtSizeY 102. Por exemplo, a fronteira superior do MinQtSizeY 105 pode ser limitado ao MaxBtSizeY 102. Em outras palavras, no dispositivo 100, de acordo com a primeira modalidade específica, o valor mínimo do MinQtSizeY 105 não pode ser maior do que o MaxBtSizeY 102.
[0249] Alternativamente ou além disso, no dispositivo 100, de acordo com a primeira modalidade específica, a faixa de valor de MinQtSizeY 105 pode ser limitada com base no MaxMttDepth 103. Neste caso, por exemplo: • Se o MaxMttDepth 103 for igual a 0, o MinQtSizeY 105 pode ser igual ao (ou pode ser inferido como) MinCbSizeY 104. • Se o MaxMttDepth 103 for maior do que 0, a fronteira superior de MinQtSizeY 105 pode ser igual ao (MinCbSizeY 104 << MaxMttDepth 103). Em outras palavras, o MinQtSizeY 105 não deve ser maior do que
(MinCbSizeY 104 << MaxMttDepth 103).
[0250] Notavelmente, ao longo deste documento, a operação x << y pode ser matematicamente descrita como xy, em que x é 2 para a potência de n, com n sendo um número inteiro não negativo. Em outras palavras, x << y representa o deslocamento de x por y bits para a esquerda.
[0251] O dispositivo 100, de acordo com a primeira modalidade específica é assim configurado para definir uma relação entre o MinQtSizeY 105 e o MinCbSizeY 104, o MaxBtSizeY 102 e/ou o MaxMttDepth 103, particularmente, de modo que o menor bloco de partição possa ser obtido pela divisão recursiva de um bloco precursor usando uma combinação de métodos de árvore quaternária ou divisão binária. Visto que o menor bloco (cujo tamanho é indicado pelo MinCbSizeY 104) pode ser gerado com os métodos de divisão disponíveis, é possível particionar completamente uma imagem que tem um tamanho que é um múltiplo de MinCbSizeY 104.
[0252] A FIG. 2 e a FIG. 3 mostram uma sintaxe SPS RPBS 200 e uma sintaxe de cabeçalho de fatia 300 para um dispositivo, de acordo com uma segunda modalidade específica da invenção. Em particular, a sintaxe SPS RBSP convencional mostrada na FIG. 8 é alterada para a sintaxe 200 mostrada na FIG. 2 (novos elementos são marcados em negrito, os elementos removidos são riscados). Além disso, a sintaxe de cabeçalho de fatia convencional mostrada na FIG. 9 é alterada para a sintaxe 300 mostrada na FIG. 3 (novos elementos são marcados em negrito, os elementos removidos são riscados). O dispositivo, de acordo com a segunda modalidade específica pode ser construído no dispositivo 100 mostrado na FIG. 1, ou pode ser uma modalidade separada da invenção. No dispositivo, de acordo com a segunda modalidade específica, o seguinte é implantado: • O MaxBtSizeY 102 é sinalizado no fluxo de bits 101 em relação ao MinQtSizeY 105. Em outras palavras, como é mostrado na FIG. 3, um elemento de sintaxe 301 da diferença entre o MaxBtSizeY 102 e o MinQtSizeY 105 pode ser sinalizado no fluxo de bits 101 (usando, por exemplo, um elemento de sintaxe, tal como log2_diff_max_bt_size_min_qt_size), e o MaxBtSizeY 102 pode ser derivado (por exemplo, em um decodificador do fluxo de bits 101) com base no MinQtSizeY 105 e log2_diff_max_bt_size_min_qt_size. Neste caso, em um exemplo:
 MaxBtSizeY 102 = MinQtSizeY 105 << log2_diff_max_bt_size_min_qt_size  Notavelmente, neste exemplo o elemento de sintaxe 301 da diferença entre o MaxBtSizeY 102 e o MinQtSizeY 105 é sinalizado em escala logarítmica (particularmente, na base 2). Neste exemplo, log2_diff_max_bt_size_min_qt_size pode ter apenas valores inteiros positivos ou valor zero. • O MaxMttDepth 103 é sinalizado no fluxo de bits 101 em relação ao MinQtSizeY 105 e ao MinCbSizeY 104. Como é mostrado na FIG. 2, um elemento de sintaxe 201 da diferença entre o MaxMttDepth 103 e um valor de log2 do MinQtSizeY 105 pode ser sinalizado no fluxo de bits 101, (por exemplo, usando um elemento de sintaxe: diff_max_mtt_hierarchy_depth_log2_min_qt_size). Dois elementos de sintaxe 201 são mostrados na FIG. 2, uma para inter_slices e um para intra_slices. Neste caso, no exemplo:  MaxMttDepth 103 = diff_max_mtt_hierarchy_depth_log2_min_qt_size + log2(MinQtSizeY)- log2(MinCbSizeY).  Notavelmente, neste exemplo, é novamente considerado que diff_max_mtt_hierarchy_depth_log2_min_qt_size é sinalizado em escala logarítmica. A função log2(x) corresponde ao logaritmo de x na base 2.
[0253] Na FIG. 3, ‘log2_diff_max_bt_size_min_qt_size’ especifica a diferença entre o tamanho de luma máximo (largura ou altura) de um bloco de codificação que pode ser dividido usando uma divisão binária e o tamanho de luma mínimo (largura ou altura) de um bloco de codificação que pode ser dividido usando uma divisão de árvore quaternária. O valor de log2_diff_ctu_max_bt_size deve estar na faixa de 0 a CtbLog2SizeY − MinQtLog2SizeY, inclusive.
[0254] A FIG. 4 mostra uma sintaxe SPS RPBS 400 para um dispositivo, de acordo com uma terceira modalidade específica da invenção. O dispositivo, de acordo com a terceira modalidade específica pode ser construído no dispositivo 100 mostrado na FIG. 1, ou pode ser uma modalidade separada da invenção. Como mencionado antes, convencionalmente, os elementos sinalizados do tamanho de imagem 405 e 406
(pic_width_in_luma_samples e pic_height_in_luma_samples) são, cada um, especificados para ser um valor de um múltiplo inteiro do MinCbSizeY 104.
[0255] Ao contrário, em uma primeira implantação do dispositivo, de acordo com a terceira modalidade específica, os elementos do tamanho da imagem 405 e 406 podem estar restringidos a ter apenas valores que são múltiplos inteiros do MinQtSizeY 105. O benefício disso é que um bloco de fronteira sempre pode ter a divisão de árvore quaternária como um método de particionamento disponível.
[0256] Em uma segunda implantação do dispositivo, de acordo com a terceira modalidade específica, a largura e a altura da imagem podem ser sinalizadas no fluxo de bits 101 com base no MinQtSizeY 105. Em particular, a sintaxe SPS RBSP convencional mostrada na FIG. 8 é alterada, de acordo com a sintaxe 400 mostrada na FIG. 4 (novos elementos são marcados em negrito, os elementos removidos são riscados).
[0257] Neste caso, na sintaxe SPS 400 mostrada na FIG. 4, quatro elementos de sintaxe 401 a 404 podem ser sinalizados (por exemplo, log2_diff_pic_height_min_Qt e log2_diff_pic_width_min_Qt), particularmente, dois elementos de sintaxe (altura/largura) por intra_slice e dois elementos de sintaxe (altura/largura) por inter_slice. Preferivelmente, estes elementos de sintaxe 401 a 404 são sinalizados em vez dos elementos reais de tamanho de imagem 405 e 406, e a largura e altura da imagem podem ser determinadas usando as seguintes relações: • Largura de imagem em amostras de luma = MinQtSizeY 105 << log2_diff_pic_width_min_Qt • Altura de imagem em amostras de luma = MinQtSizeY 105 << log2_diff_pic_height_min_Qt
[0258] Os elementos de sintaxe 401 a 404, particularmente, as diferenças podem ser indicadas na sintaxe SPS 400 com base em escala logarítmica.
[0259] A FIG. 5 e a FIG. 6 mostram duas sintaxes de cabeçalho de fatia 5000 e 600, respectivamente, para um dispositivo, de acordo com uma quarta modalidade específica da invenção. O dispositivo, de acordo com a quarta modalidade específica pode ser construído no dispositivo 100 mostrado na FIG. 1 ou pode ser uma modalidade separada da invenção.
[0260] O dispositivo, de acordo com a quarta modalidade específica da invenção está relacionado ao problema de que se o MaxMttDepth 103 for inferido, sinalizado ou indicado para ser igual a 0, o MaxBtSizeY 102 (ou o MaxTtSizeY) ainda pode estar presente no fluxo de bits 101, e pode ter um valor maior do que o MinCbSizeY 104, e o MinBtSizeY (ou o MinTtSizeY) ainda pode ter um valor igual ao MinCbSizeY 104. Esta condição pode criar uma ambiguidade na operação de um codificador e/ou decodificador, de modo que um particionamento completo de um quadro de imagem ainda não possa ser possível.
[0261] Em uma primeira implantação do dispositivo, de acordo com a quarta modalidade específica, o MaxBtSizeY 102 (ou o MaxTtSizeY) é sinalizado ou indicado no fluxo de bits 101 com base no valor do MaxMttDepth
103. Em particular, a sintaxe de cabeçalho de fatia convencional mostrada na FIG. 9 é alterada para a sintaxe 5000 mostrada na FIG. 5 (novos elementos são marcados em negrito). Isto é, o dispositivo é configurado para incluir um elemento de sintaxe 5001 do MaxBtSizeY 102 (ou do MaxTtSizeY) dependente do MaxMttDepth 103 no fluxo de bits 101.
[0262] Especificamente, quando o MaxMttDepth 103 é igual a 0, o MaxBtSizeY 102 (ou o MaxTtSizeY) não pode ser sinalizado no fluxo de bits 101, mas pode ser inferido (por exemplo, no decodificador) para ser igual ao MinCbSizeY 104. Alternativamente, o MaxBtSizeY 102 (ou o MaxTtSizeY) é inferido (por exemplo, no decodificador) para ser igual a um valor padrão pré- definido, tal como, por exemplo, 4 ou 8, se o MaxMttDepth 103 for igual a 0. ‘log2_diff_ctu_max_bt_size’ novamente especifica a diferença entre o tamanho de CTB de luma e o tamanho de luma máximo (largura ou altura) de um bloco de codificação que pode ser dividido usando uma divisão binária. O valor de log2_diff_ctu_max_bt_size deve estar na faixa de 0 a CtbLog2SizeY − MinCbLog2SizeY, inclusive.
[0263] Quando log2_diff_ctu_max_bt_size não está presente, o seguinte pode ser aplicado: Se o slice_type for igual a 2 (I) e max_mtt_hierarchy_depth_intra_slices for igual a 1, o valor de log2_diff_ctu_max_bt_size pode ser inferido para ser igual a 2. De outro modo, o valor de log2_diff_ctu_max_bt_size pode ser inferido para ser igual a CtbLog2SizeY − MinCbLog2SizeY.
[0264] Em uma segunda implantação do dispositivo, de acordo com a quarta modalidade específica, o MaxMttDepth 103 é sinalizado ou indicado no fluxo de bits 101 com base no valor do MaxBtSizeY 102 (ou do MaxTtSizeY). Em particular, a sintaxe de cabeçalho de fatia convencional mostrada na FIG. 9 é alterada para a sintaxe 600 mostrada na FIG. 6 (novos elementos são marcados em negrito). Isto é, o dispositivo é configurado para incluir um elemento de sintaxe 601 do MaxMttDepth 103 dependente do MaxBtSizeY 102 ou do MaxTtSizeY no fluxo de bits 101.
[0265] Especificamente, quando o MaxBtSizeY 102 (ou o MaxTtSizeY) é igual a 0, o MaxMttDepth 103 não pode ser sinalizado, mas pode ser inferido, por exemplo, no decodificador, para ser igual a 0. Se o valor do MaxMttDepth 103 for igual a 0, significa que a divisão binária não é permitida para ser aplicada. Nesta solução, o elemento de sintaxe do MaxBtSizeY 102 e do MaxTtSizeY deve ser sinalizado antes do MaxMttDepth 103, mas não limitado em qualquer cabeçalho de conjunto de parâmetros.
[0266] ‘MaxTtSizeY’ é definido como o tamanho de luma máximo (largura ou altura), em termos de número de amostras, de um bloco de codificação que pode ser dividido usando uma divisão ternária. ‘MinTtSizeY’ é definido como o tamanho de luma mínimo (largura ou altura), em termos de número de amostras, de um bloco de codificação que pode ser dividido usando uma divisão ternária.
[0267] Na FIG. 6, ‘max_mtt_hierarchy_depth’ especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária na fatia. O valor de max_mtt_hierarchy_depth_inter_slices deve estar na faixa de 0 a CtbLog2SizeY − MinTbLog2SizeY, inclusive. Quando o max_mtt_hierarchy_depth não está presente, o valor de max_mtt_hierachiy_depth é inferido como 0.
[0268] A FIG. 7 mostra um método 7000, de acordo com uma modalidade da invenção. O método 7000 é especificamente para manipular um fluxo de bits 101 e pode ser realizado pelo dispositivo 100 mostrado na FIG. 1. O método 7000 também pode ser realizado por um codificador que codifica as imagens do fluxo de bits 101 no fluxo de bits 101, isto é, gerando o fluxo de bits
101.
[0269] O método 7000 compreende uma etapa 7001 de determinação de um MaxBtSizeY 102 e/ou de determinação de um MaxMttDepth 103 e um MinCbSizeY 104. Além disso, o método 7000 compreende uma etapa 7002 de determinação d um MinQtSizeY 105 com base no MaxBtSizeY 102 e/ou com base no MaxMttDepth 103 e MinCbSizeY 104. Finalmente, o método 7000 compreende uma etapa 7003 de inclusão do MinQtSizeY 105 determinado no fluxo de bits 101.
[0270] A FIG. 10 mostra um dispositivo 1000, de acordo com uma modalidade da invenção geral. O dispositivo 1000 é adequado para gerar ou processar, isto é, manipular, um fluxo de bits 101 incluindo as imagens codificadas, por exemplo, um fluxo de bits de vídeo. O dispositivo 1000 pode ser incluído ou pode compreender, um codificador configurado para codificar as imagens e gerar o fluxo de bits 101. O dispositivo 1000 pode determinar as relações entre os elementos de restrição de partição e pode incluir estes elementos de restrição de partição e/ou suas relações no fluxo de bits 101. Desse modo, o dispositivo 1000 pode adicionar os elementos de restrição de partição e/ou relações a uma sintaxe SPS e/ou sintaxe de cabeçalho de fatia no fluxo de bits 101. O dispositivo 1000 é uma alternativa para o dispositivo 100 mostrado na FIG. 1. Entretanto, as características do dispositivo 1000 explicadas abaixo em relação à FIG. 10 podem ser combinadas com as características dos dispositivos descritas acima, de acordo com a primeira, segunda, terceira ou quarta modalidades específicas (se elas não forem construídas no dispositivo 100 da FIG. 1).
[0271] Em particular, o dispositivo 1000 é configurado para determinar um MinQtSizeY (105). Além disso, é configurado para determinar um MaxBtSizeY 102 e/ou determinar um MaxMttDepth 103 com base no MinQtSizeY 105. Finalmente, é configurado para incluir o MaxBtSizeY 102 determinado e/ou o MaxMttDepth 103 determinado no fluxo de bits (101), indireta (isto é, incluindo informações a partir das quais o MaxBtSizeY 102 e/ou MaxMttDepth 103 pode ser derivado) ou diretamente.
[0272] Por exemplo, o dispositivo 1000 pode determinar o MaxBtSizeY 102 considerando que seu limite inferior é o MinQtSizeY 105. Pelo fato de que a faixa de valor de MaxBtSizeY 102 pode ser limitada pelo valor de MinQtSizeY 105. Por exemplo, a fronteira inferior do MaxBtSizeY 102 pode ser limitada ao MinQtSizeY 105. Em outras palavras, no dispositivo 1000, o valor mínimo do MaxBtSizeY 102 não pode ser menor do que o MinQtSizeY 105.
[0273] Alternativamente ou além disso, no dispositivo 1000, o MaxMttDepth 103 pode ser determinado considerando que seu limite superior é a diferença do valor de log2 do MinQtSizeY 105 e o valor de log2 de um MinCbSizeY 104. Isto é, o valor máximo do MaxMttDepth 103 não pode ser maior do que a diferença do valor de log2 do MinQtSizeY 105 e do valor de log2 do MinCbSizeY 104.
[0274] Em resumo, o primeiro aspecto da invenção fornece um dispositivo para gerar ou processar um fluxo de bits incluindo as imagens codificadas, o dispositivo sendo configurado para determinar um MaxBtSizeY e/ou determinar um MaxMttDepth e um MinCbSizeY, determinar um MinQtSizeY com base no MaxBtSizeY e/ou com base no MaxMttDepth e MinCbSizeY e incluir o MinQtSizeY determinado no fluxo de bits.
[0275] Ao determinar o MinQtSizeY com base no MaxBtSizeY e/ou com base no MaxMttDepth e MinCbSizeY, isto é, definindo novas regras de particionamento através de definição de relações entre estes elementos de restrição de partição, o dispositivo do primeiro aspecto atinge um aumento na disponibilidade e flexibilidade dos diferentes métodos de partição de imagem, particularmente, divisão de árvore quaternária e de árvore binária.
[0276] Em uma forma de implantação do primeiro aspecto, o dispositivo é configurado para determinar o MinQtSizeY considerando que seu limite superior é o MaxBtSizeY, e/ou determinar o MinQtSizeY considerando que seu limite superior é o MinCbSizeY para a potência do MaxMttDepth.
[0277] Ao definir tais relações entre os elementos de restrição de partição MinQtSizeY, MinCbSizeY, MaxBtSizeY e MaxMttDepth, respectivamente, é garantido que o menor bloco de partição pode ser obtido pela divisão recursiva de um bloco precursor usando uma combinação de métodos de árvore quaternária ou divisão binária. Visto que o menor bloco (cujo tamanho é indicado por MinCbSizeY) pode ser gerado com os métodos de divisão disponíveis, é possível particionar completamente uma imagem que tem um tamanho sendo um múltiplo de MinCbSizeY.
[0278] Em uma forma de implantação adicional do primeiro aspecto, o dispositivo é configurado para determinar o MinQtSizeY para ser o
MinCbSizeY, se o MaxMttDepth for igual a zero, e determinar o MinQtSizeY para ser o MinCbSizeY para a potência do MaxMttDepth, se o MaxMttDepth for maior do que zero.
[0279] Isto fornece uma forma de implantação eficaz da forma de implantação anterior, de modo a permitir um particionamento completo da imagem usando árvore quaternária e particionamento de árvore binária, respectivamente.
[0280] Um segundo aspecto da invenção fornece um dispositivo para gerar ou processar um fluxo de bits incluindo as imagens codificadas, o dispositivo sendo configurado para: determinar um MinQtSizeY, determinar um MaxBtSizeY e/ou determinar um MaxMttDepth com base no MinQtSizeY e incluir o MaxBtSizeY determinado e/ou o MaxMttDepth determinado no fluxo de bits.
[0281] Em uma forma de implantação do segundo aspecto, o dispositivo é configurado para determinar o MaxBtSizeY considerando que seu limite inferior é o MinQtSizeY, e/ou determinar o MaxMttDepth considerando que seu limite superior é a diferença do valor de log2 do MinQtSizeY e do valor de log2 de um MinCbSizeY.
[0282] Como para o primeiro aspecto, o segundo aspecto define novas regras de particionamento através de definição de relações entre os elementos de restrição de partição. Assim, o dispositivo do segundo aspecto consegue um aumento na disponibilidade e flexibilidade dos diferentes métodos de partição de imagem, particularmente, árvore quaternária e divisão de árvore binária.
[0283] Em uma forma de implantação adicional do primeiro ou segundo aspecto, o dispositivo é configurado para incluir uma indicação de uma relação, particularmente, de uma diferença entre um MinQtSizeY e um MaxBtSizeY no fluxo de bits.
[0284] Assim, os elementos de restrição de partição relevantes podem ser facilmente inferidos, por exemplo, no lado do decodificador, ao mesmo tempo que reduz a sobrecarga de informações no fluxo de bits. Uma diferença é um exemplo de uma relação. Entretanto, a relação também pode ser um fator de proporcionalidade, esquema de cálculo ou semelhantes, que permitem inferir o MaxBtSizeY do MinQtSizeY.
[0285] Em uma forma de implantação adicional do primeiro ou segundo aspecto, o dispositivo é configurado para incluir uma indicação de uma relação, particularmente, de uma diferença entre um valor de log2 de MinQtSizeY e MaxMttDepth no fluxo de bits.
[0286] Assim, os elementos de restrição de partição relevantes podem ser inferidos, por exemplo, no lado do decodificador, ao mesmo tempo que reduz a sobrecarga de informações no fluxo de bits.
[0287] Em uma forma de implantação adicional do primeiro ou segundo aspecto, o dispositivo é configurado para determinar um ou mais elementos de tamanho de imagem, que são indicativos de um tamanho, particularmente, uma altura e largura das imagens do fluxo de bits, para ser um múltiplo inteiro do MinQtSizeY e incluem um ou mais elementos de tamanho de imagem no fluxo de bits.
[0288] Como uma consequência, um bloco de fronteira sempre pode ter a divisão de árvore quaternária como um método de particionamento disponível.
[0289] Em uma forma de implantação adicional do primeiro ou segundo aspecto, o dispositivo é configurado para determinar um ou mais elementos de tamanho de imagem, que são indicativos de um tamanho, particularmente, uma altura e largura das imagens do fluxo de bits e incluem uma indicação de uma relação entre os elementos de tamanho de imagem e o MinQtSizeY no fluxo de bits.
[0290] Assim, os elementos de restrição de partição relevantes podem ser inferidos, por exemplo, no lado do decodificador, ao mesmo tempo que reduz a sobrecarga de informações no fluxo de bits.
[0291] Em uma forma de implantação adicional do primeiro ou segundo aspecto, a indicação da relação entre os elementos de tamanho de imagem e o MinQtSizeY é fundamentada em uma escala logarítmica.
[0292] Em uma forma de implantação adicional do primeiro ou segundo aspecto, o dispositivo é configurado para incluir uma indicação do MaxBtSizeY ou de um MaxTtSizeY dependente do MaxMttDepth no fluxo de bits.
[0293] Desta maneira, uma ambiguidade convencionalmente criada na operação do codificador e/ou decodificador é eliminada e um particionamento completo de um quadro de imagem se torna possível.
[0294] Em uma forma de implantação adicional do primeiro ou segundo aspecto, o dispositivo é configurado para não incluir qualquer indicação do MaxBtSizeY ou do MaxTtSizeY no fluxo de bits, se o MaxMttDepth for igual a zero.
[0295] Isto permite a redução da sobrecarga de informações no fluxo de bits.
[0296] Em uma forma de implantação adicional do primeiro ou segundo aspecto, o dispositivo é configurado para incluir uma indicação do MaxMttDepth dependente do MaxBtSizeY ou do MaxTtSizeY no fluxo de bits.
[0297] Desta maneira, uma ambiguidade convencionalmente criada na operação do codificador e/ou decodificador é eliminada e um particionamento completo de um quadro de imagem se torna possível.
[0298] Em uma forma de implantação adicional do primeiro ou segundo aspecto, o dispositivo é configurado para não incluir qualquer indicação do MaxMttDepth no fluxo de bits, se o MaxBtSizeY ou MaxTtSizeY for igual a zero.
[0299] Isto permite a redução da sobrecarga de informações no fluxo de bits.
[0300] Em uma forma de implantação adicional do primeiro ou segundo aspecto, o dispositivo compreende ou é incluído em um codificador configurado para codificar as imagens do fluxo de bits.
[0301] Um terceiro aspecto da invenção fornece um método para gerar ou processar um fluxo de bits incluindo as imagens codificadas, o método compreende: determinar um MaxBtSizeY e/ou determinar um MaxMttDepth e um MinCbSizeY, determinar um MinQtSizeY com base no MaxBtSizeY e/ou com base no MaxMttDepth e MinCbSizeY e incluindo o MinQtSizeY determinado no fluxo de bits.
[0302] Em uma forma de implantação do terceiro aspecto, o método compreende determinar o MinQtSizeY considerando que seu limite superior é o MaxBtSizeY, e/ou determinar o MinQtSizeY considerando que seu limite superior é o MinCbSizeY para a potência do MaxMttDepth.
[0303] Em uma forma de implantação adicional do terceiro aspecto, o método compreende determinar o MinQtSizeY para ser o MinCbSizeY, se o
MaxMttDepth for igual a zero, e determinar o MinQtSizeY para ser o MinCbSizeY para a potência do MaxMttDepth, se o MaxMttDepth for maior do que zero.
[0304] Em uma forma de implantação adicional do terceiro aspecto, o método compreende incluir uma indicação de uma relação, particularmente, de uma diferença entre o MinQtSizeY e o MaxBtSizeY no fluxo de bits.
[0305] Em uma forma de implantação adicional do terceiro aspecto, o método compreende incluir uma indicação de uma relação, particularmente, de uma diferença entre o MinQtSizeY e o MaxMttDepth no fluxo de bits.
[0306] Em uma forma de implantação adicional do terceiro aspecto, o método compreende determinar um ou mais elementos de tamanho de imagem, que são indicativos de um tamanho, particularmente, uma altura e largura das imagens do fluxo de bits, para ser um múltiplo inteiro do MinQtSizeY e incluindo um ou mais elementos de tamanho de imagem no fluxo de bits.
[0307] Em uma forma de implantação adicional do terceiro aspecto, o método compreende determinar um ou mais elementos de tamanho de imagem, que são indicativos de um tamanho, particularmente, uma altura e largura das imagens do fluxo de bits e incluindo uma indicação de uma relação entre os elementos de tamanho de imagem e o MinQtSizeY no fluxo de bits.
[0308] Em uma forma de implantação adicional do terceiro aspecto, a indicação da relação entre os elementos de tamanho de imagem e o MinQtSizeY é fundamentada em uma escala logarítmica.
[0309] Em uma forma de implantação adicional do terceiro aspecto, o método compreende incluir uma indicação do MaxBtSizeY ou de um MaxTtSizeY dependente do MaxMttDepth no fluxo de bits.
[0310] Em uma forma de implantação adicional do terceiro aspecto, o método compreende não incluir qualquer indicação do MaxBtSizeY ou do MaxTtSizeY no fluxo de bits, se o MaxMttDepth for igual a zero.
[0311] Em uma forma de implantação adicional do terceiro aspecto, o método compreende incluir uma indicação do MaxMttDepth dependente do MaxBtSizeY ou do MaxTtSizeY no fluxo de bits.
[0312] Em uma forma de implantação adicional do terceiro aspecto, o método compreende não incluir qualquer indicação do MaxMttDepth no fluxo de bits, se o MaxBtSizeY ou MaxTtSizeY for igual a zero.
[0313] Em uma forma de implantação adicional do terceiro aspecto, o método é realizado em um codificador que codifica as imagens do fluxo de bits.
[0314] Com o método do terceiro aspecto e as formas de implantação, todas as vantagens e efeitos descritos acima para o dispositivo correspondente do primeiro aspecto e suas respectivas formas de implantação podem ser obtidos. Um aspecto adicional da invenção é um método para gerar ou processar um fluxo de bits correspondente para o dispositivo do segundo aspecto.
[0315] Um quarto aspecto da invenção fornece um dispositivo para gerar ou processar um fluxo de bits incluindo as imagens codificadas, o dispositivo sendo configurado para incluir uma indicação de uma relação, particularmente, de uma diferença entre um MinQtSizeY e um MaxBtSizeY no fluxo de bits, e/ou incluir uma indicação de uma relação, particularmente, de uma diferença entre um MinQtSizeY e um MaxMttDepth no fluxo de bits.
[0316] Com o dispositivo do quarto aspecto, os elementos de restrição de partição relevantes podem ser sinalizados ao mesmo tempo que reduz a sobrecarga de informações no fluxo de bits. Os elementos de restrição de partição podem ser inferidos, por exemplo, no lado do decodificador. O dispositivo do quarto aspecto consegue um aumento na disponibilidade e flexibilidade dos diferentes métodos de partição de imagem, particularmente, árvore quaternária e divisão de árvore binária.
[0317] Um quinto aspecto da invenção fornece um dispositivo para gerar ou processar um fluxo de bits incluindo as imagens codificadas, o dispositivo sendo configurado para: determinar um ou mais elementos de tamanho de imagem, que são indicativos de um tamanho, particularmente, uma altura e largura das imagens do fluxo de bits, para ser um múltiplo inteiro de um MinQtSizeY e incluir um ou mais elementos de tamanho de imagem no fluxo de bits; ou para determinar um ou mais elementos de tamanho de imagem, que são indicativos de um tamanho, particularmente, uma altura e largura das imagens do fluxo de bits e incluir uma indicação de uma relação entre os elementos de tamanho de imagem e um MinQtSizeY no fluxo de bits.
[0318] Com o dispositivo do quinto aspecto, um bloco de fronteira sempre pode ter uma divisão de árvore quaternária como um método de particionamento disponível. Além disso, os elementos de restrição de partição relevantes podem ser inferidos, por exemplo, no lado do decodificador, ao mesmo tempo que reduz a sobrecarga de informações no fluxo de bits. O dispositivo do quinto aspecto consegue um aumento na disponibilidade e flexibilidade dos diferentes métodos de partição de imagem, particularmente, árvore quaternária e divisão de árvore binária.
[0319] Um sexto aspecto da invenção fornece um dispositivo para gerar ou processar um fluxo de bits incluindo as imagens codificadas, o dispositivo sendo configurado para: incluir uma indicação de um MaxBtSizeY ou de um MaxTtSizeY dependente de um MaxMttDepth no fluxo de bits; ou para incluir uma indicação de um MaxMttDepth dependente de um MaxBtSizeY ou um MaxTtSizeY no fluxo de bits.
[0320] O dispositivo do sexto aspecto reduz ou elimina uma ambiguidade convencionalmente criada na operação do codificador e/ou decodificador e, assim, suporta um particionamento completo de um quadro de imagem. O dispositivo do sexto aspecto consegue um aumento na disponibilidade e flexibilidade dos diferentes métodos de partição de imagem, particularmente, árvore quaternária e divisão de árvore binária.
[0321] Um sétimo aspecto da invenção fornece um produto de programa de computador compreendendo o código de programa para controlar um dispositivo para realizar o método do terceiro aspecto e as respectivas formas de implantação, quando o código de programa é executado por um ou mais processadores do dispositivo. O dispositivo pode ser um dispositivo do primeiro, segundo, quarto, quinto ou sexto aspecto ou qualquer forma de implantação dos mesmos.
[0322] Um oitavo aspecto da invenção fornece um dispositivo para decodificar um fluxo de bits gerado ou processado por um dispositivo, de acordo com o primeiro, segundo, quarto, quinto ou sexto aspecto ou qualquer forma de implantação dos mesmos.
MODALIDADES RELACIONADAS AO PARTICIONAMENTO DE FRONTEIRA
[0323] O padrão de próxima geração da Codificação de Vídeo Versátil (VVC) é o projeto de vídeo mais recente do Grupo de Especialistas em
Codificação de Vídeo (VCEG) do Setor de Padronização da União Internacional de Telecomunicações da União de Telecomunicações (ITU-T) e da Organização Internacional de Padronização/Comissão Eletrotécnica Internacional (ISO/IEC) das organizações de padronização do Grupo de Especialistas em Imagem em Movimento (MPEG), trabalhando juntas em uma parceria conhecida como Equipe de Exploração de Vídeo Conjunta (JVET). Em VVC, uma estrutura de segmentação árvore de múltiplos tipos (binária/ternária/quaternária) (BT/TT/QT ou árvore binária/árvore ternária/árvore quaternária) deve substituir ou pode substituir, o conceito de tipos de unidade de partição múltipla, isto é, remove a separação dos conceitos de CU, PU e TU exceto como necessário para as CUs que têm um tamanho muito grande para o comprimento de transformada máximo e oferecem mais flexibilidade para os formatos de partição de CU. [JVET-J1002].
[0324] As FIGs. 6A a F ilustram, como um exemplo, os modos de partição atualmente usados em VTM. A FIG. 16A mostra um bloco sem divisão (não dividido), a FIG. 16B mostra o particionamento quaternário ou árvore quaternária (QT), a FIG. 16C mostra um particionamento binário horizontal ou árvore binária (BT), a FIG. 16D mostra um particionamento binário vertical ou árvore binária (BT), a FIG. 16E mostra um particionamento ternário horizontal ou árvore ternária (TT) e a FIG. 16F mostra um particionamento vertical ternário ou árvore ternária (TT) de um bloco, tal como uma CU ou CTU. As modalidades podem ser configuradas para implantar os modos de partição mostrados nas FIGs. 16A a 16F.
[0325] Nas modalidades, os seguintes parâmetros podem ser definidos e especificados pelos elementos de sintaxe do conjunto de parâmetros de sequência (SPS) para o esquema de árvore de codificação BT/TT/QT: tamanho de CTU: o tamanho do nó raiz de uma árvore quaternária MinQTSize: o tamanho mínimo permitido do nó folha de árvore quaternária MaxBTTSize: o tamanho máximo permitido do nó raiz de árvore binária e ternária MaxBTTDepth: a profundidade máxima permitida da árvore binária e ternária e
MinBTTSize: o tamanho mínimo permitido do nó folha de árvore binária e ternária
[0326] Em outras modalidades, o parâmetro MinQTSize de tamanho mínimo permitido do nó folha de árvore quaternária também pode estar compreendido em outros cabeçalhos ou conjuntos, por exemplo, o cabeçalho de fatia (SH) ou conjunto de parâmetros de imagem (PPS).
[0327] No padrão HEVC, as unidades de árvore de codificação (CTU) ou unidades de codificação (CU), que estão localizadas nas fronteiras de fatia/imagem, serão forçadamente divididas usando árvore quaternária (QT) até que a amostra inferior direita do nó folha seja localizada dentro da fronteira de fatia/imagem. A partição QT ou particionamento forçado não precisa ser sinalizado no fluxo de bits pelo fato de que tanto o codificador quanto o decodificador, por exemplo, tanto o codificador de vídeo 20 quanto o decodificador de vídeo 30, sabem quando para aplicar a QT forçada. O propósito da partição forçada é tornar a CTU/CU de fronteira possível pelo codificador de vídeo 20/decodificador de vídeo 30.
[0328] O número de publicação de patente internacional WO 2016/090568 revela uma estrutura QTBT (árvore quaternária mais árvore binária) e também em VTM 1.0, o processo de particionamento forçado da CTU/CU de fronteira é herdado de HEVC. Isto significa que a CTU/CU localizada na fronteira de quadro é forçada a ser particionada por uma estrutura de árvore quaternária (QT) sem considerar a otimização de distorção de taxa (RD) até que toda a CU atual esteja dentro da fronteira de imagem. Estas partições forçadas não são sinalizadas no fluxo de bits.
[0329] A FIG. 7A mostra um exemplo de partição forçada para uma CTU de fronteira inferior CTU (128x128) de alta definição (HD) (1920x1080 pixels) particionada pela QT forçada. Na FIG. 17, a imagem HD é ou tem 1920x1080 pixels e a CTU é ou tem 128x128 pixels.
[0330] Em SubCE2 (tratamento de fronteira de imagem) de CE1 (particionamento) na reunião de San Diego (04.2018) [JVET-J1021, 15 testes foram propostos para o tratamento de fronteira de imagem usando BT, TT ou ABT (BT assimétrica). Em JVET-K0280 e JVET-K0376, por exemplo, a fronteira é definido, como mostrado na FIG. 18. A FIG. 18 mostra as bordas de uma imagem por linhas pontilhadas e áreas de casos de fronteira em linhas retas,
isto é, um caso de fronteira inferior, um caso de fronteira de canto e um caso de fronteira direito. Uma fronteira inferior pode ser particionado pela BT forçada horizontal ou QT forçada, uma fronteira direita pode ser particionado pela BT forçada vertical ou QT forçada, e um caso de canto só pode ser dividido pela QT forçada, em que a decisão se deve utilizar qualquer um do particionamento de BT forçado ou QT forçado é fundamentado em um critério de otimização de distorção de taxa e é sinalizado no fluxo de bits. O particionamento forçado significa que o bloco deve ser particionado, por exemplo, o particionamento forçado é aplicado aos blocos de fronteira que não podem ser codificados usando “sem divisão”, como mostrado na FIG 16A.
[0331] Se a divisão de QT forçada for usada em um particionamento de fronteira forçado, a restrição de particionamento de MinQTSize é ignorada. Por exemplo, na FIG. 19A, se o MinQTSize for sinalizado como 32 no SPS, para combinar a fronteira com um método de QT forçada, uma QT dividida para um tamanho de bloco 8x8 seria necessária, o que ignora a restrição de MinQTSize sendo 32.
[0332] De acordo com as modalidades da revelação, se a QT forçada for usada para o particionamento de fronteira de imagem, a divisão de QT forçada obedece, por exemplo, não ignora, uma restrição de divisão como sinalizado, por exemplo, em um SPS. Se a divisão forçada adicional for necessária, apenas a BT forçada é usada, que em combinação também pode ser referida como QTBT forçada. Nas modalidades da revelação, por exemplo, a restrição de partição MinQTSize é considerada para o particionamento de QT forçado em fronteiras da imagem e nenhuma sinalização adicional para o particionamento de BT forçado é necessária. As modalidades também permitem harmonizar o particionamento para os blocos normais (que não são de fronteira) e blocos de fronteira. Por exemplo, nas soluções convencionais, dois parâmetros “MinQTSize” são necessários, um para o particionamento de bloco normal e outro para particionamento de bloco de fronteira. As modalidades requerem apenas um parâmetro “MinQTSize” comum tanto para o particionamento de bloco normal quanto para o de bloco de fronteira, que pode ser definido de forma flexível entre o codificador e decodificador, por exemplo, pela sinalização de um parâmetro “MinQTSize”. Além disso, as modalidades requerem menos partições do que, por exemplo, a QT forçada.
Soluções para o caso de fronteira inferior caso e caso de fronteira direito
[0333] No caso de fronteira inferior e direito, se o tamanho de bloco for maior do que MinQTSize, em seguida, o modo de partição para o particionamento de fronteira de imagem pode ser selecionado entre o particionamento de BT forçado e o particionamento de QT forçado, por exemplo, com base na RDO (otimização de distorção de taxa). De outro modo (isto é, se o tamanho de bloco for igual ou menor do que o MinQTSize), apenas o particionamento de BT forçado é usado para o particionamento de fronteira de imagem, mais especificamente, a BT forçada horizontal é usada para uma fronteira inferior, respectivamente, para um bloco de fronteira localizado na fronteira inferior de uma imagem e a BT forçada vertical é usada para uma fronteira direita, respectivamente, para um bloco de fronteira localizado na fronteira direita de uma imagem.
[0334] O particionamento de BT forçado pode compreender o particionamento recursivo do bloco atual por um particionamento horizontal de fronteira forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior da imagem e o particionamento recursivo da sub-partição por um particionamento vertical de fronteira forçado até que um nó folha esteja inteiramente localizado na fronteira direita da imagem. Alternativamente, o particionamento de BT forçado pode compreender o particionamento recursivo do bloco atual por um particionamento vertical de fronteira forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior e o particionamento recursivo da sub-partição por um particionamento horizontal de fronteira forçado até que um nó folha esteja inteiramente localizado na fronteira direita. O MinQTSize também pode ser aplicado para controlar o particionamento de um bloco que não é de fronteira.
[0335] Por exemplo, no caso mostrado na FIG. 17A, se o MinQTSize for, ou estiver limitado a, 32 enquanto o tamanho de um bloco de altura ou largura retangular (não quadrado) de 8 amostras é necessário para combinar a fronteira de imagem, o particionamento de BT forçado será usado para o particionamento o bloco localizado na fronteira 32x32. As partições BT podem ser particionadas adicionalmente usando o particionamento de BT forçado do mesmo tipo, por exemplo, no caso do particionamento de BT vertical forçado ter sido aplicado, apenas o particionamento adicional de BT vertical forçado é aplicado e no caso do particionamento de BT horizontal forçado ter sido aplicado, apenas o particionamento adicional de BT horizontal forçado é aplicado. O particionamento de BT forçado é continuado até que o nó folha esteja inteiramente dentro da imagem.
[0336] A FIG. 17B mostra um particionamento exemplar de uma CTU de fronteira inferior com um tamanho de amostras 128x128, de acordo com uma modalidade da invenção. A CTU de fronteira inferior, que forma um bloco de raiz ou nó raiz de uma árvore de particionamento, é particionada em menores partições, por exemplo, menores blocos de tamanho quadrado ou retangular. Estas partições ou blocos menores podem ser particionados adicionalmente em menores partições ou blocos. Na FIG. 17B, a CTU é primeiramente particionada em árvore quaternária em quatro blocos quadrados 710, 720, 730 e 740, cada um tendo um tamanho de amostras 64x64. Destes blocos, os blocos 710 e 720 são novamente blocos de fronteira inferior, enquanto os blocos 730 e 740 estão fora da imagem (respectivamente, estão localizados fora da imagem) e não são processados.
[0337] O bloco 710 é particionado adicionalmente usando o particionamento de árvore quaternária em quatro blocos quadrados 750, 760, 770 e 780, cada um tendo um tamanho de amostras 32x32. Os blocos 750 e 760 estão localizados dentro da imagem, enquanto os blocos 770 e 780 formam novamente blocos de fronteira inferior. Como o tamanho de bloco 770 não é maior do que MinQTSize que é, por exemplo, 32, particionamento binário forçado horizontal recursivo é aplicado ao bloco 770 até que um nó folha esteja inteiramente dentro ou inteiramente localizado dentro da imagem, por exemplo, até que um bloco de nó folha 772, um bloco não quadrado retangular tendo amostras 32x16 esteja dentro da imagem (depois de um particionamento binário horizontal), ou o bloco de nó folha 774, um bloco não quadrado retangular localizado na fronteira inferior da imagem e tendo amostras 32x8 estejam dentro da imagem (depois de dois particionamentos binários horizontais). O mesmo se aplica para o bloco 780.
[0338] As modalidades da revelação permitem harmonizar o particionamento para os blocos normais localizados completamente dentro da imagem e o particionamento de blocos de fronteira. Os blocos de fronteira são os blocos que não estão completamente dentro da imagem e não estão completamente fora da imagem. Em outras palavras, os blocos de fronteira são os blocos que compreendem uma parte que está localizada dentro da imagem e uma parte que está localizada fora da imagem. Além disso, as modalidades da revelação permitem reduzir a sinalização, uma vez que o particionamento de BT forçado em MinQTSize ou abaixo dele não precisa ser sinalizado. Soluções para o caso de canto
[0339] No caso de canto, algumas abordagens permitem apenas uma divisão de QT forçada, que também ignora a restrição de MinQTSize. As modalidades da revelação fornecem duas soluções para o caso de canto. Um caso de canto ocorre quando o bloco atualmente processado está no canto da imagem. Este é o caso se o bloco atual for cruzado ou adjacente às duas fronteiras da imagem (vertical e horizontal). Solução 1:
[0340] O caso de canto é considerado como uma fronteira inferior caso ou um caso de fronteira direito. A FIG. 20 mostra uma modalidade de uma definição de fronteira. A FIG. 20 mostra as bordas de uma imagem por linhas pontilhadas e áreas de casos de fronteira em linhas retas. Como mostrado, o caso de canto é definido como um caso de fronteira inferior. Assim, a solução é a mesma que a descrita para o caso de fronteira inferior e caso de fronteira direito acima. Em outras palavras, primeiramente um particionamento horizontal é aplicado (como descrito para o caso de fronteira inferior) até que os blocos ou partições estejam inteiramente dentro da imagem (na direção vertical) e, em seguida, um particionamento vertical é aplicado (como descrito para o caso de fronteira direito) até que os nós folha estejam inteiramente dentro da imagem (na direção horizontal). Solução 2:
[0341] A definição dos casos de fronteira ainda é mantida como está. Se a QT forçada for restringida por MinQTSize (tamanho do bloco atual igual ou menor do que MinQTSize), utilizar a BT forçada horizontal para combinar a fronteira inferior, quando a fronteira inferior corresponder, utilizar a BT forçada vertical para combinar a fronteira direita.
[0342] Por exemplo, na FIG. 19A, que mostra uma modalidade de uma QTBT forçada para um bloco localizado em um canto de uma imagem, se
MinQTSize for, ou estiver limitado a, 32 para o caso de partição de QT forçada de canto, a partição de BT adicional será usada depois da partição do bloco 32x32 até que a partição forçada seja encerrada.
[0343] A FIG. 9B mostra detalhes adicionais de um particionamento exemplar de uma CTU de fronteira ou em um canto de uma imagem, de acordo com uma modalidade da invenção, em que a CTU tem um tamanho de amostras 128x128. A CTU é primeiramente particionada em árvore quaternária em quatro blocos quadrados, cada um tendo um tamanho de amostras 64x64. Destes blocos, apenas o bloco superior esquerdo 910 é um bloco de fronteira, enquanto os outros três estão localizados fora (inteiramente fora) da imagem e não são processados adicionalmente. O bloco 910 é particionado adicionalmente usando o particionamento de árvore quaternária em quatro blocos quadrados 920, 930, 940 e 950, cada um tendo um tamanho de amostras 32x32. O bloco 920 está localizado dentro da imagem, enquanto os blocos 930, 940 e 950 formam novamente os blocos de fronteira. Como o tamanho destes blocos 930, 940 e 950 não é maior do que MinQTSize, que é 32, o particionamento binário forçado é aplicado aos blocos 930, 940 e 950.
[0344] O bloco 930 está localizado em uma fronteira direita e particionado usando particionamento binário forçado vertical recursivo até que um nó folha esteja dentro da imagem, por exemplo, o bloco 932 localizado na fronteira direita da imagem (neste relatório, depois de dois particionamentos binários verticais).
[0345] O bloco 940 está localizado em uma fronteira inferior e particionado usando o particionamento binário forçado horizontal recursivo até que um nó folha esteja dentro da imagem, por exemplo, o bloco 942 localizado na fronteira direita da imagem (neste relatório, depois de dois particionamentos binários horizontais).
[0346] O bloco 950 está localizado em uma fronteira de canto e é particionado usando primeiramente o particionamento binário forçado horizontal recursivo até que uma sub-partição ou bloco, neste relatório, bloco 952, esteja localizado em uma fronteira inferior da imagem (neste relatório, depois de dois particionamentos binários horizontais) e, em seguida, o particionamento recursivo da sub-partição por um particionamento vertical de fronteira forçado até que um nó folha ou bloco, por exemplo, o bloco 954, esteja localizado na fronteira direita da imagem (neste relatório, depois de dois particionamentos binários verticais) ou, respectivamente, até que um nó folha esteja localizado dentro da imagem.
[0347] A abordagem acima pode ser aplicada tanto para a decodificação quanto para a codificação. Para a decodificação, MinQTSize pode ser recebido através de um SPS. Para codificar, o MinQTSize pode ser transmitido através de um SPS. As modalidades podem utilizar definições de fronteira, como mostrado na FIG. 18 ou FIG. 20, ou outras definições de fronteira.
[0348] As modalidades adicionais da presente revelação são fornecidas a seguir. Deve ser observado que a numeração usada na seguinte seção não necessariamente precisa estar de acordo com a numeração usada nas seções anteriores. Modalidade 1: Um método de particionamento compreendendo: determinar se o bloco atual de uma imagem é um bloco de fronteira; se o bloco atual for um bloco de fronteira, determinar se o tamanho do bloco atual é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária; se o tamanho do bloco atual não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, aplicar o particionamento de árvore binária forçado ao bloco atual. Modalidade 2: O método de particionamento da modalidade 1, em que o particionamento de árvore binária forçado é um particionamento binário forçado horizontal recursivo no caso de o bloco atual estar localizado em uma fronteira inferior da imagem, ou é um particionamento de fronteira recursivo vertical forçado no caso de o bloco atual estar localizado em uma fronteira direita da imagem. Modalidade 3: O método de particionamento da modalidade 1 ou 2, em que o particionamento binário forçado compreende o particionamento recursivo do bloco atual por um particionamento horizontal de fronteira forçado até que uma sub-partição do bloco atual esteja localizada diretamente na fronteira inferior da imagem e o particionamento recursivo da sub-partição por um particionamento de fronteira vertical forçado até que um nó folha esteja inteiramente localizado diretamente na fronteira direita da imagem ou vice-
versa. Modalidade 4: O método de particionamento de qualquer uma das modalidades de 1 a 3, em que o tamanho mínimo permitido do nó folha de árvore quaternária é um tamanho mínimo permitido do nó folha de árvore quaternária também aplicado para controlar o particionamento de um bloco que não é de fronteira. Modalidade 5: Um método de decodificação para decodificar um bloco pelo particionamento do bloco, de acordo com o método de particionamento de qualquer uma das modalidades de 1 a 4. Modalidade 6: O método de decodificação da modalidade 5, em que o tamanho mínimo permitido do nó folha de árvore quaternária é recebido através de um SPS. Modalidade 7: Um método de codificação para codificar um bloco pelo particionamento do bloco, de acordo com o método de particionamento de qualquer uma das modalidades de 1 a 4. Modalidade 8: O método de codificação da modalidade 7, em que o tamanho mínimo permitido do nó folha de árvore quaternária é transmitido através de um SPS. Modalidade 9: Um dispositivo de decodificação, compreendendo circuitos lógicos configurados para realizar qualquer um dos métodos da modalidade 5 ou 6. Modalidade 10: Um dispositivo de codificação, compreendendo circuitos lógicos configurados para realizar qualquer um do método da modalidade 7 ou 8. Modalidade 11: Uma mídia de armazenamento não transitória para armazenar instruções quando executadas por um processador fazem com que o processador realize qualquer um dos métodos, de acordo com as modalidades de 1 a 8.
[0349] Em um ou mais exemplos, as funções descritas podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implantadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em uma mídia legível por computador e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir a mídia de armazenamento legível por computador, que corresponde a uma mídia tangível, tal como a mídia de armazenamento de dados, ou mídia de comunicação incluindo qualquer mídia que facilite a transferência de um programa de computador de uma placa para outra, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, a mídia legível por computador geralmente pode corresponder à (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) uma mídia de comunicação, tal como um sinal ou onda de portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código ou estruturas de dados para a implantação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0350] À título de exemplo e não de limitação, tal mídia de armazenamento legível por computador pode compreender RAM, ROM, memória somente de leitura programável apagável eletricamente (EEPROM), CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético, outros dispositivos de armazenamento magnético, memória flash ou qualquer outra mídia que pode ser usada para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessada por um computador. Também, qualquer conexão é apropriadamente denominada uma mídia legível por computador. Por exemplo, se as instruções forem transmitidas de um website, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, em seguida, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro-onda são incluídos na definição de mídia. Deve ser entendido, entretanto, que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem conexões, ondas de portadora, sinais ou outra mídia transitória, mas são direcionadas para a mídia de armazenamento tangível não transitória. Disco e disquete, como usado neste relatório, incluem disco compacto (CD), disco à laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, em que os disquetes usualmente reproduzem dados magneticamente,
enquanto os discos reproduzem dados opticamente com lasers. As combinações dos itens acima também devem ser incluídas no escopo da mídia legível por computador.
[0351] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados específicos da aplicação (ASICs), arranjos lógicos programáveis em campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Consequentemente, o termo “processador”, como usado neste relatório, pode se referir a qualquer uma da estrutura anterior ou qualquer outra estrutura adequada para a implantação das técnicas descritas neste relatório. Além disso, em alguns aspectos, a funcionalidade descrita neste relatório pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para codificar e decodificar, ou incorporados em um codec combinado. Também, as técnicas podem ser completamente implantadas em um ou mais circuitos ou elementos lógicos.
[0352] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades, são descritos nesta revelação para enfatizar os aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não necessariamente requer a realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec fornecida por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores como descrito acima, em conjuntamente com o software e/ou firmware adequado.
[0353] Um aparelho compreende um elemento de memória; e um elemento de processador acoplado ao elemento de memória e configurado para determinar se um bloco atual de uma imagem é um bloco de fronteira, determinar, quando o bloco atual é um bloco de fronteira, se um tamanho do bloco atual é maior do que um tamanho mínimo (MinQTSize) permitido do nó folha de árvore quaternária (QT) e aplicar, quando o tamanho do bloco atual não é maior do que MinQTSize, o particionamento de árvore binária (BT) forçado ao bloco atual.
[0354] Embora várias modalidades tenham sido fornecidas na presente revelação, deve ser entendido que os sistemas e métodos revelados podem ser incorporados em muitas outras formas específicas sem se separar do espírito ou escopo da presente revelação. Os exemplos presentes devem ser considerados como ilustrativos e não restritivos e a intenção não deve ser limitada aos detalhes fornecidos neste relatório. Por exemplo, os vários elementos ou componentes podem ser combinados ou integrados em outro sistema ou determinadas características podem ser omitidas ou não implantadas.
[0355] Além disso, técnicas, sistemas, subsistemas e métodos descritos e ilustrados nas várias modalidades como discretas ou separadas podem ser combinadas ou integradas com outros sistemas, módulos, técnicas ou métodos sem se afastar do escopo da presente revelação. Outros itens mostrados ou discutidos como acoplados ou diretamente acoplados ou em comunicação uns com os outros, podem ser indiretamente acoplados ou se comunicar através de alguma interface, dispositivo ou componente intermediário seja, eletricamente, mecanicamente ou de outro modo. Outros exemplos de mudanças, substituições e alterações são verificáveis por um técnico no assunto e podem ser feitas sem se afastar do espírito e escopo revelados neste relatório.
[0356] As modalidades do presente pedido (ou da presente revelação) fornecem aparelhos e métodos para codificação e decodificação.
[0357] Um primeiro aspecto se refere a um método de particionamento compreendendo determinar se um bloco atual de uma imagem é um bloco de fronteira e se o tamanho do bloco atual é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária; e se o bloco atual for o bloco de fronteira e o tamanho do bloco atual não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária (MinQTSize), aplicando o particionamento de árvore binária (BT) forçado ao bloco atual.
[0358] Em uma primeira forma de implantação do método, de acordo com o primeiro aspecto como tal, o particionamento de árvore binária forçado é um particionamento binário forçado horizontal recursivo no caso do bloco atual estar localizado em uma fronteira inferior da imagem ou um particionamento de fronteira recursivo vertical forçado no caso do bloco atual estar localizado em uma fronteira direita da imagem.
[0359] Em uma segunda forma de implantação do método, de acordo com o primeiro aspecto como tal ou qualquer forma de implantação anterior do primeiro aspecto, o particionamento de árvore binária forçado é continuado até que um bloco de nó folha esteja dentro da imagem.
[0360] Em uma terceira forma de implantação do método, de acordo com o primeiro aspecto como tal ou qualquer forma de implantação anterior do primeiro aspecto, o particionamento binário forçado compreende o particionamento recursivo do bloco atual por um particionamento horizontal de fronteira forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior da imagem; e o particionamento recursivo da sub-partição por um particionamento de fronteira vertical forçado até que um nó folha esteja inteiramente localizado na fronteira direita da imagem.
[0361] Em uma quarta forma de implantação do método, de acordo com o primeiro aspecto como tal ou qualquer forma de implantação anterior do primeiro aspecto, o particionamento de BT forçado compreende o particionamento recursivo do bloco atual por um particionamento de fronteira vertical forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior; e o particionamento recursivo da sub-partição por um particionamento horizontal de fronteira forçado até que um nó folha esteja inteiramente localizado na fronteira direita.
[0362] Em uma quinta forma de implantação do método, de acordo com o primeiro aspecto como tal ou qualquer forma de implantação anterior do primeiro aspecto, o método compreende adicionalmente aplicar o tamanho mínimo permitido do nó folha de árvore quaternária para controlar um particionamento de um bloco que não é de fronteira.
[0363] Em uma sexta forma de implantação do método, de acordo com o primeiro aspecto como tal ou qualquer forma de implantação anterior do primeiro aspecto, o bloco de fronteira é um bloco que não está completamente dentro da imagem não está completamente fora da imagem.
[0364] Um segundo aspecto se refere a um método de decodificação para decodificar um bloco pelo particionamento do bloco, de acordo com o primeiro aspecto como tal ou qualquer forma de implantação anterior do primeiro aspecto.
[0365] Em uma primeira forma de implantação do método, de acordo com o segundo aspecto como tal, o método compreende adicionalmente o recebimento do tamanho mínimo permitido do nó folha de árvore quaternária através de um conjunto de parâmetros de sequência (SPS).
[0366] Um terceiro aspecto se refere a um método de codificação para codificar um bloco pelo particionamento do bloco, de acordo com o primeiro aspecto como tal ou qualquer forma de implantação anterior do primeiro aspecto.
[0367] Em uma primeira forma de implantação do método, de acordo com o terceiro aspecto como tal, o método compreende adicionalmente transmitir o tamanho mínimo permitido do nó folha de árvore quaternária através de um conjunto de parâmetros de sequência (SPS).
[0368] Um quarto aspecto se refere a um dispositivo de decodificação compreendendo circuitos lógicos configurados para decodificar um bloco pelo particionamento do bloco, de acordo com o método de particionamento do primeiro aspecto como tal ou qualquer forma de implantação anterior do primeiro aspecto.
[0369] Em uma primeira forma de implantação do dispositivo de decodificação, de acordo com o quarto aspecto como tal, os circuitos lógicos são configurados adicionalmente para receber o tamanho mínimo permitido do nó folha de árvore quaternária através de um conjunto de parâmetros de sequência (SPS).
[0370] Um quinto aspecto se refere a um dispositivo de codificação compreendendo circuitos lógicos configurados para codificar um bloco pelo particionamento do bloco, de acordo com o método de particionamento do primeiro aspecto como tal ou qualquer forma de implantação anterior do primeiro aspecto.
[0371] Em uma primeira forma de implantação do dispositivo de decodificação, de acordo com o quinto aspecto como tal, os circuitos lógicos são configurados adicionalmente para transmitir o tamanho mínimo permitido do nó folha de árvore quaternária através de um conjunto de parâmetros de sequência (SPS).
[0372] Um sexto aspecto se refere a uma mídia de armazenamento não transitória para armazenar as instruções que quando executadas por um processador fazem com que um processador realize qualquer um do primeiro, segundo ou terceiro aspecto como tal ou qualquer forma de implantação anterior do primeiro, segundo ou terceiro aspecto.
[0373] Um sétimo aspecto se refere a um método compreende fazer uma determinação de que um bloco atual de uma imagem é um bloco de fronteira e que um tamanho do bloco atual é menor do que ou igual a um tamanho mínimo (MinQTSize) permitido de nó folha de árvore quaternária (QT); e aplicar, em resposta à determinação, o particionamento de árvore binária (BT) forçado ao bloco atual.
[0374] Em uma primeira forma de implantação do método, de acordo com o sétimo aspecto como tal, o bloco atual está localizado em uma fronteira inferior da imagem e em que o particionamento de BT forçado é um particionamento horizontal de BT forçado recursivo.
[0375] Em uma segunda forma de implantação do método, de acordo com o sétimo aspecto como tal ou qualquer forma de implantação anterior do sétimo aspecto, o bloco atual está localizado em uma fronteira direita da imagem e em que o particionamento de BT forçado é um particionamento vertical de BT forçado recursivo.
[0376] Em uma terceira forma de implantação do método, de acordo com o sétimo aspecto como tal ou qualquer forma de implantação anterior do sétimo aspecto, o particionamento de BT forçado compreende o particionamento recursivo do bloco atual por um particionamento horizontal de fronteira forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior; e o particionamento recursivo da sub-partição por um particionamento de fronteira vertical forçado até que um nó folha esteja inteiramente localizado na fronteira direita.
[0377] Em uma quarta forma de implantação do método, de acordo com o sétimo aspecto como tal ou qualquer forma de implantação anterior do sétimo aspecto, o particionamento de BT forçado compreende o particionamento recursivo do bloco atual por um particionamento de fronteira vertical forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior; e o particionamento recursivo da sub-partição por um particionamento horizontal de fronteira forçado até que um nó folha esteja inteiramente localizada na fronteira direita.
[0378] Em uma quinta forma de implantação do método, de acordo com o sétimo aspecto como tal ou qualquer forma de implantação anterior do sétimo aspecto, o método compreende adicionalmente aplicar o MinQTSize para controlar o particionamento de um bloco que não é de fronteira.
[0379] Em uma sexta forma de implantação do método, de acordo com o sétimo aspecto como tal ou qualquer forma de implantação anterior do sétimo aspecto, o método compreende adicionalmente receber o MinQTSize através de um conjunto de parâmetros de sequência (SPS).
[0380] Em uma sétima forma de implantação do método, de acordo com o sétimo aspecto como tal ou qualquer forma de implantação anterior do sétimo aspecto, o método compreende adicionalmente transmitir o MinQTSize através de um conjunto de parâmetros de sequência (SPS).
[0381] Um oitavo aspecto se refere a um aparelho compreendendo uma memória; e um processador acoplado à memória e configurado para determinar se um bloco atual de uma imagem é um bloco de fronteira, determinar, quando o bloco atual é um bloco de fronteira, se um tamanho do bloco atual é maior do que um tamanho mínimo (MinQTSize) permitido do nó folha de árvore quaternária (QT) e aplicar, quando o tamanho do bloco atual não é maior do que o MinQTSize, o particionamento de árvore binária (BT) forçado ao bloco atual.
[0382] Em uma primeira forma de implantação do aparelho, de acordo com o oitavo aspecto como tal, o particionamento de BT forçado é um particionamento horizontal de BT forçado recursivo quando o bloco atual está localizado em uma fronteira inferior da imagem ou um particionamento vertical de BT forçado recursivo quando o bloco atual está localizado em uma fronteira direita da imagem.
[0383] Em uma segunda forma de implantação do aparelho, de acordo com o oitavo aspecto como tal ou qualquer forma de implantação anterior do oitavo aspecto, o particionamento de BT forçado compreende o particionamento recursivo do bloco atual por um particionamento horizontal de fronteira forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior; e o particionamento recursivo da sub-partição por um particionamento de fronteira vertical forçado até que um nó folha esteja inteiramente localizado na fronteira direita.
[0384] Em uma terceira forma de implantação do aparelho, de acordo com o oitavo aspecto como tal ou qualquer forma de implantação anterior do oitavo aspecto, o particionamento de BT forçado compreende o particionamento recursivo o bloco atual por um particionamento de fronteira vertical forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior; e o particionamento recursivo da sub-partição por um particionamento horizontal de fronteira forçado até que um nó folha esteja inteiramente localizado na fronteira direita.
[0385] Em uma quarta forma de implantação do aparelho, de acordo com o oitavo aspecto como tal ou qualquer forma de implantação anterior do oitavo aspecto, o processador é adicionalmente configurado para aplicar o MinQTSize para controlar o particionamento de um bloco que não é de fronteira.
[0386] Em uma quinta forma de implantação do aparelho, de acordo com o oitavo aspecto como tal ou qualquer forma de implantação anterior do oitavo aspecto, o aparelho compreende adicionalmente um receptor acoplado ao processador e configurado para receber o MinQTSize através de um conjunto de parâmetros de sequência (SPS).
[0387] Em uma sexta forma de implantação do aparelho, de acordo com o oitavo aspecto como tal ou qualquer forma de implantação anterior do oitavo aspecto, o aparelho compreende adicionalmente um transmissor acoplado ao processador e configurado para transmitir o MinQTSize através de um conjunto de parâmetros de sequência (SPS).
[0388] Um nono aspecto se refere a um produto de programa de computador compreendendo as instruções executáveis por computador armazenadas em uma mídia não transitória que quando executadas por um processador faz com que um aparelho determine se um bloco atual de uma imagem é um bloco de fronteira; determinar, quando o bloco atual é um bloco de fronteira, se um tamanho do bloco atual é maior do que um tamanho mínimo (MinQTSize) permitido do nó folha de árvore quaternária (QT); e aplicar, quando o tamanho do bloco atual 0 não é maior do que MinQTSize, o particionamento de árvore binária (BT) forçado ao bloco atual.
[0389] Em uma primeira forma de implantação do aparelho, de acordo com o oitavo aspecto como tal, o particionamento de BT forçado é um particionamento horizontal de BT forçado recursivo quando o bloco atual está localizado em uma fronteira inferior da imagem ou um particionamento vertical de BT forçado recursivo quando o bloco atual está localizado em uma fronteira direita da imagem.
[0390] Em uma segunda forma de implantação do aparelho, de acordo com o nono aspecto como tal ou qualquer forma de implantação anterior do nono aspecto, o particionamento de BT forçado compreende o particionamento recursivo do bloco atual por um particionamento horizontal de fronteira forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior; e o particionamento recursivo da sub-partição por um particionamento de fronteira vertical forçado até que um nó folha esteja inteiramente localizado na fronteira direita.
[0391] Em uma terceira forma de implantação do aparelho, de acordo com o nono aspecto como tal ou qualquer forma de implantação anterior do nono aspecto, o particionamento de BT forçado compreende o particionamento recursivo do bloco atual por um particionamento de fronteira vertical forçado até que uma sub-partição do bloco atual esteja localizada na fronteira inferior; e o particionamento recursivo da sub-partição por um particionamento horizontal de fronteira forçado até que um nó folha esteja inteiramente localizado na fronteira direita.
[0392] Em uma quarta forma de implantação do aparelho, de acordo com o nono aspecto como tal ou qualquer forma de implantação anterior do nono aspecto, as instruções ainda fazem com que o aparelho aplique o MinQTSize para controlar o particionamento de um bloco que não é de fronteira.
[0393] Em uma quinta forma de implantação do aparelho, de acordo com o nono aspecto como tal ou qualquer forma de implantação anterior do nono aspecto, as instruções ainda fazem com que o aparelho receba o MinQTSize através de um conjunto de parâmetros de sequência (SPS).
[0394] Em uma sexta forma de implantação do aparelho, de acordo com o nono aspecto como tal ou qualquer forma de implantação anterior do nono aspecto, as instruções ainda fazem com que o aparelho transmita o MinQTSize através de um conjunto de parâmetros de sequência (SPS).
MODALIDADES REFERENTES À RELAÇÃO ENTRE AS RESTRIÇÕES DE PARTIÇÃO PARA BLOCOS DE FRONTEIRA E QUE NÃO SÃO DE FRONTEIRA
[0395] A Codificação de Vídeo da Próxima Geração (NGVC) remove a separação dos conceitos de CU, PU e TU e oferece mais flexibilidade para os formatos de partição de CU. Um tamanho da CU corresponde a um tamanho do nó de codificação e pode ser na forma quadrada ou não quadrada (por exemplo, retangular).
[0396] Em J. An et al., “Block partitioning structure for next generation video coding”, International Telecommunication Union, COM16- C966, setembro de 2015 (em seguida, “VCEG proposal COM16-C966”), as técnicas de particionamento de árvore binária e árvore quaternária (QTBT) foram propostas para o future padrão de codificação de vídeo além de HEVC. As simulações têm mostrado que a estrutura QTBT proposta é mais eficaz do que a estrutura de árvore quaternária na HEVC usada. Na HEVC, a predição inter para pequenos blocos é restrita para reduzir o acesso à memória da compensação de movimento e a predição inter não é suportada para os blocos 4×4. Na QTBT de JEM, estas restrições são removidas.
[0397] Na QTBT, uma CU pode ter um formato quadrado ou retangular. Como mostrado na FIG. 21, uma unidade de árvore de codificação (CTU) é primeiramente particionada por uma estrutura de árvore quaternária. O nó de nós de árvore quaternária pode ser particionado adicionalmente por uma estrutura de árvore binária. Existem dois tipos de divisão, divisão horizontal simétrica e divisão vertical simétrica, na divisão de árvore binária. Em cada caso, um nó é dividido o nó no meio, horizontal ou verticalmente. Os nós folha de árvore binária são chamados de unidades de codificação (CUs), e esta segmentação é usada para o processamento de predição e transformada sem qualquer particionamento adicional. Isto significa que a CU, PU e TU têm o mesmo tamanho de bloco na estrutura de bloco de codificação de QTBT. Uma CU às vezes consiste de blocos de codificação (CBs) de diferentes componentes de cor, por exemplo, uma CU contém um CB de luma e dois CBs de croma no caso das fatias P e B do formato de croma 4:2:0 e, às vezes, consiste de um CB de um único componente, por exemplo, uma CU contém apenas um CB de luma ou apenas dois CBs de croma no caso de fatias I.
[0398] Os seguintes parâmetros são definidos para o esquema de particionamento de QTBT. - tamanho de CTU: o tamanho do nó raiz de uma árvore quaternária, o mesmo conceito como em HEVC - MinQTSize: o tamanho mínimo permitido do nó folha de árvore quaternária - MaxBTSize: o tamanho máximo permitido do nó raiz de árvore binária - MaxBTDepth: a profundidade máxima permitida da árvore binária - MinBTSize: o tamanho mínimo permitido do nó folha de árvore binária
[0399] Em um exemplo da estrutura de particionamento de QTBT, quando o nó de árvore quaternária tem tamanho igual ou menor do que MinQTSize, nenhuma árvore quaternária adicional é considerada. Não será dividida adicionalmente pela árvore binária, visto que o tamanho (MinQTSize) excede o MaxBTSize. De outro modo, o nó folha de árvore quaternária pode ser particionado adicionalmente pela árvore binária. Portanto, o nó de nó de árvore quaternária também é o modo o nó raiz para a árvore binária e tem a profundidade de árvore binária como 0 (zero). Quando a profundidade de árvore binária atinge o MaxBTDepth (isto é, 4), nenhuma divisão adicional é considerada. Quando o nó de árvore binária tem largura igual o MinBTSize (isto é, 4), nenhuma divisão horizontal adicional é considerada. Similarmente, quando o nó de árvore binária tem altura igual ao MinBTSize, nenhuma divisão vertical adicional é considerada. Os nós folha da árvore binária são processados adicionalmente pelo processamento de predição e transformada sem qualquer particionamento adicional. Na JEM, o tamanho máximo de CTU são amostras de luma 256×256. Os nós folha da árvore binária (CUs) podem ser processados adicionalmente (por exemplo, realizar um processo de predição e um processo de transformada) sem qualquer particionamento adicional.
[0400] A FIG. 21 ilustra um exemplo de um bloco 30 (por exemplo, um CTB) particionado usando técnicas de particionamento de QTBT. Como mostrado na FIG. 21, usando as técnicas de partição de QTBT, cada um dos blocos é dividido simetricamente através do centro de cada bloco. A FIG. 22 ilustra a estrutura de árvore correspondente ao particionamento de bloco da
FIG. 21. As linhas sólidas na FIG. 22 indicam divisão de árvore quaternária e linhas tracejadas indicam divisão de árvore binária. Em um exemplo, em cada nó de divisão (isto é, sem folha) da árvore binária, um elemento de sintaxe (por exemplo, um sinalizador) é sinalizado para indicar o tipo de divisão realizada (por exemplo, horizontal ou vertical), em que 0 indica divisão horizontal e 1 indica divisão vertical. Para a divisão de árvore quaternária, não há necessidade indicar o tipo de divisão, pois a divisão de árvore quaternária sempre divide um bloco horizontal e verticalmente em 4 sub-blocos com um tamanho igual.
[0401] Como mostrado na FIG. 22, no nó 50, o bloco 30 (correspondente à raiz 50) é dividido nos quatro blocos 31, 32, 33 e 34, mostrados na FIG. 21, usando o particionamento de QT. O bloco 34 não é dividido adicionalmente e é, portanto, um nó folha. No nó 52, o bloco 31 é dividido adicionalmente em dois blocos usando o particionamento de BT. Como mostrado na FIG. 22, o nó 52 é marcado com um 1, indicando a divisão vertical. Como tal, a divisão no nó 52 resulta no bloco 37 e o bloco incluindo ambos os blocos 35 e 36. Os blocos 35 e 36 são criados por uma divisão vertical adicional no nó 54. No nó 56, o bloco 32 é dividido adicionalmente em dois blocos 38 e 39 usando o particionamento de BT.
[0402] No nó 58, o bloco 33 é dividido em 4 blocos de tamanhos iguais usando o particionamento de QT. Os blocos 43 e 44 são criados a partir deste particionamento de QT e não são divididos adicionalmente. No nó 60, o bloco superior esquerdo é primeiramente dividido usando a divisão de árvore binária vertical, resultando no bloco 40 e em um bloco vertical direito. O bloco vertical direito é, em seguida, dividido usando a divisão de árvore binária horizontal nos blocos 41 e 42. O bloco inferior direito criado a partir da divisão de árvore quaternária no nó 58, é dividido no nó 62 usando a divisão de árvore binária horizontal nos blocos 45 e 46. Como mostrado na FIG. 22, o nó 62 é marcado com um 0, indicando a divisão horizontal.
[0403] Além de QTBT, uma estrutura de particionamento de bloco denominada árvore de múltiplos tipos (MTT) é proposta para substituir BT em estruturas de CU com base em QTBT, o que significa que uma CTU pode ser dividida pelo particionamento de QT primeiro para obter um bloco da CTU e, em seguida, o bloco pode ser dividido pelo particionamento de MTT em segundo lugar.
[0404] A estrutura de particionamento de MTT ainda é uma estrutura de árvore recursiva. Na MTT, múltiplas estruturas de partição diferentes (por exemplo, duas ou mais) são usadas. Por exemplo, de acordo com as técnicas de MTT, duas ou mais estruturas de partição diferentes podem ser usadas para cada respectivo nó sem folha de uma estrutura de árvore, em cada profundidade da estrutura de árvore. A profundidade de um nó em uma estrutura de árvore se refere ao comprimento da trajetória (por exemplo, o número de divisões) a partir do nó para a raiz da estrutura de árvore.
[0405] Em MTT, existem dois tipos de partição, o particionamento de BT e o particionamento de árvore ternária (TT). O tipo de partição pode ser selecionado a partir do particionamento de BT e do particionamento de TT. A estrutura de partição TT difere daquele das estruturas de QT ou BT, em que a estrutura de partição de TT não divide um bloco no centro. A região central do bloco permanece junto do mesmo sub-bloco. Diferente da QT, que produz quatro blocos ou árvore binária, que produz dois blocos, a divisão de acordo com uma estrutura de partição de TT produz três blocos. Os tipos de partição do exemplo, de acordo com a estrutura de partição de TT incluem tipos de partição simétricos (tanto horizontal quanto vertical), bem como os tipos de partição assimétricos (tanto horizontal quanto vertical). Além disso, os tipos de partição simétricos, de acordo com a estrutura de partição de TT podem ser irregulares/não uniformes ou regulares/uniformes. Os tipos de partição assimétricos, de acordo com a estrutura de partição de TT são irregular/não uniforme. Em um exemplo, uma estrutura de partição de TT pode incluir pelo menos um dos seguintes tipos de partição: tipos de partição de árvore ternária simétrica horizontal regular/uniforme, árvore ternária simétrica vertical regular/uniforme, árvore ternária simétrica horizontal irregular/não uniforme, árvore ternária simétrica vertical irregular/não uniforme, árvore ternária assimétrica horizontal irregular/não uniforme ou árvore ternária assimétrica vertical irregular/não uniforme.
[0406] Em geral, um tipo de partição de árvore ternária simétrica irregular/não uniforme é um tipo de partição que é simétrico em relação a uma linha central do bloco, mas em que pelo menos um dos três blocos resultantes não tem o mesmo tamanho que os outros dois. Um exemplo preferido é quando os blocos laterais têm 1⁄4 do tamanho do bloco, e o bloco central têm 1⁄2 do tamanho do bloco. Um tipo de partição de árvore ternária simétrica regular/uniforme é um tipo de partição que é simétrico em relação a uma linha central do bloco, e os blocos resultantes são todos do mesmo tamanho. Tal partição é possível se o a altura ou largura do bloco, dependendo de uma divisão vertical ou horizontal, para um múltiplo de 3. Um tipo de partição de árvore ternária assimétrica irregular/não uniforme é um tipo de partição que não é simétrico em relação a uma linha central do bloco e em que pelo menos um dos blocos resultantes não é do mesmo tamanho que os outros dois.
[0407] A FIG. 23 é um diagrama conceitual que ilustra os tipos de partição de árvore ternária horizontal do exemplo opcional. A FIG. 24 é um diagrama conceitual que ilustra os tipos de partição de árvore ternária vertical do exemplo opcional. Tanto na FIG. 23 quanto na FIG. 24, h representa a altura do bloco em luma ou amostras de croma e w representa a largura do bloco em luma ou amostras de croma. Observe que a respectiva linha central de um bloco não representa a fronteira do bloco (isto é, as partições de árvore ternária não dividem um bloco através da linha central). Em vez disso, a linha central \ é usada para representar se um tipo de partição particular é ou não é simétrico ou assimétrico em relação à linha central do bloco original. A linha central também está ao longo da direção da divisão.
[0408] Como mostrado na FIG. 23, o bloco 71 é particionado com um tipo de partição horizontal simétrico regular/uniforme. O tipo de partição simétrica horizontal regular/uniforme produz as metades superior e inferior simétricas em relação à linha central do bloco 71. O tipo de partição simétrica horizontal regular/uniforme produz três sub-blocos de tamanho igual, cada um com uma altura de h/3 e uma largura de w. O tipo de partição simétrica horizontal regular/uniforme é possível quando a altura do bloco 71 é divisível uniformemente por 3.
[0409] O bloco 73 é particionado com um tipo de partição simétrica horizontal irregular/não uniforme. O tipo de partição simétrica horizontal irregular/não uniforme produz as metades superior e inferior simétricas em relação à linha central do bloco 73. O tipo de partição simétrica horizontal irregular/não uniforme produz dois blocos de tamanho igual (por exemplo, os blocos superiores e inferiores com uma altura de h/4), e um bloco central de um tamanho diferente (por exemplo, um bloco central com uma altura de h/2). Em um exemplo, de acordo com o tipo de partição simétrica horizontal irregular/não uniforme, a área do bloco central é igual às áreas combinadas dos blocos superiores e inferiores. Em alguns exemplos, o tipo de partição simétrica horizontal irregular/não uniforme pode ser preferido para os blocos tendo uma altura que é uma potência de 2 (por exemplo, 2, 4, 8, 16, 32, etc.).
[0410] O bloco 75 é particionado com um tipo de partição assimétrico horizontal irregular/não uniforme. O tipo de partição assimétrico horizontal irregular/não uniforme não produz uma metade superior e inferior simétrica em relação à linha central do bloco 75 (isto é, as metades superiores e inferiores são assimétricas). No exemplo da FIG. 23, o tipo de partição assimétrico horizontal irregular/não uniforme produz um bloco superior com altura de h/4, um bloco central com altura de 3h/8 e um bloco inferior com uma altura de 3h/8. Certamente, outros arranjos assimétricos podem ser usados.
[0411] Como mostrado na FIG. 24, o bloco 81 é particionado com um tipo de partição simétrica vertical regular/uniforme. O tipo de partição simétrica vertical regular/uniforme produz as metades esquerda e direita simétricas em relação à linha central do bloco 81. O tipo de partição simétrica vertical regular/uniforme produz três sub-blocos de tamanho igual, cada um com uma largura de w/3 e uma altura de h. O tipo de partição simétrica vertical regular/uniforme é possível quando a largura de bloco 81 é uniformemente divisível por 3.
[0412] O bloco 83 é particionado com um tipo de partição simétrica vertical irregular/não uniforme. O tipo de partição simétrica vertical irregular/não uniforme produz as metades esquerda e direita simétricas em relação à linha central do bloco 83. O tipo de partição simétrica vertical irregular/não uniforme produz as metades esquerda e direita simétricas em relação à linha central de
83. O tipo de partição simétrica vertical irregular/não uniforme produz dois blocos de tamanho igual (por exemplo, os blocos esquerdo e direito com uma largura de w/4), e um bloco central de um diferente tamanho (por exemplo, um bloco central com uma largura de w/2). Em um exemplo, de acordo com o tipo de partição simétrica vertical irregular/não uniforme, a área do bloco central é igual às áreas combinadas dos blocos esquerdo e direito. Em alguns exemplos, o tipo de partição simétrica vertical irregular/não uniforme pode ser preferido para os blocos tendo uma largura que é uma potência de 2 (por exemplo, 2, 4, 8, 16, 32, etc.).
[0413] O bloco 85 é particionado com um tipo de partição vertical assimétrica irregular/não uniforme. O tipo de partição vertical assimétrica irregular/não uniforme não produz uma metade esquerda e direita simétrica em relação à linha central do bloco 85 (isto é, as metades superiores e inferiores são assimétricas). No exemplo da FIG. 24, o tipo de partição vertical assimétrica irregular/não uniforme produz um bloco esquerdo com largura de w/4, um bloco central com largura de 3w/8 e um bloco direito com uma largura de 3w/8. Certamente, outros arranjos assimétricos podem ser usados.
[0414] Além (ou alternativamente) dos parâmetros para a QTBT definida acima, os seguintes parâmetros são definidos para o esquema de particionamento de MTT. - MaxBTSize: o tamanho máximo permitido do nó raiz de árvore binária - MinBtSize: o tamanho mínimo permitido do nó raiz de árvore binária - MaxMttDepth: a profundidade de árvore de múltiplos tipos máxima - Deslocamento de MaxMttDepth: o deslocamento de profundidade de árvore de múltiplos tipos máxima - MaxTtSize: o tamanho máximo permitido do nó raiz de árvore ternária - MinTtSize: o tamanho do nó raiz mínimo permitido de árvore ternária - MinCbSize: o tamanho mínimo permitido do bloco de codificação
[0415] As modalidades da revelação, podem ser implantadas por um codificador de vídeo ou um codificador de vídeo, tal como o codificador de vídeo 20 da FIG. 12 ou o decodificador de vídeo 30 da FIG. 13, de acordo com uma modalidade do presente pedido. Um ou mais elementos estruturais do codificador de vídeo 20 ou decodificador de vídeo 30, incluindo a unidade de partição, podem ser configurados para realizar as técnicas das modalidades da revelação.
[0416] Nas modalidades da revelação:
[0417] Em JVET-K1001-v4, log2_ctu_size_minus2,
log2_min_qt_size_intra_slices_minus2 e log2_min_qt_size_inter_slices_minus2 são sinalizados em SPS (como os elementos de sintaxe).
[0418] O parâmetro log2_ctu_size_minus2 mais 2 especifica o tamanho do bloco de luma de árvore de codificação de cada CTU. Em particular: CtbLog2SizeY = log2_ctu_size_minus2 + 2(7 - 5) CtbSizeY = 1 << CtbLog2SizeY(7 - 6)
[0419] Em outras palavras, CtbLog2SizeY especifica o valor de log2 do tamanho de CTU CtbSizeY, correspondente ao tamanho do bloco de árvore de codificação (CTB) para luma (Y).
[0420] As configurações adicionais são fornecidas como a seguir: MinCbLog2SizeY = 2(7 - 7) MinCbSizeY = 1 << MinCbLog2SizeY(7 - 8) MinTbSizeY = 4(7 - 9) MaxTbSizeY = 64(7 - 10)
[0421] O parâmetro log2_min_qt_size_intra_slices_minus2 mais 2 especifica o tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária de uma CTU em fatias com slice_type igual a 2 (I), isto é, intrafatias. O valor de log2_min_qt_size_intra_slices_minus2 deve estar na faixa de 0 a CtbLog2SizeY − 2, inclusive. MinQtLog2SizeIntraY = log2_min_qt_size_intra_slices_minus2 + 2(7 - 22)
[0422] O parâmetro log2_min_qt_size_inter_slices_minus2 mais 2 especifica o tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária de uma CTU em fatias com slice_type igual a 0 (B) ou 1 (P), isto é, inter-fatias. O valor de log2_min_qt_size_inter_slices_minus2 deve estar na faixa de 0 a CtbLog2SizeY − 2, inclusive. MinQtLog2SizeInterY = log2_min_qt_size_inter_slices_minus2 + 2(7 - 23)
[0423] O MinQtSizeY é definido em (7 - 30), o que significa o tamanho mínimo permitido da divisão de árvore quaternária na amostra de luma. Se o bloco de codificação tamanho for menor do que ou igual a MinQtSizeY, a divisão de árvore quaternária não é permitida. As configurações adicionais são fornecidas como a seguir: MinQtLog2SizeY = (slice_type = = I) ? MinQtLog2SizeIntraY : MinQtLog2SizeInterY(7 - 25) MaxBtLog2SizeY = CtbLog2SizeY − log2_diff_ctu_max_bt_size(7 - 26) MinBtLog2SizeY = MinCbLog2SizeY(7 - 27) MaxTtLog2SizeY = (slice_type = = I) ? 5 : 6(7 - 28) MinTtLog2SizeY = MinCbLog2SizeY(7 - 29) MinQtSizeY = 1 << MinQtLog2SizeY(7 - 30) MaxBtSizeY = 1 << MaxBtLog2SizeY(7 - 31) MinBtSizeY = 1 << MinBtLog2SizeY(7 - 32) MaxTtSizeY = 1 << MaxTtLog2SizeY(7 - 33) MinTtSizeY = 1 << MinTtLog2SizeY(7 - 34) MaxMttDepth = (slice_type = = I) ? max_mtt_hierarchy_depth_intra_slices : max_mtt_hierarchy_depth_inter_slices(7 - 35)
[0424] Os parâmetros max_mtt_hierarchy_depth_intra_slices e max_mtt_hierarchy_depth_inter_slices denotam a profundidade de hierarquia máxima para a divisão de tipo de MTT para intra e inter-fatias, respectivamente.
[0425] Com base na semântica de log2_min_qt_size_intra_slices_minus2 e log2_min_qt_size_inter_slices_minus2, as faixas de log2_min_qt_size_intra_slices_minus2 e log2_min_qt_size_inter_slices_minus2 são a partir de 0 a CtbLog2SizeY - 2.
[0426] Neste relatório, o CtbLog2SizeY é definido na semântica de log2_ctu_size_minus2, o que significa que o valor de log2 do tamanho do bloco de luma de árvore de codificação de cada CTU, o CtbLog2SizeY em VTM2.0 é igual a 7.
[0427] Com base em (7 - 22) e (7 - 23), a faixa de MinQtLog2SizeIntraY e MinQtLog2SizeInterY é a partir de 2 a CtbLog2SizeY.
[0428] Com base em (7- 25), a faixa de MinQtLog2SizeY é a partir de 2 a CtbLog2SizeY.
[0429] Com base em (7 - 30), a faixa de MinQtSizeY, em JVET-
K1001-v4, é a partir de (1<<2) a (1<<CtbLog2SizeY), em VTM2.0 a faixa é a partir de (1<<2) a (1<<7), que é igual a de 4 a 128.
[0430] Em JVET-K1001-v4, log2_diff_ctu_max_bt_size é sinalizado condicionalmente no cabeçalho de fatia.
[0431] O parâmetro log2_diff_ctu_max_bt_size especifica a diferença entre o tamanho de CTB de luma e o tamanho de luma máximo (largura ou altura) de um bloco de codificação que pode ser dividido usando uma divisão binária. O valor de log2_diff_ctu_max_bt_size deve estar na faixa de 0 a CtbLog2SizeY − MinCbLog2SizeY, inclusive.
[0432] Quando log2_diff_ctu_max_bt_size não está presente, o valor de log2_diff_ctu_max_bt_size é considerado igual a 2.
[0433] O MinCbLog2SizeY é definido em (7 - 7), o que significa o mínimo tamanho permitido do bloco de codificação.
[0434] Com base na semântica de log2_diff_ctu_max_bt_size, a faixa de log2_diff_ctu_max_bt_size é a partir de 0 a CtbLog2SizeY - MinCbLog2SizeY.
[0435] Com base em (7 - 26), a faixa de MaxBtLog2SizeY é a partir de CtbLog2SizeY a MinCbLog2SizeY
[0436] Com base em (7 - 31), a faixa de MaxBtSizeY é a partir de (1<< CtbLog2SizeY) a (1<< MinCbLog2SizeY).
[0437] Com base em (7 - 7), a faixa de MaxBtSizeY, em JVET- K1001-v4, é a partir de (1<< CtbLog2SizeY) a (1<< 2), visto que em VTM2.0 CtbLog2SizeY é igual a 7, a faixa de MaxBtSizeY em VTM2.0 é igual a de 128 a 4.
[0438] Portanto, MinQtSizeY tem a faixa a partir de 4 a (1<<CtbLog2SizeY), em VTM2.0 de 4 a 128, MaxBtSizeY tem a faixa a partir de (1<<CtbLog2SizeY) a 4, em VTM2.0 de 128 a 4.
[0439] Consequentemente, há a possibilidade de que MinQtSizeY seja maior do que MaxBtSizeY.
[0440] Além disso, com base no tratamento da fronteira atual em VVC 2.0, apenas o particionamento de QT e BT é permitido para blocos localizados na fronteira (não permitido TT, não permitido sem divisão).
[0441] Se o bloco atual de codificação estiver localizado na fronteira e o tamanho do bloco atual de codificação cbSizeY atender à condição:
MinQtSizeY > cbSizeY > MaxBtSizeY, não há divisão possível de QT nem BT para o bloco atual de codificação. Portanto, não há modo de partição disponível para o bloco atual. MODALIDADE 1
[0442] A solução (modalidades da invenção) dos problemas mencionados acima, incluindo o problema de caso de fronteira é descrita abaixo em mais detalhes.
[0443] De acordo com uma modalidade, para resolver o problema mencionado, a fronteira inferior de MaxBtSizeY deve ser limitado ao MinQtSizeY, para garantir que MaxBtSizeY não é menor do que MinQtSizeY. Em particular, a fronteira inferior de MaxBtSizeY pode ser igual ao do MinQtSizeY, de modo que a faixa de MaxBtSizeY deve ser a partir de (1<< CtbLog2SizeY) a (1<< MinQtLog2SizeY), de modo que a faixa de MaxBtLog2SizeY deve ser a partir de CtbLog2SizeY a MinQtLog2SizeY, de modo que a faixa de log2_diff_ctu_max_bt_size deve ser a partir de 0 a CtbLog2SizeY - MinQtLog2SizeY.
[0444] A mudança correspondente no texto do rascunho (do padrão de vídeo) está na semântica de log2_diff_ctu_max_bt_size como a seguir: log2_diff_ctu_max_bt_size especifica a diferença entre o tamanho de CTB de luma e o tamanho de luma máximo (largura ou altura) de um bloco de codificação que pode ser dividido usando uma divisão binária. O valor de log2_diff_ctu_max_bt_size deve estar na faixa de 0 a CtbLog2SizeY − MinQtLog2SizeY, inclusive. Portanto, as informações de MinQtSizeY podem ser usadas para determinar a validade de MaxBtSizeY. Em outras palavras, MaxBtSizeY pode ser determinado com base em informações de MinQtSizeY.
[0445] O método correspondente da codificação implantada por um dispositivo de codificação (decodificador ou codificador) pode ser como a seguir: determinar se o bloco atual de uma imagem é um bloco de fronteira; determinar se o tamanho do bloco atual é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária; se o bloco atual for um bloco de fronteira e o tamanho do bloco atual não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, aplicar a divisão binária ao bloco atual; em que o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária.
[0446] Em que a aplicação da divisão binária ao bloco atual pode compreender aplicar a divisão binária forçada ao bloco atual.
[0447] Em que o bloco atual pode ser obtido pela divisão de uma imagem ou uma unidade de árvore de codificação (CTU).
[0448] Em que o método pode compreender dois casos: 1) treeType é igual a SINGLE_TREE ou DUAL_TREE_LUMA; 2) treeType é igual a DUAL_TREE_CHROMA. Para o caso 1), o bloco atual é um bloco de luma e para o caso 2), o bloco atual é um bloco de croma.
[0449] Em que o tamanho máximo permitido do nó raiz de árvore binária pode ser o tamanho de luma máximo em amostras de luma de um bloco de raiz de codificação de luma que pode ser dividido usando uma divisão de árvore binária.
[0450] Em que o tamanho máximo permitido do nó raiz de árvore ternária pode ser um tamanho de luma máximo em amostras de luma de um bloco de raiz de codificação de luma que pode ser dividido usando uma divisão de árvore ternária.
[0451] Em que o tamanho mínimo permitido do nó folha de árvore quaternária pode ser um tamanho de luma mínimo em amostras de luma de um bloco de folha de luma resultante de divisão de árvore quaternária.
[0452] Neste relatório, a codificação corresponde à codificação de imagem, vídeo ou imagem em movimento.
[0453] Ser um bloco de fronteira significa que a fronteira da imagem/quadro corta o bloco ou, em outras palavras, que o bloco está na fronteira da imagem/quadro. Na modalidade acima a divisão binária é aplicada ao bloco atual se o bloco atual for um bloco de fronteira (condição 1) e seu tamanho não é maior do que o tamanho mínimo permitido do nó folha de árvore quaternária (condição 2). É observado que em algumas modalidades, divisão ternária ou outra pode ser usada no lugar da divisão binária. Além disso, em algumas modalidades, a divisão binária pode ser aplicada sob a condição 2 independentemente da condição 1. Em outras palavras, a condição 1 não precisa ser avaliada. Se o tamanho do bloco atual for de fato maior do que o tamanho mínimo permitido do nó folha de árvore quaternária (isto é, a condição 2 não atendida), a divisão de árvore quaternária pode ser aplicada.
[0454] É observado que existem modalidades em que a divisão binária é usada apenas para os blocos de fronteira (condição 1). Para os blocos que não são de fronteira, a divisão de árvore quaternária pode ser a única divisão usada. Aplicar a divisão binária (ou ternária) na fronteira da imagem/quadro fornece uma vantagem da divisão possivelmente mais eficaz, por exemplo, as partições binárias/ternárias horizontais na fronteira horizontal e vertical e partições binária/ternária na fronteira vertical.
[0455] Outro método correspondente da codificação implantada por um dispositivo de codificação (decodificador ou codificador) pode ser como a seguir: Determinar se o tamanho de um bloco de fronteira é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária. Se o tamanho de o bloco de fronteira não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária (por exemplo, pela especificação padrão) e a divisão binária é aplicada ao bloco de fronteira.
[0456] Opcionalmente, o bloco de fronteira não pode compreender o bloco de canto. Em outras palavras, o bloco de canto que é cortado tanto pela fronteira da imagem/quadro vertical quanto horizontal, não é considerado como bloco de fronteira para o propósito da condição 1 mencionada acima. MODALIDADE 2
[0457] Outras modalidades da revelação (combináveis com as modalidades mencionadas acima) são descritas abaixo.
[0458] Em JVET-K1001-v4, max_mtt_hierarchy_depth_inter_slices e max_mtt_hierarchy_depth_intra_slices são sinalizados em SPS. Em outras palavras, max_mtt_hierarchy_depth_inter_slices e max_mtt_hierarchy_depth_intra_slices sãos elementos de sintaxe, significam que seu valor está incluído no fluxo de bits incluindo também a imagem ou vídeo codificado.
[0459] Em particular, max_mtt_hierarchy_depth_inter_slices especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 0 (B) ou 1 (P). O valor de max_mtt_hierarchy_depth_inter_slices deve estar na faixa de 0 a CtbLog2SizeY − MinTbLog2SizeY, inclusive.
[0460] max_mtt_hierarchy_depth_intra_slices especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 2 (I). O valor de max_mtt_hierarchy_depth_intra_slices deve estar na faixa de 0 a CtbLog2SizeY − MinTbLog2SizeY, inclusive.
[0461] MinTbSizeY é definido em (7 - 9), que é fixado como 4, portanto, MinTbLog2SizeY = log2 MinTbSizeY que é fixado como 2.
[0462] O MaxMttDepth é definido que significa a profundidade máxima permitida da árvore partição de múltiplos tipos. Se a profundidade de árvore partição de múltiplos tipos atual for maior do que ou igual a MaxMttDepth, a partição de árvore de múltiplos tipos não é permitida (aplicada).
[0463] Com base na semântica de max_mtt_hierarchy_depth_inter_slices e max_mtt_hierarchy_depth_intra_slices, a faixa de max_mtt_hierarchy_depth_inter_slices e max_mtt_hierarchy_depth_intra_slices é a partir de 0 a CtbLog2SizeY - MinTbLog2SizeY.
[0464] Com base em (7 - 35), a faixa de MaxMttDepth é a partir de 0 a CtbLog2SizeY - MinTbLog2SizeY. Visto que em VTM2.0 CtbLog2SizeY é igual a 7, a faixa de MaxMttDepth é a partir de 0 a 5.
[0465] Portanto, MaxMttDepth tem a faixa de 0 a CtbLog2SizeY - MinTbLog2SizeY, em VTM2.0 de 0 a 5.
[0466] Com base no tratamento de fronteira atual em VVC 2.0, apenas o particionamento de QT e BT é permitido para um bloco localizado na fronteira (não permitido TT, não permitido sem divisão).
[0467] Se o primeiro problema mencionado acima for resolvido (MaxBtSizeY >= MinQtSizeY), a seguinte condição é preenchida: cbSizeY <= MinQtSizeY MaxMttDepth =0
[0468] Não há níveis suficientes de partições de BT (em geral, qualquer MTT, incluindo TT) para o tratamento de fronteira.
[0469] Por exemplo, MinQtSizeY é igual a 16, MinTbSizeY é igual a 4, MaxMttDepth é 0.
[0470] Se um bloco de fronteira com cbSizeY = 16, e a partição precursora for QT e este bloco ainda estiver localizado na fronteira, nenhuma partição adicional pode ser realizada, pelo fato de que o Mttdepth do bloco atual é alcançado MaxMttDepth.
[0471] A solução (uma modalidade da invenção) deste problema do caso de fronteira: para resolver o problema mencionado, a fronteira inferior do MaxMttDepth deve ser limitado a 1 (em outras palavras, não pode ter o valor de zero), para garantir, depois da partição de QT, que há níveis suficientes de partição de árvore de múltiplos tipos para o caso de fronteira. Ou, além disso, a fronteira inferior de MaxMttDepth deve ser limitado a (MinQtLog2SizeY- MinTbLog2SizeY), para garantir que, depois do particionamento de QT, há níveis suficientes de partições de árvore de múltiplos tipos tanto para o caso de fronteira quanto que não é de fronteira.
[0472] A mudança correspondente no texto de rascunho (padrão) está na semântica de max_mtt_hierarchy_depth_inter_slices e max_mtt_hierarchy_depth_intra_slices como a seguir:
[0473] max_mtt_hierarchy_depth_inter_slices especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 0 (B) ou 1 (P). O valor de max_mtt_hierarchy_depth_inter_slices deve estar na faixa de 1 a CtbLog2SizeY − MinTbLog2SizeY, inclusive.
[0474] max_mtt_hierarchy_depth_intra_slices especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 2 (I). O valor de max_mtt_hierarchy_depth_intra_slices deve estar na faixa de 1 a CtbLog2SizeY − MinTbLog2SizeY, inclusive. ou,
[0475] max_mtt_hierarchy_depth_inter_slices especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 0 (B) ou 1 (P). O valor de max_mtt_hierarchy_depth_inter_slices deve estar na faixa de MinQtLog2SizeY - MinTbLog2SizeY a CtbLog2SizeY − MinTbLog2SizeY, inclusive.
[0476] max_mtt_hierarchy_depth_intra_slices especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 2 (I). O valor de max_mtt_hierarchy_depth_intra_slices deve estar na faixa de MinQtLog2SizeY - MinTbLog2SizeY a CtbLog2SizeY − MinTbLog2SizeY, inclusive.
[0477] O método correspondente da codificação implantada por um dispositivo de codificação (decodificador ou codificador) pode ser como a seguir: dividir uma imagem em blocos, em que os blocos compreendendo um bloco de fronteira; aplicar a divisão binária ao bloco de fronteira com uma profundidade máxima de partição de múltiplos tipos de fronteira, em que a profundidade máxima de partição de múltiplos tipos de fronteira é uma soma de pelo menos uma profundidade de árvore de múltiplos tipos máxima e um deslocamento de profundidade de árvore de múltiplos tipos máxima, em que a profundidade de árvore de múltiplos tipos máxima é maior do que 0. Esta modalidade pode ser combinada com a MODALIDADE 1 ou pode ser aplicada sem a MODALIDADE 1.
[0478] Opcionalmente, a profundidade de árvore de múltiplos tipos máxima é maior do que 0 ao aplicar a divisão binária ao bloco de fronteira.
[0479] Opcionalmente, o bloco de fronteira não pode compreender o bloco de canto. MODALIDADE 3
[0480] Em outras modalidades da revelação:
[0481] Em JVET-K1001-v4, Se MinQtSizeY>MaxBtSizeY e MinQtSizeY> MaxTtSizeY.
[0482] Se cbSize = MinQtsizeY, a partição não pode atingir o MinCbSizeY (MinTbSizeY e MinCbsizeY são fixos e iguais a 4), pelo fato de que não há o modo de partição disponível possível.
[0483] A solução deste problema no caso que não é de fronteira ou caso de fronteira: para resolver o problema mencionado, a fronteira inferior de
MaxBtSizeY deve ser limitado a MinQtSizeY, para garantir que MaxBtSizeY não é menor do que MinQtSizeY. Ou, a fronteira inferior de MaxTtSizeY deve ser limitado ao MinQtSizeY, para garantir que MaxTtSizeY não é menor do que MinQtSizeY.
[0484] A mudança correspondente em no texto de rascunho está na semântica de
[0485] log2_diff_ctu_max_bt_size especifica a diferença entre o tamanho de CTB de luma e o tamanho de luma máximo (largura ou altura) de um bloco de codificação que pode ser dividido usando uma divisão binária. O valor de log2_diff_ctu_max_bt_size deve estar na faixa de 0 a CtbLog2SizeY − MinQtLog2SizeY, inclusive. E/ou,
[0486] log2_min_qt_size_intra_slices_minus2 mais 2 especifica o tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária de uma CTU em fatias com slice_type igual a 2 (I). O valor de log2_min_qt_size_intra_slices_minus2 deve estar na faixa de 0 a MaxTtLog2SizeY − 2, inclusive.
[0487] log2_min_qt_size_inter_slices_minus2 mais 2 especifica o tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária de uma CTU em fatias com slice_type igual a 0 (B) ou 1 (P). O valor de log2_min_qt_size_inter_slices_minus2 deve estar na faixa de 0 a MaxTtLog2SizeY − 2, inclusive.
[0488] O método correspondente da codificação implantada por um dispositivo de codificação (decodificador ou codificador) pode ser como a seguir:
[0489] Determinar se o tamanho de um bloco atual é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária;
[0490] Se o tamanho do bloco atual não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, aplicar a divisão de árvore de múltiplos tipos ao bloco atual;
[0491] Em que o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária ou o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore ternária.
[0492] Opcionalmente, o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária e o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore ternária.
[0493] Opcionalmente, aplicar a divisão de árvore de múltiplos tipos ao bloco atual compreendendo aplicar a divisão ternária ao bloco atual ou aplicar a divisão binária ao bloco atual.
[0494] Opcionalmente, o bloco de fronteira não pode compreender o bloco de canto. MODALIDADE 4
[0495] Em outras modalidades da revelação:
[0496] Se MaxBtSizeY >= MinQtSizeY, MinQtSizeY> MinTbLog2SizeY e MaxMttDepth < (MinQtLog2SizeY- MinTbLog2SizeY),
[0497] Se cbSize = MinQtsizeY, a partição não pode atingir o MinCbSizeY, pelo fato de que não há níveis suficientes da partição de árvore de múltiplos tipos que são permitidos.
[0498] A solução deste problema no caso que não é de fronteira ou caso de fronteira: Para resolver o problema mencionado, a fronteira inferior de MaxMttDepth deve ser limitado a (MinQtLog2SizeY- MinTbLog2SizeY), para garantir que depois da partição de QT, há níveis suficientes de partição de árvore de múltiplos tipos tanto para o caso de fronteira quanto que não é de fronteira.
[0499] A mudança correspondente no texto de rascunho está na semântica de max_mtt_hierarchy_depth_inter_slices e max_mtt_hierarchy_depth_intra_slices como a seguir:
[0500] max_mtt_hierarchy_depth_inter_slices especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 0 (B) ou 1 (P). O valor de max_mtt_hierarchy_depth_inter_slices deve estar na faixa de MinQtLog2SizeY - MinTbLog2SizeY a CtbLog2SizeY − MinTbLog2SizeY, inclusive.
[0501] max_mtt_hierarchy_depth_intra_slices especifica a profundidade de hierarquia máxima para as unidades de codificação resultantes da divisão de árvore de múltiplos tipos de um nó de árvore quaternária em fatias com slice_type igual a 2 (I). O valor de max_mtt_hierarchy_depth_intra_slices deve estar na faixa de MinQtLog2SizeY - MinTbLog2SizeY a CtbLog2SizeY − MinTbLog2SizeY, inclusive.
[0502] O método correspondente da codificação implantada por um dispositivo de codificação (decodificador ou codificador) pode ser como a seguir: dividir uma imagem em blocos; aplicar a divisão de árvore de múltiplos tipos a um bloco dos blocos com uma profundidade máxima final de árvore de múltiplos tipos, em que a profundidade final máxima de árvore de múltiplos tipos é uma soma de pelo menos uma profundidade máxima de árvore de múltiplos tipos e um deslocamento de profundidade máxima de árvore de múltiplos tipos, em que a profundidade máxima de árvore de múltiplos tipos é maior do que ou igual à subtração do valor de log2 de tamanho de transformada mínimo permitido do bloco do valor de log2 de tamanho mínimo permitido do nó folha de árvore quaternária, ou a profundidade máxima de árvore de múltiplos tipos é maior do que ou igual à subtração do valor de log2 de tamanho mínimo permitido do bloco de codificação do valor de log2 de tamanho mínimo permitido do nó folha de árvore quaternária.
[0503] Opcionalmente, o bloco é um bloco que não é de fronteira.
[0504] Opcionalmente, o deslocamento de profundidade máxima de árvore de múltiplos tipos é 0.
[0505] Opcionalmente, o bloco é um bloco de fronteira e a divisão de árvore de múltiplos tipos é a divisão binária.
[0506] Opcionalmente, a divisão de árvore de múltiplos tipos é (ou inclui) a divisão ternária.
[0507] Opcionalmente, bloco de fronteira não pode compreender o bloco de canto.
[0508] As modalidades de 1 a 4 podem ser aplicadas no lado do codificador para o particionamento da imagem/quadro em unidades de codificação e para a codificação das unidades de codificação. As modalidades de 1 a 4 podem ser aplicadas no lado do decodificador para fornecer partições da imagem/quadro, isto é, unidades de codificação e para a decodificação das unidades de codificação consequentemente (por exemplo, analisar as unidades de codificação atualmente do fluxo e decodificá-las).
[0509] De acordo com algumas modalidades, um decodificador é fornecido, compreendendo um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenamento de programação para a execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar qualquer um dos métodos descritos acima com referência às modalidades de 1 a 4.
[0510] Além disso, um codificador é fornecido, compreendendo um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadoras e armazenamento de programação para a execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar qualquer um dos métodos descritos acima com referência às modalidades de 1 a 4.
[0511] Em resumo, um método é fornecido para a codificação implantada por um dispositivo de decodificação, o método compreendendo: determinar se o tamanho de um bloco atual é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária; se o tamanho do bloco atual não é maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, aplicar a divisão de árvore de múltiplos tipos ao bloco atual; em que o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária ou o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore ternária.
[0512] Este método facilita a divisão e sinalização eficazes dos parâmetros de divisão para os blocos de imagem/vídeo.
[0513] Além disso, em algumas implantações, o método também compreende as etapas para determinar se o bloco atual de uma imagem é um bloco de fronteira. Se o bloco atual for um bloco de fronteira e o tamanho do bloco atual não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, o método também inclui aplicar a divisão binária ao bloco atual. É observado que neste caso, o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária. Por exemplo, se o tamanho do bloco atual não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, a aplicação mencionada acima da divisão de árvore de múltiplos tipos ao bloco atual compreende aplicar a divisão binária ao bloco atual, se o bloco atual for um bloco de fronteira e o tamanho do bloco atual não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária.
[0514] A provisão da divisão binária pode ser particularmente vantajosa para os blocos na fronteira de quadro de imagem/vídeo, por exemplo, para os blocos que são cortados pela fronteira. Assim, em algumas implantações, pode ser benéfico aplicar o método para os blocos de fronteira e não aplicar para os blocos remanescentes. Entretanto, a presente revelação não é limitada às mesmas, como mencionado acima, o método de aplicação da divisão binária para a profundidade de divisão também pode ser aplicado aos blocos que não são de fronteira e sinalizados eficazmente.
[0515] Além disso ou alternativamente às modalidades mencionadas acima, o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária e o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore ternária.
[0516] A aplicação da divisão de árvore de múltiplos tipos ao bloco atual pode compreender aplicar a divisão ternária ao bloco atual ou aplicar a divisão binária ao bloco atual. Entretanto, a presente revelação não é limitada desse modo e, em geral, a divisão de árvore de múltiplos tipos também pode incluir outros ou adicionais diferentes tipos de divisão.
[0517] O método pode incluir adicionalmente determinar o tamanho máximo permitido do nó raiz de árvore binária com base no tamanho mínimo permitido do nó folha de árvore quaternária. Isto facilita sinalização/armazenamento eficaz dos parâmetros. Por exemplo, o tamanho máximo permitido do nó raiz de árvore binária pode ser considerado igual ao tamanho mínimo permitido do nó folha de árvore quaternária. Entretanto, a presente revelação não é limitada desse modo e outra relação pode assumida para derivar o tamanho máximo permitido do nó raiz de árvore binária.
[0518] De acordo com uma modalidade exemplar, além disso ou alternativamente às modalidades descritas acima, o método pode compreender as etapas de divisão de uma imagem em blocos, em que os blocos compreendem o bloco atual. A aplicação da divisão binária ao bloco atual compreende aplicar a divisão binária ao bloco de fronteira com uma profundidade máxima de partição de múltiplos tipos de fronteira, em que a profundidade máxima de partição de múltiplos tipos de fronteira é uma soma de pelo menos uma profundidade máxima de árvore de múltiplos tipos e um deslocamento de profundidade máxima de árvore de múltiplos tipos, em que a profundidade máxima de árvore de múltiplos tipos é maior do que 0. Além disso, em algumas implantações, a profundidade máxima de árvore de múltiplos tipos é maior do que 0 ao aplicar a divisão binária ao bloco de fronteira.
[0519] De acordo com uma modalidade, o método inclui dividir uma imagem em blocos (os blocos compreendendo o bloco atual). A aplicação da divisão de árvore de múltiplos tipos ao bloco atual compreende aplicar a divisão de árvore de múltiplos tipos ao bloco atual dos blocos com uma profundidade final máxima de árvore de múltiplos tipos, em que a profundidade final máxima de árvore de múltiplos tipos é uma soma de pelo menos uma profundidade máxima de árvore de múltiplos tipos e um deslocamento de profundidade máxima de árvore de múltiplos tipos, em que a profundidade máxima de árvore de múltiplos tipos é maior do que ou igual à subtração do valor de log2 de tamanho de transformada mínimo permitido do bloco do valor de log2 de tamanho mínimo permitido do nó folha de árvore quaternária, ou a profundidade máxima de árvore de múltiplos tipos é maior do que ou igual à subtração do valor de log2 de mínimo tamanho permitido do bloco de codificação do valor de log2 de tamanho mínimo permitido do nó folha de árvore quaternária. Isto facilita a divisão adicional para as maiores profundidades de particionamentos.
[0520] O bloco atual pode ser um bloco que não é de fronteira. O deslocamento de profundidade máxima de árvore de múltiplos tipos pode ser 0. O bloco atual pode ser, alternativamente ou além disso, um bloco de fronteira e a divisão de árvore de múltiplos tipos é a divisão binária. A divisão de árvore de múltiplos tipos pode ser ou incluir a divisão ternária.
[0521] De acordo com uma modalidade, um método de codificação é fornecido, compreendendo as etapas de: determinar se o tamanho de um bloco atual é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária; se o tamanho do bloco atual não é maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, aplicar a divisão de árvore de múltiplos tipos ao bloco atual; em que o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária ou o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore ternária.
[0522] O método de codificação pode se aplicar a qualquer uma das regras e restrições mencionadas acima descritas em relação ao método de decodificação. Visto que o lado do codificador e o lado do decodificador devem compartilhar o fluxo de bits. Em particular, os lados de codificação geram o fluxo de bits depois de codificar as partições resultantes do particionamento descrito acima, enquanto o lado de decodificação analisa o fluxo de bits e reconstrói as partições decodificadas consequentemente. O mesmo se aplica às modalidades relacionadas ao dispositivo de codificação (codificador) e ao dispositivo de decodificação (decodificador) descritos a seguir.
[0523] De acordo com uma modalidade, um dispositivo de decodificação é fornecido, compreendendo circuitos configurados para: determinar se o tamanho de um bloco atual é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária; se o tamanho do bloco atual não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, aplicar a divisão de árvore de múltiplos tipos ao bloco atual; em que o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária ou o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore ternária. É observado que determinar se o tamanho de um bloco atual é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária pode ser realizado com base na sinalização no fluxo de bits no lado de decodificação.
[0524] Também é fornecido um dispositivo de codificação que compreende circuitos configurados para: determinar se o tamanho de um bloco atual é maior do que um tamanho mínimo permitido do nó folha de árvore quaternária; se o tamanho do bloco atual não for maior do que o tamanho mínimo permitido do nó folha de árvore quaternária, aplicar a divisão de árvore de múltiplos tipos ao bloco atual; em que o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore binária ou o tamanho mínimo permitido do nó folha de árvore quaternária não é maior do que um tamanho máximo permitido do nó raiz de árvore ternária.
[0525] De acordo com uma modalidade, uma mídia de armazenamento legível por computador não transitória é fornecida, armazenamento de programação para a execução por circuitos de processamento, em que a programação, quando executadas pelos circuitos de processamento, configura os circuitos de processamento para realizar qualquer um dos métodos mencionados acima.
[0526] Os dispositivos descritos nesta revelação podem compreender circuitos de processamento para realizar as várias operações e métodos descritos neste relatório. Os circuitos de processamento podem compreender hardware e software. Por exemplo, os circuitos de processamento podem compreender um ou mais processadores e uma memória não volátil conectados a um ou mais processadores. A memória pode portar o código de programa que, quando executado por um ou mais processadores, faz com que o dispositivo possa realizar as referidas operações ou métodos.
[0527] A invenção foi descrita juntamente com várias modalidades como exemplos, bem como implantações. Entretanto, outras variações podem ser entendidas e realizadas pelos técnicos no assunto e praticando a invenção reivindicada, a partir dos estudos dos desenhos, esta revelação e as reivindicações independentes. Nas reivindicações, bem como na descrição, a palavra “compreendendo” não exclui outros elementos ou etapas e o artigo indefinido “um” ou “uma” não exclui uma pluralidade. Um elemento único ou outra unidade pode atender as funções de várias entidades ou itens citados nas reivindicações. O mero fato de que determinadas medidas são citadas nas diferentes reivindicações dependentes mútuas não indica que uma combinação destas medidas não possa ser usada em uma implantação vantajosa.
[0528] O seguinte é uma explicação das aplicações do método de codificação, bem como o método de decodificação, como mostrado nas modalidades mencionadas acima, e um sistema que utiliza as mesmas.
[0529] A FIG. 27 é um diagrama de bloco que mostra um sistema de fornecimento de conteúdo 3100 para realizar o serviço de distribuição de conteúdo. Este sistema de fornecimento de conteúdo 3100 inclui o dispositivo de captura 3102, dispositivo terminal 3106 e, opcionalmente, inclui o visor
3126. O dispositivo de captura 3102 se comunica com o dispositivo terminal 3106 através do enlace de comunicação 3104. O enlace de comunicação pode incluir o canal de comunicação 13 descrito acima. O enlace de comunicação 3104 inclui, mas não está limitado à WIFI, Ethernet, Cabo, sem fio (3G/4G/5G), USB ou qualquer tipo de combinação dos mesmos ou semelhantes.
[0530] O dispositivo de captura 3102 gera dados e pode codificar os dados pelo método de codificação, como mostrado nas modalidades acima. Alternativamente, o dispositivo de captura 3102 pode distribuir os dados para um servidor de transmissão (não mostrado nas figuras) e o servidor codifica os dados e transmite os dados codificados para o dispositivo terminal 3106. O dispositivo de captura 3102 inclui, mas não está limitado à câmera, smartphone ou smartpad, computador ou laptop, sistema videoconferência, PDA, dispositivo montado em veículo ou uma combinação de qualquer um deles ou semelhantes. Por exemplo, o dispositivo de captura 3102 pode incluir o dispositivo de origem 12 como descrito acima. Quando os dados incluem o vídeo, o codificador de vídeo 20 incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de vídeo. Quando os dados incluem áudio (isto é, voz), um codificador de áudio incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de áudio. Para alguns cenários práticos, o dispositivo de captura 3102 distribui os dados de vídeo e áudio codificados pela multiplexação dos dois juntos. Para outros cenários práticos, por exemplo, no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. O dispositivo de captura 3102 distribui os dados de áudio codificados e os dados de vídeo codificados para o dispositivo terminal 3106 separadamente.
[0531] No sistema de fornecimento de conteúdo 3100, o dispositivo terminal 310 recebe e reproduz os dados codificados. O dispositivo terminal 3106 pode ser um dispositivo com capacidade de recebimento e recuperação de dados, tal como smartphone ou smartpad 3108, computador ou laptop 3110, gravador de vídeo de rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, set top box (STB) 3116, sistema de videoconferência 3118, sistema vigilância por vídeo 3120, assistente digital pessoal (PDA) 3122, dispositivo montado em veículo 3124 ou uma combinação de qualquer um de deles ou semelhantes, capazes de decodificar os dados codificados mencionados acima. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14 descrito acima. Quando os dados codificados incluem o vídeo, o decodificador de vídeo 30 incluído no dispositivo terminal é priorizado para realizar a decodificação de vídeo. Quando os dados codificados incluem áudio, um decodificador de áudio incluído no dispositivo terminal é priorizado para realizar o processamento de decodificação de áudio.
[0532] Para um dispositivo terminal com seu visor, por exemplo, telefone inteligente ou pad 3108, computador ou laptop 3110, gravador de vídeo de rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, assistente pessoal digital (PDA) 3122 ou dispositivo montado em veículo 3124, o dispositivo terminal pode alimentar os dados decodificados para seu visor. Para um dispositivo terminal equipado sem nenhum visor, por exemplo, STB 3116, sistema de videoconferência 3118 ou sistema de vigilância por vídeo 3120, um visor externa 3126 é contatada para receber e mostrar os dados decodificados.
[0533] Quando cada dispositivo neste sistema realiza a codificação ou decodificação, o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem, como mostrado nas modalidades mencionadas acima, pode ser usado.
[0534] A FIG. 28 é um diagrama que mostra uma estrutura de um exemplo do dispositivo terminal 3106. Depois que o dispositivo terminal 3106 recebe o fluxo do dispositivo de captura 3102, a unidade de procedimento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui, mas não está limitado ao Protocolo de Transmissão em Tempo Real (RTSP), Protocolo de Transferência de Hipertexto (HTTP), Protocolo de Transmissão Ao Vivo HTTP (HLS), MPEG-DASH, Protocolo de Transporte em Tempo Real (RTP), Protocolo de Mensagem em Tempo Real (RTMP) ou qualquer tipo de combinação dos mesmos ou semelhantes.
[0535] Depois da unidade de procedimento de protocolo 3202 processar o fluxo, o arquivo de fluxo é gerado. O arquivo é emitido para uma unidade de demultiplexação 3204. A unidade de demultiplexação 3204 pode separar os dados multiplexados nos dados de áudio codificados e nos dados de vídeo codificados. Como descrito acima, para alguns cenários práticos, por exemplo, no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. Nesta situação, os dados codificados são transmitidos para o codificador de vídeo 3206 e o decodificador de áudio 3208 sem ser através da unidade de demultiplexação 3204.
[0536] Através do processamento de demultiplexação, o fluxo elementar de vídeo (ES), ES de áudio e, opcionalmente, a legenda são gerados. O codificador de vídeo 3206, que inclui o decodificador de vídeo 30 como aplicado nas modalidades mencionadas acima, decodifica o ES de vídeo pelo método de decodificação, como mostrado nas modalidades mencionadas acima, para gerar o quadro de vídeo, e alimenta estes dados para a unidade síncrona 3212. O decodificador de áudio 3208, decodifica o ES de áudio para gerar o quadro de áudio, e alimenta estes dados para a unidade síncrona 3212. Alternativamente, o quadro de vídeo pode armazenar em um buffer (não mostrado na FIG. 28) antes da alimentação para a unidade síncrona 3212. Similarmente, o quadro de áudio pode armazenar em um buffer (não mostrado na FIG. 28) antes da alimentação para a unidade síncrona 3212.
[0537] A unidade síncrona 3212 sincroniza o quadro de vídeo e o quadro de áudio e fornece o vídeo/áudio para um visor de vídeo/áudio 3214. Por exemplo, a unidade síncrona 3212 sincroniza a apresentação de informações de vídeo e áudio. As informações podem codificar na sintaxe usando carimbos de data/hora relativos à apresentação de dados de áudio e visuais codificados e os carimbos de data/hora relativos à liberação do fluxo de dados.
[0538] Se a legenda estiver incluída no fluxo, o decodificador de legenda 3210 decodifica a legenda e, sincroniza com o quadro de vídeo e o quadro de áudio e fornece o vídeo/áudio/legenda para um visor de vídeo/áudio/legenda 3216.
[0539] A presente invenção não é limitada ao sistema mencionado acima e o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem nas modalidades mencionadas acima pode ser incorporado em outro sistema, por exemplo, um sistema de carro.
[0540] Embora as modalidades da invenção sejam descritas primeiro com base na codificação de vídeo, deve ser observado que as modalidades do sistema de codificação 10, codificador 20 e decodificador 30 (e, correspondentemente, do sistema 10) e as outras modalidades descritas neste relatório também podem ser configuradas ainda para o processamento ou codificação de imagem, isto é, o processamento ou codificação de uma imagem individual independente de qualquer procedimento ou imagem consecutiva como na codificação de vídeo. Em geral, apenas unidades de predição inter 244 (codificador) e 344 (decodificador) podem não estar disponíveis no caso de a codificação de processamento de imagem estar limitada a uma única imagem 27. Todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 20 e decodificador de vídeo 30 podem ser igualmente usadas ainda para o processamento de imagem, por exemplo, cálculo residual 204/304, transformada 206, quantização 208, quantização inversa 210/310, transformada (inversa) 212/312, particionamento 262/362, predição intra 254/354 e/ou filtragem loop 220, 320, e codificação de entropia 270 e decodificação de entropia 304.
[0541] As modalidades, por exemplo, do codificador 20 e do decodificador 30, e as funções descritas neste relatório, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implantadas em hardware, software firmware ou qualquer combinação dos mesmos. Se implantadas em software, as funções podem ser armazenadas em uma mídia legível por computador ou transmitidas através da mídia de comunicação como uma ou mais instruções ou código e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir a mídia de armazenamento legível por computador, que corresponde a uma mídia tangível, tal como a mídia de armazenamento de dados, ou mídia de comunicação incluindo qualquer mídia que facilita a transferência de um programa de computador de uma placa para outra, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, a mídia legível por computador geralmente pode corresponder à (1) mídia de armazenamento legível por computador tangível que é não transitória ou a (2) uma mídia de comunicação, tal como um sinal ou onda de portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para a implantação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0542] Os seguintes operadores lógicos ou operadores matemáticos são definidos a seguir:
[0543] Os operadores matemáticos usados neste pedido são similares àqueles usados na linguagem de programação C. Entretanto, os resultados da divisão inteira e operações de deslocamento aritmético são definidos mais precisamente e as operações adicionais são definidas, tais como exponenciação e divisão com valor real. As convenções de numeração e contagem geralmente começam do 0, por exemplo, “o primeiro” é equivalente ao 0ésimo, “o segundo” é equivalente ao 1o, etc. Operadores aritméticos
[0544] Os seguintes operadores aritméticos são definidos a seguir: + Adição Subtração (como um operador de dois argumentos) ou negação (como um − operador de prefixo unário) * Multiplicação, incluindo multiplicação de matriz Exponenciação. Especifica x para a potência de y. Em outros contextos, tal xy notação é usada para sobrescrito, não destinado a ser interpretado como exponenciação. Divisão inteira com truncamento do resultado em direção a zero. Por / exemplo, 7/4 e −7/−4 são truncados para 1 e −7/4 e 7/−4 são truncados para −1. Usado para denotar divisão em equações matemáticas em que nenhum ÷ truncamento ou arredondamento é pretendido. x Usado para denotar divisão em equações matemática em que nenhum y truncamento ou arredondamento é pretendido.
y � f(i) A soma de f(i) com i levando todos os valores inteiro de x até y e incluindo y. i=x Módulo. Restante de x dividido por y, definido apenas para os números x %y inteiros x e y com x >= 0 e y > 0. Operadores lógicos
[0545] Os seguintes operadores lógicos são definidos a seguir: x && y Booleano lógico “e” de x e y x | | y Booleano lógico “ou” de x e y ! Booleano lógico “não” x ? y : z Se x for TRUE ou não igual a 0, avaliar o valor de y; de outro modo, avaliar o valor de z. Operadores operacionais
[0546] Os seguintes operadores operacionais são definidos a seguir: > Maior do que >= Maior do que ou igual a < Menor do que <= Menor do que ou igual a = = Igual a != Diferente de
[0547] Quando um operador relacional é aplicado a um elemento de sintaxe ou variável que foi atribuído ao valor “na” (não aplicável), o valor “na” é tratado como um valor distinto para o elemento de sintaxe ou variável. O valor “na” é considerado igual a nenhum outro valor. Operadores de lógica binária
[0548] Os seguintes operadores de lógica binária são definidos a seguir: & Bit-wise “e”. Ao operar com argumentos inteiros, operar em uma representação de complemento de dois do valor inteiro. Ao operar com um argumento binário que contém menos bits do que outro argumento, o menor argumento é estendido adicionando bits mais significantes iguais a 0. | Bit-wise “ou”. Ao operar com argumentos inteiros, operar em uma representação de complemento de dois do valor inteiro. Ao operar com um argumento binário que contém menos bits do que outro argumento, o menor argumento é estendido adicionando bits mais significantes iguais a 0. ^ Bit-wise “exclusivo ou”. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o menor argumento é estendido adicionando bits mais significantes iguais a 0. x >> y Deslocamento aritmético para a direita de uma representação inteira de complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados nos bits mais significantes (MSBs) como um resultado do deslocamento para a direita têm um valor igual aos MSB de x antes da operação de deslocamento. x << y Deslocamento aritmético para a esquerda de uma representação inteira de complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados nos bits menos significantes (LSBs) como um resultado do deslocamento para a esquerda têm um valor igual a 0. Operadores de atribuição
[0549] Os seguintes operadores aritméticos são definidos a seguir: = Operador de atribuição + + Incremento, isto é, x+ + é equivalente a x = x + 1; quando usado em um índice de arranjo, avaliar o valor da variável antes da operação de incremento. − − Decremento, isto é, x− − é equivalente a x = x − 1; quando usado em um índice de arranjo, avaliar o valor da variável antes da operação de decremento. += Incremento pela quantidade especificada, isto é, x += 3 é equivalente a x = x + 3 e x += (−3) é equivalente a x = x + (−3). −= Decremento pela quantidade especificada, isto é, x −= 3 é equivalente a x = x − 3 e x −= (−3) é equivalente a x = x − (−3). Notação de alcance
[0550] A seguinte notação é usada para especificar uma faixa de valores: x = y..zx assume valores inteiros partindo de y para z, inclusive, com x, y e z sendo números inteiros e z sendo maior do que y. Funções matemáticas
A seguintes funções matemáticas são definidas: x ; x >= 0 Abs(x) = � −x ; x<0 Asin(x) a função de seno inversa trigonométrica, operando em um argumento x que está na faixa de −1,0 a 1,0, inclusive, com um valor de saída na faixa de −π÷2 a π÷2, inclusive, em unidades de radianos Atan(x) a função tangente inversa trigonométrica, operando com um argumento x, com um valor de saída na faixa de −π÷2 a π÷2, inclusive, em unidades de radianos y ⎧ Atan � x � ; x>0 ⎪ y ⎪ Atan � x � + π ; x < 0 && y >= 0 Atan2(y, x) = y Atan � � − π ; x < 0 && y < 0 ⎨ x π ⎪ + ; x = = 0 && y >= 0 2 ⎪ − π ; de outro modo ⎩ 2
Ceil(x) o menor inteiro maior do que ou igual a x.
Clip1Y(x) = Clip3(0, (1 << BitDepthY) − 1, x) Clip1C(x) = Clip3(0, (1 << BitDepthC) − 1, x) x ; z<x Clip3(x, y, z) = � y ; z>y z ; de outro modo Cos(x) a função de cosseno trigonométrica operando com um argumento x em unidades de radianos.
Floor(x) o maior inteiro menor do que ou igual a x. c+d ; b − a >= d/2 GetCurrMsb(a, b, c, d) = � c − d ; a − b > d/2 c ; de outro modo Ln(x) o logaritmo natural de x (o logaritmo de base e, em que e é o logaritmo natural constante de base 2,718 281 828...). Log2(x) o logaritmo de base 2 de x.
Log10(x) o logaritmo de base 10 de x. x ; x <= y Min(x, y) = � y ; x>y x ; x >= y Max(x, y) = � y ; x<y Round(x) = Sign(x) * Floor(Abs(x) + 0,5)
1 ; x>0 Sign(x) = � 0 ; x==0 −1 ; x<0 Sin(x) a função de seno trigonométrica operando com um argumento x em unidades de radianos Sqrt(x) = √x Swap(x, y) = (y, x) Tan(x) a função tangente trigonométrica operando com um argumento x em unidades de radianos Ordem de precedência de operação
[0551] Quando uma ordem de precedência em uma expressão não é indicada explicitamente pelo uso de parênteses, as seguintes regras se aplicam: - Operações de uma precedência superior são avaliadas antes de qualquer operação de uma precedência inferior. - Operações com a mesma precedência são avaliadas sequencialmente da esquerda para a direita.
[0552] A tabela abaixo especifica a precedência de operações da mais alta para a mais baixa; uma posição mais alta na tabela indica uma precedência mais alta.
[0553] Para os operadores que também são usados na linguagem de programação C, a ordem de precedência usada neste relatório descritivo é a mesma que a usada na linguagem de programação C. Tabela: Precedência de operação da mais alta (no topo da tabela) para a mais baixa (na parte inferior da tabela) operações (com operandos x, y e z) “x++”, “x− −” “!x”, “−x” (como um operador de prefixo unário) xy x “x * y”, “x/y”, “x ÷ y”, “ ”, “x % y” y “x + y”, “x − y” (como um operador de dois y ∑ f( i ) argumentos), “ i=x ” “x << y”, “x >> y” “x < y”, “x <= y”, “x > y”, “x >= y” “x = = y”, “x != y” “x & y” “x | y” “x && y” “x | | y” “x ? y : z” “x..y” “x = y”, “x += y”, “x −= y” Descrição de texto de operações lógicas
[0554] No texto, uma declaração de operações lógicas que seriam descritas matematicamente da seguinte forma: se(condição 0) declaração 0 senão (condição 1) declaração 1 ... senão/* observação informativa sobre a condição remanescente */ declaração n pode ser descrita da seguinte maneira: ... como a seguir/... o seguinte se aplica: - Se condição 0, declaração 0 - De outro modo, se condição 1, declaração 1 - ... - De outro modo (observação informativa na condição remanescente), declaração n Cada declaração “Se ... De outro modo, se ... De outro modo, ...” no texto é introduzida com “... como a seguir” ou “... o seguinte se aplica” imediatamente seguido por “Se ...”. A última condição de “Se ... De outro modo, se ... De outro modo, ...” é sempre um “De outro modo, ...”. As declarações intercaladas “Se ... De outro modo, se ... De outro modo, ...” podem ser identificadas combinando “... como a seguir” ou “... o seguinte se aplica” com a terminação “De outro modo, ...”. No texto, uma declaração de operações lógicas seria descrita matematicamente da seguinte forma: se(condição 0a && condição 0b) declaração 0 senão se(condição 1a | | condição 1b) declaração 1 ... senão declaração n pode ser descrita da seguinte maneira: ... como a seguir/... o seguinte se aplica: - Se todas as seguintes condições forem verdadeiras, declaração 0: - condição 0a - condição 0b - De outro modo, se uma ou mais das seguintes condições forem verdadeiras, declaração 1: - condição 1a - condição 1b - ... - De outro modo, declaração n No texto, uma declaração das operações lógicas seria descrita matematicamente da seguinte forma: se(condição 0) declaração 0 se(condição 1) declaração 1 pode ser descrita da seguinte maneira: Quando condição 0, declaração 0 Quando condição 1, declaração 1 Definições de acrônimos e Glossário HEVC - Codificação de Vídeo de Alta Eficácia
VVC - Codificação de Vídeo Versátil VTM - Modelo de Teste de VVC JEM - Modelo de Exploração Conjunta CTU - Unidade de Árvore de Codificação CU - Unidade de codificação BT - Árvore binária TT - Árvore ternária QT - Quadtree ou Árvore quaternária ABT - BT assimétrica MTT- Árvore de múltiplos tipos AMP - Partição assimétrica SH - Cabeçalho de fatia SPS - Conjunto de parâmetros de sequência PPS - Conjunto de parâmetros de imagem CE - Experimento Principal SubCE - Experimento de SubCore (parte de um Experimento Principal).

Claims (20)

REIVINDICAÇÕES
1. Dispositivo para decodificar ou processar um fluxo de bits (101) de vídeo, CARACTERIZADO pelo fato de que o dispositivo inclui circuitos configurados para: obter, a partir do fluxo de bits (101), um elemento de sintaxe; obter informações para um tamanho mínimo em amostras de luma de um bloco de folha de luma resultante de divisão de árvore quaternária, MinQtSizeY (105); determinar um tamanho máximo em amostras de luma de um bloco de raiz de luma que pode ser dividido usando uma divisão de árvore binária, MaxBtSizeY (102) com base nas informações para MinQtSizeY (105) e no elemento de sintaxe obtido.
2. Dispositivo, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que os circuitos são configurados para determinar o MaxBtSizeY (102) considerando que seu limite inferior é o MinQtSizeY (105).
3. Dispositivo, de acordo com a reivindicação 1 ou 2, CARACTERIZADO pelo fato de que o elemento de sintaxe é um elemento de sintaxe (301) de uma diferença, entre o logaritmo de base 2 do MinQtSizeY (105) e o logaritmo de base 2 do MaxBtSizeY (102).
4. Dispositivo, de acordo com a reivindicação 1 ou 2, CARACTERIZADO pelo fato de que o elemento de sintaxe é um elemento de sintaxe (301) de uma diferença entre o MinQtSizeY (105) e o MaxBtSizeY (102), o elemento de sintaxe de uma diferença está sinalizando a referida diferença em escala logarítmica com base 2.
5. Dispositivo, de acordo com qualquer uma das reivindicações 1 a 4, CARACTERIZADO pelo fato de que os circuitos são configurados para obter o elemento de sintaxe a partir do fluxo de bits dependente de uma profundidade de hierarquia máxima para unidades de codificação resultantes de divisão de árvore de múltiplos tipos de um bloco de folha de árvore quaternária.
6. Dispositivo, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que os circuitos são configurados para obter o elemento de sintaxe a partir do fluxo de bits (101), se o MaxMttDepth (103) não for igual a zero.
7. Dispositivo (1000) para gerar ou processar um fluxo de bits (101)
de vídeo, CARACTERIZADO pelo fato de que o dispositivo (1000) é configurado para: determinar um tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária, MinQtSizeY (105), determinar um tamanho de luma máximo de um bloco de codificação a ser dividido usando uma divisão de árvore binária, MaxBtSizeY (102) com base no MinQtSizeY (105), e incluir informações para o MinQtSizeY (105) determinado no fluxo de bits (101).
8. Dispositivo (1000) para gerar ou processar um fluxo de bits (101) incluindo imagens codificadas, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que é configurado para determinar o MaxBtSizeY (102) considerando que seu limite inferior é o MinQtSizeY (105).
9. Dispositivo (1000) para gerar ou processar um fluxo de bits (101) incluindo imagens codificadas, de acordo com a reivindicação 7 ou 8, CARACTERIZADO pelo fato de que o dispositivo é adicionalmente configurado para: incluir um elemento de sintaxe (301) de uma diferença, entre o logaritmo de base 2 do MinQtSizeY (105) e o logaritmo de base 2 do MaxBtSizeY (102) no fluxo de bits (101).
10. Dispositivo (1000) para gerar ou processar um fluxo de bits (101) incluindo imagens codificadas, de acordo com a reivindicação 8 ou 9, CARACTERIZADO pelo fato de que o elemento de sintaxe é um elemento de sintaxe (301) de uma diferença, entre o MinQtSizeY (105) e o MaxBtSizeY (102), o elemento de sintaxe de uma diferença está sinalizando a referida diferença em escala logarítmica com base 2.
11. Dispositivo (1000) para gerar ou processar um fluxo de bits (101) incluindo imagens codificadas, de acordo com a reivindicação 9 ou 10, CARACTERIZADO pelo fato de que o dispositivo é configurado para: incluir o elemento de sintaxe (5001), dependente de uma profundidade de hierarquia máxima para unidades de codificação resultantes de divisão de árvore de múltiplos tipos, MaxMttDepth (103) no fluxo de bits (101).
12. Dispositivo (1000) para gerar ou processar um fluxo de bits (101) incluindo imagens codificadas, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que é configurado para incluir o elemento de sintaxe no fluxo de bits (101), se o MaxMttDepth (103) não for igual a zero.
13. Método para gerar ou processar um fluxo de bits (101) de vídeo, CARACTERIZADO pelo fato de que inclui as etapas de: determinar um tamanho de luma mínimo de um bloco de folha resultante de divisão de árvore quaternária, MinQtSizeY (105), determinar um tamanho de luma máximo de um bloco de codificação a ser dividido usando uma divisão de árvore binária, MaxBtSizeY (102), com base no MinQtSizeY (105), e incluir informações para o MinQtSizeY (105) determinado no fluxo de bits (101).
14. Método para decodificar ou processar um fluxo de bits (101) de vídeo, CARACTERIZADO pelo fato de que compreende as etapas de: obter, a partir do fluxo de bits (101), um elemento de sintaxe; obter informações para um tamanho mínimo em amostras de luma de um bloco de folha de luma resultante de divisão de árvore quaternária, MinQtSizeY (105); determinar um tamanho máximo em amostras de luma de um bloco de raiz de luma que pode ser dividido usando uma divisão de árvore binária, MaxBtSizeY (102) com base nas informações para MinQtSizeY (105) e no elemento de sintaxe obtido.
15. Método, de acordo com a reivindicação 14, CARACTERIZADO pelo fato de que a determinação do MaxBtSizeY (102) com base nas informações para MinQtSizeY (105) e no elemento de sintaxe obtido compreende determinar o MaxBtSizeY (102) considerando que seu limite inferior é o MinQtSizeY (105).
16. Método, de acordo com a reivindicação 14 ou 15, CARACTERIZADO pelo fato de que o elemento de sintaxe é um elemento de sintaxe (301) que especifica uma diferença, entre o logaritmo de base 2 do MaxBtSizeY (102) e o logaritmo de base 2 do MinQtSizeY(105); ou o elemento de sintaxe especifica a diferença entre o MaxBtSizeY e o MinQtSizeY.
17. Método, de acordo com a reivindicação 14 ou 15, CARACTERIZADO pelo fato de que o elemento de sintaxe é um elemento de sintaxe (301) de uma diferença, entre o MinQtSizeY (105) e o MaxBtSizeY (102), o elemento de sintaxe de uma diferença está sinalizando a referida diferença na escala logarítmica com base 2.
18. Método, de acordo com qualquer uma das reivindicações 14 a 17, CARACTERIZADO pelo fato de que a obtenção, a partir do fluxo de bits (101), do elemento de sintaxe compreende obter o elemento de sintaxe a partir do fluxo de bits dependente de uma profundidade de hierarquia máxima para unidades de codificação resultantes de divisão de árvore de múltiplos tipos de um bloco de folha de árvore quaternária.
19. Método, de acordo com a reivindicação 18, CARACTERIZADO pelo fato de que a obtenção, a partir do fluxo de bits (101), do elemento de sintaxe compreende obter o elemento de sintaxe a partir do fluxo de bits (101), se o MaxMttDepth (103) não for igual a zero.
20. Produto de programa de computador, CARACTERIZADO pelo fato de que compreende código de programa para controlar um dispositivo (100, 1000) para realizar o método (7000) conforme definido na reivindicação 13 ou 14, quando o código de programa é executado por um ou mais processadores do dispositivo (100, 1000).
BR112021003999-6A 2018-09-03 2019-09-03 relação entre elementos de restrição de partição BR112021003999A2 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862726423P 2018-09-03 2018-09-03
US62/726,423 2018-09-03
US201862733053P 2018-09-18 2018-09-18
US62/733,053 2018-09-18
US201962818996P 2019-03-15 2019-03-15
US62/818,996 2019-03-15
PCT/CN2019/104260 WO2020048466A1 (en) 2018-09-03 2019-09-03 Relation between partition constraint elements

Publications (1)

Publication Number Publication Date
BR112021003999A2 true BR112021003999A2 (pt) 2021-05-25

Family

ID=69722985

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021003999-6A BR112021003999A2 (pt) 2018-09-03 2019-09-03 relação entre elementos de restrição de partição

Country Status (11)

Country Link
US (2) US11477494B2 (pt)
EP (1) EP3808081A4 (pt)
JP (2) JP7286757B2 (pt)
KR (2) KR20230054917A (pt)
CN (2) CN112673626B (pt)
AU (2) AU2019334017B2 (pt)
BR (1) BR112021003999A2 (pt)
CA (1) CA3111043C (pt)
MX (1) MX2021002284A (pt)
WO (1) WO2020048466A1 (pt)
ZA (1) ZA202101704B (pt)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113273197A (zh) * 2019-02-03 2021-08-17 北京字节跳动网络技术有限公司 视频块分割模式的信令通知
US11496774B2 (en) * 2019-08-27 2022-11-08 Tencent America LLC Header syntax for QT/BT/TT size
US11399195B2 (en) * 2019-10-30 2022-07-26 Tencent America LLC Range of minimum coding block size in video coding
FI4044599T3 (fi) * 2019-11-05 2024-03-25 Lg Electronics Inc Kuva/videokoodausmenetelmä ja -laite
CN115462085A (zh) 2020-04-05 2022-12-09 字节跳动有限公司 视频编解码中滤波的高级控制
WO2023236775A1 (en) * 2022-06-06 2023-12-14 Mediatek Inc. Adaptive coding image and video data

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8761245B2 (en) 2010-12-21 2014-06-24 Intel Corporation Content adaptive motion compensation filtering for high efficiency video coding
TWI726579B (zh) 2011-12-21 2021-05-01 日商Jvc建伍股份有限公司 動態影像編碼裝置、動態影像編碼方法、動態影像解碼裝置、及動態影像解碼方法
US20140254661A1 (en) * 2013-03-08 2014-09-11 Samsung Electronics Co., Ltd. Method and apparatus for applying secondary transforms on enhancement-layer residuals
WO2016074147A1 (en) * 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
WO2016090568A1 (en) 2014-12-10 2016-06-16 Mediatek Singapore Pte. Ltd. Binary tree block partitioning structure
WO2017008263A1 (en) 2015-07-15 2017-01-19 Mediatek Singapore Pte. Ltd. Conditional binary tree block partitioning structure
US10212444B2 (en) * 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
CN114786009A (zh) 2016-03-16 2022-07-22 寰发股份有限公司 视频编码中限制块尺寸的视频数据处理方法与装置
CN107566848B (zh) * 2016-06-30 2020-04-14 华为技术有限公司 编解码的方法及装置
US11240495B2 (en) 2016-08-21 2022-02-01 Lg Electronics Inc. Image coding/decoding method and apparatus therefor
US10609423B2 (en) * 2016-09-07 2020-03-31 Qualcomm Incorporated Tree-type coding for video coding
EP4075798A1 (en) * 2016-10-04 2022-10-19 HFI Innovation Inc. Method and apparatus for intra chroma coding in image and video coding
JP2018085660A (ja) 2016-11-25 2018-05-31 キヤノン株式会社 画像符号化装置
US10560723B2 (en) * 2017-05-08 2020-02-11 Qualcomm Incorporated Context modeling for transform coefficient coding
EP3662666A4 (en) * 2017-09-08 2021-03-03 Mediatek Inc. METHODS AND DEVICES FOR PROCESSING IMAGES IN AN IMAGE OR VIDEO ENCODING SYSTEM
US11240528B2 (en) * 2018-01-30 2022-02-01 Sharp Kabushiki Kaisha Systems and methods for performing motion vector prediction for video coding using motion vector predictor origins
EP3777172A4 (en) * 2018-04-02 2022-01-19 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR DRIVING QUANTIFICATION PARAMETERS FOR VIDEO BLOCKS DURING VIDEO CODING
US20210314630A1 (en) * 2018-05-31 2021-10-07 Sharp Kabushiki Kaisha Systems and methods for partitioning video blocks in an inter prediction slice of video data
US11973944B2 (en) * 2018-06-27 2024-04-30 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium in which bitstream is stored for block division at picture boundary

Also Published As

Publication number Publication date
US11477494B2 (en) 2022-10-18
KR20210024114A (ko) 2021-03-04
WO2020048466A1 (en) 2020-03-12
US11910027B2 (en) 2024-02-20
US20230171437A1 (en) 2023-06-01
JP2021535645A (ja) 2021-12-16
AU2019334017B2 (en) 2023-01-12
AU2023202264A1 (en) 2023-05-04
CA3111043A1 (en) 2020-03-12
CA3111043C (en) 2023-08-15
CN116208767A (zh) 2023-06-02
CN116208767B (zh) 2023-11-28
US20210258618A1 (en) 2021-08-19
CN112673626B (zh) 2024-04-26
CN112673626A (zh) 2021-04-16
AU2019334017A1 (en) 2021-04-08
EP3808081A4 (en) 2021-07-21
KR20230054917A (ko) 2023-04-25
ZA202101704B (en) 2022-04-28
KR102525179B1 (ko) 2023-04-21
JP7286757B2 (ja) 2023-06-05
MX2021002284A (es) 2021-05-27
EP3808081A1 (en) 2021-04-21
JP2023111927A (ja) 2023-08-10

Similar Documents

Publication Publication Date Title
US11070804B2 (en) Video encoder, a video decoder and corresponding methods with improved block partitioning
BR112021004984A2 (pt) aparelho e método para quantização inversa
BR112021003999A2 (pt) relação entre elementos de restrição de partição
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR122022009445A2 (pt) Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem
BR112021013565A2 (pt) Codificador, decodificador, meio legível por computador não transitório e método de codificação de vídeo de um bloco de uma imagem
US20210227218A1 (en) Video encoder, a video decoder and corresponding methods
BR112021009099A2 (pt) codificador de vídeo, decodificador de vídeo e métodos de codificação ou decodificação de uma imagem
RU2786652C2 (ru) Связь между элементами ограничения разделения