BR112021004984A2 - aparelho e método para quantização inversa - Google Patents

aparelho e método para quantização inversa Download PDF

Info

Publication number
BR112021004984A2
BR112021004984A2 BR112021004984-3A BR112021004984A BR112021004984A2 BR 112021004984 A2 BR112021004984 A2 BR 112021004984A2 BR 112021004984 A BR112021004984 A BR 112021004984A BR 112021004984 A2 BR112021004984 A2 BR 112021004984A2
Authority
BR
Brazil
Prior art keywords
block
value
image
current block
chrominance component
Prior art date
Application number
BR112021004984-3A
Other languages
English (en)
Inventor
Roman CHERNYAK
Alexander Karabutov
Sergey Yurievich IKONIN
Timofey Mikhailovich SOLOVYEV
Haitao Yang
Jianle Chen
Yin 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 BR112021004984A2 publication Critical patent/BR112021004984A2/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/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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/124Quantisation
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

aparelho e método para quantização inversa” campo técnico. um método para quantização inversa de um bloco atual de uma imagem é fornecido. o método é realizado por um decodificador, e a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e o componente de crominância são particionados em múltiplos blocos. o método inclui obter um ou mais valores de parâmetro de quantização, qp, existentes a partir de um fluxo de bits recebido, em que o um ou mais valores de qp existentes se referem a um bloco atual no componente de crominância; determinar um valor de qp para o bloco atual no componente de crominância com base no um ou mais valores de qp existentes; realizar quantização inversa no bloco atual no componente de crominância por meio do uso do valor de qp determinado.

Description

“APARELHO E MÉTODO PARA QUANTIZAÇÃO INVERSA” CAMPO TÉCNICO
[0001] A presente revelação refere-se ao campo técnico de decodificação de imagem e/ou vídeo e, em particular, a aparelho e método para quantização inversa.
FUNDAMENTOS
[0002] A comunicação de vídeo digital e aplicações de armazenamento são implementadas por uma ampla faixa de dispositivos digitais, por exemplo, câmeras digitais, telefones celulares de rádio, laptops, sistemas de broadcast, sistemas de teleconferência de vídeo, etc. Uma das tarefas mais importantes e desafiadoras destas aplicações é a compressão de vídeo. A tarefa de compressão de vídeo é complexa e é restringida por dois parâmetros contraditórios: a eficácia da compressão e a complexidade computacional. Os padrões de codificação de vídeo, tais como ITU-T H.264/AVC ou ITU-T H.265/HEVC, fornecem um bom equilíbrio entre estes parâmetros. Por esse motivo, o suporte aos padrões de codificação de vídeo é um requisito obrigatório para quase todas as aplicações de compressão de vídeo.
[0003] As técnicas de compressão de vídeo, tais como predição inter, predição intra e filtros loop, demonstraram ser eficazes e, assim, adotadas em vários padrões de codificação de vídeo, tais como H.264/AVC e H.265/HEVC.
[0004] A unidade de processamento básico de compressão de vídeo é usualmente chamada de macro bloco que é uma parte da imagem tendo o tamanho, por exemplo, de 16x16 ou 64x64 pixels. No mais recente padrão de codificação de vídeo, H.265/HEVC, assim chamado de Unidade de Árvore de Codificação (CTU), é usado como uma unidade de processamento básico. A CTU também é referida como a maior unidade de codificação (LCU). Em H.265/HEVC, as CTUs consistem em um CTB de Luma e dois CTBs de Croma, representando, correspondentemente, partes do sinal de vídeo de luminância e crominância, por exemplo, componentes Y, Cb, Cr. As CTUs são processadas uma por uma em ordem de varredura do canto superior esquerdo para o canto inferior direito da imagem. Cada CTU pode ser dividida adicionalmente em unidades de codificação (CU) menores por meio do uso de, por exemplo, divisão de quadtree. Cada uma das CUs pode ser dividida adicionalmente em CUs menores ou unidades de predição (PUs). Uma PU pode ser predita de modo intra ou inter, de acordo com o tipo de processamento aplicado para os pixels de PU. Em caso de predição inter, uma PU representa uma área de pixels que é processada por compensação de movimento usando um vetor de movimento especificado para uma PU. Para a predição intra, os pixels adjacentes de blocos vizinhos são usados como amostra de referência para prever um bloco atual. Uma PU especifica um modo de predição que é selecionado a partir do conjunto de modos de predição intra para todas as unidades de transformada (TUs) contidas nesta PU. Uma TU pode ter diferentes tamanhos (por exemplo, 4x4, 8x8, 16x16 e 32x32 pixels) e pode ser processada de diferentes maneiras. Para uma TU, a codificação de transformada é realizada, isto é, o erro de predição é transformado com uma transformada de cosseno discreta ou uma transformada de seno discreta (no padrão HEVC/H.265, é aplicada aos blocos codificados de modo intra), e quantizada. Consequentemente, os pixels reconstruídos contêm ruído de quantização (que pode se tornar aparente, por exemplo, como blocos entre unidades, artefatos de toque junto com extremidades fortes, etc.) que filtra no loop, tal como DBF, SAO e ALF tentam suprimir. A utilização de codificação de predição (tal como compensação de movimento e predição intra) e técnicas de particionamento (por exemplo, QT para CUs e PUs bem como RQT para TUs no padrão HEVC/H.265 e múltiplas árvores (MT) para o software de referência VVC partindo da versão BMS-1.0 e VTM-1.0) sofisticadas permitem reduzir significantemente a redundância nas PUs. A diferença fundamental entre os mecanismos de particionamento QT e MT é que o anterior também permite blocos retangulares por meio do uso de particionamento com base em árvores binárias e triplas bem como blocos quadrados por meio do uso do método de quadtree. Como a criação de vídeo e a utilização se tornam cada vez mais onipresentes, o tráfego de vídeo é a maior carga nas redes de comunicação e impulsiona as demandas crescentes de armazenamento de dados. Consequentemente, um dos objetivos da maioria dos padrões de codificação de vídeo é para diminuir a complexidade da codificação em comparação ao seu antecessor sem sacrificar a qualidade da imagem.
SUMÁRIO
[0005] As modalidades do presente pedido fornecem aparelhos e métodos para codificação e decodificação, de acordo com as reivindicações independentes.
[0006] O anterior e outros objetivos são obtidos pela matéria-objeto das reivindicações independentes. As formas de implementação adicionais são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[0007] As modalidades particulares são esboçadas nas reivindicações independentes anexas com outras modalidades nas reivindicações dependentes.
[0008] O aparelho e o método para partição de limite são revelados. O aparelho e o método utilizam um processamento de partição de limite particular para diminuir a complexidade da codificação. O processo de partição de limite também é referido como uma imagem ou tratamento de limite de imagem.
[0009] De acordo com um primeiro aspecto da invenção, um método para quantização inversa de um bloco atual de uma imagem é fornecido. A imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e o componente de crominância são particionados em múltiplos blocos (por exemplo, a unidade de codificação, CU) por árvores de partição separadas. O método inclui que um decodificador obtém um ou mais valores de parâmetro de quantização (QP) existentes a partir de um fluxo de bits (por exemplo, recebido), em que o um ou mais valores de QP existentes se referem a um bloco atual (isto é, o bloco sendo processado) no componente de crominância e, determina um valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e realiza a quantização inversa no bloco atual no componente de crominância por meio do uso do valor de QP determinado.
[0010] Uma imagem de vídeo pode ser dividida no componente de luminância (ou luma) e componente de crominância (ou croma). O componente de luminância ou luma representa o brilho na imagem (o “preto e branco” ou a parte acromática da imagem) e o(s) componente(s) de crominância ou croma representa as informações de cor da imagem. Apenas como um exemplo, quando uma imagem ou uma foto é denotada no espaço de cor de [Y, Cb e Cr], o componente Y é o componente de luminância (ou luma) e os componentes Cb e Cr são o(s) componente(s) de crominância ou croma.
[0011] O componente de luminância e o componente de crominância são particionados em múltiplos blocos por árvores de partição separadas. Em outras palavras, o componente de luminância e o componente de crominância são particionados separadamente. Sabe-se que existem diferentes árvores de partição, por exemplo, quadtree (QT), árvore binária (BT), árvore ternária (TT) e qualquer combinação das árvores de partição acima, por exemplo, quadtree mais árvore binária (QTBT) ou quadtree mais árvore binária ou árvore ternária (QT-BT/TT), etc.
[0012] A expressão “um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância” corresponde aos valores de QP existentes que estão relacionados ao bloco atual no componente de crominância. Apenas, por exemplo, o valor de QP existente compreende: um valor de QP de um bloco colocalizado no componente de luminância; um ou mais blocos vizinhos do bloco colocalizado no componente de luminância; e um ou mais blocos vizinhos do bloco atual no componente de crominância.
[0013] O fluxo de bits pode ser um fluxo de bits recebido que, neste relatório, significa um fluxo de bits recebido no decodificador para processamento. A recepção, neste relatório, se refere a qualquer tipo ou recepção, por exemplo, a partir de um armazenamento ou a partir de uma rede ou semelhantes.
[0014] Para um bloco em um componente de crominância da imagem, um parâmetro de quantização do bloco no componente de crominância pode ser determinado por um ou mais valores de parâmetro de quantização, QP existentes obtidos a partir de um fluxo de bits recebido. Isto fornece uma maneira eficaz para determinar o parâmetro de quantização para o bloco no componente de crominância e aliviar a sobrecarga de processamento do decodificador para determinar o parâmetro de quantização para cada bloco no componente de crominância.
[0015] De acordo com um exemplo do primeiro aspecto da invenção, um ou mais valores de QP existentes compreendem pelo menos um dentre os seguintes: um valor de QP de um bloco colocalizado no componente de luminância; valores de QP existentes de um ou mais blocos vizinhos do bloco colocalizado no componente de luminância; e valores de QP existentes de um ou mais blocos vizinhos do bloco atual no componente de crominância.
[0016] Isto define os valores de QP existentes e fornece uma maneira eficaz para determinar o valor de QP do bloco no componente de crominância da imagem.
[0017] De acordo com outro exemplo do primeiro aspecto da invenção, o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância.
[0018] O termo “o bloco colocalizado no componente de luminância” é um bloco no componente de luminância que é colocalizado para o bloco no componente de crominância, neste relatório, o termo “colocalizado” significa a relação de mapeamento entre os componentes de luminância e crominância de uma imagem.
[0019] Este exemplo fornece uma maneira fácil de determinar o valor de QP de um bloco no componente de crominância. Pelo fato de que o componente de luminância e o componente de crominância de uma imagem se relacionam, é uma maneira fácil e direta de considerar o valor de QP do bloco colocalizado no componente de luminância como o valor de QP do bloco no componente de crominância.
[0020] A etapa para determinar o valor de QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância, compreende, de acordo com qualquer um dentre os exemplos anteriores e do primeiro aspecto: determinar um bloco de luminância colocalizado com uma amostra em uma posição específica no bloco de crominância atual; recuperar o valor de QP (por exemplo, QpY_basic) do bloco de luminância determinado; determinar os valores de QP para o bloco atual no componente de crominância com base no valor de QP (por exemplo, QpY_basic) do bloco de luminância determinado.
[0021] Determinar um bloco colocalizado, de acordo com uma amostra específica, permite uma implementação confiável e inequívoca, bem como a implementação não complexa, mesmo nos casos em que os blocos luma e os blocos croma podem ter diferentes partições.
[0022] Em um exemplo, a amostra na posição específica é uma amostra superior esquerda no quarto inferior direito do bloco de crominância atual.
[0023] Tal posição específica corresponde aproximadamente a um centro do bloco e, assim, fornece uma estimativa apropriada do QP do bloco colocalizado.
[0024] Alternativamente ou além disso, os valores de QP para o bloco atual no componente de crominância são determinados, de acordo com as seguintes fórmulas ou novas fórmulas derivadas a partir das seguintes fórmulas: Qp′Cb = QpCb + QpBdOffsetC + delta_qp_c, Qp′Cr = QpCr + QpBdOffsetC + delta_qp_c, em que QpCb e QpCr são obtidos a partir dos parâmetros qPiCb e qPiCr obtidos com base no valor de QP do bloco de luminância determinado por meio de aplicação de uma função de mapeamento de QP de croma. Em particular, em alguns exemplos específicos, qPiCb e qPiCr são índices na função de mapeamento de croma (tabela), que são calculados com base em QpY_basic. QpY_basic corresponde ao valor de QP do bloco de luminância determinado.
[0025] De acordo com uma implementação exemplar, o método é aplicado separadamente para o plano Luma e Croma com base em duas flags de controle baseadas em conjunto de parâmetros de imagem, PPS; se uma primeira flag de controle for igual a verdadeiro, o método é aplicado para a derivação de QP de luma; ou se a primeira flag de controle for igual a falso, o método não é aplicado para a derivação de QP de luma; e/ou, se uma segunda flag de controle for igual a verdadeiro, o método é aplicado para a derivação de QP de croma; ou se a segunda flag de controle for igual a falso, o método não é aplicado para a derivação de QP de croma.
[0026] Isto facilita o fornecimento de uma sintaxe eficaz e escalonável para o fluxo de bits.
[0027] De acordo com um exemplo do primeiro aspecto da invenção, o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e em pelo menos um dentre os seguintes: um valor delta de QP de crominância sinalizado no fluxo de bits recebido ou um valor de deslocamento de QP de crominância sinalizado no fluxo de bits recebido.
[0028] De acordo com um exemplo do primeiro aspecto da invenção, o método compreende adicionalmente: obter um valor de profundidade de partição do bloco atual e, determinar o valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e em um valor delta de QP de crominância sinalizado no fluxo de bits recebido, se o valor de profundidade de partição estiver abaixo de um limiar.
[0029] Desta maneira, não é necessário aplicar desta forma ao bloco com um valor de profundidade que está acima do limiar, de modo a reduzir a complexidade da computação.
[0030] De acordo com um exemplo do primeiro aspecto da invenção, o limiar é determinado com base em um número predefinido ou em um número sinalizado em um conjunto de parâmetros.
[0031] Por exemplo, este número pode ser predefinido pelo programador ou pode ser sinalizado em um conjunto de parâmetros, por exemplo, conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de sequência (SPS).
[0032] De acordo com um exemplo do primeiro aspecto da invenção, o componente de luminância e o componente de crominância são particionados em múltiplos blocos (por exemplo, a unidade de codificação, CU) por árvores de partição separadas.
[0033] É observado que um método harmonizado para quantização inversa é fornecido, este método não se aplica apenas a um modo de partição única (ST) (isto é, o(s) componente(s) Luma e Croma são particionados por uma única partição), mas também se aplica a um modo de partição dupla (DT) (isto é, o(s) componente(s) Luma e Croma são particionados independentemente por árvores de partição separadas).
[0034] De acordo com uma modalidade da presente invenção, um aparelho de decodificação é fornecido compreendendo os circuitos de processamento para realizar o método do primeiro aspecto e qualquer um dentre os exemplos do primeiro aspecto.
[0035] De acordo com um segundo aspecto, um método é fornecido para quantização de um bloco atual de uma imagem, em que o método é realizado por um codificador e a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos e o método compreende: realizar a quantização no bloco atual em um componente de crominância por meio do uso de um valor de QP determinado; obter um ou mais valores de parâmetro de quantização, QP existentes e incluir um ou mais QP existentes em um fluxo de bits, em que o um ou mais valores de QP existentes se referem ao bloco atual no componente de crominância; determinar um parâmetro QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e no referido valor de QP determinado; e incluir o parâmetro QP no fluxo de bits.
[0036] De acordo com um exemplo do segundo aspecto da invenção, um ou mais valores de QP existentes compreendem pelo menos um dentre os seguintes: um valor de QP de um bloco colocalizado no componente de luminância; valores de QP existentes de um ou mais blocos vizinhos do bloco colocalizado no componente de luminância; e valores de QP existentes de um ou mais blocos vizinhos do bloco atual no componente de crominância.
[0037] De acordo com outro exemplo do primeiro aspecto da invenção, a determinação do parâmetro QP compreende determinar o parâmetro QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância.
[0038] A etapa de determinação do parâmetro QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância compreende, de acordo com qualquer um dentre os exemplos anteriores e do primeiro aspecto: recuperar o valor de QP de um bloco de luminância colocalizado com uma amostra em uma posição específica no bloco de crominância atual; e determinar os valores de QP para o bloco atual no componente de crominância com base no valor de QP do bloco de luminância determinado. Como um exemplo da implementação, a etapa de determinação do parâmetro QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância compreende: determinar um bloco de luminância colocalizado com uma amostra em uma posição específica no bloco de crominância atual; recuperar o valor de QP (por exemplo, QpY_basic) do bloco de luminância determinado; determinar o parâmetro QP para o bloco atual no componente de crominância com base no valor de QP (por exemplo, QpY_basic) do bloco de luminância determinado.
[0039] Em um exemplo, a amostra na posição específica é uma amostra superior esquerda no quarto inferior direito do bloco de crominância atual.
[0040] Alternativamente ou além disso, os valores de QP para o bloco atual no componente de crominância são determinados, de acordo com as seguintes fórmulas ou novas fórmulas derivadas a partir das seguintes fórmulas:
Qp′Cb = QpCb + QpBdOffsetC + delta_qp_c, Qp′Cr = QpCr + QpBdOffsetC + delta_qp_c, em que QpCb e QpCr são obtidos a partir dos parâmetros qPiCb e qPiCr obtidos com base no valor de QP do bloco de luminância determinado por meio de aplicação de uma função de mapeamento de QP de croma.
[0041] De acordo com uma implementação exemplar, o método é aplicado separadamente para o plano Luma e Croma com base em duas flags de controle baseadas em conjunto de parâmetros de imagem, PPS; se uma primeira flag de controle for igual a verdadeiro, o método é aplicado para a derivação de QP de luma; ou se a primeira flag de controle for igual a falso, o método não é aplicado para a derivação de QP de luma; e/ou, se uma segunda flag de controle for igual a verdadeiro, o método é aplicado para a derivação de QP de croma; ou se a segunda flag de controle for igual a falso, o método não é aplicado para a derivação de QP de croma, em que o método compreende adicionalmente uma etapa de incluir a primeira flag e/ou a segunda flag no fluxo de bits.
[0042] De acordo com um exemplo do primeiro aspecto da invenção, o método compreende adicionalmente: determinar o parâmetro QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e em pelo menos um dentre os seguintes: um valor delta de QP de crominância sinalizado no fluxo de bits recebido ou um valor de deslocamento de QP de crominância sinalizado no fluxo de bits recebido. O método pode incluir adicionalmente inserir o QP delta ou o deslocamento de QP no fluxo de bits.
[0043] De acordo com um exemplo do primeiro aspecto da invenção, o método compreende adicionalmente: determinar (e, possivelmente, incluir no fluxo de bits) um valor de profundidade de partição do bloco atual e determinar o parâmetro QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e em um valor delta de QP de crominância incluído no fluxo de bits, se o valor de profundidade de partição estiver abaixo de um limiar.
[0044] De acordo com um exemplo do primeiro aspecto da invenção, o limiar é determinado com base em um número predefinido ou em um número sinalizado em um conjunto de parâmetros.
[0045] Por exemplo, este número pode ser predefinido pelo programador ou pode ser sinalizado em um conjunto de parâmetros, por exemplo, conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de sequência (SPS).
[0046] De acordo com um exemplo do primeiro aspecto da invenção, o componente de luminância e o componente de crominância são particionados em múltiplos blocos (por exemplo, a unidade de codificação, CU) por árvores de partição separadas.
[0047] De acordo com um terceiro aspecto da presente invenção, um produto de programa de computador é fornecido compreendendo um código de programa para realizar o método do primeiro aspecto e qualquer um dentre os exemplos do primeiro aspecto, quando o programa de computador roda em um dispositivo de computação. O programa de computador pode ser armazenado em uma mídia não transitória.
[0048] De acordo com um quarto aspecto da presente invenção, um aparelho de decodificação para a partição de limite de um bloco atual de uma imagem é fornecido. O aparelho de decodificação inclui: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando programação para a execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método do primeiro aspecto e qualquer um dentre os exemplos do primeiro aspecto.
[0049] De acordo com um quinto aspecto, um aparelho de codificação é fornecido para a partição de limite de um bloco atual de uma imagem, compreendendo: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando programação para a execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método do segundo aspecto e qualquer um dentre os exemplos do segundo aspecto.
[0050] De acordo com um sexto aspecto, um aparelho é fornecido para quantização inversa de um bloco atual de uma imagem, em que a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos e o aparelho compreende: um analisador de fluxo de bits (1110) para obter um ou mais valores de parâmetro de quantização,
QP existentes a partir de um fluxo de bits, em que o um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância; uma unidade de determinação de QP (1120) para determinar um valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes; um quantizador inverso (1130) para realizar a quantização inversa no bloco atual no componente de crominância por meio do uso do valor de QP determinado.
[0051] De acordo com um sétimo aspecto, um aparelho é fornecido para quantização de um bloco atual de uma imagem, em que a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos e o aparelho compreende: um quantizador (1210) para realizar a quantização no bloco atual no componente de crominância por meio do uso de um valor de QP determinado; uma unidade de busca (1220) para obter um ou mais valores de parâmetro de quantização, QP existentes e incluir um ou mais QP existentes em um fluxo de bits, em que o um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância; uma unidade de determinação de QP (1230) para determinar um parâmetro QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e no referido valor de QP determinado; e uma unidade de geração de fluxo de bits (1240) para incluir o parâmetro QP no fluxo de bits.
[0052] De acordo com uma oitava modalidade, um circuito integrado é fornecido contendo um dos aparelhos mencionados acima.
[0053] As formas de implementação do segundo, terceiro e quarto aspectos correspondem às respectivas formas de implementação do primeiro aspecto. Consequentemente, uma forma de implementação do método compreende a(s) característica(s) da forma de implementação correspondente do aparelho de decodificação e vice-versa. O aparelho de decodificação pode ser implementado como um chipset para a decodificação de um fluxo de bits de vídeo codificado.
[0054] As vantagens dos métodos, de acordo com o primeiro aspecto são as mesmas que as das formas de implementação correspondentes do aparelho de decodificação, de acordo com o segundo aspecto e o quarto aspecto.
BREVE DESCRIÇÃO DOS DESENHOS
[0055] Nas seguintes modalidades exemplares são descritas em mais detalhes com referência às figuras anexas e desenhos, em que:
[0056] A FIG. 1A é um diagrama de bloco que mostra um exemplo de um sistema de codificação de vídeo configurado para implementar as modalidades da invenção.
[0057] A FIG. 1 B é um diagrama de bloco que mostra outro exemplo de um sistema de codificação de vídeo configurado para implementar as modalidades da invenção.
[0058] A FIG. 2 é um diagrama de bloco que mostra um exemplo de um codificador de vídeo configurado para implementar as modalidades da invenção.
[0059] A FIG. 3 é um diagrama de bloco que mostra uma estrutura do exemplo de um decodificador de vídeo configurado para implementar as modalidades da invenção.
[0060] A FIG. 4 é um diagrama de bloco que ilustra um exemplo de um aparelho de codificação ou um aparelho de decodificação.
[0061] A FIG. 5 é um diagrama de bloco que ilustra outro exemplo de um aparelho de codificação ou um aparelho de decodificação.
[0062] A FIG. 6A é um diagrama esquemático que ilustra uma divisão de quadtree (QT), de acordo com uma modalidade da presente revelação;
[0063] A FIG. 6B é um diagrama esquemático que ilustra uma divisão de árvore binária (BT) na orientação vertical, de acordo com uma modalidade da presente revelação;
[0064] A FIG. 6C é um diagrama esquemático que ilustra uma divisão de árvore binária (BT) na orientação horizontal, de acordo com uma modalidade da presente revelação;
[0065] A FIG. 6D é um diagrama esquemático que ilustra uma divisão de árvore ternária (TT) na orientação vertical, de acordo com uma modalidade da presente revelação;
[0066] A FIG. 6E é um diagrama esquemático que ilustra uma divisão de árvore ternária (TT) na orientação horizontal, de acordo com uma modalidade da presente revelação;
[0067] A FIG. 7A é um diagrama esquemático que ilustra localizações nominais verticais e horizontais da amostra de luma e croma 4:2:0 em uma imagem.
[0068] A FIG. 7B é um diagrama esquemático que ilustra localizações nominais verticais e horizontais da amostra de luma e croma 4:2:2 em uma imagem.
[0069] A FIG. 7C é um diagrama esquemático que ilustra localizações nominais verticais e horizontais de amostras de luma e croma 4:4:4 em uma imagem.
[0070] A FIG. 8 é um diagrama esquemático que ilustra os pontos de mapeamento a partir do particionamento de Crominância (ou Croma) para o particionamento de Luminância (ou Luma).
[0071] A FIG. 9 é um fluxograma exemplar que ilustra um procedimento para determinar um valor de QP para um bloco no componente de Croma (ou valor de QP do bloco de croma).
[0072] A FIG. 10 é um fluxograma exemplar que ilustra o procedimento para determinar um parâmetro QP a ser inserido no fluxo de bits para o bloco atual.
[0073] A FIG. 11 é um diagrama de bloco que representa um aparelho exemplar para quantização inversa que pode ser uma parte de um decodificador.
[0074] A FIG. 12 é um diagrama de bloco que representa um aparelho exemplar para quantização que pode ser uma parte de um codificador.
[0075] A FIG. 13 é um diagrama de bloco que mostra uma estrutura do exemplo de um sistema de fornecimento de conteúdo que realiza um serviço de liberação de conteúdo.
[0076] A FIG. 14 é um diagrama de bloco que mostra uma estrutura de um exemplo de um dispositivo terminal.
[0077] A seguir, os sinais de referência idênticos se referem às características idênticas ou pelo menos funcionalmente equivalentes, se não explicitamente especificado de outro modo.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0078] 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 alterações estruturais ou lógicas não representadas nas figuras. A seguir, a 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.
[0079] 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, cada uma, que realizam uma ou mais da pluralidade de etapas), mesmo se uma 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 da pluralidade de unidades (por exemplo, uma etapa que realiza a funcionalidade de uma ou da pluralidade de unidades, ou uma pluralidade de etapas, cada uma, que realizam a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se uma ou tal pluralidade de etapas não forem explicitamente descritas ou ilustradas 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 entre si, a menos que especificamente observado de outro modo.
[0080] A codificação de vídeo tipicamente se refere ao processamento de uma sequência de imagens, que formam 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 da codificação de vídeo. A codificação de vídeo usada no presente pedido (ou presente revelação) indica tanto a codificação de vídeo quanto a 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) de 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 em comparação ao codificador para reconstruir as imagens de vídeo. As modalidades que se referem à “codificação” de imagens de vídeo (ou imagens, em geral, como será explicado mais adiante) devem ser entendidas como relacionadas à “codificação” ou “decodificação” para a sequência de vídeos. A combinação da parte de codificação e a parte de decodificação também é referida como CODEC (Codificação e Decodificação).
[0081] 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 é menor ou pior em comparação à qualidade das imagens de vídeo originais.
[0082] Os vários padrões de codificação de vídeo visto que H.261 pertence ao grupo de “codecs de vídeo híbridos com perdas” (isto é, combinar 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 da 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, transformando 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 em comparação 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 do decodificador, de modo que ambos gerem predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para o processamento, isto é, codificação dos blocos subsequentes.
[0083] Como usado neste relatório, o termo “bloco” pode ser uma parte de uma imagem ou um quadro. Para 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 na Codificação de Vídeo de 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 são limitadas a HEVC ou VVC. Pode se referir a uma CU, PU e TU. Em HEVC, uma CTU é dividida em CUs por meio do uso de uma estrutura de quadtree denotada como árvore de codificação. A decisão de codificar uma imagem área 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 em com base em uma PU. Depois de obter o bloco residual pela aplicação do 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 quadtree 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 quadtree 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 quadtree. Os nós de folha de quadtree são particionados adicionalmente por uma estrutura de árvore binária. Os nós de folha de árvore binária são chamados de unidades de codificação (CUs) e esta segmentação é usada para a 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 do bloco de codificação QTBT. Em paralelo, as partições múltiplas, por exemplo, a partição de árvore tripla também foi proposta para ser usada em conjunto com a estrutura de bloco QTBT.
[0084] Nas seguintes modalidades de um codificador 20, um decodificador 30 e um sistema de codificação 10 são descritos com base nas Figs. 1 a 3.
[0085] A Fig. 1A é um diagrama esquemático de bloco conceitual que ilustra um sistema de codificação de exemplo 10, por exemplo, um sistema de codificação de vídeo 10 que possa 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, o decodificador de vídeo 30) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar as técnicas, de acordo com vários exemplos descritos no presente pedido. Como mostrado na FIG. 1A, 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 dos dados codificados 13.
[0086] 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.
[0087] 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 do conteúdo de tela, alguns textos na tela também são considerados uma parte de uma imagem ou imagem a ser codificada) que gera o dispositivo, por exemplo, um processador de gráficos 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 tela, uma imagem de realidade virtual (VR)) e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (AR)).
[0088] 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 (algumas 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 de 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 componentes de cromaticidade ou 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 cor. Se uma imagem for monocromática, a imagem pode compreender apenas um arranjo de amostra de luminância.
[0089] Na amostragem monocromática existe apenas um arranjo de amostra, que é nominalmente considerado o arranjo de luma.
[0090] Na amostragem 4:2:0, como mostrado na Fig. 7A, cada um dos dois arranjos de croma tem metade da altura e metade da largura do arranjo de luma.
[0091] Na amostragem 4:2:2, como mostrado na Fig. 7B, cada um dos dois arranjos de croma tem a mesma altura e a metade da largura do arranjo de luma.
[0092] Na amostragem 4:4:4, como mostrado na Fig. 7C, dependendo do valor de separate_colour_plane_flag, o seguinte é aplicado:
[0093] - Se separate_colour_plane_flag for igual a 0, cada um dos dois arranjos de croma tem a mesma altura e largura que o arranjo de luma;
[0094] - De outro modo (separate_colour_plane_flag é igual a 1), os três planos de cor são separadamente processados como imagens de amostra monocromáticas.
[0095] 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 imagem 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 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 a partir 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 de 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 que ou uma parte da interface de comunicação 22.
[0096] Em distinção à unidade de pré-processamento 18 e ao 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 bruta 17.
[0097] A unidade de pré-processamento 18 é configurada para receber os dados de imagem (bruta) 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, a partir 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.
[0098] O codificador 20 (por exemplo, codificador de vídeo 20) é configurado para receber os dados de imagem pré-processados 19 e fornecer os dados de imagem codificados 21 (os detalhes adicionais serão descritos abaixo, por exemplo, com base na Fig. 2 ou Fig. 4).
[0099] 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, 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 decodificação ou armazenamento.
[0100] 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.
[0101] 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 a partir do dispositivo de origem 12 ou a partir de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados.
[0102] 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 direta 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 das mesmas, ou qualquer tipo de rede privada e pública ou qualquer tipo de combinação das mesmas.
[0103] 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, para a transmissão através de um enlace de comunicação ou rede de comunicação.
[0104] 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.
[0105] 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. 1A apontando a partir 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.
[0106] 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. 3 ou Fig. 5).
[0107] 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ída), 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, a conversão de formato de cor (por exemplo, a partir 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.
[0108] 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 (OLED), visores de plasma, projetores, visores de micro LED, visor líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer tipo de outros visores.
[0109] Embora a Fig. 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades dos dispositivos também podem compreender os dois ou ambas as funcionalidades, o dispositivo de origem 12 ou a funcionalidade correspondente e 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 implementados usando o mesmo hardware e/ou software ou por hardware e/ou software separado ou qualquer combinação dos mesmos.
[0110] Como será evidente para o técnico no assunto com base na descrição, a existência e a divisão (exata) das funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou dispositivo de destino 14 como mostrado na Fig. 1A podem variar dependendo do dispositivo e aplicação reais.
[0111] 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 implementados como qualquer um entre 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áveis em campo (FPGAs), lógica discreta, hardware ou quaisquer combinações dos mesmos. Se as técnicas forem implementadas 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 dentre os anteriores (incluindo hardware, software, uma combinação de hardware e software, etc.) pode ser considerado como um ou mais processadores. Cada um entre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dentre os quais possam ser integrados como parte de um codificador/decodificador (CODEC) combinado em um respectivo dispositivo.
[0112] 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 de dispositivos de codificação de vídeo ou aparelhos de codificação de vídeo.
[0113] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer 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 qualquer tipo sistema operacional.
[0114] 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.
[0115] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na FIG. 1A é meramente um exemplo e as técnicas do presente pedido podem ser aplicadas às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente 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 na 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 decodificação são realizadas por dispositivos que não se comunicam entre si, mas simplesmente codificam dados na memória e/ou recuperam e decodificam dados da memória.
[0116] 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.
[0117] A Fig. 1B é um diagrama ilustrativo de outro sistema de codificação de exemplo de vídeo 40 incluindo o codificador 20 da Fig. 2 e/ou o decodificador 30 da Fig. 3, de acordo com uma modalidade exemplar. O sistema 40 pode implementar técnicas, de acordo com vários exemplos descritos no presente pedido. Na implementaçã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 implementado através de circuitos lógicos 47 da(s) 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.
[0118] Como ilustrado, o(s) 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 entre si. Conforme debatido, 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.
[0119] 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 implementados através da(s) unidade(s) de processamento 46. A(s) unidade(s) de processamento 46 pode incluir lógica de circuito integrado específico da aplicação (ASIC),
processador(es) gráfico(s), processador(es) de uso geral ou semelhantes. O sistema de codificação de vídeo 40 também pode incluir processador(es) opcional(is) 43, que podem similarmente incluir lógica de circuito integrado específico da aplicação (ASIC), processador(es) gráfico(s), processador(es) de uso geral ou semelhantes. Em alguns exemplos, os circuitos lógicos 47 podem ser implementados através de hardware, hardware dedicado de codificação de vídeo ou semelhantes e, o(s) processador(es) 43 podem implementar o software de uso geral, sistemas operacionais ou semelhantes. Além disso, o(s) 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, o(s) armazenamento(s) de memória 44 pode ser implementado por memória cache. Em alguns exemplos, os circuitos lógicos 47 podem acessar o(s) armazenamento(s) de memória 44 (para a implementação de uma 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 implementação de um buffer de imagem ou semelhantes.
[0120] Em alguns exemplos, o codificador de vídeo 100 implementado através de circuitos lógicos pode incluir um buffer de imagem (por exemplo, através da(s) 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 comunicativamente acoplada ao buffer de imagem. A unidade de processamento gráfico pode incluir o codificador de vídeo 100 como implementado através de circuitos lógicos 47 para incorporar os vários módulos como discuto em relação à FIG. 2 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, conforme debatido neste relatório.
[0121] O decodificador de vídeo 30 pode ser implementado em uma maneira similar, como implementado através de circuitos lógicos 47 para incorporar os vários módulos, conforme debatido em relação ao decodificador 30 da FIG. 3 e/ou qualquer outro sistema de decodificador ou subsistema descrito neste relatório. Em alguns exemplos, o decodificador de vídeo 30 pode ser implementado através de circuitos lógicos que podem incluir um buffer de imagem (por exemplo, através da(s) 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 comunicativamente acoplada ao buffer de imagem. A unidade de processamento gráfico pode incluir o decodificador de vídeo 30 como implementado através de circuitos lógicos 47 para incorporar os vários módulos, conforme debatido em relação à FIG. 3 e/ou qualquer outro sistema de decodificador ou subsistema descrito neste relatório.
[0122] 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 de dados de vídeo. Conforme debatido, 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, conforme debatido neste relatório, tal como dados associados à partição de codificação (por exemplo, coeficientes de transformada ou coeficientes de transformada quantizados, indicadores opcionais (conforme debatido), 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.
CODIFICADOR E MÉTODO DE CODIFICAÇÃO
[0123] A Fig. 2 mostra um diagrama de bloco esquemático/conceitual de um codificador de vídeo de exemplo 20 que é configurado para implementar as técnicas do presente pedido. No exemplo da Fig. 2, 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 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. 2, 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.
[0124] 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 direto 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, a unidade de processamento de predição 260 formam uma trajetória de sinal indireto do codificador, em que a trajetória de sinal indireto do codificador corresponde à trajetória de sinal do decodificador (ver o decodificador 30 na Fig. 3).
[0125] O codificador 20 é configurado para receber, por exemplo, pela entrada 202, uma imagem 201 ou um bloco 203 da imagem 201, por exemplo, a 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 de imagem atual ou bloco de imagem a ser codificado, e a imagem 201 como a 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).
PARTICIONAMENTO
[0126] As modalidades do codificador 20 podem compreender uma unidade de particionamento (não representada na Fig. 2) configurada para particionar a imagem 201 em uma pluralidade de blocos, por exemplo, blocos como o bloco 203, tipicamente em uma pluralidade de blocos não sobrepostos. 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 mudar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens e particionar cada imagem nos blocos correspondentes.
[0127] 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.
[0128] 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 no caso de uma imagem monocromática 201) ou três arranjos de amostra (por exemplo, um luma e dois arranjos de croma no caso de uma imagem colorida 201) ou qualquer outro número e/ou tipo de arranjos dependendo do formato de cor aplicado. O número de amostras na direção horizontal e vertical (ou eixo) do bloco 203 define o tamanho do bloco 203.
[0129] O codificador 20 como mostrado na Fig. 2 é configurado para codificar a imagem 201, bloco a bloco, por exemplo, a codificação e predição são realizadas por bloco 203.
[0130] A unidade de particionamento pode ser configurada para particionar uma imagem a partir de uma sequência de vídeos em uma sequência de unidades de árvore de codificação (CTUs), e a unidade de particionamento pode particionar (ou dividir) uma unidade de árvore de codificação (CTU) em partições menores, por exemplo, menores blocos de tamanho quadrado ou retangular. Para uma imagem que tem três arranjos de amostra, uma CTU consiste em um bloco N×N de amostras de luma junto com dois blocos correspondentes de amostras de croma. O tamanho máximo permitido do bloco luma em uma CTU é especificado como 128×128 na codificação de vídeo versátil em desenvolvimento (VVC), mas pode ser especificado para ter o valor em vez de 128x128 no futuro, por exemplo, 256x256. As CTUs de uma imagem podem ser aglomeradas/agrupadas como grupo de fatias/telhas, ladrilhos ou tijolos. Um ladrilho cobre uma região retangular de uma imagem, e um ladrilho pode ser dividido em um ou mais tijolos. Um tijolo consiste em várias linhas de CTU dentro de um ladrilho. Um ladrilho que não é particionado em múltiplos tijolos pode ser referido como um tijolo. Entretanto, um tijolo é um subconjunto verdadeiro de um ladrilho e não é referido como um ladrilho. Existem dois modos de grupos de ladrilho com suporte na VVC, isto é, o modo de divisão de fatia de varredura raster/grupo de ladrilhos o modo de fatia retangular. No modo de grupo de ladrinhos de varredura raster, um grupo de fatias/ladrilhos contém uma sequência de ladrilhos na varredura raster de ladrilho de uma imagem. No modo de fatia retangular, uma fatia contém vários tijolos de uma imagem que forma coletivamente uma região retangular da imagem. Os tijolos dentro de uma fatia retangular estão na ordem da varredura raster de ladrilho 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 particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco raiz, por exemplo, no nível de árvore raiz 0 (nível hierárquico 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 hierárquico 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 hierárquico 2, profundidade 2), etc. até que o particionamento seja concluído, por exemplo, pelo fato de que um critério de encerramento é 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 blocos de folha ou nós de folha da árvore. Uma árvore usando o particionamento em duas partições é referida como árvore binária (BT), uma árvore usando o particionamento em três partições é referida como árvore ternária (TT) e uma árvore usando o particionamento em quatro partições é referida como quadtree (QT).
[0131] 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 coloração 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. Uma 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 coloração 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.
[0132] 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 quadtree denotada como árvore de codificação. A decisão de codificar uma imagem área usando predição de imagem inter (temporal) ou imagem intra (espacial) é feita no nível 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 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 pela aplicação do processo de predição com base no tipo de divisão PU, uma CU de folha pode ser particionada em unidades de transformada (TUs), de acordo com outra estrutura de quadtree similar à árvore de codificação para a CU.
[0133] 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 quadtree 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 de folha da á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 de 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 no quadtree com a estrutura do bloco de codificação de árvore de múltiplos tipos aninhada.
A exceção ocorre quando o comprimento de transformada máximo suportado é menor do que a largura ou altura do componente de coloração da CU.
A VVC desenvolve um mecanismo de sinalização exclusivo das informações de divisão de partição em quadtree com estrutura de árvore de codificação da árvore de múltiplos tipos aninhada.
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ó de folha de árvore quaternária (quando suficientemente grande para permitir isso) é, em seguida, particionado adicionalmente por uma estrutura de árvore de múltiplos tipos.
Na estrutura de árvore de múltiplos tipos, uma primeira flag (mtt_split_cu_flag) é sinalizada para indicar se o nó é particionado adicionalmente; quando um nó é particionado adicionalmente, uma segunda flag (mtt_split_cu_vertical_flag) é sinalizada para indicar a direção de divisão e, em seguida, uma terceira flag (mtt_split_cu_binary_flag) é sinalizada 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 predefinida ou uma tabela.
Deve ser observado, para um determinado projeto, por exemplo, Bloco luma 64×64 e projeto de tubulação de Croma 32×32 em decodificadores de hardware VVC, a divisão TT é proibida quando a largura ou altura de um bloco luma de codificação é maior do que 64. A divisão TT também é proibida quando a largura ou altura de um bloco de codificação croma é maior do que 32. O projeto de tubulação irá dividir uma imagem nas 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 por múltiplos estágios de tubulação simultaneamente.
O tamanho de VPDU é aproximadamente proporcional ao tamanho do 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 o tamanho máximo bloco de transformada (TB). Entretanto, em VVC, a partição de árvore ternária (TT) e árvore binária (BT) pode levar ao aumento dos tamanhos de VPDUs.
[0134] Além disso, deve ser observado que, quando uma parte de um bloco de nó de árvore excede o limite da imagem na parte direita ou inferior, o bloco de nó de árvore é forçado a ser dividido até que todas as amostras da cada CU codificada estejam localizadas dentro dos limites da imagem.
[0135] Como um exemplo, a ferramenta de Sub-Partições Intra (ISP) pode dividir os blocos luma preditos de modo intra verticalmente ou horizontalmente em 2 ou 4 sub-partições dependendo do tamanho de bloco.
CÁLCULO RESIDUAL
[0136] 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 dos 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
[0137] 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.
[0138] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações inteiras de DCT/DST, tais como as transformadas 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 pelas transformadas diretas e inversas, os fatores de escala adicionais são aplicados como parte do processo de transformada. Os fatores de escala são tipicamente escolhidos com base em 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 a precisão e custos de implementaçã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.
QUANTIZAÇÃO
[0139] A unidade de quantização 208 é configurada para quantizar os coeficientes de transformada 207 para obter os coeficientes de transformada quantizados 209, por exemplo, pela aplicação da 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 a alguns ou todos os coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n-bits pode ser arredondado para um coeficiente de transformada de m-bits durante a quantização, onde n é maior do que m. O grau de quantização pode ser modificado ajustando um parâmetro de quantização (QP). Por exemplo, para quantização escalar, diferentes escalas podem ser aplicadas para obter uma quantização mais fina ou mais grosseira. Tamanhos menores da etapa de quantização correspondem à quantização mais fina, enquanto os maiores tamanhos da etapa de quantização correspondem à quantização mais grosseira. O tamanho da 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 predefinido dos tamanhos da etapa de quantização aplicável. Por exemplo, pequenos parâmetros de quantização podem corresponder à quantização fina (pequenos tamanhos da etapa de quantização) e grandes parâmetros de quantização podem corresponder à quantização grosseira (maiores tamanhos da etapa de quantização) ou vice-versa. A quantização pode incluir a divisão por um tamanho da etapa de quantização e correspondente ou desquantização inversa, por exemplo, pela quantização inversa 210, pode incluir multiplicação pelo tamanho da 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 da etapa de quantização. Em geral, o tamanho da etapa de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação do ponto fixo de uma equação incluindo divisão. Os fatores de escala adicionais podem ser introduzidos para 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 do ponto fixo da equação para o tamanho da etapa de quantização e parâmetro de quantização. Em uma implementação do exemplo, a escala da transformada inversa e desquantização pode ser combinada. Alternativamente, as tabelas de 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 perdas, em que a perda aumenta com o aumento dos tamanhos da etapa de quantização.
[0140] 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 os 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 da 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.
[0141] 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 de cosseno discreta inversa (DCT) ou transformada de seno discreta inversa (DST), para obter um bloco de transformada inversa 213 no domínio de amostra. O bloco de transformada inversa 213 também pode ser referido como bloco de transformada inversa desquantizado 213 ou bloco residual de transformada inversa 213.
[0142] 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 dos valores de amostra do bloco residual reconstruído 213 e dos valores de amostra do bloco de predição 265.
[0143] Opcionalmente, 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 blocos 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, a predição intra.
[0144] As modalidades do codificador 20 podem ser configuradas, tal que, por exemplo, a unidade de buffer 216 não seja apenas usada 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. 2), e/ou, tal que, por exemplo, a unidade de buffer 216 e a unidade de buffer de imagem decodificada 230 formem um buffer. As modalidades adicionais podem ser configuradas para utilizar blocos filtrados 221 e/ou blocos ou amostras a partir do buffer de imagem decodificada 230 (ambos não mostrados na Fig. 2) como entrada ou base para a predição intra 254.
[0145] 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 as 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. 2 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 220 pode ser implementada 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.
[0146] As modalidades do codificador 20 (respectivamente, a unidade de filtro loop 220) podem ser configuradas para emitir os parâmetros de filtro loop (tais como as informações de deslocamento adaptativa da amostra), por exemplo, diretamente ou entropia codificada através da unidade de codificação de entropia 270 ou qualquer outra unidade de codificação de entropia, de modo que, por exemplo, um decodificador 30 possa receber e aplicar os mesmos parâmetros de filtro loop para a decodificação.
[0147] 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 entre 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 configurado adicionalmente para armazenar outros blocos previamente filtrados, por exemplo, previamente reconstruídos e blocos 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 e amostras de referência correspondentes) e/ou um imagem atual parcialmente reconstruída (e, correspondente, blocos e amostras de referência), por exemplo, para a predição inter. Em algum exemplo, se o bloco reconstruído 215 for reconstruído, mas sem filtragem no loop, o buffer de imagem decodificada (DPB) 230 é configurado para armazenar o bloco reconstruído 215.
[0148] 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ída, por exemplo, amostras de referência da mesma imagem (atual) do buffer 216 e/ou dados de imagem de referência
231 a partir de uma ou uma pluralidade de imagens previamente decodificadas a partir 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 predito de modo inter 245 ou um bloco predito de modo intra 255.
[0149] 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.
[0150] As modalidades da unidade de seleção de modo 262 podem ser configuradas para selecionar o modo de predição (por exemplo, daqueles suportados 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 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 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.
[0151] A seguir, 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.
[0152] Como descrito acima, o codificador 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ideal a partir de um conjunto de modos de predição (predeterminados). Os conjuntos de modos de predição podem compreender, por exemplo, modos de predição intra e/ou modos de predição inter.
[0153] O conjunto de modos de predição intra pode compreender 35 diferentes modos de predição intra, por exemplo, modos não direcionais como o 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, não direcionais como o modo DC (ou meio) e modo planar, ou modos direcionais, por exemplo, como definido em H.266 em desenvolvimento.
[0154] O conjunto de (ou possível) 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 for 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 e/ou um quarto de pel ou não.
[0155] Além dos modos de predição acima, o modo de salto e/ou modo direto pode ser aplicado.
[0156] A unidade de processamento de predição 260 pode ser configurada adicionalmente para particionar o bloco 203 em partições de bloco menores ou sub-blocos, por exemplo, usando iterativamente o particionamento quadtree (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 aplicados a cada uma das partições de bloco ou sub-blocos.
[0157] A unidade de predição inter 244 pode incluir a unidade de estimativa de movimento (ME) (não mostrada na Fig. 2) e a 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 de imagem atual 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 ser parte ou formar uma sequência de imagens que forma uma sequência de vídeos.
[0158] O codificador 20 pode ser, por exemplo, configurado para selecionar um bloco de referência a partir de uma pluralidade de blocos de referência das mesmas ou diferentes imagens 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).
[0159] 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 245. A compensação de movimento, realizada pela unidade de compensação de movimento (não mostrada na Fig. 2), 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 a partir de amostras de pixel conhecidas, aumentam assim, potencialmente, o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Após receber o vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento 246 pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência. A unidade de compensação de movimento 246 também pode gerar elementos de sintaxe associados aos blocos e à fatia de vídeo para o uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo.
[0160] A unidade de predição intra 254 é configurada para obter, por exemplo, receber, o bloco de imagem 203 (bloco de imagem atual) e um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos vizinhos, da mesma imagem para estimativa intra. O codificador 20 pode ser, por exemplo, configurado para selecionar um modo de predição intra a partir de uma pluralidade de modos de predição intra (predeterminados).
[0161] 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 de imagem atual 203) ou distorção de taxa mínima.
[0162] A unidade de predição intra 254 é configurado adicionalmente 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.
[0163] A unidade de codificação de entropia 270 é configurada para aplicar um algoritmo de codificação de entropia ou esquema (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema VLC adaptativa do contexto (CALVC), um esquema de codificação aritmética, uma codificação aritmética binária adaptativa do contexto (CABAC), codificação aritmética binária adaptativa do contexto com base em sintaxe (SBAC), codificação 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 os 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 configurada adicionalmente para codificar por entropia os outros elementos de sintaxe para a fatia de vídeo atual sendo codificada.
[0164] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador não baseado em transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para determinados blocos ou quadros. Em outra implementaçã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.
[0165] A Fig. 3 mostra um decodificador de vídeo 30 exemplar que é configurado para implementar 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 a 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 blocos de imagem de uma fatia de vídeo codificada e elementos de sintaxe associados a partir do codificador de vídeo 100.
[0166] No exemplo da Fig. 3, 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 acumulador 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. 2.
[0167] A unidade de decodificação de entropia 304 é configurada para realizar 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 mostrado na Fig. 3), 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 outro elemento de sintaxes. A unidade de decodificação de entropia 304 é configurada adicionalmente 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 o nível de bloco de vídeo.
[0168] 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.
[0169] 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.
[0170] Quando a fatia de vídeo é codificada como uma fatia codificada de modo intra (I), a unidade de predição intra 354 da unidade de processamento de predição 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 os dados dos 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, a 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 em outros elementos de sintaxe recebidos a partir 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 quadro de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base nas imagens de referência armazenadas no DPB 330.
[0171] 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 de vídeo atual 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) 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.
[0172] 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 inversa pode incluir o uso 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.
[0173] 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 inverso conceitualmente similar aos coeficientes de transformada, de modo a produzir os blocos residuais no domínio de pixel.
[0174] 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.
[0175] 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. Em um exemplo, a unidade de filtro loop 320 pode ser configurada para realizar qualquer combinação das técnicas de filtragem descritas adiante. A unidade de filtro loop 320 é 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 filtros de suavização ou filtros colaborativos. Embora a unidade de filtro loop 320 seja mostrada na FIG. 3 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 320 pode ser implementada como um filtro de pós-loop.
[0176] 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 as imagens de referência usadas para a compensação de movimento subsequente.
[0177] O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, através da saída 312, para apresentação ou visualização por um usuário.
[0178] 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 atual sem a unidade de filtragem de loop 320. Por exemplo, um decodificador não baseado 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 implementaçã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.
[0179] A FIG. 4 é 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 implementar 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. 1A ou um codificador, tal como o codificador de vídeo 20 da FIG. 1A. 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. 1A ou do codificador de vídeo 20 da FIG. 1A como descrito acima.
[0180] 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, as unidades receptoras 420, as unidades transmissoras 440 e as portas de egresso 450 para a saída ou entrada de sinais ópticos ou elétricos.
[0181] O processador 430 é implementado por hardware e software. O processador 430 pode ser implementado 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 implementa as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 470 implementa, 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 diferente estado. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador
430.
[0182] 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 de dados de transbordamento, 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 a 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).
[0183] A Fig. 5 é um diagrama de bloco simplificado de um aparelho 500 que pode ser usado como ou tanto pelo dispositivo de origem 310 quanto pelo dispositivo de destino 320 a partir da Fig. 1, de acordo com uma modalidade exemplar. O aparelho 500 pode implementar técnicas deste presente pedido descrito acima. O aparelho 500 pode estar na forma de um sistema computacional incluindo múltiplos dispositivos computacionais, 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.
[0184] 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 implementaçõ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.
[0185] 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 implementação. Qualquer outro tipo adequado do dispositivo de armazenamento pode ser usado como a memória 504. A memória 504 pode incluir 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 aplicação 510, os programas de aplicação 510 incluindo pelo menos um programa que permita que o processador 502 realize os métodos descritos neste relatório. Por exemplo, os programas de aplicação 510 podem incluir aplicações 1 através de N, que incluem adicionalmente uma aplicação de codificação de vídeo que realiza os métodos descritos neste relatório. O aparelho 500 também pode incluir a 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 significante de informações, elas podem ser armazenadas completamente ou em partes no armazenamento secundário 514 e carregadas na memória 504 como necessário para o processamento.
[0186] 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 combine um visor com um elemento sensível ao toque que é operável para detector entradas de toque. O vidor 518 pode ser acoplada ao processador 502 através do barramento 512. Outros dispositivos de saída que permitem que um usuário programe ou, de outro modo, utilize o aparelho 500 podem ser fornecidos além ou como uma alternativa para o visor
518. Quando o dispositivo de saída é ou inclui um visor, o visor pode ser implementada de várias maneiras, incluindo 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 orgânica de LED (OLED).
[0187] 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 existente ou desenvolvido no futuro que possa 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 tal que seja direcionado ao 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, tal que o campo de visão inclui uma área que é diretamente adjacente ao visor 518 e da qual o visor 518 é visível.
[0188] 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 tal que seja direcionado ao usuário que opera o aparelho 500 e possa ser configurado para receber sons, por exemplo, fala ou outras elocuções, feitas pelo usuário enquanto o usuário opera o aparelho 500.
[0189] Embora a FIG. 5 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 através de múltiplas máquinas, tais como uma memória com base em rede ou memória em múltiplas máquinas que realiza 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 ser, assim, implementado em uma ampla variedade de configurações.
[0190] O codificador de vídeo 20 pode dividir o quadro de vídeo de entrada em blocos antes da codificação. O termo “bloco” nesta revelação é usado para qualquer tipo de bloco ou para qualquer bloco de profundidade, por exemplo, o termo “bloco” é incluído, mas não é limitado ao bloco raiz, bloco, sub- bloco, nó de folha e etc. Os blocos a serem codificados não têm necessariamente o mesmo tamanho. Uma imagem pode incluir blocos de diferentes tamanhos e os rasters de bloco de diferentes imagens de sequência de vídeos também podem ser diferentes. As FIGs. 6A a 6E ilustram o modo de divisão da unidade de árvore de codificação (CTU)/unidade de codificação (CU) na VVC.
[0191] A FIG. 6A ilustra uma estrutura de partição de bloco adotando uma divisão de quadtree (QT). A QT é uma estrutura de árvore para a partição do bloco em que um nó de tamanho 4Mx4N pode ser dividido em quatro nós filhos de tamanho 2Mx2N.
[0192] A FIG. 6B ilustra uma estrutura de partição de bloco adotando uma divisão de árvore binária (BT) na orientação vertical.
[0193] A FIG. 6C ilustra uma estrutura de partição de bloco adotando uma divisão de árvore binária (BT) na orientação horizontal. A BT é uma estrutura de árvore para a partição do bloco em que um nó de tamanho 4Mx4N pode ser dividido horizontalmente em dois nós filhos de tamanho 4Mx2N ou dividido verticalmente em dois nós filhos de tamanho 2Mx4N.
[0194] A FIG. 6D ilustra uma estrutura de partição de bloco adotando uma divisão de árvore ternária (TT) na orientação vertical.
[0195] A FIG. 6E ilustra a estrutura de partição de bloco adotando uma divisão de árvore ternária (TT) na orientação horizontal. A TT é uma estrutura de árvore para a partição do bloco em que um nó de tamanho 4Mx4N pode ser dividido horizontalmente em três nós filhos de tamanho 4MxN, 4Mx2N e 4MxN, respectivamente; ou dividido verticalmente em três nós filhos de tamanho Mx4N, 2Mx4N e Mx4N, respectivamente. Entre os três nós filhos mostrados na FIG. 6D ou FIG. 6E, o maior nó está posicionado no centro.
[0196] Quadtree mais árvore binária (QTBT) é uma estrutura de quadtree mais árvore binária em que um bloco é particionado primeiro usando divisão de quadtree, em seguida, cada nó filho de quadtree pode ser particionado adicionalmente usando a divisão de árvore binária. Quadtree mais árvore binária ou árvore ternária (QT-BT/TT) é uma estrutura de quadtree mais árvore binária ou árvore ternária em que um bloco é particionado primeiro usando divisão de quadtree, em seguida, cada nó filho de quadtree pode ser particionado adicionalmente usando divisão de árvore binária ou árvore ternária.
[0197] Para um bloco associado a uma profundidade de partição particular, o codificador 20 determina que o tipo de partição (incluindo nenhuma divisão adicional) é usado e sinaliza o tipo de partição determinado explícita ou implicitamente (por exemplo, o tipo de partição pode ser derivado a partir de regras predeterminadas) para decodificador 30. O codificador 20 pode determinar o tipo de partição para utilizar, por exemplo, com base em custos de distorção de taxa de verificação para o bloco usando diferentes tipos de partição.
[0198] O termo “bloco” na presente invenção é um termo generalizado que inclui, mas não é limitado ao bloco raiz, bloco, sub-bloco, nó de folha e etc.
[0199] Os padrões de codificação de vídeo têm introduzido codificação de árvore dupla (DT) além da codificação de árvore única (ST) que foram usadas no padrão HEVC/H.265. ST ou DT são selecionadas com base em tipo de fatia ou quadro (por exemplo, intra-quadro ou inter-quadro, intra-fatia ou inter-fatia). O modo de codificação de árvore única, componentes de Luminância (ou Luma) e Crominância (ou Croma) compartilham a mesma árvore de particionamento. No modo de codificação de árvore dupla, componentes de Luminância (ou Luma) e Crominância (ou Croma) são divididos separadamente, isto é, usando o esquema de particionamento independente para os componentes de Luma e Croma.
[0200] Um nível de compressão de imagem é controlado pelo parâmetro de quantização (QP) que pode ser fixo para toda a imagem (por exemplo, por meio do uso de um mesmo parâmetro de quantização valor), ou pode ter diferentes valores de parâmetro de quantização para diferentes regiões da imagem.
[0201] Uma solução para determinar o parâmetro de quantização é a sinalização do parâmetro de quantização (QP) no nível de unidade de codificação (CU). Este método permite a variação de forma flexível do valor de QP para diferentes regiões da imagem, especialmente em algumas profundidades de CU (isto é, profundidade de partição, que define as camadas de partição). Para sinalizar o QP para determinada região da imagem, um método de sinalização QP delta é usado. Neste método, a diferença (isto é, um QP delta) entre um QP predito (𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 ) e um QP real da região atual é sinalizada através de fluxo de bits. O valor delta de QP e sua granularidade (por exemplo, o tamanho dos blocos particionados) são definidos por uma flag de controle de liga/desliga e uma profundidade máxima (por exemplo, elemento(s) de sintaxe de QP delta) em um conjunto de parâmetros de imagem (PPS). Para todas as CUs com alta profundidade de partição, o valor delta de QP não é sinalizado, mas herdar das CUs de nível superior. No padrão HEVC, um valor de QP para o bloco de codificação (CB) de Luminância (ou Luma) é derivado com base no QP predito (𝑞𝑞𝑞𝑞𝑞𝑞_𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃), que por sua vez depende da localização CB no quadro/fatia/ladrilho. Em seguida, a variável 𝑄𝑄𝑄𝑄𝑌𝑌 é derivado, de acordo com a seguinte Equação 1: QpY = ((qPY_PRED + CuQpDeltaVal + 52 + 2 ∗ QpBdOffsetY) %(52 + QpBdOffsetY)) − QpBdOffsetY (Equação 1)
[0202] Em que 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 é um valor delta de QP que é sinalizado ou derivado para uma unidade de codificação (CU); 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄 é um deslocamento de constante dependente da profundidade de bits de Luma (a partir do padrão HEVC, este termo corresponde à “a profundidade de bits das amostras do arranjo de luma”). Finalmente, o parâmetro de quantização 𝑄𝑄𝑝𝑝𝑌𝑌′ do componente de luminância (ou luma) pode ser calculado pela seguinte Equação 2: Qp′Y = QpY + QpBdOffsetY (Equação 2)
[0203] As variáveis 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 e 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 são definidas igual ao valor de 𝑄𝑄𝑄𝑄𝑄𝑄, como especificado em uma tabela de quantização (por exemplo, a Tabela 1) com base no índice 𝑞𝑞𝑞𝑞𝑞𝑞 igual a 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 ou 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞, respectivamente, e 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 e 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 são derivados, em seguida, pela Equação 3: qPiCb = Clip3(−QpBdOffsetC, 57, QpY + pps_cb_qp_offset + slice_cb_qp_offset) qPiCr = Clip3(−QpBdOffsetC, 57, QpY + pps_cr_qp_offset + slice_cr_qp_offset) (Equação 3)
[0204] Em que 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄 é um deslocamento de constante dependente da profundidade de bits de Croma (a partir do padrão HEVC, este termo corresponde à “a profundidade de bits das amostras do arranjo de croma”); 𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 ou 𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 é um deslocamento fixo para o componente Cb ou componente Cr sinalizado por um conjunto de parâmetros de imagem (PPS), e 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 ou 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 é um deslocamento fixo para o componente Cb ou componente Cr que é sinalizado em um cabeçalho de fatia. x; z < 𝑥𝑥 Clip3(x, y, z) = � y; z > 𝑦𝑦 (Equação 4) z; de outro modo 𝑞𝑞𝑞𝑞𝑞𝑞 < 30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 >43 𝑄𝑄𝑄𝑄𝑄𝑄 = 𝑞𝑞𝑞𝑞𝑞𝑞 29 30 31 32 33 33 34 34 35 35 36 36 37 37 = 𝑞𝑞𝑞𝑞𝑞𝑞 - 6 Tabela 1 - Especificação de 𝑸𝑸𝑸𝑸𝑸𝑸 como uma função de 𝒒𝒒𝒒𝒒𝒒𝒒 em HEVC como um exemplo
[0205] Os parâmetros de quantização de Croma para os componentes 𝐶𝐶𝐶𝐶 e 𝐶𝐶𝐶𝐶 (𝑄𝑄𝑄𝑄′𝐶𝐶𝐶𝐶 e 𝑄𝑄𝑄𝑄′𝐶𝐶𝐶𝐶, são derivados como a seguinte Equação 5: Qp′Cb = qPCb + QpBdOffsetC Qp′Cr = qPCr + QpBdOffsetC (Equação 5)
[0206] Deve ser observado que o mecanismo QP delta descrito acima trabalha apenas para a árvore única (ST) e não pode ser aplicado para a árvore dupla (DT) pelo fato de que os componentes de Luminância (ou Luma) e Crominância (ou Croma) podem utilizar diferentes árvores de particionamento.
[0207] Em geral, a(s) modalidade(s) da presente invenção se refere ao campo de codificação de vídeo. Em específico, a(s) modalidade(s) da invenção se refere a uma sinalização QP delta que é uma parte do aparelho de desquantização em um dispositivo de decodificação de vídeo. A(s) modalidade(s) da presente invenção propõe uma maneira diferente de aplicar o mecanismo QP delta se a árvore dupla (DT) for aplicada.
[0208] Similar ao mecanismo QP delta descrito acima que trabalha apenas para a árvore única (ST), independentemente do tipo de árvore (ST ou DT), os parâmetros de quantização de Croma para os componentes Cb e Cr são derivados com base no valor 𝑞𝑞𝑞𝑞𝑞𝑞, de acordo com a Equação 6: Qp′Cb = qPCb + QpBdOffsetC Qp′Cr = qPCr + QpBdOffsetC (Equação 6)
[0209] Onde 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 e 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 são derivados com base em uma tabela de quantização ou em tabela de mapeamento (por exemplo, a Tabela 1) e dependem do valor 𝑞𝑞𝑞𝑞𝑞𝑞. Ao contrário de uma sinalização QP delta para a árvore única, as presentes modalidades da invenção assumem o cálculo do valor 𝑞𝑞𝑞𝑞𝑞𝑞 para o componente de Crominância (ou Croma) independentemente do tipo de árvore (por exemplo, árvore única ou árvore tripla), de acordo com a seguinte Equação 7: qPiCb = Clip3(−QpBdOffsetC, 69, QpCbasic + pps_cb_qp_offset + slice_cb_qp_offset) qPiCr = Clip3(−QpBdOffsetC, 69, QpCbasic + pps_cr_qp_offset + slice_cr_qp_offset) (Equação 7)
[0210] Em que 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 é um valor de QP do bloco de Croma básico que depende do valor 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 e pode ser calculado de maneiras diferentes descritas abaixo.
[0211] Deve ser observado que a constante 69 na Equação 7 do cálculo 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 e 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 é selecionada, de acordo com uma tabela de quantização (por exemplo, a Tabela 1) e assume QP 63 como o máximo deixado, então esta constante é calculada como o valor de QP máximo adicionado à diferença máxima entre 𝑞𝑞𝑞𝑞𝑞𝑞 e 𝑄𝑄𝑄𝑄𝑄𝑄. No caso geral, esta constante pode ser predefinida ou sinalizada em alguns valores.
[0212] O método de codificação de árvore dupla (DT) assume que os componentes de Luma e Croma têm diferentes árvores de partição e cada uma possui sua árvore de particionamento. Pode ser que um bloco de Croma (isto é, um bloco no componente de crominância) corresponda a mais do que um bloco de Luma (isto é, um bloco no componente de luminância) ou vice-versa. A Figura 8 demonstra um exemplo para subamostragem de Croma 4:2:0, onde todo o bloco de Cromo corresponda à múltiplos blocos de Luma particionados. Os números na figura representam pontos colocalizados (pixels) entre componentes de Luma e Croma (ou planos).
[0213] A Fig. 9 é um fluxograma exemplar que ilustra um procedimento para realizar a quantização inversa em um bloco atual de uma imagem. Este procedimento pode ser realizado por um decodificador. A imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e o componente de crominância são particionados em múltiplos blocos por árvores de partição separadas.
[0214] Etapa 902: obter um ou mais valor de parâmetro de quantização, QP existente a partir de um fluxo de bits recebido, em que o um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância.
[0215] Nesta etapa, os valores de QP existentes se referem ao bloco atual (por exemplo, o bloco a ser realizado pela quantização inversa). Apenas como um exemplo, tais valores de QP existentes podem compreender pelo menos um dentre os seguintes: o valor de QP para um bloco colocalizado no componente de Luma, os valores de QP de um ou mais blocos vizinhos do bloco atual no componente de Croma e os valores de QP de um ou mais blocos vizinhos do bloco colocalizado no componente de Luma.
[0216] Um bloco colocalizado no componente de Luma é um bloco que tem relação de mapeamento para o bloco atual no componente de Croma.
[0217] Etapa 904: determinar um valor de QP para o bloco atual no componente de Crominância (ou Croma) com base no um ou mais valores de QP existentes.
[0218] Existem diferentes conjuntos de métodos para determinar o valor de QP para o bloco no componente de Croma (ou valor de QP do bloco de croma, isto é, 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 ,). Em resumo, um primeiro conjunto de métodos foca em determinar o valor de QP do bloco de Croma com base nos valores de QP relacionados existentes (por exemplo, para ser observado como um predição),
um segundo conjunto de métodos é para determinar o valor de QP do bloco de Croma com base nos valores de QP relacionados existentes (por exemplo, para ser observado como uma predição), e um valor delta de QP de crominância sinalizado no fluxo de bits recebido (por exemplo, para ser observado como um delta), um terceiro conjunto de métodos é para determinar o valor de QP do bloco de Croma com base nos valores de QP relacionados existentes (por exemplo, para ser observado como uma predição) e um valor de deslocamento de QP de crominância sinalizado no fluxo de bits recebido (por exemplo, para ser observado como um deslocamento de ajuste).
[0219] Etapa 906: realizar a quantização inversa no bloco atual no componente de crominância por meio do uso do valor de QP determinado.
[0220] Nesta etapa, depois de determinar o valor de QP para o bloco atual no componente de crominância (ou valor de QP do bloco de Croma), a quantização inversa é realizada no bloco no componente de crominância.
[0221] A Fig. 10 é um fluxograma exemplar que ilustra um procedimento para realizar a quantização inversa em um bloco atual de uma imagem. Este procedimento pode ser realizado por um codificador.
[0222] Etapa 1010: nesta etapa, a quantização do bloco atual no componente de crominância é realizada usando um QP determinado. O QP pode ser determinado, por exemplo, por um ajuste de usuário e/ou por otimização de distorção de taxa ou semelhantes.
[0223] Etapa 1020: um ou mais valores de parâmetro de quantização, QP existentes são obtidos. Estes valor(es) QP existente(s) também são incluídos em um fluxo de bits. Um ou mais valores de QP existentes se referem ao bloco atual no componente de crominância.
[0224] Etapa 1030: o parâmetro QP para o bloco atual no componente de crominância é determinado/representado com base no um ou mais valores de QP existentes e no referido valor de QP determinado. Em particular, para o propósito de transmitir o valor do QP para o bloco atual no componente de crominância (o QP determinado), um parâmetro é incluído no fluxo de bits, em que o parâmetro é determinado usando um ou mais valores de QP existentes. A utilização pode ser realizada subtraindo um ou mais valores de QP existentes do QP determinado ou de outra maneira, por exemplo, por uma fórmula que também inclui parâmetros adicionais.
[0225] Etapa 1040: o parâmetro QP, em seguida, é incluído no fluxo de bits. A inclusão no fluxo de bits pode compreender adicionalmente a codificação de entropia, tal como códigos inteiros ou códigos aritméticos ou quaisquer outros códigos de comprimento variável. O código de entropia pode ser adaptativo ao contexto. Entretanto, estes são apenas exemplos e a presente revelação pode trabalhar com qualquer tipo de codificação incluindo a codificação de comprimento fixo.
[0226] De acordo com uma modalidade, os aparelhos são fornecidos para quantização e quantização inversa, que podem ser usadas nos respectivos codificadores e decodificadores. Eles têm os recursos correspondentes aos métodos de codificação e decodificação acima.
[0227] Em particular, um aparelho para quantização inversa de um bloco atual de uma imagem, em que a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos. O aparelho é ilustrado na Figura 11 como aparelho 1100. Inclui adicionalmente as seguintes unidades funcionais (circuitos):
[0228] Um analisador de fluxo de bits (também referido como unidade de análise de fluxo de bits (ou circuitos)) 1110 para obter um ou mais valores de parâmetro de quantização, QP, existentes a partir de um fluxo de bits. Um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância. O componente de crominância pode ser qualquer um ou mais dos componentes de crominância.
[0229] Uma unidade de determinação de QP (ou circuitos) 1120 para determinar um valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes.
[0230] Um quantizador inverso (também referido como a unidade de quantização inversa (ou circuitos)) 1130 para realizar a quantização inversa no bloco atual no componente de crominância por meio do uso do valor de QP determinado.
[0231] Também é fornecido um aparelho 1200 mostrado na Figura 12 para quantização de um bloco atual de uma imagem. A imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos. O aparelho compreende:
[0232] Um quantizador (também referido como a unidade de quantização (ou circuitos)) 1210 para realizar a quantização no bloco atual no componente de crominância por meio do uso de um valor de QP determinado.
[0233] Uma unidade de busca (ou circuitos) 1220 para obter um ou mais valores de parâmetro de quantização, QP existentes e incluir um ou mais QPs existentes em um fluxo de bits, em que o um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância.
[0234] Uma unidade de determinação de QP (ou circuitos) 1230 para determinar um parâmetro QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e no referido valor de QP determinado.
[0235] Uma unidade de geração de fluxo de bits (ou circuitos, também referidos como gerador de fluxo de bits) 1240 para incluir o parâmetro QP no fluxo de bits.
[0236] Abaixo estão as modalidades para determinar o valor de QP do bloco de Croma. I. Determinar o valor de QP do bloco de Croma com base em um ou mais valores de QP existentes relacionados
[0237] No primeiro conjunto de métodos, três grupos de métodos são fornecidos.
[0238] A. Primeiro grupo de métodos: Neste grupo de métodos, o valor de QP do bloco de Croma 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 é calculado com base em um valor de QP de Luma colocalizado que é denotado como 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 .
[0239] (1) Um primeiro método é que, o valor de QP para o bloco atual no componente de crominância (isto é, o valor de QP do bloco de Croma) é determinado com base no valor de QP do bloco colocalizado no componente de luminância. Um ponto no Plano Croma (ou componente) é selecionado (denotado como ponto de mapeamento, por exemplo, ponto C5), o 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 é determinado para ser um valor de QP do bloco colocalizado com o ponto de mapeamento atual (por exemplo, ponto L5) no Plano Luma (ou Luminância). Por exemplo, se o ponto 𝐶𝐶5 da Fig. 8 for selecionado como um ponto de mapeamento, em seguida, 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 é igual a Luma valor de QP a partir do ponto 𝐿𝐿5 correspondente no bloco de codificação de Luma (por exemplo, o bloco em que o ponto L5 está localizado). Deve ser entendido que qualquer um dentre os pontos de Croma pode ser selecionado como pontos de mapeamento incluindo, mas não limitados ao exemplo acima na Fig. 8.
[0240] Mais especificamente, a Equação 7 pode ser reescrita da seguinte maneira: qPiCb = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cb_qp_offset + slice_cb_qp_offset) qPiCr = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cr_qp_offset + slice_cr_qp_offset) (Equação 7.1) Onde QpY_basic é determinado dependendo do tipo de árvore de particionamento em seguida: – Se treeType for igual a SINGLE_TREE, QpY_basic é definido igual a QpY. – De outro modo, QpY_basic é definido igual ao valor de QPY da CU de Luma colocalizada, que inclui amostra de Luma com as coordenadas (xCb + cbWidth/2, yCb + cbHeight/2). E (xCb, yCb) que especifica a amostra superior esquerda do bloco luma de codificação colocalizado com bloco de codificação de croma atual em relação à amostra de luma inferior esquerda da imagem atual. Além disso, o valor de QPY pode ser calculado, de acordo com a seguinte fórmula: 𝑄𝑄𝑄𝑄𝑄𝑄 = ((𝑞𝑞𝑞𝑞𝑞𝑞_𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 + 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 + 64 + 2 ∗ 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄) %(64 + 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄)) − 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄 Onde 𝑞𝑞𝑞𝑞𝑞𝑞_𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃, 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶, 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄 são calculados de maneira usual para a CU de Luma colocalizada. A constante foi alterada para
64. Em outras palavras, em uma implementação exemplar, o QP do bloco atual no componente de crominância é determinado com base no parâmetro (existente) de um bloco colocalizado. O bloco colocalizado pode ser um bloco colocalizado do componente de luminância com o bloco atual. Observe que, em geral, o particionamento do bloco de luminância (a árvore de codificação) pode ser diferente do particionamento do (a árvore de codificação) bloco de crominância. Assim, pode ser haver mais (ou menos ou o mesmo número de) blocos de luminância cobrindo a mesma área de imagem que o mesmo bloco de crominância. Assim, no presente exemplo, o bloco colocalizado é determinado como o bloco de luminância, que cobre uma área incluindo uma amostra específica predefinida do bloco de crominância atual. Por exemplo, a amostra específica pode ser uma amostra superior esquerda no quarto inferior direito do bloco de crominância atual. Esta posição da amostra exemplar está localizada na proximidade (ou no) do centro ou do bloco atual. Entretanto, a presente revelação não é limitada a esta posição da amostra específica. Qualquer outra posição pode ser tomada, tal como superior esquerda ou semelhantes. O apêndice A fornece o exemplo detalhado do processo de derivação para os parâmetros de quantização.
[0241] (2) Um segundo método é que, o valor de QP para o bloco atual no componente de crominância (isto é, o valor de QP do bloco de Croma) é determinado com base em uma soma ponderada de valores de QP existentes de um ou mais blocos vizinhos do bloco colocalizado no componente de luminância. Neste método, 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 é calculado com base em valores colocalizados do valor de QP de Luma a partir de vários determinados pontos com o mesmo peso. Por exemplo, 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 pode ser calculado com base nos valores de QP de Luma a partir dos pontos que são pontos de Croma de canto colocalizados 𝐶𝐶1 , 𝐶𝐶2 , 𝐶𝐶3 , 𝐶𝐶4 pela seguinte fórmula: LumaQP1 + LumaQP2 + LumaQP3 + LumaQP4 QPc_pred_luma = (Equação 8) 4 Onde 𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿1,…, 𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿4 são os valores de QP das CUs de Luma nas posições 𝐿𝐿1 , 𝐿𝐿2 , 𝐿𝐿3 , 𝐿𝐿4 na Fig. 8.
[0242] (3) Um terceiro método é que, 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 é calculado com base na interseção do valor do bloco de codificação (CU) de Croma e CUs de Luma colocalizados em uma das seguintes maneiras:
[0243] Opção 1: Se a CU de Croma for completamente coberta por uma CU de Luma, em seguida, 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 é obtido a partir da CU de Luma.
[0244] Opção 2: Se a CU de Croma for coberta por mais do que uma CU de Luma, e se todas CUs de Luma tiverem o mesmo valor de QP, em seguida, o 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 é obtido a partir da CU de Luma.
[0245] Opção 3: Se a CU de Croma for coberta por mais do que uma
CU de Luma, e se nem todas as CUs de Luma tiverem um mesmo valor de QP, em seguida, 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 é obtido a partir das CUs de Luma com base em uma função ponderada de valores de QP para as CUs de Luma, onde os pesos para cada CU de Luma de QP Delta é determinada pela correspondência espacial entre a CU de Croma e as CUs de Luma atuais.
[0246] B. Segundo grupo de métodos: Neste grupo de métodos, a CU de Croma da predição do QP é calculada com base em valores de QP de CUs de Croma vizinhas (isto é, valores de QP de um ou mais blocos vizinhos do bloco no componente de crominância) e denotada como 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 . Isto é, o valor de QP para o bloco atual no componente de crominância (isto é, o valor de QP da CU de Croma) é determinado com base em uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco atual no componente de crominância. Os métodos neste grupo podem operar com qualquer CUs de Croma vizinhas, que já estão disponíveis no lado do decodificador. No caso em que 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 pode ser calculado pela seguinte Equação 9: 1 QPc_pred_chroma = ∑n∈N QPn (Equação 9) |N| Onde 𝑁𝑁 é um conjunto de CUs vizinhas com um número N e 𝑄𝑄𝑃𝑃𝑛𝑛 é o valor de QP correspondente à nésima CU vizinha do conjunto.
[0247] C. Terceiro grupo de métodos: Neste grupo de métodos, o valor de QP da CU de Croma (ou Predição) é calculado com base tanto em 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 quanto em 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 , que podem ser calculados em qualquer um dentre os métodos mencionados acima e a predição QP da CU de Croma é denotada como 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 . Neste método, o valor de QP para o bloco atual no componente de crominância (isto é, Valor de QP de CU de Croma) é determinado com base tanto no valor de QP do bloco colocalizado no componente de luminância quanto em uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco atual no componente de crominância. Alternativamente, o valor de QP para o bloco atual no componente de crominância (isto é, o valor de QP de CU de Croma) é determinado com base tanto em uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco atual no componente de crominância e uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco colocalizado no componente de luminância. Por exemplo, 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 pode ser calculado como uma soma ponderada de 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 e 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 . Em um exemplo, pode ser calculado pela seguinte Equação 10: QPc_pred_luma + QPc_pred_chroma QPc_pred_mixed = (Equação 10) 2 II. Segundo conjunto de métodos para determinar o valor de QP do bloco de Croma
[0248] Neste conjunto de métodos, um valor de QP para um bloco atual no componente de crominância (ou valor de QP do bloco de Croma) é determinado com base em um ou mais valores de QP existentes e em um valor delta de QP de crominância sinalizado no fluxo de bits recebido e um ou mais valores de QP existentes estão relacionados ao bloco atual no componente de crominância.
[0249] Esta seção descreve diferentes abordagens para determinar a derivação 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 (ou delta) quando a árvore dupla é possível.
[0250] (1) Um primeiro método: Neste método, o valor 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 é diretamente obtido a partir de um dos valores 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 ou 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 , que são calculados em qualquer uma das abordagens correspondentes mencionadas acima no primeiro conjunto de métodos. Neste método, se a árvore dupla for usada, a CU de Luma compreende o(s) elemento(s) de sintaxe para a representação QP delta de Croma e a CU de Croma não compreende quaisquer elementos de sintaxe para a representação QP delta de Croma. transform_unit( x0, y0, tbWidth, tbHeight, treeType ) { Descritor … if( treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_LUMA ){ tu_cbf_luma[ x0 ][ y0 ] ae(v) if ( tu_cbf_luma[ x0 ][ y0 ]) delta_qp() } if( treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_CHROMA ) { tu_cbf_cb[ x0 ][ y0 ] ae(v)
tu_cbf_cr[ x0 ][ y0 ] ae(v) } … } Tabela 2 - um exemplo da sinalização QP delta para o 1o método transform_unit( x0, y0, tbWidth, tbHeight, treeType ) { Descritor if( treeType = = SINGLE_TREE){ tu_cbf_luma[ x0 ][ y0 ] ae(v) tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v) if( tu_cbf_luma[ x0 ][ y0 ] | | tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ] ) delta_qp ( ) } else{ if (treeType = = DUAL_TREE_LUMA){ tu_cbf_luma[ x0 ][ y0 ] ae(v) if( tu_cbf_luma[ x0 ][ y0 ] ) delta_qp ( ) } else /* DUAL_TREE_CROMA */{ tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v) } } … } Tabela 3 - outro exemplo da sinalização QP delta para o 1o método
[0251] A Tabela 2 e a Tabela 3 fornecem dois exemplos de como o mecanismo de sinalização pode ser implementado neste método.
[0252] Neste método, 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 é igual a 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 , que por sua vez pode ser igual a um dos valores 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 ou 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 . No caso em que, os valores 𝑞𝑞𝑞𝑞𝑞𝑞 para os componentes Cb e Cr podem ser calculados pela seguinte Equação 11: 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 = 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶3(−𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄, 69, 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 + 𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜) 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 = 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶3( −𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄, 69, 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 + 𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜) (Equação 11) onde 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 ∈ {𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 }, e cada um de 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 são derivados de um dos métodos mencionados acima.
Mais especificamente, o método de combinação atual com o método 1 e derivação mencionado acima de 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 , a equação 11 pode ser reescrita em seguida: qPiCb = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cb_qp_offset + slice_cb_qp_offset) qPiCr = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cr_qp_offset + slice_cr_qp_offset) (Equação 11.1) Onde QpY_basic é determinado dependendo do tipo de árvore de particionamento em seguida: – Se treeType for igual a SINGLE_TREE, QpY_basic é definida igual a QpY. – De outro modo, QpY_basic é definido igual ao valor de QPY da CU de Luma colocalizada, que inclui a amostra de Luma com as coordenadas (xCb + cbWidth/2, yCb + cbHeight/2). E (xCb, yCb) que especifica a amostra superior esquerda do bloco luma de codificação colocalizado com o bloco de codificação de croma em relação à amostra de luma superior esquerda da imagem atual.
E o valor de QPY pode ser calculado, de acordo com a seguinte fórmula: 𝑄𝑄𝑄𝑄𝑄𝑄 = ((𝑞𝑞𝑞𝑞𝑞𝑞_𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 + 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 + 64 + 2 ∗ 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄) %(64 + 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄)) − 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄 (Equação 11.1a) Onde 𝑞𝑞𝑞𝑞𝑞𝑞_𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃, 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶, 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄 são calculados de maneira convencional para a CU de Luma colocalizada.
A constante 69 na equação 11 e 11.1 representa um valor de QP máximo possível aumentado para 6; a constante 64 na equação 11.1a representa um valor de QP máximo possível aumentado para 1. A apêndice A fornece o exemplo detalhado do processo de derivação para os parâmetros de quantização.
[0253] Neste método, a função de sinalização delta_qp pode ser implementada por exemplo, da seguinte maneira. delta_qp() { Descritor if(cu_qp_delta_enabled_flag && !IsCuQpDeltaCoded) { cu_qp_delta_abs ae(v) if(cu_qp_delta_abs) cu_qp_delta_sign_flag ae(v) } } Tabela 4 - um exemplo de sinalização de função delta_qp() para o 1o método do conjunto de métodos
[0254] Na Tabela 4, o elemento de sintaxe cu_qp_delta_enabled_flag representa a flag de alto nível que que especifica se QP delta é permitido para a fatia/imagem/sequência atual; a flag IsCuLumaQpDeltaCoded especifica se o QP delta é sinalizado na profundidade atual; para os blocos CU na profundidade maior ou igual, delta_qp é herdado do sinalizado mais próximo. Os elementos de sintaxe cu_qp_delta_enabled_flag e diff_cu_qp_delta_depth, que são usados para a derivação da flag IsCuQpDeltaCoded, podem ser sinalizados em conjunto de parâmetros de imagem (PPS). pic_parameter_set_rbsp() { Descritor … cu_qp_delta_enabled_flag u(1) if(cu_qp_delta_enabled_flag) diff_cu_qp_delta_depth ue(v) … } Tabela 5 - e exemplo da extensão PPS para o 1o método do conjunto de métodos
[0255] Mais especificamente, cu_qp_delta_enabled_flag igual a 1 especifica que o elemento de sintaxe diff_cu_qp_delta_depth está presente no PPS e que cu_qp_delta_abs e cu_qp_delta_sign_flag podem estar presentes na sintaxe de unidade de transformada. cu_qp_delta_enabled_flag igual a 0 especifica que o elemento de sintaxe diff_cu_qp_delta_depth não está presente no PPS e que cu_qp_delta_abs e cu_qp_delta_sign_flag não estão presentes na sintaxe da unidade de transformada.
[0256] cu_qp_delta_abs especifica o valor absoluto da diferença CuQpDeltaVal entre o parâmetro de quantização de luma da unidade de codificação atual e sua predição.
[0257] cu_qp_delta_sign_flag especifica o sinal de CuQpDeltaVal em seguida: – Se cu_qp_delta_sign_flag for igual a 0, a CuQpDeltaVal correspondente tem um valor positivo. – De outro modo (cu_qp_delta_sign_flag é igual a 1), a CuQpDeltaVal correspondente tem um valor negativo. Quando cu_qp_delta_sign_flag não está presente, é inferido que é igual a 0. Quando cu_qp_delta_abs está presente, as variáveis IsCuQpDeltaCoded e CuQpDeltaVal são derivadas em seguida: IsCuQpDeltaCoded = 1 CuQpDeltaVal = (−1)cu_qp_delta_sign_flag * cu_qp_delta_abs O valor de CuQpDeltaVal deve estar na faixa de −(32 + QpBdOffsetY/2) a +(31 + QpBdOffsetY/2), inclusive.
[0258] Deve ser observado que este método pode ser usado para a derivação de parâmetro 𝑞𝑞𝑞𝑞𝑞𝑞 para os componentes Cb e Cr para qualquer profundidade de CU de Croma; ou apenas para as profundidades menores do que algum valor predefinido, os blocos CU localizados em maior ou igual profundidade devem herdar o valor a partir do mais próximo processado.
[0259] Alternativamente, o primeiro método também pode sinalizar a sintaxe separada para o QP delta para o componente de Croma. transform_unit( x0, y0, tbWidth, tbHeight, treeType ) { Descritor if( treeType = = SINGLE_TREE){
tu_cbf_luma[ x0 ][ y0 ] ae(v) tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v) if( tu_cbf_luma[ x0 ][ y0 ] | | tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ] ) delta_qp_y ( ) } else{ if (treeType = = DUAL_TREE_LUMA){ tu_cbf_luma[ x0 ][ y0 ] ae(v) if( tu_cbf_luma[ x0 ][ y0 ] ) delta_qp_y ( ) } else /* DUAL_TREE_CROMA */{ tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v) if(tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ]) delta_qp_c ( ) } } … } Tabela 6 - um exemplo da sinalização QP delta separada no primeiro método transform_unit( x0, y0, tbWidth, tbHeight, treeType ) { Descritor if( treeType = = SINGLE_TREE){ tu_cbf_luma[ x0 ][ y0 ] ae(v) if( tu_cbf_luma[ x0 ][ y0 ]) delta_qp_y ( ) tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v)
if(tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ]) delta_qp_c ( ) } else{ if (treeType = = DUAL_TREE_LUMA){ tu_cbf_luma[ x0 ][ y0 ] ae(v) if( tu_cbf_luma[ x0 ][ y0 ] ) delta_qp_y ( ) } else /* DUAL_TREE_CROMA */{ tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v) if(tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ]) delta_qp_c ( ) } } … } Tabela 7 - outro exemplo de sinalização QP delta no primeiro método
[0260] A Tabela 6 e a Tabela 7 fornecem dois exemplos de sinalização de sintaxe de QP delta para o componente de croma para a CU de Croma de árvore dupla apenas em caso de ou tanto para a CU de Croma em árvore dupla quanto para a única CU em casos de árvore separada. Os procedimentos delta_qp_y () e delta_qp_c () da Tabela 6 e Tabela 7 são implementados semelhante à maneira do procedimento delta_qp()que é mostrado na Tabela 4. Deve ser observado, que no caso da sintaxe de QP delta de sinalização separada para a CU de Croma no caso de árvore dupla e/ou para o plano Croma na única CU, a flag de controle de nível PPS cu_qp_delta_enabled_flag na Tabela 4 pode ser implementada uma vez (em conjunto) tanto para os componentes de luma quanto para croma ou separadamente em duas flags de controle: cu_qp_delta_enabled_flag_luma e cu_qp_delta_enabled_flag_chroma.
[0261] Assumindo o caso específico quando este método é combinado com o método 1 mencionado acima da derivação 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 , a equação 11 para a CU de Croma no caso de árvore dupla ou (se aplicado) para a CU de Croma na árvore dupla e única CU em casos de árvore separada pode ser reescrita em seguida: qPiCb = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cb_qp_offset + slice_cb_qp_offset + delta_qp_c) qPiCr = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cr_qp_offset + slice_cr_qp_offset + delta_qp_c) (Equação 11.2) Onde QpY_basic é determinado dependendo do tipo de árvore de particionamento em seguida: – Se treeType for igual a SINGLE_TREE, QpY_basic é definido igual a QpY. – De outro modo, QpY_basic é definido igual ao valor de QPY de CU de Luma colocalizada, que inclui a amostra de Luma com as coordenadas (xCb + cbWidth/2, yCb + cbHeight/2). E (xCb, yCb) que especifica a amostra superior esquerda do bloco luma de codificação colocalizado com o bloco de codificação de croma atual em relação à amostra de luma superior esquerda da imagem atual. E o valor de QPY pode ser calculado, de acordo com a seguinte fórmula: 𝑄𝑄𝑄𝑄𝑄𝑄 = ((𝑞𝑞𝑞𝑞𝑞𝑞_𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 + 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 + 64 + 2 ∗ 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄) %(64 + 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄)) − 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄 (Equação 11.3) Onde 𝑞𝑞𝑞𝑞𝑞𝑞_𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃, 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶, 𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄 são calculados de maneira convencional para a CU de Luma colocalizada. A constante 69 na equação 11.2 representa um valor de QP máximo possível aumentado para 6; a constante 64 na equação 11.3 representa um valor de QP máximo possível aumentado para 1. Alternativamente, o valor delta_qp_c pode ser adicionado às equações finais para Qp′Cb e Qp′Cb:
Qp′Cb = QpCb + QpBdOffsetC + delta_qp_c Qp′Cr = QpCr + QpBdOffsetC + delta_qp_c Neste caso, a equação 11.1 é usada para o cálculo de valores de QPiCb e qPiCr e, em seguida, os cálculos dos valores de QPCb e QpCr são realizados de maneira convencional com base em qPiCb e qPiCr usando a função de mapeamento de QP de croma. Uma função de mapeamento de QP de croma convencional é demonstrada na Tabela 15.
[0262] (2) Um segundo método: Neste método, o valor 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 é derivado como uma soma de um dos valores 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 ou 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 , que são calculados em qualquer uma das abordagens de predição correspondentes mencionadas acima e um valor 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟, que pode ser sinalizado na CU de Croma. Neste método, no caso de árvore dupla, a CU de Luma compreende o(s) elemento(s) de sintaxe para a representação da CU de Luma delta, e a CU de Croma compreende elementos de sintaxe para a representação de diferença de CU de Croma delta. transform_unit( x0, y0, tbWidth, tbHeight, treeType ) { Descritor … if( treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_LUMA ){ tu_cbf_luma[ x0 ][ y0 ] ae(v) if ( tu_cbf_luma[ x0 ][ y0 ]) delta_qp_luma() } if( treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_CHROMA ) { tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v) if (tu_cbf_cb[ x0 ][ y0 ] || tu_cbf_cr[ x0 ][ y0 ]) delta_qp_chroma() } … } Tabela 6 - um exemplo de sinalização de QP delta para o 2o método
[0263] Neste método 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 pode ser calculado pela seguinte Equação 12: 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 = 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 + 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 (Equação 12) Onde 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 ∈ {𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 }, e cada um de 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 é derivado por um dos métodos mencionados acima; 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 é o valor delta de QP para os blocos de croma, que podem ser derivados pela seguinte Equação 13. 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 = 𝑐𝑐𝑐𝑐_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟_𝑞𝑞𝑞𝑞_𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑_𝑎𝑎𝑎𝑎𝑎𝑎 ∗ (1 − 2 ∗ 𝑐𝑐𝑐𝑐_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟_𝑞𝑞𝑞𝑞_𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑_𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠_𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓) (Equação 13)
[0264] No caso em que, os valores 𝑞𝑞𝑞𝑞𝑞𝑞 para os componentes Cb e Cr podem ser calculados pela seguinte Equação 14: 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 = 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶3(−𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄, 69, 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 + 𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜) 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 = 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶3( −𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄, 69, 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 + 𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜) (Equação 14)
[0265] Neste método, as funções de sinalização delta_qp_luma e delta_qp_chroma podem ser implementadas, por exemplo, da seguinte maneira. delta_qp_luma() { Descritor if(cu_luma_qp_delta_enabled_flag && !IsLumaCuQpDeltaCoded) { cu_luma_qp_delta_abs ae(v) if(cu_luma_qp_delta_abs) cu_luma_qp_delta_sign_flag ae(v) } } Tabela 7 - um exemplo da sinalização delta_qp_luma para o 2o método
[0266] Na tabela 7, o elemento de sintaxe cu_luma_qp_delta_enabled_flag representa a flag de alto nível que especifica se o QP de luma delta é permitido para a fatia/imagem/sequência atual; a flag IsCuLumaQpDeltaCoded especifica se o QP delta é sinalizado na profundidade atual; para a CU de blocos de Luma em maior ou igual profundidade, os elementos delta_luma_qp() são herdados do sinalizado mais próximo. Os elementos de sintaxe cu_luma_qp_delta_enabled_flag e diff_cu_luma_qp_delta_depth, que são usados para a derivação da flag IsLumaCuQpDeltaCoded e podem ser sinalizados em PPS. delta_qp_chroma( ) { Descritor if( cu_chroma_qp_delta_enabled_flag && !IsChromaCuQpDeltaCoded ) { cu_chroma_qp_delta_abs ae(v) if( cu_chroma_qp_delta_abs ) cu_chroma_qp_delta_sign_flag ae(v) } } Tabela 8 - um exemplo de sinalização delta_qp_chroma para o 2o método
[0267] Na Tabela 8, o elemento de sintaxe cu_chroma_qp_delta_enabled_flag representa a flag de alto nível que especifica se a CU de croma delta é permitida para a fatia/imagem/sequência atual; a flag IsCuChromaQpDeltaCoded especifica se o QP delta é sinalizado na profundidade atual; para a CU de blocos de Croma em maior ou igual profundidade, os elementos delta_chroma_qp() são herdados do sinalizado mais próximo. Os elementos de sintaxe cu_chroma_qp_delta_enabled_flag e diff_cu_chroma_qp_delta_depth, que são usados para a derivação da flag IsChromaCuQpDeltaCoded e podem ser sinalizados em PPS. pic_parameter_set_rbsp() { Descritor … cu_luma qp_delta_enabled_flag u(1) cu_chroma qp_delta_enabled_flag u(1) if(cu_luma_qp_delta_enabled_flag) diff_cu_luma_qp_delta_depth ue(v) if(cu_chroma_qp_delta_enabled_flag) diff_cu_chroma_qp_delta_depth ue(v) … } Tabela 9 - um exemplo de extensão PPS para o 2o método
[0268] (3) Um terceiro método: Neste método, o valor 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 é derivado como uma soma de um dos valores 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 ou 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 , que são calculados em qualquer uma das abordagens de predição correspondentes mencionadas acima e um valor 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟, que pode ser sinalizado na CU de Croma, apenas na profundidade de CU de Croma em algumas profundidades predefinidas. Todas as CUs de Croma com profundidade maior do que uma predefinida, o valor 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 é herdado de um processado mais próximo. Neste método, no caso de árvore dupla, a CU de Luma compreende o(s) elemento(s) de sintaxe para a representação de luma QP delta, e a CU de Croma compreende os elementos de sintaxe para a representação de croma QP delta apenas para a CU de Croma com profundidade menor ou igual a uma predefinida.
[0269] Neste método, o valor delta de QP pode ser sinalizado, de acordo com a Tabela 5 e Tabela 6, e a função delta_qp_chroma() pode ser implementada da seguinte maneira: delta_qp_chroma() { Descritor if(cu_chroma_qp_delta_enabled_flag && !IsChromaCuQpDeltaCoded) { cu_croma_qp_delta_abs ae(v) if(cu_chroma_qp_delta_abs) cu_croma_qp_delta_sign_flag ae(v) } } Tabela 10 - um exemplo da sinalização delta_qp_chroma para o 2o método
[0270] A flag IsChromaCuQpDeltaCoded na tabela 10 é igual a 0 apenas para a CU de Croma com profundidades menores ou iguais as predefinidas.
[0271] (4) Um quarto método: Neste método, o elemento de sintaxe especial pode especificar qual tipo de cálculo de predição é usado. Um elemento de alto nível cu_qp_chroma_der_type pode ser sinalizado em um dos conjuntos de parâmetros de codec, por exemplo, PPS e especifica qual tipo de quaisquer abordagens de cálculo do preditor mencionadas acima são usadas. pic_parameter_set_rbsp() { Descritor
… if(cu_qp_delta_enabled_flag) cu_qp_chroma_der_type u(n) … } Tabela 11 - e exemplo da extensão PPS para o 4o método
[0272] Neste método, cu_qp_chroma_der_type pode especificar o tipo de grupo de predição e, em seguida, qualquer determinada predição mencionada predefinida acima pode ser usada dentro do grupo.
[0273] Deve ser notado que, cu_qp_chroma_der_type representa um índice no conjunto 𝑃𝑃 e, em seguida, os valores 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 para os componentes Cb e Cr são derivados com base em um dos métodos 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 mencionados acima a partir do 1o ao 3o.
[0274] (5) Um quinto método: Neste método, cu_qp_chroma_der_type pode especificar um determinado tipo de predição entre todos os grupos. Por exemplo, assumindo o conjunto de possíveis predições 𝑷𝑷 = {𝐶𝐶ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟1, … , 𝐶𝐶ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟1, 𝐶𝐶ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟1, … , 𝐶𝐶ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟}
[0275] Deve ser notado que, cu_qp_chroma_der_type representa um índice no conjunto 𝑃𝑃 e, em seguida, os valores 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 para os componentes Cb e Cr são derivados com base em um dos métodos 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 mencionados acima a partir do 1o ao 3o, onde 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 = 𝑃𝑃[𝐜𝐜𝐜𝐜_𝐪𝐪𝐪𝐪__𝐜𝐜𝐜𝐜𝐜𝐜𝐜𝐜𝐜𝐜𝐜𝐜_𝐪𝐪𝐪𝐪_𝐝𝐝𝐝𝐝𝐝𝐝_𝐭𝐭𝐭𝐭𝐭𝐭𝐭𝐭]. III. Terceiro conjunto de métodos para determinar o valor de QP do bloco de Croma
[0276] Determinar um valor de QP para um bloco atual no componente de crominância com base em um ou mais valores de QP existentes e em um valor de deslocamento de QP de crominância (ou deslocamento de QP delta) sinalizado no fluxo de bits recebido e um ou mais valores de QP existentes estão relacionados ao bloco atual no componente de crominância.
[0277] Esta seção revela a utilização do mecanismo de deslocamento de QP de Croma no caso em que a árvore separada (ST) é possível.
[0278] Em um primeiro método, valores Cb e Cr QP 𝑄𝑄𝑄𝑄′𝐶𝐶𝐶𝐶 e 𝑄𝑄𝑄𝑄′𝐶𝐶𝐶𝐶 são calculados com base em 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 e 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞, onde 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 e 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 são calculados pela seguintes Equação 15: 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 = 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶3(−𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄, 69, 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 + 𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 + 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶) 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 = 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶3(−𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄𝑄, 69, 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 + 𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 + 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠_𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 + 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶) (Equação 15) Onde o valor 𝑄𝑄𝑄𝑄𝐶𝐶𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏 é obtido diretamente de um dos valores 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 , 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 ou 𝑄𝑄𝑃𝑃𝑐𝑐_𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝_𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 , que são calculados em quaisquer abordagens de predição correspondentes mencionadas acima; e as variáveis 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶/𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 são derivadas com base nos elementos de sintaxe cb_qp_offset_list e cu_chroma_qp_offset_idx pela seguinte Equação 16: 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 = 𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙[𝑐𝑐𝑐𝑐_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜_𝑖𝑖𝑖𝑖𝑖𝑖] 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 = 𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙[𝑐𝑐𝑐𝑐_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜_𝑖𝑖𝑖𝑖𝑖𝑖] (Equação 16)
[0279] Os elementos de sintaxe 𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 e 𝑐𝑐𝑐𝑐_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜_𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 são a tabelas de deslocamento, que podem ser sinalizadas no conjunto de parâmetros, por exemplo, em PPS da seguinte maneira. pic_parameter_set_rbsp( ) { Descritor … chroma_qp_offset_list_enabled_flag u(1) if( chroma_qp_offset_list_enabled_flag ) { chroma_qp_offset_list_len_minus1 ue(v) for( i = 0; i <= chroma_qp_offset_list_len_minus1; i++ ) { cb_qp_offset_list[ i ] se(v) cr_qp_offset_list[ i ] se(v) } } … } Tabela 12 - um exemplo da sinalização de deslocamento de QP de Croma em PPS
[0280] Na tabela 12, chroma_qp_offset_list_enabled_flag especifica se o mecanismo da lista QP de Croma é usado ou não;
chroma_qp_offset_list_len_minus1 especifica os comprimentos das listas de deslocamento para os componentes Cb e Cr; e cb_qp_offset_list e cr_qp_offset_list especificam os possíveis deslocamentos para os componentes Cb e Cr.
[0281] 𝑐𝑐𝑐𝑐_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜_𝑖𝑖𝑖𝑖𝑖𝑖 especifica o determinado elemento em cb_qp_offset_list e cr_qp_offset_list que pode ser usado para o cálculo de 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 e 𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶.
[0282] A Tabela 13 demonstra um exemplo da sinalização 𝑐𝑐𝑐𝑐_𝑐𝑐ℎ𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟_𝑞𝑞𝑞𝑞_𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜_𝑖𝑖𝑖𝑖𝑖𝑖. chroma_qp_offset( ) { Descritor if( cu_chroma_qp_offset_enabled_flag && !IsCuChromaQpOffsetCoded ) { cu_chroma_qp_offset_flag ae(v) if( cu_chroma_qp_offset_flag && chroma_qp_offset_list_len_minus1 > 0 ) cu_chroma_qp_offset_idx ae(v) } } Tabela 13 - um exemplo da sinalização de deslocamento de QP de Croma
[0283] A sintaxe do deslocamento de QP delta se a árvore separada for possível, pode ser descrita na seguinte Tabela 14. transform_unit( x0, y0, tbWidth, tbHeight, treeType ) { Descritor … if( treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_LUMA ){ tu_cbf_luma[ x0 ][ y0 ] ae(v) if ( tu_cbf_luma[ x0 ][ y0 ]) delta_qp_luma() } if( treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_CHROMA ) { tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v)
if (tu_cbf_cb[ x0 ][ y0 ] || tu_cbf_cr[ x0 ][ y0 ]) chroma_qp_offset() } … } Tabela 14 - um exemplo da utilização de deslocamento de QP delta no caso de árvore separada
[0284] De acordo com outra modalidade da presente invenção, o método para o processo de derivação para os parâmetros de quantização é descrito em seguida: Apêndice A. Processo de derivação para os parâmetros de quantização
[0285] Neste processo, o parâmetro de quantização de luma Qp′Y e os parâmetros de quantização de croma Qp′Cb e Qp′Cr são derivados.
[0286] A entrada para este processo é uma localização de luma (xCb, yCb) que especifica a amostra superior esquerda do bloco de codificação de luma atual em relação à amostra de luma superior esquerda da imagem atual no caso de treeType igual a SINGLE_TREE ou DUAL_TREE_LUMA; e (xCb, yCb) que especifica amostra superior esquerda do bloco de codificação de luma colocalizado com o bloco de codificação de croma atual em relação à amostra de luma superior esquerda da imagem atual no caso de treeType igual a DUAL_TREE_CHROMA.
[0287] Neste processo, a variável QpY, o parâmetro de quantização de luma Qp′Y, e os parâmetros de quantização de croma Qp′Cb e Qp′Cr são derivados.
[0288] A localização de luma (xQg, yQg), especifica a amostra de luma superior esquerda do grupo de quantização atual em relação à amostra de luma superior esquerda da imagem atual. As posições horizontal e vertical xQg e yQg são definidas igual a xCb − (xCb & ((1 << Log2MinCuQpDeltaSize) − 1)) e yCb − (yCb & ((1 << Log2MinCuQpDeltaSize) − 1)), respectivamente. O tamanho de luma de um grupo de quantização, Log2MinCuQpDeltaSize, determina o tamanho de luma da menor área dentro de um bloco de árvore de codificação que compartilha o mesmo qPY_PRED.
[0289] O parâmetro de quantização de luma predito qPY_PRED é derivado pelas seguintes etapas ordenadas:
1. A variável qPY_PREV é derivada em seguida: – Se uma ou mais das seguintes condições forem verdadeiras, qPY_PREV é definido igual a SliceQpY: – O grupo de quantização atual é o primeiro grupo de quantização em uma fatia. – O grupo de quantização atual é o primeiro grupo de quantização em um ladrilho. – O grupo de quantização atual é o primeiro grupo de quantização em uma linha de bloco de árvore de codificação e entropy_coding_sync_enabled_flag é igual a 1. – De outro modo, qPY_PREV é definido igual ao parâmetro de quantização de luma QpY da última unidade de codificação no grupo de quantização anterior na ordem decodificação.
2. O processo de derivação de disponibilidade para um bloco na ordem de varredura z como especificado na cláusula XXX é invocado com a localização (xCurr, yCurr) definida igual a (xCb, yCb) e a localização vizinha (xNbY, yNbY) definido igual a (xQg − 1, yQg) como entradas, e a saída é atribuída à availableA. A variável QpY_A é derivada em seguida: – Se uma ou mais das seguintes condições forem verdadeiras, QpY_A é definida igual a qPY_PREV: – availableA é igual a FALSE. – o endereço do bloco de árvore de codificação ctbAddrA do bloco de árvore de codificação contendo a cobertura de bloco de codificação de luma a localização de luma (xQg − 1, yQg) não é igual a CtbAddrInTs, onde ctbAddrA é derivada em seguida: xTmp = (xQg − 1) >> Log2MinTrafoSize yTmp = yQg >> Log2MinTrafoSize minTbAddrA = MinTbAddrZs[xTmp][yTmp] ctbAddrA = minTbAddrA >> (2 * (CtbLog2SizeY − Log2MinTrafoSize)) – De outro modo, QpY_A é definida igual ao parâmetro de quantização de luma QpY da unidade de codificação contendo a cobertura de bloco de codificação de luma (xQg − 1, yQg).
3. O processo de derivação de disponibilidade para um bloco na ordem de varredura z como especificado na cláusula XXX é invocado com a localização (xCurr, yCurr) definida igual a (xCb, yCb) e a localização vizinha (xNbY, yNbY) definida igual a (xQg, yQg − 1) como entradas e a saída é atribuída à availableB. A variável QpY_B é derivada em seguida: – Se uma ou mais das seguintes condições forem verdadeiras, QpY_B é definida igual a qPY_PREV: – availableB é igual a FALSE. – o endereço de bloco de árvore de codificação ctbAddrB do bloco de árvore de codificação contendo a cobertura de bloco de codificação de luma a localização de luma (xQg, yQg − 1) não é igual a CtbAddrInTs, onde ctbAddrB é derivado em seguida: xTmp = xQg >> Log2MinTrafoSize yTmp = (yQg − 1) >> Log2MinTrafoSize minTbAddrB = MinTbAddrZs[xTmp][yTmp] ctbAddrB = minTbAddrB >> (2 * (CtbLog2SizeY − Log2MinTrafoSize)) – De outro modo, QpY_B é definido igual ao parâmetro de quantização de luma QpY da unidade de codificação contendo a cobertura de bloco de codificação de luma (xQg, yQg − 1).
4. O parâmetro de quantização de luma predito qPY_PRED é derivado em seguida: qPY_PRED = (QpY_A + QpY_B + 1) >> 1 A variável QpY é derivada em seguida: QpY = ((qPY_PRED + CuQpDeltaVal + 64 + 2 * QpBdOffsetY) %(64 + QpBdOffsetY)) − QpBdOffsetY O parâmetro de quantização de luma Qp′Y é derivado em seguida: Qp′Y = QpY + QpBdOffsetY As variáveis QpCb e QpCr são definidas igual ao valor de QpC como especificado na tabela 15 com base no índice qPi igual a qPiCb e qPiCr, respectivamente e, qPiCb e qPiCr são derivados em seguida: qPiCb = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cb_qp_offset + slice_cb_qp_offset) qPiCr = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cr_qp_offset + slice_cr_qp_offset) Onde QpY_basic é determinado dependendo do tipo de árvore de particionamento em seguida: – Se treeType for igual a SINGLE_TREE, QpY_basic é definido igual a QpY. – De outro modo, QpY_basic é definido igual ao valor de QPY de CU de Luma colocalizada, que inclui a amostra de Luma com as coordenadas (xCb + cbWidth/2, yCb + cbHeight/2). Os parâmetros de quantização de croma para os componentes Cb e Cr, Qp′Cb e Qp′Cr são derivados em seguida: Qp′Cb = QpCb + QpBdOffsetC Qp′Cr = QpCr + QpBdOffsetC Tabela 15 – Especificação de QpC como uma função de qPi (função de mapeamento de QP de croma) qPi <30 30 31 32 33 34 35 36 37 38 39 40 41 42 43 > 43 QpC = qPi 29 30 31 32 33 33 34 34 35 35 36 36 37 37 = qPi − 6
[0290] De acordo com um exemplo do primeiro aspecto da invenção, em que o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base em uma soma ponderada de valores de QP existentes de um ou mais blocos vizinhos do bloco colocalizado no componente de luminância.
[0291] Por exemplo, existem quatro blocos vizinhos do bloco colocalizado no componente de luminância, de modo que o valor de QP para o bloco atual no componente de crominância seja uma soma média dos valores de QP para os quatro blocos vizinhos do bloco colocalizado no componente de luminância.
[0292] Deve ser mencionado neste relatório que em alguma ocasião, os blocos vizinhos do bloco colocalizado podem não existir. Nessas circunstâncias, é recomendável usar outros valores de QP existentes para determinar o valor de QP do bloco no componente de crominância.
[0293] De acordo com um exemplo do primeiro aspecto da invenção, o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base em uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco atual no componente de crominância.
[0294] De acordo com um exemplo do primeiro aspecto da invenção,
o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base tanto no valor de QP do bloco colocalizado no componente de luminância quanto em uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco atual no componente de crominância.
[0295] De acordo com um exemplo do primeiro aspecto da invenção, em que o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base tanto em uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco atual no componente de crominância quanto em uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco colocalizado no componente de luminância.
[0296] O seguinte é uma explicação das aplicações do método de codificação bem como do método de decodificação como mostrado nas modalidades mencionadas acima e um sistema que os usa.
[0297] A FIG. 13 é 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, o 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 é limitado à WIFI, Ethernet, Cabo, sem fio (3G/4G/5G), USB ou qualquer tipo de combinação dos mesmos ou semelhantes.
[0298] O dispositivo de captura 3102 gera dados, e pode codificar 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 é limitado à câmera, smartphone ou smartpad, computador ou laptop, sistema de 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 processo 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 conjunta. 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.
[0299] 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, tal como smartphone ou smartpad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, set top box (STB) 3116, sistema de videoconferência 3118, sistema de vigilância por vídeo 3120, assistente pessoal digital (PDA) 3122, dispositivo montado em veículo 3124 ou uma combinação de qualquer um deles ou semelhantes, capazes de decodificar os dados codificados mencionados acima. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14 como 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 o áudio, um decodificador de áudio incluído no dispositivo terminal é priorizado para realizar o processamento de decodificação de áudio.
[0300] Para um dispositivo terminal com seu visor, por exemplo, smartphone ou smartpad 3108, computador ou laptop 3110, gravador de vídeo em 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 alimentados para seu visor. Para um dispositivo terminal equipado sem nenhum visor, por exemplo, STB 3116, o sistema de videoconferência 3118 ou sistema de vigilância por vídeo 3120, um visor externo 3126 é contatado nele para receber e mostrar os dados decodificados.
[0301] 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.
[0302] A FIG. 14 é 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 prosseguimento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui, mas não é 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.
[0303] Depois da unidade de prosseguimento de protocolo 3202 processar o fluxo, o arquivo atual é 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 decodificador de vídeo 3206 e o decodificador de áudio 3208 sem ser através da unidade de demultiplexação
3204.
[0304] Através do processamento de demultiplexação, o fluxo de elementar (ES) de vídeo, ES de áudio e, opcionalmente, a legenda são gerados. O decodificador de vídeo 3206, que inclui o decodificador de vídeo 30 como explicado 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. 14) antes de alimentá-lo para a unidade síncrona 3212. Similarmente, o quadro de áudio pode armazenar em um buffer (não mostrado na FIG. 14) antes de alimentá-lo para a unidade síncrona 3212.
[0305] 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 do vídeo e informações de áudio. As informações podem codificar na sintaxe usando carimbos de hora relativos à apresentação dados de áudio e visuais codificados e carimbos de hora relativos à liberação do fluxo de dados.
[0306] 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.
[0307] 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 podem ser incorporadas em outro sistema, por exemplo, um sistema de carro.
[0308] Em um primeiro exemplo, um método é fornecido para quantização inversa de um bloco atual de uma imagem, em que o método é realizado por um decodificador e a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos e o método compreende: obter um ou mais valores de parâmetro de quantização, QP existentes a partir de um fluxo de bits recebido, em que o um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância; determinar um valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes; realizar a quantização inversa no bloco atual no componente de crominância por meio do uso do valor de QP determinado.
[0309] Por exemplo, um ou mais valores de QP existentes compreendem pelo menos um dentre os seguintes: um valor de QP de um bloco colocalizado no componente de luminância; um ou mais blocos vizinhos do bloco colocalizado no componente de luminância; e um ou mais blocos vizinhos do bloco atual no componente de crominância.
[0310] Em uma implementação exemplar, o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância.
[0311] Alternativamente ou além disso, a etapa de determinação do valor de QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância, compreende: determinar bloco de luminância colocalizado com a amostra superior esquerda no quarto inferior direito do bloco de crominância atual; recuperar o valor de QP (QpY_basic) do bloco de luminância determinado; determinar os parâmetros qPiCb e qPiCr para o bloco de crominância atual por meio do uso das seguintes fórmulas ou novas fórmulas derivadas a partir das seguintes fórmulas: qPiCb = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cb_qp_offset + slice_cb_qp_offset), e/ou qPiCr = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cr_qp_offset + slice_cr_qp_offset); determinar os valores de QP para o bloco atual no componente de crominância com base nos valores ou parâmetros QPiCb e qPiCr.
[0312] Em uma implementação exemplar, os valores de QP para o bloco atual no componente de crominância são determinados, de acordo com as seguintes fórmulas ou novas fórmulas derivadas a partir das seguintes fórmulas: Qp′Cb = QpCb + QpBdOffsetC + delta_qp_c, e/ou Qp′Cr = QpCr + QpBdOffsetC + delta_qp_c; em que QpCb e QpCr são obtidos a partir dos parâmetros qPiCb e qPiCr por meio de aplicação de uma função de mapeamento de QP de croma.
[0313] Por exemplo, a etapa de determinação do valor de QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância, compreende: determinar bloco de luminância colocalizado com a amostra superior esquerda no quarto inferior direito do bloco de crominância atual; recuperar o valor de QP (QpY_basic) do bloco de luminância determinado; determinar parâmetros qPiCb e qPiCr para o bloco de crominância atual por meio do uso das seguintes fórmulas ou novas fórmulas derivadas a partir das seguintes fórmulas: qPiCb = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cb_qp_offset + slice_cb_qp_offset + delta_qp_c), e/ou qPiCr = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cr_qp_offset + slice_cr_qp_offset + delta_qp_c); determinar os valores de QP para o bloco atual no componente de crominância com base nos valores ou parâmetros QPiCb e qPiCr.
[0314] Em algumas implementações exemplares, o método é aplicado a uma única CU e o bloco colocalizado no componente de luminância é igual a o bloco atual.
[0315] Por exemplo, o método é aplicado em conjunto para o plano Luma e Croma com base em uma flag de controle sinalizado por PPS (tal como cu_qp_delta_enabled_flag); se a flag de controle (tal como cu_qp_delta_enabled_flag) for igual a verdadeiro, o método é aplicado para a derivação de QP de luma e croma; ou se a flag de controle (tal como cu_qp_delta_enabled_flag) for igual a falso, o método não é aplicado para a derivação de QP de luma e croma.
[0316] Em algumas implementações exemplares, o método é aplicado separadamente para o plano Luma e Croma com base em duas flags de controle baseadas em PPS (tais como cu_qp_delta_enabled_flag_luma e cu_qp_delta_enabled_flag_chroma); se uma primeira flag de controle (tal como cu_qp_delta_enabled_flag_luma) for igual a verdadeiro, o método é aplicado para a derivação de QP de luma; ou se a primeira flag de controle (tal como cu_qp_delta_enabled_flag_luma) for igual a falso, o método não é aplicado para derivação de QP de luma; e/ou, se uma segunda flag de controle (tal como cu_qp_delta_enabled_flag_chroma) for igual a verdadeiro, o método é aplicado para a derivação de QP de croma; ou se a segunda flag de controle (tal como cu_qp_delta_enabled_flag_chroma) for igual a falso, o método não é aplicado para derivação de QP de croma.
[0317] Por exemplo, o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base em uma soma ponderada dos valores de QP existentes de um ou mais blocos vizinhos do bloco colocalizado no componente de luminância.
[0318] Alternativamente ou além disso, o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base em uma soma ponderada dos valores de QP existentes de um ou mais blocos vizinhos do bloco atual no componente de crominância.
[0319] Alternativamente ou além disso, o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base tanto no valor de QP do bloco colocalizado no componente de luminância quanto em uma soma ponderada dos valores de QP existentes de um ou mais blocos vizinhos do bloco atual no componente de crominância.
[0320] Alternativamente ou além disso, o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base tanto em uma soma ponderada dos valores de QP existentes dos blocos vizinhos do bloco atual no componente de crominância quanto em uma soma ponderada dos valores de QP existentes dos blocos vizinhos do bloco colocalizado no componente de luminância.
[0321] Em algumas implementações exemplares, o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e em pelo menos um dentre os seguintes: um valor delta de QP de crominância sinalizado no fluxo de bits recebido ou um valor de deslocamento de QP de crominância sinalizado no fluxo de bits recebido.
[0322] Em algumas implementações exemplares, o método compreende adicionalmente: obter um valor de profundidade de partição do bloco atual e determinar o valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e em um valor delta de QP de crominância sinalizado no fluxo de bits recebido, se o valor de profundidade de partição estiver abaixo de um limiar.
[0323] Por exemplo, o limiar é determinado com base em um número predefinido ou em um número sinalizado em um conjunto de parâmetros.
[0324] Por exemplo, o componente de luminância e o componente de crominância são particionados em múltiplos blocos por uma árvore de partição única ou o componente de luminância e o componente de crominância são particionados independentemente pelas árvores de partição separadas.
[0325] Em algumas implementações exemplares, elementos de sintaxe de QP delta (tais como elementos de sintaxe de QP delta que representam o valor delta de QP de crominância, isto é, delta_qp_c) são sinalizados no fluxo de bits, de acordo com uma seguinte tabela: transform_unit( x0, y0, tbWidth, tbHeight, treeType ) { Descritor if( treeType = = SINGLE_TREE){ tu_cbf_luma[ x0 ][ y0 ] ae(v)
tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v) if( tu_cbf_luma[ x0 ][ y0 ] | | tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ] ) delta_qp ( ) } else{ if (treeType = = DUAL_TREE_LUMA){ tu_cbf_luma[ x0 ][ ae(v) y0 ] if( tu_cbf_luma[ x0 ][ y0 ] ) delta_qp ( ) } else /* DUAL_TREE_CROMA */{ tu_cbf_cb[ x0 ][ y0 ae(v) ] tu_cbf_cr[ x0 ][ y0 ae(v) ] } } … }
[0326] Em algumas modalidades exemplares, os elementos de sintaxe de QP delta (tais como elementos de sintaxe de QP delta que representam o valor delta de QP de crominância, isto é, delta_qp_c) são sinalizados no fluxo de bits, de acordo com uma seguinte tabela: transform_unit( x0, y0, tbWidth, tbHeight, treeType ) { Descritor if( treeType = = SINGLE_TREE){ tu_cbf_luma[ x0 ][ y0 ] ae(v)
tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0 ][ y0 ] ae(v) if( tu_cbf_luma[ x0 ][ y0 ] | | tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ] ) delta_qp_y ( ) } else{ if (treeType = = DUAL_TREE_LUMA){ tu_cbf_luma[ x0 ][ ae(v) y0 ] if( tu_cbf_luma[ x0 ][ y0 ] ) delta_qp_y ( ) } else /* DUAL_TREE_CROMA */{ tu_cbf_cb[ x0 ][ y0 ae(v) ] tu_cbf_cr[ x0 ][ y0 ae(v) ] if(tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ]) delta_qp_c ( ) } } … }
[0327] Em algumas implementações exemplares, os elementos de sintaxe de QP delta (tais como os elementos de sintaxe de QP delta que representam o valor delta de QP de crominância, isto é, delta_qp_c) são sinalizados no fluxo de bits, de acordo com uma seguinte tabela: transform_unit( x0, y0, tbWidth, tbHeight, treeType ) { Descritor if( treeType = = SINGLE_TREE){ tu_cbf_luma[ x0 ][ y0 ] ae(v) if( tu_cbf_luma[ x0 ][ y0 ]) ae(v) delta_qp_y ( ) ae(v) tu_cbf_cb[ x0 ][ y0 ] tu_cbf_cr[ x0 ][ y0 ] if(tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ]) delta_qp_c ( ) } else{ ae(v) if (treeType = = DUAL_TREE_LUMA){ tu_cbf_luma[ x0 ][ y0 ] if( tu_cbf_luma[ x0 ][ y0 ] ) delta_qp_y ( ) } ae(v) else /* DUAL_TREE_CROMA */{ ae(v) tu_cbf_cb[ x0 ][ y0 ] tu_cbf_cr[ x0 ][ y0 ] if(tu_cbf_cb[ x0 ][ y0 ] | | tu_cbf_cr[ x0 ][ y0 ]) delta_qp_c ( ) } } … }
[0328] Em algumas modalidades, um aparelho de decodificação é fornecido compreendendo circuitos de processamento para realizar qualquer um dentre os métodos previamente descritos.
[0329] Em algumas modalidades, um produto de programa de computador compreendendo um código de programa para realizar o método, de acordo com qualquer um dentre os métodos previamente descritos, quando o programa de computador roda em um dispositivo de computação.
[0330] Em uma implementação exemplar, um aparelho de decodificação é fornecido para a partição de limite de um bloco atual de uma imagem, compreendendo: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando programação para a execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar qualquer um dentre os métodos previamente descritos.
[0331] Em uma modalidade, uma mídia de armazenamento legível por computador é fornecida, gravando um programa para fazer com que um computador execute o método, de acordo com qualquer um dentre os métodos previamente descritos.
[0332] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas 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 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 a partir de uma placa para outra, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, a mídia legível por computador, em geral, 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 e/ou estruturas de dados para a implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0333] A título de exemplo, e não limitação, tal mídia de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outra mídia que possa ser usada para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessada por um computador. Além disso, qualquer conexão é apropriadamente denominada uma mídia legível por computador. Por exemplo, se as instruções forem transmitidas a partir 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-ondas, 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, em vez disso, são direcionados para a mídia de armazenamento tangível não transitória. Disco e disquete, como usado neste relatório, inclui disco compacto (CD), disco a laser, disco óptico, disco versátil digital (DVD), disquete e disco de Blu-ray, onde 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.
[0334] 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 equivalentes integrados ou lógica discreta. Consequentemente, o termo “processador”, como usado neste relatório, pode se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste relatório. Além disso, em alguns aspectos, a funcionalidade descrita neste relatório pode ser fornecida dentro dos módulos de hardware e/ou software dedicados configurados para codificação e decodificação ou incorporados em uma codec combinada. Além disso, as técnicas podem ser implementadas completamente em um ou mais circuitos ou elementos lógicos.
[0335] As técnicas desta revelação podem ser implementadas 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 requerem a realização de diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec e fornecidas por uma coleção de unidades de hardware interoperativos, incluindo um ou mais processadores como descritos acima, em conjunção com o software e/ou firmware adequado.
[0336] Operadores Lógicos Os seguintes operadores lógicos são definidos em seguida: 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 for igual a 0, avaliar o valor de y; de outro modo, avaliar o valor de z. Operadores relacionais Os seguintes operadores relacionais são definidos em seguida: > Maior do que >= Maior do que ou igual a < Menor do que <= Menor do que ou igual a = = Igual a != Diferente de Quando um operador relacional é aplicado a um elemento de sintaxe ou variável que foi atribuído o 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” não é considerado igual a qualquer outro valor.
Operadores bitwise Os seguintes operadores bitwise são definidos em seguida: & Bit-wise “e”. Ao operar com argumentos inteiros, operar em uma representação de complementos de dois o valor inteiro.
Ao operar em um argumento binário que contém menos bits do que outro argumento, o menor argumento é estendido pela adição de 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 em um argumento binário que contém menos bits do que outro argumento, o menor argumento é estendido pela adição de bits mais significantes iguais a 0. ^ Bit-wise “exclusivo 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 pela adição de bits mais significantes iguais a 0. x >> y Deslocamento aritmético para a direita de uma representação inteira em complemento de dois de x por y dígitos binários.
Esta função é definida apenas para valores inteiro não negativos de y.
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ética 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.
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 Os seguintes operadores aritméticos são definidos em seguida: = Operador de atribuição + + Incremento, isto é, x+ + é equivalente à 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 à 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 à x =x + 3, e x += (−3) é equivalente à x = x + (−3). −= Decremento pela quantidade especificada, isto é, x −= 3 é equivalente à x =x − 3, e x −= (−3) é equivalente à x = x − (−3). Notação de alcance A seguinte notação é usada para especificar uma faixa de valores: x = y..zx assume valores inteiros partindo de y a z, inclusive, com x, y e z sendo números inteiros e z sendo maior do que y.

Claims (25)

REIVINDICAÇÕES
1. Método para quantização inversa de um bloco atual de uma imagem, em que o método é realizado por um decodificador, e a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos, CARACTERIZADO pelo fato de que o método compreende: obter (902) um ou mais valores de parâmetro de quantização, QP, existentes a partir de um fluxo de bits, em que o um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância; determinar (904) um valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes; e realizar (906) quantização inversa no bloco atual no componente de crominância por meio do uso do valor de QP determinado.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o um ou mais valores de QP existentes compreendem pelo menos um dentre os seguintes: um valor de QP de um bloco colocalizado no componente de luminância; um ou mais valores de QP existentes respectivamente para um ou mais blocos vizinhos do bloco colocalizado no componente de luminância; e um ou mais valores de QP existentes respectivamente para um ou mais blocos vizinhos do bloco atual no componente de crominância.
3. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que a etapa de determinação (904) de um valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes compreende: determinar o valor de QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância.
4. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que a etapa de determinação do valor de QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância, compreende:
recuperar valor de QP de um bloco de luminância colocalizado com uma amostra em uma posição específica no bloco de crominância atual; e determinar valores de QP para o bloco atual no componente de crominância com base no valor de QP do bloco de luminância determinado.
5. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que a amostra na posição específica é uma amostra superior esquerda no quarto inferior direito do bloco de crominância atual.
6. Método, de acordo com a reivindicação 4 ou 5, CARACTERIZADO pelo fato de que os valores de QP para o bloco atual no componente de crominância são determinados de acordo com as seguintes fórmulas ou novas fórmulas derivadas a partir das seguintes fórmulas: Qp′Cb = QpCb + QpBdOffsetC + delta_qp_c Qp′Cr = QpCr + QpBdOffsetC + delta_qp_c em que QpCb e QpCr são obtidos a partir de parâmetros qPiCb e qPiCr obtidos com base no valor de QP do bloco de luminância determinado por meio de aplicação de uma função de mapeamento de QP de croma.
7. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que a etapa de determinação do valor de QP para o bloco atual no componente de crominância com base no valor de QP do bloco colocalizado no componente de luminância, compreende: determinar bloco de luminância colocalizado com amostra superior esquerda no quarto inferior direito do bloco de crominância atual; recuperar valor de QP, QpY_basic de bloco de luminância determinado; determinar parâmetros qPiCb e qPiCr para o bloco de crominância atual por meio do uso das seguintes fórmulas ou novas fórmulas derivadas a partir das seguintes fórmulas: qPiCb = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cb_qp_offset + slice_cb_qp_offset + delta_qp_c) qPiCr = Clip3(−QpBdOffsetC, 69, QpY_basic + pps_cr_qp_offset + slice_cr_qp_offset + delta_qp_c) determinar valores de QP para o bloco atual no componente de crominância com base nos valores ou parâmetros qPiCb e qPiCr.
8. Método, de acordo com qualquer uma das reivindicações 3 a 7, CARACTERIZADO pelo fato de que o método é aplicado a uma única CU e bloco colocalizado no componente de luminância é igual ao bloco atual.
9. Método, de acordo com qualquer uma das reivindicações 3 a 8, CARACTERIZADO pelo fato de que o método é aplicado em conjunto para plano Luma e Croma com base em uma flag de controle sinalizado por PPS, tal como cu_qp_delta_enabled_flag; se a flag de controle, tal como cu_qp_delta_enabled_flag for igual a verdadeiro, o método é aplicado para derivação de QP tanto de luma quanto de croma; ou se a flag de controle, tal como cu_qp_delta_enabled_flag for igual a falso, o método não é aplicado para derivação de QP tanto de luma quanto de croma.
10. Método, de acordo com qualquer uma das reivindicações 1 a 9, CARACTERIZADO pelo fato de que o método é separadamente aplicado para plano Luma e Croma com base em duas flags de controle baseadas em conjunto de parâmetros de imagem, PPS; se uma primeira flag de controle for igual a verdadeiro, o método é aplicado para derivação de QP de luma; ou se a primeira flag de controle for igual a falso, o método não é aplicado para derivação de QP de luma; e/ou, se uma segunda flag de controle for igual a verdadeiro, o método é aplicado para derivação de QP de croma; ou se a segunda flag de controle for igual a falso, o método não é aplicado para derivação de QP de croma.
11. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base em uma soma ponderada de valores de QP existentes do um ou mais blocos vizinhos do bloco colocalizado no componente de luminância.
12. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base em uma soma ponderada de valores de QP existentes do um ou mais blocos vizinhos do bloco atual no componente de crominância.
13. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base tanto no valor de QP do bloco colocalizado no componente de luminância quanto em uma soma ponderada de valores de QP existentes do um ou mais blocos vizinhos do bloco atual no componente de crominância.
14. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base tanto em uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco atual no componente de crominância quanto em uma soma ponderada de valores de QP existentes dos blocos vizinhos do bloco colocalizado no componente de luminância.
15. Método, de acordo com qualquer uma das reivindicações anteriores, CARACTERIZADO pelo fato de que o método compreende adicionalmente: determinar o valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e em pelo menos um dentre os seguintes: um valor delta de QP de crominância sinalizado no fluxo de bits, ou um valor de deslocamento de QP de crominância sinalizado no fluxo de bits.
16. Método, de acordo com a reivindicação 15, CARACTERIZADO pelo fato de que o método compreende adicionalmente: obter um valor de profundidade de partição do bloco atual, e determinar o valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e em um valor delta de QP de crominância sinalizado no fluxo de bits, se o valor de profundidade de partição estiver abaixo de um limiar.
17. Método, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que o limiar é determinado com base em um número predefinido, ou em um número sinalizado em um conjunto de parâmetros.
18. Método, de acordo com qualquer uma das reivindicações anteriores, CARACTERIZADO pelo fato de que o componente de luminância e o componente de crominância são particionados independentemente por árvores de partição separadas.
19. Método para quantização de um bloco atual de uma imagem, em que o método é realizado por um codificador, e a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos, CARACTERIZADO pelo fato de que o método compreende: realizar (1010) quantização no bloco atual em um componente de crominância por meio do uso de um valor de QP determinado; obter (1020) um ou mais valores de parâmetro de quantização, QP existentes e incluir o um ou mais QP existentes em um fluxo de bits, em que o um ou mais valores de QP existentes se referem ao bloco atual no componente de crominância; determinar (1030) um parâmetro QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e no referido valor de QP determinado; e incluir (1040) o parâmetro QP no fluxo de bits.
20. Produto de programa de computador, CARACTERIZADO pelo fato de que é armazenado em uma mídia não transitória e compreende um código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 19, quando o programa de computador rodar em um dispositivo de computação.
21. Aparelho de decodificação para partição de limite de um bloco atual de uma imagem, CARACTERIZADO pelo fato de que compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 18.
22. Aparelho de codificação para partição de limite de um bloco atual de uma imagem, CARACTERIZADO pelo fato de que compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método conforme definido na reivindicação 19.
23. Aparelho para quantização inversa de um bloco atual de uma imagem, em que a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos, CARACTERIZADO pelo fato de que o aparelho compreende: um analisador de fluxo de bits (1110) para obter um ou mais valores de parâmetro de quantização, QP existentes a partir de um fluxo de bits, em que o um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância; uma unidade de determinação de QP (1120) para determinar um valor de QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes; um quantizador inverso (1130) para realizar quantização inversa no bloco atual no componente de crominância por meio do uso do valor de QP determinado.
24. Aparelho para quantização de um bloco atual de uma imagem, em que a imagem compreende um componente de luminância e um componente de crominância, o componente de luminância e/ou o componente de crominância são particionados em múltiplos blocos, CARACTERIZADO pelo fato de que o aparelho compreende: um quantizador (1210) para realizar quantização no bloco atual no componente de crominância por meio do uso de um valor de QP determinado; uma unidade de busca (1220) para obter um ou mais valores de parâmetro de quantização, QP existentes e incluir o um ou mais QP existentes em um fluxo de bits, em que o um ou mais valores de QP existentes se referem a um bloco atual no componente de crominância; uma unidade de determinação de QP (1230) para determinar um parâmetro QP para o bloco atual no componente de crominância com base no um ou mais valores de QP existentes e no referido valor de QP determinado; e uma unidade de geração de fluxo de bits (1240) para incluir o parâmetro QP no fluxo de bits.
25. Circuito integrado, CARACTERIZADO pelo fato de que incorpora um aparelho conforme definido em qualquer uma das reivindicações 23 ou 24.
Dispositivo de origem Dispositivo de destino 12 14
Fonte de imagem Dispositivo de 16 exibição 34
Petição 870210024906, de 16/03/2021, pág. 239/260 dados de imagem pós- imagem 17 processada 33 Pré-processador Pós-processador 18 32 dados de imagem imagem pré-processados 19 decodificada 1/11
Codificador Decodificador 31 20 30 dados de imagem dados de imagem codificados 21 codificados 21 Interface de Interface de comunicação 22 comunicação 28
Dispositivo(s) de geração de Antena 42 imagem 41
Unidade(s) de processamento 46 Circuitos lógicos 47 Codificador de Decodificador vídeo 20 de vídeo 30
Processador(es) 43
Armazenamento(s) Dispositivo de de memória 44 exibição 45 Sistema de codificação de vídeo 40 bloco de unidade de cálculo imagem 201 imagem 203 residual 204 bloco residual 205
Petição 870210024906, de 16/03/2021, pág. 241/260 entrada bloco de 202 predição 265 Unidade de Unidade de Unidade de seleção de processamento processamento modo 262 de transformada coeficientes de de predição transformada 207
Unidade de Unidade de quantização predição saída 272 inter dados de coeficientes Unidade de quantizados 209 codificação imagem Unidade de de entropia codificados 21 Elementos de sintaxe 266 3/11 predição intra Unidade de quantização imagem inversa coeficientes decodificada desquantizados 231 211 Unidade de amostras de processamento de referência 217 transformada inversa Buffer de imagem Filtro bloco de decodificada loop transformada inversa 213 unidade de bloco reconstrução 214 bloco Codificador 20 filtrado 221 reconstruído 215 dados de imagem codificados 21
Unidade de decodificação de entropia
Petição 870210024906, de 16/03/2021, pág. 242/260 Elementos de sintaxe coeficientes Unidade de Unidade de quantizados 309 processamento de seleção de predição modo 362 imagem Unidade de decodificada predição 311 inter bloco de predição 365
Unidade de 4/11 predição intra Unidade de quantização inversa coeficientes desquantizados 311 amostras de referência 317 Unidade de processamento de transformada inversa Buffer de imagem Filtro imagem decodificada loop bloco de decodificada transformada 331 unidade de inversa 313 bloco reconstrução 314 bloco Decodificador 30 filtrado 321 reconstruído 315 saída 332
Dispositivo de Codificação de Vídeo Processador Módulo de codificação Memória Portas a Portas a jusante montante
PROCESSADOR ARMAZENAMENTO VISOR
DISPOSITIVO DE
DETECÇÃO DE DISPOSITIVO DE
IMAGEM DETECÇÃO DE SOM
DADOS APLICAÇÃO:1...
APLICAÇÃO: CODIFICAÇÃO DE VÍDEO APLICAÇÃO:...N
SISTEMA OPERACIONAL
BR112021004984-3A 2018-09-21 2019-09-21 aparelho e método para quantização inversa BR112021004984A2 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862734982P 2018-09-21 2018-09-21
US62/734,982 2018-09-21
US201862744125P 2018-10-10 2018-10-10
US62/744,125 2018-10-10
US201862745983P 2018-10-15 2018-10-15
US62/745,983 2018-10-15
PCT/CN2019/107134 WO2020057662A1 (en) 2018-09-21 2019-09-21 Apparatus and method for inverse quantization

Publications (1)

Publication Number Publication Date
BR112021004984A2 true BR112021004984A2 (pt) 2021-06-08

Family

ID=69888333

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021004984-3A BR112021004984A2 (pt) 2018-09-21 2019-09-21 aparelho e método para quantização inversa

Country Status (11)

Country Link
US (2) US11689723B2 (pt)
EP (1) EP3841748A4 (pt)
JP (2) JP7343573B2 (pt)
KR (2) KR102578075B1 (pt)
CN (3) CN114598875B (pt)
AU (2) AU2019342803B2 (pt)
BR (1) BR112021004984A2 (pt)
CA (1) CA3111118A1 (pt)
MX (1) MX2021003166A (pt)
SG (1) SG11202101799WA (pt)
WO (1) WO2020057662A1 (pt)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3700205A1 (en) * 2019-02-19 2020-08-26 Nokia Technologies Oy Quantization parameter derivation for cross-channel residual encoding and decoding
WO2021034117A1 (ko) * 2019-08-22 2021-02-25 엘지전자 주식회사 영상 디코딩 방법 및 그 장치
JP7318110B2 (ja) * 2019-08-22 2023-07-31 エルジー エレクトロニクス インコーポレイティド クロマ量子化パラメータを使用する画像デコード方法及びその装置
CN117676167A (zh) * 2019-08-30 2024-03-08 北京字节跳动网络技术有限公司 帧内编解码中的子分割
US11395014B2 (en) * 2019-09-18 2022-07-19 Qualcomm Incorporated Transform unit design for video coding
WO2021091214A1 (ko) * 2019-11-05 2021-05-14 엘지전자 주식회사 크로마 양자화 파라미터 오프셋 관련 정보를 코딩하는 영상 디코딩 방법 및 그 장치
CN115299063A (zh) 2020-02-27 2022-11-04 抖音视界有限公司 变换跳过残差编解码
WO2021197445A1 (en) * 2020-04-01 2021-10-07 Beijing Bytedance Network Technology Co., Ltd. Constraints on adaptation parameter set syntax elements
WO2021204136A1 (en) 2020-04-07 2021-10-14 Beijing Bytedance Network Technology Co., Ltd. Signaling for inter prediction in high level syntax
CN115668917A (zh) 2020-04-09 2023-01-31 抖音视界有限公司 视频编解码中的去块信令通知
WO2021204251A1 (en) 2020-04-10 2021-10-14 Beijing Bytedance Network Technology Co., Ltd. Use of header syntax elements and adaptation parameter set
US11381820B2 (en) * 2020-04-13 2022-07-05 Tencent America LLC Method and apparatus for video coding
WO2021209061A1 (en) 2020-04-17 2021-10-21 Beijing Bytedance Network Technology Co., Ltd. Presence of adaptation parameter set units
EP4128775A4 (en) 2020-04-26 2024-03-27 ByteDance Inc. CONDITIONAL SIGNALING OF SYNTAX ELEMENTS OF A VIDEO CODING
KR20230016047A (ko) * 2020-05-27 2023-01-31 바이트댄스 아이엔씨 비디오 코딩에서의 서브픽처들 및 타일들의 사용
CN116095335A (zh) * 2022-01-21 2023-05-09 杭州海康威视数字技术股份有限公司 一种视频解码方法、装置及存储介质
WO2023237119A1 (en) * 2022-06-10 2023-12-14 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4617644B2 (ja) * 2003-07-18 2011-01-26 ソニー株式会社 符号化装置及び方法
US9451258B2 (en) * 2012-04-03 2016-09-20 Qualcomm Incorporated Chroma slice-level QP offset and deblocking
US9414054B2 (en) * 2012-07-02 2016-08-09 Microsoft Technology Licensing, Llc Control and use of chroma quantization parameter values
GB2512826B (en) * 2013-04-05 2017-05-10 Canon Kk Method and device for determining the value of a quantization parameter
EP2843949B1 (en) * 2013-06-28 2020-04-29 Velos Media International Limited Methods and devices for emulating low-fidelity coding in a high-fidelity coder
US9294766B2 (en) * 2013-09-09 2016-03-22 Apple Inc. Chroma quantization in video coding
US10142642B2 (en) * 2014-06-04 2018-11-27 Qualcomm Incorporated Block adaptive color-space conversion coding
CN105338352B (zh) * 2014-07-24 2019-04-19 华为技术有限公司 一种视频编码中自适应反量化方法及装置
US9883184B2 (en) * 2014-10-07 2018-01-30 Qualcomm Incorporated QP derivation and offset for adaptive color transform in video coding
US10462475B2 (en) * 2014-12-19 2019-10-29 Hfi Innovation Inc. Methods of palette based prediction for non-444 color format in video and image coding
CN111654697B (zh) * 2015-01-30 2022-07-19 交互数字Vc控股公司 对彩色画面进行编码和解码的方法和装置
KR102460912B1 (ko) * 2015-07-08 2022-10-28 인터디지털 매디슨 페턴트 홀딩스 에스에이에스 교차 평면 필터링을 이용한 향상된 크로마 코딩
CN108293124B (zh) * 2015-11-30 2022-05-13 瑞典爱立信有限公司 视频中画面的编码
WO2017219342A1 (en) * 2016-06-24 2017-12-28 Mediatek Inc. Methods of signaling quantization parameter for quad-tree plus binary tree structure
US10448056B2 (en) * 2016-07-15 2019-10-15 Qualcomm Incorporated Signaling of quantization information in non-quadtree-only partitioned video coding
KR102321394B1 (ko) * 2016-08-01 2021-11-03 한국전자통신연구원 영상 부호화/복호화 방법
CN109804625A (zh) * 2016-10-04 2019-05-24 韩国电子通信研究院 对图像编码/解码的方法和装置及存储比特流的记录介质

Also Published As

Publication number Publication date
WO2020057662A1 (en) 2020-03-26
US20210218968A1 (en) 2021-07-15
AU2019342803B2 (en) 2023-07-13
AU2023248107A1 (en) 2023-11-09
KR102578075B1 (ko) 2023-09-12
CN115052144A (zh) 2022-09-13
US20230291902A1 (en) 2023-09-14
JP7343573B2 (ja) 2023-09-12
SG11202101799WA (en) 2021-03-30
JP2023164490A (ja) 2023-11-10
KR20230135159A (ko) 2023-09-22
CN114598875B (zh) 2023-03-24
CN114598875A (zh) 2022-06-07
CN112690000A (zh) 2021-04-20
EP3841748A1 (en) 2021-06-30
JP2022500943A (ja) 2022-01-04
AU2019342803A1 (en) 2021-03-18
KR20210045458A (ko) 2021-04-26
EP3841748A4 (en) 2021-10-27
CN112690000B (zh) 2022-02-18
MX2021003166A (es) 2021-05-14
US11689723B2 (en) 2023-06-27
CA3111118A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
BR112021004984A2 (pt) aparelho e método para quantização inversa
ES2973667T3 (es) Un codificador de video, un decodificador de video y métodos correspondientes
BR112021009848A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
WO2021129690A1 (en) Cross-component adaptive loop filtering for video coding
WO2020211765A1 (en) An encoder, a decoder and corresponding methods harmonzting matrix-based intra prediction and secoundary transform core selection
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
BR112020026818A2 (pt) codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio
BR112021016560A2 (pt) Método e aparelho para predição intra usando modelo linear
BR112021010286A2 (pt) codificador, decodificador e métodos correspondentes de construção de lista de modos mais prováveis para blocos com predição de múltiplas hipóteses
BR122022009445A2 (pt) Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem
WO2021170132A1 (en) An encoder, a decoder and corresponding methods simplifying signalling slice header syntax elements
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021009833A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
BR122023025769A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023025774A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo